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