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

news2024/9/22 17:20:29

目录

一、测试任务

二、测试环境

三、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_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协议说明

 注意:批量读寄存器,尽量不要太多,一般一次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-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;
        }

六、测试

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件著作权登记申请表填错之后如何修改?软著登记官费有没有续费或年费?软件登记常见问题汇总

什么是计算机软件&#xff1f; 计算机软件是指计算机程序及其有关文档。计算机程序是指能实现一定功能的代码化指令序列&#xff0c;或者符号化语句序列。文档指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表&#xff0c;如程序设…

centos7如何远程连接Navicat数据库?

1、登录centos7&#xff0c;启动mysql服务 [rootlocalhost ~]# systemctl start mysqld 2、设置mysql服务开机自启 [rootlocalhost ~]# systemctl enable mysqld [rootlocalhost ~]# systemctl daemon-reload 3、查看mysql服务状态 4、若未更改初始密码&#xff0c;若已更改…

4.基于Label studio的训练数据标注指南:情感分析任务观点词抽取、属性抽取

情感分析任务Label Studio使用指南 1.基于Label studio的训练数据标注指南&#xff1a;信息抽取&#xff08;实体关系抽取&#xff09;、文本分类等 2.基于Label studio的训练数据标注指南&#xff1a;&#xff08;智能文档&#xff09;文档抽取任务、PDF、表格、图片抽取标注等…

网络协议(九):应用层(域名、DNS、DHCP)

网络协议系列文章 网络协议(一)&#xff1a;基本概念、计算机之间的连接方式 网络协议(二)&#xff1a;MAC地址、IP地址、子网掩码、子网和超网 网络协议(三)&#xff1a;路由器原理及数据包传输过程 网络协议(四)&#xff1a;网络分类、ISP、上网方式、公网私网、NAT 网络…

听说你没法在 JRE 中使用 arthas?不,你可以

作者&#xff1a;卜比 本文是《容器中的 Java》系列文章之 5/n &#xff0c;欢迎关注后续连载 &#x1f603; 。 JVM如何获取当前容器的资源限制&#xff1f;——容器中的Java 1Java Agent踩坑之appendToSystemClassLoaderSearch问题——容器中的Java 2让 Java Agent 在 Drag…

SEO 如何提升网站权重?

关于SEO如何提高网站权重&#xff0c;米贸搜整理了以下内容&#xff0c;希望对大家有所帮助&#xff1a;1. 网站不能都使用收藏。有些站长&#xff0c;在网站上线之前&#xff0c;没有充分考虑&#xff0c;没有很好地定位网站&#xff0c;网站内容的来源从哪里来&#xff0c;就…

全网最详细的软件测试基础知识概述(绝密),一般人我不告诉他

目录 1、什么是软件 2、软件工程的内容 3、软件的生命周期 4、什么是软件测试 5、软件测试的方法 6、软件测试阶段有哪些任务 7、测试的原则 8、软件测试工作流程图 9、自动化测试 10、自动化测试的过程 11、自动化测试的优点 12、自动化测试技术 13、自动化测试的…

EasyExcel 实现写入多个sheet数据进excel模板并下载

目录说明说明 场景说明&#xff1a;对数据库或者其他数据源读取获取到数据&#xff0c;需要写入到excel完成下载功能&#xff0c;其中一个sheet是固定模板&#xff0c;只需要填充值&#xff0c;另一个sheet是动态的表头和数据需要填充。模板如下图&#xff0c;模板提前放在项目…

【简单DP】Children’s Queue

哈哈&#xff0c;独立做出来了&#xff0c;不错感觉这种暴力DP还是很好做的Problem - 1297 (hdu.edu.cn)题意&#xff1a;思路&#xff1a;写了这么多DP&#xff0c;我认识到DP的状态设计是最难的首先看阶段&#xff0c;就是第i个人然后影响决策的因素就是&#xff0c;女生不能…

【docker mysql】docker 快速安装mysql和redis

docker_hub 官网&#xff1a;点击docker_hub仓库地址 docker run --name mysql-bear -p 3307:3306 -e MYSQL_ROOT_PASSWORDmysql-bear -d mysql:latestdocker run --name redis-bear -p 6479:6379 -d redis再次使用docker ps 命令查看即可。 我这里把端口映射到主机上了&…

