https://blog.youkuaiyun.com/starelegant/article/details/74590951使用libmodbus库快速构建上位机(二) 串口modbus上位机

Modbus通讯开发随记1——LibModbus库的学习 本文对工业控制领域Modbus通讯的开源库(LibModbus)进行了简单且必要的熟悉,罗列了该库中软件开发最常用的API,后续将进一步进行基于Libmodbus的简易demo测试与分析,尝试将Libmodbus基础功能进行简易的C++面向对象封装,最终应用到定制化客户端软件中 阅读详情
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/starelegant/article/details/74590951

一、新建win32工程,配置环境

    首先在libmodbus官网下载 libmodbus库稳定版

https://github.com/stephane/libmodbus解压文件后,在src文件夹目录下,选取如下图文件

    新建一个文件夹,再添加到win32工程中 ,放在项目工程源码文件下。为了方便,这个文件夹命名为“libmodbus”。(新建的工程名称为:TestMod)

 

 

配置两个地方

1 、项目属性--》C/C++--》常规 --》附加包含目录

包含刚刚libmodbus文件夹的路径

宏定义方式:$(ProjectDir)libmodbus;

 

2、 项目属性--》链接器--》常规 --》附加库目录

包含刚刚libmodbus文件夹的路径

宏定义方式:$(ProjectDir)libmodbus;

 

 

二、   编译modbus.dll

 

modbus-9.sln 打开工程文件,选择模式为Debug,编译后生成modbus.dll

这个modbus.dll 最终需要放在 测试工程TestMod exe输出目录(Debug)下 

 

三、 实现功能,源码如下



 
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include "libmodbus/modbus.h"
  4. #pragma comment(lib,"modbus.lib")
  5. //#include <Windows.h>
  6. using namespace std;
  7. int main()
  8. {
  9. modbus_t *mb;
  10. uint16_t tab_reg[ 10] = { 0 };
  11. mb = modbus_new_rtu( "COM2", 9600, 'N', 8, 1); //相同的端口只能同时打开一个
  12. modbus_set_slave(mb, 1); //设置modbus从机地址
  13. modbus_connect(mb);
  14. struct timeval t;
  15. t.tv_sec = 0;
  16. t.tv_usec = 1000000; //设置modbus超时时间为1000毫秒
  17. modbus_set_response_timeout(mb, ( int)&t.tv_sec, ( int)&t.tv_usec);
  18. for ( int i = 0; i < 10; i++)
  19. {
  20. int regs = modbus_read_registers(mb, 0, 5, tab_reg);
  21. std:: cout << "modbus recevie "<< i << ":" << tab_reg[ 0] << " " << tab_reg[ 1] << " " << tab_reg[ 2] << " "
  22. << tab_reg[ 3] << " " << tab_reg[ 4] << " " << tab_reg[ 5] << std:: endl;
  23. Sleep( 500);
  24. }
  25. system( "pause");
  26. return 0;
  27. }


 

四、  调试功能

1、定义虚拟串口,COM2 COM3配对

2、 使用modbus slave软件定义如下数据,


 

3、 实验结果如下

 

libmodbus编程笔记 阅读详情

相关推荐

【C++】开源:libmodbus通信协议库配置使用

libmodbus通信协议库配置使用

DevFrank的博客 5602

基于libmodbus库实现modbus TCP/RTU通信

基于libmodbus实现modbus TCP/RTU通信基类封装,以及功能介绍,库安装等全面知识,关于modbus使用看此文足矣!

tutu_hu的博客 2万+

[开源库的使用]libModbus编译及使用

本文将libModbus编译经过进行分享,介绍Windows平台下libModbus的编译及使用,基于VS2019。libModbus官网libmodbus。是基于开源协议LGPL-2.1-or-later的一款开源软件。请大家自行研判使用条款及风险。文末有编译好的.dll .lib,方便大家。压缩包解压密码:123。Debug修改为DLLBUILD;_WINDLL;Release修改为DLLBUILD;_WINDLL;

wuqunce的专栏 5476

Modbus驱动库—libmodbus驱动库的使用

文章目录为什么要使用驱动库?libmodbus简介libmodbus常用函数Windows平台libmodbus 使用1.获取源代码2.生成config.h配置文件3.编写测试代码4.编译测试代码Linux平台下libmodbus使用ARM平台下libmodbus使用libmodbus 从机地址限制的问题 这篇文章是接上一篇Modbus协议简介,介绍Modbus实际项目应用,断断续续写了近两周时间。 为什么要使用驱动库? 上一篇文章,我们介绍了Modbus协议物理层和协议层,我们知道了Modbus是一种总线

