目录
一、测试任务
二、测试环境
三、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文章来源:https://www.toymoban.com/news/detail-433312.html
文章来源地址https://www.toymoban.com/news/detail-433312.html
到了这里,关于汇川AM402、H3U和上位机C#ModebusTcp通讯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!