ModbusTCP通讯在工业中应用很广泛,是一种工业现场总线标准协议。在做ModbusTCP通讯时候,分为主站client和从站server,客户端主动建立连接,服务器等待连接。此案例展示的是PLC作为服务器,PC作为上位机客户端。读取PLC的Q0.0。
第一步:在TIA的OB1中建立SERVER程序。直接使用西门子的MODBUSTCP通讯库。
第二步:填写对应的数据,主要包括请求、保持性寄存器、连接参数。其中CONNECT需要填入TCON_IP_V4结构类型的参数。只需要建立好参数即可。此处LocalPort:需要记录一下,在客户端通讯中需要填写。
第三步:新建PLC测试程序,让Q0.0置为TRUE。通过下载到PLC中,完成PLC配置。PLC的IP地址需要记录一下,在客户端通讯中需要填写。
第四步:打开Visualstudio,此处新建.NETFramework桌面应用程序
第五步,新建窗体,在窗体中关联好几个控件,如下图,其中IP地址即是PLC的IP地址,端口号即是LocalPort:,此处我们做默认选择。接下来看连接代码。
第五步:编写通讯代码,此处原理我们通过Socket建立与PLC的通讯连接,需要声明引用system.net.socket;建立通讯连接方法如下图:
断开连接方法如下图:
通讯方法中,举例0X01功能码,通过研究ModbusTCP报文了解到:
0x01:读线圈
在从站中读1~个连续线圈状态,ON=1,OFF=0
请求:MBAP功能码起始地址H起始地址L数量H数量L(共12字节)
响应:MBAP功能码数据长度数据(一个地址的数据为1位)
如:在从站0x01中,读取开始地址为0x的线圈数据,读1位Tx:-
回:数据长度为0x01个字节,数据为0x01,返回值为1Rx:-
此处我们只需要将TX查询报文发送出去,同时接收反馈的报文即可。
解析报文代码如下,此处我们在解析报文之前,可以验证返回报文的字节长度。单元标识符,以用来验证返回报文正确性。此处可以自行添加验证代码。
第六步:按钮关联读取和解析方法,测试,建立连接,将数据查询出来即可。
在调试和编写代码的时候,可能会出现BUG。需要先理解协议和原理,实践起来就会变得很方便。
喜欢本文可以点赞+转发~谢谢支持。
预览时标签不可点收录于话题#个上一篇下一篇