孫先松
長江大學電子信息學院,湖北 荊州 434023
我國城市化的建設發展很快,挖掘機在建設中起到了非常重要的作用。目前,很多挖掘機都到了經常出故障的階段,如果不及時修理,對使用方的經濟損失會很大。機械和液壓系統的故障很直觀,一般機修人員都能檢測維修,而對于發動機故障,專業的有經驗的維修人員有時都很難檢測與維修。美國卡特彼勒公司(Caterpillar,簡稱CAT)生產的系列挖掘機因為質量和性能優良,在我國擁有大量的客戶,其發動機的維修資料很少,特別是其電控模塊資料都沒有公開,維修需借助專用工具。筆者通過對CAT 320D型發動機的ECM模塊進行測試分析,設計了一種遠程發動機診斷系統[1]。該系統只需用戶接上挖掘機的相應接口,就能在本地診斷發動機,或者遠程傳輸給有經驗的維修人員,以更準確地診斷發動機的狀態、性能和故障[2]。
CAT 320D型挖掘機發動機遠程診斷系統總體架構如圖1所示[3]。主要包括數據源端(發動機電控模塊ECM)、數據采集發送部分和遠程終端[4]3個部分。

圖1 CAT發動機遠程診斷系統設計總體架構圖Fig.1 Overall architecture diagram of CAT engine remote diagnosis system design
1)數據源端 ECM主要控制發動機運轉,對電控系統的故障進行自診斷,檢測各傳感器的好壞和工作狀態,對發動機監視和保護,并保存所有相關的數據,可通過專用適配器和ET軟件讀出數據和進行編程配置。診斷系統是直接從ECM中讀出數據和進行配置,不需要專用的適配器。
2)數據采集發送部分 使用一個主控CPU,通過CDL接口電路與ECM進行通信,并外接GPS模塊、4G模塊和電源、本地接口,通過4G模塊傳輸到遠程終端。
3)遠程終端 遠程終端是連接到Internet網絡的一臺服務器,通過公網接收4G模塊傳送的數據,服務器上設計有相應軟件,主要完成接收數據、顯示和發送控制命令等工作。服務器可申請固定IP、租用云服務器或者使用第三方域名解析軟件來實現。
ECM是核心部件,具有連續監測并控制發動機正常工作運轉的功能,主要有燃油噴射控制、點火控制、怠速控制、各種傳感信號檢測、工作狀態指示、自診斷與報警、數據通信總線接口等。CAT 320D型發動機使用的ECM功能框圖如圖2所示。主要接有壓力、溫度、位置和轉速4種傳感器,能完成發動機工作全部的電子控制,記錄發動機故障和電氣系統故障診斷、發動機監視和保護的信息,用戶還可以可編程設置配置參數[5]。ECM數據讀寫要通過CAN總線或CDL總線,有數據模式和校正模式2種操作模式。數據模式有8種級別信息:PS壓力[6]、發動機轉速、發動機冷卻液溫度、液壓油溫度、A/D轉換結果、實時故障代碼、數據輸入和控制輸出顯示。校正模式信息包括發動機型號、ECM型號、軟件版本信息、數據輸出測試、PRV閥控制測試、轉速設置、PS壓力校正、校核發動機轉速開關、自動控制制動器校正、PRV閥校正等。所有數據都可以通過CAT自定義的CDL總線進行讀寫[7]。

圖2 ECM功能框圖Fig.2 ECM functional block diagram
通過對ECM數據的讀寫,可以完成發動機的狀態監測與故障診斷、發動機的工作模式配置,設計中還必須了解具體外圍部件的連接。320D型ECM有A、B 2個接口,引腳定義圖如圖3所示,主要信號說明如表1所示。

圖3 ECM的A、B接口引腳定義圖Fig.3 A and B Interface pin definition diagram of ECM

表1 ECM的A、B接口信號說明
硬件實現部分主要是數據采集發送部分,以FPGA芯片EP4CE10E22為控制核心,連接一個GPS模塊和一個4G通信模塊,實現從ECM的CDL接口輸入輸出數據,并通過4G模塊發送到遠程終端。
FPGA芯片為Altera Cyclone IV的E系列,共有10320邏輯單元,片內有414kbit RAM,有645個邏輯塊、2個PLL、10個全局時鐘網絡、8個IO BANK,用戶可用91個IO口,內核工作電壓1.15~1.25V,144引腳EQFP封裝。CDL接口數據首先經過隔離、調理后進入FPGA的52、53腳,ECM各種操作模式下數據長度不一致,為了保證編解碼和通信的實時性,FPGA外圍接有一片SDRAM存儲器用于數據緩存,主控電路如圖4所示。另外FPGA還需要有下載電路及配置電路,如圖5所示。

圖4 FPGA主控電路原理圖Fig.4 Schematic diagram of FPGA main control circuit

