MODBUS ASCII協(xié)議和RTU協(xié)議
時(shí)間:2018-03-24 17:26:18來(lái)源:瀏覽次數:
韓國DONG-DO測量?jì)x在于PLC或者其他設備通信時(shí)采用的是哪種協(xié)議,很多都不明白,
我來(lái)告訴大家DONG-DO測量?jì)x通信協(xié)議采用的是MODBUS ASCII傳輸方式即傳輸協(xié)議
下表是MODBUS ASCII協(xié)議和RTU協(xié)議的比較:
協(xié)議 | 開(kāi)始標記 | 結束標記 | 校驗 | 傳輸效率 | 程序處理 |
ASCII | :(冒號) | CR,LF | LRC | 低 | 直觀(guān),簡(jiǎn)單,易調試 |
RTU | 無(wú) | 無(wú) | CRC | 高 | 稍復雜 |
從上表的比較我們可以看到,MODBUS的ASCII協(xié)議和RTU協(xié)議相比,MODBUS ASCII協(xié)議擁有開(kāi)始和結束標記,而MODBUS RTU卻沒(méi)有,所以ASCII協(xié)議的程序中對數據包的處理能更加方便。MODBUS ASCII協(xié)議的DATA域傳輸的都是可見(jiàn)的ASCII字符,因此在調試階段就顯得更加直觀(guān),另外它的LRC校驗程序也比較容易編寫(xiě),這些都是MODBUS ASCII的優(yōu)點(diǎn)。MODBUS ASCII的主要缺點(diǎn)是傳輸效率低,因為它傳輸的都是可見(jiàn)的ASCII字符,原來(lái)用RTU傳輸的數據每一個(gè)字節,用ASCII的話(huà)都要把這個(gè)字節拆分兩個(gè)字節,比如RTU傳輸一個(gè)十六進(jìn)制數0xF9,ASCII就需要傳輸字符'F'和字符'9',對應的ASCII碼0x46和0x39兩個(gè)字節,這樣它的傳輸的效率肯定就比RTU低。所以一般來(lái)說(shuō),如果所需要傳輸的數據量較小可以考慮使用ASCII協(xié)議,如果所需傳輸的數據量比較大,最好能使用RTU協(xié)議。
另外,由于A(yíng)SCII協(xié)議有開(kāi)始標志和結束標志,所以一個(gè)數據包之間的各字節間的傳輸間隔時(shí)間可以大于1秒,而MODBUS RTU方式下,由于沒(méi)有規定開(kāi)始和結束標記,所以協(xié)議規定每?jì)蓚€(gè)字節之間發(fā)送或者接收的時(shí)間間隔不能超過(guò)3.5倍字符傳輸時(shí)間。如果兩個(gè)字符時(shí)間間隔超過(guò)了3.5倍的字符傳輸時(shí)間,就認為一幀數據已經(jīng)接收,新的一幀數據傳輸開(kāi)始,所以RTU方式下兩個(gè)字節間傳輸間隔有時(shí)間要求。MODBUS 的ASCII和RTU兩種協(xié)議的這一區別可能決定某些應用場(chǎng)合只能選用其中一種協(xié)議。
轉自:http://blog.sina.com.cn/s/blog_89f286ad0102uzju.html
MODBUS之ASCII通信方式2009/2/23 17:07:32
字符數據格式和數據代碼
● MODBUS通信之ASCII通信方式的每個(gè)字符的數據格式規定如下
·1個(gè)起始位
·7個(gè)數據位
·1個(gè)奇偶校驗位,無(wú)校驗則無(wú)
·1個(gè)停止位(有校驗),2個(gè)停止位(無(wú)校驗)
● 在MODBUS之ASCII通信方式中,其數據格式中每個(gè)字節(8bit)都是一個(gè)十六位進(jìn)制字符組成。發(fā)送時(shí)每個(gè)字節(8bit)都作為兩個(gè)ASCII碼字符發(fā)送。
ASCII通信方式數據格式
MODBUS的ASCII方式的數據格式如下所示:
起始碼 | 地址碼 | 功能碼 | 數據區 | 校驗碼 | 停止碼 |
各部份內容說(shuō)明如下:
起始碼:數據格式的幀頭,以“ :”號表示(4位),ASCII碼為(3AH)。
地址碼:從站的地址(8位),01H-FFH。
功能碼:主站發(fā)送,告訴從站執行功能(8位),01H-FFH,具體代碼功能見(jiàn)后。
數據區:具體數據內容(n× 8位,)
校驗碼:LRC校驗碼(8位),校驗碼的范圍為由地址碼開(kāi)始到數據區結束,不包含起始碼。
停止碼:數據格式的幀尾,用 “CR”(0DH),“LF”(0AH)表示(8位)
控制器在MODBUS網(wǎng)絡(luò )上以ASCII碼模式通信,在數據格式中每8個(gè)bit(1個(gè)字節)都轉換成ASCII碼發(fā)送,也就是每個(gè)16進(jìn)制字符(0~9),(A~F)都轉換成ASCII碼發(fā)送。這種方式的主要優(yōu)點(diǎn)是字符發(fā)送的時(shí)間間隔可達1秒,而不產(chǎn)生錯誤。
數據格式的“:”為幀頭,在發(fā)送時(shí),網(wǎng)絡(luò )上的設備不斷偵測“:”字符,當有一個(gè)冒號被收到時(shí),每個(gè)設備都會(huì )解碼下個(gè)字符(地址碼)來(lái)判斷是否發(fā)給自己。
數據格式中的每個(gè)字符發(fā)送的時(shí)間間隔不能超過(guò)1秒,否則,接受設備將認為是傳送錯誤。
功能碼是主站告訴從站要執行的功能。例如運行命令,讀取監控狀態(tài),修改參數,讀取參數等。MODBUS協(xié)議制定了相關(guān)的功能代碼,數據區為功能碼的內容,執行什么運行命令,正轉,反轉,停止,修改那個(gè)參數等等。MODBUS協(xié)議對數據區的具體格式與內容沒(méi)有作統一的規定,而留給設備生產(chǎn)商去制定。凡是采用MODBUS協(xié)議作為設備通信協(xié)議的生產(chǎn)商,都會(huì )在在這方面作具體說(shuō)明。
ASCII通信方式的校驗方法是LRC校驗。
ASCII通信方式的數據格式之幀尾為固定的“CR”(回車(chē)),“LF”(換行)表示一幀數據傳送的結束。
上面就是ASCII通信方式一幀數據信息幀的內容。在通信中,信息幀的內容必須編成通信程序,由通信指令發(fā)送和回傳。