modbus

作者: 二胖爸 | 来源:发表于2017-06-05 02:41 被阅读0次

    http://www.rtaautomation.com/technologies/modbus-tcpip/10855017

    https://infosys.beckhoff.com/english.php?content=../content/1033/ek9000/index.html&id=
    client事务流程:
    1.用connect() 建立TCP/IP 连接
    2.对将要发送的Modbus请求,进行编码(编码方式见下一环节)
    3.提交Modbus请求,包括6字节 modbus tcp前缀。整个请求作为一个buffer通过send()发送
    4.等待同一个TCP/IP连接返回应答消息。在这里,用select增加一个超时判断

    1. 使用recv()读取应答消息,应答的头6字节表明应答消息的实际长度
      6.使用recv()读取剩下内容
    2. 如果没有进一步的消息请求,关闭连接。通常每个客户端等待连接时间为1s

    server端事务流程:
    1.使用listen()监听502端口,等待收到请求或者连接关闭
    2.当收到新的链接请求,采用accept()接受请求,并产生一个新的进程来处理链接
    3.分析头部,如果出错,比如,协议区域不是0,或者长度大于256,于是UNILATERELLY CLOSE THE CONNECTION. 这是server端遇到TCP/IP错误时正确的应答消息。

    1. 用recv()读取剩下信息,长度未知。可挂起当前进程等待获取长度后再操作
      5.生成应答消息头部,将请求的第0 和1 字节拷贝为事务标示,然后重新计算长度
    2. 提交请求,通过send() 发送
    3. 返回,等待下一个消息

    相关文章

      网友评论

          本文标题:modbus

          本文链接:https://www.haomeiwen.com/subject/bobbfxtx.html