whik1194的博客 4万+

【开源库】libmodbus库编译及使用

本文介绍windows平台下libmodbus库的编译及使用。

weixin_45125631的博客 2676

Python程序—定子故障三相永磁同步电动机振动与电流数据集

1.0 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为2.26%: 匝间短路故障,严重度为2.70%: 匝间短路故障,严重度为3.35%: 匝间短路故障,严重度为4.41%: 匝间短路故障,严重度为6.48%: 匝间短路故障,严重度为12.17%: 匝间短路故障,严重度为21.69%1.5 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为1.57%: 匝间短路故障,严重度为1.88%: 匝间短路故障,严重度为2.34%

m0_66465741的博客 1318

libModbus库开发笔记(一):libmodbus库介绍、编译和基础工程模板

libmodbus是一个免费软件库,可根据Modbus协议发送/接收数据。该库用C编写,并支持RTU(串行)和TCP(以太网)通信。

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 5万+

3D Slicer中Auto3DSeg和TotalSegmentator等自动分割插件总是安装失败,怎么办?教你两招

TotalSegmentator, MONAI auto3Dseg,这些工具因分割器官多,准确性高,备受关注。同时,这些自动分割工具被集成在了3D slicer平台,非常方便临床医生做手术规划。详细了解这些工具看之前的教程👇-------- 简单概述 --------其中,MONAIAuto3DSeg扩展附带数十种针对特定临床用例的预训练分割模型,这些模型旨在快速运行,几分钟内即可在任何普通计算机上运行,无需 GPU,甚至在笔记本电脑上。

zzjlhlcd的博客 1696

libmodbus使用

libmodbus是一个基于C语言实现的modbus驱动库,支持Linux、Mac OS X、Win32等操作系统。

GentleTK的博客 7357

CXL Virtual Hierarchy (VH) Enumeration理解

在 CXL 3.0 协议中,CXL Virtual Hierarchy (VH) Enumeration 是一种针对 CXL 虚拟层级(Virtual Hierarchy) 设计的设备枚举机制,它允许软件将物理连接的 CXL 设备抽象为多个逻辑层级(虚拟层级),从而实现更灵活的资源管理和拓扑扩展。与传统的 PCIe 枚举相比,CXL VH 枚举在协议特性、拓扑抽象和资源分配机制上有显著差异。本质:VH 是一个逻辑上的设备层级结构,可能与物理连接拓扑不同。

Summer的博客 1001

GD32单片机引脚复用指南:如何让JTAG接口的PA15/PB3发挥第二功能?

本文详细介绍了GD32F103Cx系列单片机如何通过AFIO模块进行引脚复用,特别是将默认用于JTAG调试接口的PA15、PB3等引脚释放为普通IO或复用功能引脚。文章从原理出发,结合代码实践,讲解了如何配置调试端口重映射,将JTAG引脚安全地转换为GPIO或定时器通道,并提供了常见问题排查与最佳实践,帮助开发者高效利用有限的引脚资源。

nept的博客 807

Modbus开源库_Libmodbus

Libmodbus库得介绍。

西西弗的博客 3420

自动化测试工具playwright中文文档-------1.编写测试

Playwright 测试非常简单,它们执行操作,并断言状态是否符合预期。在执行任何操作之前,无需等待任何内容:Playwright 在执行每个操作之前会自动等待一系列可操作性检查通过。此外,在执行检查时也不需要处理竞态条件——Playwright 的断言设计方式能够描述最终需要满足的期望。就这样!这些设计选择允许 Playwright 用户完全忘记他们测试中的不稳定超时和竞态检查。您将学习如何编写第一个测试如何执行操作如何使用断言测试如何在隔离环境中运行如何使用测试钩子。

2301_76646967的博客 2505

工业互联(五)——libmodbus编程应用(超详细源码讲解+移植到stm32)

之前介绍了Modbus协议,广泛应用于工业控制领域,协议内部有很多细节;比如报文的预处理、解析等等,所以我们需要移植别人的库,理解核心代码的主要逻辑,修改底层和硬件相关的代码就可以了,这就需要介绍libmodbus开发库。至此对于modbus协议和libmodbus库的原理讲解和移植就完成了,可以看到能讲的我就尽量讲了,代码的注释写的很详细,光是代码注释我就写了很久,还有哪里有疑问的欢迎大家评论留言,我能解决的都尽力给大家解答。

sakabu的博客 8128

2025华为od机试真题B卷【字符串计数匹配】Java&Go 实现

