MODBUSバス控系统的技术特征
MODBUS通信プロトコル是一种工业现场バス通信プロトコル,它定义的是一种デバイスコントローラーは可以识别和使用的信息フレーム構造,独立于物理層は介质,可以承载于多种网络タイプ中。
MODBUS协议把通信参与者规定为“master”(Master)和“slave”(Slave),データと信息的通信遵从主/モデルから。,当它应用于標準MODBUS网络时,信息被直接传送。
MODBUSバス网络中的各个スマートデバイス経由异步串行バス连接起来,只允许一个コントローラーは作为マスター,其余スマートデバイス作为スレーブ。
采用命令/应答的通信の形態,マスター发出リクエスト,スレーブ应答リクエスト并送回データ或ステータス信息,スレーブ不能够自己送信信息。
MODBUS协议定义的各种信息フレーム形式,説明了マスターコントローラーはアクセススレーブデバイス的过程,规定スレーブ怎样做出应答レスポンス,以及チェック和报告传输エラー等。网络中的每个从デバイス都必须分配给一个唯一的アドレス,只有符合アドレス要求的从デバイス才会レスポンス主デバイス发出的命令。
由于MODBUSバス系统开发成本低,Strong compatibility,并且现在已有很多工控器、PLC、周波数変換器、表示屏等都具有MODBUSCommunication Interface,所以它已经成为一种公认的通信標準。
経由MODBUSバス,可以很方便地将不同厂商生产的控制デバイス连成工业网络,进行集中モニタリング。
MODBUS最初为PLC通信而设计,它経由24种バス命令実装PLC与外界的信息交換。这些バス命令对应的通信功能主要包括AI/AO、DI/DO的データ传送。
但ではない很多MODBUSデバイス的控制只使用其中的几条命令,对其余命令不做反应。
MODBUS通信形式
MODBUS协议定义了两种传输モード,即RTU(Remote TerminalUnit)和ASCII。
在RTUモード中,1バイト的信息作为一个8位文字被送信,而在ASCIIモード中则作为2つASCII文字被送信,如送信文字“20”时,采用RTUモード时为“00100000”,然而采用ASCIIモード则成为“00110010”+“00110000”(ASCII文字的“2”和“0”)。
可见,送信同样的データ时,RTUモード的效率大约为ASCIIモード的两倍。
一般来说,データの量少而且主要是文本时采用ASCII;通信データの量大而且是二进制数值时,多采用RTUモード。
マスター一次可向一个或すべての駅から。送信通信リクエスト(或指令),主デバイス経由メッセージフレーム的アドレス域来选通从デバイス。
マスター送信的メッセージフレーム的内容和顺序为:slave address、function code、Anti-counterfeiting verification(データ開始アドレス、データの量、データ内容)、CRC check码;スレーブ应答的信息内容和顺序与マスター信息フレーム基本相同。
MODBUS除了定义通信機能コード之外,同时还定义了出错码,标志出错信息。マスター受信到エラー·コード后,根据
エラー的原因采取相应的措施。スレーブ应答的データ内容依据機能コード进行レスポンス,例如功能代码03要求駅から読む。デバイス中レジスタを保持する。的内容。
CRC check的実装
MODBUS通信的RTUモード中,规定信息フレーム的最后两バイト単位。用于传递CRC(Cyclic RedundancyCheck,循环冗余チェック)码。
送信方将信息フレーム中アドレス域、function code、データ域的すべてのバイト按规定的方式进行位移并进行XOR(XOR)result,即可得到2バイト的CRC码,并把包含CRC check码的信息フレーム作为一连续的流进行传输。
受信方在收到该信息フレーム时按同样的方式进行計算,并将结果同收到的CRC码的双バイト比较,もし一致就认为通信正确,否则认为通信有误,スレーブ将送信CRCエラー应答。
RTUモード一般采用CRC-16冗余チェック方法,CRC-16的チェックコード为16位(2バイト),其中低バイト数前に,ハイバイト在后。
実装CRC check有两种方法:根据CRC check的定义公式进行計算,或者在程序中建立CRC check值表。
在程序で使用する。前者更容易実装,这里需要使用CRC生成多項式X16+X15+X2+1。
该多項式对应的码组系数为18005H(hexadecimal),去除最高位,对应的16位余数为8005H,即为CRC-16常数。
CRC-16チェック过程如下:
将CRCレジスタ的每一位预置为1;把该レジスタの値与8bit的信息フレームデータ进行异或,结果存于该レジスタ;对CRCレジスタ从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移
出CRCregister)もし为1,则把レジスタ与CRC-16常数进行异或,否则もしLSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8bitデータの処理完毕,用此时レジスタ的值与下一个8bitデータ异或并进行如前一样的8次移位。
すべての的文字処理完成后CRCレジスタ内的值即为最终的CRC值。CRC追加到メッセージ中时,先加入低バイト数,然后ハイバイト。
链路特征
MODBUS標準的物理層は可以采用RS-232串行通信の形態,但在長距離通信中常采用RS-422或RS-485代替。在多点通信情况下只采用RS-485方式,所以RTUモード下的MODBUS系统采シールドツイストペア,通信距离可达1000m。一条バス上最多可設定31个スレーブデバイス。
传输线上的信息交換是ハーフデュプレックス的,即同时只能有一台デバイス允许送信信息,マスター在送信下一条指令之前待機中スレーブ回应,从而避免了线路的冲突。
RTUモード的传输格式是1个データ·ビット,2个ストップ·ビット,ないパリティ検査位。通信データセキュリティ由控制参数CRC-16码保证。RTU受信デバイス依靠受信文字间经过的时间判断一フレーム的开始,もし经过3个半的文字の時間后仍然ない新的文字或者ない完成フレーム,受信デバイス就会放弃该フレーム,并设下一个文字为新一フレーム的开始。
Leave a Reply