陳志華,童曉斌,張陸續
(湖南三一智能控制設備有限公司,長沙 410100)
在工程施工中,能代替繁重體力勞動的機械與機具,統稱為工程機械,其中帶作業裝置的自行式工程機械,簡稱工程車輛。工程車輛種類繁多,如裝載機、泵車、壓路機、推土機、攤鋪機等,每種工程車輛均可在工程施工中完成特定的工程作業[1]。
工程車輛能夠實現特定的工程作業,是由于其具備一個或多個控制系統,在控制系統中實現了對應工程車輛的工作邏輯。在傳統的工程車輛控制系統中,通過PLC中的編程手段僅能夠實現標準的控制邏輯,確保工程車輛能夠正常工作,對于復雜算法設計和行業成熟技術引用沒有成熟手段。隨著汽車行業和工程車輛行業的結合越來越緊密,原本在汽車行業使用的基于MATLAB的開發模式給解決工程車輛的復雜算法和成熟技術集成難題提供了新的方向和思路,為此可將MATLAB融入工程車輛控制系統,但工程車輛的控制系統需解決以下3個問題:
1)MATLAB模型如何在現有工程車輛控制系統中集成;
2)MATLAB算法與原有的工程車輛CODESYS控制邏輯如何進行結合;
3)如何實現算法模型和控制邏輯之間的時序,確保其運行的準確性。
基于上述問題,本文根據工程車輛控制系統的特點,研究并設計了一種基于MATLAB的工程車輛控制系統通用設計平臺。
工程車輛控制系統通用設計平臺總體設計框圖如圖1所示。

圖1 工程車輛控制系統通用設計平臺總體設計框圖
工程車輛控制系統通用設計平臺主要是結合控制系統、MATLAB和CODESYS來完成其平臺的建設,整體框架采用上下位機的結構,上位機可以采用普通的PC設備,運行MATLAB和CODESYS軟件,下位機即實際的工程車輛控制系統,實時運行MATLAB算法模型和CODESYS邏輯。
基于CODESYS的嵌入式PLC平臺由其上位機軟件開發系統(包括開發層和通訊層)和嵌入式實時核系統組成,并且其提供了特有的IO驅動模塊開發接口,可以集成自定義IO模塊來完成相關功能的設計[2]。
基于MATLAB的模型開發設計也采用與CODESYS相同的架構,其上位機安裝MATLAB軟件,實現算法建模、離線仿真、交叉編譯、模型解析等功能,下位機實現模型的運算和調度,實時按照模型中設定的時間對模型進行計算。
在上位機中,MATLAB和CODESYS是兩個獨立的軟件,可以獨立開發完成各自部分的算法或者邏輯,并且都可通過以太網直接下載到下位機進行運行,兩者之間通過MATLAB模型編譯過程中生成的模型描述文件(XML)來進行模型信息交互,也就是變量交互指針。在下位機中分別運行MATLAB的BackGround和CODESYS的RunTime,分別用以調度MATLAB模型和CODESYS應用,在CODESYS中導入的模型描述文件中定義的變量交互指針指向MATLAB模型在下位機中運行時的變量空間,從而使得在CODESYS中可以實時監控MATLAB的變量。

圖2 基于MATLAB的模型開發流程設計框圖
基于MATLAB的模型開發流程設計包括模型設計、驅動模塊(用戶C模塊)接入、自動代碼生成、編譯連接下載和實時驗證實驗,具體開發流程如圖2所示。
離線建模仿真是基于MATLAB的模型設計方法來實現的,開發工作完全基于模型設計,在設計的過程中可以離線仿真檢查模型的正確性,實現在設計時進行需求的迭代[3]。離線建模仿真過程可以完成與硬件無關的所有算法的驗證,與硬件相關的模型部分也可以通過設定硬件值的方法來完成驗證。
驅動模塊接入是針對控制系統來開發的通用模塊庫,包括用戶自定義基礎模塊庫(MATLAB或者C模塊)、專業算法模塊庫(EMD算法庫、Filter算法庫、TOF算法庫等)、硬件接口庫(DI、DO、PWM等),具體如圖3所示。算法庫設計是一種增量設計模式,用戶可根據需要進行算法庫的添加,在不同的工程應用中,借用已有的算法庫不僅能提高開發效率,也可有效避免新開發帶來的不穩定性風險。

