• 西门子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

  • 相关阅读:
    Oracle ref cursor和sys_refcursor
    一些命令可以帮您了解Linux 操作系统用户信息
    Linux 6上使用UDEV绑定共享存储
    Oracle VirtualBox 问题汇总
    Linux 常用操作
    CentOS 7 运行级别切换
    Oracle 更新Opatch、打补丁
    django rest framework restful 规范
    CBV FBV rest framework
    CRM
  • 原文地址:https://www.cnblogs.com/csflyw/p/16423355.html
Copyright © 2020-2023  润新知