陳靜
摘 要:工程機(jī)械是一種綜合性強(qiáng)、科技含量高、工況復(fù)雜的機(jī)械化施工工程所需的機(jī)械設(shè)備,一般的工程機(jī)械上裝配有可編程邏輯控制器(PLC)用以控制復(fù)雜的邏輯動作間接實(shí)現(xiàn)智能化作業(yè)的目的,本文所述的可編程邏輯控制器主要涉及在發(fā)動機(jī)的通訊及控制的應(yīng)用。目前工程機(jī)械發(fā)動機(jī)多為柴油電噴發(fā)動機(jī),發(fā)動機(jī)配有ECU(電子控制單元,又稱“車載電腦”或“行車電腦”)用以控制發(fā)動機(jī)的運(yùn)行及監(jiān)控發(fā)動機(jī)各個傳感器的運(yùn)行參數(shù),確保發(fā)動機(jī)的安全、可靠運(yùn)行。鑒于于工程機(jī)械工況復(fù)雜,震動強(qiáng),使用環(huán)境比較差;因此,工程機(jī)械對上裝作業(yè)控制器要求較高,普通PLC不能滿足需求?;谏鲜鰡栴}考慮,本文選擇專為移動車輛及工程機(jī)械而產(chǎn)的可編程邏輯控制器作為論述基礎(chǔ),這種可編程邏輯控制器與發(fā)動機(jī)ECU的通信網(wǎng)絡(luò)系統(tǒng)采用國際標(biāo)準(zhǔn)的CAN總線通訊協(xié)議,可編程控制器與發(fā)動機(jī)ECU之間的數(shù)據(jù)可通過通信雙絞線實(shí)時讀取、實(shí)時發(fā)送。
關(guān)鍵詞:可編程邏輯控制器;PLC;發(fā)動機(jī)ECU;CAN
中圖分類號:U462.1 ?文獻(xiàn)標(biāo)識碼:A ?文章編號:1671-7988(2019)23-59-03
CAN bus Communication Design of Construction Machinery engine ECU based
on programmable logic controller
Chen Jing
( Zhengzhou Institute of Industrial Application Technology, Henan Zhengzhou 451199 )
Abstract: Construction machinery is a comprehensive strong complex working conditions, high technology content, the mechanization of construction machinery and equipment needed for the engineering, general engineering machinery equipped with programmable logic controller (PLC) is used to control complex logic action indirectly the realization of the aim of intelligent operation, this article described the programmable logic controller mainly involve the application of the communications and control in the engine.At present, most engineering machinery engines are diesel electric injection engines, which are equipped with ECU (electronic control unit, also known as "on-board computer" or "on-board computer") to control the operation of the engine and monitor the operation parameters of various sensors of the engine to ensure the safe and reliable operation of the engine.In view of complex engineering machinery working conditions, strong vibration, the use environment is poor; Therefore, construction machinery on top of the work controller requirements are higher, ordinary PLC can not meet the demand.Based on the above problems, this article choose specifically for mobile vehicles and engineering machinery and production as the basis of programmable logic controller, the programmable logic controller and the engine ECU communication network system adopts the international standard of CAN bus communication protocol, programmable controller and the data between the engine ECU CAN be sent via communication twisted-pair real-time read, real-time.
Keywords: Programmable logic controller; PLC; Engine ECU; CAN
CLC NO.: U462.1 ?Document Code: A ?Article ID: 1671-7988(2019)23-59-03
1 引言
工程機(jī)械是一種用于工程建設(shè)的施工機(jī)械的總稱,種類繁多。大多用于水利、建筑、道路、國防、電力、港口和礦山等工程領(lǐng)域,是我國國民生產(chǎn)的支柱產(chǎn)業(yè)。大多數(shù)工程機(jī)械在汽車專用底盤基礎(chǔ)上加裝附加設(shè)備用于工程作業(yè),上裝設(shè)備含有可編程邏輯控制器用于控制上裝作業(yè)動作;同時控制器與底盤發(fā)動機(jī)ECU通過CAN通信雙絞線連接,用以實(shí)時監(jiān)控發(fā)動機(jī)的冷卻液溫度、機(jī)油壓力、發(fā)動機(jī)轉(zhuǎn)速等,便于遠(yuǎn)程讀取發(fā)動機(jī)危險(xiǎn)故障信息并及時處理發(fā)動機(jī)故障;部分工程機(jī)械需要遠(yuǎn)程控制發(fā)動機(jī)的轉(zhuǎn)速、扭矩等,使發(fā)動機(jī)在上裝作業(yè)時達(dá)到最佳作業(yè)狀態(tài)。本文主要介紹了可編程邏輯控制器如何遠(yuǎn)程讀取發(fā)動機(jī)冷卻液溫度、機(jī)油壓力、發(fā)動機(jī)轉(zhuǎn)速等參數(shù)及如何遠(yuǎn)程控制發(fā)動機(jī)轉(zhuǎn)速,以此簡單說明可編程邏輯控制器在工程機(jī)械發(fā)動機(jī)發(fā)動機(jī)方面的CAN總線通信應(yīng)用。
2 CAN總線通信系統(tǒng)簡單說明
CAN(Controller Area Network, 縮寫CAN)簡稱控制器局域網(wǎng)絡(luò),最早由德國BOSCH公司開發(fā)用于各個汽車電子產(chǎn)品的相互通信,目前CAN總線通信協(xié)議已發(fā)展為ISO國際標(biāo)準(zhǔn)化的串行通信協(xié)議,因其高可靠性、極好的性能被廣泛應(yīng)用于汽車、船舶、醫(yī)療設(shè)備、工業(yè)自動化等領(lǐng)域。CAN總線通信技術(shù)為分布式控制系統(tǒng)實(shí)現(xiàn)各節(jié)點(diǎn)之間可靠、實(shí)時的數(shù)據(jù)通信提供了強(qiáng)有力的技術(shù)支持。CAN總線的通信介質(zhì)主要包括光纖、同軸電纜、帶屏蔽層的雙絞線,最高通信速率可達(dá)1Mbps,最大通信距離可達(dá)10KM,與其他現(xiàn)場總線相比具有易實(shí)現(xiàn)、性價比高、通信速率高等優(yōu)點(diǎn)。
3 可編程邏輯控制器與發(fā)動機(jī)ECU的通信說明
目前,工程機(jī)械領(lǐng)域可編程邏輯控制器與發(fā)動機(jī)ECU主要通過帶屏蔽層的雙絞線直接連接,并且在雙絞線首末終端需各加一個120Ω,最終兩線之間電阻值為60Ω,首末終端加120Ω電阻是因?yàn)楦哳l信號傳輸時,信號波長相對傳輸線較短,信號在傳輸線終端會形成反射波最終干擾原信號,所以需要在傳輸線末端加終端電阻,使信號到達(dá)傳輸線末端后不反射。對于低頻信號則不用CAN總線兩端必須連接終端電阻才可以正常工作,終端電阻應(yīng)該與通訊電纜的阻抗相同,典型值為120Ω。其作用是匹配總線阻抗,提高數(shù)據(jù)通信的抗干擾性及可靠行。
圖1 ?可編程邏輯控制器與發(fā)動機(jī)ECU雙絞線連接示意圖
4 可編程邏輯控制器讀寫、發(fā)送發(fā)動機(jī)ECU程序說明
可編程邏輯控制器與發(fā)動機(jī)ECU通訊程序設(shè)計(jì)主要依據(jù)發(fā)動機(jī)ECU的通訊協(xié)議規(guī)范編寫,發(fā)動機(jī)ECU的通訊協(xié)議制定了發(fā)動機(jī)各個參數(shù)的通訊ID及數(shù)據(jù)內(nèi)容。可編程邏輯控制器在程序設(shè)計(jì)時必須嚴(yán)格按照發(fā)動機(jī)ECU的通信協(xié)議編寫程序。這樣才能讀取、發(fā)送指令給發(fā)動機(jī)ECU,從而實(shí)現(xiàn)發(fā)動機(jī)ECU與可編程邏輯控制器的實(shí)時、準(zhǔn)確、有效通訊。
4.1 讀取發(fā)動機(jī)ECU數(shù)據(jù)程序設(shè)計(jì)
發(fā)動機(jī)數(shù)據(jù)的讀取主要依據(jù)發(fā)動機(jī)ECU相關(guān)報(bào)文信息,報(bào)文信息含有各個信息的參數(shù)描述、報(bào)文名稱、ID、周期、相應(yīng)字節(jié)位置、數(shù)據(jù)增益,可編程控制器以報(bào)文信息編寫程序,通過相關(guān)ID讀取發(fā)動機(jī)ECU發(fā)送的信息,并將信息依據(jù)相應(yīng)字節(jié)位置、數(shù)據(jù)增益將讀取的數(shù)據(jù)解析為直觀的數(shù)據(jù)內(nèi)容。下面程序段是依據(jù)玉柴國五發(fā)動機(jī)CAN報(bào)文信息編寫的程序段,程序段主要讀取了發(fā)動機(jī)轉(zhuǎn)速、力矩百分比、冷卻液溫度、機(jī)油壓力等數(shù)據(jù)內(nèi)容,并將數(shù)據(jù)內(nèi)容解析計(jì)算得到實(shí)際的發(fā)動機(jī)數(shù)據(jù)信息。
● 讀取相應(yīng)ID的數(shù)據(jù)內(nèi)容:
CAN2_RECEIVE_3(config:=init_1,clear:=FALSE,
id:=16#0CF00400,(*data_EEC1,發(fā)動機(jī)轉(zhuǎn)速實(shí)際讀取*)
data=>arCAN2_16ID0CF00400_RX_DATA);
CAN2_RECEIVE_4(config:=init_1,
clear:=FALSE,
id:=16#0CF00300,(*data_EEC2,發(fā)動機(jī)力矩百分比讀取*)
data=>arCAN2_16ID0CF00300_RX_DATA);
CAN2_RECEIVE_5(config:=init_1,
clear:=FALSE,
id:=16#18FEEE00,(*data_TEMP,發(fā)動機(jī)冷卻液溫度讀取*)
data=>arCAN2_16ID18FEEE00_RX_DATA);
CAN2_RECEIVE_6(config:=init_1,
clear:=FALSE,
id:=16#18FEEF00,(*data_OilPressure,發(fā)動機(jī)機(jī)油壓力讀取*)
data=>arCAN2_16ID18FEEF00_RX_DATA);
● 將相應(yīng)ID下的數(shù)據(jù)的數(shù)據(jù)內(nèi)容解析為正確的發(fā)動機(jī)數(shù)據(jù):
IF true THEN
sCan_EngineData.iEngine_percent_torque:=BYTE_TO_INT(arCAN2_16ID0CF00300_RX_DATA[3]);(*發(fā)動機(jī)力矩百分比數(shù)據(jù)解析,將該ID下第三字節(jié)賦值給力矩百分比變量即為實(shí)際力矩百分比*)
sCan_EngineData.wEngineSpeed :=(BYTE_TO_WORD(arCAN2_16ID0CF00400_RX_DATA[5])*256+BYTE_TO_WORD(arCAN2_16ID0CF00400_RX_DATA[4]))/8;(*發(fā)動機(jī)轉(zhuǎn)速數(shù)據(jù)解析,將該ID下第五字節(jié)×256+第四字節(jié),取得和再除以8賦值給發(fā)動機(jī)轉(zhuǎn)速變量即為實(shí)際發(fā)動機(jī)實(shí)際轉(zhuǎn)速*)
sCan_EngineData.iEngine_CoolantTemp:=BYTE_TO_INT(arCAN2_16ID18FEEE00_RX_DATA[1])-40;(*發(fā)動機(jī)冷卻液溫度數(shù)據(jù)解析,將該ID下第一字節(jié)—40的結(jié)果賦值給發(fā)動機(jī)冷卻液溫度變量即為實(shí)際發(fā)動機(jī)冷卻液溫度*)
sCan_EngineData.wEngine_OilPressure:=BYTE_TO_INT (arCAN2_16ID18FEEF00_RX_DATA[4])*4;(*發(fā)動機(jī)冷卻液溫度數(shù)據(jù)解析,將該ID下第一字節(jié)×4的結(jié)果賦值給發(fā)動機(jī)機(jī)油壓力變量即為實(shí)際發(fā)動機(jī)機(jī)油壓力*)
ELSE
sCan_EngineData.iEngine_percent_torque:=0;
sCan_EngineData.wEngineSpeed:=0;
sCan_EngineData.iEngine_CoolantTemp:=0;
sCan_EngineData.wEngine_OilPressure:= 0;
END_IF
4.2 發(fā)送至發(fā)動機(jī)ECU數(shù)據(jù)程序設(shè)計(jì)
給發(fā)動機(jī)ECU發(fā)送數(shù)據(jù)同樣需要按照規(guī)定的報(bào)文制定發(fā)動ID及參數(shù)描述、報(bào)文名稱、周期、相應(yīng)字節(jié)位置、數(shù)據(jù)增益等,下面程序段以給發(fā)動機(jī)發(fā)送轉(zhuǎn)速控制請求及數(shù)據(jù)內(nèi)容為例,解釋可編程控制如何給發(fā)動機(jī)ECU發(fā)送數(shù)據(jù)信息。
wEngineSpeed_send:=750;(*給發(fā)動機(jī)ECU發(fā)送的實(shí)際轉(zhuǎn)速數(shù)據(jù)*)
WORD_TO_LSB_MSB_0(WORD_IN:=wEngineSpeed_send*8,LSB=>SPEED_SEND_H,MSB=>SPEED_SEND_L);(*將實(shí)際轉(zhuǎn)速數(shù)據(jù)轉(zhuǎn)化為CAN通訊相應(yīng)ID及字節(jié)下可以傳送的數(shù)據(jù)內(nèi)容*)
arCAN2_ID0C00000B_TX_DATA[0]:=16#CD;(發(fā)動機(jī)轉(zhuǎn)速控制請求信號)
arCAN2_ID0C00000B_TX_DATA[1]:=SPEED_SEND_L;(*經(jīng)上述轉(zhuǎn)化后數(shù)據(jù)內(nèi)容為16#70*)
arCAN2_ID0C00000B_TX_DATA[2]:=SPEED_SEND_H;(*經(jīng)上述轉(zhuǎn)化后數(shù)據(jù)內(nèi)容為16#17*)
TSC1_ID:= 16#0C00000B;(*控制轉(zhuǎn)速的相應(yīng)ID*)
TSC1_DATA[0]:=arCAN2_ID0C00000B_TX_DATA[0];TSC1_ DATA[1]:= arCAN2_ID0C00000B_TX_DATA[1];TSC1_DATA [2]: =arCAN2_ID0C00000B_TX_DATA[2];TSC1_DATA[3]:= 0;TSC1_ DATA[4]:= 0;TSC1_DATA[5]:= 0;TSC1_DATA[6]:= 0;TSC1_ DATA[7]:= 0;(相應(yīng)字節(jié)的數(shù)據(jù)內(nèi)容)
J1939_TX_0(ENABLE:=TRUE,CHANNEL:=2,ID:=16#0C00000B,DATA:=arCAN2_ID0C000003_TX_DATA);(*通過可編程邏輯控制器發(fā)送信息*)
5 結(jié)論
根據(jù)上述文中描述,我們將編寫好的程序下載至可編程邏輯控制器中,并與發(fā)動機(jī)相應(yīng)通訊,再用監(jiān)控軟件監(jiān)控CAN雙絞線上的發(fā)動機(jī)ECU與可編程控制器之間的CAN報(bào)文,通過計(jì)算驗(yàn)證了程序及發(fā)動機(jī)CAN報(bào)文的正確性,下面以部分報(bào)文簡單介紹程序及報(bào)文的驗(yàn)證。
圖2 ?軟件在CAN雙絞線抓取的相應(yīng)報(bào)文
圖2為用軟件抓取的可編程控制器與發(fā)動機(jī)ECU之間的部分報(bào)文信息,由圖可以看到上述程序相應(yīng)ID及數(shù)據(jù)內(nèi)容,如ID16#C00000B中,經(jīng)對比8個字節(jié)內(nèi)容與程序發(fā)送一致;ID16#CF00400中,根據(jù)公式第五字節(jié)×256+第四字節(jié),取得和再除以8(16#1A×256+16#98=6000,6000/8=750)計(jì)算后結(jié)果為750,與可編程控制器給發(fā)動機(jī)ECU發(fā)送的轉(zhuǎn)速控制數(shù)值一致,監(jiān)測結(jié)果驗(yàn)證了程序設(shè)計(jì)的正確性,證明本文基于可編程邏輯控制器的工程機(jī)械發(fā)動機(jī)ECU的 CAN總線通信設(shè)計(jì)論述具有一定的實(shí)用價值。
參考文獻(xiàn)
[1] 饒運(yùn)濤,鄒繼軍,鄭勇蕓.現(xiàn)場總線CAN原理與應(yīng)用技術(shù).南昌:東華理工學(xué)院.2002.
[2] 林小峰,宋春寧,宋紹劍,黃清寶.基于IEC 61131-3標(biāo)準(zhǔn)的控制系統(tǒng)及應(yīng)用.南寧:廣西大學(xué).2007.
[3] 彭瑜,何衍慶.IEC 61131-3編程語言及應(yīng)用基礎(chǔ).北京:機(jī)械工業(yè)出版社.2009.
[4] 周哲,張振東,尹叢勃,梁承友,周正祥,李凱.基于轉(zhuǎn)矩模型的高壓共軌柴油機(jī)控制策略.上海:上海理工大學(xué)汽車工程研究所上海汽車集團(tuán)股份有限公司商用車技術(shù)中心.2017.
[5] 吳進(jìn)軍.高壓共軌式柴油轉(zhuǎn)子發(fā)動機(jī)ECU研制及其試驗(yàn)匹配研究.北京:機(jī)械科學(xué)研究總院.2007.
[6] 于世濤,楊林,王俊席,龔元明,卓斌.柴油機(jī)高壓共軌電控系統(tǒng)開發(fā)方案的研究[J]. 汽車工程. 2005.
[7] 王尚軍.帶CAN電控汽油發(fā)動機(jī)故障診斷模擬系統(tǒng)的研究與試驗(yàn)分析.廣州:華南理工大學(xué).2016.
[8] 楊秀強(qiáng).汽車電控發(fā)動機(jī)傳感器的原理與檢測[J]. 徐州:江蘇省徐州技師學(xué)院汽車工程系. 2011.
[9] 馬建民.柴油機(jī)高壓共軌系統(tǒng)ECU的研究與設(shè)計(jì).上海:上海交通大學(xué).