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代码放这了: