通信設定とサンプルプログラムの使用

三菱QシリーズPLC(EtherNet内蔵)とMech-MindソフトウェアシステムとのModbus TCP通信は、以下のような流れで行われます。

ハードウェアとソフトウェアの要件

ハードウェア

  • PLC:MITSUBISHI QCPU(Q mode)Q03UDV。

  • パワーモジュール:三菱 Q61P、基本ベース:三菱 Q33B。

  • Mech-MindのIPCまたはPC。

  • USB Type-A - USB Mini-B 変換ケーブル。

  • LANケーブル。

ソフトウェア

  • 三菱PLCプログラミングソフトウェア:GX Works2。

  • 1.7.0バージョン以降のMech-Mindソフトウェアシステム。

  • PLCサンプルプログラムファイル:

    • MODBUS_TCP_Protocol Configuration.tpc(Modbus TCP通信の構築に使用)。

    • MODBUS TCP_Q_Simple_Label.GXW(様々なインターフェースコマンドの実装に使用)。

    サンプルファイルは、Mech-Mindソフトウェアシステムのインターフェースパス Mech-Center/Robot_Interface/Modbus TCP/MITSUBISHI Q serial フォルダに格納されています。このファイルをコピーし、GX Works2がインストールされているPCに貼り付けます。

注意

IPCやPCではファイアウォールソフトを無効にする必要があります。

IPCの設定と通信の開始

IPCまたはPCのIPv4アドレスを設定

  1. コントロールパネルを開き、 ネットワークの状態とタスクの表示 をクリックします。

    ../../../../_images/set_ip11.png
  2. ネットワークと共有センターの画面で、 アダプターの設定の変更 をクリックします。

    ../../../../_images/set_ip21.png
  3. ネットワーク接続画面で、PLCにネットワーク接続されている イーサネット アダプターをダブルクリックし、表示される イーサネットの状態 画面で プロパティ をクリックします。

    ../../../../_images/set_ip31.png
  4. イーサネットのプロパティ 画面の ネットワーク タブで、 インターネット プロトコル バージョン4(TCP/IPv4) をダブルクリックします。

    ../../../../_images/set_ip41.png
  5. インターネット プロトコル バージョン4(TCP/IPv4)のプロパティ 画面で、固定IPアドレス、サブネットマスク、デフォルトゲートウェイ(PLCと同じネットワークセグメント内にある必要があります)を下図のように設定します。

    ../../../../_images/set_ip5.png

Mech-Visionで「ロボット通信設定」を実行

  1. Mech-Visionのツールバーで ロボット通信設定 をクリックします。

  2. ロボットを選択 のドロップダウンボックスをクリックし、 適応可能なロボット を選択して ロボット型番を選択 をクリックします。表示される画面で特定のロボット型番を選択して 次へ をクリックします。

  3. 通信方式 画面で以下の設定を行います。

    • インターフェースタイプを 標準インターフェース に設定します。

    • 通信プロトコルを Modbus TCP SLAVE に設定します。

    • ホスト(スレーブ)のポート番号を2000に設定します。

    • バイトオーダーをCDABに設定します。

    • スレーブIDを255に設定します。

    • 適用 をクリックします。

    ../../../../_images/deployment_settings_13.png
  4. Mech-Visionのメイン画面で、ツールバーのインターフェースサービスが起動されていることを確認します。

    ../../../../_images/deployment_settings_23.png

PLCプロジェクトの作成と設定

