シリアル通信をベースとした制御用プロトコルは今やGbpsの速度を持つEthernetに比べると1kbps~100kbps程度と低速です。
ざっくりした比較ですが、棒グラフで図示してみました。
制御用プロトコル
Building AutomationやITの分野で、個人的に親しみのあるプロトコルを上げています。
RS-232C
LonWorks
BACnet/MSTP
Modbus RTU
KNX
DALI
90年代のアナログモデムでなじみのある28.8kbpsや最高速度である56kbpsも入れました。
速度の比較
公称速度の単純比較です。オーバーヘッドや回線品質による再送、待ち時間などにより実際のスループットは異なります。
グラフの長さに差が付きすぎるのでEthernetは10Mbpsとしました。対数目盛が良いかも。
Ethernetとの速度差は明らかで、制御プロトコルの100kbps以下は同じに見えますが、
Ethernet以外の遅い者同士を比較すると、それなりに差はあります。
個人的な体感ですが、設定をデバイスに転送する際にLonWorksデバイスとKNXデバイスでは明らかに設定転送完了までの待ち時間が体感的に違いました。
78Kと9600では約8倍の速度差があります。プログラムや設定の転送作業を繰り返しているとこの差が効いてきます。
DALIの1200bpsはEthernetと比べると10,000倍遅いです。
DALIとEthernetを接続するDALIゲートウェイなる製品も有ったりしますが、TCP/IPでEthernet側から繰り返しリクエストを送信すると応答が返ってこないことがあります。
速度の差が大きすぎて、DALIのレスポンスを得る前に次々とリクエストを再送してゲートウェイがハングアップするようなことが容易に発生します。
例えて言うならジェット戦闘機で届けられたパケットを手押し車に乗せ換えて人力で配達するようなイメージでしょうか。いやもっと差があるかも。
各プロトコルの補足
ピアツーピアのRS-232C
おなじみシリアル通信です。1対1で通信します。2400bpsなどの低速から115kbpsまでデバイスと設定次第。
マルチドロップのRS-485
RS-232Cとよく似ていますが、長距離通信とマルチドロップ(複数デバイス接続)が可能なRS-485もデバイス制御では一般的です。
上位層のBACnetとModbus
BACnetとModbusは上位層のアプリケーションレベルのプロトコルです。下位層にはRS-485を使う場合とTCP/IPを使用する場合が存在します。
それぞれ次の様に呼ばれます。ここではRS-485を使用したBACnet/MSTPとModbus RTUの速度を使用しています。
RS-485: BACnet MSTP, Modbus RTU
Eternet TCP/IP: BACnet IP, Modbus TCP
RS-485を下位層に使用するBACnet/MSTPやModbus RTUはマスタースレーブ方式を取り、1個のネットワークに複数のデバイスの接続が可能です。
従って、通信速度以外に他のデバイスの通信終了を待つ待ち時間も生じます。
Modbusに関しては以前こちらの記事も書いています。
pythonでModbus機器と通信する(1) リクエストの送信
pythonでModbus機器と通信する(2) レスポンスの受信
pythonでModbus機器と通信する(3) レジスタ読取り用ツール
フリートポロジーのLonWorks, KNX
LonWorksとKNXは下位層まで独自の規格で定義されています。KNXはケーブルも専用です。
バス接続、スター接続などデバイスの接続が自由に行えます。
BACnetやModbusと同様に複数のデバイスを同一ネットワークに接続可能です。
照明専用のDALI
1200bpsと低速ですが、照明に特化したシンプルなプロトコルです。
他に記事も書いていますのでご参考に。
DALI入門(1) DALIのアドレスを理解する
DALI入門(2) アドレスの設定(アドレシング)