最終更新|2026/08/22    20:49

PLCのスパイス事例集 コードの簡略化

■ コードの簡略化

内容

[= D10 K100]------------[MOVP K1 D400]
[= D10 K105]------------[MOVP K2 D400]
[= D10 K110]------------[MOVP K3 D400]
[= D10 K115]------------[MOVP K4 D400]
[= D10 K120]------------[MOVP K5 D400]・・・

1. 上記コードを簡単にしたい。

質問者は既にこのような記述を50行以上も書いているそうです・・・


サンプルコード ・ 左の画像をクリックすると、大きい画像が表示されます。

他に回答された方で、「FOR~NEXTで回す」と言うコードがありましたが・・・それもループ回数に限りがあり
スキャン時間が無駄なだけです。
入力~出力の関係を見てみると、一次関数であることが分かります。
【 D400 = D10 / 5 - 19 】であることが分かります。それでは解説します。

1行目 :PLC起動時の初期化。

4行目 :転送元 [DM10] が前回と変化し、なおかつ [DM10] が設定範囲( [LOW] ~ [UPP] の間の値)なら、[DM400] の値を計算し代入。

8行目 :演算ルーチン。[DM100] の値が5で割切れなければ0を返し、それ以外は演算結果を返す。
9行目 :4行目の <LDA DM10> でレジスタに代入された値を5で割り、一時記憶 [TMP] する。余りが0(5で割切れた)なら
答え [TMP] から19を引く。
10行目 :余りが0でなかったら(5で割切れない)0をレジスタに代入。

12行目 :PLC起動時の初期化ルーチン。
13行目 :[DM10] の変化を見る [MEM] と転送元 [DM10]、転送先 [DM400] をクリア。
14行目 :[DM10] の上限を200、下限を100に設定。
15行目 :初期化済フラグをセット。
シミュレーション ・ 左の画像をクリックすると、大きい画像が表示されます。

シミュレーションできる方は下欄からプログラムコードと登録モニタをダウンロードしてください。

DM10の現在値にカーソルをあわせ、数値を入力してください。
DM400の値が変化します。
●PDFを表示 ●コードをダウンロード ●登録モニタをダウンロード