给你一个字符串str和整数k,返回满足以下条件的所有子字符串个数: 1.恰好包含k个字母。 2.数字0-9各出现至少一次。

MISAYAONE的博客 639

ArcGIS JSAPI 高级教程 - 添加多个 box 立方体 - 通过顶点、索引、UV 自定义每个 box、每个面不同颜色

ArcGIS JSAPI 高级教程 - 添加多个 box 立方体 - 通过顶点、索引、UV 自定义每个 box、每个面不同颜色。

非科班Java出身GISer的博客 400

C++上位软件通过LibModbus开源库和西门子S7-1200/S7-1500/S7-200 PLC进行ModbusTcp 和ModbusRTU 通信

C++上位软件通过LibModbus开源库和西门子S7-1200/S7-1500/S7-200 PLC进行ModbusTcp 和ModbusRTU 通信。

lzc881012的博客 6930

【从零开始学习 UVM】1.1、UVM 概述 —— Preface

【从零开始学习 UVM】1.1、UVM 概述 —— Preface

努力,加油每一天鸭~ 824

上位机开发基础协议Modbus协议

详细介绍Modbus通信协议的报文结构,并以C#语言为基础,实现报文的封装、发送、接收与解析。通过课程可以更清楚理解通信原理,对上位机通信过程有更深入的理解,对于通信功能以及其他协议的扩展有一定的帮助

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

libmodbus编程应用(源码讲解+移植STM32)

之前介绍了Modbus协议,见Modbus通讯协议,广泛应用于工业控制领域,协议内部有很多细节;比如报文的预处理、解析等等,所以我们需要移植别人的库,理解核心代码的主要逻辑,修改底层和硬件相关的代码就可以了,这就需要介绍libmodbus开发库。UART开发基础移植USBX实现虚拟串口。由于篇幅过长,还有很多细节不方便展开讲,感兴趣的兄弟可以私信我。至此对于modbus协议和libmodbus库的原理讲解和移植就完成了,可以看到能讲的我就尽量讲了,光是代码注释我就写了很久,

独舞风 2292

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【libmodbus-vs2019】测试使用

一、编译libmodbus库,vs2015 二、将头文件,lib,dll拷贝到 项目下 引入lib库到工程中 - - C++博客 (cppblog.com) 引入lib库到工程中 - - C++博客 添加到项目并引用头文件。代码添加库。 MFC 在VS中添加lib的三种方法_lgqlovexl的博客-优快云博客_mfc 添加lib MFC添加lib文件、静态库三种方法_走好每一步的博客-优快云博客_mfc 使用lib 源码: // libmodbus_use...

cxyhjl的博客 1934

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【modbus协议】libmodbus库移植基于linux平台

【代码】【modbus协议】libmodbus库移植基于linux平台。

Clear Code 2631

libmodbus

libmodbus1 简介2 库使用2.1 直接加入工程中3 函数接口流程参考 1 简介 A Modbus library for Linux, Mac OS X, FreeBSD, QNX and Win32. libmodbus is a free software library to send/receive data according to the Modbus protocol. This library is written in C and supports RTU (serial) a

天道酬勤 3726

libmodbus 软件包的使用记录 -- 基于 rs485 通讯

libmodbus 的链接网址。

weixin_46158019的博客 2364

libmodbus 开源库(第一部分)

下载地址 libmodbus 开源库地址:https://github.com/stephane/libmodbus 编译方式 安装必要的软件 sudo apt-get installpkg-configautoconf automake 编译 libmodbus ./autogen.sh &&./configure --prefix=/usr && && make && sudo make install 测试代码...

QCZL_CC的博客 4934

Modbus——基于libmodbus开发

如果响应时间过长,实际造成系统时延增长。问题中有单线多主站的问题,在modbus rtu中,每个数据发出的时间是可以计算的,多主站存在的串口竞争问题,谁先发谁后发谁管理。实验中,有时候每个从站都正常,有时候就存在大量丢包,工程中,就是一个线路一个主站,还有一种就是双串口冗余,双线一主,保证系统的稳定性,这时候串口也是一个工作一个等待。在比如双方都支持主站,没有从站,做过一个解决方案,就是用modbus模拟器对接两个主站系统,有些模拟器中的内存空间是复用的,两个系统一个读一个写,也可以把数据进行传递。

soinlove36的专栏 3324
上一篇: VC2012/VS2012 MFC串口通讯上位机程序教程笔记(转)
下一篇: libmodbus使用说明
afreetboy
博客等级 码龄19年 3粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值