西门子1200和埃斯顿机器人ModbusTCP通讯

 

 


REGION 通讯参数
#通讯参数.InterfaceId := 64; //本地接口的硬件标识符(值范围:0 到 65535)
#通讯参数.ID := 1;//该指令“MB_CLIENT”的每个实例都必须使用唯一的 ID。
#通讯参数.ConnectionType := 16#0B;//对于 TCP,选择 11(十进制)。
#通讯参数.ActiveEstablished := TRUE;//对于主动连接建立,应选择 TRUE。
#通讯参数.RemoteAddress.ADDR[1] := 192;//连接伙伴(Modbus 服务器)的 IP 地址
#通讯参数.RemoteAddress.ADDR[2] := 168;
#通讯参数.RemoteAddress.ADDR[3] := 0;
#通讯参数.RemoteAddress.ADDR[4] := 30;
#通讯参数.RemotePort := 502;//远程连接伙伴的端口号
#通讯参数.LocalPort := 0;//本地连接伙伴的端口号:
END_REGION

#链接成功_P(CLK:=#MB_CLIENT_Instance.Connected);

IF #链接成功_P.Q THEN
#请求1 := 0;
#请求2 := 0;
#读字状态.DONE := 0;
#读字状态.BUSY := 0;
#读字状态.ERROR := 0;
#写字状态.DONE := 0;
#写字状态.BUSY := 0;
#写字状态.ERROR := 0;
#请求1 := 1;
END_IF;


REGION 读字
#MB_CLIENT_Instance(REQ := #请求1,
DISCONNECT := 0,
MB_MODE := 0,
MB_DATA_ADDR := 40001,
MB_DATA_LEN := 51,
MB_DATA_PTR := P#DB702.DBX0.0 WORD 51,
CONNECT := #通讯参数,
DONE => #读字状态.DONE,
BUSY => #读字状态.BUSY,
ERROR => #读字状态.ERROR,
STATUS => #读字状态.STATUS);

IF #读字状态.DONE OR #读字状态.ERROR THEN
#请求1 := 0;
#请求2 := 1;
END_IF;
END_REGION

 


REGION 写字
#MB_CLIENT_Instance(REQ := #请求2,
DISCONNECT := 0,
MB_MODE := 1,
MB_DATA_ADDR := 40052,
MB_DATA_LEN := 49,
MB_DATA_PTR := P#DB702.DBX102.0 WORD 49,
CONNECT := #通讯参数,
DONE => #写字状态.DONE,
BUSY => #写字状态.BUSY,
ERROR => #写字状态.ERROR,
STATUS => #写字状态.STATUS);

IF #写字状态.DONE OR #写字状态.ERROR THEN
#请求2 := 0;
#请求1 := 1;
END_IF;
END_REGION

 

posted @ 2022-06-29 14:41  CSF践行  阅读(3422)  评论(1编辑  收藏  举报