最終更新|2026/08/22 20:49
| 内容 [= D10 K100]------------[MOVP K1 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を表示 ●コードをダウンロード ●登録モニタをダウンロード | |