| 作者 Clemens Friedl,盧森寶亞集團
當飛機上或跑道附近發(fā)生意外事故時,急救人員需要快速進入機艙。在這種情況下,快速架設救援梯有助于快速疏散乘客或機組人員,或讓醫(yī)護人員能夠為他們提供及時的醫(yī)療救助。 最近,盧森寶亞重新設計了飛機內部通道車(更通俗的說法是“救援梯”),旨在最大程度減少安裝時間,同時保持高安全標準并提高易用性(圖 1)。在開始這項工作時,我們還籍此機會重建了現(xiàn)有的控制軟件開發(fā)流程,該流程之前一直基于手寫編碼和大量的車載測試。我們不再使用這種過時的方法,而是采用我們原本以為只對更大型 OEM 具有經濟可行性的方法。具體來說,我們在 MATLAB 和 Simulink 中使用了基于模型的設計,通過仿真驗證我們的早期控制設計,使內外部開發(fā)團隊能夠運行硬件在環(huán)測試,生成產品級代碼,并將項目開發(fā)時間縮短一半。
控制設計面臨的機遇和挑戰(zhàn)
在我們?yōu)樯弦淮仍菰O計控制系統(tǒng)時,當時可用的控制硬件較為有限。因此,我們需要將控制軟件分布到六個 ECU 上。為了滿足安全要求,我們還需要布線和其他組件應有大量冗余。 對于當前的設計,新的硬件讓我們能夠大大簡化架構,并且只需使用兩個 ECU。一個 ECU 通過了安全認證,可以處理所有安全功能,其軟件由我們的供應商 TTControl 的工程師團隊開發(fā)。另一個 ECU 負責運行控制應用軟件,該軟件則由我在盧森寶亞的團隊開發(fā)。
雖然控制系統(tǒng)的架構較為簡單,但我們在實現(xiàn)該系統(tǒng)時仍面臨諸多挑戰(zhàn)。首先,我們需要在獲得救援梯的硬件(包括液壓和機械組件)之前就著手開發(fā)工作。其次,控制器有一項關鍵設計限制,禁止樓梯在升降時隨意停在任何位置。控制器必須從 2,500 個預定義鎖定位置中找到最近的位置。在此位置,機械閂鎖和齒條在重量滿載的情況下應該能夠支撐樓梯(圖 2)。隨著這種復雜性的增加,手工編寫代碼和直接在車輛上進行測試變得不切實際。此類方法實施起來往往很難,而我們的特定需求也使得該過程更具挑戰(zhàn)性。最后,考慮到車輛的尺寸以及在測試過程中需要運行柴油發(fā)動機,所有車載測試都必須在室外進行。過去,我們經常需要在惡劣的天氣或夜晚黑暗中運行測試,以滿足截止期限要求。
開發(fā)被控對象和基本控制器模型
隨著項目的推進,我們開始在 Simulink 中開發(fā)救援梯的被控對象模型。該模型包括用于作動器位置、液壓、電流和 CAN 信號的傳感器。它還包括液壓系統(tǒng)的元件,如閥門和液壓缸。這些元件視制造商數(shù)據表中的信息而定。 除了被控對象模型,我們還使用 Simulink 和 Stateflow 開發(fā)了一個簡單的控制器模型。這個初始模型并未實現(xiàn)我們針對控制軟件提出的所有需求。不過,其功能足以讓我們了解機器將如何運轉,以及我們可能需要對硬件設計進行哪些改進(如果有的話)。
通過將控制器和被控對象模型相結合,我們創(chuàng)建了一個用于運行閉環(huán)仿真的系統(tǒng)級模型(圖 3)。仿真結果的分析影響了我們在以下方面的決定:將哪種液壓升降機用于救援梯,以及實施哪種類型的傳感器。例如,我們最初計劃在液壓缸上使用電流傳感器,但當仿真顯示這些傳感器缺乏足夠的精度時,我們決定改用 CAN 傳感器。過去,這類設計問題只有等到開發(fā)過程的后期(即實車測試階段)才被發(fā)現(xiàn)。
圖 3. 包含被控對象和控制器子模型的系統(tǒng)級模型。
▼ 代碼生成和 HIL 測試
通過桌面仿真驗證了我們的早期控制設計后,我們很快便轉向了 HIL 測試。我們使用 Embedded Coder 從我們的被控對象模型生成了代碼,并將其部署到了一個 TTControl 的 TTC 580 ECU。我們還遵循同樣的流程從控制器模型生成了代碼,并將其部署到了另一個 TTControl 的 ECU。以實際控制器連接到救援梯的方式將這兩個 ECU 連在一起后,我們運行了 HIL 測試來確認控制設計的實時性能,并驗證救援梯觸摸屏控制面板的操作(圖 4)。 我們還為 TTControl 公司從事安全軟件工作的同行提供了相同的 HIL 測試設置。這樣,該團隊便能與我們同時工作,對他們正在開發(fā)的軟件進行自己的測試,而無需登上實際的救援梯。這種 HIL 測試設置不僅使 TTControl 團隊能夠加速他們的軟件開發(fā),而且還能夠幫助他們開始在實際的救援梯上進行測試之前便發(fā)現(xiàn)并解決一些問題。
▼ 車載測試和調試
當 TTControl 團隊完成安全軟件開發(fā)時,我們繼續(xù)開發(fā)并完善控制應用軟件。在這個過程中,我們使用代碼繼承工具 (https://ww2.mathworks.cn/help/simulink/sfg/integrating-existing-c-functions-into-simulink-models-with-the-legacy-code-tool.html) 將 TTControl 工程師手寫的電流和位置控制 C++ 代碼導入我們的 Simulink 模型。然后,我們繼續(xù)運行仿真和 HIL 測試,這不僅是為了驗證我們添加到控制應用的新功能,而且是為了驗證另一個團隊開發(fā)并交付的 C++ 代碼。 此時,我們已經準備好要在實際的救援梯上測試我們的控制器。我們再次使用 Embedded Coder 從 Simulink 模型生成了代碼,并將其部署到了 TTControl 的 ECU。但這次,我們不是將 ECU 連接到 HIL 設置,而是將其連接到了實際的救援梯,并運行了一系列車載測試。 我們通過仿真驗證的所有測試用例,也都在實際的救援梯上順利執(zhí)行。不過,我們確實發(fā)現(xiàn)了一些我們事先沒有考慮到的邊角情況,包括觸摸屏顯示器上的奇怪按鈕組合。通過在 Stateflow 的狀態(tài)機中插入額外的狀態(tài)和轉移,我們解決了這些問題(圖 5)。然后,我們運行了仿真來驗證所做的更改,重新生成了代碼,并在實際的救援梯上再次進行了測試,以確保各方面都正常工作。以前,在我們手寫控制代碼時,凡是涉及添加狀態(tài)和轉移的更改,都需要相當長的時間來實現(xiàn)和調試。
圖 5. 使用 Stateflow 設計的狀態(tài)機概覽。
▼ 在當前項目中使用基于模型的設計
隨著救援梯現(xiàn)已投產,我們對所取得的成果做個總結。在性能方面,這些救援梯可以快速延伸到最高位置,其速度比我們之前的設計要快 20% 左右,這提高了緊急情況下的實際救援速度。從開發(fā)角度看,基于模型的設計幫助我們實現(xiàn)了更可靠的控制系統(tǒng),而用時大約是以前方法的一半。 使用 Embedded Coder 從 Simulink 模型生成代碼,是我們提高開發(fā)速度的關鍵因素之一。為了更好地了解如何利用代碼生成,我們專門花時間學習了 Embedded Coder 的相關培訓課程。除了幫助我們充分利用這款工具之外,這門課程還讓我們對于將代碼生成融入我們工作流的便捷程度大開眼界。以前,我們曾經花費大量時間調試和維護手寫代碼。那時,我們并未意識到有那么多汽車行業(yè)的大型公司都在利用代碼生成實現(xiàn)生產控制軟件。憑借這一認識,再加上我們自己在救援梯方面的第一手經驗,我們的團隊已將基于模型的設計推廣應用到了其他幾個項目,包括目前正在開發(fā)的電動消防車的控制設計。
編輯:黃飛
-
傳感器
+關注
關注
2551文章
51099瀏覽量
753606 -
控制器
+關注
關注
112文章
16361瀏覽量
178071 -
CAN
+關注
關注
57文章
2754瀏覽量
463718 -
ecu
+關注
關注
14文章
886瀏覽量
54504
原文標題:MBD | 使用基于模型的設計為下一代救援梯開發(fā)控制系統(tǒng)
文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論