政务网站集约化建设要求弥勒市建设局网站
目录
一、测试任务
二、测试环境
三、PLC工程
1、组态配置
2、ip地址、端口号
3、全局变量定义
四、C#端Winform程序创建
1创建主界面
2、创建子窗口
3、运行生成,界面效果
4、Modebus协议说明
5、Modebus操作说明
六、测试
1、寄存器读测试
2、MW1300寄存器的BIT位
3、写寄存器测试
4、PLC断电或者断网
七、工程下载连接
一、测试任务
1、PLC作为ModebusTCP端,端口号都是502,PC端上位机软件作为TcpClient去连接多台PLC。PC端读写PLC寄存器。
2、PC端在有的PLC断电、断网的情况下,界面不会阻塞卡死,对其它PLC读写正常。在断网的PLC重新连接网络可以手动连接。
二、测试环境
1、PLC设备:汇川AM402,编程软件InProShop(v1.7.3)
2、PC端:Win10系统、VS2013编程软件。
三、PLC工程
1、组态配置

2、ip地址、端口号
192.168.1.88
502


3、全局变量定义
VAR_GLOBALStateArray 		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协议说明
注意:批量读寄存器,尽量不要太多,一般一次100个左右
            //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个寄存器 800-1400/// </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-1422return 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;} 
六、测试
PLC只有一台。
1、寄存器读测试
读寄存器范围:mw1300-mw1500
给MW1300-MW1306如下赋值

C#读取到的值

2、MW1300寄存器的BIT位


3、写寄存器测试
写寄存器范围:mw860-mw868
C#端写操作

PLC端接收到的

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


七、工程下载连接

分别是Winform程序PLC程序
https://download.csdn.net/download/panjinliang066333/87523222