圖5 配置和下載電路原理圖Fig.5 Schematic diagram of configure and download circuit
GPS模塊使用的是ATGM336H,它是一款高性能BDS/GNSS全星座定位導航模塊,支持中國的北斗、美國的GPS、俄羅斯的GLONASS、歐盟的GALILEO、日本的QZSS 以及衛星增強系統SBAS。模塊通過串口連接到FPGA的串口1上(TXD1和RXD1引腳),模塊引腳和電路原理圖如圖6所示[8,9]。

圖6 GPS模塊電路原理圖Fig.6 Schematic diagram of GPS module circuit
4G模塊使用的是USR-LTE-7S4 V2,支持TD-LTE(移動4G)制式標準,支持移動和聯通的 2G/3G/4G方式、電信4G方式,數據傳輸最高下行速率150Mbps,上行速率50Mbps。在GSM方式下下行速率 384kbps,上行速率128kbps。支持IPv4、IPv6、IPv4/IPv6雙堆棧。模塊通過串口和USB接口2種方式與FPGA相連,串口通信速率最高可達115200kbps,USB接口為USB2.0標準,電路原理圖如圖7所示[10,11]。

圖7 4G模塊電路原理圖Fig.7 Schematic diagram of 4G module circuit
軟件主要包括兩部分,一部分是數據采集硬件上的FPGA程序設計,另一部分是遠程終端PC機上的程序設計[12]。
主要涉及CDL信號的編碼與解碼、GPS配置與數據讀取、4G模塊的配置與數據收發,核心內容是串口的收發設計。GPS模塊使用標準的NMEA0183協議,波特率范圍4800~115200bps,默認9600bps。在FPGA編程時,開機和復位GPS要注意GPS模塊冷啟動時間≤35s,熱啟動和重捕獲時間≤1s。另外定位更新率默認1Hz。因此讀取速度可以幾秒鐘采樣一次。
4G模塊使用網絡透傳模式,數據通過模塊串口直接發送到網絡服務器,不做任何處理和修改,模塊也可以接受來自服務器的數據,并直接將接受信息轉發至串口設備。FPGA編程時不需要關注串口數據與網絡數據包之間的數據轉換過程,只需通過簡單的參數設置,即可實現串口設備與網絡服務器之間的數據透明傳輸。模塊支持2路相互獨立的Socket連接,每路Socket僅支持作為TCP Client和UDP Client。每路Socket也都支持短連接方式,當設置為短連接時,只有在發送數據時才會和服務器建立連接,數據發送完成后,如果一定時間內沒有數據傳輸,則會超時斷開。兩路Socket必須同為長連接,或者同為短連接,不可混合使用。FPGA編程串口發送指令操作說明如表2所示。

表2 4G模塊操作指令說明
FPGA程序采用Verilog HL語言設計,分3個層次,其中第3層串行數據收發控制設計有FIFO緩沖單元,每個控制模塊中還需要有波特率控制、數據位格式設計等內容,具體如圖8所示。

圖8 FPGA程序設計結構示意圖Fig.8 Structure diagram of FPGA programming
在PC終端上,在Windows 10下采用Visual Studio2017進行程序設計,一部分是基于Socket的TCP服務器端程序設計,主要負責數據接收,發動機不同工作模式下數據量不一樣,最高不超過15kbps,對于網絡編程使用單線程就能很好地工作;另一部分是界面和數據解析、功能實現,程序設計主界面如圖9所示。

