1.【零基础】5分钟开发一个简单的从机测试从站测试ModBus TCP主站上位机(附源码)
2.Qt编写Modbus从机程序
3.QT+ModbusTCP 基于QTcpSocket纯手搓modbustcp协议
4.免费串口调试助手 开源 C#
【零基础】5分钟开发一个简单的ModBus TCP主站上位机(附源码)
在工业控制和现场数据采集领域,Modbus协议因其广泛的源码应用而备受青睐。本文将指导你在Visual Studio 环境下,工具使用C#和Winform框架,从机测试从站测试从零开始,源码仅用5分钟,工具固高实验源码开发一个简单的从机测试从站测试Modbus TCP主站上位机。首先,源码你需要下载并安装Visual Studio社区版,工具确保选择".NET桌面开发"等必要组件。从机测试从站测试
安装完成后,源码新建一个Windows窗体应用项目,工具命名为"ModbusMaster"。从机测试从站测试接下来,源码安装Easy ModbusTcp库,工具它是基于.NET Framework的Modbus通信库,支持多种协议和编程语言,便于设备通信和数据采集。
在代码编写部分,2022进销存系统源码版你需要设计界面,然后引入EasyModbus库,编写关键功能如连接设备、读写Modbus报文的函数。例如,`btn_connect_Click`方法用于连接设备,`SlaveCoilWrite`方法则负责单个或多个输出寄存器的写入操作。通过点击按钮,你可以控制设备的布尔状态。
Qt编写Modbus从机程序
在之前的文章中,我们已经熟悉了如何使用MODSCAN软件和串口助手处理Modbus协议。今天,我们将利用之前分享的Qt串口助手源码,开发一个Modbus从机程序,使其能够与MODSCAN进行数据交互。我们的目标是实现功能码0x读取保持寄存器和0x写入单个寄存器的功能。
当主机发送0x功能码时,程序需要读取并回应从机特定寄存器的彩虹系统源码破解版没加密内容。例如,如果请求读取寄存器-,其内容分别为 2B(十进制)和 , (十进制0和)。
功能码0x用于向从机写入单个寄存器。比如,我们可以将十六进制 写入寄存器2。在0x功能码下,可以写入多个寄存器,如 0A和 到从寄存器2开始的两个位置。
在调试中,如果主从机的寄存器地址设置不一致,可能会出现错误的数据包,如MODSIM接收到的数据包 C5 C8与 C0 F1。当地址设置一致时,响应的包将正确反映寄存器内容。
Qt编写的Modbus从机程序需要解析接收到的串口数据,根据功能码进行响应。比如,币严秒合约交易所源码当主机修改地址2的寄存器值为0xFF时,程序会接收并返回确认报文。注意,Modbus从机通常不主动发送数据,而是等待主机查询。
通过这个例子,我们已经展示了基于Qt的Modbus从机程序的基本运作。更多功能码的处理和自定义串口交互,大家可以在之前的文章基础上进行深入学习。欢迎关注嵌入式从0到1,持续分享嵌入式知识。
QT+ModbusTCP 基于QTcpSocket纯手搓modbustcp协议
一、编写缘由
1.发现问题
近期项目需将modbus RTU转换为TCP形式,于是对原有modbus通讯线程进行重构。起初使用Qt自带的QModbusTcpClient类,顺利重构线程并读取数据,但在发送写数据请求时,TCP连接会断开。支付宝点餐程序源码在哪经过多次尝试,排除从站问题,即便直接连接modbusslave也存在同样问题。
2.查找问题
为解决问题,自行编写了一个tcp server,抓取QModbusTcpClient写数据的报文,与modbuspoll上的对比,发现QT中的报文比modbuspoll上的多出一部分,推测是协议错误。
3.解决策略
既然QModbusTcpClient的协议存在问题,决定不使用它。因此,直接利用QTcpSocket手动编写一个ModbusTcp类。
二、代码编写
1.协议解析
通过对比modbuspoll上的通信日志和网络上的modbustcp协议分析文章,研究出协议的标准格式。
2.封装函数
共封装了4个函数,分别是写单个线圈、写多个线圈、写单个保持寄存器、写多个保持寄存器。具体实现如下:
四个函数中,除了写多个线圈存在问题外,其他均已验证,可正确写入。
最后,将TCP作为一个子线程,线程初始化函数如下:
三、源码下载
模块下载
四、最后的最后再吐槽一下QModbusTcpClient真的很糟糕,根本无法使用。另外,网上的QtModbusTCP资源都无法使用,只有和我一样纯手搓才能解决问题。
免费串口调试助手 开源 C#
工业控制类软件在Windows平台下,使用C#语言进行开发,既方便又快捷。在工控领域中,串口通讯是一种非常常见的需求。因此,我花费时间开发了一个通用的串口调试助手工具,并将工控调试中常用的功能集成在上面,以方便用户进行调试。源码已经在gitee上开源,界面采用wpf实现,源码地址为:
接下来,我将简单介绍一下已实现的功能。
程序功能主要分为以下四大块:
1. 串口通讯
2. TCP通讯
3. 小工具
4. 支持中英文双语切换
5. 检查版本更新
6. 曲线显示读取的值。
一、串口通讯
串口通讯详细功能:
1. 支持手动刷新串口设备列表。
2. 支持流控。
3. 接收发送编码方式同时支持ASCII和HEX方式。
4. 在ASCII模式下,可设置结束符,如回车换行等。
5. 在HEX模式下,支持自动计算标准ModbusRTU的CRC。
6. 发送支持循环发送。
7. 接收区显示支持显示发送和显示接收,并可设置发送和接收的字符串颜色。
8. 接收区显示支持显示发送和接收的时间,时间格式可自定义。
9. 底部显示串口状态,总接收字节数和总发送字节数。各字节数可手动清零。
. 接收区字符串可一键清空。
. 记录发送历史,支持记录最新的条历史记录。
. 可将接收区显示的字符实时保存到本地txt文档。
. 可将读取到的值以实时曲线的形式显示出来。
二、TCP通讯
TCP通讯详细功能:
1. 支持TCP Client/TCP Server。
2. 在TCP Server模式下,可显示当前连接客户端列表。
3. TCP通讯采取异步方式通讯。
4. 支持串口通讯功能中的3-项。
5. 不支持TCP连接断开的自动侦测。
三、小工具
包含的小工具介绍:
1. 通用校验方法中包含常用的LRC、XOR、CheckSum、FCS、Modbus-CRC等校验的计算。
2. 数据转换包含整数和小数与进制HEX的转换。
3. 与base互转。
4. 数据采集中常用的模拟量与工程量转换计算。
5. ASCII码表。
6. C#颜色对照表。
7. 拾取屏幕颜色。该功能使用鼠标hook实现。通过hook技术可实现拦截或修改键盘鼠标等的操作,有这方面需求的可参考。
四、检查更新
1. 检查更新方式:
利用gitee作为更新检查的服务器,将版本号和下载连接写在gitee项目文件中,实现自动检查更新并提供下载连接的功能。
五、相关开源项目
1. 跨平台(Linux/Windows)串口通讯源码开源连接:
xuyuanbao/BaoYuanSerial: A GUI Serial Debug Tool for Linux/Microsoft Window (github.com)