Linux应用开发 | libmodbus

一、下载

libmodbus官网

二、使用

在这里插入图片描述
在这里插入图片描述
进入到libmodbus-3.1.6里面

makedir install

创建一个文件夹install,编译信息都输出到这里
在这里插入图片描述

设置编译选项 (两种情况 ubuntu or 开发板)

ubuntu下:

./configure --prefix=/home/zys/linux/application/libmodbus/libmodbus-3.1.6/install/

开发板(需指定交叉编译器):

./configure --host=arm-linux-gnueabihf --enable-static --prefix=/home/zys/linux/application/libmodbus/libmodbus-3.1.6/install/

正在配置
在这里插入图片描述

make

在这里插入图片描述

make install

在这里插入图片描述
在这里插入图片描述

将lib下的3个动态库libmodbus.so.x.x,拷贝到项目所在环境的/lib目录。

1】下载
2】解压安装包:tar zxvf libmodbus-3.1.6.tar.gz
3】进入安装包:cd libmodbus-3.1.6
4】创建文件夹,存放编译输出:mkdir install
5】配置交叉编译器:注意两种情况
6】make
7】make install

三、测试

/**
 * @name: 测试modbus客户端
 * @test: 首先启动modbus slave客户端软件
 * @return {type} 
 */
int test_md_client()
{
  modbus_t *mb;
  int len;
  uint16_t tab_reg[32];

  mb = modbus_new_tcp("192.168.2.189", 502);
  modbus_connect(mb);

  /* Read 5 registers from the address 0 */
  len=modbus_read_registers(mb, 0, 5, tab_reg);
  printf("len=%d\n",len);
  modbus_close(mb);
  modbus_free(mb);

}

在这里插入图片描述
上面的libmodbus库编译好之后,将三个so结尾的库文件拷贝到当前工程的lib目录里,然后把libmodbus的几个头文件拷贝到当前工程的inc目录下。
修改makefile文件,增加库的路径

#modbus动态库的位置 如果还报错找不到 指定下export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./lib
LDFLAGS += -L./lib -lmodbus

在这里插入图片描述
如果还报错找不到 指定下export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./lib

最后make

运行

在这里插入图片描述
在这里插入图片描述
这里返回了5 应该是读回来了5个寄存器的值

四、modbus slave

在这里插入图片描述

注意:
  (1)连接Connection采用Modbus TCP/IP协议;
  (2)网络地址为本地地址,127.0.0.1;
  (3)端口设置为“502”;
  (4)选择“Ignore Unit ID”,如果不选择,测试程序返回空值。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Linux下,我们可以使用开源的Modbus库来开发一个Modbus RTU主站应用。下面是一个300字左右的示例案例: Modbus RTU是一种串行通信协议,广泛应用在工业自动化中。在Linux下开发Modbus RTU主站应用需要使用一个可靠的Modbus库,比如libmodbus。首先,我们需要在Linux系统上安装该库。 接下来,我们可以使用C语言编写一个简单的Modbus RTU主站应用程序。首先,我们需要初始化一个modbus_t结构体来表示一个Modbus主站设备。我们需要指定串口设备文件名、波特率、奇偶校验等参数。然后,我们可以使用modbus_set_slave函数设置从站地址。 接下来,我们可以使用modbus_connect函数打开与从站的串口连接。然后,我们可以使用modbus_read_registers函数从从站中读取寄存器的值。也可以使用modbus_write_registers函数向从站写入寄存器的值。 在主站应用程序中,我们可以根据需要周期性地读写从站的寄存器,从而实现与从站之间的数据交换。我们可以使用modbus_close函数关闭与从站的连接。 最后,我们可以使用modbus_t结构体中的其他函数来释放资源,比如modbus_free函数用于释放主站设备所占用的内存。 总结起来,对于一个Modbus RTU主站开发案例,在Linux下我们可以使用libmodbus库来开发一个高效可靠的应用程序。我们需要熟悉libmodbus库的API,然后使用C语言编写一个主站应用,实现与从站之间的数据交换。这样我们就能够在Linux系统下开发出一个功能完善、稳定可靠的Modbus RTU主站应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值