第0章 項(xiàng)目方案介紹
0.1 功能介紹
本課程來自一個(gè)真實(shí)項(xiàng)目:多個(gè)氣體傳感器的管理。由于氣體傳感器比較昂貴,本課程里使用普通傳感器來做實(shí)驗(yàn)。真實(shí)項(xiàng)目的使用場景如下圖所示:
- 上位機(jī)操作界面:可以監(jiān)測多個(gè)傳感器
- 中控:圖片暫時(shí)無法放出來,它的功能是向下通過 RS485 連接多個(gè)傳感器,向上通過USB 口連接 PC。中控平時(shí)就要時(shí)刻采樣傳感器的數(shù)據(jù),當(dāng)上位機(jī)需要數(shù)據(jù)時(shí)通過 USB 口高效率地傳輸數(shù)據(jù)。
- 傳感器:有多個(gè)機(jī)位,每個(gè)機(jī)位都有傳感器
使用場景如下:
- 設(shè)置傳感器 ID:拿到一個(gè)傳感器后,要通過上位機(jī)設(shè)置它的 ID,然后把它放在某個(gè)機(jī)位
- 中控監(jiān)測傳感器的狀態(tài):在線/離線,上位機(jī)周期性地讀取狀態(tài)信息
- 中控讀取傳感器數(shù)據(jù),上位機(jī)周期性地讀取這些數(shù)據(jù)
- 上位機(jī)顯示傳感器狀態(tài)、顯示傳感器數(shù)據(jù)
- 上位機(jī)可以讀取中控、各個(gè)傳感器的程序版本信息,升級(jí)固件
0.2 硬件方案
在工業(yè)控制場景中,上位機(jī)通過中控,去控制多個(gè)設(shè)備,硬件框圖如下:
各部件的作用如下:
- 上位機(jī):功能強(qiáng)大,方便操作,比如記錄歷史數(shù)據(jù)、圖像化顯示數(shù)據(jù)、升級(jí)硬件程序
- 中控:在上位機(jī)和傳感器之間轉(zhuǎn)發(fā)數(shù)據(jù),當(dāng)傳感器很多時(shí),不使用中控的話,上位機(jī)無法快速獲得各個(gè)傳感器的數(shù)據(jù)
- 傳感器:采樣數(shù)據(jù)、上報(bào)數(shù)據(jù)
0.3 軟件方案
0.3.1 上位機(jī)方案
上位機(jī):
- 界面使用 LVGL 編寫,界面和底層數(shù)據(jù)通過 JSON 進(jìn)行隔離,方便更換 GUI
- 數(shù)據(jù)傳輸基于 libmodbus,可以使用 Modbus RTU 協(xié)議,也可以使用 Modbus TCP 協(xié)議
- 自定義協(xié)議,以實(shí)現(xiàn):設(shè)備 ID 寫入、設(shè)備狀態(tài)檢測、數(shù)據(jù)讀寫、程序升級(jí)等功能
0.3.2 中控方案
中控程序復(fù)雜,基于 FreeRTOS 編寫。
中控上的程序分為 2 個(gè):Bootloader(用于升級(jí)應(yīng)用程序)、應(yīng)用程序。中控的
Flash 如下劃分:
中控上電后,首先運(yùn)行 Bootloader,它根據(jù)配置信息決定是否啟動(dòng) APP1 或 APP2,
還是保存運(yùn)行 Bootloader 本身:
- Bootloader:接收上位機(jī)下發(fā)的固件,升級(jí) APP
- APP1 或 APP2:平時(shí)運(yùn)行的程序,收集傳感器數(shù)據(jù),等待上位機(jī)讀取
上位機(jī)和中控 Bootloader 的程序框架如下:
上位機(jī)和中控 APP 的程序框架如下:
0.3.3 傳感器方案
傳感器上的程序也分為 2 個(gè):Bootloader(用于升級(jí)應(yīng)用程序)、應(yīng)用程序。傳感器的 Flash 如下劃分:
傳感器上電后,首先運(yùn)行Bootloader,它根據(jù)配置信息決定是否啟動(dòng)APP1或APP2,還是保存運(yùn)行Bootloader本身:
- Bootloader:上位機(jī)給中控下發(fā)傳感器的固件,中控再把它傳給傳感器的Bootloader,Bootloader升級(jí)APP
- APP1或APP2:平時(shí)運(yùn)行的程序,讀取傳感器數(shù)據(jù),返回給中控
中控APP和傳感器Bootloader的程序框架如下:
中控APP和傳感器APP的程序框架如下:
0.3.4 技術(shù)難點(diǎn)
難點(diǎn)在于如何保證多個(gè)傳感器數(shù)據(jù)上報(bào)以及上位機(jī)下發(fā)不丟包,因?yàn)樗粌H僅是單塊板了,還可以集聯(lián)多個(gè),所以它的拓展性很強(qiáng)。后期還可以非常方便地給傳感器進(jìn)行批量升級(jí);另外在工廠場景下,會(huì)涉及到數(shù)據(jù)監(jiān)控,產(chǎn)線情況監(jiān)控等場景。項(xiàng)目涉及上位機(jī)開發(fā)、FreeRTOS程序開發(fā)、裸機(jī)程序開發(fā)、單片機(jī)的控制。也能掌握傳感器數(shù)據(jù)通訊、傳感器協(xié)議定義、程序升級(jí)等知識(shí)點(diǎn)。還可以學(xué)習(xí)良好的程序開發(fā)模式:一套代碼如何適應(yīng)不同的主控芯片、不同的操作系統(tǒng)(FreeRTOS和裸機(jī))。最后,怎么寫出穩(wěn)定可靠、容
易擴(kuò)展的程序,這個(gè)將會(huì)貫穿整個(gè)學(xué)習(xí)過程——這是產(chǎn)品,不是練手Demo。
-
傳感器
+關(guān)注
關(guān)注
2545文章
50445瀏覽量
751031 -
嵌入式
+關(guān)注
關(guān)注
5059文章
18973瀏覽量
302002 -
RS485
+關(guān)注
關(guān)注
39文章
1135瀏覽量
82071
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論