天地有情

[LaTeX] tikz-ladder --- TikZを使ってラダー図を描画する

§1 はじめに

ラダー図(LD)は,国際標準IEC-61 131-3に記述されているプログラマブルコントローラ(PLC1)で使用される
リレー制御システムの電気配線図から進化したグラフィカルプログラミング言語です.

tikz-ladderは,IEC-61 131-3に記述されているブロック(機能ブロックと機能ブロック用),
接点およびコイルのすべての機能をサポートしています.

同類のパッケージとして,拙著ブログ(ladder --- TikZを使って簡単なラダーダイアグラムの作成)
もご一読ください.


1.1 インストール

必要に応じて,CTAN( https://ctan.org/pkg/tikz-ladder )から
ダウンロードしてください.

TeXLive には標準でインストールされています.

1.2 マニュアル

コマンドラインから texdoc tikz-ladder を実行するか,
上記に同梱の tikz-ladder-doc.pdf をお読み下さい.

§2 サンプル

(1)主なシンボル

tikz-ladder01.png


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
\documentclass{ltjsarticle}
\usepackage{tikz,pgf}
\usetikzlibrary{circuits.plc.ladder}
\newlength{\ladderskip}
\setlength{\ladderskip}{5\tikzcircuitssizeunit}
\newlength{\ladderrungsep}
\setlength{\ladderrungsep}{.2\ladderskip}
\def\ladderrungend#1{\pgftransformyshift{-#1\ladderskip-\ladderrungsep}}

\begin{document}
\begin{tikzpicture} [circuit plc ladder,thick,
x=\ladderskip,y=\ladderskip]

\draw(0,0) to [contact NO={info={a接点}}] ++(2,0) ;
\node at (5,0){Normally open contact (NO)};

\draw(0,-1.5) to [contact NC={info={b接点}}] ++(2,0);
\node at (5,-1.5){Normally closed contact (NC)};

\draw(0,-3.0) to [coil={info={Coil}}] ++(2,0);
\node at (5,-3.0){Coil (normally deactivated)};

\draw(0,-4.5) to [coil R={info={Motor},
coil ladder curvature=0.5,
minimum size=2.4\tikzcircuitssizeunit}] ++(2,0);
\node at (5,-4.5){curvature=0.5 円形コイル};

\draw(0,-6.0) to [coil S={info={Set Coil}}] ++(2,0);
\node at (5,-6.0){Set Coil};

\draw(0,-7.5) to [coil R={info={Reset Coil}}] ++(2,0);
\node at (5,-7.5){Reset Coil};
\end{tikzpicture}
\end{document}
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


(2)簡単な例

tikz-ladder02.png



■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
\begin{tikzpicture} [circuit plc ladder,thick,
x=\ladderskip,y=\ladderskip]
\draw(0,0)
to [contact NO={info={$a$}}] ++(1,0)
to [contact NO={info={$c$}}] ++(1,0) -- ++(1,0)
to [coil={info={$Q$}}] ++(1,0)
coordinate(laddertopright);
\draw(1,0) -- ++(0,-1)
to [contact NO={info={$d$}}] ++(1,0)
to [contact NO={info={$e$}}] ++(1,0) -- ++(0,1);
\draw(0,-2)
to [contact NO={info={$b$}}] ++(1,0) -| ++(1,1);

\ladderrungend{3}
% 左右母線を生成
\draw let \p1=(laddertopright) in
(0,\y1+0.7\ladderskip) -- (0,\ladderskip)
(\x1,\y1+0.7\ladderskip) -- (\x1,\ladderskip);
\end{tikzpicture}

\vskip2cm

\begin{tikzpicture} [circuit plc ladder,thick,
x=\ladderskip,y=\ladderskip]
\draw(0,0) to [contact NO={info={$X0$}}] ++(1,0)
to [contact NC={info={$X2$}}] ++(1,0)
to [contact NO={info={$X1$}}] ++(1,0)
to [coil={info={$Y0$}}] ++(1,0);
\draw(1,0) -- ++(0,-1)
to [contact NO={info={$Y0$}}] ++(1,0) -| ++(1,1);

\ladderrungend{2}
% 左右母線を生成
\draw let \p1=(laddertopright) in
(0,\y1+0.7\ladderskip) -- (0,\ladderskip)
(\x1,\y1+0.7\ladderskip) -- (\x1,\ladderskip);
\end{tikzpicture}
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


(EOF)

スポンサーサイト
  1. 2018/04/23(月) 13:13:32|
  2. LaTeX Tools