天地有情

[LaTeX] grafcet.sty --- SFCシーケンス図を作る ~入門~

 grafcet.sty --- SFCシーケンス図を作る ~入門~

§1.概要

SFCとは -- (Sequential function chart) プログラマブルロジックコントローラ(PLC)用のグラフィカルな
プログラム言語で,IEC 61131-3標準で定義される5言語のうちのひとつです.この言語はシーケンス制御を
状態遷移図のように記述するのに適しています.grafcet.sty は,このような SFC をサポートします.

(1)SFCの主なコンポーネント

以下のようなものがあります.

   ■ ステップ(step)
     アクション(処理)を記述した制御のひとかたまり.
   ■ トランジション(transition)
     論理的な条件を記述して,ステップ間の状態遷移を制御する.
   ■ リンク(link)
     ステップとトランジション間といったコンポーネントを結ぶライン.

(2)SFC イメージ図

grafcet.sty で使用するシンボルとは,やや異なりますがが,イメージとしてみてください.

sfc01.png


説明:

プログラムは初期ステップ(右図ではInitial)から開始する.図中の大きい長方形がステップで,
ステップ直前の小さい四角形がトランジション(条件)を表す.

トランジションに記述されている条件が true(真)になると,直下のステップが起動する.
ステップ内の「アクション」はプログラム中のどこに書かれていても実行される.

(3)インストールについて

TeXLive/W32TeX などには標準でインストールされていますので,インストール作業は必要ありません.
すぐに利用できる状態にあると思われます.

(4)マニュアルをみる

コマンドラインから texdoc grafcet と打ち込んでください.(フランス語で書かれています)

§2.始める前に

(1)シンボルや用語
   grafcet では,ステップ番号,ステップ・シンボル出入口のノード番号,トランジション・シンボルの
   ノード番号などが必要になります.以下の図を参照しながら説明します.

sfc02.png

  A. 開始ステップのみシンボルは2重ボックスで表示され,結線のための位置ラベルが付与されます.
    ここでは,ステップ番号=100,入口側位置ラベル(ノード名)=Xnnn この場合は X100 です.
    出口側位置ラベル=VXnnn この場合は VX100 となります.
    ステップ番号=110の場合は X110,VX110,ステップ番号=120の場合は X120,VX120 となります.
  B. トランジションにも同様に位置ラベルが付与されます.ここでは,トランジション番号=100,110,120で,
    位置ラベルは Tnnn,VTnnn で付与されます.ここでは,T100,VT100 T110,VT110 T120,VT120 です.
  C. トランジション 120 の出口が開始ステップへ戻りとなっていますが,リターンコマンド(後述)を
    使って \LinkReturn{T120}{X100} として結線します.

(2)コマンド名について(重要)
   コマンド名はフランス語となっていますが,理解しにくいので \let命令で英語に置換しています.
   以下は,\let命令のリスト(sfc.tex)です. \input {sfc} をプリアンブルに記述して使っています.
   従って,以降に記述するコマンド説明は英語に置換した名称を使っています.
   
   ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
   File: sfc.tex
   
   \let\Step=\Etape %% \Step[pos]{nnn}
   \let\StepInit=\EtapeInit %% \StepInit[pos]{nnn}
   \let\Trans=\Transition %% \Tran{nnn}
   \let\LinkReturn=\LienRetour %% \LinkReturn{Tnnn}{Xnnn}
   \let\StepActive=\EtapeActive %% \StepActive{Xnnn}
   \let\MacroStep=\MacroEtape %% \MacroStep[pos]{Mnnn}
   \let\StepEncapsulante=\EtapeEncapsulante %% \StepEncapsulante[pos]{nnn}
   \let\StepEncapsulanteInit=\EtapeEncapsulanteInit %% StepEncapsulanteInit[pos]{nnn}
   \let\LinkActive=\LienActivation %% \LinkActive{nnn}
   \let\StepInitTran=\EtapeInitTransition %% \StepInitTran[pos]{nnn}{action}{recept}
   \let\StepTran=\EtapeTransition %% \StepTran[pos]{nnn}{action}{recept}

   \let\SeqST=\SequenceET %\SeqST[pos]{step list}
   \let\SeqSS=\SequenceEE %\SeqSS[pos]{step list}{last step}
   \let\SeqTS=\SequenceTE %\SeqTS[pos]{pre-step}{step list}{last step}
   \let\SeqTT=\SequenceTT %\SeqTT[pos]{pre-step}{step list}

   \let\GrapheLoop=\GrapheBoucle

   \let\DivOR=\DivOU %並列選択シーケンス用
   \let\ConvOR=\ConvOU

   \let\DivAND=\DivET %並列同時シーケンス用
   \let\ConvAND=\ConvET

   %(注)以下の命令は,そのまま利用する.
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %\Recept
   %\ActionX
   %\Action
   %\ActionRecept
   %\Actions
   %\Recepts
   %\Grahe
   ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

