汇川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、组态配置

汇川AM402、H3U和上位机C#ModebusTcp通讯_第1张图片

2、ip地址、端口号

192.168.1.88

502

汇川AM402、H3U和上位机C#ModebusTcp通讯_第2张图片

汇川AM402、H3U和上位机C#ModebusTcp通讯_第3张图片

 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控件中即可。

汇川AM402、H3U和上位机C#ModebusTcp通讯_第4张图片

 2、创建子窗口

汇川AM402、H3U和上位机C#ModebusTcp通讯_第5张图片

 3、运行生成,界面效果

汇川AM402、H3U和上位机C#ModebusTcp通讯_第6张图片

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、H3U和上位机C#ModebusTcp通讯_第7张图片

 定义存储接收数据的长度

汇川AM402、H3U和上位机C#ModebusTcp通讯_第8张图片

六、AM402测试

PLC只有一台。

1、寄存器读测试

读寄存器范围:mw1300-mw1500

给MW1300-MW1306如下赋值

 C#读取到的值

汇川AM402、H3U和上位机C#ModebusTcp通讯_第9张图片

 2、MW1300寄存器的BIT位

汇川AM402、H3U和上位机C#ModebusTcp通讯_第10张图片

汇川AM402、H3U和上位机C#ModebusTcp通讯_第11张图片

3、写寄存器测试

写寄存器范围:mw860-mw868

C#端写操作

汇川AM402、H3U和上位机C#ModebusTcp通讯_第12张图片

 PLC端接收到的

汇川AM402、H3U和上位机C#ModebusTcp通讯_第13张图片

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

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

汇川AM402、H3U和上位机C#ModebusTcp通讯_第14张图片

汇川AM402、H3U和上位机C#ModebusTcp通讯_第15张图片

 七、H3U读写测试

1、读寄存器测试

读123个存器,从D1300到D1422

汇川AM402、H3U和上位机C#ModebusTcp通讯_第16张图片

2、写寄存器测试

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

汇川AM402、H3U和上位机C#ModebusTcp通讯_第17张图片

八、工程下载连接

1、AM402测试程序

汇川AM402、H3U和上位机C#ModebusTcp通讯_第18张图片

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

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

2、H3U测试程序

aaa文件夹是PLC测试程序

汇川AM402、H3U和上位机C#ModebusTcp通讯_第19张图片

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

 

你可能感兴趣的:(汇川CodeSys,C#,c#,汇川,PLC)