【Axure教程】橡皮擦的擦除效果——刮奖原型

橡皮擦的擦除效果是系统常见的效果&#xff0c;在可以画图编辑的系统中或者是在抽奖刮奖的系统中非常常见。所以今天和大家分享在Axure中如何制作橡皮刷的效果&#xff0c;我们会议刮奖原型为案例&#xff0c;教大家制作出一个刮奖效果的高保真原型模板。一、效果展示1、鼠标移…

做测试一定要知道的——软件测试流程和测试规范标准文档

目录 1、目的 2、工作范围 3、工作职责 4、测试的流程 5、测试准备阶段 6、测试方法制定阶段 7、测试执行阶段 8、bug管理 9、标准文档 总结感谢每一个认真阅读我文章的人&#xff01;&#xff01;&#xff01; 重点&#xff1a;配套学习资料和视频教学 1、目的 通…

关于Thread.start()后的困惑、imap

在for循环中&#xff0c;接着开thread&#xff0c;开完就start&#xff0c;当时有个困惑&#xff0c;就是比如开的一个thread的这个start执行完&#xff0c;但是这个for循环还没执行完&#xff0c;那程序会跑到for循环的后面逻辑吗&#xff1f;比如下面13行for循环开始开第一个…

浅谈子网掩码、IP地址、网络地址之间关系

文章目录一、什么是子网掩码二、给定IP地址&#xff0c;如何求网络地址网络标识&#xff08;net-id&#xff09;和主机标识&#xff08;host-id&#xff09;计算步骤三、CIDR地址表示方法(Classless Inter Domain Routing)四、IP地址与MAC地址一、什么是子网掩码 在TCP/IP协议…

阿里云云原生每月动态 | 聚焦实战,面向开发者的系列课程全新上线

作者&#xff1a;云原生内容小组 云原生是企业数字创新的最短路径。 《阿里云云原生每月动态》&#xff0c;从趋势热点、产品新功能、服务客户、开源与开发者动态等方面&#xff0c;为企业提供数字化的路径与指南。 本栏目每月更新。 趋势热点 《云原生实战指南》白皮书发布 …

如何使用金山轻维表发送生日祝福、入职纪念日祝福

作为企业HR或行政&#xff0c;如果能在员工生日当天发送一份生日祝福生日礼物&#xff0c;是不是可以给员工强烈的归属感和惊喜&#xff0c;但核查员工生日需要每天对着花名册查询&#xff0c;或单独设置提醒&#xff0c;对HR行政来说又比较繁琐复杂&#xff0c;还经常容易忘&a…

matlab - 特殊矩阵、矩阵求值、稀疏矩阵

学习视频1.特殊矩阵1.1 通用特殊矩阵format % 零矩阵(全0) 幺矩阵(全1) 单位矩阵 % zeros ones eye rand(生成0~1的随机元素) randn(生成均值为1&#xff0c;方差为0的符合正太分布的随机阵)zeros(3) % 3x3的全0方阵 zeros(3, 4) % 3x4的全0矩阵 exA ones(3, 5) % 3x5的…

mapbox-gl实现 2.5D 图层高度编辑器

文章目录前言表达式逻辑mapbox表达式转数学表达式数学表达式转mapbox表达式实现效果前言 mapbox-gl 支持表达式编辑 2.5D 建筑物高度&#xff0c;但是 style 文件原生的表达式很不直观&#xff0c;本文实现一个简单的 2.5D高度图层编辑器&#xff0c;核心是理解mapbox表达式规…

【Sentence Simplification via Large Language Models 论文精读】

Sentence Simplification via Large Language Models 论文精读InformationAbstract1 Introduction2 Related Work3 Sentence Simplification via LLMs4 Experiments4.1 Evaluation Settings4.2 Automatic Evaluation4.3 Human Evaluation4.4 Qualitative Study4.5 Ablation Stu…

开发同城外卖系统源码时应配置哪些功能?外卖系统源码分析

外卖系统大家都不会陌生&#xff0c;我们都会想到某团、某饿这两个行业top&#xff0c;他们已经成为了年轻人手机必备软件之一&#xff0c;而且除了app端外&#xff0c;他们还很贴心开发了微信小程序的版本&#xff0c;免去了下载app的繁琐&#xff0c;打开微信就能使用。那么&…