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

目录

一、测试任务

二、测试环境

三、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操作说明

批量读寄存器

        /// <summary>
        /// 读取批量寄存器值:122个寄存器 1300-1421
        /// </summary>
        /// <returns></returns>
        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;
        }

写单个寄存器

        /// <summary>
        /// MW860写值
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        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

 

汇川H3U PLCCANlink通信模块是常用的工控设备之间进行数据传输通信的关键组件。下面是关于完整的汇川H3U PLCCANlink通信样例程序的回答: 要实现汇川H3UCANlink通信,首先需要确保正确的硬件连接。CANlink模块应该正确安装在H3U PLC的通信接口上,并且CANlink的CAN接口应该其他设备(如电机驱动器或触摸屏)进行连接。可以使用CANlink配置软件设置CANlink的通信参数。 然后,可以使用H3U PLC的程序软件(如基于GX Works2的MELSOFT)来编写通信程序。以下是一个简单的程序示例: 1. 在程序中添加必要的设置声明,例如定义CANlink模块的通信端口: ``` M8001 D[20] // 定义CANlink通信端口为M8001 ``` 2. 在主程序中编写通信逻辑。例如,读取其他设备发送的数据: ``` LD M8001 // 读取CANlink通信端口的数据 MOV K10 D0 // 将读取的数据存储到D0寄存器中 ``` 3. 写入数据到其他设备。例如,将数据发送给电机驱动器: ``` MOV D1 K20 // 将数据20存储到D1寄存器中 ST M8001 // 将D1寄存器的数据写入CANlink通信端口 ``` 4. 根据实际需求,可以添加其他逻辑功能,如报错处理、状态监测等。 需要注意的是,以上代码只是示例,实际的通信程序会根据具体需求设备不同而有所变化。因此,在编写通信程序之前,确保充分了解设备的通信协议相关文档,以便正确设置配置通信参数。 总之,通过正确设置硬件连接并编写合适的通信程序,汇川H3U PLCCANlink通信模块可以实现其他设备之间的数据交互通信。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Big_潘大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值