14 Star 0 Fork 3

src-openEuler/libmodbus-xenomai

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

libmodbus-xenomai

介绍

libmodbus-xenomai是一个自由的软件库,它使用一个遵循Modbus协议的设备来发送和接收数据。

软件架构

软件架构说明: 使用 unit-test-server和unit-test-client 基于kunpeng920测试通过;

安装教程

  1. Xenomai安装

    ./configure --with-pic --with-core=cobalt --enable-smp --disable-tls --enable-dlopen-libs --disable-clock-monotonic-raw
    
    make -j`nproc`
    
    sudo make install
    
    echo '
    ### Xenomai
    export XENOMAI_ROOT_DIR=/usr/xenomai
    export XENOMAI_PATH=/usr/xenomai
    export PATH=$PATH:$XENOMAI_PATH/bin:$XENOMAI_PATH/sbin
    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$XENOMAI_PATH/lib/pkgconfig
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XENOMAI_PATH/lib
    export OROCOS_TARGET=xenomai
    ' >> ~/.xenomai_rc
    echo 'source ~/.xenomai_rc' >> ~/.bashrc
    source ~/.bashrc
    
  2. Xenomai配置

    在xenomai 安装目录添加 lo 文件,默认目录:/usr/xenomai/lib/xenomai/bootstrap.lo,文件内容如下:

    # libbootstrap_pic_la-bootstrap.lo - a libtool object file
    # Generated by libtool (GNU libtool) 2.4.6
    #
    # Please DO NOT delete this file!
    # It is necessary for linking the library.
    
    # Name of the PIC object.
    pic_object='bootstrap-pic.o'
    
    # Name of the non-PIC object
    non_pic_object='bootstrap.o'
    
  3. libmodbus编译

    apt install autoconf automake libtool
    ./autogen.sh
    ./configure --with-gnu-ld --enable-static=yes ac_cv_have_decl_TIOCM_RTS=no
    make && make install
    
  4. 测试与结果

    ​ 使用串口连接kunpeng920机器和测试机器(使用虚机),然后分别在测试机及被测机交替运行,unit-test-server和unit-test-client。unit-test-server和unit-test-client是完整的单元测试套件。

    测试机 kunpeng920
    硬件架构 x86 WMware 虚拟机 kunpeng920 arm物理主机
    系统 OpenEuler Centos8
    内核版本 4.19.90 4.19.206
    测试软件 libmodbus 源码单元测试工具(unit-test-server、unit-test-client) libmodbus 源码单元测试工具(unit-test-server、unit-test-client)
    client端测试 运行unit-test-server 运行unit-test-client,结果全部PASS
    server端测试 运行unit-test-client,结果全部PASS 运行unit-test-server
    client端测试

    ​ 在测试机运行 unit-test-server,kunpeng920 运行 unit-test-client,测试结果如下:

    unit-test-server

    root@localhost:~/libmodbus-3.1.6/tests/.libs# ./unit-test-server rtu
    Opening /dev/ttyUSB0 at 115200 bauds (N, 8, 1)
    Waiting for an indication...
    <11><05><01><30><FF><00><8F><59>
    [11][05][01][30][FF][00][8F][59]
    Waiting for an indication...
    <11><01><01><30><00><01><FE><A9>
    [11][01][01][01][94][88]
    Waiting for an indication...
    <11><0F><01><30><00><25><05><CD><6B><B2><0E><1B><CC><C1>
    [11][0F][01][30][00][25][97][73]
    Waiting for an indication...
    <11><01><01><30><00><25><FE><B2>
    [11][01][05][CD][6B][B2][0E][1B][45][E6]
    
    ...
    
    [11][8F][03][05][F4]
    Waiting for an indication...
    <11><42><00><00>
    ERROR CRC received 0x0 != CRC calculated 0x8DD1
    Unknown Modbus function code: 0x42
    Bytes flushed (0)
    [11][C2][01][B1][65]
    Waiting for an indication...
    

    unit-test-client

    root@localhost:~/libmodbus-3.1.6/tests/.libs# ./unit-test-client rtu
    Opening /dev/rtdm/rtser0 at 115200 bauds (N, 8, 1)
    ** UNIT TESTING **
    1/1 No response timeout modification on connect: OK
    
    TEST WRITE/READ:
    [11][05][01][30][FF][00][8F][59]
    Waiting for a confirmation...
    <11><05><01><30><FF><00><8F><59>
    ###### check_confirmation .... finish
    1/2 modbus_write_bit: OK
    [11][01][01][30][00][01][FE][A9]
    Waiting for a confirmation...
    <11><01><01><01><94><88>
    ###### check_confirmation .... finish
    2/2 modbus_read_bits: OK
    
    ...
    
    OK
    [11][42][00][00][00][00][7B][55]
    Waiting for a confirmation...
    <11><C2><01><B1><65>
    Return an exception on unknown function code: OK
    
    TEST INVALID INITIALIZATION:
    The device string is empty
    OK
    The baud rate value must not be zero
    OK
    The service string is empty
    OK
    
    ALL TESTS PASS WITH SUCCESS.
    
