JAKA Modbus TCPでの通信方法

ロボットプログラムでのModbus TCP通信設定方法

本記事では、JAKAロボットをPLCなどの制御機器をから制御する場合に使用するModbus TCP通信(スレーブ側)の設定方法について、Bloclyプログラム例と実用上のポイントをまとめました。
なおアプリケーションのバージョンは1.7.2.36、ファームウェアバージョンは1.7.1で実施しております。

1. マスター側との通信の確認

外部デバイスとModbus TCP通信をする設定と確認方法を説明します。

1-1. メニューナビゲーションからプログラムページを開く

上部のツールメニューから「設定」→「ハードウェア通信」→「Modbusパラメータ設定」を選択します。

1-2. Modbus TCP/IPの選択とポートナンバーの確認

Modbus TCP/IPが選択されていることと、ポートナンバーを確認します。

memo

Modbus TCPでは通常ポート502を使用します。

1-3. Modbus TCP用のIO設定・確認画面の表示

メイン画面で下側のツールメニューから「I/Oパネル」→「Modbus」を選択します。

1-5. マスター機器側からスレーブ側へ接続しデータを送信する

今回はフリーソフト Modbus Toolをダウンロード・使用し、マスター側デバイスの代用をしております。

ロボットコントローラーのIPアドレス、ポートナンバーを入力し「Connect」ボタンをクリックします。

接続に成功すると下側にあるログコンソールに「Connected using TCP 192.168.*.*」のメッセージが流れます。

1-6. マスターデバイスからのデータ受信確認

マスター側であるModbus Toolアプリで、アドレス132の保持レジスタに任意の小数値を書き込みます。(下の図はAI_33に3.141を送信)
書き込んだ値がロボットコントローラーへ反映されるか確認します。

通信に成功すれば、ロボット制御アプリのI/O Modbusページのアナログ入力 Modbus浮動小数のAI_33に反映されます。

2. コイル、レジスタのアドレス

JAKAで使用するデータレジスタのアドレスを紹介します。

コイル
入出力名データ型最初の
アドレス
データ個数割り当て
DOブール型8128DO_1 ~ DO_128
入力ビット
入出力名データ型最初の
アドレス
データ個数割り当て
DIブール型40128DI_1 ~ DI_128
入力レジスタ
入出力名データ型最初の
アドレス
データ個数割り当て
AI符号なし整数10016AI_1~ AI_16
符号あり整数11616AI_17 ~ AI_32
浮動小数点13232AI_33 ~ AI_64
保持レジスタ
入出力名データ型最初のアドレスデータ個数割り当て
AO符号なし整数9616AO_1 ~ AO_16
符号あり整数11216AO_17 ~ AO_32
浮動小数点12832AO_33 ~ AO_64

3. IOへの機能割り当て

「I/Oパネル」画面で右上の「編集」アイコンをクリックし、IO名のあたりをクリックするとウィンドウが表示され、各IOに機能を割り当てることができます。
DIには外部からの要求指令、DOにはロボットの状態出力が割り当てられます。
なお「編集」はマニピュレータ電源がオフ状態でないとウィンドウが表示されません。

DIへの割り当て可能な指令は以下。

  • プログラム実行
  • プログラム一時停止
  • プログラム続行
  • プログラム停止
  • マニピュレータ電源オン
  • マニピュレータ電源オフ
  • サーボオン
  • サーボオフ
  • Level1減速モード
  • 安全機能停止状態
  • 初期姿勢に移動
  • Level2減速モード
  • 衝突警告のクリア
  • ダイレクトティーチングモードオン
  • ダイレクトティーチングモードオフ

DOの状態出力割り当ては以下。

  • アイドル
  • プログラム一時停止
  • プログラム実行中
  • エラー
  • 給電中
  • サーボオン中
  • 移動中
  • 静止状態
  • コントローラーに給電中
  • 緊急停止状態
  • Level2減速状態
  • 保護停止状態
  • 初期位置
  • ダイレクトティーチング状態
  • 衝突状態
  • Level1減速状態

4. ロボット動作プログラムの設定方法

ロボットプログラムからModbus TCPでデータを書き込み及び、読み込みを実施する方法を紹介します。

3-1. マスターデバイスへの出力(コイル)を書き込む

デジタル出力設定ツールを使用してデータを読み込みます。

プルダウン1:Modbusを選択
プルダウン2:出力値を変更したいDOを選択
プルダウン3:状態(On or Off)を選択

3-2. マスターデバイスからの入力(入力ビット)を読み込む

デジタル入力ツールを使用してデータを読み込みます。

プルダウン1: Modbusを選択
プルダウン2: 入力値を取得したいDIを選択
プルダウン3: 状態(On or Off)を選択

指定したDIが指定の値だった場合にtrue、異なっている場合はfalseを示す条件式です。

3-3. マスターデバイスへの数値入力(保持レジスタ)を読み込む

アナログ出力設定ツールを使用してデータを読み込みます。

プルダウン1: Modbusを選択
プルダウン2: 出力値を変更したいAOを選択
値入力: 変更したい値を入力 

memo

入力する値はAO1~AO16までは2バイト符号なし正整数(0~65535)、AO17~AO32までは2バイト符号あり整数(-32768~32767)、AO33~AO64までは浮動小数点を入力します。

3-4. デバイスへの数値入力(入力レジスタ)を書き込む

アナログ入力ツールを使用してデータを書き込みます。

プルダウン1: Modbusを選択
プルダウン2: 値を取得したいAIを選択

指定したAIの値を取得します。

memo

値はAI1~AI16までは2バイト符号なし正整数(0~65535)、AI17~AI32までは2バイト符号あり整数(-32768~32767)、AI33~AI64までは浮動小数点を出力します。

4. 参照サイト