简单认识libmodbus开发库

描述

第11章 libmodbus剖析与编程

11.1libmodbus开发库

11.1.1 功能概要

libmodbus是一个免费的跨平台Modbus库,支持RTU和TCP,遵循LGPL V2.1+协议,兼容Linux、Mac OS X、FreeBSD、QNX和Windows等操作系统。它可通过串口或TCP网络与符合Modbus协议的设备发送/接收数据,方便开发者构建应用程序或将Modbus通信集成到设备中。

作为开源软件,还可以从GitHub网站获取最新版本的代码。

11.1.2 源码获取

libmodbus的源码不断更新,本教程选择版本v3.1.10。

如下图下载:

MODBUS

本源码也放在网盘中如下目录里:

MODBUS

解压后,简单查看源代码根目录的构成:

①doc目录:libmodbus库的各API接口说明文档。

②m4目录:存放GNU m4文件,在这里对理解代码没有意义,可忽略。

③src目录:全部libmodbus源文件。

④tests目录:包含自带的测试代码,其他文件对理解源代码关系不大,可以暂时忽略。

图6-1 解压libmodbus源代码:

MODBUS

进一步展开src代码目录,如图6-3所示:

图6-2 libmodbus源码构成:

MODBUS

各文件作用如下:

win32:定义在Windows下使用Visual Studio编译时的项目文件和工程文件以及相关配置选项等。其中,modbus-9.sln默认使用Visual Studio 2008。

Makefile.am:Makefile.am是Linux下AutoTool编译时读取相关编译参数的配置文件,用于生成Makefile文件,因为用于Linux下开发,所以在这里暂时忽略。

modbus.c:核心文件,实现Modbus协议层,定义共通的Modbus消息发送和接收函数各功能码对应的函数。

modbus.h:libmodbus对外暴露的接口API头文件。

modbus-data.c:数据处理的共通函数,包括大小端相关的字节、位交换等函数。

modbus-private.h:libmodbus内部使用的数据结构和函数定义。

modbus-rtu.c:通信层实现,RTU模式相关的函数定义,主要是串口的设置、连接及消息的发送和接收等。

modbus-rtu.h:RTU模式对外提供的各API定义。

modbus-rtu-private.h:RTU模式的私有定义。

modbus-tcp.c:通信层实现,TCP模式下相关的函数定义,主要包括TCP/IP网络的设置连接、消息的发送和接收等。

modbus-tcp.h:定义TCP模式对外提供的各API定义。

modbus-tcp-private.h:TCP模式的私有定义。

modbus-version.h.in:版本定义文件。

11.1.3 libmodbus与应用程序的关系

libmodbus是一个免费的跨平台支持RTU和TCP的Modbus开发库,借助于libmodbus发库能够非常方便地建立自己的应用程序或者将Modbus通信协议嵌入单体设备libmodbus开发库与应用程序的基本关系如图6-4所示。

图6-3 应用程序与libmodbus的关系:

MODBUS

在对libmodbus的接口及代码框架简单了解之后,不妨再深入细节一探究竟,看看libmodbus都实现了哪些基础功能,以及源代码中对Modbus各功能码和消息顿是如何包装的。具体内容请参看下一章。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分