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文章
51227瀏覽量
754650 -
Linux
+關注
關注
87文章
11320瀏覽量
209842 -
源碼
+關注
關注
8文章
647瀏覽量
29281 -
上位機
+關注
關注
27文章
944瀏覽量
54883
原文標題:Linux上位機開發 - RZ MPU工業控制教程連載(47)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論