Modbus库的使用详解

1.库的安装配置

1. 在linux中解压压缩包

在将库压缩包复制到linux下,进行解压

tar -xvf libmodbus-3.1.7.tar.gz

2.进入源码目录,创建文件夹(存放头文件、库文件)

cd libmodbus-3.1.7

mkdir install

3.执行脚本configure,进行安装配置(指定安装目录)

./configure --prefix=$PWD/install

4.执行make和make install

make//编译

make install//安装

执行完成后会在install文件夹下生产对应的头文件、库文件件夹install,用于存放产生的头文件、库文件等

2. 库的使用

1、gcc xx.c -I ./install/include/modbus -L./install/lib -lmodbus

./a.out

解释:

-I 后需要指定出头文件的路径(大写的i)

-L 后需要指定库的路径

-l 后需要指定库名

因为库为动态库,所有运行时会报错,

2.要想编译方便,可以将头文件和库文件放到系统路径下

sudo cp install/include/modbus/*.h /usr/include

sudo cp install/lib/* -r /lib -d

后期编译时,可以直接gcc xx.c -lmodbus

头文件默认搜索路径:/usr/include 、/usr/local/include

库文件默认搜索路径:/lib、/usr/lib

3.函数接口

modbus_t*   modbus_new_tcp(const char *ip, int port)
功能:以TCP方式创建Modbus实例,并初始化
参数:
    ip   :ip地址
    port:端口号
返回值:成功:Modbus实例
      失败:NULL
int modbus_set_slave(modbus_t *ctx, int slave)
功能:设置从机ID
参数:
    ctx   :Modbus实例
    slave:从机ID
返回值:成功:0
       失败:-1
int   modbus_connect(modbus_t *ctx)
功能:和从机(slave)建立连接
参数:
    ctx:Modbus实例
返回值:成功:0
       失败:-1
void   modbus_free(modbus_t *ctx)
功能:释放Modbus实例
参数:ctx:Modbus实例
void   modbus_close(modbus_t *ctx)
功能:关闭套接字
参数:ctx:Modbus实例
int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest)
功能:读取线圈状态,可读取多个连续线圈的状态(对应功能码为0x01)
参数:
    ctx   :Modbus实例
    addr :寄存器起始地址
    nb    :寄存器个数
    dest :得到的状态值
int  modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest)
功能:读取输入状态,可读取多个连续输入的状态(对应功能码为0x02)
参数:
    ctx   :Modbus实例
    addr :寄存器起始地址
    nb   :寄存器个数
    dest :得到的状态值
返回值:成功:返回nb的值
int  modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest)
功能:读取保持寄存器的值,可读取多个连续保持寄存器的值(对应功能码为0x03)
参数:
    ctx   :Modbus实例
    addr :寄存器起始地址
    nb    :寄存器个数
    dest :得到的寄存器的值
返回值:成功:读到寄存器的个数
       失败:-1
int   modbus_read_input_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest)
功能:读输入寄存器的值,可读取多个连续输入寄存器的值(对应功能码为0x04)
参数:
    ctx   :Modbus实例
    addr :寄存器起始地址
    nb    :寄存器个数
    dest :得到的寄存器的值
返回值:成功:读到寄存器的个数
       失败:-1
int  modbus_write_bit(modbus_t *ctx, int addr, int status);
功能:写入单个线圈的状态(对应功能码为0x05)
参数:
    ctx     :Modbus实例
    addr  :线圈地址
    status:线圈状态
返回值:成功:0
      失败:-1
int  modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *src);
功能:写入多个连续线圈的状态(对应功能码为15)
参数:
    ctx     :Modbus实例
    addr  :线圈地址
    nb     :线圈个数
    src    :多个线圈状态
返回值:成功:0
      失败:-1
int  modbus_write_register(modbus_t *ctx, int addr, int value);
功能:  写入单个寄存器(对应功能码为0x06)
参数: 
    ctx    :Modbus实例
    addr  :寄存器地址
    value :寄存器的值 
返回值:成功:0
       失败:-1
int  modbus_write_registers(modbus_t *ctx, int addr, int nb, const uint16_t *src);
功能:写入多个连续寄存器(对应功能码为16)
参数:
    ctx    :Modbus实例
    addr  :寄存器地址
    nb     :寄存器的个数
    src    :多个寄存器的值 
返回值:成功:0
      失败:-1

4.编程流程

1. 创建实例

modbus_new_tcp

2. 设置从机ID

modbus_set_slave

3. 和从机进行连接

modbus_connect

4. 寄存器进行操作

功能码对应函数

5. 关闭套接字

modbus_close

6. 释放实例

modbus_free

5.Modbus库分享连接

链接:https://pan.baidu.com/s/1Ah7Di3gAs9_jTAYyjFiE7A

提取码:9nwh

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python Modbus_tk是一个用于Python编程语言的Modbus协议。它提供了一个易于使用的API,可以轻松地实现Modbus协议的通信。Modbus_tk支持TCP和串行通信,并且可以在Windows和Linux等操作系统上运行。它还提供了许多有用的功能,如异步通信、数据记录和调试功能等。Modbus_tk是一个开源项目,可以免费使用和修改。 ### 回答2: modbus_tk是一个用Python语言编写的开源Modbus协议栈实现,可以轻松实现Modbus应用程序的开发。它支持Modbus TCP和Modbus RTU通信,可以被用来在嵌入式系统,PC和工控设备间传输数据。 modbus_tk具有很多特性- 它提供面向对象的API,使用户能够轻松地创建和使用基于Modbus协议的应用程序。此外,它还提供了一些实用的功能,包括: 1. 主从模式- modbus_tk提供了单主模式和多从模式,用户可以轻松地创建实现与Modbus通信的设备。 2. 客户端- modbus_tk支持创建客户端,使用户能够从Modbus TCP服务器读取和写入数据。同时,它还支持连接和重连以确保稳定的通信。 3. 固定码/异步代码- modbus_tk支持通过固定代码或异步代码来实现Modbus通信。 4. 虚拟串口- modbus_tk支持创建虚拟串口,使用户能够使用串口协议与其他设备通信。 5. 多线程- modbus_tk具有多线程支持,可以实现多个Modbus连接同时访问。 6. 跨平台- modbus_tk支持在多种平台上运行,包括Windows,Linux,以及嵌入式系统等。 总的来说,modbus_tk是一个强大且易于使用的工具,可以用于数据采集,监测和控制等领域,特别适用于工业控制应用。其代码可自由下载使用,具有很大的灵活性,用户可以根据实际需求对其进行自定义和配置。 ### 回答3: Python modbus_tk是一个基于Python的Modbus通信,它是一个与Modbus TCP/RTU协议兼容的实现,可以帮助Python开发人员轻松地实现Modbus通信。在这篇文章中,我们将详细了解Python modbus_tk的特性和使用。 首先,modbus_tk由一个modbus_tk.py文件和一些子模块组成。该支持Modbus TCP和Modbus RTU协议,并支持多种数据格式和编码方式,如16位整数、32位浮点数、字符串和布尔值。 Python modbus_tk还具有易于使用的API,使编程人员可以轻松地实现Modbus通信,例如读取和写入Modbus寄存器,等等。这个API是非常适用于Python开发人员,因为它使用Python的内置数据类型和对象。 在Python modbus_tk中使用Modbus TCP协议时,请注意以下几点: 1. 您需要连接到目标设备的IP地址和端口。 2. 您需要设置Modbus调度程序,以便在程序中发送Modbus请求和接收响应。 3. 在编写代码时,请确保您了解自己的设备寄存器类型和地址。 在Python modbus_tk中使用Modbus RTU协议时,请注意以下几点: 1. 您需要使用串行通信接口连接到目标设备。 2. 您需要设置Modbus调度程序,以便在程序中发送Modbus请求和接收响应。 3. 在编写代码时,请确保您了解自己的设备寄存器类型和地址。 总之,Python modbus_tk是一个非常强大和灵活的Python Modbus通信,可以帮助我们轻松实现Modbus通信。无论是使用Modbus TCP还是Modbus RTU协议,Python modbus_tk都非常适合Python开发人员。如果你正在寻找一个简单易用的Modbus,那么Python modbus_tk绝对是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值