<< 前へ        次へ >>

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

<< 前へ        次へ >>