串口通訊modbus協(xié)議
串口通訊
RS232:
全雙工,電纜最長15.2m發(fā)送TXD;接收RXD
邏輯1(MARK)=-3V~-15V邏輯0(SPACE)=+3~+15V
RS485:
半雙工,電纜最長1200m線制:兩線,A、B
多臺設(shè)備連接:所有A并聯(lián),所有B并聯(lián)
RS485轉(zhuǎn)USB。安裝完驅(qū)動后會多一個串口(COM口),可在屬性=》高級中修改串口號COMN。
串口(及modbus)配置
停止位有校驗時1Bit,無校驗時2Bit其他
TTL(晶體管-晶體管邏輯電平)電平信號。+5V等價于邏輯“1”,0V等價于邏輯“0”
modbus-RTU協(xié)議:
RS485是硬件,modbus-RTU是協(xié)議。一般RS485上跑的也就是modbus-RTU,所以被混為一談。
MODBUS協(xié)議在一根通訊線上使用主從應(yīng)答式連接(半雙工)主機查詢,從機回應(yīng)
modbus-RTU幀結(jié)構(gòu)
一般主機查詢
常用功能碼
數(shù)據(jù) 設(shè)備不同,數(shù)據(jù)位數(shù)不同 起始地址:0001
默認情況下先發(fā)地位,后發(fā)高位
錯誤校驗(CRC) 用串口調(diào)試軟件計算
有的通訊CRC高字節(jié)在前,有的通訊CRC高字節(jié)在后
Modbus通訊和串口通信校驗位
利用Modbus協(xié)議可以實現(xiàn)設(shè)備間的數(shù)據(jù)交換。Modbus通訊理論上支持4種ModiconPLC地址,即0*、1*、3*和4*四種,分別表示開出(中間線圈)、開入、模入、模出(中間寄存器)等數(shù)據(jù)地址。與西門子或其它設(shè)備中的開入、開出、模入、模出地址完全不對應(yīng)。可以理解為0*和1*對應(yīng)位地址的讀寫操作,3*和4*字地址的讀寫操作。
此處0*、1*、3*和4*表示長度有的為5位數(shù)字、有的為6位,其實和Modbus通訊無關(guān),只是和軟件的表示方式有關(guān)。
按照Modbus通訊時最常用的是RTU讀請求格式:
從站地址(1個字節(jié))、功能代碼(1個字節(jié))、從站數(shù)據(jù)起始地址(2個字節(jié))、讀數(shù)據(jù)長度(2個字節(jié))、CRC校驗(2個字節(jié))
可見,只需設(shè)置起始從站數(shù)據(jù)區(qū)起始地址和通訊長度即可。
特別注意,Modbus地址遵從IEC1的地址標(biāo)準(zhǔn)(最小地址為*1),西門子遵從IEC0的標(biāo)準(zhǔn)(最小地址為0,如M0.0)。因此,不同標(biāo)準(zhǔn)的地址做通訊時需要做地址變換,即加1的操作。
在串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當(dāng)然沒有校驗位也是可以的。對于偶和奇校驗的情況,串口會設(shè)置校驗位(數(shù)據(jù)位后面的一位),用一個值確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對于偶校驗,校驗位為0,保證邏輯高的位數(shù)是偶數(shù)個。如果是奇校驗,校驗位1,這樣就有3個邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗。這樣使得接收設(shè)備能夠知道一個位的狀態(tài),有機會判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。
-
串口通信
+關(guān)注
關(guān)注
34文章
1627瀏覽量
55739 -
modbus通訊
+關(guān)注
關(guān)注
0文章
13瀏覽量
1707
發(fā)布評論請先 登錄
相關(guān)推薦
評論