[禾川] 信捷+昆仑通态+禾川写了个上位机DEMO

[复制链接]
查看420 | 回复0 | 2024-7-21 14:48:13 | 显示全部楼层 |阅读模式

前言


信捷:C#通讯类库

昆仑通态: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分别点亮。


程序编写成功,通讯成功,以后可以在此基础上进行二次开发。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则