PLCプロジェクトの作成

  1. GX Works2ソフトウェアを起動し、左側のツールバーの 新規作成 をクリックします。新規作成の画面で、シリーズを QCPU(Qモード) に、機種を Q03UDV に、プロジェクト種別を シンプルプロジェクト に設定します。 ラベルを使用する にチェックを入れ、プログラム言語を ラダー に設定して、 OK をクリックします。

    ../../../../_images/create_plc_13.png
  2. ナビゲーション ‣ 接続先 ‣ 現在の接続先 で、 Connection1 をダブルクリックします。

    ../../../../_images/create_plc_23.png
  3. すると、 接続先指定 Connection1 の画面が表示されます。パソコン側に シリアル USB を選択し、CPUモードを QCPU(Qモード) に設定し、 シーケンサ直結設定 をクリックします。表示される画面で USB を選択して はい をクリックします。次に、 接続先指定 Connection1 の画面で 通信テスト をクリックします。 「Q03UDVCPUとの接続に成功しました」 というメッセージが表示されれば、パソコンのGX Works2ソフトウェアはハードウェアPLCと正常に通信しています。 接続先指定 Connection1 の画面で OK をクリックしてGX Works2ソフトウェア画面に戻ります。

    ../../../../_images/create_plc_33.png
  4. GX Works2ソフトウェア画面で、メニューバーの オンライン をクリックし、 リモート操作 をクリックします。

    ../../../../_images/create_plc_43.png
  5. すると、 リモート操作 画面が表示されます。 操作stop を選択して STOP操作を実行しますか? というメッセージが表示され、 はい をクリックします。すると、 STOP操作を完了しました。 というメッセージが表示され、 OK をクリックします。その後、 リモート操作 画面で 閉じる をクリックしてGX Works2のソフトウェア画面に戻ります。

    ../../../../_images/create_plc_53.png

Modbus TCPの通信パラメータを設定

  1. ナビゲーション ‣ プロジェクト‣ パラメータPCパラメータ をダブルクリックします。

    ../../../../_images/configure_plc_11.png
  2. すると、 Qパラメータ設定 画面で 内蔵EtherNetポート設定 タブに切り替え、IPアドレス設定のエリアでPLCのIPアドレスを産業用PCのIPアドレス(192.168.1.21など)と同じネットワークセグメントにあるように設定し、サブネットマスクを255.255.255.0、デフォルトルータIPアドレスを192.168.1.0に設定します。 オープン設定 をクリックすると、 内蔵EtherNetポート オープン設定 画面が表示されます。

    ../../../../_images/configure_plc_21.png
  3. 内蔵EtherNetポート オープン設定 画面で、1行目のパラメータを下図のように設定し、 設定終了 をクリックします。その後、 Qパラメータ設定 画面で 設定終了 をクリックしてGX Works2のソフトウェア画面に戻ります。

    ../../../../_images/configure_plc_31.png
  4. GX Works2 のソフトウェア画面で、メニューバーの ツール通信プロトコル支援機能 ‣ 内蔵EtherNet を選択して、 通信プロトコル支援機能-内蔵EtherNet 画面に入ります。

    ../../../../_images/configure_plc_41.png
  5. 通信プロトコル支援機能-内蔵EtherNet 画面で 開く アイコンをクリックし、ローカルから MODBUS_TCP_Protocol Configuration.tpc というModbus TCP通信の設定ファイルを選択して 開く をクリックします。

    ../../../../_images/configure_plc_51.png
  6. 通信プロトコル支援機能-内蔵EtherNet 画面で ユニット書込 のアイコンをクリックします。

    ../../../../_images/configure_plc_61.png
  7. 表示される ユニット書込 画面で 実行 をクリックし、 対象メモリには既にプロトコル設定ファイルが存在します。上書きしてもよろしいですか? が表示された場合、 はい をクリックします。

    ../../../../_images/configure_plc_71.png
  8. 対象メモリへの書込みが完了しました が表示された場合、 OK をクリックします。

    ../../../../_images/configure_plc_81.png

Mech-Mindサンプルプログラムファイルのインポート

注意

Mech-Mindサンプルプログラムファイルをインポートしてテストするために、新しいPLCプロジェクトを使用する必要があります。既存のPLCプロジェクトに追加する場合は、新しいプロジェクトを作成して、インポートとテストを行ってから、既存のプロジェクトに移転することをお勧めします。

  1. GX Works2 ソフトウェア画面で、メニューバーの プロジェクト ‣ ライブラリ操作 ‣ ライブラリをプロジェクトに取得 を順番に選択します。

    ../../../../_images/import_file_13.png
  2. すると、 ライブラリをプロジェクトに取得 画面が表示されます。ライブラリ一覧を ライブラリ(プロジェクト)を選択 に選択し、 参照 をクリックし、ローカルから MODBUS TCP_Q_Simple_Label.GXW ファイルを選択して 開く をクリックします。

    ../../../../_images/import_file_23.png
  3. ライブラリをプロジェクトに取得 画面で FB一覧更新 をクリックします。 FB選択 エリアですべての項目を選択して OK をクリックします。

    ../../../../_images/import_file_33.png
  4. 上書きしますか のメッセージが表示され、 はい をクリックします。

    ../../../../_images/import_file_42.png
  5. GX Works2 ソフトウェア画面に戻り、メニューバーで ツール ‣ 自動割付デバイス設定 をクリックします。

    ../../../../_images/import_file_51.png
  6. すると、 自動割付デバイス設定 画面が表示されます。ワードデバイスのDとビットデバイスのMの 割付選択 を変更して OK をクリックします。

    ../../../../_images/import_file_61.png
  7. プロンプト画面で はい をクリックし、GX Works2のソフトウェア画面に戻ります。

    ../../../../_images/import_file_71.png

