前言
昆仑通态:HMI 禾川:HCQ1基于Codesys的运动控制器 前几天,在网上逛的时候,在信捷官网发现了一个DLL压缩包,名字叫“ModbusCom.zip”,是一个关于ModbusTCP通讯的dll和cs源文件(C#) 感觉比较有趣,就下载下来了,有时间搞一搞看看里面有啥。 今天,忽然想起来还有这个文件,于是使用Visual Studio新建了一个测试工程,加载了ModbusCom.dll文件和ModbusExample.cs文件看看怎么用。 硬件环境搭建
首先说一下我的测试平台,如下图所示。 使用PC写C#上位机程序,通过WIFI经过无线路由器,读写禾川HCQ1-1300控制器的数据。 通过昆仑通态MCGS触摸屏通过有线连接到路由器,寻址到禾川PLC,用于读写监控PLC寄存器。 上位机C#程序编写
网线连接好,一切准备就绪了,打开Visual Studio新建工程,加载类文件。虽然刚加载有报错,还好解决了。 类文件“ModbusExample”中只有两个方法: 一个是“public void ModbusTcpTest()”//针对标准ModbusTcp协议的调用 另一个是“public void MTcpExtendTest()”//针对信捷ModbusTcp扩展协议的调用 在主程序中创建ModbusExample的实例化后,调用ModbusTcpTest()方法即可。 ModbusExample HCQ1 = new ModbusExample(); HCQ1.ModbusTcpTest(); “ModbusExample.cs”文件主要包含以下内容: 包括指定通讯地址、通讯端口号,由于这个类库默认端口号为502,同禾川HCQ1的ModbusTCP设备的端口号一致,在此保持默认。 HCQ1默认的PORT1口的IP地址为“192.168.188.100”需要执行构造函数时写入IP地址。 超时时间默认不改。 下面就是读取线圈、读取字寄存器、写线圈、写字寄存器的一些调用,修改传递的参数即可。
其中: HCQ1中的%IX,对应ComObjType.InCoil HCQ1中的%QX,对应ComObjType.Coil HCQ1中的%MW,对应ComObjType.D HCQ1中的%MB, 对应ComObjType.Reg 在此需要对应好,防止出错。 100+篇原创文章【公众号-我的原创】
EPLAN部件库下载链接 EPLAN激活教程 西门子作为OPC UA服务端 西门子制作HMI页面切换效果
PLC侧程序编写
PLC侧要写程序,主要是写用来被读取,以及用于监控的程序 在GVL全局变量中,创建变量
D数组,用于上位机读取的,所以给它赋初值。
D100数组,用于上位机写入的,以及HMI监控的,无需赋值。
程序中创建本地IO"GeneralIO"以及创建“ModbusTcpDevice”开放通讯接口。
创建好之后,将"GeneralIO"改为“启用2”,“ModbusTcpDevice”无需配置。
昆仑通态HMI侧程序编写
然后再做一下昆仑通态的界面,随便摆放几个控件通讯上即可。
最后调试
这样,上位机C#程序、上位机HMI程序、下位机PLC程序就做好了。程序下载到PLC中,执行监控。 执行上位机程序后,D100被写入数据
使用HMI,将%MW102写入浮点类型数据“3.369”,通过 “MTcpObj.ReadRegsFloat”去读取浮点数据,添加断点监控, 得到以下数据:
程序中,也有写线圈的动作。在此写入%QX0.0/%QX0.1/%QX0.2/%QX0.3分别为TRUE、TRUE、FALSE、TRUE 监控HMI界面,QX0.0、QX0.1、QX0.3分别点亮。
程序编写成功,通讯成功,以后可以在此基础上进行二次开发。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |