陳志華,童曉斌,張陸續(xù)
(湖南三一智能控制設(shè)備有限公司,長(zhǎng)沙 410100)
在工程施工中,能代替繁重體力勞動(dòng)的機(jī)械與機(jī)具,統(tǒng)稱為工程機(jī)械,其中帶作業(yè)裝置的自行式工程機(jī)械,簡(jiǎn)稱工程車輛。工程車輛種類繁多,如裝載機(jī)、泵車、壓路機(jī)、推土機(jī)、攤鋪機(jī)等,每種工程車輛均可在工程施工中完成特定的工程作業(yè)[1]。
工程車輛能夠?qū)崿F(xiàn)特定的工程作業(yè),是由于其具備一個(gè)或多個(gè)控制系統(tǒng),在控制系統(tǒng)中實(shí)現(xiàn)了對(duì)應(yīng)工程車輛的工作邏輯。在傳統(tǒng)的工程車輛控制系統(tǒng)中,通過(guò)PLC中的編程手段僅能夠?qū)崿F(xiàn)標(biāo)準(zhǔn)的控制邏輯,確保工程車輛能夠正常工作,對(duì)于復(fù)雜算法設(shè)計(jì)和行業(yè)成熟技術(shù)引用沒(méi)有成熟手段。隨著汽車行業(yè)和工程車輛行業(yè)的結(jié)合越來(lái)越緊密,原本在汽車行業(yè)使用的基于MATLAB的開(kāi)發(fā)模式給解決工程車輛的復(fù)雜算法和成熟技術(shù)集成難題提供了新的方向和思路,為此可將MATLAB融入工程車輛控制系統(tǒng),但工程車輛的控制系統(tǒng)需解決以下3個(gè)問(wèn)題:
1)MATLAB模型如何在現(xiàn)有工程車輛控制系統(tǒng)中集成;
2)MATLAB算法與原有的工程車輛CODESYS控制邏輯如何進(jìn)行結(jié)合;
3)如何實(shí)現(xiàn)算法模型和控制邏輯之間的時(shí)序,確保其運(yùn)行的準(zhǔn)確性。
基于上述問(wèn)題,本文根據(jù)工程車輛控制系統(tǒng)的特點(diǎn),研究并設(shè)計(jì)了一種基于MATLAB的工程車輛控制系統(tǒng)通用設(shè)計(jì)平臺(tái)。
工程車輛控制系統(tǒng)通用設(shè)計(jì)平臺(tái)總體設(shè)計(jì)框圖如圖1所示。
圖1 工程車輛控制系統(tǒng)通用設(shè)計(jì)平臺(tái)總體設(shè)計(jì)框圖
工程車輛控制系統(tǒng)通用設(shè)計(jì)平臺(tái)主要是結(jié)合控制系統(tǒng)、MATLAB和CODESYS來(lái)完成其平臺(tái)的建設(shè),整體框架采用上下位機(jī)的結(jié)構(gòu),上位機(jī)可以采用普通的PC設(shè)備,運(yùn)行MATLAB和CODESYS軟件,下位機(jī)即實(shí)際的工程車輛控制系統(tǒng),實(shí)時(shí)運(yùn)行MATLAB算法模型和CODESYS邏輯。
基于CODESYS的嵌入式PLC平臺(tái)由其上位機(jī)軟件開(kāi)發(fā)系統(tǒng)(包括開(kāi)發(fā)層和通訊層)和嵌入式實(shí)時(shí)核系統(tǒng)組成,并且其提供了特有的IO驅(qū)動(dòng)模塊開(kāi)發(fā)接口,可以集成自定義IO模塊來(lái)完成相關(guān)功能的設(shè)計(jì)[2]。
基于MATLAB的模型開(kāi)發(fā)設(shè)計(jì)也采用與CODESYS相同的架構(gòu),其上位機(jī)安裝MATLAB軟件,實(shí)現(xiàn)算法建模、離線仿真、交叉編譯、模型解析等功能,下位機(jī)實(shí)現(xiàn)模型的運(yùn)算和調(diào)度,實(shí)時(shí)按照模型中設(shè)定的時(shí)間對(duì)模型進(jìn)行計(jì)算。
在上位機(jī)中,MATLAB和CODESYS是兩個(gè)獨(dú)立的軟件,可以獨(dú)立開(kāi)發(fā)完成各自部分的算法或者邏輯,并且都可通過(guò)以太網(wǎng)直接下載到下位機(jī)進(jìn)行運(yùn)行,兩者之間通過(guò)MATLAB模型編譯過(guò)程中生成的模型描述文件(XML)來(lái)進(jìn)行模型信息交互,也就是變量交互指針。在下位機(jī)中分別運(yùn)行MATLAB的BackGround和CODESYS的RunTime,分別用以調(diào)度MATLAB模型和CODESYS應(yīng)用,在CODESYS中導(dǎo)入的模型描述文件中定義的變量交互指針指向MATLAB模型在下位機(jī)中運(yùn)行時(shí)的變量空間,從而使得在CODESYS中可以實(shí)時(shí)監(jiān)控MATLAB的變量。
圖2 基于MATLAB的模型開(kāi)發(fā)流程設(shè)計(jì)框圖
基于MATLAB的模型開(kāi)發(fā)流程設(shè)計(jì)包括模型設(shè)計(jì)、驅(qū)動(dòng)模塊(用戶C模塊)接入、自動(dòng)代碼生成、編譯連接下載和實(shí)時(shí)驗(yàn)證實(shí)驗(yàn),具體開(kāi)發(fā)流程如圖2所示。
離線建模仿真是基于MATLAB的模型設(shè)計(jì)方法來(lái)實(shí)現(xiàn)的,開(kāi)發(fā)工作完全基于模型設(shè)計(jì),在設(shè)計(jì)的過(guò)程中可以離線仿真檢查模型的正確性,實(shí)現(xiàn)在設(shè)計(jì)時(shí)進(jìn)行需求的迭代[3]。離線建模仿真過(guò)程可以完成與硬件無(wú)關(guān)的所有算法的驗(yàn)證,與硬件相關(guān)的模型部分也可以通過(guò)設(shè)定硬件值的方法來(lái)完成驗(yàn)證。
驅(qū)動(dòng)模塊接入是針對(duì)控制系統(tǒng)來(lái)開(kāi)發(fā)的通用模塊庫(kù),包括用戶自定義基礎(chǔ)模塊庫(kù)(MATLAB或者C模塊)、專業(yè)算法模塊庫(kù)(EMD算法庫(kù)、Filter算法庫(kù)、TOF算法庫(kù)等)、硬件接口庫(kù)(DI、DO、PWM等),具體如圖3所示。算法庫(kù)設(shè)計(jì)是一種增量設(shè)計(jì)模式,用戶可根據(jù)需要進(jìn)行算法庫(kù)的添加,在不同的工程應(yīng)用中,借用已有的算法庫(kù)不僅能提高開(kāi)發(fā)效率,也可有效避免新開(kāi)發(fā)帶來(lái)的不穩(wěn)定性風(fēng)險(xiǎn)。
圖3 驅(qū)動(dòng)模塊庫(kù)示意圖
自動(dòng)代碼生成借助MATLAB的RTW(Real-Time Workshop)工具箱來(lái)完成[4]。一般來(lái)說(shuō),控制系統(tǒng)支持C代碼的執(zhí)行,因此,在使用自定義的系統(tǒng)TLC中繼承了MATLAB已有的ert.tlc或者grt.tlc的代碼生成規(guī)則來(lái)生成代碼,確保代碼生成的可靠性,在此基礎(chǔ)上增加個(gè)性化代碼生成規(guī)則來(lái)實(shí)現(xiàn)其與CODESYS的對(duì)接。
編譯鏈接下載需要將當(dāng)前控制系統(tǒng)的編譯器集成到MATLAB中,并且通過(guò)在系統(tǒng)TLC對(duì)應(yīng)的TMF中建立編譯器關(guān)聯(lián)關(guān)系和規(guī)定編譯選項(xiàng)的方式進(jìn)行支持,可以完成一鍵編譯鏈接下載。編譯器是基于控制系統(tǒng)的開(kāi)發(fā)環(huán)境提取的,能夠?qū)⒆詣?dòng)代碼過(guò)程生成的C代碼、驅(qū)動(dòng)模塊庫(kù)對(duì)應(yīng)的代碼以及框架代碼一起編譯鏈接,生成能夠在控制系統(tǒng)中直接執(zhí)行的二進(jìn)制文件。
實(shí)時(shí)驗(yàn)證試驗(yàn)部分采用CODESYS來(lái)完成,在CODESYS中導(dǎo)入編譯過(guò)程生成的XML文件,該文件不僅規(guī)定了MATLAB模型與CODESYS進(jìn)行數(shù)據(jù)交互的接口,還制定了CODESYS對(duì)MATLAB模型的控制接口。
基于MATLAB和CODESYS的協(xié)同運(yùn)算設(shè)計(jì)流程如圖4所示,是基于3個(gè)方面來(lái)完成的:
1)MATLAB模型代碼生成過(guò)程中自動(dòng)生成CODESYS可導(dǎo)入的模型描述文件XML;
2)在CODESYS中通過(guò)模型描述文件實(shí)現(xiàn)CODESYS數(shù)據(jù)端口與MATLAB模型變量?jī)?nèi)存地址的綁定;
3)在運(yùn)行的過(guò)程中MATLAB模型和CODESYS邏輯代碼去與變量交互區(qū)進(jìn)行數(shù)據(jù)交互。
在MATLAB代碼生成的過(guò)程中,MATLAB提供了可插入自定義腳本的功能,在腳本中根據(jù)IEC61131的標(biāo)準(zhǔn)生成對(duì)應(yīng)模型的XML文件,該文件描述了模型對(duì)應(yīng)的輸入輸出變量及用戶標(biāo)識(shí)的需要監(jiān)控的變量表,可直接通過(guò)CODESYS的PLCOpenXML導(dǎo)入功能直接導(dǎo)入已有的邏輯算法工程中,并且自動(dòng)生成對(duì)應(yīng)的變量結(jié)構(gòu)指針,通過(guò)這些變量結(jié)構(gòu)指針可直接訪問(wèn)MATLAB模型的變量。
將CODESYS邏輯代碼中已有的變量跟變量結(jié)構(gòu)指針建立綁定關(guān)系,如賦值、運(yùn)算、引用等,使得MATLAB模型在CODESYS邏輯代碼中就相當(dāng)于一個(gè)模塊來(lái)調(diào)用。
在控制系統(tǒng)中MATLAB模型運(yùn)行時(shí)將會(huì)開(kāi)辟對(duì)應(yīng)的變量地址空間,并且將上述模型信息XML文件中定義的變量的地址空間直接映射為變量交互區(qū),在CODESYS邏輯運(yùn)行的時(shí)候根據(jù)模型信息XML文件中的描述信息來(lái)訪問(wèn)變量交互區(qū),從而使得MATLAB和CODESYS可以協(xié)同計(jì)算。
圖4 基于MATLAB和CODESYS的協(xié)同計(jì)算流程圖
一般情況下,控制系統(tǒng)所采集到的機(jī)械故障信號(hào)都不是線性信號(hào)和平穩(wěn)信號(hào)。在泵車設(shè)計(jì)過(guò)程中,泵車臂架振動(dòng)信號(hào)也是這種無(wú)序的信號(hào),怎么將臂架振動(dòng)規(guī)律統(tǒng)計(jì)出來(lái)一直是一個(gè)難題。經(jīng)驗(yàn)?zāi)B(tài)分解(Empirical Mode Decomposition,EMD)方法是一種處理非線性、非穩(wěn)定信號(hào)的有效分析方法,主要包含EMD分解和希爾伯特變換兩個(gè)過(guò)程[5]。在本平臺(tái)中使用EMD方法來(lái)處理臂架振動(dòng)信號(hào),可統(tǒng)計(jì)臂架振動(dòng)規(guī)律,具體實(shí)現(xiàn)過(guò)程如下:
1)在控制系統(tǒng)中,通過(guò)傳感器采集臂架角度;
2)根據(jù)臂架本身的特性和其角度信息計(jì)算出臂架末端的位置信息;
3)將臂架末端位置數(shù)據(jù)傳入EMD算法中進(jìn)行分解和統(tǒng)計(jì);
4)得出臂架振動(dòng)規(guī)律來(lái)進(jìn)一步優(yōu)化臂架操控算法。
其中,EMD算法在傳統(tǒng)控制系統(tǒng)中用PLC代碼無(wú)法實(shí)現(xiàn),采用本設(shè)計(jì)平臺(tái),用MATLAB模型來(lái)實(shí)現(xiàn)EMD算法,將臂架末端數(shù)據(jù)作為模型輸入,統(tǒng)計(jì)結(jié)果作為模型輸出,如此則可將臂架在一段時(shí)間內(nèi)的振動(dòng)數(shù)據(jù)統(tǒng)計(jì)出來(lái),振動(dòng)數(shù)據(jù)如圖5所示。
圖5 臂架振動(dòng)數(shù)據(jù)獲取圖
通過(guò)對(duì)大量泵車的臂架數(shù)據(jù)的收集和分析,可以得出臂架振動(dòng)規(guī)律,根據(jù)該規(guī)律來(lái)改變臂架操控屬性設(shè)置,優(yōu)化控制算法,從而達(dá)到提高臂架穩(wěn)定性,更進(jìn)一步提升施工安全性的目標(biāo)。
當(dāng)前全球面臨著能源短缺的危機(jī),并且大氣污染也是急待解決的難題。這兩大問(wèn)題直接導(dǎo)致了傳統(tǒng)交通和工程機(jī)械向著電動(dòng)化方向發(fā)展[6]。在電動(dòng)化轉(zhuǎn)型的過(guò)程中,傳統(tǒng)交通工具——汽車已經(jīng)走在了前頭,采用本設(shè)計(jì)平臺(tái)可以將汽車行業(yè)成熟的電動(dòng)化應(yīng)用模塊快速拿來(lái)在工程機(jī)械控制系統(tǒng)中集成,從而加快工程機(jī)械的電動(dòng)化轉(zhuǎn)型。具體實(shí)現(xiàn)如下:
1)將電動(dòng)化模型封裝為MATLAB模型,提取其輸入輸出,如圖6、圖7所示;
2)在CODESYS中導(dǎo)入模型描述文件,并且將模型對(duì)應(yīng)的端口跟實(shí)際的物理變量綁定。
圖6 模型封裝
圖7 具體算法
可在實(shí)車上通過(guò)CODESYS軟件來(lái)對(duì)MATLAB模型進(jìn)行算法參數(shù)優(yōu)化和標(biāo)定,也可借用其曲線繪制功能來(lái)查看變量之間變換的聯(lián)系和規(guī)律,從而在精確的時(shí)間點(diǎn)上精準(zhǔn)地把控算法的變換情況,可將算法的最優(yōu)配置在線調(diào)出來(lái),使得車輛性能最佳,曲線繪制功能示意圖如圖8所示。
圖8 曲線監(jiān)控、對(duì)比示意圖
在傳統(tǒng)的泵車使用過(guò)程中,往往由于支腿和臂架展開(kāi)匹配不到位導(dǎo)致泵車側(cè)翻事故頻發(fā),采用該設(shè)計(jì)平臺(tái)在MATLAB中對(duì)整車重心進(jìn)行算法仿真,仿真結(jié)果如圖9所示,并且將其直接轉(zhuǎn)換為代碼在控制系統(tǒng)中進(jìn)行計(jì)算,結(jié)果如圖10所示,能夠?qū)?dāng)前支腿打開(kāi)位置、角度對(duì)應(yīng)的臂架可伸展的最高、最遠(yuǎn)臨界點(diǎn)精準(zhǔn)計(jì)算出來(lái)??蓪⒃撆R界值傳遞給顯示屏,在顯示屏中將相對(duì)應(yīng)的信息提示出來(lái),用于指導(dǎo)用戶作業(yè)和做出臨界點(diǎn)預(yù)警,從而提高泵車使用的安全性。
圖9 泵車整車重心仿真結(jié)果
圖10 泵車整車重心實(shí)際運(yùn)行結(jié)果
傳統(tǒng)泵車打泵的過(guò)程中,料斗料位的控制要么通過(guò)按喇叭警示要么通過(guò)人工呼喊提示的方式來(lái)實(shí)現(xiàn),并且需要在施工現(xiàn)場(chǎng)和投料現(xiàn)場(chǎng)分別安排人員來(lái)進(jìn)行操作。
在料斗上安裝攝像頭,如圖11所示,捕獲料斗料位信息傳遞給控制系統(tǒng),在控制系統(tǒng)中采用本設(shè)計(jì)平臺(tái)通過(guò)料位檢測(cè)圖像識(shí)別算法對(duì)料位信息進(jìn)行分析處理,得出當(dāng)前是否需要投料,并且將結(jié)果傳遞給投料設(shè)備(如攪拌車),從而達(dá)到自動(dòng)投料的效果,既可提高投料的效率,節(jié)約人力,又可減少噪聲和操作不及時(shí)引發(fā)的其他問(wèn)題。
本文在已有的工程車輛控制系統(tǒng)基礎(chǔ)上提供了一種基于MATLAB的工程車輛控制系統(tǒng)通用設(shè)計(jì)平臺(tái)的設(shè)計(jì)實(shí)現(xiàn)方法,實(shí)現(xiàn)了MATLAB與已有控制系統(tǒng)相融合、MATLAB模型和CODESYS邏輯在正確的時(shí)序下協(xié)同運(yùn)算的功能,解決了現(xiàn)有控制系統(tǒng)在復(fù)雜算法設(shè)計(jì)和快速集成成熟算法模塊方面不足的問(wèn)題。
在實(shí)際工作中已使用MATLAB的EMD算法來(lái)獲取泵車臂架振幅,并通過(guò)統(tǒng)計(jì)分析改進(jìn)設(shè)計(jì)以提高泵車的穩(wěn)定性和安全性;在智慧礦車系統(tǒng)中可將現(xiàn)有汽車行業(yè)的標(biāo)準(zhǔn)模塊拿來(lái)直接使用,提高了整車設(shè)計(jì)和開(kāi)發(fā)效率;在泵車控制系統(tǒng)中使用在MATLAB中離線仿真計(jì)算過(guò)的重心算法,可提升算法開(kāi)發(fā)集成效率,提升泵車安全性;使用圖像識(shí)別算法進(jìn)行料位檢測(cè),可實(shí)現(xiàn)泵車與攪拌車協(xié)同工作,從而提高泵車工作效率,并節(jié)約人力。
實(shí)踐證明,采用該平臺(tái)可突破傳統(tǒng)控制系統(tǒng)局限性,提高復(fù)雜算法開(kāi)發(fā)效率,增加模塊化設(shè)計(jì)功能,擴(kuò)展控制系統(tǒng)應(yīng)用方向,從而加快工程車輛數(shù)字化、智能化轉(zhuǎn)型。
圖11 料斗攝像頭安裝現(xiàn)場(chǎng)圖