汇川AM402、H3U和上位机C#ModebusTcp通讯

您所在的位置:网站首页 汇川plc的ip地址 汇川AM402、H3U和上位机C#ModebusTcp通讯

汇川AM402、H3U和上位机C#ModebusTcp通讯

2024-02-22 09:25| 来源: 网络整理| 查看: 265

目录

一、测试任务

二、测试环境

三、PLC工程

1、组态配置

2、ip地址、端口号

 3、全局变量定义

四、C#端Winform程序创建

1创建主界面

 2、创建子窗口

 3、运行生成,界面效果

4、Modebus协议说明

5、Modebus操作说明

六、AM402测试

1、寄存器读测试

 2、MW1300寄存器的BIT位

3、写寄存器测试

4、PLC断电或者断网后重新连接

 七、H3U读写测试

1、读寄存器测试

2、写寄存器测试

八、工程下载连接

一、测试任务

1、PLC作为ModebusTCP端,端口号都是502,PC端上位机软件作为TcpClient去连接多台PLC。PC端读写PLC寄存器。

2、PC端在有的PLC断电、断网的情况下,界面不会阻塞卡死,对其它PLC读写正常。在断网的PLC重新连接网络可以手动连接。

二、测试环境

1、AM402系列PLC设备:汇川AM402,编程软件InProShop(v1.7.3)

2、H3U系列PLC设备:会场H3U-322MT,编程软件AutoShop v4.6.3

3、PC端:Win10系统、VS2013编程软件。

备注:①通讯协议方面AM402和H3U是一样的,上位机代码通用。

②MW寄存器对应D寄存器,比如MW1000则对应D1000。需要注意的是MW寄存器范围是0-65535、D寄存器范围 ±32768。

一次最多可以读123个寄存器操作。

三、PLC工程 1、组态配置

2、ip地址、端口号

192.168.1.88

502

 3、全局变量定义 VAR_GLOBAL StateArray AT%MW1300 :ARRAY[1..200] OF WORD; _MW1300Bit0 AT %MX2600.0 :BOOL; _MW1300Bit1 AT %MX2600.1 :BOOL; _MW1300Bit2 AT %MX2600.2 :BOOL; _MW1300Bit3 AT %MX2600.3 :BOOL; _MW1300Bit4 AT %MX2600.4 :BOOL; _MW1300Bit5 AT %MX2600.5 :BOOL; _MW1300Bit6 AT %MX2600.6 :BOOL; _MW1300Bit7 AT %MX2600.7 :BOOL; _MW1300Bit8 AT %MX2600.8 :BOOL; _MW1300Bit9 AT %MX2600.9 :BOOL; _MW1300Bit10 AT %MX2600.10 :BOOL; _MW1300Bit11 AT %MX2600.11 :BOOL; _MW1300Bit12 AT %MX2600.12 :BOOL; _MW1300Bit13 AT %MX2600.13 :BOOL; _MW1300Bit14 AT %MX2600.14 :BOOL; _MW1300Bit15 AT %MX2600.15 :BOOL; _MW860 AT%MW860 :WORD; _MW861 AT%MW861 :WORD; _MW862 AT%MW862 :WORD; _MW863 AT%MW863 :WORD; _MW864 AT%MW864 :WORD; _MW865 AT%MW865 :WORD; _MW866 AT%MW866 :WORD; _MW867 AT%MW866 :WORD; _MW868 AT%MW866 :WORD; END_VAR 四、C#端Winform程序创建 1创建主界面

在主界面中添加两个Panel控件,用以加载两台PC的Client窗口界面。使用Panel的优点是,对于多台PLC设备,只需要创建一个子窗口加载到多个Panel控件中即可。

 2、创建子窗口

 3、运行生成,界面效果

4、Modebus协议说明

 注意:批量读寄存器,尽量不要太多,一般一次最多123个

//MBAP报文头 //buffer[0] 事务处理标识符Hi //buffer[1] 事务处理标识符Lo //buffer[2] 协议标识符 0x00 //buffer[3] 协议标识符 0x00 //buffer[4] 长度 //buffer[5] 长度 即从buffer【6】--校验符前的长度 //buffer[6] 单元标识符 建议:在采用0xFF作为“单元标识符”的无效值 //请求数据 //buffer[7] 功能码(0x03) 读多个寄存器 //buffer[8] 起始地址 //buffer[9] 起始地址 //buffer[10] 寄存器数量1至125(0x7D) //buffer[11] 寄存器数量1至125(0x7D) 5、Modebus操作说明

批量读寄存器

/// /// 读取批量寄存器值:122个寄存器 1300-1421 /// /// public byte[] ReadMultiCmd() { readbuffer[5] = 0x06; // 长度 readbuffer[7] = 0x03; //功能码 readbuffer[8] = 0x05; //起始地址-高位 readbuffer[9] = 0x14; //起始地址-低位 readbuffer[10] = 0x00; readbuffer[11] = 0x7A; //122个寄存器 1300-1422 return readbuffer; }

写单个寄存器

/// /// MW860写值 /// /// /// public byte[] Write_MW860(int value) { writebuffer[5] = 0x06; // 长度 writebuffer[7] = 0x06; //功能码 writebuffer[8] = 0x03; //起始地址-高位 writebuffer[9] = 0x5C; //起始地址-低位 d860 writebuffer[10] = 0x00; //寄存器值 writebuffer[11] = (byte)value; return writebuffer; }

封装Tcp Client类,接收和发送缓冲区设置大一点

 定义存储接收数据的长度

六、AM402测试

PLC只有一台。

1、寄存器读测试

读寄存器范围:mw1300-mw1500

给MW1300-MW1306如下赋值

 C#读取到的值

 2、MW1300寄存器的BIT位

3、写寄存器测试

写寄存器范围:mw860-mw868

C#端写操作

 PLC端接收到的

4、PLC断电或者断网后重新连接

PLC重新上电后接入网络,只需要点击重新连接按钮即可。

 七、H3U读写测试 1、读寄存器测试

读123个存器,从D1300到D1422

2、写寄存器测试

写寄存器,单个寄存器写操作

八、工程下载连接

1、AM402测试程序

 分别是Winform程序PLC程序,PLC程序是AM402工程

https://download.csdn.net/download/panjinliang066333/87523222

2、H3U测试程序

aaa文件夹是PLC测试程序

 https://download.csdn.net/download/panjinliang066333/87606437

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3