内容 PLC
には命令語として微分命令が備わっています。(LDP / DIFU / MEP など)
通常はそれらを使ってコードを書きますが、それらの機能では事足りない場合や、それらが使えない状況が出てきます。 |
●PDFを表示 |
◆
起動時1回のみ実行 【 でも、後からも再実行 】![]() ・これは私がモジュールの定義や、変数の初期化などに使っているコードです。 ・PLC起動時は[Initial]は偽なのでサブル−チン0を呼び出します。 ![]() ・サブルーチン側では、色々な処理の後、[Initial]をセットします。ここで[Initial]が真になったので、次回スキャンからはサブルーチン へは飛びません。 ・また、再度初期化が必要になれば、[Initial]をリセットするか、サブルーチンを呼び出します。(PLCモニタ中は手動で[Initial]をリ セットも可能) ・初期設定に関して、通常スキャン内に初期化コードダラダラ書くのを多々見かけますが、不要なスキャンが発生するのと見通しが悪くなるので、 お奨めできません。この様にサブルーチン化してしまえばスッキリします。 |
◆ 立上微分 □1 . PLC起動時、入力が真で動作する。 ![]() ・入力[■立上]が真の状態で、PLCを起動すると、[Dev▲01]は1スキャンONします。 ・[■立上]が真になった時点(PLC起動時でも)で、まだ/[Buf△01]は真なので[Dev▲01]がONします。 ・次行で[Buf△01]がONします。 ・次のスキャンでは、/[Buf△01]が偽なので、[Dev▲01]はOFFし、1スキャンのみONした事になります。 ・[■立上]にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM0]がカウントアップする事で確認します。 □1−A . (1)のロジックを1ワード(16ビット)まとめて実行させます。 ![]() ・(1)のロジックをそのまま16ビット化しています。 ・入力[@R000]〜[@R015]の任意の位置の立上りで、[@MR000]〜[@MR015]の対応するビットが1スキャンONします。 ・また、[LR000]〜[LR015]で偽になっている箇所はマスク され、微分出力されません。 ・[Gate]は実行許可フラグです。 ・15〜16行目でチェックしてください。[■Inp00/[MaskBit] にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM1]がカウントアップするのを確認してください。 □2 . (1−A)の改造版。 ![]() ・入力[@R100]〜[@R115]の任意の位置の立上りで、[Out▲02]の対応するビットが1スキャンONします。 ・出力デバイス[Out▲02]で[@MR100]をラッチさせています。 ・また、[LR000]〜[LR015]で偽になっている箇所はマスク され、微分出力されません。 ・[Gate]は実行許可フラグです。 ・22〜24行目でチェックしてください。[■Inp01] //[MaskBit]/[Device.▲01]にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・立上りの確認が出来ないので、出力を[@MR100]〜[@MR115]にラッチしました。入力が真のまま、[@MR100]〜[@MR115]がリ セットできる事で微分動作を確認できます。 □3 . 立上りを記憶したデバイスをリセットしないと、次の立上りをマスクする。 ![]() ・[■立上]をONすれば[Dev▲03]は微分動作をし、[Latch▲03]はそれを記憶します。 ・[Latch▲03]をリセットしなければ、次の[■立上]の立上りを検出しません。 ・[■立上]にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM3]がカウントアップする事で確認します。 □3−A . (3)のロジックを1ワード(16ビット)まとめて実行させます。 ![]() ・ (3)のロジックをそのまま16ビット化しています ・入力[@R200]〜[@R215]の任意の位置の立上りで、[@MR200]〜[@MR215]の対応するビットがラッチします。 ・[@MR200]〜[@MR015]のラッチした箇所をリセットしないと、次の微分動作はしません。 ・[@DM4]は、どれかの箇所のビットが真になれば、カウントします。 ・また、[LR000]〜[LR015]で偽になっている箇所はマスク され、微分出力されません。 ・[Gate]は実行許可フラグです。 ・35〜37行目でチェックしてください。[■Inp02] / /[MaskBit] / [Latc.▲02]にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM4]がカウントアップするのを確認してください □4 . PLC起動時、入力が真でも動作しない。 ![]() ・入力[■立上]の立上り時に、[Dev▲04]が1スキャンONします。 ・[■立上]が真の状態で、PLCを起動しても、[Dev▲04]はONしません。 ・次の行で[■立上]が真なので、[Buf△04]はOFFです。 ・[■立上]が偽になった時点で、[Buf△04]はONします。 ・次回[■立上]が真になった時、[Buf△04]は真なので[Dev▲04]はONします。 ・次行で[Buf△04]はOFFします。 ・次スキャンでは、[Buf△04]は偽なので、[Dev▲04]はOFFし、1スキャンのみONした事になります。 ・[■立上]にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM5]がカウントアップする事で確認します。 □4−A . (4) のロジックを1ワード(16ビット)まとめて実行させます。 ![]() ・(4)のロジックをそのまま16ビット化しています。 ・入力[@R300]〜[@R315]の任意の位置の立上りで、[@MR300]〜[@MR315]の対応するビットが1スキャンONします。 ・[Dev▲04代]は、16ビット内どれかの箇所のビットが真になれば、1スキャンONします。 ・また、[LR000]〜[LR015]で偽になっている箇所はマスク され、微分出力されません。 ・[Gate]は実行許可フラグです。 ・45〜46行目でチェックしてください。[■Inp03] / /[MaskBit] にカー ソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM5]がカウントアップするのを確認してください。 □5 . 回転系、原点停止のサンプル。 ![]() ・[■TRG]をセットすると、[MOTOR]がONします。 ・原点検出で[原点]が真になったら[■TRG]をリセットして、モータを停止します。 ・[原点]が真の状態で、再度[■TRG]をセットすると、[MOTOR]がONします。 ・原点検出で[原点]が真になったら[■TRG]をリセットして、モータを停止します。 ・[■TRG]/ [原点] にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 |
◆ 立下微分 □1 . PLC起動時、入力が偽でも動作しない。 ![]() ・入力[■立下]の立下り時に[Dev▼01]が1スキャンONします。 ・[■立下]が偽の状態で、PLCを起動しても[Dev▼01]はONしません。 ・PLCが起動した時点で[Buf▽01]は偽なので[Dev▼01]はOFFです。 ・次の行で/[■立下]が真なので、[Buf▽01]はOFFです。 ・/[■立下]が偽になった時点で、[Buf▽01]はONします。 ・次回/[■立下]が真になった時、[Buf▽01]は真なので[Dev▼01]はONします。 ・次行で[Buf▽01]はOFFします。 ・次スキャンでは、[Buf▽01]は偽なので、[Dev▼01]はOFFし、1スキャンのみONした事になります。 ・/[■立下]にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM16]がカウントアップする事で確認します。 □1−A . (1)のロジックを1ワード(16ビット)まとめて実行させます。 ![]() ・(1)のロジックをそのまま16ビット化しています。 ・入力[@R800]〜[@R815]の任意の位置の立下りで、[@MR800]〜[@MR815]の対応するビットが1スキャンONします。 ・[Dev▼01代]は、16ビット内どれかの箇所のビットが真になれば、1スキャンONします。 ・また、[LR000]〜[LR015]で偽になっている箇所はマスク され、微分出力されません。 ・[Gate]は実行許可フラグです。 ・57〜58行目でチェックしてください。[■Inp08] / /[MaskBit] にカー ソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM17]がカウントアップするのを確認してください。 □2 . 立下りを記憶したデバイスをリセットしないと、次の立下りをマスクする。 ![]() ・[■立下]をON→OFFすれば[Dev▼02]は微分動作をし、[Latch▼02]はそれを記憶します。 ・[Latch▼02]をリセットしなければ、次の[■立下]の立下りを検出しません。 ・/[■立下]にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM18]がカウントアップする事で確認します。 □2−A . (2)のロジックを1ワード(16ビット)まとめて実行させます。 ![]() ・(2)のロジックをそのまま16ビット化しています ・入力[@R00]〜[@R915]の任意の位置の立上りで、[@MR900]〜[@MR915]の対応するビットがラッチします。 ・[@MR900]〜[@MR915]のラッチした箇所をリセットしないと、次の微分動作はしません。 ・[@DM19]は、どれかの箇所のビットが真になれば、カウントします。 ・また、[LR000]〜[LR015]で偽になっている箇所はマスク され、微分出力されません。 ・[Gate]は実行許可フラグです。 ・70〜72行目でチェックしてください。[■Inp09] / /[MaskBit] / [Latc.▼02] にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM19]がカウントアップするのを確認してください □3 . PLC起動時、入力が偽で動作する。 ![]() ・入力[■立下]の立下時に[Dev▼03]が1スキャンONします。 ・[■立下]が偽の状態で、PLCを起動すると[Dev▼03]はONします。 ・PLCが起動した時点で、/[Buf▽03]は真なので[Dev▼03]はONします。 ・次行で/[■立下]が真なので、[Buf▽03]はONです。 ・次スキャンでは、/[Buf▽03]が偽になっているので[Dev▼03]はOFFし、1スキャンONした事になります。 ・/[■立下]にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM20]がカウントアップする事で確認します。 □3−A . (3)のロジックを1ワード(16ビット)まとめて実行させます。 ![]() ・ (3)のロジックをそのまま16ビット化しています。 ・入力[@R1000]〜[@R1015]の任意の位置の立下りで、[@MR1000]〜[@MR1015]の対応するビットが1スキャンONします。 ・[Dev▼03代]は、16ビット内どれかの箇所のビットが真になれば、1スキャンONします。 ・また、[LR000]〜[LR015]で偽になっている箇所はマスク され、微分出力されません。 ・[Gate]は実行許可フラグです。 ・78〜79行目でチェックしてください。[■Inp10] / /[MaskBit] にカー ソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM21]がカウントアップするのを確認してください。 |
◆ 両エッジ微分 □1 . 立上、立下 両方の微分 ![]() ・立上 / 立下の両エッジで微分動作をします。 ・PLC起動時、入力が真なら微分動作します。 ・入力[両方]と、入力の1スキャン遅れ[Buf△▽01]の排他的論理和をとって、微分させています。 ・[両方]にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM32]がカウントアップする事で確認します。 □1−A . (1)のロジックを1ワード(16ビット)まとめて実行させます。 ![]() ・(1)のロジックをそのまま16ビット化しています。 ・入力[@R1800]〜[@R1815]の任意の位置の立上りと立下りで、レジスタの対応するビットがONします。 ・出力デバイスは省略しました。 ・[Gate]は実行許可フラグです。 ・89行目でチェックしてください。[■Inp18] にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・[@DM33]がカウントアップするのを確認してください。 □2 . 立上、立下 の各個微分 【 PLC起動時、入力が真で微分動作 】 ![]() ・立上、立下の微分を別々に出力します。 ・PLC起動時、入力が真なら、立上微分出力します。 ・[両方]にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・立上時は[@DM35]、立下時は[@DM34]がカウントアップする事で確認します。 □3 . 立上、立下 の各個微分 【 PLC起動時、入力が偽で微分動作 】 ![]() ・立上、立下の微分を別々に出力します。 ・PLC起動時、入力が偽なら、立下微分出力します。 ・[両方]にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・立上時は[@DM36]、立下時は[@DM37]がカウントアップする事で確認します。 □4 . 立上でセット、立下でリセット ![]() ・入力[@R1900]〜[@R1915]の立上りで、出力[@MR1900]〜[@MR1900]をセット、立下りでリセットします。 ・104〜105行目でチェックしてください。[■Inp19] / [Device19] に カーソルを合わせ、ダブルクリックすると、ON-OFFできます。 |
◆ 立上/立下 インターロック![]() ・セット禁止フラグ[@LR000]〜[@LR015]の任意のビットが真の時、対応する[@R2000]〜[@MR2015]のビットはONできませ ん。 ・リセット禁止フラグ[@LR100]〜[@LR115]の任意のビットが真の時、対応する[@R2000]〜[@MR2015]のビットはOFFできま せん。 ・108行目と111〜114行目でチェックしてください。[■Inp20] / [△I-Lock] / [▽I-Lock] にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 ・また、[CMD01]をセットして、[@R2000]を常時ONしてもセット禁止できる事を確認してください。 ・一旦セットされた[@R2000]を[CMD01]で常時OFFしても、リセット禁止できる事も確認してください。 |
◆ インパルス![]() ・デジタル・フィルタの チェック用に作りましたが、他の用途は???です。 ・次の2つのパラメータを設定します。 1.[@EM1]:出力する値 2.[@EM2]:出力するスキャン回数 ・[ImpTRG]をセットすると[@EM0]に、[@EM2]で設定されたスキャン回数分[@EM1]で設定された値を書出します。 ・実行終了時に、実行前の[@EM0]の値を書戻します。 ・[@EM0]にカーソルを合わせ、右クリックの「一括モニタウィンドウ」で[@EM0]〜[@EM3]が登録されます。 ・上記パラメータを設定して、[ImpTRG]をセットしてください。 ・[@EM3]はスキャン回数確認用カウンタです。 |
◆ 同時セット禁止 □1 . 早いもの勝 ![]() ・1番に立ったビット以外はセットできません。 ・すでに真のビットがある場合、次にセットしたビットの立上りで自分自身を殺しています。 ・PLC起動時に、複数のビットが真である場合のために「ENCO 命令」で最も若いアドレスを選択しています。 ・対象デバイス[@R2200]〜[@R2215]をセット/リセットするのはこのコードの前、使用するのは後にしてください。 ・127行目でチェックしてください。[■Inp22] にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 □1 . 遅いもの勝 ![]() ・すでに真のビットをリセットして、新なビットをセットします。 ・対象デバイスの立上り微分を検知し、そのビットをエンコードしてデコードで戻す事で、他のビットを殺しています。 ・対象デバイス[@R2200]〜[@R2215]をセット/リセットするのはこのコードの前、使用するのは後にしてください。 ・132行目でチェックしてください。[■Inp23] にカーソルを合わせ、ダブルクリックすると、ON-OFFできます。 |
●PDFを表示 |