ロボットプログラムでの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 | ブール型 | 8 | 128 | DO_1 ~ DO_128 |
入力ビット
| 入出力名 | データ型 | 最初の アドレス | データ個数 | 割り当て |
|---|---|---|---|---|
| DI | ブール型 | 40 | 128 | DI_1 ~ DI_128 |
入力レジスタ
| 入出力名 | データ型 | 最初の アドレス | データ個数 | 割り当て |
|---|---|---|---|---|
| AI | 符号なし整数 | 100 | 16 | AI_1~ AI_16 |
| 符号あり整数 | 116 | 16 | AI_17 ~ AI_32 | |
| 浮動小数点 | 132 | 32 | AI_33 ~ AI_64 |
保持レジスタ
| 入出力名 | データ型 | 最初のアドレス | データ個数 | 割り当て |
|---|---|---|---|---|
| AO | 符号なし整数 | 96 | 16 | AO_1 ~ AO_16 |
| 符号あり整数 | 112 | 16 | AO_17 ~ AO_32 | |
| 浮動小数点 | 128 | 32 | AO_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までは浮動小数点を出力します。
