ID : 2017
プログラミング
プログラミング例
協調機能のプログラミング例を以下に示します。
各プログラムの内容
MainPro.pcs
メインのプログラムです。まず初期化処理を行い、次に、マスタ、スレーブを個別に動作させるプログラムを非同期に実行します。その後、協調動作を行うプログラムを実行します。
InitRobots.pcs
初期化処理として、マスタとスレーブのベース座標を設定するプログラムです。
Robot0Pro.pcs
Robot0(マスタ)を動作点へ移動させるプログラムです。
最初にデフォルトロボットをRobot0に設定しているため、Robot0を指定せずにコマンドが記述できます。
Robot1Pro.pcs
Robot1(スレーブ)を動作点へ移動させるプログラムです。
最初にデフォルトロボットをRobot1に設定しているため、Robot1を指定せずにコマンドが記述できます。
CoopRobotPro.pcs
協調機能のプログラムです。
ツール座標、ワーク座標を設定し、まず同期動作を行います。その後ワークを把持し、協調動作を行います。
<MainPro.pcs>
'!TITLE "複数ロボットの作業プログラム例"
#Include "InitRobots.pcs"
Sub Main
Call InitRobots 'ロボット0とロボット1の初期化
Run Robot0Pro 'ロボット0の動作プログラム
Run Robot1Pro 'ロボット1の動作プログラム
Wait Not( Status( Robot0Pro ) = 3 ) 'ロボット0の動作プログラムが終了するのを待つ
Wait Not( Status( Robot1Pro ) = 3 ) 'ロボット1の動作プログラムが終了するのを待つ
Run CoopRobotPro 'ロボット0とロボット1の動作プログラム
End Sub
<InitRobots.pcs>
'!TITLE "ロボット0とロボット1の初期化"
Sub Main
Robot0.TakeArm 'ロボット0の制御権を取得
Robot1.TakeArm 'ロボット1の制御権を取得
'ロボットの位置を設定(向き合って800mm離れた位置)
Robot0.Base P( 0, 400, 0, 0, 0, -90 ) 'ロボット0のベース座標を変更
Robot1.Base P( 0, -400, 0, 0, 0, 90 ) 'ロボット1のベース座標を変更
Robot0.GiveArm 'ロボット0の制御権を解放
Robot1.GiveArm 'ロボット1の制御権を解放
End Sub
<Robot0Pro.pcs>
'!TITLE "ロボット0の動作プログラム
Sub Main
'P1,P2,P3 :ロボット0の動作ポイント
#Pragma Optimize( "DefaultRobot", 0 ) 'ロボット0をデフォルトロボットに設定
TakeArm 0 'ロボット0の制御権を取得
Move P, @e P1 'ロボット0をP1に移動
Move P, @e P2 'ロボット0をP2に移動
Move P, @e P3 'ロボット0をP3に移動
End Sub
<Robot1Pro.pcs>
'!TITLE "ロボット1の動作プログラム
Sub Main
'P11,P12 :ロボット1の動作ポイント
#Pragma Optimize( "DefaultRobot", 1 ) 'ロボット1をデフォルトロボットに設定
TakeArm 0 'ロボット1の制御権を取得
Move P, @e P11 'ロボット1をP11に移動
Move P, @e P12 'ロボット1をP12に移動
End Sub
<CoopRobotPro.pcs>
'!TITLE "ロボット0とロボット1の動作プログラム
Sub Main
'マスタの教示点:P21,P23,P24
'スレーブの教示点:P22
Robot0.TakeArm 'ロボット0の制御権を取得
Robot1.TakeArm 'ロボット1の制御権を取得
Robot0.ChangeTool 1 'ロボット0のツール座標を変更
Robot1.ChangeTool 1 'ロボット1のツール座標を変更
Robot0.ChangeWork 1 'ロボット0のワーク座標を変更
Robot1.ChangeWork 1 'ロボット1のワーク座標を変更
'Robot0,Robot1を作業のアプローチ位置50mmに移動
SyncTime ( Robot0.Approach P, P21, 50 ),_
( Robot1.Approach P, P22, 50 ), Next
'Robot0,Robot1を作業点に移動
SyncTime ( Robot0.Move L, @e P21, Speed = 20 ),_
( Robot1.Move L, @e P22, Speed = 20 )
'ワークを把持
Robot0.SetHandIO 64, 1, 1 'ロボット0のハンドIO 64をON
Robot1.SetHandIO 64, 1, 1 'ロボット1のハンドIO 64をON
Delay 100
'協調動作
'ロボット0に合わせロボット1が自動で動作
Robot0.Move L, P23, Speed = 20, syncmove = Robot1
Robot0.Move L, P24, syncmove = Robot1
End Sub
ID : 2017