问答
直播中

chen000000009

9年用户 389经验值
擅长:电源/新能源 模拟技术 控制/MCU
私信 关注

【MYS-6ULX-IOT试用体验】工业协议Modbus的移植二

6.3动态库的部署
编译完成以后对所有生成的文件进行压缩并用U盘或者其他方法拷贝到开发板的系统里面,这里必须要压缩之后才能拷贝,否则会报错,压缩命令为
tar c***libmodbus-linux.tar.gz lib/libmodbus.*
压缩完之后得到一个名为libmodbus-linux.tar.gz的文件,将这个文件拷贝到开发板的文件系统的lib目录下,拷贝命令为
cp libmodbus-linux.tar.gz/lib
然后执行解压命令直接解压到lib目录
tar -zxvflibmodbus-linux.tar.gz
完成之后列举lib目录下的文件,应如下图所示
8.jpg
到了这一步,动态库的部署就完成了。
6.4测试
回到Ubuntu虚拟机,打开modbus文件夹,下面有个名为test的文件夹,找到random-test-server.c文件,
9.jpg
打开它,然后找到其中的一句
ctx =modbus_new_tcp("127.0.0.1", 1502);
改为
ctx =modbus_new_tcp(NULL, 1502);
意思是测试程序不指定IP地址,如此一来使用的IP地址就是开发板自身的IP地址了.
编译程序,命令为
arm-linux-gnueabihf-gccrandom-test-server.c -o random-test-server -I /home/aa1234/桌面/libmodbus-3.1.4/libmodbus-release/include/modbus  -L /home/aa1234/桌面/libmodbus-3.1.4/libmodbus-release/lib–l modbus
意思是编译random-test-server.c文件,输出一个名为random-test-server的二进制文件, 将libmodbus-release/include/modbus作为头文件存放的地址,将libmodbus-release/lib作为编译链接的存放地址.完成之后会生成名为random-test-server的二进制文件,照例,还是需要确认一下这个文件是在ARM环境下执行的
10.jpg
确认无误之后将这个文件放到开发板执行首先还是要设定开发板的ip地址,这里笔者使用的是192.168.1.6
11.jpg
确定能够ping通之后运行random-test-server,命令为
./random-test-server
上位机打开modbuspoll软件,这个软件是专门用于PC与下位机进行Modbus通信的,设置相关信息,包括ip地址,还有端口,此处要注意,端口使用的是1502,而不是国际上规定的502。打开之后就可以使用相关命令了。
12.jpg
演示一下,先选择16命令,即写入多个寄存器,然后将前面四个寄存器设置为1234。
13.jpg
然后使用03命令,即读取多个寄存器,可以看到确实能够读取到对应的值,说明实验成功。
14.jpg

更多回帖

发帖
×
20
完善资料,
赚取积分