Modbusってなんだよ

最近、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は簡単に導入できたし、システムも組みやすかった。

実際に触ったことで、いろいろな謎も解けたしよかったか。