1. 开发板上配置libmodbus

1.1. 方法1:apt安装

1
2
sudo apt-get install libmodbus-dev
sudo apt-get install libmodbus5

1.2. 方法2:GitHub源码安装

下载地址:GitHub - stephane/libmodbus: A Modbus library for Linux, Mac OS, FreeBSD and Windows

配置前的准备:

1
2
3
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool

将代码解压到虚拟机,进入到代码目录下(以下操作在ubuntu虚拟机上进行)

第一步:在代码目录下运行./autogen.sh

第二步:执行sudo ./configure && make install

以上两步执行完毕后,会在代码目录下生成一个install目录,进到install目录

img

将install目录下的子目录中的所有文件拷贝到开发板/usr/目录下与之对应的文件夹中。

将install目录拷贝到开发板上,在开发板上进入install目录,如下:

img

执行如下命令:

1
2
3
sudo cp -r ./include/* /usr/include/
sudo cp -r ./lib/* /usr/lib/
sudo cp -r ./share/* /usr/share/

2. 在开发板上运行modbus测试程序

在Github源码目录下,作者提供了一个放测试程序的目录tests

img

这里以 unit-test-client.c 和 unit-test-server.c用作测试用例:

img

注****:以下操作是在GitHub源码安装配置modbus环境的前提下进行的,直接采用apt安装可能会导致版本不兼容的问题。

2.1. 以Modbus-RTU为例

在rk3562开发板上,找到两路RS232串口可以用作Modbus-RTU,如图:

img

用杜邦线短接,使其能自收自发(以上两个RS232接口的节点分别为/dev/ttyS6/dev/ttyS8)。

修改unit-test-client.c 和 unit-test-server.c测试代码,指定RS232节点。

unit-test-client.c :

img

unit-test-server.c:

img

修改完毕后,进入虚拟机libmodbus源码目录,在虚拟机上交叉编译unit-test-client.c , unit-test-server.c:

1
2
book@ubuntu:~/tests$ <交叉编译工具链> ./unit-test-client.c -o unit-test-client -L../install/lib/ -lmodbus -I../install/include/modbus
book@ubuntu:~/tests$ <交叉编译工具链> ./unit-test-server.c -o unit-test-server -L../install/lib/ -lmodbus -I../install/include/modbus

将编译生成的两个可执行文件拷贝到开发板上运行:

img

在开发板上打开两个shell窗口,一个执行unit-test-server,一个执行unit-test-client(应先执行unit-test-server)

注****:以下是测试代码rtu的使用样例,更多用法请参考GitHub源码。

1
2
./unit-test-server rtu /dev/ttyS8
./unit-test-client rtu /dev/ttyS6

左边为client,右边为server,收发如下:

img