ロボットプログラムでのModbus TCP通信設定方法
本記事では、FAIRINOロボットをPLCなどの制御機器をから制御する場合に使用するModbus TCP通信の設定方法について、Luaコード例と実用上のポイントをまとめました。
なおオフラインアプリで確認しておりロボットのファームフェアバージョンV3.9.2に対応します。
1.IPアドレス等の設定
Program Teachingで動作プログラムを開いた状態でツールの下記位置のアイコン(ポップアップ「Modbus TCP設定」の表示)をクリックします。

マスター側として使用する場合の設定「メインサイトの設定」タブとスレーブ側として使用する場合の設定い「スレーブステーション設定」タブがありますが、今回は「スレーブステーション設定」のタブを選択します。

IPアドレス(マスター側)、ポート名(固定:502)、スレーブNoを入力すると、マスター側機器と通信可能な状態になります。
2.コイル、レジスタのアドレス
コイル、レジスタのアドレスは以下のようになっています。
アドレスの割り当て
- DI(コイル)… 100 ~ 227
- DO(レジスタ)… 100 ~ 227
- AI(保持レジスタ)
- 符号なし整数(16bit) 100 ~ 115
- 符号あり整数 (16bit)116 ~ 131
- 浮動点小数 (32bit)132 ~ 195
- AO(入力レジスタ)
- 符号なし整数(16bit) 100 ~ 115
- 符号あり整数(16bit) 116 ~ 132
- 浮動点小数(32bit) 132 ~ 195
- 機能DI … 300~ 510
マスター側プロセスから保持レジスタAI0(アドレスは100)を変更すると、ロボットコントローラー側も変更されていることがわかります。

3.ロボット動作プログラムの設定方法
作成したいプログラムを開き、プログラムツールからModbusのアイコンをクリックします。
開いたパラメータ入力画面からラジオボタンのスレーブステーションを選択します。

出力DI3、DI4、DI5、DI6の値を変更したい場合
- 命令の種類はデジタル出力を選択
- DO名はリストからDO3を選択
- レジスタ数は4を入力
- レジスタ値は1, 1, 1, 1を入植
- 下のラジオボタンは書くを選択

追加ボタンを押してから、適用ボタンを押すとプログラムに以下のコードが追加されます。
ModbusSlaveWriteDO(DO3, 4, {1, 1, 1, 1,})DI読み込みも同様にパラメータ入力画面からコードを作成できますが、そのままでは入力値の取得ができないので、入力値の取得をするためにスクリプトでのデータ修正を行います。
ツールバーの双方向矢印アイコンをクリックするとスクリプト入力モードに切り替わります。

DIデータの取得は変数とModbus読み取りの関数を=で結ぶことで取得できます。
連続4個のデータを取得する場合は下記のように4個の変数を割り当てます。
- 変更前
ModbusSlaveReadDI(DI3, 4)
- 変更後
- DI3から連続4つのデータを取得する
local res1, res2, res3, res4 = ModbusSlaveReadDI(DI3, 4)