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