吳 飛,王正衛(wèi)
(武漢理工大學(xué) 機(jī)電工程學(xué)院,湖北 武漢 430070)
發(fā)動(dòng)機(jī)作為汽車的動(dòng)力源是汽車性能檢測(cè)的關(guān)鍵[1]。發(fā)動(dòng)機(jī)下線性能試驗(yàn)測(cè)試方法研究的主要任務(wù)是完成發(fā)動(dòng)機(jī)從生產(chǎn)線下線吊裝到性能檢測(cè)試驗(yàn)臺(tái)進(jìn)行測(cè)試過程中的性能參數(shù)采集分析處理工作。構(gòu)建以S7-300PLC為核心的數(shù)據(jù)采集系統(tǒng)采集發(fā)動(dòng)機(jī)性能參數(shù),并與發(fā)動(dòng)機(jī)ECU通信獲取發(fā)動(dòng)機(jī)ECU采集的數(shù)據(jù),兩組數(shù)據(jù)上傳至上位機(jī),數(shù)據(jù)處理系統(tǒng)從上位機(jī)調(diào)用采集到的兩組數(shù)據(jù)進(jìn)行分析處理后在同一界面生成對(duì)應(yīng)的曲線圖,實(shí)現(xiàn)人機(jī)交互,并通過對(duì)曲線差異的比較分析判斷發(fā)動(dòng)機(jī)的性能狀況。
啟動(dòng)發(fā)動(dòng)機(jī)進(jìn)行熱試試驗(yàn)后,發(fā)動(dòng)機(jī)ECU通過預(yù)先布置在發(fā)動(dòng)機(jī)內(nèi)部的各類傳感器獲取發(fā)動(dòng)機(jī)性能參數(shù)信號(hào)[2],并利用CAN數(shù)據(jù)總線將采集到的數(shù)據(jù)打包上傳給上位機(jī);發(fā)動(dòng)機(jī)性能檢測(cè)試驗(yàn)臺(tái)上的各類傳感器同時(shí)采集發(fā)動(dòng)機(jī)的性能參數(shù)模擬信號(hào),傳遞給S7-300PLC的數(shù)據(jù)采集模塊,再通過傅立葉變換等數(shù)學(xué)手段將采集到的模擬量轉(zhuǎn)換為數(shù)字量貯存在S7-300PLC內(nèi)部[3],通過PROFINET將采集到的數(shù)據(jù)傳給上位機(jī),上位機(jī)獲取發(fā)動(dòng)機(jī)ECU和S7-300PLC采集的數(shù)據(jù)后,以LabVIEW為核心的數(shù)據(jù)處理系統(tǒng)從上位機(jī)中調(diào)取需要的發(fā)動(dòng)機(jī)性能參數(shù)生成相應(yīng)的性能參數(shù)曲線并實(shí)現(xiàn)人機(jī)交互,總體框架如圖1所示。
圖1 發(fā)動(dòng)機(jī)性能測(cè)試系統(tǒng)總體框架
汽車發(fā)動(dòng)機(jī)ECU通過預(yù)先布置在發(fā)動(dòng)機(jī)內(nèi)部的傳感器獲取發(fā)動(dòng)機(jī)性能參數(shù),在發(fā)動(dòng)機(jī)下線前這套體系已由廠家建立[3]。筆者研究的是實(shí)現(xiàn)S7-300PLC的數(shù)據(jù)采集以及建立上位機(jī)與發(fā)動(dòng)機(jī)ECU、S7-300PLC間的通信,從而獲取發(fā)動(dòng)機(jī)性能參數(shù)。
本試驗(yàn)臺(tái)中S7-300PLC的數(shù)據(jù)采集模塊結(jié)構(gòu)如圖2所示。在該模塊中有測(cè)量通道和校零通道兩種通道類型[4],前者用來接入采集信號(hào)的扭矩傳感器、光電傳感器、溫度傳感器等,后者用來接入一路冷端的補(bǔ)償信號(hào)。測(cè)量通道的各類傳感器在獲取發(fā)動(dòng)機(jī)的性能參數(shù)信號(hào)后經(jīng)數(shù)據(jù)采集電路處理上傳給S7-300PLC,S7-300PLC利用自身的數(shù)據(jù)處理功能對(duì)采集到的發(fā)動(dòng)機(jī)性能參數(shù)數(shù)據(jù)進(jìn)行線性補(bǔ)償、濾波、A/D轉(zhuǎn)換等處理后轉(zhuǎn)換為需要的扭矩、轉(zhuǎn)速、溫度等數(shù)字量信號(hào),經(jīng)由異步接口將數(shù)字量信號(hào)上傳給上位機(jī)進(jìn)行貯存,供數(shù)據(jù)處理系統(tǒng)調(diào)用進(jìn)行數(shù)據(jù)計(jì)算等工作。
圖2 發(fā)動(dòng)機(jī)性能參數(shù)采集結(jié)構(gòu)
在S7-300PLC數(shù)據(jù)采集模塊的內(nèi)部有控制字節(jié),用來選擇字節(jié)的輸出類型(是無(wú)條件字節(jié)輸出還是半字節(jié)輸出),后者輸出時(shí)需要請(qǐng)求信號(hào),且由于信號(hào)傳輸?shù)倪^程中需要的次數(shù)較多,耗時(shí)較長(zhǎng)。本次試驗(yàn)中為了降低S7-300PLC的造價(jià)成本,像發(fā)動(dòng)機(jī)的機(jī)油溫度和水溫采集采用半字節(jié)輸出的形式,通過無(wú)條件字節(jié)的方式輸出數(shù)據(jù)時(shí),不用發(fā)出請(qǐng)求信號(hào),其他流程和半字節(jié)輸出方式的一樣。
半字節(jié)輸出方式由S7-300PLC連接了5個(gè)模塊,這5個(gè)模塊的輸出端口并聯(lián)后再以總線的形式與S7-300PLC的輸入端相連接,它們的輸入端分別連接到S7-300PLC對(duì)應(yīng)的開關(guān)量輸出端口,再由S7-300PLC按一定的順序定時(shí)向各個(gè)模塊的的輸入端口發(fā)出需要的請(qǐng)求信號(hào),然后各個(gè)模塊再根據(jù)指令要求依次再將數(shù)據(jù)定時(shí)送出,圖3為各個(gè)模塊的輸出時(shí)序。
圖3 S7-300PLC以請(qǐng)求方式傳輸數(shù)據(jù)
上位機(jī)向S7-300PLC發(fā)出通信請(qǐng)求命令后,S7-300PLC以請(qǐng)求方式調(diào)用中斷程序(如圖4)啟動(dòng)數(shù)據(jù)采集模塊進(jìn)行數(shù)據(jù)采集。利用中斷連接指令(ATCH)指定中斷事件中所要調(diào)用的程序段(通過中斷程序號(hào)指定,本次設(shè)置的中斷號(hào)INT_0,0),移動(dòng)指針在PLC寄存器中獲取寄存位置,用以存儲(chǔ)后續(xù)由各模塊采集到的信號(hào)參數(shù)。S7-300PLC以請(qǐng)求方式向數(shù)據(jù)采集模塊(分別針對(duì)發(fā)動(dòng)機(jī)的扭矩、轉(zhuǎn)速、節(jié)氣門要求開度、機(jī)油溫度、水溫)發(fā)出一系列脈沖串信號(hào),在獲取相關(guān)的性能參數(shù)后,尋找寄存器起始位置將得到的參數(shù)存入寄存器中,當(dāng)一輪性能參數(shù)采集工作結(jié)束后,返回到起始位置等待下一輪脈沖信號(hào)的發(fā)出。
圖4 S7-300PLC數(shù)據(jù)采集中斷程序部分代碼
為了判斷S7-300PLC發(fā)出的一個(gè)性能參數(shù)采集的脈沖串是否采集結(jié)束,在中斷程序中使用了一個(gè)定時(shí)時(shí)間為40 ms的定時(shí)程序來檢查是否還有下一個(gè)脈沖信號(hào),如果在規(guī)定的時(shí)間內(nèi)無(wú)法獲取新的脈沖信號(hào),則認(rèn)為本輪的數(shù)據(jù)采集工作完成,由指針重新尋找并回到數(shù)據(jù)的起始位置,每經(jīng)過4次后由中斷程序獲取下一個(gè)通道數(shù)值,指針指向下一個(gè)通道的數(shù)據(jù)存放位置,等待下一次的數(shù)據(jù)采集指令的信號(hào)。
中斷程序啟動(dòng)后,使用#AAN等命令進(jìn)行數(shù)據(jù)采集工作。由于采集的參數(shù)較多,需要連接多個(gè)采集模塊,S7-300PLC自身具備相關(guān)的串行接口[5],通過設(shè)置多個(gè)模塊連接通道進(jìn)行連接即可。
在數(shù)據(jù)采集主程序中,首先對(duì)一些初始變量進(jìn)行賦值并利用中斷連接指令(ATCH)指定中斷事件中所要調(diào)用的程序段后,串行接口采集模塊與各類信號(hào)采集的傳感器進(jìn)行參數(shù)交換,將傳感器獲取的各類參數(shù)信號(hào)(模擬量)寄存器值傳送給串行接口采集模塊的寄存器,接著串行接口采集模塊對(duì)獲取的參數(shù)信號(hào)按不同類型進(jìn)行目標(biāo)操作位自加等處理,并調(diào)用下一級(jí)子程序?qū)Λ@取的模擬信號(hào)進(jìn)行模數(shù)轉(zhuǎn)換,以獲取發(fā)動(dòng)機(jī)性能參數(shù)的數(shù)字量。S7-300PLC數(shù)據(jù)采集主程序部分代碼如圖5所示。
圖5 S7-300PLC數(shù)據(jù)采集主程序部分代碼
上位機(jī)與發(fā)動(dòng)機(jī)ECU通信系統(tǒng)結(jié)構(gòu)如圖6所示。ECU獲取到發(fā)動(dòng)機(jī)性能參數(shù)后將其打包,以數(shù)據(jù)包的形式將其上傳,CAN總線實(shí)現(xiàn)的功能包括:正確識(shí)別CAN通道;將封裝CAN報(bào)文進(jìn)行發(fā)送;接收CAN數(shù)據(jù)幀,并能對(duì)接受的數(shù)據(jù)幀進(jìn)行解析。
圖6 上位機(jī)與發(fā)動(dòng)機(jī)ECU通信系統(tǒng)結(jié)構(gòu)
由于上位機(jī)主機(jī)自身帶有USB接口,在與發(fā)動(dòng)機(jī)ECU通信時(shí)利用USB-CAN系列的CAN接口卡的定位孔進(jìn)行快速對(duì)接,為實(shí)現(xiàn)ECU與上位機(jī)之間的快速準(zhǔn)確通信,對(duì)發(fā)動(dòng)機(jī)ECU的接口做重新定義[6]。
通過發(fā)動(dòng)機(jī)預(yù)先布置的各類傳感器按表1指定的周期進(jìn)行實(shí)時(shí)采集數(shù)據(jù)傳輸?shù)桨l(fā)動(dòng)機(jī)ECU。
表1 發(fā)動(dòng)機(jī)性能參數(shù)指標(biāo)明細(xì)
ECU得到采集的數(shù)據(jù)后,按照協(xié)議的方式計(jì)算得到相關(guān)的參數(shù)值[7],計(jì)算方法如下:
采集到的某個(gè)變量值為A(A必須是在表1中指定的最小值與最大值之間,否則報(bào)錯(cuò)),則對(duì)應(yīng)的參數(shù)值C大小為:
C=A×分辨率+偏移量
在ECU計(jì)算得到發(fā)動(dòng)機(jī)性能參數(shù)值之后,一類數(shù)據(jù)在ECU采集到后需將數(shù)據(jù)實(shí)時(shí)上傳至上位機(jī),另一類數(shù)據(jù)則根據(jù)工控機(jī)需要由上位機(jī)發(fā)出指令后再將采集到的數(shù)據(jù)上傳至上位機(jī),無(wú)需實(shí)時(shí)上傳。
上位機(jī)與發(fā)動(dòng)機(jī)ECU之間通過CAN-USB轉(zhuǎn)換器連接之后,需要安裝CAN-USB驅(qū)動(dòng)才能建立兩者之間的通信。安裝成功之后,即建立了上位機(jī)與發(fā)動(dòng)機(jī)ECU間的通信。
圖7 上位機(jī)與S7-300PLC間的通信系統(tǒng)結(jié)構(gòu)
圖7為上位機(jī)與S7-300PLC間的通信系統(tǒng)結(jié)構(gòu)??紤]到S7-300PLC采用的是Profibus總線,該總線形式下的數(shù)據(jù)交換不支持RS485接口的Modbus協(xié)議,故使用Profibus-DP to MODBUS RTU/ASCII協(xié)議轉(zhuǎn)換器來解決S7-300PLC與上位機(jī)數(shù)據(jù)采集之間的通信問題。
選用Profibus-DP to MODBUS RTU/ASCII協(xié)議轉(zhuǎn)換器的通信口1與S7-300PLC的數(shù)字量輸出端口連接,采用DB9連接,A線對(duì)應(yīng)8腳、B線對(duì)應(yīng)3腳,接通電源模塊,并接入通信電路即可進(jìn)行通信,通信接口電路如圖8所示。上位機(jī)與Profibus-DP to MODBUS RTU/ASCII協(xié)議轉(zhuǎn)換器之間直接通過RS485-USB轉(zhuǎn)換器連接實(shí)現(xiàn)通信。
圖8 通信接口電路
發(fā)動(dòng)機(jī)轉(zhuǎn)速、冷卻液溫度、進(jìn)氣溫度、進(jìn)氣壓力等性能參數(shù)數(shù)據(jù)由發(fā)動(dòng)機(jī)ECU和S7-300PLC采集好后上傳給上位機(jī)[9],在上位機(jī)中建立OPC服務(wù)器,將工業(yè)現(xiàn)場(chǎng)采集到的所有發(fā)動(dòng)機(jī)性能參數(shù)數(shù)據(jù)進(jìn)行統(tǒng)一,并轉(zhuǎn)換成OPC默認(rèn)可以識(shí)別的數(shù)據(jù)格式,利用OPC平臺(tái),數(shù)據(jù)處理系統(tǒng)通過LabVIEW 2014 DSC模塊對(duì)OPC Server進(jìn)行訪問,從上位機(jī)中獲取發(fā)動(dòng)機(jī)性能參數(shù)做分析計(jì)算,圖9為發(fā)動(dòng)機(jī)性能參數(shù)進(jìn)行析處理部分程序框圖。
圖9 參數(shù)處理部分程序框圖
數(shù)據(jù)處理系統(tǒng)將發(fā)動(dòng)機(jī)ECU采集獲取的發(fā)動(dòng)機(jī)參數(shù)處理生成的性能曲線如圖10所示。
圖10 發(fā)動(dòng)機(jī)參數(shù)測(cè)試數(shù)據(jù)
通過發(fā)動(dòng)機(jī)ECU和S7-300PLC兩種不同的采集方式得到發(fā)動(dòng)機(jī)性能參數(shù)后,由數(shù)據(jù)處理系統(tǒng)處理后在同一界面顯示最終的發(fā)動(dòng)機(jī)性能曲線(由于數(shù)據(jù)量度不同,發(fā)動(dòng)機(jī)轉(zhuǎn)速和扭矩兩組曲線對(duì)稱給出,以Y1為縱軸,其余3組以單曲線給出,以Y2為縱軸),如圖11所示。
圖11 發(fā)動(dòng)機(jī)性能參數(shù)曲線圖
從圖11中可知,以圖中的發(fā)動(dòng)機(jī)扭矩分析為例,圖中的點(diǎn)劃線代表由發(fā)動(dòng)機(jī)ECU采集的數(shù)據(jù)得到的發(fā)動(dòng)機(jī)扭矩性能曲線,虛線代表由S7-300PLC采集的數(shù)據(jù)得到的性能曲線,兩組曲線形狀相似(由于數(shù)據(jù)采集的兩種方式不同,導(dǎo)致兩曲線并沒有完全相同,與實(shí)際相符合。如果兩種測(cè)試方式下的結(jié)果差異很大,則說明以S7-300PLC為核心的數(shù)據(jù)采集系統(tǒng)或者以發(fā)動(dòng)機(jī)ECU為核心的數(shù)據(jù)采集系統(tǒng)至少一者出現(xiàn)故障需另做研究),上文中給出待檢發(fā)動(dòng)機(jī)的扭矩值范圍為-250~250 N·m,從圖中不難看出兩曲線的扭矩值范圍在-20~190 N·m,均落在給定的發(fā)動(dòng)機(jī)扭矩閾值內(nèi),因此認(rèn)為該發(fā)動(dòng)機(jī)性能合格。無(wú)論哪組曲線超出閾值均認(rèn)為待測(cè)發(fā)動(dòng)機(jī)不合格,需作進(jìn)一步診斷處理。
研究了發(fā)動(dòng)機(jī)性能測(cè)試方法,將S7-300PLC和LabVIEW典型高效的工業(yè)硬件和軟件有機(jī)地結(jié)合起來,同時(shí)以S7-300PLC為核心建立數(shù)據(jù)采集系統(tǒng)并與發(fā)動(dòng)機(jī)ECU同時(shí)采集發(fā)動(dòng)機(jī)性能參數(shù),使整個(gè)檢測(cè)流程具有實(shí)時(shí)性、精確性、直觀性、抗干擾性等特點(diǎn),避免了以發(fā)動(dòng)機(jī)ECU為核心的單一數(shù)據(jù)采集方式下的結(jié)果誤差而造成最終評(píng)判失誤,具有很強(qiáng)的理論指導(dǎo)意義和生產(chǎn)實(shí)踐意義。