実はFANUCのNC装置も、Modbus/TCP通信に対応しています。
Modbus/TCP通信は、実装の簡単さが特徴で、ベンダーが提供する多くの機器と通信できる点が強みです。
ただしFANUCでModbus/TCP接続を利用するには、いくつか注意点があります。
- Modbus/TCPサーバ機能の追加(FANUCから購入)
- サーバー側のみ対応(クライアントへの割り当て不可)
- ファストイーサネットモジュールの増設(または内蔵イーサネットポートの利用)
ここではModbus/TCP通信の基礎知識と、FANUCで利用すための設定と注意点について解説します。
Modbus/TCPについて、必要な内容だけおさらいする
Modbus/TCPとは、Modbus通信をTCP/IP上でおこなう通信モードです。
接続はEthernetケーブルでよく、IPアドレスを元にお互いの居場所を特定します。
Modbus/TCPはクライアント・サーバー方式
クライアントの発した要求電文を受けて、サーバーがクライアントの要求を処理します。
サーバー側の処理が終わったら、クライアントへ応答電文を返すことで1回の通信が成立します。
- クライアントの要求電文『サーバーAの接点Xをオフにして』
- サーバーAはクライアントの要求に基づき、接点Xをオフにする
- 正常に処理が終わった旨の応答電文をクライアントへ返す
Modbus/TCPでは、クライアントだけが他のサーバーからデータを読み出したり、書き換えられます。
このような通信方法をシングルクライアント/マルチサーバー方式と呼びます。
例えるなら、上司が部下に対して仕事の指示とプロジェクトの進捗具合の確認メールを送り、部下が指示を実行してかつ進捗具合をメールで返信する。といった具合です。
FANUCで使えるデータテーブルはHolding Registersのみ
データテーブルとは、クライアントとサーバー間でやり取りするデータの型です。
テーブル名 | データ型 | 読出/書込の種類 |
---|---|---|
入力ステータス(Dscrete Input) | ビット | 読出しのみ |
コイル(Coils) | ビット | 読出/書込 |
入力レジスタ(Input Registers) | ワード(16ビット) | 読出しのみ |
保持レジスタ(Holding Registers) | ワード(16ビット) | 読出/書込 |
FANUCのModbus/TCPサーバー機能では、保持レジスタ(Holding Register)しか使用できません。
クライアント側からの要求電文は、必ず保持レジスタを指定してください。(重要)
対応するファンクションコードは3つ
ファンクションコードとは、クライアントからのサーバーに対する動作指令です。
ファンクションコード名 | コード番号 | 最大データサイズ |
---|---|---|
保持レジスタ読出(Read Holding Registers) | 03h | 125ワード |
複数レジスタ書込(Write Multiple Registers) | 10h | 123ワード |
複数レジスタ読出/書込(Read/Write Multiple Registers) | 17h | 読出:125ワード/書込:121ワード |
Modbus/TCPでサポートしている他のファンクションは、FANUCでは対応していません。
特別な事情がない限り、クライアント側は複数レジスタ読出/書出(17h)を指定します。
クライアントは、保持レジスタの読出/書込する電文へ
ここまでに通信方式、データテーブル、ファンクションコードの説明をしました。
FANUCでModbus/TCP通信をおこなうための条件をまとめると、次の通りです。
- クライアントはFANUC以外の機器に設定する
- データテーブルは保持レジスタを指定する
- ファンクションコードは複数レジスタ読出/書込(17h)を指定する
クライアント側が上記の条件を守れば、FANUCは要求電文を処理できます。
必要なオプションと部品
FANUCでModbus/TCPを利用するにあたり、空いているイーサネットポートにケーブルを差し込めば使えるわけではありません。
Modbus/TCPサーバ機能を有効にするオプション機能パラメータの導入が必要です。
さらにイーサネットポートに空きがなければ、追加のファストイーサネットボードを取り付けなければいけません。
オプション機能パラメータをFANUCから購入する
パラメータNo.1123の1ビット目の値を確認します。※0i系モデル
値が”0″であればModbus/TCPサーバ機能がインストールされていない状態です。
Modbus/TCPサーバ機能のインストールデータは、FANUCから購入できます。
各モデルに対するオプションデータの型式は次の通りです。
モデル | パラメータNo. | 注文型式 | Name | 名称 |
---|---|---|---|---|
18i/180i/180is-MB | 1317#4 | A02B-0284-R523 | MODBUS/TCP function | MODBUS/TCP機能 |
0i-TD/TF/MD/MF | 1123#1 | A02B-0319-R968 | Modbus/TCP Server function | MODBUS/TCPサーバ機能 |
上記のモデル以外でも、FANUCへモデル名を伝えてModbus/TCPオプションをインストールしたい、と連絡すればインストールデータを購入できます。
ファストイーサネット増設か、内蔵イーサネットか
Modbus/TCP通信には、イーサネットポートを1口使います。
標準搭載の内蔵イーサネットポートに割り当てられますが、ファストイーサネットボードを追加する方法もあります。
ファストイーサネットボードは、FANUCにモデル名を伝えて対応した型式のオプションボードを購入してください。
Modbus/TCPサーバ機能を割り当てるイーサネットポートは、パラメータから決定します。
ただし内蔵イーサネットポートとそれ以外へ割り当てるパラメータが異なるため、注意してください。
パラメータNo.:14882#1
Modbus/TCPサーバ機能の割当先は
0:ファストイーサネットボードで使用します
1:組込みイーサネット(内蔵イーサネットポート)で使用します
パラメータNo.:0970
イーサネット機能、データサーバ機能、Modbus/TCPサーバ機能を動作させるファストイーサネットボードの選択
設定値 | ハードウェアオプション |
---|---|
-1 | 使用しない |
0 | 未設定(初期値) |
1 | 予約 |
2 | 予約 |
3 | Slot1に実装されているファストイーサネットボード |
4 | Slot2に実装されているファストイーサネットボード |
Modbus/TCP通信構成の一例
具体的な接続方法を解説するために、クライアントと繋いだ実際にModbus/TCP通信ができる回路を示します。
クライアント:三菱 iQ-R サーバ:FANUC 0i
FANUCのModbus/TCP通信パラメータを設定するにあたり、クライアントは三菱電機製 iQ-R(R120ENCPU)に割り当てます。
両者はイーサネットケーブル(ストレート)で接続し、FANUC側は内蔵イーサネットポートを使用します。
IPアドレスは次の通りに設定しました。
- 三菱R120ENCPU → 192.168.3.40
- FANUC 0i-TC → 192.168.3.41
※FANUCでModbusTCP通信をする際は、スイッチングハブを経由させないと通信異常が発生します
Modbusデータ領域と取合内容
三菱PLCとFANUC PMC間において、やり取りされるデータの流れは次の通りです。
【三菱PLC –≫ FANUC PMC】
- データレジスタD9000.0~D9079.Fの内容を、保持レジスタ0~79ワード目に書込み
- 保持レジスタ0~79ワード目の内容を、PMCアドレスE0000.0~E0159.7に書込み
【三菱PLC ≪– FANUC PMC】
- PMCアドレスE0500.0~E0559.7の内容を、保持レジスタ80~159ワード目に書込み
- 保持レジスタ80~159ワード目 の内容を、データレジスタD9100.0~D9179.Fに書込み
クライアント側(三菱iQ-R)の要求電文設定
FANUC側の仕様で説明した通り、クライアント側の要求電文は保持レジスタへの書込/読出に設定します。
三菱CPUがFANUCに書き込む保持レジスタの領域はアドレス0番~79番、全部で80ワード分です。
データレジスタD9000~D9079までを、 アドレス0番~79番に書き込みます。
今度は読み出す保持レジスタの領域はアドレス80番~159番、全部で80ワード分です。
データレジスタD9100~D9179までを、 アドレス80番~159番に書き込みます。
Modbus/TCP通信パラメータ
上記をもとに、FANUC側の通信パラメータを設定していきます。
サーバ:FANUC側のイーサネット設定
ネットワークアドレスの割付をおこないます。
内蔵イーサネットポートの基本設定項目から、次の2点を入力します。
- IPアドレス
└ 192.168.3.41 - サブネットマスク
└ 255.255.255.0
Modbusサーバ機能の詳細設定
Modbusサーバ機能の基本設定です。
Modbusサーバ機能の基本設定をおこないます。
- TCP用ポート
└ 502 ※502はModbus/TCP専用の番号 - オプション1
- BCE ≫ Modbus領域のバイト並びを
「0」リトルエンディアン
「1」ビッグエンディアン - RSV ≫ 必ず「0」にする
- BCE ≫ Modbus領域のバイト並びを
- ステータスPMCアドレス
- 未使用
Modbus通信ステータスを格納するPMCのアドレスE/R領域の先頭を指定します。1バイト分の領域が使われます。
- 未使用
Modbus領域とPMCアドレスの設定
Modbus領域とPMCアドレスの紐付けをおこないます。
紐付けできる領域は3種類まで。今回は2つの領域を使います。
【領域1】
クライアントからの書込みデータを反映するアドレス
- Modbusアドレス
└ 1 ※FANUCはアドレスを1から起算する - PMCアドレス
└ E0000 ※アドレスE/R/Dが使用できる - サイズ(ワード)
└ 80
Modbus領域0から読みだした80ワード分(1280ビット)を、PMCアドレスE0000へ反映する設定です。
【領域2】
クライアントが読み出すデータを反映するアドレス
- Modbusアドレス
└ 81 ※領域1で1~80まで使用済、重複しないよう注意 - PMCアドレス
└ E0500 ※領域1でE0000.0~E0159.7まで使用済、重複しないよう注意 - サイズ(ワード)
└ 80
PMCアドレスE0500から80ワード分(1280ビット)を、Modbus領域80へ反映する設定です。
クライアントとの接続確認
Modbus/TCPサーバ機能の保守から、クライアントとの接続状態を確認します。
Modbus/TCPサーバ機能保守画面
保守画面から、クライアントおよび他のサーバ機器と接続状態を確認できます。
ソフトキー[Mod保守]から保守画面に移動します。
- 接続元
本Modbus/TCPサーバーに接続しているクライアントのIPアドレス。 接続が確立した順に表示されます。 - 接続時間
本Modbus/TCPサーバーに接続しているクライアントの接続時間。999:59:59以上は更新されません。
- 接続元が一覧に表示されない
- 接続時間がクライアント側で設定した、タイムアウト時間以上にならない
上記の現象が起きたときは、パラメータ設定もしくはハードウェアに問題があります。
接続とパラメータ設定も見直してください。
接続元が一覧に表示され、タイムアウト時間以上の通信が確立すれば、Modbus/TCP通信の設定は完了です。
補足情報
今回の仕様において、説明しなかった情報を補足します。
ステータスPMCアドレス
Modbus/TCPサーバ機能が検知したステータス(1バイト)です。
#7 | #6 | #5 | #4 | #3 | #2 | #1 | #0 |
---|---|---|---|---|---|---|---|
COM | INT | — | — | — | — | — | ERR |
ビット | 名称 | 説明 |
---|---|---|
#0 | ERR | 復旧不可エラー 0:Modbus/TCPサーバ機能は正常動作中です 1:Modbus/TCPサーバ機能で回復不能なエラーが発生しました |
#1-5 | — | 予約 |
#6 | INT | 初期化完了 0:Modbus/TCPサーバ機能の初期化が完了していません 1:Modbus/TCPサーバ機能の初期化が完了しました |
#7 | COM | 通信中 0:Modbus/TCPクライアントと通信していません 1:1台以上のModbus/TCPクライアントと通信中です |
参考資料
FANUC Series 30i-MODEL B, Series 31i-MODEL B, Series 32i-MODEL B, Series 35i-MODEL B, Power Motion i-MODEL A, FANUC Series 0i-MODEL F 産業用イーサネット(B-64013JA/03)
コメント