石曉妹,丁 平,于書(shū)敏
(1.徐州徐工挖掘機(jī)械有限公司,江蘇 徐州 221000;2.無(wú)錫德林防務(wù)裝備股份有限公司,江蘇 無(wú)錫 214191)
結(jié)構(gòu)化程序設(shè)計(jì)方法是按照模塊劃分原則以提高程序的可讀性和易維護(hù)性、可調(diào)性和可擴(kuò)充性為目標(biāo)的一種程序設(shè)計(jì)方法。它也是相對(duì)于線性編程結(jié)構(gòu)的一種編程方式。在結(jié)構(gòu)化的程序設(shè)計(jì)中,主要包含3種類(lèi)型的基本程序結(jié)構(gòu)形式,即順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和分支結(jié)構(gòu),僅有這3種基本結(jié)構(gòu)形式組成的程序稱(chēng)為結(jié)構(gòu)化程序。結(jié)構(gòu)化程序設(shè)計(jì)常應(yīng)用于較復(fù)雜的工程機(jī)械產(chǎn)品,控制邏輯比較復(fù)雜,對(duì)于一些簡(jiǎn)單小型的工程機(jī)械產(chǎn)品,也可以采用非結(jié)構(gòu)化程序設(shè)計(jì)方法。
PLC控制器中一般運(yùn)行著兩種程序,即操作系統(tǒng)程序和用戶(hù)程序。操作系統(tǒng)程序完成底層的系統(tǒng)級(jí)任務(wù),提供了一套用戶(hù)程序的調(diào)用機(jī)制,用戶(hù)程序在這個(gè)平臺(tái)上,完成用戶(hù)自己的自動(dòng)化任務(wù)。
用戶(hù)程序需要用戶(hù)自己開(kāi)發(fā)設(shè)計(jì),本文所說(shuō)的結(jié)構(gòu)化程序設(shè)計(jì)也是針對(duì)用戶(hù)程序。以西門(mén)子PLC用戶(hù)程序?yàn)槔?,用?hù)將不同功能的程序分別編寫(xiě)在FC1、FB1、FB2等功能和功能塊中,然后在主程序Main(OB1)中單次/多次/嵌套調(diào)用這些程序塊,從而實(shí)現(xiàn)高效、簡(jiǎn)潔、易讀性強(qiáng)的程序編程。結(jié)構(gòu)化程結(jié)構(gòu)如圖1所示。結(jié)構(gòu)化編程的優(yōu)點(diǎn)是針對(duì)功能相同的不同部件,只需要編寫(xiě)一個(gè)程序塊,在每次使用此程序時(shí),將對(duì)應(yīng)部件的相關(guān)參數(shù)傳給程序塊即可。如果使用Codesys編程的PLC,主程序Main中主要包括子程序(PRG)、功能(FB)、函數(shù)(FUN)等。

圖1 結(jié)構(gòu)化程序結(jié)構(gòu)
本文以24t液壓挖掘機(jī)為例,介紹控制系統(tǒng)的組成以及程序結(jié)構(gòu)。24t液壓挖掘機(jī)包含一塊Hirschmann的IMCT型主控制器,包含CAN2.0A和CAN2.0B兩種CAN通訊接口。主控制器通過(guò)CAN2.0A網(wǎng)絡(luò)和GPS模塊以及顯示儀表通訊,通過(guò)CAN2.0B網(wǎng)絡(luò)與發(fā)動(dòng)機(jī)ECM通訊,通過(guò)自帶的模擬量接口采集油箱溫度傳感器信號(hào)、油箱液位傳感器信號(hào)以及壓力傳感器信號(hào)和油門(mén)信號(hào),控制系統(tǒng)的組成框圖如圖2所示。
24t液壓挖掘機(jī)控制程序采用結(jié)構(gòu)化編程,把控制系統(tǒng)分成單個(gè)的控制子程序,再在主程序Main中調(diào)用各個(gè)子程序,把一些相同的控制功能開(kāi)發(fā)成FB,再在子程序中調(diào)用FB,只是對(duì)應(yīng)的程序輸入接口和輸出接口不同,提高了程序的標(biāo)準(zhǔn)化。主程序Main包含的子程序較多,主要包括初始化程序、輸入輸出程序、GPS控制程序、發(fā)動(dòng)機(jī)控制程序、功率匹配控制程序、動(dòng)作控制程序、CAN通訊程序、數(shù)據(jù)存儲(chǔ)控制程序等。系統(tǒng)程序結(jié)構(gòu)框圖如圖3所示。

