摘 要: 為滿足不同工程機械的控制要求,設計了一款基于CoDeSys的工程機械控制器,使其具有I/O端口的可配置性。該控制系統主要采用嵌入式軟PLC技術,以符合IEC61131標準的CoDeSys的運行系統為調度核心,以英飛凌公司的TriCore系列微控制器TC1793為硬件核心。重點闡述了控制系統的硬件設計、軟件開發,以實現控制系統的開放性、通用性、高魯棒性,具有良好的經濟效益和廣闊的應用前景。
關鍵詞: 工程機械;控制系統;通用性;CoDeSys
0 前言
工程機械是國民經濟建設的重要裝備,在城鎮建設、搶險救災和國防建設中起著十分重要的作用。控制器作為工程機械的核心部分,是決定工程機械性能的重要因素之一[1]。然而工程機械控制器的市場幾乎被德國的西門子和力士樂、美國的卡特彼勒、芬蘭的EPEC等國外產品所占據;相比之下,國內起步較晚,沒有掌握核心技術,大部分產品依靠進口,價格昂貴[2-3],故進行工程機械控制器的研究很有必要。
目前國內外的大部分控制器具有很強的針對性,但是功能單一,通用性不強,而根據現場作業條件,出現了不同種類的工程機械的需求,故相應的控制器的軟硬件開發較多,這加大了人力物力的開銷,不利于產品的更新換代。此外,目前大多數控制器所使用的硬件平臺是16位的處理器,并且可編程控制器(PLC)的封閉性明顯,這導致控制器的數據處理能力有限,開放性差,可編程性不夠理想。
基于此,結合當前符合IEC61131標準的開放式控制器開發的基本思想,融合PLC和嵌入式控制系統的優點,以實現控制器開放性、通用性和高魯棒性,本文提出了一種基于CoDeSys的軟PLC與高性能的嵌入式硬件系統相結合的工程機械通用控制器的設計方案以解決上述問題。
1 控制系統的整體方案
1.1 系統的功能需求
種類繁多的工程機械,一方面,根據不同的應用場合,需要不同種類和數量的I/O端口,為滿足要求,需要I/O端口具有可配置性;另一方面,為了便于系統的二次開發,降低開發難度,實現系統的開放性和通用性,需要采用符合IEC61131標準的開發軟件。
1.2 系統的整體結構
圖1所示為本文所設計的控制器系統的整體結構,包括硬件系統結構和軟件系統結構。其中硬件系統結構是以英飛凌的微控制器為控制核心的硬件平臺,軟件系統結構是以CoDeSys的運行系統為調度核心,包括應用程序、CoDeSys的運行內核、驅動程序。
2 硬件設計
根據工程機械的功能需求,控制系統的硬件設計包括微控制器、輸入模塊、輸出模塊、通信模塊、基本模塊、存儲擴展模塊,如圖2所示。
本設計采用英飛凌的32位微控制器TC1793為控制系統的硬件平臺的核心,該MCU主頻可達到270 MHz,具有很強的實時性,集成了DSP的數據處理能力[4],適用于高魯棒性的控制;其內部提供了豐富的外設資源,有通用定時器列陣GPTA、同步串行通信接口SSC、捕獲比較單元CCU、外部總線單元EBU等。這些完全可以滿足設計通用控制器硬件系統所需的接口數目和種類的要求。
2.1 輸入輸出模塊
通過控制器的輸入模塊實現對工程機械的開關量、脈沖量和模擬量的采集;通過控制器的輸出模塊實現對工程機械的執行器件的驅動和控制。為了讓控制器能應用于不同種類的工程機械中,需要設計輸入輸出模塊具有可配置性的功能。
本文設計了18路開關量的輸入,其中有8路可以配置為正向開關量或負向開關量,用戶可以根據不同的應用場合,在軟件中配置該8路電路為所需要的開關量類型。采用飛思卡爾的多開關檢測模塊MC33975來設計開關量輸入接口的電路設計,如圖3所示。MC33975模塊可檢測22路開關量,通過SSC與MCU進行通信,實現SP0-SP7的開關量類型的選擇,以及SP0-SP7和SG0-SG9開關量信號的采集。
設計16路模擬量的輸入,用以檢測油溫、油位、水溫等物理量傳感器信號。為了實現不同工程機械對應的模擬量類型的采集,設計了8路模擬量類型可選擇的采集電路,同時該8路電路可復用于開關量的采集。采用亞德諾半導體公司的低壓CMOS模擬多通道復用器ADG704設計該模擬量輸入電路,如圖4所示。根據ADG704的A0和A1引腳的高低電平配置,選擇S1~S4 4個輸入之一切換到公共輸出D。為此,通過設計R53~R56 4個分壓電阻阻值,實現0~24 V、0~10 V、0~5 V和4~20 mA的模擬信號的檢測。由于MCU的ADC只能采集0~5 V的模擬量信號,故本設計中采用了鉗位二極管BAT4S構成電壓鉗制電路,以防止ADC引腳的轉換電壓過高,從而影響AD轉換結果。此外,當GPIO0為高電平時,兩個MOS管都導通,輸入端+24 V上拉,此時可以采集開關量的信號。
設計了驅動比例電磁閥、油門電機等感性負載的PWM輸出電路,同時該電路可復用于開關量的輸出。本設計采用MCU的GPTA模塊產生的PWM作為控制信號,使用英飛凌的智能高邊功率開關BTS5215作為功率輸出,具體的電路設計如圖5所示。其中,CF與POUT之間加電流反饋電路,以防止功率負載因線圈阻抗的不穩定引起電流偏差,從而影響負載動作的精度。通過CF與POUT之間添加的0.1 Ω采樣電阻,將OUT引腳輸出電流0~7.4 A轉化為0~0.74 V的電壓,再經過放大增益為5 dB的電流反饋電路放大到0~3.7 V,連接回MCU的ADC引腳。由于TC1793的外設功能引腳與GPIO復用,故可將PWM輸出引腳配置成GPIO模式,便可選擇以PWM1和PWM2為開關量的輸出。
2.2 存儲器擴展模塊和通信模塊
(1)存儲器擴展模塊包括EEPROM、外擴Flash、外擴RAM。
所設計的控制器需要存儲一些標定的參數、功率器件的閾值等,MCU集成了SSC,故選用ST公司同步串行接口EEPROM芯片M95640來存儲這些參數。
為滿足控制器的通用性,針對不同的工程機械,程序代碼和數據的占用空間差別很大,同時為滿足后續符合IEC61131標準的CoDeSys系統移植的需求,利用MCU集成的EBU,設計外擴Flash和外擴RAM模塊。
(2)通信模塊包含CAN總線通信和RS232通信。
種類繁多的工程機械所需控制部件較多,為便于數據通信,選用CAN總線,以實現控制器與儀表等外部設備之間的通信。本文采用TI公司的CAN收發器SN65HVD230設計電路。
采用RS232接口,實現控制器與CoDeSys編程環境的程序下載和上傳。利用MCU集成的ASC,采用SIPEX公司的RS232收發器芯片SP3232設計電路。
2.3 電源模塊
工程機械控制器一般通過車載蓄電池和發動機供電,但電壓的波動大,并且各個模塊所需的供電電壓不同,故控制器的電源模塊設計包括電源保護電路設計和電壓轉換電路設計。
工程機械供電系統常常伴有浪涌電壓,這對硬件電路造成很大的破壞;此外,人為的誤操作將電源反接也會對控制器造成很大的破壞。為此需要在電源模塊保護電路中設計防浪涌電路和防反接電路。以凌特公司的過壓保護芯片LT4356為核心,使用瞬態電壓抑制二極管SMBJ5BCA吸收輸入電壓的浪涌功率,并鉗制輸入電壓不高于+36 V,進而構建MCU的電源模塊保護電路。
MCU的外設接口ADC需+5 V供電,CAN和I/O等需+3.3 V供電,內核需+1.3 V供電,而有些外圍電路需+12 V供電,故控制系統所需的電壓為+24 V、+12 V、+5 V、+3.3 V、+1.3 V。本設計選用線性穩壓器LTM4607實現+24 V~+12 V的電壓轉換;選用LTM8025為核心構建+5 V、+3.3 V、+1.3 V的轉換電路實現微控制器的供電;此外設計合適的外圍電路以實現MCU上電時序的要求。
3 軟件開發
為了降低程序的復雜度,使其具備可重構能力,以滿足不同工程機械的控制要求,采用將應用程序和驅動程序分離的開發方法。
本控制器采用開放性的軟件CoDeSys進行軟件的開發,包括應用程序、CoDeSys的運行內核、驅動程序。軟件系統的具體結構如圖6所示。
其中CoDeSys軟件是3S公司基于IEC61131標準的軟件套件,包括CoDeSys運行內核和應用程序開發環境。CoDeSys運行內核需要移植到硬件系統中,移植工作主要包括:Target描述文件的設計、通信驅動描述文件的設計、I/O驅動描述文件的設計等[5-6],即形成一個用來描述目標系統與CoDeSys編程系統之間的軟硬件的特定配置和定義的目標支持軟件包。
I/O端口配置模塊方便用戶根據需要選擇I/O端口的種類和數目,生成I/O配置文件,CoDeSys運行系統訪問I/O配置文件,調用對應的底層驅動,以實現I/O端口的可配置性。其中I/O端口控制的部分代碼如下:
#define AIDI_DI_Read[i] DI_Value[i];
#define AIDI_AI_Read[i] AI_Value[i];
void IO_Control()
{
……
for(i=0;i<m;i++)//本文的m為8
{
if(AIDI_En[i]==1)//1使能,0禁止
{
if(AIDI_Config[i]==DI)
{
*((unsigned int*)InputBuf [AIDIBaseAddr+i*2])=AIDI_DI_Read[i];
}
else
{
*((unsigned int*)InputBuf[AIDIBaseAddr+i*2])=AIDI_AI_Read[i];
}
}
……
}
}
以上過程總結為圖7所示的系統軟件主程序流程。
4 控制系統的性能測試
通用控制器的樣機完成制作之后,需要對控制器的性能進行測試,主要包括可靠性測試、溫度測試、通用性測試等。本文主要闡述控制器的通用性測試。
對控制器的通用性測試,采用在控制器的I/O端口加載相應的負載,并編寫對應的測試程序的方法來實現。具體的實現方法是:在可配置為開關量采集的模擬量輸入接口AIN上,分別接0~24 V之間的電壓、4~20 mA之間的電流、0~1.5 kΩ之間的電阻;開關量的輸入接口DIN和輸出接口DOUT都接繼電器;脈沖量輸入接口PIN接PWM的輸出接口;將可配置為開關量輸出的PWM輸出接口分別接電磁閥和繼電器。通過這樣的加載方式,用示波器分別觀察對應端口的狀態,實現控制器的通用性測試。例如PWM/DO端口,通過I/O端口配置模塊先配置為PWM輸出,加載PWM測試程序成功驅動電磁閥;再配置為DO輸出,加載DO測試程序成功驅動繼電器。用示波器測出該端口的狀態分別如圖8和圖9所示。從圖可知該端口可以實現PWM和DO的復用。
5 結論
通過加載測試,本文所設計的基于CoDeSys的工程機械通用控制器具有I/O端口可配置性,具備可重構能力,可以滿足不同種類的工程機械的控制要求,降低人力物力的投入。此外,該控制器符合IEC61131標準,支持5種編程語言,為用戶提供統一的編程環境,具有很強的開放性,便于實現控制系統的二次開發,在科技不斷發展和市場競爭愈發激烈的形勢下,具有良好的應用前景。
參考文獻
[1] 王國慶,劉潔,張宗濤,等.工程機械智能化控制器研究[J].筑路機械與施工機械化,2008,25(3):73-75.
[2] 閔華松,李美升,魏洪興,等.工程機械智能控制器設計[J].信息與控制,2011(2):254-261.
[3] 袁森,黃海松.基于MCU和uC/OS-Ⅱ的工程機械電氣控制器設計研究[J].測控技術,2014,33(4):58-61.
[4] Infineon Technologies AG. TC1798. Data Sheet(V1.1)[S].2014.
[5] 3S-Smart Software Solutions GmbH. CODESYS control V3 migration and adaptation(Version 4.0)[S]. 2014.
[6] 王麗麗,康存鋒,馬春敏,等.基于CoDeSys的嵌入式軟PLC系統的設計與實現[J].現代制造工程,2007(3):54-56.