Linux | i.MX6ULL Modbus 移植和使用(第二十一章)
01
什么是 Modbus
第一个要重点理解的是:modbus 是一个“纯数据协议”。说到 modbus 协议,经常和 RS232 和 RS485以及以太网联系到一起。那么 modbus 和 RS485 协议有什么关系么?modbus 是纯粹的数据协议,和RS232、RS485 和网络等协议没有一点关系,如果在串口 RS232 上使用 modbus 协议,modbus 只处理通过串口发送前和串口接收后的数据,串口只是在发送数据前使用 modbus 协议来转换数据,接收数据之后,将数据通过 modbus 协议转换出来。
第二个要重点理解的是:modbus 是一个“通用的纯数据协议”。 modbus 是用于工业现场的总线协议,它不仅仅是在 PLC 或者单片机上可以使用,在任何可以跑代码的电子设备上都可以使用,因为 modbus对硬件没有任何定义。当然,modbus 应用范围主要是在工业控制上。如果每一台工业控制设备,都有一种自定义的协议,那将是很恐怖的,modbus 协议可以用在所有控制设备上,所有的工业控制设备都可以兼容modbus 协议。modbus 的本质是一个通用的纯数据协议,是用来规范工业现场各种控制设备的通信协议,
通过 modbus 协议控制设备,通过网络(RS485 和以太网等)可以和其它设备之间通信,不同厂商生产的设备可以很方便的连成工业网络。
---
02
源码下载
可以从 libmodbus 官网 http://libmodbus.org/download/下载 3.1.4 版本。
直接定位:
https://github.com/stephane/libmodbus/releases/tag/v3.1.4
03
编译和移植
交叉编译:arm-linux-gnueabihf
执行编译命令“make”,如下图所示 :
04
移植 ARM 测试程序
进入目录/home/ubuntu/modbus/libmodbus-3.1.4/tests/,查看测试程序 random-testserver.c,如下图所示,
已经编译出来了,但是还是需要修改一下源码中的几个参数,重新编译。
然后执行命令交叉编译命令
arm-linux-gnueabihf-gcc -o random-test-server random-test-server.c -L/home/ubuntu/modbus/install/lib
-lmodbus -I/home/ubuntu/modbus/install/include/modbus
生成可执行文件 random-test-server,如下图所示。
如下图所示,可执行文件是 arm 架构的。至此,arm 服务端的测试例程“random-test-server”编译完成
05
X86-Linux 的 Modbus 的移植和编译
sudo make install
进入 test 目录,前面我们编译的 arm 下的测试程序是 server,那么 Ubuntu 下运行的就应该是 client客户端,如下图所示。
客户端需要在 tests 目录下的修改 random-test-client.c 文件服务端的 IP 地址,如下图所示,作者的服务端(也就是开发板端)IP“192.168.1.120”。
执行命令:
gcc -o random-test-client random-test-client.c `pkg-config --libs --cflags libmodbus`
到此 x86 上的测试程序编译完成。
06
测试
首 先 确保 开 发 板和 虚 拟 机 Ubuntu 可 以 ping 通 , 如图 81.6.1 所 示 ,作 者 虚 拟机 的 IP 为“192.168.1.120”,通过开发板可以 ping 通 Ubuntu。
arm 开发板执行
./random-test-server
Ubuntu 执行
./random-test-client
更多知识,诸位慢慢挖掘吧!!!
故我在
点击下方卡片 关注我
↓↓↓