本篇文章的目的在于用實例說明西門子1200做Server和Client以及AM401做Client和Server相互通信
1200 IP地址 :192.168.1.190
AM401 IP地址 :192.168.1.88
一、 1200做Server AM401做Client
MB_HILD_REG需要用指針型
程序調(diào)用比較簡單,重點是CONNECT參數(shù)的設置
Server做被動連接,ActiveEstablished為0
IP地址這里設置為0.0.0.0 RemotePort 設為0,意味著不指定特定的Client連接,即可以有多個Client的任意端口連接
AM401 Client 設置
AM401做Client需要勾選ModbusTCP主站,即AM401做主站,1200為從站 從站端口設502
然后配置ModbusTCP的數(shù)據(jù)地址
AM401這里簡單設置保持寄存器的0X0000-0X000A為讀取1200 Modbus 40001-40010發(fā)送的數(shù)據(jù)
映射到DB數(shù)據(jù)為DB3.DBW0-DB3.DBW18
AM401 0X0010-0X001A為寫入數(shù)據(jù)并發(fā)送到1200 映射到DB數(shù)據(jù)塊為 DB3.DBW32-DB3.DBW50
需要注意的是AM401的地址是0X 即16進制數(shù)據(jù)
打開主站使能SM3001
監(jiān)控的結果:
二、 1200做Client AM401做Server
這里只做簡單的1200讀AM401的10個保持型寄存器,寫的類似
這里的MD_DATA_ADDR為了不跟上面的Server沖突把地址放到Modbus地址的40201對應AM401的%MW200,做Client要主動連接,ActiveEstablished要設為True
IP為AM401地址192.168.1.88 端口502
一個容易忽視的地方是ID,因為1200即做Server又做Client這里的ID一定不能跟ServerDB數(shù)據(jù)塊里的ID重復,否則會造成異常,SeverDB的ID設1,ClientDB的ID設為10
AM401做Server設置很簡單,只需要再硬件選擇ModbusTCP從站即可
監(jiān)控結果