圖2 控制系統(tǒng)組成框圖
挖掘機(jī)控制系統(tǒng)的關(guān)鍵就是如何平穩(wěn)地控制好各動(dòng)作機(jī)構(gòu),比如斗桿和動(dòng)臂的動(dòng)作控制,由于24t液壓挖掘機(jī)使用電控手柄,程序中增加了手柄的斜坡控制,使操作動(dòng)作既平穩(wěn),又響應(yīng)及時(shí),操作手感相比較于液壓手柄要好,不至于長(zhǎng)時(shí)間操作而疲勞。系統(tǒng)還增加了GPS模塊,可以通過(guò)GPS遠(yuǎn)程把設(shè)備工作數(shù)據(jù)發(fā)送到公司的遠(yuǎn)程監(jiān)控中心,同時(shí)也具有GPS鎖車(chē)功能,重新開(kāi)發(fā)了模塊化的GPS控制功能塊,模塊化程序可以方便地移植到其他設(shè)備。
手柄控制的核心就是使控制動(dòng)作平穩(wěn),響應(yīng)迅速又微動(dòng)性良好,因此在手柄控制塊中增加了斜坡步進(jìn)值分段控制,在手柄去程動(dòng)作的前半程,手柄斜坡步進(jìn)值較小,動(dòng)作平穩(wěn),微動(dòng)性好,手柄去程動(dòng)作的后半程,斜坡步進(jìn)值變大,快速達(dá)到手柄的輸出值,使響應(yīng)及時(shí),不至于出現(xiàn)“反應(yīng)遲鈍”的感覺(jué)。當(dāng)然在手柄回程的前半程斜坡步進(jìn)值要大,使手柄輸出值迅速減小,回程的后半程,斜坡步進(jìn)值要小,避免頻繁操作引起的液壓沖擊。
程序功能塊如圖4所示。其中輸入變量為:En為功能塊使能,Up_Max_int為手柄上升操作輸出最大值,Up_Min_int為手柄上升操作起始輸出最小值。Down_Max_int為手柄下降操作輸出最大值,Down_Min_int為手柄下降操作起始輸出最小值。Enble_Up為上升動(dòng)作允許,Enble_Down為下降動(dòng)作允許。JoystickSingal為手柄輸入信號(hào),Mbound為手柄中位置,Blind為手柄死區(qū)值,Up_Ascend為手柄上升去程斜坡值,Up_Descend為手柄上升回程斜坡值。Down_Ascend為手柄下降去程斜坡值,Down_Descend為手柄下降回程斜坡值。輸出變量為:JoystickOut為手柄輸出值,JoystickState為手柄狀態(tài),Up_Flag為動(dòng)作上升標(biāo)志,Down_Flag為動(dòng)作下降標(biāo)志。

圖3 系統(tǒng)程序結(jié)構(gòu)框圖
GPS監(jiān)控平臺(tái)將挖掘機(jī)的狀態(tài)分為4類(lèi):正常監(jiān)控、屏蔽鎖車(chē)、主動(dòng)鎖車(chē)、解鎖。正常狀態(tài)時(shí),控制器和GPS之間數(shù)據(jù)通訊,再通過(guò)GPS把數(shù)據(jù)傳到遠(yuǎn)程監(jiān)控中心。GPS的控制原理就是,監(jiān)控平臺(tái)給GPS發(fā)送指令,GPS向控制器的特定CAN地址周期性的發(fā)送數(shù)據(jù),控制器接收到GPS發(fā)送的數(shù)據(jù)后,分析GPS指令內(nèi)容,把需要的數(shù)據(jù)再周期性的發(fā)送給GPS,GPS再把數(shù)據(jù)傳給監(jiān)控平臺(tái),如果控制器接受不到GPS周期性的指令信號(hào),比如GPS天線信號(hào)異?;蛐奶惓?,會(huì)進(jìn)入被動(dòng)鎖車(chē)程序,防止GPS模塊被人為損壞。如果監(jiān)控平臺(tái)主動(dòng)發(fā)送鎖車(chē)指令,控制器通過(guò)GPS接收到后會(huì)執(zhí)行鎖車(chē)動(dòng)作,主動(dòng)鎖車(chē)分一級(jí)鎖車(chē)和二級(jí)鎖車(chē)。GPS控制功能塊如圖5所示。

圖4 手柄控制功能塊

圖5 GPS控制功能塊
結(jié)構(gòu)化程序設(shè)計(jì)有多方面的優(yōu)勢(shì),尤其對(duì)于控制邏輯復(fù)雜的產(chǎn)品,能夠有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù)。同時(shí),本文還說(shuō)明了對(duì)于通用功能可以開(kāi)發(fā)模塊化的功能塊,簡(jiǎn)化后續(xù)程序設(shè)計(jì),通過(guò)在24t液壓挖掘機(jī)上使用,達(dá)到了很好的控制效果。