■ コードの簡略化

⇒ TO Home Page
内容

[= 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を表示 ●コードをダウンロード ●登録モニタをダウンロード