PLCプログラムの構築とダウンロード

  1. GX Works2 ソフトウェア画面で、左側にある プログラム設定 を展開し、 実行タイプなし の下の MAINスキャンプログラム にドラッグし、それを展開して プログラム本体 をダブルクリックします。

    ../../../../_images/download_configuration_12.png
  2. プログラム部品/FB管理 を展開し、 MM_MBTCPMAIN/0行目 にドラッグすると、 FBインスタンス名入力 画面が表示されますので、ここでは初期値を使用して OK をクリックします。

    ../../../../_images/download_configuration_22.png
  3. ツールバーの 横線入力 をクリックすると下図のような画面が表示されます。 OK をクリックすると、左のバスバーが機能ブロック入力EN1ポートに接続されます。

    ../../../../_images/download_configuration_32.png
  4. ツールバーの 変換+全コンパイル をクリックします。

    ../../../../_images/download_configuration_42.png
  5. 表示される 注意 画面で はい をクリックします。

    ../../../../_images/download_configuration_51.png
  6. ツールバーの PC書込 をクリックします。

    ../../../../_images/download_configuration_6.png
  7. すると、 オンラインデータ操作 画面が表示されます。この画面で 書込 を選択し、 パラメータ+プログラム をクリックして 実行 をクリックします。

    ../../../../_images/download_configuration_7.png
  8. 下図のようなポップアップが表示されますので、 はい をクリックします。

    ../../../../_images/download_configuration_8.png
  9. 表示される 上書き 画面で 全てはい をクリックします。

    ../../../../_images/download_configuration_9.png
  10. プログレスバーの下のテキストボックスに PLC書込:終了 と表示されたら、 閉じる をクリックします。

    ../../../../_images/download_configuration_10.png
  11. 下図のようなメッセージが表示され、安全を確認した上で はい をクリックし、 オンラインデータ操作 画面に戻って 閉じる をクリックします。その後、PLC CPUユニットの電源を切り、再起動します。

    ../../../../_images/download_configuration_111.png

通信が成立しているか確認

  1. GX Works2 ソフトウェア画面で、ツールバーの モニタ開始(全ウィンドウ) をクリックします。

    ../../../../_images/establish_communication_13.png
  2. 下図のようなポップアップが表示されますので、 はい をクリックします。

    ../../../../_images/establish_communication_22.png
  3. MAIN/0行目 にあるMM_MBTCP機能ブロックをダブルクリックし、プログラムを423行目までスクロールします。正常に接続したら、ハートビート信号モニタ値が連続的に変化します。

    ../../../../_images/establish_communication_31.png
  4. Mech-Visionのメイン画面では、正常に接続された場合は、ログバーのConsoleタブに クライアントが接続されています が表示されます。

    このようなログがない場合は、以下の設定が正しいかどうか確認してください。

    1. ハードウェアのネットワーク接続が正常に行われているかどうか。

    2. Mech-Visionのインターフェースサービスが有効になっているかどうか。

    3. PLCプログラムがPLCハードウェアに正常にダウンロードされたかどうか。

ビジョンプロジェクトのテスト

ここでは、サンプルプログラム機能ブロックを使用して、 Mech-Visionプロジェクトを実行してビジョンポイントを取得する方法、Mech-Vizプロジェクトを実行して計画した経路を取得する方法について説明します。

