| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 网络协议 -> vs+Qt+modbus学习记录 -> 正文阅读 |
|
|
[网络协议]vs+Qt+modbus学习记录 |
前言? ? ? ?QtserialBus下提供了访问工业串行总线和协议的类和函数,包括CAN和Modbus等。Modbus的一些类如下:
?Modbus协议物理层接口有RS232和RS485串行接口和以太网接口,使用网口通讯主要使用QModbusTcpClient(Modbus客户端设备的接口类)和QModbusTcpServer(TCP服务器与Modbus客户端进行通讯的Modbus服务器)。 上位机主站的实现(1)创建modbusTCPclient对象指针:QModbusTcpClient *? myClient;并将其创建在堆上,添加到QT的对象数中,这是一个用于发送各种请求的对象,比如读和写。以下将其统称为客户端。 (2)通过TCP/IP进行连接:客户端的连接状态有四个状态,分别为:UnconnectedState (0)、ConnectingState(1)、ConnectedState(2)、ClosingState(3).可以判断状态未连接时进行连接。设置其连接相关参数:
? ? ? ? 连接这里需要注意的问题是connectDevice()执行时会在另外一个线程中进行连接,因此需要另外写一个槽函数用于判断设备的连接状态。官方提供了一个stateChanged的信号,状态改变后在槽函数中判断设备是否连接。 (3)写操作:对modbus设备进行写操作时,需要使用QModbusDataUnit类来存储一些信息,包括写入寄存器的类型,写入数据的起始地址,写入数据的个数。创建该容器的方式如下,其中注意参数所需要的类型。创建完容器对象后,使用函数setValue()来将信息写入到modbus设备中。
此时还需要给设备发送写入的请求,当请求成功时会返回一个有效的QModbusReply的对象指针,否则返回nullptr。
可以判断reply的状态进行后续的操作。 (4)读操作:与写操作对应,首先使用QModbusDataUnit类来存储所读寄存器的类型,读取数据的起始地址,读取数据的个数等信息。然后发送读取数据的请求,根据请求的返回QModbusReply对象指针来进行后续操作。
与写操作不同的是,读取请求发送后,需要根据响应的状态然后进行读取数据的存储。官方提供了响应完成的信号QModbusReply::finished,此时自己再实现读取数据的槽函数。
代码有自己实现的接口,具体内容自己调整。 (5)自己调试过程需要的问题总结: 第一点,在连接PLC的时候不要自己另外开线程,会导致设置连接后自己线程没有退出,与连接自带的线程隔离,无法判断是否连接成功。 第二点,写入和读取寄存器对应地址的数据时,要判断该寄存器地址是否是可读可写的,我在调试过程中使用了一个只读的寄存器地址,让我以为写入数据的程序有问题,白调整了几个小时。。。另外,最近在做项目自学很多东西都会在此更新,有兴趣的欢迎关注,一同交流学习。 最后多使用QT帮助文档,太好的东西! |
|
|
| 网络协议 最新文章 |
| 使用Easyswoole 搭建简单的Websoket服务 |
| 常见的数据通信方式有哪些? |
| Openssl 1024bit RSA算法---公私钥获取和处 |
| HTTPS协议的密钥交换流程 |
| 《小白WEB安全入门》03. 漏洞篇 |
| HttpRunner4.x 安装与使用 |
| 2021-07-04 |
| 手写RPC学习笔记 |
| K8S高可用版本部署 |
| mySQL计算IP地址范围 |
|
|
| 上一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/20 6:09:06- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |