ID : 2981
[センサトラッキング]自由曲線補間のプログラミング例
センサトラッキングで自由曲線補間動作(TrackMove S)を行う場合のプログラミング例を以下に示します。トラッキング範囲内に納まる長さのワークが対象になります。
用例
センサトラッキング中の自由曲線補間動作は、以下の3つのプログラムで実現することができます。
-
「メインプログラム」
トラッキングに関する初期化処理を行うプログラムです。
-
「ワーク検出プログラム」
ワーク位置の検出とトラッキングバッファへの保存を行うプログラムです。
-
「トラッキング動作プログラム」
検出したワークの位置をトラッキングバッファより読み出し、トラッキング・自由曲線補間動作を行うプログラムです。
1. メインプログラム(FreeCurveSensorTracking.pcs (PCS:327B))
指定したコンベア番号のトラッキングバッファをクリアし、センサからの信号のトリガ検出を開始します
TrackInitialize ConvNum, 0
ワーク検出プログラム、トラッキング動作プログラムを並列実行させます。
Run FreeCurveVisionSensor
Run FreeCurveTracking
2. ワーク検出プログラム(FreeCurveSensor.pcs (PCS:2KB))
立ち上がりエッジを検出します。
Wait IO[IONum] = OFF
Wait IO[IONum]
最新のセンサの検出座標(エンコーダ値)をworkNum個分トラッキングバッファに追加します。
その際、workNum個分のユーザデータをVariant型の配列として付加することが可能です。
TrackSetSensor ConvNum, workNum, arrayUser
3. トラッキング動作プログラム(FreeCurveTracking.pcs (PCS:3KB))
TrackStartコマンドで、トラッキングを開始する前にホームポジションへ移動します。
トラッキング中に、Moveコマンドなどの通常動作コマンドを実行すると、トラッキング動作を中断してしまうので注意してください。
Move P, P[HomePos]
ワークが検出される度に、トラッキング・自由曲線補間動作を行うためのメインループです。
ループを途中で終了できるように、内部I/OのON信号をループの継続条件に設定しています。
Do
P[10] = TrackTargetPos(1)
...
TrackApproach P, P[FirstPathPointWork], ApproachLength
TrackMove S, P[TargetPos], PathNum
...
LOOP UNTIL IO[AbortIONum] = ON
ループ内の処理です。
まず、トラッキングバッファからワークのデータを取り出し、トラッキング対象ワークに設定します。
ワーク未検出の場合、ワークが検出され、トラッキングバッファにデータが積まれるまで、この行で待機します。
P[TargetPos] = TrackTargetPos(ConvNum)
上で得たコンベア基準座標をベース座標系の位置に変換します。
P[TargetPosBase] = ConvertPosWork( P[TargetPos], -1, 0 )
経路の1点目の座標を取得し、現在のワーク座標での位置に変換します。
P[FirstPathPoint] = GetPathPoint( PathNum, 1 )
P[FirstPathPointWork] = ConvertPosWork( P[FirstPathPoint], P[TargetPosBase], -1 )
トラッキングモードの開始を指示します。このコマンドを実行した段階では、ロボットはまだ移動を開始しません。
TrackApproachコマンド等のトラッキング動作コマンドを実行して初めて移動を開始します。
TrackStart ConvNum
コンベアと等速になるように追従動作を行いながら、経路点1点目からアプローチ長分だけ上空のアプローチ位置へ移動します。
TrackApproach P, P[FirstPathPointWork], ApproachLength
コンベアと等速になるように追従動作を行いながら、経路点1点目へ近づきます。
TrackMove P, P[FirstPathPointWork]
自由曲線補間動作を開始します。
TrackMove S, P[TargetPos], PathNum
コンベアと等速になるように追従動作を行いながら、トラッキング対象ワークからデパート長分だけ上空へ離れます。
TrackDepart P, DepartLength
トラッキングモードの終了を指示します。コンベアへの追従動作を終了して減速停止します。
このコマンド実行する前にワークがトラッキング範囲下流限界を越した場合、エラーが発生します。
TrackStop
ピックアップしたワークを排出位置へ搬送します。
Approach P, P[EjectPos], ApproachLength
ID : 2981