server端测试

​ 在测试机运行 unit-test-client,kunpeng920 运行 unit-test-server,测试结果如下:

unit-test-server

root@localhost:~/libmodbus-3.1.6/tests/.libs# ./unit-test-server rtu
Opening /dev/rtdm/rtser0 at 115200 bauds (N, 8, 1)
loop test start ...
Waiting for an indication...
<11><05><01><30><FF><00><8F><59>
[11][05][01][30][FF][00][8F][59]
Waiting for an indication...
<11><01><01><30><00><01><FE><A9>
[11][01][01][01][94][88]
Waiting for an indication...
<11><0F><01><30><00><25><05><CD><6B><B2><0E><1B><CC><C1>
[11][0F][01][30][00][25][97][73]
Waiting for an indication...
<11><01><01><30><00><25><FE><B2>
[11][01][05][CD][6B][B2][0E][1B][45][E6]
Waiting for an indication...
<11><02><01><C4><00><16><BB><55>
[11][02][03][AC][DB][35][20][18]
Waiting for an indication...
<11><06><01><60><12><34><87><CF>
[11][06][01][60][12][34][87][CF]

...

Bytes flushed (0)
[11][8F][03][05][F4]
Waiting for an indication...
<11><42><00><00>
ERROR CRC received 0x0 != CRC calculated 0x8DD1
Unknown Modbus function code: 0x42
Bytes flushed (0)
[11][C2][01][B1][65]
Waiting for an indication...

unit-test-client

root@localhost:~/libmodbus-3.1.6/tests/.libs# ./unit-test-client rtu
Opening /dev/ttyUSB0 at 115200 bauds (N, 8, 1)
** UNIT TESTING **
1/1 No response timeout modification on connect: OK

TEST WRITE/READ:
[11][05][01][30][FF][00][8F][59]
Waiting for a confirmation...
<11><05><01><30><FF><00><8F><59>
1/2 modbus_write_bit: OK
[11][01][01][30][00][01][FE][A9]
Waiting for a confirmation...
<11><01><01><01><94><88>
2/2 modbus_read_bits: OK

...

OK
[11][42][00][00][00][00][7B][55]
Waiting for a confirmation...
<11><C2><01><B1><65>
Return an exception on unknown function code: OK

TEST INVALID INITIALIZATION:
The device string is empty
OK
The baud rate value must not be zero
OK
The service string is empty
OK

ALL TESTS PASS WITH SUCCESS.

使用说明

基于Xenomai编译的libmodbus要与Xenomai RTDM驱动一起使用!!!

空文件

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/src-openeuler/libmodbus-xenomai.git
git@gitee.com:src-openeuler/libmodbus-xenomai.git
src-openeuler
libmodbus-xenomai
libmodbus-xenomai
master

搜索帮助