13.1 功能分析与最终源码
最终源码在如下目录里:
13.1.1 硬件连接
参考《11.5 Modbus RTU客户端编程与实验》连接TTL转485模块,连接Modbus RTU传感器。在板子上先插上USB鼠标,连接HDMI显示器,然后启动开发板。
13.1.2 运行程序
把网盘中如下可执行程序放到板子上,假设放在/mnt目录下:
解压后,它里面有2个目录:mnt里存放应用程序,usr目录下存放库文件。在板子上执行如下命令:
左右滑动查看完整内容
# cd /mnt # tar xjf apps.tar.bz2 # ls mnt usr # cd apps # cp -rfd * /
移除出厂自带的GUI,在开发板执行如下命令:
左右滑动查看完整内容
# mv /etc/systemd/system/myir.service /home/root # reboot
然后运行如下命令启动程序:
左右滑动查看完整内容
# cd /mnt # echo 0 > /proc/sys/kernel/printk // 关闭内核打印信息 # ./modbus_server_tcp 127.0.0.1 & // 运行模拟 modbus rtu 协议传感器的程序 # ./control_center server & // 运行后台程序 # ./demo_lv_modbus_tool & // 运行前台程序 # ./mqtt_client_app // 运行 MQTT 程序
执行上述命令后,可以在HDMI界面看到操作界面。参考《13.1.4界面》,使用鼠标在控制界面上添加点、设置MQTT信息。然后就可以通过界面观察、控制传感器了。
要使用MQTT,需要先学习《13.6 MQTT开发基础》:
①在开发板界面设置MQTT信息
②启动MQTT Broker
③MQTT客户端可以如下设置:
在MQTT客户端,订阅“iot/up”主题的信息。
要控制传感器,需要在显示屏控制界面添加“点”,才能发布“iot/down”主题的信息去控制这个点,信息格式如下(注意大小写):
左右滑动查看完整内容
{"port_info": "/dev/ttySC4,115200,8N1","dev_addr": 3,"reg_addr": 0,"reg_type": "0x", "value": 0}
13.1.3 从源码编译程序
先配置环境,在Ubuntu执行:
左右滑动查看完整内容
$ source /opt/remi-sdk/environment-setup-aarch64-poky-linux
1. 编译libev库
操作命令如下:
左右滑动查看完整内容
$ tar xjf libev.tar.bz2 $ cd libev/ $ ./configure --prefix=$PWD/tmp --host=aarch64-poky-linux CFLAGS="-mtune=cortex-a55 -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-s ecurity -Werror=format-security --sysroot=/opt/remi-sdk/sysroots/a arch64-poky-linux" $ make -j 16 $ make install $ ls tmp/ include lib share $ sudo cp -rf tmp/include/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/include/ $ sudo cp -rfd tmp/lib/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/lib64/
把库复制到开发板上,在Ubuntu上执行如下命令:
左右滑动查看完整内容
$ scp tmp/lib/*so* root@192.168.5.9:/usr/lib64/
2. 编译jsonrpc库
操作命令如下:
左右滑动查看完整内容
$ tar xjf jsonrpc-c.tar.bz2 $ cd jsonrpc-c/ $ autoreconf -i $ ./configure --prefix=$PWD/tmp --host=aarch64-poky-linux CFLAGS="-mtune=cortex-a55 -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-s ecurity -Werror=format-security --sysroot=/opt/remi-sdk/sysroots/a arch64-poky-linux" $ make -j 16 $ make install $ ls tmp/ include lib $ sudo cp -rf tmp/include/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/include/ $ sudo cp -rfd tmp/lib/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/lib64/
把库复制到开发板上,在Ubuntu上执行如下命令:
左右滑动查看完整内容
$ scp tmp/lib/*so* root@192.168.5.9:/usr/lib64/
3. 编译libmodbus库
参考《11.4.1 编译安装》。
4. 编译MQTT库
参考《13.6.5 MQTT测试程序上机实验》。
5. 编译LVGL程序
操作命令如下:
左右滑动查看完整内容
$ tar xjf demo_lv_modbus_tool.tar.bz2 $ cd demo_lv_modbus_tool/ $ mkdir build $ cd build $ cmake .. $ make -j 16 $ ls ../bin/ demo_lv_modbus_tool
6. 编译后台程序
操作命令如下:
$ tar xzf control_center.tar.bz2 $ cd control_center $ make
生成“control_center”可执行程序。
7. 编译MQTT程序
操作命令如下:
$ tar xjf mqtt_client.tar.bz2 $ cd mqtt_client $ make
生成“mqtt_client_app”可执行程序。
8. 编译Modbus TCP程序
操作命令如下:
左右滑动查看完整内容
$ tar xjf modbus_client.tar.bz2 $ cd modbus_client $ make
生成“modbus_server_tcp”可执行程序。
13.1.4 界面
在前台程序,可以增加、修改、删除“点”(“点”是工业控制领域的概念,参考《13.2.2前后台的交互》)。可以读取“点”、写“点”。还可以设置MQTT参数、升级某个传感器程序。
1. 整体界面
运行程序后,会根据“/etc/control.cfg”生成界面。第1次运行程序是没有“/etc/control.cfg”文件,你在屏幕上看到的是空白界面。如果“/etc/control.cfg”内容如下:
左右滑动查看完整内容
{"port_info": "/dev/ttySC4,115200,8N1", "dev_addr": 3, "reg_addr": 0, "reg_type": "0x ", "period": 300} {"port_info": "/dev/ttySC4,115200,8N1", "dev_addr": 3, "reg_addr": 1, "reg_type": "3x ", "period": 300} {"port_info": "/dev/ttySC4,115200,8N1", "dev_addr": 3, "reg_addr": 0, "reg_type": "3x ", "period": 300} {"broker": "192.168.5.10", "port": 1883, "client_id": "dev_019999", "user": "100ask99 ", "password": "100asktech99", "publish": "/iot/up", "subcribe": " /iot/down"}
则可以看到如下界面:
2. 添加/设置点位
点击右上角的加号,可以添加一个“点位”,界面如下(可以选择使用RTU协议或TCP协议,可以设置读取周期,可以设置设备地址、寄存器地址、寄存器类别):
3. MQTT设置界面
点击“MQTT Setting”后,设置界面如下:
3. 升级传感器
点击“Update”后,界面如下:
本界面仅供演示,并未实现升级功能:因为传感器如何升级,取决于传感器内部实现,我们无法得知升级方法。
-
传感器
+关注
关注
2552文章
51219浏览量
754616 -
Linux
+关注
关注
87文章
11320浏览量
209834 -
源码
+关注
关注
8文章
646浏览量
29280 -
上位机
+关注
关注
27文章
944浏览量
54882
原文标题:Linux上位机开发 - RZ MPU工业控制教程连载(47)
文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论