内容
シミュレーション用のエアシリンダを、仮想的に32
個作りました。 |
●PDFを表 示 |
◆ シーケンスルーチン 【
シリンダON時の動作 】 ・各デバイスは、インデックスレジスタ[Z6]で修飾されています。[Z6]は『TimeSlice Module』で1スキャン毎に0〜15で循環します。 ・入力[R1400]は、ソレノイドバルブON信号です。シリンダの動作時間はクロック[@T0]をカウント[@FM0]する事で実現しています。 (能動時クロック×設定値) ・出力[R1600]はピストン出限端のセンサです。 ・入力[R1400]ONの立上りでクロック[@T0]をリセットします。 ・入力ON中は、出限センサがOFFであれば、クロックの立上りでカウンタを1進め、クロックをリセットします。 ・カウンタの値が設定値[Resolution]以上になれは出限センサをONし、カウントを停止します。 ・ここで立上り微分を実現するために、微分命令は使っていません。スキャン毎に[Z6]が変化する場合、1スキャン前の状態は無意味なので微分命令は使えないのです。 ◆ シーケンスルーチン 【 シリンダOFF時の動作 】 ・入力[R1400]がOFFすると、その立上りでクロック[@T32]リセットします。 ・入力OFF中は、戻限センサ[R1800]がOFFであれば、クロックの立上りでカウンタ[@FM0]を1戻し、クロックをリセットします。 ・カウンタの値が0以下になれば戻限センサをONし、カウントを停止します。 ・動作時間はクロック[@T32]をカウント[@FM0]する事で実現しています。(非能動時クロック×設定値) ◆ タイマルーチン ・また、タイマもインデックス修飾できませんの で上の用なコードにして、常時能動にしておき他からリセットする様な使用法にします。 ◆ サブルーチン 【 SBN0 】 ・カウンタの分解能[Resolution]を「10」に、シリンダON動作時間を「1500」に、シリンダOFF動作時間を「800」に設定しました。 ・タイマ値は、動作設定値を[Resolution]で割る(サブルーチン02)で算出しています。 ・例えばON動作時間は「1500」と設定しているので[Resolution]の10で割って「150」となります。タイマは1msなので、クロックは 150ms そのクロックを10回カウントするので、動作時間は1500ms(1.5秒)になります。 ・シリンダON時のタイマ設定値[ACT_t]と、OFF時の設定値[INA_t]がそれぞれ計算されます。 ・ここで算出されたON/OFF時の値をそれぞれ実タイマに代入します。そのためのインデックスレジスタ[Z1]をクリアします。 ・32個のシリンダを作ったので、FOR〜NEXTで32回ループします。 ・ループの中は、ON時設定時間[ACT_t]を[@T0]〜[@T31]へ。OFF時接待時間[INA_t]を[@T]〜[@T64]へ代入します。 ・タイマ設定値の参照デバイスを記述する方法もありますが、今回はタイマ値代入でやってみました。 |
●PDFを表示 |