FAIRINO Modbus TCPでの通信方法

ロボットプログラムでの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)