圖3 驅動模塊庫示意圖
自動代碼生成借助MATLAB的RTW(Real-Time Workshop)工具箱來完成[4]。一般來說,控制系統支持C代碼的執行,因此,在使用自定義的系統TLC中繼承了MATLAB已有的ert.tlc或者grt.tlc的代碼生成規則來生成代碼,確保代碼生成的可靠性,在此基礎上增加個性化代碼生成規則來實現其與CODESYS的對接。
編譯鏈接下載需要將當前控制系統的編譯器集成到MATLAB中,并且通過在系統TLC對應的TMF中建立編譯器關聯關系和規定編譯選項的方式進行支持,可以完成一鍵編譯鏈接下載。編譯器是基于控制系統的開發環境提取的,能夠將自動代碼過程生成的C代碼、驅動模塊庫對應的代碼以及框架代碼一起編譯鏈接,生成能夠在控制系統中直接執行的二進制文件。
實時驗證試驗部分采用CODESYS來完成,在CODESYS中導入編譯過程生成的XML文件,該文件不僅規定了MATLAB模型與CODESYS進行數據交互的接口,還制定了CODESYS對MATLAB模型的控制接口。
基于MATLAB和CODESYS的協同運算設計流程如圖4所示,是基于3個方面來完成的:
1)MATLAB模型代碼生成過程中自動生成CODESYS可導入的模型描述文件XML;
2)在CODESYS中通過模型描述文件實現CODESYS數據端口與MATLAB模型變量內存地址的綁定;
3)在運行的過程中MATLAB模型和CODESYS邏輯代碼去與變量交互區進行數據交互。
在MATLAB代碼生成的過程中,MATLAB提供了可插入自定義腳本的功能,在腳本中根據IEC61131的標準生成對應模型的XML文件,該文件描述了模型對應的輸入輸出變量及用戶標識的需要監控的變量表,可直接通過CODESYS的PLCOpenXML導入功能直接導入已有的邏輯算法工程中,并且自動生成對應的變量結構指針,通過這些變量結構指針可直接訪問MATLAB模型的變量。
將CODESYS邏輯代碼中已有的變量跟變量結構指針建立綁定關系,如賦值、運算、引用等,使得MATLAB模型在CODESYS邏輯代碼中就相當于一個模塊來調用。
在控制系統中MATLAB模型運行時將會開辟對應的變量地址空間,并且將上述模型信息XML文件中定義的變量的地址空間直接映射為變量交互區,在CODESYS邏輯運行的時候根據模型信息XML文件中的描述信息來訪問變量交互區,從而使得MATLAB和CODESYS可以協同計算。

圖4 基于MATLAB和CODESYS的協同計算流程圖
一般情況下,控制系統所采集到的機械故障信號都不是線性信號和平穩信號。在泵車設計過程中,泵車臂架振動信號也是這種無序的信號,怎么將臂架振動規律統計出來一直是一個難題。經驗模態分解(Empirical Mode Decomposition,EMD)方法是一種處理非線性、非穩定信號的有效分析方法,主要包含EMD分解和希爾伯特變換兩個過程[5]。在本平臺中使用EMD方法來處理臂架振動信號,可統計臂架振動規律,具體實現過程如下:
1)在控制系統中,通過傳感器采集臂架角度;
2)根據臂架本身的特性和其角度信息計算出臂架末端的位置信息;
3)將臂架末端位置數據傳入EMD算法中進行分解和統計;
4)得出臂架振動規律來進一步優化臂架操控算法。
其中,EMD算法在傳統控制系統中用PLC代碼無法實現,采用本設計平臺,用MATLAB模型來實現EMD算法,將臂架末端數據作為模型輸入,統計結果作為模型輸出,如此則可將臂架在一段時間內的振動數據統計出來,振動數據如圖5所示。

