内容
カウンタとは数を数える働きを持つものです。このサンプルでは、各ビットの重み付けがあるウェイティング・カウンタ (weighting
counter) |
●PDFを表示 |
◆
トグル フリップ・フロップ
トグル フリップ・フロップをカスケード接続(同じ機能の物を直列接続)して構成しています。 初段のフリップ・フロップは2の0桁〜n段目のフリップ・フロップは2の(n-1)乗桁として動作します。 また初段に加えたパルスは、各フリップ・フロップを通過するたびに1/2の周期に分周されます。 見方を変えるとこれは分周器の はたらきをしています。n段のフリップ・フロップを通過すれば(1/2のn乗)に分周される事になります。 ・このコードは、機械リレーで作っても動作します。 ![]() ・[TRG]の立上りで反転するフリップ・フロップを作り[@MR000]の入力としています。 ・[TRG]の立上りでカウント(カウンタ値を+1)します。 ![]() ・次に入力クロックの立下りで反転するフリップ・フロップ[@MR001]に[@MR000]を入力します。 ・順次アドレスをずらし、必要なビット分記述します。 ・複数のブロックを記述するのは実現的ではありませんので、『基本編 時 分割』の[Z7]を使ってインデックス修飾しました。 |
◆
INC命令
![]() ・INC命令は、オペランドで指定したデバイス[@MR100]に1を加算します。 ・カウントのソースは[TRG]です。立上りでカウント(カウンタ値を+1)します。 ・INC命令は毎スキャン実行されるので[TRG]の立上りだけで動作する様、[微分01]にて微分動作させています。 ・@INC命令を使うと、実行条件の立ち上がりで、1スキャンだけ実行します。 ・INC命令はレジスタを書換えません。 ![]() |
◆
ADD命令![]() ・ADD命令は、内部レジスタの値にオペランドで指定した値を加算し、結果を内部レジスタに再度格納します。 ・LDA命令で[@MR200]の内容をレジスタに代入します。 ・ADD命令で、オペランド”1”を加算しています。 ・レジスタの内容をSTA命令にて、[@MR200]に書き戻しています。 ・上の一連の動作を微分化するため、[微分02]にて微分動作させています。 ![]() |
◆ C命令/OUTC命令
PLCに備わっているカウンタ命令です。カウント値の一致を出力してくれます。 ![]() □1 . C命令 ![]() ・カウントのソースは[TRG]です。立上りでカウント(カウンタ値を+1)します。 ・設定値”512”になると[@C0]の出力はONします。 ・[@C0]の現在値を[@MR300]に転送しています。 ・このカウンタのリセット条件は、実行条件[RESET]をOFFするか、リセット命令で[@C0]をリセットします。 □2 . OUTC命令 ![]() ・カウントのソースは[TRG]です。立上りでカウント(カウンタ値を+1)します。 ・設定値”512”になると[@C1]の出力はONします。 ・[@C1]の現在値を[@MR400]に転送しています。 ・このカウンタのリセット条件は、リセット命令で[@C1]をリセットします。 ![]() |
◆ テスト操作
![]() ・変数[AUTO]をセットすると、周期300ms デューティー50%のトリガ・クロックを発生させます。 ![]() ・[AUTO]が偽の時、[SW]をセットすると[TRG]がONします。 ・42行目以降に参照するデバイスを記述しました。 ・ビットデバイスはカーソルを合わせ、ダブルクリックでON-OFFできます。 ・複数デバイスを選択して、右クリック ⇒ 登録モニタウィンドウでモニタできます。 ・「ENDH」以下には自由に落書きができます。回路が成立していなく ても変換エラーは起きません。モニタも可能で す。 ・この領域に記述しても、PLCには転送されません。 ![]() ・トグル フリップ・フロップでの動作確認ができます。 ・各ビットの挙動をLD命令で確認し、カウント値をLDA命令部で確認してください。 ![]() ・他、各命令毎のカウント値が確認できます。 ・カウンタ命令のONも確認できます。 ・[AUTO]をセットすると、自動でカウントをはじめます。 ・[AUTO]が偽の時、[SW]をON-OFFすれば、手動でカウンタの入力を与える事ができます。 ・[RESET]をセットすれば、カウンタが0になります。 ・自動カウント時のクロックタイマの変更は、[@T0]にカーソルを合わせ、F2キーを押し、「設定値」を変更してください。 |
●PDFを表示 |