13.1 功能分析與最終源碼
最終源碼在如下目錄里:
13.1.1 硬件連接
參考《11.5 Modbus RTU客戶端編程與實(shí)驗(yàn)》連接TTL轉(zhuǎn)485模塊,連接Modbus RTU傳感器。在板子上先插上USB鼠標(biāo),連接HDMI顯示器,然后啟動(dòng)開發(fā)板。
13.1.2 運(yùn)行程序
把網(wǎng)盤中如下可執(zhí)行程序放到板子上,假設(shè)放在/mnt目錄下:
解壓后,它里面有2個(gè)目錄:mnt里存放應(yīng)用程序,usr目錄下存放庫文件。在板子上執(zhí)行如下命令:
左右滑動(dòng)查看完整內(nèi)容
# cd /mnt # tar xjf apps.tar.bz2 # ls mnt usr # cd apps # cp -rfd * /
移除出廠自帶的GUI,在開發(fā)板執(zhí)行如下命令:
左右滑動(dòng)查看完整內(nèi)容
# mv /etc/systemd/system/myir.service /home/root # reboot
然后運(yùn)行如下命令啟動(dòng)程序:
左右滑動(dòng)查看完整內(nèi)容
# cd /mnt # echo 0 > /proc/sys/kernel/printk // 關(guān)閉內(nèi)核打印信息 # ./modbus_server_tcp 127.0.0.1 & // 運(yùn)行模擬 modbus rtu 協(xié)議傳感器的程序 # ./control_center server & // 運(yùn)行后臺(tái)程序 # ./demo_lv_modbus_tool & // 運(yùn)行前臺(tái)程序 # ./mqtt_client_app // 運(yùn)行 MQTT 程序
執(zhí)行上述命令后,可以在HDMI界面看到操作界面。參考《13.1.4界面》,使用鼠標(biāo)在控制界面上添加點(diǎn)、設(shè)置MQTT信息。然后就可以通過界面觀察、控制傳感器了。
要使用MQTT,需要先學(xué)習(xí)《13.6 MQTT開發(fā)基礎(chǔ)》:
①在開發(fā)板界面設(shè)置MQTT信息
②啟動(dòng)MQTT Broker
③MQTT客戶端可以如下設(shè)置:
在MQTT客戶端,訂閱“iot/up”主題的信息。
要控制傳感器,需要在顯示屏控制界面添加“點(diǎn)”,才能發(fā)布“iot/down”主題的信息去控制這個(gè)點(diǎn),信息格式如下(注意大小寫):
左右滑動(dòng)查看完整內(nèi)容
{"port_info": "/dev/ttySC4,115200,8N1","dev_addr": 3,"reg_addr": 0,"reg_type": "0x", "value": 0}
13.1.3 從源碼編譯程序
先配置環(huán)境,在Ubuntu執(zhí)行:
左右滑動(dòng)查看完整內(nèi)容
$ source /opt/remi-sdk/environment-setup-aarch64-poky-linux
1. 編譯libev庫
操作命令如下:
左右滑動(dòng)查看完整內(nèi)容
$ 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/
把庫復(fù)制到開發(fā)板上,在Ubuntu上執(zhí)行如下命令:
左右滑動(dòng)查看完整內(nèi)容
$ scp tmp/lib/*so* root@192.168.5.9:/usr/lib64/
2. 編譯jsonrpc庫
操作命令如下:
左右滑動(dòng)查看完整內(nèi)容
$ 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/
把庫復(fù)制到開發(fā)板上,在Ubuntu上執(zhí)行如下命令:
左右滑動(dòng)查看完整內(nèi)容
$ scp tmp/lib/*so* root@192.168.5.9:/usr/lib64/
3. 編譯libmodbus庫
參考《11.4.1 編譯安裝》。
4. 編譯MQTT庫
參考《13.6.5 MQTT測試程序上機(jī)實(shí)驗(yàn)》。
5. 編譯LVGL程序
操作命令如下:
左右滑動(dòng)查看完整內(nèi)容
$ 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. 編譯后臺(tái)程序
操作命令如下:
$ tar xzf control_center.tar.bz2 $ cd control_center $ make
生成“control_center”可執(zhí)行程序。
7. 編譯MQTT程序
操作命令如下:
$ tar xjf mqtt_client.tar.bz2 $ cd mqtt_client $ make
生成“mqtt_client_app”可執(zhí)行程序。
8. 編譯Modbus TCP程序
操作命令如下:
左右滑動(dòng)查看完整內(nèi)容
$ tar xjf modbus_client.tar.bz2 $ cd modbus_client $ make
生成“modbus_server_tcp”可執(zhí)行程序。
13.1.4 界面
在前臺(tái)程序,可以增加、修改、刪除“點(diǎn)”(“點(diǎn)”是工業(yè)控制領(lǐng)域的概念,參考《13.2.2前后臺(tái)的交互》)。可以讀取“點(diǎn)”、寫“點(diǎn)”。還可以設(shè)置MQTT參數(shù)、升級(jí)某個(gè)傳感器程序。
1. 整體界面
運(yùn)行程序后,會(huì)根據(jù)“/etc/control.cfg”生成界面。第1次運(yùn)行程序是沒有“/etc/control.cfg”文件,你在屏幕上看到的是空白界面。如果“/etc/control.cfg”內(nèi)容如下:
左右滑動(dòng)查看完整內(nèi)容
{"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. 添加/設(shè)置點(diǎn)位
點(diǎn)擊右上角的加號(hào),可以添加一個(gè)“點(diǎn)位”,界面如下(可以選擇使用RTU協(xié)議或TCP協(xié)議,可以設(shè)置讀取周期,可以設(shè)置設(shè)備地址、寄存器地址、寄存器類別):
3. MQTT設(shè)置界面
點(diǎn)擊“MQTT Setting”后,設(shè)置界面如下:
3. 升級(jí)傳感器
點(diǎn)擊“Update”后,界面如下:
本界面僅供演示,并未實(shí)現(xiàn)升級(jí)功能:因?yàn)閭鞲衅魅绾紊?jí),取決于傳感器內(nèi)部實(shí)現(xiàn),我們無法得知升級(jí)方法。
-
傳感器
+關(guān)注
關(guān)注
2552文章
51219瀏覽量
754620 -
Linux
+關(guān)注
關(guān)注
87文章
11320瀏覽量
209834 -
源碼
+關(guān)注
關(guān)注
8文章
646瀏覽量
29281 -
上位機(jī)
+關(guān)注
關(guān)注
27文章
944瀏覽量
54882
原文標(biāo)題:Linux上位機(jī)開發(fā) - RZ MPU工業(yè)控制教程連載(47)
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論