圖5 臂架振動數據獲取圖
通過對大量泵車的臂架數據的收集和分析,可以得出臂架振動規律,根據該規律來改變臂架操控屬性設置,優化控制算法,從而達到提高臂架穩定性,更進一步提升施工安全性的目標。
當前全球面臨著能源短缺的危機,并且大氣污染也是急待解決的難題。這兩大問題直接導致了傳統交通和工程機械向著電動化方向發展[6]。在電動化轉型的過程中,傳統交通工具——汽車已經走在了前頭,采用本設計平臺可以將汽車行業成熟的電動化應用模塊快速拿來在工程機械控制系統中集成,從而加快工程機械的電動化轉型。具體實現如下:
1)將電動化模型封裝為MATLAB模型,提取其輸入輸出,如圖6、圖7所示;
2)在CODESYS中導入模型描述文件,并且將模型對應的端口跟實際的物理變量綁定。

圖6 模型封裝

圖7 具體算法
可在實車上通過CODESYS軟件來對MATLAB模型進行算法參數優化和標定,也可借用其曲線繪制功能來查看變量之間變換的聯系和規律,從而在精確的時間點上精準地把控算法的變換情況,可將算法的最優配置在線調出來,使得車輛性能最佳,曲線繪制功能示意圖如圖8所示。

圖8 曲線監控、對比示意圖
在傳統的泵車使用過程中,往往由于支腿和臂架展開匹配不到位導致泵車側翻事故頻發,采用該設計平臺在MATLAB中對整車重心進行算法仿真,仿真結果如圖9所示,并且將其直接轉換為代碼在控制系統中進行計算,結果如圖10所示,能夠將當前支腿打開位置、角度對應的臂架可伸展的最高、最遠臨界點精準計算出來??蓪⒃撆R界值傳遞給顯示屏,在顯示屏中將相對應的信息提示出來,用于指導用戶作業和做出臨界點預警,從而提高泵車使用的安全性。

圖9 泵車整車重心仿真結果

圖10 泵車整車重心實際運行結果
傳統泵車打泵的過程中,料斗料位的控制要么通過按喇叭警示要么通過人工呼喊提示的方式來實現,并且需要在施工現場和投料現場分別安排人員來進行操作。
在料斗上安裝攝像頭,如圖11所示,捕獲料斗料位信息傳遞給控制系統,在控制系統中采用本設計平臺通過料位檢測圖像識別算法對料位信息進行分析處理,得出當前是否需要投料,并且將結果傳遞給投料設備(如攪拌車),從而達到自動投料的效果,既可提高投料的效率,節約人力,又可減少噪聲和操作不及時引發的其他問題。
本文在已有的工程車輛控制系統基礎上提供了一種基于MATLAB的工程車輛控制系統通用設計平臺的設計實現方法,實現了MATLAB與已有控制系統相融合、MATLAB模型和CODESYS邏輯在正確的時序下協同運算的功能,解決了現有控制系統在復雜算法設計和快速集成成熟算法模塊方面不足的問題。
在實際工作中已使用MATLAB的EMD算法來獲取泵車臂架振幅,并通過統計分析改進設計以提高泵車的穩定性和安全性;在智慧礦車系統中可將現有汽車行業的標準模塊拿來直接使用,提高了整車設計和開發效率;在泵車控制系統中使用在MATLAB中離線仿真計算過的重心算法,可提升算法開發集成效率,提升泵車安全性;使用圖像識別算法進行料位檢測,可實現泵車與攪拌車協同工作,從而提高泵車工作效率,并節約人力。
實踐證明,采用該平臺可突破傳統控制系統局限性,提高復雜算法開發效率,增加模塊化設計功能,擴展控制系統應用方向,從而加快工程車輛數字化、智能化轉型。

圖11 料斗攝像頭安裝現場圖