§3.代表的な書式例

  foo.tex
  ■■■■■■■■■■■■■■■■■■■
  %% 文字コード:UTF-8
  
  \documentclass{ltjsarticle}
  \usepackage[usenames,dvipsnames]{xcolor}
  \usepackage{tikz}
  \usetikzlibrary{arrows,snakes}
  \usepackage{graphicx}
  \usepackage{grafcet}
  %
  \input {sfc}  %
  \begin{document}
   \begin{tikzpicture}
    == SFC 作成コマンドを記述 ==
   \end{tikzpicture}
  \end{document}
  ■■■■■■■■■■■■■■■■■■■

  ★ クラスファイルは ltjsarticle を使っていますが,scrartcl や article などでも構いません.
  ★ 文字コードは UTF-8 とします.

(1)コンパイルの仕方
  luajitlatex foo.tex
  または
  lualatex foo.tex

(2)コンパイルの結果
  正しくコンパイルできたら foo.pdf が生成されます.

§4.簡単なサンプル

(1)その1:オプション[位置ラベル]を使った例

sfc03.png

(2)その2:オプション[位置ラベル]を省略した例

sfc04.png

(3)その3:さらに簡便に
  \Step命令と\Tran命令を一つにした次の命令も用意されています.

  ■ \Step + \Tran → \StepTran
  ■ \StepInit + \Tran → \StepInitTran

sfc05.png


§5.リニア(直列形)シーケンス

直列形シーケンスの最初と最後の要素,即ち,ステップまたは転移のいずれかであるかに応じて,
次のコマンドが用意されています.

(1)コマンド
   ■Sequence Step Transition
   \SeqST[pos]{step list} -- Stepで始まりTransitionで終わるシーケンス.
   \SeqST[0,0]{50,51,52,53} -- 図(A)参照

   ■Sequence Step Step
   \SeqSS[pos]{step list}{last step} -- Stepで始まりStepで終わるシーケンス.
   \SeqSS[1,0]{50,51,52,53}{54} -- 図(B)参照

   ■Sequence Transition Step
   \SeqTS[pos]{pre-step}{step list}{last step} -- Transitionで始まりStepで終わるシーケンス.
   \SeqTS[2,0]{49}{50,51,51}{53} -- 図(C)参照

   ■Sequence Transition Transition -- Transitionで始まりTransitionで終わるシーケンス.
   \SeqTT[pos]{pre-step}{step list}
   \SeqTT[3,0]{49}{50,52,54,56} -- 図(D)参照

(注)以下を sfc.tex に追加しておきます.

\let\SeqST=\SequenceET
\let\SeqSS=\SequenceEE
\let\SeqTS=\SequenceTE
\let\SeqTT=\SequenceTT

sfc06.png


(2)便利な組み合わせ例ー1
  \Actions, \Recepts を使う
sfc07.png


(3)便利な組み合わせ例ー2
  \ActionRecept を使う
sfc08.png


(4)さらに便利な \Graphe(リニア) コマンド

\Graphe[pos]{
num/action/recept,
num/action/recept, .....}

sfc09.png


(5)さらに便利な \GrapheLoop(ループ) コマンド

\GrapheLoop[pos]{
num/action/recept,
num/action/recept, .....}

sfc10.png



§6.並列選択形シーケンス

\DivOU と \ConvOU の2つのコマンドは、複数の配列のなかから,条件を満足した一つの配列の選択を行い,
下流のステップをアクティブにします.コマンドの構文はかなり複雑です.

(注)以下を sfc.tex に追加しておきます.

\let\DivOR=\DivOU
\let\ConvOR=\ConvOU

(1)\DivOR と \ConvOR の説明

sfc11.png


   ■ \DivOR
     上位シーケンスから分岐する際に水平バーに交差する箇所を基点に左側への距離がマイナス(-),
     右側への距離がプラス(+)で表示します.
     コマンド例:
     \DivOR{X10}{-5/L1a, 3/L1b, 11/L1c} (注)数値の単位は[em]です.

   ■ \ConvOR
     上位分岐のうち,最長ステップのルートが水平バーに交差する箇所を基点に左側への距離がマイナス(-),
     右側への距離がプラス(+)で表示します.
     コマンド例:
     \ConvOR[-3]{T23}{T32, T11}{L20}

(2)サンプル

sfc12.png


§7.並列同時形シーケンス

\DivAND と \ConvAND の2つのコマンドは、複数の配列のすべてが条件を満足したときに限り,
下流のステップをアクティブにします.コマンドの構文は \DivOR と \ConvOR と同様の考え方です.

(注)以下を sfc.tex に追加しておきます.

\let\DivAND=\DivET
\let\ConvAND=\ConvET

(1)\DivAND と \ConvAND の説明

sfc13.png


   ■ \DivAND
     コマンド例:
     \DivAND{T3}{-5/br1, 4.5/br3, 13/br2} (注)数値の単位は[em]です.

   ■ \ConvAND
     コマンド例:
     \ConvAND[-6]{X15}{X24, X33}{b40}


(2)サンプル

sfc14.png



スポンサーサイト
  1. 2014/10/03(金) 09:20:33|
  2. LaTeX Tools
  3. | トラックバック:0
  4. | コメント:0
<<[LaTeX] smartdiagram.sty -- 文書やプレゼンで使用できるダイアグラム | ホーム | [LaTeX] reflectgraphics -- ぼやけた鏡像を作る>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://konoyonohana.blog.fc2.com/tb.php/83-785b497f
この記事にトラックバックする(FC2ブログユーザー)