最近、Modbus通信でデータを取得するシステムを組んでいた。
FAの通信方式としては最も一般的なのがModbusだが「RS-485(Modbus)」のような記載もあって、
Modbusのことを知らない時は「RS-485ってModbusなの? 」など戸惑いもあった。
Modbusは、もともとModicon社のPLCの通信方式として生まれたそう。
標準規格ではないのだが、今やFA分野のデファクトスタンダードとして多目的に使われている。
Modbusはもともとシリアル通信を使ってPLCのデータの読み書きを行うプロトコルを定義したもの。
当初のModbusはASCIIベースだったが、バイナリで通信する Modbus/RTU の方が今は一般的なんだろうか。
ここで使えるシリアル通信としては RS-485, RS-422, RS-232C などいろいろあるんだけど、
もっともよく使われているのがRS-485との組み合わせだそう。
RS-485は2線式・半二重のシリアル通信方式として使われることが多く(4線式・全二重も可)、
長距離伝送に対応し、多数の機器をぶら下げることができるということで、工場で使うには適している。
さらに、Ethernetを伝送手段に使ったModbus/TCP というプロトコルもある。
Ethernetを使って情報を伝達する手段はいろいろありそうだけど、
FA分野で実績のあるModbusをそのままEthernet対応にした Modbus/TCP はよく使われているわけだ。
対応する通信方式として「RS-485(Modbus)」「Ethernet(Modbus/TCP)」というのはこの分野ではあまりに鉄板。
多目的に使われてるとは言ったものの、元はPLCの方式ということで、1bitの通信変数の名前が「コイル」「リレー」だったりする。
PLCではリレーシーケンスの名残で、出力変数をコイル、入力変数をリレーって言うことがある。
Modbus通信までコイルとリレーという言葉を使う必要はないと思うのだが、
もともとコンピュータからPLCを操作監視する方式として生まれたので、PLCの用語をそのまま使ったのだろう。
Modbus通信では、1bitの変数だけでなく、16bitあるいはその整数倍の変数を取り扱うこともできるので、数値情報の取得・設定に使える。
もはやそういうシステムではコイルとかリレーという言葉はそぐわない気もするけど。
イマイチなところは、アドレス・変数型はすべて手で設定しないといけないということ。
変数1つずつ、機器のマニュアルを見て、設定するってこと。
測定温度のアドレスは42003で、16bit整数型で温度(℃)×10が格納されているという具合に。
使う変数が多くなると大変そうだなと思ったが、テンプレートとかあるんだろうかね。
古典的な通信方式ではあるのだが、対応している機器が多いのはいいことだよね。
今回の目的は、RS-485やEthernetで何らかの通信をするというということで、必ずしもModbusである必要はなかった。
ただ、やっぱりModbusは簡単に導入できたし、システムも組みやすかった。
実際に触ったことで、いろいろな謎も解けたしよかったか。