MINATAと学ぶオートメーション #44:モドバスTCP — 見慣れたイーサネットにも、産業の規律が要る
モドバスTCP:見慣れたイーサネットにも、産業の規律が要る
モドバスTCPは、モドバスを普通のイーサネットに載せたものである。導入しやすく、距離も伸ばせる。その「見慣れている」ことが落とし穴でもある。番地の割り付け、スイッチ、応答待ちの時間、誰が接続してよいかの管理は、いずれも制御系の一部のままだ。ケーブルを挿せば終わり、ではない。
モドバスRTUとの違い
レジスタの考え方もファンクションコードも同じだが、モドバスTCPはデータをTCP/IPの包みに入れ、CRCを省く。イーサネット側に誤り検出があるからだ。1から247までの局番の代わりに、機器は IPの番地 と既定の口番号 502 で見分けられる。一台の機器が同時に複数の接続を受けられることも多い。上限は機器ごとに決まっている。
番地の計画は機械の資料の一部である
機器ごとに固定の番地を与え、同じサブネットに置き、重複させず、資料に残す。あとで設備を増やすとき、この計画があるから番地がぶつからない。制御に関わる機器へ動的な番地の割り当てを使うのは、はっきりした理由があるときだけにする。番地が変わるということは、接続が切れるということだ。
分離と最低限の防御
機械の回線は、できるかぎり事務所の回線から分ける。仮想の回線分割か、専用のスイッチを使う。モドバスTCPそのものに相手を確かめる仕組みはないので、共用の回線にさらしてはいけない。PLCと話してよい機器を決め、何がつないできたかを記録に残す。
応答待ち、再送、古い値
回線には遅れがあり、包みを落とすこともある。応答待ちの時間と再送を、制御された形で決める。 一度返事が遅れただけでプログラム全体が止まってはいけないし、一度包みを落としただけで数値が飛び跳ねてもいけない。HMIのときと同じで、切れたときは最後の値に 更新した時刻 を添えるか、無効の印を付ける。古い数字を新しい顔で見せてはならない。
参考になる現場の一場面
PLCが電力量計の値をモドバスTCPで読み、表示と記録に使っている。回線が途切れたとき、HMIは値を空白にも零にもせず、「何時何分に更新」と添えて最後の値を保つ。そうすれば運転者は、「回線が落ちている」のか「消費が零」なのかを見分けられる。
番地の計画、回線の分離、レジスタの対応は、最終的に機械の資料と機器の説明書に従う。
よくある間違い
- 機械の機器を、分離しないまま事務所の回線につなぐ。
- 制御に関わる機器に動的な番地を使い、番地が変わって接続が切れる。
- 応答待ちと再送の方針がなく、包みを一つ落としただけで止まるか数値が乱れる。
- 切れたときに値を消してしまう。時刻を添えて保つほうがよい。
- 型式の違う機器のあいだで、レジスタの対応表を写す。
モドバスTCPのチェックリスト
- [ ] 固定の番地、同じサブネット、重複なし、すべて記録済み。
- [ ] 必要なところで、機械の回線が事務所の回線から分かれている。
- [ ] 応答待ちと再送が制御され、プログラムを止めない。
- [ ] 切れたときのデータに印と更新時刻が付く。
- [ ] レジスタの対応が型式とファームウェアに合い、接続できる相手を管理している。
イーサネットは便利だが、規律は産業のものでなければならない。次の #45 では機械の安全と非常停止に移る。そこでは、その規律が選べるものではなくなる。
MINATAで自動化の知識をもっと読む:https://minatavn.com/ja/blog/industrial-automation
前の記事 — #43:RS-485上のモドバスRTU:https://minatavn.com/ja/blog/automation-43-modbus-rtu-ja
次の記事 — #45:機械の安全と非常停止:https://minatavn.com/ja/blog/automation-45-machine-safety-estop-ja
MINATAの技術記事をすべて見る