
【資料圖】
Modbus在7層OSI參考模型中屬于第七層應(yīng)用層,數(shù)據(jù)鏈路層有兩種:基于標(biāo)準(zhǔn)串口協(xié)議和TCP協(xié)議,物理層可使用3線232、2線485、4線422,或光纖、網(wǎng)線、無線等多種傳輸介質(zhì)。
Modbus協(xié)議是一種請(qǐng)求/應(yīng)答方式的交互過程,主機(jī)主動(dòng)發(fā)起通訊請(qǐng)求,從機(jī)響應(yīng)主機(jī)的請(qǐng)求,從機(jī)在沒有收到主機(jī)的請(qǐng)求時(shí),不會(huì)主動(dòng)發(fā)送數(shù)據(jù),從機(jī)之間不會(huì)進(jìn)行通訊。
Modbus協(xié)議規(guī)定,進(jìn)行讀寫操作的數(shù)據(jù)類型,按照讀寫屬性和類型可分為以下4種:
離散量輸入(Discretes Input ):1位,只讀線圈(Coils):1位,讀寫輸入寄存器(Input Registers ):16位,只讀保持寄存器(Holding Registers):16位,讀寫3種傳輸模式
基于串口的Modbus-RTU數(shù)據(jù)按照標(biāo)準(zhǔn)串口協(xié)議進(jìn)行編碼,是使用最廣泛的一種Modbus協(xié)議,采用CRC-16_Modbus校驗(yàn)算法。基于串口的Modbus-ASCII所有數(shù)據(jù)都是ASCII格式,一個(gè)字節(jié)的原始數(shù)據(jù)需要兩個(gè)字符來表示,效率低,采用LRC校驗(yàn)算法。基于網(wǎng)口的Modbus-TCPModbus-TCP基于TCP/IP協(xié)議,占用502端口,數(shù)據(jù)幀主要包括兩部分:MBAP(報(bào)文頭)+PDU(幀結(jié)構(gòu)),數(shù)據(jù)塊與串行鏈路是一致的。大部分人習(xí)慣分為兩種:基于串行鏈路的和基于以太網(wǎng)TCP/IP的
所以當(dāng)我們提及Modbus協(xié)議時(shí),要確定是哪種模式:RTU、ASCII或TCP
Modbus RTU和Modbus ASCII使用相同的協(xié)議。唯一的區(qū)別是通過線路傳輸?shù)淖止?jié)用RTU表示為二進(jìn)制,用Modbus RTU表示為可讀ASCII。關(guān)于RTU的重要注意事項(xiàng)是RTU消息沒有Start_of_text指示。通信中的接收方 使用“靜默”時(shí)間以確定新消息的開始。ASCII確實(shí)有一個(gè)文本開頭標(biāo)記。二進(jìn)制消息比ASCII短,因此理論上傳輸/接收速度更快。您可能很高興在HMI / SCADA中看到大約100 ms的更新速率,并且可以選擇任一通信。
即:
使用RTU是可能的如果RTU在WinNT上出現(xiàn)超時(shí)問題或者使用300 bps或撥號(hào)調(diào)制解調(diào)器等慢速通信媒體時(shí)使用ASCII,大多數(shù)用于Modbus的OPC服務(wù)器都支持ASCII和RTU通信。標(biāo)簽: 發(fā)送數(shù)據(jù) 可以選擇 傳輸模式