【modbus】libmodbus库的移植与使用

参考链接:https://blog.csdn.net/u010168781/article/details/73924748

一、源码下载

1、libmodbus官网
    http://libmodbus.org/download/

2、选择长期稳定版本libmodbus-3.0.6.tar.gz
    下载链接:http://libmodbus.org/releases/libmodbus-3.0.6.tar.gz

3、MD5值
    c80f88b6ca19cabc4ceffc195ca07771  libmodbus-3.0.6.tar.gz
    
二、交叉编译

1、拷贝到相应目录,解压
    tar -zxvf libmodbus-3.0.6.tar.gz(在使用指令前,使用进入文件夹指令cd /home/fushaolei)

2、创建安装目录
    mkdir install
    
3、进入解压的目录
    cd libmodbus-3.0.6

4、配置编译选项(注:--prefix选项是安装目录,根据自己环境确定)
    ./configure --host=arm-fsl-linux-gnueabi --enable-static --prefix=[安装路径]/install/

5、编译
    make
    
6、安装
    make install
    
7、在install生成三个目录:include  lib  share

三、测试与使用

1、进入install/lib目录,执行file libmodbus*,出现如下打印信息,信息中有“ARM”说明libmodbus库移植成功
-----------------------------------------------------------------
libmodbus.a:        current ar archive
libmodbus.la:       libtool library file, 
libmodbus.so:       symbolic link to `libmodbus.so.5.0.5'
libmodbus.so.5:     symbolic link to `libmodbus.so.5.0.5'
libmodbus.so.5.0.5: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
-----------------------------------------------------------------

2、测试程序
2.1 modbus_rtu测试

2.1.1 参数配置(根据自己情况配置)
    从地址01 寄存器地址01 读取寄存器数量20    串口ttymxc1
    波特率19200 8位 偶校验 1停止位
2.1.2 测试程序:modbus_rtu_test.c
--------------------------------modbus_rtu_test.c begin----------------------------------
/**********************************************
*简介:Linux下modbusRTU测试程序
*作者:郭纬
*日期:2017-5-16
*版本:V1.0
**********************************************/

#include<stdio.h>
#include<stdlib.h>
#include"modbus.h"
#include <memory.h>


int main(void)
{
    modbus_t *mb;
    uint16_t tab_reg[64]={0};

    //1-打开端口
    mb = modbus_new_rtu("/dev/ttymxc1",19200,'E',8,1);

    //2-设置从地址
    modbus_set_slave(mb,1);

    //3-建立连接
    modbus_connect(mb);

    //4-设置应答延时
    struct timeval t;
    t.tv_sec=0;
    t.tv_usec=1000000;//1000ms
    modbus_set_response_timeout(mb,&t);

    //5-循环读
    int num = 0;
    while(1)
    {   
        memset(tab_reg,0,64*2);

        //6-读寄存器设置:寄存器地址、数量、数据缓冲
        int regs=modbus_read_registers(mb, 0, 20, tab_reg); 
       
        printf("-------------------------------------------\n");
        printf("[%4d][read num = %d]",num,regs);
        num++;
        
        int i;
        for(i=0; i<20; i++)
        {
            printf("<%#x>",tab_reg[i]);
        }
        printf("\n");
        printf("-------------------------------------------\n");
        sleep(1);
    }

    //7-关闭modbus端口
    modbus_close(mb); 

    //8-释放modbus资源
    modbus_free(mb);
    return 0;
}

--------------------------------------modbus_rtu_test.c end---------------------------------------
2.1.3 交叉编译
    arm-fsl-linux-gnueabi-gcc -o modbus_rtu_test modbus_rtu_test.c -L../install/lib -lmodbus -I ../install/include/modbus
2.1.4 运行
    将libmodbus库拷贝到开发板上,如/usr/lib目录下;
    将测试程序拷贝到开发板上,连接好硬件,运行程序
--------------------- 
作者:郭老二 
来源:CSDN 
原文:https://blog.csdn.net/u010168781/article/details/73924748 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
libmodbus是一个开源的Modbus通信,可以用于在多种平台上实现Modbus通信功能。如果要将libmodbus移植到单片机上,首先需要了解单片机的硬件平台和软件环境。 1. 硬件平台:单片机通常具有有限的资源,如处理器速度、存储器容量和IO口数量。在移植libmodbus之前,需要确认单片机的硬件资源是否能够满足libmodbus的要求。 2. 操作系统:单片机上可能没有标准的操作系统,而是运行裸机程序。在移植libmodbus之前,需要根据单片机的特点选择适当的操作系统或者裸机编程方式。 3. 编译器:单片机的编程通常使用特定的编译器。在移植libmodbus之前,需要确认单片机所支持的编译器,并进行必要的配置。 移植libmodbus到单片机的具体步骤如下: 1. 下载libmodbus代码,并解压到单片机的开发环境。 2. 根据单片机的硬件平台和软件环境,修改libmodbus的配置文件,例如头文件路径、编译选项等。 3. 修改libmodbus的源代码,以适应单片机的特殊需求。可能需要对底层的串口通信、定时器等进行相应的修改和适配。 4. 进行编译和链接,生成适用于单片机的可执行文件。 5. 在单片机上运行测试程序,验证libmodbus的功能和稳定性。 6. 在实际应用,根据具体的需求,结合libmodbus的API进行二次开发,实现自己所需的Modbus通信功能。 总之,将libmodbus移植到单片机上需要根据单片机的硬件平台和软件环境进行适当的配置和修改,以满足单片机的特殊需求和资源限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值