■ IAI ポイント移動 (File: plc_public_codex_xxx | Module:Go2Point)

⇒ TO Home Page
内容

株式会社 アイエイアイ 株式会社ダイアディックシステムズ 等のロボシリンダ(電動シリンダ)をポイント番号指定で動作させるサンプルです。
【 電動シリンダとは。 ここ に上手く端的に解説されていますので参照してください。(シーケンス制御講座) 】
4ビットや8ビットでポイントを指定し、トリガを掛けるとそのポイントまで移動します。移動が完了すれば、完了フラグが立ちます。
ここでは 『基本編 仮想 IAIロボット』モジュールを使ってシミュレーションします。
 
複数のロボシリンダ(以降 RC と表記)を制御する場合、ポイントデータ線が多数必要になるので、データ線をバスにして省配線します
たとえばポイント指定4ビットなら、必要出力数は、台数×トリガ(1ビット)+ポイント(4ビット)、入力数は、台数 × 位置決完(1ビット)のみです。
同時に複数のRCにトリガをかけるとポイントバスが衝突するので、時分割して衝突を防ぎます。
RCなどのトリガに要する時間は数ms程度なのでほぼ同時に起動できます。
 
このサンプルでは、指定先のポイントを個別に用意された変数に代入し、個別に用意されたトリガをセットするだけです。
位置決が完了すれば、トリガがリセットされます。

●PDFを表示  ●登録モニタをダウンロード
◆ 信号出力部 【RCとのインターフェイス】 (8台目を操作する例)

00030
・8台目のトリガ[@MR008]をセットします。微分命令でセットしてください。セットした側はトリガがOFFになるのを監視します。
・もし、ポイントバスを他のRCが使用中であれば[BUSY]が真なので待つ事になります。ポイントバスが空いていれば、自分自身の位置決待 [@MR308]を確認します。
・トリガ可能な時は、トリガ出力遅延タイマ[@T8]をリセットします。ポイントバスの信号が安定する時間分トリガを遅延します。
これはRC側でも対策されていると思われますが、PLC側の出力素子、RC側の入力素子の応答時間差で誤ったアドレスを読込むのを防ぐ手段です。
・次に[BUSY]をセット。トリガ状態に入ったフラグ[@MR208]をセット。
・[@FM24]は位置決完了時に、到達したポイントが代入される変数です。トリガ開始時にFFFFhexを代入しています。
・[@FM8]ここに目的のポイント番号を入れておきます。サブルーチン10でこの番号をポイントバスに出力します。


00032
・30行目でセットされたフラグ[@MR208]がONすると、同じくリセットされたトリガ出力遅延タイマ[@T8]のアップを待ちます。
・ここでポイント。RCはトリガを受付けると、位置決信号をリセットします。
しかし、 RCの未原点復帰時は、位置決信号が最初から偽なので、ト リガを受け付けたのか判断できません。
そこで トリガ出力を[@T9]で設定した時間だけONにします。 そのため、ここで[@T9]をリセットしています。
・33行目はトリガ信号出力です。
・34行目。RCの原点復帰完了時は 位置決信号[R1108]の立下り を待ち、未原点完了時は先ほどの [@T9]を待って 次に進みます。
・トリガ確認フラグ[DET_TRG]をセット。位置決待動作フラグ[@MR308]をセット。
・このブロックを非能動にするため、自分自身[@MR208]をリセットします。
・トリガ確認後はポイントバスの全ビットをリセットします。


00014
・トリガ確認フラグ[DET_TRG]がセットされると[BUSY]をリセットします。遅延のタイマが入っていますが、実質無くても差支えないでしょう。
・トリガ確認フラグ[DET_TRG]は自分自身でリセットします。


00027
・トリガ確認時にセットされた位置決待動作フラグ[@MR308]が真になると、位置決信号[R1108]を待って自分自身をリセット。
・指示されていたポイント番号を、現位置番号[@FM24]に代入し、トリガ[@MR008]をリセットして、すべての作業を完了します。
・トリガをセットした側でトリガを監視していると、位置決完了がわかります。一定時間位置決完しなければエラーとする事もできます。
・28行目はイレギュラー処理です。ポイント移動中、別ポイントに移動させる場合や、エラー時に、[@MR108]をセットすれば初期状態に戻ります。


◆ 信号出力部 【RCとのインターフェイス】 (インデックス修飾で8台分書いた例)
上に示した様に、RC1台毎にコードを書くのは大変なので、インデックス修飾し複数台分をまとめて書きます。
00021
・上の様に、共通で使う変数以外をインデックス修飾します。
・インデックスレジスタ[Z7]は『TimeSlice Module』で1スキャン毎に0〜7まで循環する様に なっています。
・共通の変数は以下
  トリガ出力遅延[@T8]
  トリガ出力時間(位置決信号が偽の時)[@T9]
  ビジーのリセット遅延[@T10]

  ビジー[BUSY]
  トリガ確認[DTC_TRG]

◆ トリガ出力側

00008
・PLC起動初期状態です。
・起動条件[@LR000]が真になると(シミュレーションではカーソルを合わせ、ダブルクリックするとセットされます。) RC10とRC8のトリガをセットし、それぞれのポイントに5と3を代入しています。
・RC10とRC8の信号出力部は修飾なしの個別で書かれています。
(『仮想 IAIロボット』はポイントが大きい数値になる程時間を要する様に設定されています。また、初めてのトリガ時は原点復帰動作を必要とするため、通常より時 間がかかる様にも設定されています。)


00009
・ここでRC10とRC8トリガ終了を待って、RC1/RC0/RC5のトリガをセットし、それそれ、ポイント1/10/2へ指示しています。
・RC0〜RC7の信号出力部はインデックス修飾されたコードで書かかれています。


00010
・各々のトリガがOFFするのを待ちます。


00011
・上、3軸の位置決が終了すると、[@LR000]によって一旦操作待ちします。
・ここで変数[POINT]に任意の数を代入してください。([POINT]にカーソルを合わせ、F2キーを押すとデバイス値が変更できます。)
・[@LR000]をセットすると、RC7をトリガし、[POINT]に代入された数値を目標にして起動します。


00012
・RC7の位置決を待って、始めに戻ります。

●PDFを表示  ●登録モニタをダウンロード