Modbus
Modbus は1970年代末にプログラマブルロジックコントローラと通信するために設計された。そのため、その当時のPLCが解釈できるデータ型しかなく、大規模ライブラリのオブジェクトはサポートされていない。
データオブジェクトを説明する標準的手段が存在しない。例えば、レジスタ値が30度から175度の温度を表しているといった情報である。
Modbusはマスタースレーブ型プロトコルであるため、機器が例外事象を報告する手段がない(ただし、イーサネット TCP/IP 上では open-mbus という例外を扱えるものもある)。したがって、マスターノードが定期的に各機器の状態を問い合わせる必要がある(状態を問い合わせると言っても、そのようなコマンドがあるわけではなく、単にデータを読み取って異常がないかチェックするだけである)。これは低速な無線リンクなどバンド幅が貴重なネットワークでは、バンド幅の無駄遣いになる。
Modbusは1つのデータリンク内で最大247個のアドレスまでしか扱えない。このため、1つのマスターステーションに接続できる機器の台数が制限される(ただし、イーサネット TCP/IP ではその限りではない)。
Modbusの転送は連続的でなければならない。そのため、遠隔通信機器はデータをバッファリングし転送にギャップが生じないようにする必要がある。
ほとんど全ての実装において、公式の規格からの逸脱が見られる。したがって、異なるベンダーの機器同士では正しく通信できない可能性がある。違いがよく見られるのは以下の点である。
データ型 浮動小数点(IEEE) 32ビット整数 8ビットデータ 混合データ型 整数内のビットフィールド データと整数を変換する乗数 10, 100, 1000, 256 ...
プロトコル拡張 16ビットスレーブアドレス 32ビットデータサイズ(1アドレス = 32ビットの返却データ) ワードを入れ替えたデータ