事前準備

  1. Mech-Visionソリューションを作成し、それを 自動読み込み に設定します。すると、ソリューション内のプロジェクトも自動読み込みに設定され、プロジェクト名の前に番号が表示されます。

    ../../../../_images/preparation_13.png
  2. Mech-Vizプロジェクトを作成し、 自動的に読み込む にチェックを入れます。Mech-Vizプロジェクトの作成に関して、 Mech-Vizマニュアル をご参照ください。

    ../../../../_images/preparation_33.png

    テストのためのMech-Vizプロジェクトでは、下図のように、ステップ名が1の「メッセージによって異なる分岐を実行」を使用する必要があります。

    ../../../../_images/preparation_43.png

Mech-Visionからビジョンポイントを取得

パラメータ設定

  1. GX Works2 ソフトウェア画面で、ツールバーの モニタ(書込モード) をクリックします。

    ../../../../_images/test_vision_13.png
  2. すると、下図のようなポップアップが表示され、 OK をクリックします。

    ../../../../_images/test_vision_23.png
  3. プログラム部品/FB管理 を展開し、 MM_Start_VisMAIN/8行目 にドラッグすると、 FBインスタンス名入力 画面が表示されます。ここでは初期値を使用し、 OK をクリックします。

    ../../../../_images/test_vision_33.png
  4. ツールバーの 横線入力 をクリックすると下図のような画面が表示されます。 OK をクリックすると、左バスバーが機能ブロック入力EN1ポートに接続されます。

    ../../../../_images/test_vision_43.png
  5. Mech-Visionプロジェクト番号(つまり、Mech-Visionプロジェクトリストでプロジェクト名の前にある番号)を設定します。Vision_Proj_Numの値を 1 に設定すると、プロジェクト番号1のMech-Visionプロジェクトが実行されます。

  6. Mech-Visionプロジェクトから返される位置姿勢の数を設定します。Req_Pose_Numの値を 0 に設定すると、 Mech-Vision からすべての位置姿勢の結果が返されます。

  7. ロボットが送信する撮影位置姿勢のタイプを設定します。Robot_Pose_Typeのポート値を 0 に設定し、プロジェクトがEye to Handモードなので写真撮影時のロボットの位置姿勢を送信する必要がないことを意味します。

  8. MM_Start_Vis 機能ブロックの入力側 Start_Vision ポートの同行左端をダブルクリックし、ノーマリーオープン接点を選択し、グローバルラベル Camera_User.Start_Vis を入力して OK をクリックすると、左バスバーとStart_Visionポートが接続します。

    ../../../../_images/test_vision_53.png
    ../../../../_images/test_vision_63.png
  9. MM_Get_VisDataMAIN/8行目 にドラッグすると、以下のウィンドウがポップアップされますので、ここでは初期値を使用し、 OK をクリックします。ツールバーの 横線入力 をクリックして OK をクリックすると、左バスバーが機能ブロック入力EN1ポートに接続されます。

    ../../../../_images/test_vision_73.png
  10. Mech-Visionプロジェクト番号(つまり、Mech-Visionプロジェクトリストでプロジェクト名の前にある番号)を設定します。Vision_Proj_Numの値を 1 に設定すると、プロジェクト番号1のMech-Visionプロジェクトのビジョン結果が取得されます。

  11. MM_Get_VisData 機能ブロックの入力側 Get_VisData ポートの同行左端をダブルクリックし、ノーマリーオープン接点を選択し、グローバルラベル Camera_User.Get_VisData を入力して OK をクリックすると、 Get_VisData ポートに接続されます。

    ../../../../_images/test_vision_82.png
  12. ツールバーの 変換+コンパイル+RUN中書込 アイコンをクリックします。

    ../../../../_images/test_vision_91.png
  13. 表示される 変換+コンパイル+RUN中書込実行確認 画面で OK をクリックします。

    ../../../../_images/test_vision_101.png
  14. 下図のようなポップアップが表示されますので、 はい をクリックします。

    ../../../../_images/test_vision_112.png
  15. OK をクリックすると、PLCへの最新プログラムの書込が完了します。

    ../../../../_images/test_vision_121.png

