libmodbus是非常有名的modbus库,本身是用C语言写的。

https://github.com/stephane/libmodbus

当我们需要自己搞一个C/C++版的 modbus Server时,总希望可以像C#里面有好用的库直接使用,但是c++语言的libmodbus库封装的并不是特别好,在官方的源码中连个像样的example都没有,能参考的也就tests目录下有几个。

但是仔细看了一下,random-test-server.c 还是会阻塞的,单线程,也就是在一个时间,服务器只能为一个客户端提供服务。

与拿来即用的标准相差甚远。

如果需要实现对多个客户端提供服务,需要参考 bandwidth-server-many-up.c

本文借鉴这篇文章,进行了一点优化,实现了可以为多个客户端提供服务的modbus tcp Server,可以拿来即用。

使用libmodbus库开发modbusTcp从站(支持多个主站连接)_酸菜。的博客-CSDN博客_libmodbus tcp

如果需要自己实现逻辑可以直接在另一个线程函数中对modbus的变量进行修改。

别提多方便了,对小白非常友好。

使用前需要自行安装libmodbus库。

ubuntu 下是  apt install libmodbus-dev

windows下也能用,但需要自己编译libmodbus库。

windows 下libmodbus的编译方法:libmodbus在Windows平台下安装与编译与测试_chaohui_chen1024的博客-CSDN博客_windows安装libmodbus

(对比linux,windows下编程真的是太麻烦了,linux下apt install搞定的事情windows下要搞半天,好在现在有vscode了,支持linux,写C++的兄弟们快用vscode + linux 吧!)

支持多客户端,多线程的modbus server代码放这了:

https://download.csdn.net/download/v6543210/90012522

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