Modbus是一種應用層協議,它定義了與基礎網路無關的資料單元(ADU),可以在乙太網(TCP/IP)或序列鏈路上(RS232、RS485等)進行通訊(乙太網ADU和序列ADU略有不同)。在序列鏈路上,Modbus協議有兩種傳輸模式——ASCII模式和RTU模式。其中,ASCII是英文“American Standard Code for Information Interchange”的縮寫,中文翻譯為“美國國家資訊交換標準編碼”;RTU是英文“ Remote Terminal Unit”的縮寫,中文翻譯為“遠端終端裝置”。今天這篇文章,我們來聊聊Modbus協議的ASCII傳輸模式和RTU傳輸模式有什麼不同?首先,讓我們來看看Modbus的工作原理。Modbus採用主從(Master-Salve)通訊模式,僅有主裝置(Master)能對傳輸進行初始化,從裝置(Slave)根據主裝置的請求進行應答。典型的主裝置包括現場儀表和顯示面板,典型的從裝置為可程式設計邏輯控制器(PLC)。在序列鏈路的主從通訊中,Modbus主裝置可以連線一個或N(最大為247)個從裝置,主從裝置之間的通訊包括單播模式和廣播模式。在廣播模式中,Modbus主裝置可同時向多個從裝置傳送請求(裝置地址0用於廣播模式),從裝置對廣播請求不進行響應。在單播模式中,主裝置傳送請求至某個特定的從裝置(每個Modbus從裝置具有唯一地址),請求的訊息幀中會包含功能程式碼和資料,比如功能程式碼“01”用來讀取離散量線圈的狀態。從裝置接到請求後,進行應答並把訊息反饋主裝置。下圖是典型的主從裝置的請求-應答機制:在主從裝置的通訊中,可以使用ASCII模式或者RTU模式。 在ASCII(American Standard Code for Information Interchange)傳輸模式下,訊息幀以英文冒號(“:”,ASCII 3A Hex)開始,以回車和換號(CRLF,ASCII 0D and 0A Hex)符號結束,允許的傳輸的字符集為十六進位制的0~9和A~F;網路中的從裝置監視傳輸通路上是否有英文冒號(“:”),如果有的話,就對訊息幀進行解碼,檢視訊息中的地址是否與自己的地址相同,如果相同的話,就接收其中的資料;如果不同的話,則不予理會。在ASCII模式下,每個8位的位元組被拆分成兩個ASCII字元進行傳送,比如十六進位制數0xAF ,會被分解成ASCII字元“A”和“F”進行傳送,傳送的字元量比RTU增加一倍。ASCII模式的好處是允許兩個字元之間間隔的時間長達1s而不引發通訊故障,該模式採用縱向冗餘校驗(Longitudinal Redundancy Check ,LRC)) 的方法來檢驗錯誤,下面是對ASCII模式的總結:在RTU(Remote Terminal Unit)模式下,每個位元組可以傳輸兩個十六進位制字元,比如十六進位制數0xAF,直接以十六進位制0xAF(二進位制:10101111)進行傳送,因此它的傳送密度比ASCII模式高一倍;RTU模式採用迴圈冗餘校驗(CRC),下面是對RTU模式的總結:好了,關於Modbus協議下ASCII模式和RTU模式的不同,我們就先聊到這裡,更多Modbus的內容在後續文章陸續介紹,歡迎登陸方正智芯官網(http://www.founderchip.com)瀏覽更多內容。
Modbus是一種應用層協議,它定義了與基礎網路無關的資料單元(ADU),可以在乙太網(TCP/IP)或序列鏈路上(RS232、RS485等)進行通訊(乙太網ADU和序列ADU略有不同)。在序列鏈路上,Modbus協議有兩種傳輸模式——ASCII模式和RTU模式。其中,ASCII是英文“American Standard Code for Information Interchange”的縮寫,中文翻譯為“美國國家資訊交換標準編碼”;RTU是英文“ Remote Terminal Unit”的縮寫,中文翻譯為“遠端終端裝置”。今天這篇文章,我們來聊聊Modbus協議的ASCII傳輸模式和RTU傳輸模式有什麼不同?首先,讓我們來看看Modbus的工作原理。Modbus採用主從(Master-Salve)通訊模式,僅有主裝置(Master)能對傳輸進行初始化,從裝置(Slave)根據主裝置的請求進行應答。典型的主裝置包括現場儀表和顯示面板,典型的從裝置為可程式設計邏輯控制器(PLC)。在序列鏈路的主從通訊中,Modbus主裝置可以連線一個或N(最大為247)個從裝置,主從裝置之間的通訊包括單播模式和廣播模式。在廣播模式中,Modbus主裝置可同時向多個從裝置傳送請求(裝置地址0用於廣播模式),從裝置對廣播請求不進行響應。在單播模式中,主裝置傳送請求至某個特定的從裝置(每個Modbus從裝置具有唯一地址),請求的訊息幀中會包含功能程式碼和資料,比如功能程式碼“01”用來讀取離散量線圈的狀態。從裝置接到請求後,進行應答並把訊息反饋主裝置。下圖是典型的主從裝置的請求-應答機制:在主從裝置的通訊中,可以使用ASCII模式或者RTU模式。 在ASCII(American Standard Code for Information Interchange)傳輸模式下,訊息幀以英文冒號(“:”,ASCII 3A Hex)開始,以回車和換號(CRLF,ASCII 0D and 0A Hex)符號結束,允許的傳輸的字符集為十六進位制的0~9和A~F;網路中的從裝置監視傳輸通路上是否有英文冒號(“:”),如果有的話,就對訊息幀進行解碼,檢視訊息中的地址是否與自己的地址相同,如果相同的話,就接收其中的資料;如果不同的話,則不予理會。在ASCII模式下,每個8位的位元組被拆分成兩個ASCII字元進行傳送,比如十六進位制數0xAF ,會被分解成ASCII字元“A”和“F”進行傳送,傳送的字元量比RTU增加一倍。ASCII模式的好處是允許兩個字元之間間隔的時間長達1s而不引發通訊故障,該模式採用縱向冗餘校驗(Longitudinal Redundancy Check ,LRC)) 的方法來檢驗錯誤,下面是對ASCII模式的總結:在RTU(Remote Terminal Unit)模式下,每個位元組可以傳輸兩個十六進位制字元,比如十六進位制數0xAF,直接以十六進位制0xAF(二進位制:10101111)進行傳送,因此它的傳送密度比ASCII模式高一倍;RTU模式採用迴圈冗餘校驗(CRC),下面是對RTU模式的總結:好了,關於Modbus協議下ASCII模式和RTU模式的不同,我們就先聊到這裡,更多Modbus的內容在後續文章陸續介紹,歡迎登陸方正智芯官網(http://www.founderchip.com)瀏覽更多內容。