S7 200與單片機通過(guò)Modbus 485 通訊,知道從站單片機地址為01 03 01 01 31 88,01 02 01 00 00 02 F8 37,怎么確定Modbus地址
1、
01 03 01 01 31 88 不是MODBUS RTU 03 功能碼的請求幀,最后兩個(gè)字節31 88是CRC 校驗,驗證了一下確實(shí)是前面四個(gè)字節 01 03 01 01 的檢驗碼。應該還有兩個(gè)字節的數據個(gè)數才符合 MDOBUS RTU 03 功能碼的請求幀,是不是貼錯了。就這個(gè)解釋如下
01 03 01 01 這四個(gè)字節:
第1個(gè)字節 01 是設備地址
第2個(gè)字節 03 是功能碼,讀保持寄存器
第3、4個(gè)字節 01 01 是保持寄存器地址,先轉換成十進(jìn)制,那就是257,再加上1就是 258,然后在最前面加上保持寄存器地址標識 4,并湊夠5位數,則是 40258。至于 40258 是200 側保持區那一個(gè)那還要看200 側的保持寄存器區是怎么定義的。
2、
01 02 01 00 00 02 F8 37 經(jīng)驗證是完整的,讀從站的數字量輸入。
第1個(gè)字節 01 是設備地址
第2個(gè)字節 02 是功能碼,讀從站數字量輸入
第3、4個(gè)字節 01 00,就是地址,轉換成十進(jìn)制,就是 256,再加上 1,則為 257,再在最前面加上區域標識,則地址為 10257。
257 是不是超出了 200 的過(guò)程映像區的大???
https://www.ad.siemens.com.cn/productportal/Prods/s7-200-portal/MicroPower2013/Smart%20SMS/019.html
第一個(gè)數據為站地址,第二個(gè)是功能嘛,所以單片機應該站地址是1,使用03功能碼讀單片機數據,數據開(kāi)始地址01,PLC中地址40001+1=40002,數據長(cháng)度1,直接調用MSG指令讀即可。
第二個(gè)指令是讀單片機輸入區,站地址1,數據地址10001+100HEX=10257,數據長(cháng)度2,用MSG指令讀即可。
注意端口波特率設置,為MODBUS庫指令分配好V區。
電話(huà):13818569113
郵箱:13818569113@139.com
網(wǎng)址:http://m.youmiyou.cn/
地址:上海青浦區北青公路7171號111-112室