圖9 PC終端主界面示意圖Fig.9 Diagram of main interface of PC terminal
主界面主要顯示一些系統信息和發動機工作狀態信息,如發動機轉速、溫度和壓力等;顯示和清除診斷故障代碼;顯示記錄事件代碼;設置更改ECM的參數;進行診斷和標定;顯示發動機運行報警事件;匯總報告和打印診斷結果[13]。報告中主要包括如下信息[14]:
1)系統信息內容:設備識別號、發動機序列號、ECM零件號、ECM序列號、軟件組零件號、軟件組發布日期、軟件組描述MHI。
2)額定功率、額定峰值扭矩、最高發動機轉速范圍、Idle Speed。
3)測試規范:滿負荷油量設置、全扭矩設定值、保安系統固定化安裝狀態。
4)工作狀況:總工作時數、總燃油(消耗量)、總的怠速轉動時間、總的怠速燃油消耗、怠速時間百分比、平均燃油消耗量。
5)報警信息分為3級[15]:一級報警系統有未授權的鑰匙、電池電壓異常、液壓回油濾清器堵塞、ATT濾清器堵塞、空氣濾清器堵塞、燃油濾清器堵塞、油水分離器已滿、燃油油位低、潤滑油油位低、自動潤滑故障;二級報警系統有進氣溫度高、冷卻液溫度高、啟動發動機停機、發動機超速警告、液壓油溫度高、液壓油溫度高(工裝)、燃油壓力高、ECM故障、發動機控制模塊故障、監視器故障、需要進行維修、工裝控制故障;三級報警系統有提升超載警告、發動機機油壓力低。
6)記錄的診斷事件代碼[16]: ECM隨時自動檢測相關的一些開關、傳感器、電磁閥等,將異常事件記錄在存儲器中,并對異常進行報警。讀出記錄事件代碼數據,便可以診斷分析故障。常見的有油門位置傳感器異常(診斷事件代碼91-8)、燃油濾清器壓差傳感器異常(95-3)、發動機油壓傳感器異常(100-3)、燃油壓力傳感器異常(經過燃油濾清器之后)(460-3)、進氣歧管壓力傳感器異常(1785-3)、燃油導軌壓力傳感器異常(1797-3)、進氣加熱器異常(3257-3)。
CAT320D型能夠診斷的故障錯誤有發動機機油壓力過低、發動機冷卻液溫度過高、液壓油溫度過高、進氣濾芯堵塞、蓄電池電壓異常、連到蓄電池電壓的調速器致動器反饋傳感器開路或短路、連到機體接地的調速器致動器反饋傳感器短路、調速器致動器反饋信號不穩定、調速器致動器反饋信號有偏差、調速器致動器不動、校準數據錯誤、監控器RAM異常、對控制器的供電過多(43V)、PRV電流過大、PRV開路、監控器電源(數字輸出)過電流、數字輸出中過電流(開溝電磁閥)、數字輸出中過電流(微調控制電磁閥)、數字輸出中過電流(行駛速度變化電磁閥)、數字輸出中過電流(行車警報器)、備用電磁線圈1(數字輸出)過電流、數字輸出中過電流(轉盤制動器電磁閥)、備用電磁線圈2(數字輸出)過電流、發動機速度異常、連到機體接地的發動機冷卻液溫度傳感器短路、連到機體接地的液壓油溫度傳感器短路?連到機體接地的泵輸送壓力PWM傳感器短路、連到機體接地的備用PWM傳感器1短路。連到機體接地的備用PWM傳感器2短路、通電中泵輸送壓力PWM傳感器開路、連到機體接地燃油傳感器開路、連到蓄電池電壓的燃油傳感器開路或短路;供電過低(低于23V)、供電過高(高于32V)、發動機速度旋鈕不在10個指定的位置之一、交流發電機和速度傳感器數據不符1(交流發電機異常)、交流發電機和速度傳感器數據不符2(速度傳感器異常)、發動機失速等。
在實時顯示工作狀態信息中,從ECM讀入的數據在轉換成溫度和壓力時,計算公式有所區別,具體程序如下:
if ((pd[2] == 0xF2) && (pd[3] == 0x20))//進行溫度解析
{
tempf = (pd[7] * 256.0+pd[6]);
temstr.Format("%.2f",tempf);
c_waterTemp.SetWindowTextA(temstr);//顯示發動機冷卻液溫度
tempf = (pd[15] * 256.0+pd[14])/10.0;
temstr.Format("%.2f",tempf);
c_airTemp.SetWindowTextA(temstr);//顯示空氣進氣溫度
tempf = (pd[19] * 256.0+pd[18])/10.0;
temstr.Format("%.2f",tempf);
c_oilTemp.SetWindowTextA(temstr);//顯示燃油溫度
}
if ((pd[2] == 0xD0) && (pd[3] == 0x04) && (pd[4] == 0xB5))//共軌壓力解析
{
tempf = (pd[6] * 256.0+pd[5])*4.0;
temstr.Format("%.2f",tempf);
c_railPressure.SetWindowTextA(temstr);
}
if ((pd[2] == 0x40) && (pd[3] == 0x00) && (pd[4] == 0x00))//空氣和機油壓力解析
{
tempf = (pd[19] * 256.0+pd[18])/2.0;
temstr.Format("%.2f",tempf);
c_airPressure.SetWindowTextA(temstr);//顯示渦輪增壓出口壓力(絕對)
tempf = (pd[16] * 256.0+pd[15])/2.0;
temstr.Format("%.2f",tempf);
c_oilPressure.SetWindowTextA(temstr);//顯示發動機機油壓力(絕對)
}
發動機配置參數修改一般需要權限,為保證發動機正常工作,工廠都設定有缺省值,如要修改發動機功率限制、高怠速、發動機保護系統、功率標定號、發動機轉速上限等原廠鎖定的參數,需要工廠密碼才能操作。
通過對CAT320D型發動機電控模塊的測試應用,完全實現了發動機遠程的監控和診斷功能,通過系統人機界面獲取信息,可以讓有經驗的維修人員遠程協助故障處理。該系統也可分析導致故障的位置和原因,提高檢修的效率。只需要將CDL的數據編譯碼系統簡單修改,便可以擴展到CAT多種型號的發動機的遠程診斷中,也可以外圍增加一些傳感器檢測挖掘機的工作情況,使得遠程監控功能更完善。