ABBインライン測定サンプルプログラム

現在ご覧いただいているのは最新版の内容です(V1.3.0)。異なるバージョンを参照する場合は、画面右上のボタンから切り替えが可能です。

■ ご利用中のバージョンが分からない場合や、サポートが必要な場合はお気軽にサポート窓口までご連絡ください。

プログラム概要

機能

ユーザはロボット側からトリガーをかけて Mech-Metrics を起動し、Mech-MSR を使用して測定を行い、Mech-Metrics へ測定結果を返す

ファイルパス

Mech-MSR および Mech-Metrics ソフトウェアのインストールディレクトリMech-MSR/center/MSR_Interface/ABB/sample/MSR_Metrics_Sample

必要なリソース

Mech-MSR ソリューションと Mech-Metrics プロジェクト

利用の前提条件

本サンプルプログラムは、あくまで例示用のプログラムです。ユーザーは実際の状況に応じて変更する必要があり、プログラムを直接使用しないでください。

プログラム説明

以下は、MSR_Metrics_Sample サンプルプログラムのコードと関連する説明です。

MODULE MSR_Metrics_Sample
    LOCAL CONST jointtarget path1:=[[0,0,0,0,90,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    LOCAL CONST jointtarget path2:=[[0,0,0,0,100,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    LOCAL CONST jointtarget path3:=[[0,0,0,0,110,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
    LOCAL VAR num MSR_Status:=0;
    LOCAL VAR num outvalue:=0;
    LOCAL VAR num measure_result:=0;
    LOCAL VAR num FailedCount{3}:=[0,0,0];
    PROC MSR_Metric_Test()
        AccSet 50,50;
        !set the velocity parameters
        VelSet 50,1000;
        !Init socket! Modify IP address;
        MSR_Init_Socket "127.0.0.1",4000,300;
        MSR_Open_Socket MSR_Status;
        IF MSR_Status=-99 THEN
            TPWrite "MSR: Communication Error";
            STOP;
        ENDIF
        WaitTime 1;
        MSR_Start_Measure 1,"Piece01","ABC",2,1,2,3,4,5,6,7,8,outvalue,MSR_Status;
        IF MSR_Status<> 8100 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MSR_Set_Piece_Info 1,"ABC",MSR_Status;
        IF MSR_Status<> 8103 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MoveAbsJ path1\NoEOffs,v3000,fine,tool0;
        MSR_Measure_Feature 1,1,MSR_Status;
        IF MSR_Status<> 8101 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MoveAbsJ path2\NoEOffs,v3000,fine,tool0;
        MSR_Measure_Feature 1,1,MSR_Status;
        IF MSR_Status<> 8101 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MoveAbsJ path3\NoEOffs,v3000,fine,tool0;
        MSR_Measure_Feature 1,1,MSR_Status;
        IF MSR_Status<> 8101 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MSR_End_Measure 1,measure_result,FailedCount,MSR_Status;
        IF MSR_Status<> 8102 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MSR_View_Piece_Data 1,"ABC",MSR_Status;
        IF MSR_Status<> 8104 THEN
            TPWrite "MSR: RUN Error";
            STOP;
        ENDIF

        MSR_Close_Socket;
        stop;
    ENDPROC
ENDMODULE

下表は上記プログラムのロジック解説です。上記のコードにおいて、コメントアウトされている行は「!」から始まります。下表ではコメントアウトされた内容については説明しません。

フロー コートと説明

変数の定義

LOCAL CONST jointtarget path1 := [[0,0,0,0,90,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL CONST jointtarget path2 := [[0,0,0,0,100,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL CONST jointtarget path3 := [[0,0,0,0,110,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL VAR num MSR_Status:=0;
LOCAL VAR num outvalue:=0;
LOCAL VAR num measure_result:=0;
LOCAL VAR num FailedCount{pass:[3]}:=[0,0,0];
  • ローカル変数を定義する。上記のローカル変数はこのプログラム内でのみ有効。そのうち、MSR_Status は各通信コマンドの返されたステータスコードを受信して判定するために使用する。ユーザーは事前にいくつかの測定位置(path1、path2、path3変数)をティーチングしておく必要あり

具体的なティーチング方法については、自動キャリブレーションにおけるABB自動キャリブレーション篇のキャリブレーションの初期位置を設定部分の操作をご参照ください。

加速度と速度の設定

AccSet 50, 50;
VelSet 50, 1000;
  • AccSet 50, 50:加速度を通常値の50%に制限し、加速度増減率を通常値の50%に制限する

  • VelSet 50, 1000:速度をプログラム速度の50%に設定し、最大TCP速度を1000mm/sに設定する

通信初期化

MSR_Init_Socket "127.0.0.1",4000,300;
  • MSR_Init_Socket "127.0.0.1",4000,300:通信接続を初期化し、通信対象(IPC)のIPアドレス(127.0.0.1)、ポート番号(4000)、およびタイムアウト待ち時間(300秒)を指定する

    ユーザーは実際の状況に応じて、ここのIPCのIPアドレスおよびポート番号を修正し、Mech-MSR で設定したものと一致するようにする必要があります。

通信接続の確立

MSR_Open_Socket MSR_Status;
IF MSR_Status=-99 THEN
    TPWrite "MSR: Communication Error";
    STOP;
ENDIF
WaitTime 1;
  • MSR_Open_Socket MSR_Status:通信接続を確立し、ステータスコードをMSR_Statusに保存する

  • IF MSR_Status=-99 THEN …​ ENDIF:ステータスコードが-99の場合、通信異常を意味し、ロボットティーチペンダントに「MSR: Communication Error」と出力してプログラムを停止する

  • WaitTime 1:待ち時間を1秒に設定する

測定開始

MSR_Start_Measure 1,"Piece01","ABC",2,1,2,3,4,5,6,7,8,outvalue,MSR_Status;
IF MSR_Status<> 8100 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
  • MSR_Start_Measure 1,"Piece01","ABC",2,1,2,3,4,5,6,7,8,outvalue,MSR_Status:番号1、名前「Piece01」、SN「ABC」のワークに対する測定開始を指定し、検査モードを抜取検査(2)に指定する。8つのカスタムパラメータ(1、2、3、4、5、6、7、8)を指定し、返された値の保存位置をoutvalueに指定すると同時に、コマンドのステータスコードを取得する

  • IF MSR_Status<> 8100 THEN …​ ENDIF:ステータスコードが8100ではない場合、測定开始コマンドの実行異常を意味し、ロボットティーチペンダントに「MSR: RUN Error」と出力してプログラムを停止する

    ここで設定する検査モードおよびカスタムパラメータは、Mech-Metrics で設定した内容と一致している必要があります。

Mech-Metrics にワークを入力

MSR_Set_Piece_Info 1,"ABC",MSR_Status;
IF MSR_Status<> 8103 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
  • MSR_Set_Piece_Info 1,"ABC",MSR_Status:Mech-Metrics にワークSN「ABC」のワークを入力し、コマンドのステータスコードを取得する

  • IF MSR_Status<> 8103 THEN …​ ENDIF:ステータスコードが8103ではない場合、ワーク情報の入力異常を意味し、ロボットティーチペンダントに「MSR: RUN Error」と出力してプログラムを停止する

ロボットを指定位置へ移動させ、特徴測定を行う

MoveAbsJ path1\NoEOffs,v3000,fine,tool0;
MSR_Measure_Feature 1,1,MSR_Status;
IF MSR_Status<> 8101 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
MoveAbsJ path2\NoEOffs,v3000,fine,tool0;
MSR_Measure_Feature 1,1,MSR_Status;
IF MSR_Status<> 8101 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
MoveAbsJ path3\NoEOffs,v3000,fine,tool0;
MSR_Measure_Feature 1,1,MSR_Status;
IF MSR_Status<> 8101 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
  • MoveAbsJ:ABBロボットの絶対位置移動(軸単位移動)コマンド。ロボットの各関節軸が独立して指定位置まで移動することを示す

    • \NoEOffs:モーションは外部軸の影響を受けない

    • v3000:ロボットの速度は3000mm/s

    • fine:指定位置に正確に移動する

    • tool0:ロボットが移動する際に使用するロボットハンド

  • MSR_Measure_Feature 1,1,MSR_Status:ロボット側から、ワーク番号1、測定対象の特徴の測定番号1となる Mech-MSR プロジェクトの実行をトリガーし、コマンドのステータスコードを取得する

  • IF MSR_Status<> 8101 THEN …​ ENDIF:特徴測定をトリガーするたびに、ステータスコードを確認する。ステータスコードが8101ではない場合、ロボットティーチペンダントに「MSR: RUN Error」と出力してプログラムを停止する

    呼び出しごとの特徴番号は、実際の状況に応じて修正する必要があります。

測定終了

MSR_End_Measure 1,measure_result,FailedCount,MSR_Status;
IF MSR_Status<> 8102 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
  • MSR_End_Measure 1,measure_result,FailedCount,MSR_Status:測定を停止し、同時にワークの判定結果をmeasure_resultに、不合格となった測定項目数をFailedCountに保存し、コマンドのステータスコードを取得する

  • IF MSR_Status<> 8102 THEN …​ ENDIF:ステータスコードが8102ではない場合、測定終了コマンドの実行異常を意味し、ロボットティーチペンダントに「MSR: RUN Error」と出力してプログラムを停止する

履歴データ照会

MSR_View_Piece_Data 1,"ABC",MSR_Status;
IF MSR_Status<> 8104 THEN
    TPWrite "MSR: RUN Error";
    STOP;
ENDIF
  • MSR_View_Piece_Data 1,"ABC",MSR_Status:外部からワークSNを入力することで、Mech-Metrics ソフトウェアのメイン画面を入力された番号(ABC)のワークのデータビューに切り替え、コマンドのステータスコードを取得する

  • IF MSR_Status<> 8104 THEN …​ ENDIF:ステータスコードが8104ではない場合、履歴データ照会の異常を意味し、ロボットティーチペンダントに「MSR: RUN Error」と出力してプログラムを停止する

通信接続の切断

MSR_Close_Socket;
stop;
ENDPROC
ENDMODULE

この情報は役に立ちましたか?

ご意見・ご要望がございましたら、以下よりお寄せください:

Mech-Mindは、お客様のプライバシーを重視しています

このサイトでは最高の体験を提供するために Cookie を使用しています。サイトの閲覧を続ける場合、Cookie の使用に同意したことになります。「拒否する」を選択すると、このサイトを訪れた際に追跡や記憶が行われないように単独の Cookie が使用されます。