APP下载

基于可编程逻辑控制器的工程机械发动机ECU的CAN总线通信设计

2019-10-21陈静

汽车实用技术 2019年23期

陈静

摘 要:工程机械是一种综合性强、科技含量高、工况复杂的机械化施工工程所需的机械设备,一般的工程机械上装配有可编程逻辑控制器(PLC)用以控制复杂的逻辑动作间接实现智能化作业的目的,本文所述的可编程逻辑控制器主要涉及在发动机的通讯及控制的应用。目前工程机械发动机多为柴油电喷发动机,发动机配有ECU(电子控制单元,又称“车载电脑”或“行车电脑”)用以控制发动机的运行及监控发动机各个传感器的运行参数,确保发动机的安全、可靠运行。鉴于于工程机械工况复杂,震动强,使用环境比较差;因此,工程机械对上装作业控制器要求较高,普通PLC不能满足需求。基于上述问题考虑,本文选择专为移动车辆及工程机械而产的可编程逻辑控制器作为论述基础,这种可编程逻辑控制器与发动机ECU的通信网络系统采用国际标准的CAN总线通讯协议,可编程控制器与发动机ECU之间的数据可通过通信双绞线实时读取、实时发送。

关键词:可编程逻辑控制器;PLC;发动机ECU;CAN

中图分类号:U462.1  文献标识码: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 引言

工程機械是一种用于工程建设的施工机械的总称,种类繁多。大多用于水利、建筑、道路、国防、电力、港口和矿山等工程领域,是我国国民生产的支柱产业。大多数工程机械在汽车专用底盘基础上加装附加设备用于工程作业,上装设备含有可编程逻辑控制器用于控制上装作业动作;同时控制器与底盘发动机ECU通过CAN通信双绞线连接,用以实时监控发动机的冷却液温度、机油压力、发动机转速等,便于远程读取发动机危险故障信息并及时处理发动机故障;部分工程机械需要远程控制发动机的转速、扭矩等,使发动机在上装作业时达到最佳作业状态。本文主要介绍了可编程逻辑控制器如何远程读取发动机冷却液温度、机油压力、发动机转速等参数及如何远程控制发动机转速,以此简单说明可编程逻辑控制器在工程机械发动机发动机方面的CAN总线通信应用。

2 CAN总线通信系统简单说明

CAN(Controller Area Network, 缩写CAN)简称控制器局域网络,最早由德国BOSCH公司开发用于各个汽车电子产品的相互通信,目前CAN总线通信协议已发展为ISO国际标准化的串行通信协议,因其高可靠性、极好的性能被广泛应用于汽车、船舶、医疗设备、工业自动化等领域。CAN总线通信技术为分布式控制系统实现各节点之间可靠、实时的数据通信提供了强有力的技术支持。CAN总线的通信介质主要包括光纤、同轴电缆、带屏蔽层的双绞线,最高通信速率可达1Mbps,最大通信距离可达10KM,与其他现场总线相比具有易实现、性价比高、通信速率高等优点。

3 可编程逻辑控制器与发动机ECU的通信说明

目前,工程机械领域可编程逻辑控制器与发动机ECU主要通过带屏蔽层的双绞线直接连接,并且在双绞线首末终端需各加一个120Ω,最终两线之间电阻值为60Ω,首末终端加120Ω电阻是因为高频信号传输时,信号波长相对传输线较短,信号在传输线终端会形成反射波最终干扰原信号,所以需要在传输线末端加终端电阻,使信号到达传输线末端后不反射。对于低频信号则不用CAN总线两端必须连接终端电阻才可以正常工作,终端电阻应该与通讯电缆的阻抗相同,典型值为120Ω。其作用是匹配总线阻抗,提高数据通信的抗干扰性及可靠行。

图1  可编程逻辑控制器与发动机ECU双绞线连接示意图

4 可编程逻辑控制器读写、發送发动机ECU程序说明

可编程逻辑控制器与发动机ECU通讯程序设计主要依据发动机ECU的通讯协议规范编写,发动机ECU的通讯协议制定了发动机各个参数的通讯ID及数据内容。可编程逻辑控制器在程序设计时必须严格按照发动机ECU的通信协议编写程序。这样才能读取、发送指令给发动机ECU,从而实现发动机ECU与可编程逻辑控制器的实时、准确、有效通讯。

4.1 读取发动机ECU数据程序设计

发动机数据的读取主要依据发动机ECU相关报文信息,报文信息含有各个信息的参数描述、报文名称、ID、周期、相应字节位置、数据增益,可编程控制器以报文信息编写程序,通过相关ID读取发动机ECU发送的信息,并将信息依据相应字节位置、数据增益将读取的数据解析为直观的数据内容。下面程序段是依据玉柴国五发动机CAN报文信息编写的程序段,程序段主要读取了发动机转速、力矩百分比、冷却液温度、机油压力等数据内容,并将数据内容解析计算得到实际的发动机数据信息。

● 读取相应ID的数据内容:

CAN2_RECEIVE_3(config:=init_1,clear:=FALSE,

id:=16#0CF00400,(*data_EEC1,发动机转速实际读取*)

data=>arCAN2_16ID0CF00400_RX_DATA);

CAN2_RECEIVE_4(config:=init_1,

clear:=FALSE,

id:=16#0CF00300,(*data_EEC2,发动机力矩百分比读取*)

data=>arCAN2_16ID0CF00300_RX_DATA);