Mech-Visionプロジェクトを実行

  1. MAINメインプログラムの画面で、 MM_Start_Vis 機能ブロックの入力側 Camera_User.Start_Vis 変数を右クリックし、 デバッグ ‣ 現在値変更 を選択します。

    ../../../../_images/test_vision_131.png
  2. 下図のような画面がポップアップするので、それをONに変更し(このウィンドウは開いたまま継続できます)、Mech-Visionプロジェクトをトリガーして実行し、この変数をリセットします。

    ../../../../_images/test_vision_14.png
  3. プログラムの空白場所を右クリックし、 ウォッチウィンドウへ登録 を選択し、グローバルラベル MM_Camera.Status_Code を入力します。返された値が 1102 の場合、プロジェクトが正常に実行されたことを意味します。返された値が10XXの場合、 標準インターフェースのステータスコード一覧とトラブルシューティング を参照して問題を解決してください。

    ../../../../_images/test_vision_15.png

Mech-Visionで計算した位置姿勢の結果を取得

  1. MM_Get_VisData 機能ブロックの入力側 Camera_User.Get_VisData 変数を選択し、それをONに変更してビジョンポイントを取得してから、この変数をリセットします。

    ../../../../_images/test_vision_16.png
  2. ウォッチ 画面で、グローバルラベル MM_Camera.Status_Code を入力すると、返された値が 1100 になります。返された値が10XXの場合、 標準インターフェースのステータスコード一覧とトラブルシューティング を参照して問題を解決してください。グローバルラベル MM_Camera.Target_Pose 入力すると、返された値がビジョン位置姿勢のデータとなります。

    ../../../../_images/test_vision_17.png

Mech-Vizから計画した経路を取得

パラメータ設定

  1. MM_Start_EmptyMAIN/54行目 にドラッグすると、 FBインスタンス名入力 画面が表示されますので、ここでは初期値を使用して OK をクリックします。ツールバーの 横線入力 をクリックし、左バスバーと機能ブロック入力EN1ポートが接続します。

    ../../../../_images/test_viz_14.png
  2. MM_Start_Vis 機能ブロックの入力側 Start_Empty ポートの同行左端をダブルクリックし、ノーマリーオープン接点を選択し、グローバルラベル Camera_User.Start_Empty を入力して OK をクリックすると、 Start_Empty ポートに接続されます。

    ../../../../_images/test_viz_23.png
  3. MM_Start_VizMM_Set_BranchMM_Get_VizData をそれぞれ MAIN/54行目 にドラッグすると、 FBインスタンス名入力 画面が表示されますので、ここでは初期値を使用して OK をクリックします。ツールバーの 横線入力 をクリックし、左バスバーと機能ブロック入力EN1ポートが接続します。

    ../../../../_images/test_viz_33.png
    ../../../../_images/test_viz_43.png
    ../../../../_images/test_viz_53.png
  4. ロボットが送信する撮影位置姿勢のタイプを設定します。Robot_Pose_Typeのポート値を 0 に設定し、プロジェクトがEye to Handモードなので写真撮影時のロボットの位置姿勢を送信する必要がないことを意味します。

  5. MM_Start_Viz 機能ブロックの入力側 EN1 ポートの同行左端をダブルクリックし、グローバルラベル Camera_User.Get_VizData を入力し、ノーマリーオープン接点を選択して OK をクリックすると、左バスバーが EN1 ポートに接続されます。

  6. MM_Start_Viz 機能ブロックの入力側 Start_Viz ポートの同行左端をダブルクリックし、グローバルラベル Camera_User.Start_Viz を入力し、ノーマリーオープン接点を選択して OK をクリックすると、左バスバーが Start_Viz ポートに接続されます。

    ../../../../_images/test_viz_63.png
  7. Mech-Vizプロジェクトの分岐パラメータを設定します。 Branch_Name、Branch_Exit_Port のポート値をそれぞれ1に設定すると、Mech-Vizプロジェクトが分岐1に実行したときに出口1から実行を続けることが指定されます。グローバルラベル Camera_User.Set_Branch を入力し、ノーマリーオープン接点を選択して OK をクリックすると、 Set_Branch ポートに接続されます。

    ../../../../_images/test_viz_73.png
  8. 取得する経路上の経路点の位置姿勢のタイプを設定します。 Request_Pose_Type のポート値を1に設定すると、Mech-Vizからのデータが関節角度の形式で返されます。

    注意

    ここで、Request_Pose_Type と機能関数 MM_Start_Vis、MM_Start_VizRobot_Pose_Type がグローバルラベル MM_Camera の同じ変数 Pose Type に対応していますが、設定する値が異なると同時に有効ではありません。

  9. MM_Get_VizData 機能ブロックの入力側 EN1 ポートの同行左端をダブルクリックし、グローバルラベル Camera_User.Start_Viz を入力し、ノーマリーオープン接点を選択して OK をクリックすると、左バスバーが EN1 ポートに接続されます。

  10. MM_Get_VizData 機能ブロックの入力側 Get_VizData ポートの同行左端をダブルクリックし、グローバルラベル Camera_User.Get_VizData を入力し、ノーマリーオープン接点を選択して OK をクリックすると、左バスバーが Get_VizData ポートに接続されます。

    ../../../../_images/test_viz_83.png
  11. ツールバーの 変換+コンパイル+RUN中書込 アイコンをクリックします。

    ../../../../_images/test_viz_93.png
  12. 表示される 変換+コンパイル+RUN中書込実行確認 画面で OK をクリックします。

    ../../../../_images/test_viz_102.png
  13. 下図のようなポップアップが表示されますので、 はい をクリックします。

    ../../../../_images/test_viz_113.png
  14. OK をクリックすると、PLCへの最新プログラムの書込が完了します。

    ../../../../_images/test_viz_121.png