CAN2_RECEIVE_5(config:=init_1,

clear:=FALSE,

id:=16#18FEEE00,(*data_TEMP,发动机冷却液温度读取*)

data=>arCAN2_16ID18FEEE00_RX_DATA);

CAN2_RECEIVE_6(config:=init_1,

clear:=FALSE,

id:=16#18FEEF00,(*data_OilPressure,发动机机油压力读取*)

data=>arCAN2_16ID18FEEF00_RX_DATA);

● 将相应ID下的数据的数据内容解析为正确的发动机数据:

IF true THEN

sCan_EngineData.iEngine_percent_torque:=BYTE_TO_INT(arCAN2_16ID0CF00300_RX_DATA[3]);(*发动机力矩百分比数据解析,将该ID下第三字节赋值给力矩百分比变量即为实际力矩百分比*)

sCan_EngineData.wEngineSpeed :=(BYTE_TO_WORD(arCAN2_16ID0CF00400_RX_DATA[5])*256+BYTE_TO_WORD(arCAN2_16ID0CF00400_RX_DATA[4]))/8;(*发动机转速数据解析,将该ID下第五字节×256+第四字节,取得和再除以8赋值给发动机转速变量即为实际发动机实际转速*)

sCan_EngineData.iEngine_CoolantTemp:=BYTE_TO_INT(arCAN2_16ID18FEEE00_RX_DATA[1])-40;(*发动机冷却液温度数据解析,将该ID下第一字节—40的结果赋值给发动机冷却液温度变量即为实际发动机冷却液温度*)

sCan_EngineData.wEngine_OilPressure:=BYTE_TO_INT (arCAN2_16ID18FEEF00_RX_DATA[4])*4;(*发动机冷却液温度数据解析,将该ID下第一字节×4的结果赋值给发动机机油压力变量即为实际发动机机油压力*)

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 发送至发动机ECU数据程序设计

给发动机ECU发送数据同样需要按照规定的报文制定发动ID及参数描述、报文名称、周期、相应字节位置、数据增益等,下面程序段以给发动机发送转速控制请求及数据内容为例,解释可编程控制如何给发动机ECU发送数据信息。

wEngineSpeed_send:=750;(*给发动机ECU发送的实际转速数据*)

WORD_TO_LSB_MSB_0(WORD_IN:=wEngineSpeed_send*8,LSB=>SPEED_SEND_H,MSB=>SPEED_SEND_L);(*将实际转速数据转化为CAN通讯相应ID及字节下可以传送的数据内容*)

arCAN2_ID0C00000B_TX_DATA[0]:=16#CD;(发动机转速控制请求信号)

arCAN2_ID0C00000B_TX_DATA[1]:=SPEED_SEND_L;(*经上述转化后数据内容为16#70*)

arCAN2_ID0C00000B_TX_DATA[2]:=SPEED_SEND_H;(*经上述转化后数据内容为16#17*)

TSC1_ID:= 16#0C00000B;(*控制转速的相应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;(相应字节的数据内容)

J1939_TX_0(ENABLE:=TRUE,CHANNEL:=2,ID:=16#0C00000B,DATA:=arCAN2_ID0C000003_TX_DATA);(*通过可编程逻辑控制器发送信息*)

5 结论

根据上述文中描述,我们将编写好的程序下载至可编程逻辑控制器中,并与发动机相应通讯,再用监控软件监控CAN双绞线上的发动机ECU与可编程控制器之间的CAN报文,通过计算验证了程序及发动机CAN报文的正确性,下面以部分报文简单介绍程序及报文的验证。

图2  软件在CAN双绞线抓取的相应报文

图2为用软件抓取的可编程控制器与发动机ECU之间的部分报文信息,由图可以看到上述程序相应ID及数据内容,如ID16#C00000B中,经对比8个字节内容与程序发送一致;ID16#CF00400中,根据公式第五字节×256+第四字节,取得和再除以8(16#1A×256+16#98=6000,6000/8=750)计算后结果为750,与可编程控制器给发动机ECU发送的转速控制数值一致,监测结果验证了程序设计的正确性,证明本文基于可编程逻辑控制器的工程机械发动机ECU的 CAN总线通信设计论述具有一定的实用价值。

参考文献

[1] 饶运涛,邹继军,郑勇芸.现场总线CAN原理与应用技术.南昌:东华理工学院.2002.

[2] 林小峰,宋春宁,宋绍剑,黄清宝.基于IEC 61131-3标准的控制系统及应用.南宁:广西大学.2007.

[3] 彭瑜,何衍庆.IEC 61131-3编程语言及应用基础.北京:机械工业出版社.2009.

[4] 周哲,张振东,尹丛勃,梁承友,周正祥,李凯.基于转矩模型的高压共轨柴油机控制策略.上海:上海理工大学汽车工程研究所上海汽车集团股份有限公司商用车技术中心.2017.

[5] 吴进军.高压共轨式柴油转子发动机ECU研制及其试验匹配研究.北京:机械科学研究总院.2007.

[6] 于世涛,杨林,王俊席,龚元明,卓斌.柴油机高壓共轨电控系统开发方案的研究[J]. 汽车工程. 2005.

[7] 王尚军.带CAN电控汽油发动机故障诊断模拟系统的研究与试验分析.广州:华南理工大学.2016.

[8] 杨秀强.汽车电控发动机传感器的原理与检测[J]. 徐州:江苏省徐州技师学院汽车工程系. 2011.

[9] 马建民.柴油机高压共轨系统ECU的研究与设计.上海:上海交通大学.