Mech-Vizプロジェクトの実行

  1. MAINメインプログラムの画面で、 MM_Start_Empty 機能ブロックの入力側 Camera_User.Start_Empty ポートを右クリックし、 デバッグ ‣ 現在値変更 を選択します。それをONに変更し、前回取得したビジョン結果がクリアされたら、この変数をリセットします。

    ../../../../_images/test_viz_131.png

    ウォッチ 画面で、グローバルラベル MM_Camera.Status_Code を入力すると、返された値が 3103 になり、グローバルラベル Camera_User.Target Pose、Camera_User.Target Label、Camera_User.Speed Percentage の変数値がクリアされます。

    ../../../../_images/test_viz_141.png
  2. MM_Start_Viz 機能ブロック入力側の Camera_User.Start_Viz 変数を選択してONに変更し、Mech-Vizプロジェクトを実行してからこの変数をリセットします。

    ../../../../_images/test_viz_15.png
  3. ウォッチ 画面で、グローバルラベル MM_Camera.Status_Code を入力します。返された値が 2103 の場合、プロジェクトが正常に実行されたことを意味します。返された値が20XXの場合、 標準インターフェースのステータスコード一覧とトラブルシューティング を参照して問題を解決してください。

    ../../../../_images/test_viz_16.png

Mech-Vizの分岐出口を選択

  1. MM_Set_Branch 機能ブロック入力側の Camera_User.Set_Branch 変数を選択してONに変更し、Mech-Vizの分岐を選択してからこの変数をリセットします。

    ../../../../_images/test_viz_17.png
  2. ウォッチ 画面で、グローバルラベル MM_Camera.Status_Code を入力します。返された値が 2105 の場合、分岐が正常に設定されたことを意味します。返された値が20XXの場合、 標準インターフェースのステータスコード一覧とトラブルシューティング を参照して問題を解決してください。

    ../../../../_images/test_viz_18.png

Mech-Vizから計画した経路を取得

  1. MM_Get_VizData 機能ブロック入力側の Camera_User.Get_VizData 変数を選択してONに変更し、Mech-Vizの計画経路を取得してからこの変数をリセットします。

    ../../../../_images/test_viz_19.png
  2. ウォッチ 画面で、グローバルラベル MM_Camera.Status_Code を入力します。返された値が 2100 の場合、計画した経路が正常に取得されたことを意味します。返された値が20XXの場合、 標準インターフェースのステータスコード一覧とトラブルシューティング を参照して問題を解決してください。グローバルラベル MM_Camera.Target_Pose 入力すると、返された値がMech-Vizによって計画された経路の関節角度データとなります。

    ../../../../_images/test_viz_20.png