吴 飞,王正卫
(武汉理工大学 机电工程学院,湖北 武汉 430070)
发动机作为汽车的动力源是汽车性能检测的关键[1]。发动机下线性能试验测试方法研究的主要任务是完成发动机从生产线下线吊装到性能检测试验台进行测试过程中的性能参数采集分析处理工作。构建以S7-300PLC为核心的数据采集系统采集发动机性能参数,并与发动机ECU通信获取发动机ECU采集的数据,两组数据上传至上位机,数据处理系统从上位机调用采集到的两组数据进行分析处理后在同一界面生成对应的曲线图,实现人机交互,并通过对曲线差异的比较分析判断发动机的性能状况。
启动发动机进行热试试验后,发动机ECU通过预先布置在发动机内部的各类传感器获取发动机性能参数信号[2],并利用CAN数据总线将采集到的数据打包上传给上位机;发动机性能检测试验台上的各类传感器同时采集发动机的性能参数模拟信号,传递给S7-300PLC的数据采集模块,再通过傅立叶变换等数学手段将采集到的模拟量转换为数字量贮存在S7-300PLC内部[3],通过PROFINET将采集到的数据传给上位机,上位机获取发动机ECU和S7-300PLC采集的数据后,以LabVIEW为核心的数据处理系统从上位机中调取需要的发动机性能参数生成相应的性能参数曲线并实现人机交互,总体框架如图1所示。
图1 发动机性能测试系统总体框架
汽车发动机ECU通过预先布置在发动机内部的传感器获取发动机性能参数,在发动机下线前这套体系已由厂家建立[3]。笔者研究的是实现S7-300PLC的数据采集以及建立上位机与发动机ECU、S7-300PLC间的通信,从而获取发动机性能参数。
本试验台中S7-300PLC的数据采集模块结构如图2所示。在该模块中有测量通道和校零通道两种通道类型[4],前者用来接入采集信号的扭矩传感器、光电传感器、温度传感器等,后者用来接入一路冷端的补偿信号。测量通道的各类传感器在获取发动机的性能参数信号后经数据采集电路处理上传给S7-300PLC,S7-300PLC利用自身的数据处理功能对采集到的发动机性能参数数据进行线性补偿、滤波、A/D转换等处理后转换为需要的扭矩、转速、温度等数字量信号,经由异步接口将数字量信号上传给上位机进行贮存,供数据处理系统调用进行数据计算等工作。
图2 发动机性能参数采集结构
在S7-300PLC数据采集模块的内部有控制字节,用来选择字节的输出类型(是无条件字节输出还是半字节输出),后者输出时需要请求信号,且由于信号传输的过程中需要的次数较多,耗时较长。本次试验中为了降低S7-300PLC的造价成本,像发动机的机油温度和水温采集采用半字节输出的形式,通过无条件字节的方式输出数据时,不用发出请求信号,其他流程和半字节输出方式的一样。
半字节输出方式由S7-300PLC连接了5个模块,这5个模块的输出端口并联后再以总线的形式与S7-300PLC的输入端相连接,它们的输入端分别连接到S7-300PLC对应的开关量输出端口,再由S7-300PLC按一定的顺序定时向各个模块的的输入端口发出需要的请求信号,然后各个模块再根据指令要求依次再将数据定时送出,图3为各个模块的输出时序。
图3 S7-300PLC以请求方式传输数据
上位机向S7-300PLC发出通信请求命令后,S7-300PLC以请求方式调用中断程序(如图4)启动数据采集模块进行数据采集。利用中断连接指令(ATCH)指定中断事件中所要调用的程序段(通过中断程序号指定,本次设置的中断号INT_0,0),移动指针在PLC寄存器中获取寄存位置,用以存储后续由各模块采集到的信号参数。S7-300PLC以请求方式向数据采集模块(分别针对发动机的扭矩、转速、节气门要求开度、机油温度、水温)发出一系列脉冲串信号,在获取相关的性能参数后,寻找寄存器起始位置将得到的参数存入寄存器中,当一轮性能参数采集工作结束后,返回到起始位置等待下一轮脉冲信号的发出。
图4 S7-300PLC数据采集中断程序部分代码
为了判断S7-300PLC发出的一个性能参数采集的脉冲串是否采集结束,在中断程序中使用了一个定时时间为40 ms的定时程序来检查是否还有下一个脉冲信号,如果在规定的时间内无法获取新的脉冲信号,则认为本轮的数据采集工作完成,由指针重新寻找并回到数据的起始位置,每经过4次后由中断程序获取下一个通道数值,指针指向下一个通道的数据存放位置,等待下一次的数据采集指令的信号。
中断程序启动后,使用#AAN等命令进行数据采集工作。由于采集的参数较多,需要连接多个采集模块,S7-300PLC自身具备相关的串行接口[5],通过设置多个模块连接通道进行连接即可。
在数据采集主程序中,首先对一些初始变量进行赋值并利用中断连接指令(ATCH)指定中断事件中所要调用的程序段后,串行接口采集模块与各类信号采集的传感器进行参数交换,将传感器获取的各类参数信号(模拟量)寄存器值传送给串行接口采集模块的寄存器,接着串行接口采集模块对获取的参数信号按不同类型进行目标操作位自加等处理,并调用下一级子程序对获取的模拟信号进行模数转换,以获取发动机性能参数的数字量。S7-300PLC数据采集主程序部分代码如图5所示。
图5 S7-300PLC数据采集主程序部分代码
上位机与发动机ECU通信系统结构如图6所示。ECU获取到发动机性能参数后将其打包,以数据包的形式将其上传,CAN总线实现的功能包括:正确识别CAN通道;将封装CAN报文进行发送;接收CAN数据帧,并能对接受的数据帧进行解析。
图6 上位机与发动机ECU通信系统结构
由于上位机主机自身带有USB接口,在与发动机ECU通信时利用USB-CAN系列的CAN接口卡的定位孔进行快速对接,为实现ECU与上位机之间的快速准确通信,对发动机ECU的接口做重新定义[6]。
通过发动机预先布置的各类传感器按表1指定的周期进行实时采集数据传输到发动机ECU。
表1 发动机性能参数指标明细
ECU得到采集的数据后,按照协议的方式计算得到相关的参数值[7],计算方法如下:
采集到的某个变量值为A(A必须是在表1中指定的最小值与最大值之间,否则报错),则对应的参数值C大小为:
C=A×分辨率+偏移量
在ECU计算得到发动机性能参数值之后,一类数据在ECU采集到后需将数据实时上传至上位机,另一类数据则根据工控机需要由上位机发出指令后再将采集到的数据上传至上位机,无需实时上传。
上位机与发动机ECU之间通过CAN-USB转换器连接之后,需要安装CAN-USB驱动才能建立两者之间的通信。安装成功之后,即建立了上位机与发动机ECU间的通信。
图7 上位机与S7-300PLC间的通信系统结构
图7为上位机与S7-300PLC间的通信系统结构。考虑到S7-300PLC采用的是Profibus总线,该总线形式下的数据交换不支持RS485接口的Modbus协议,故使用Profibus-DP to MODBUS RTU/ASCII协议转换器来解决S7-300PLC与上位机数据采集之间的通信问题。
选用Profibus-DP to MODBUS RTU/ASCII协议转换器的通信口1与S7-300PLC的数字量输出端口连接,采用DB9连接,A线对应8脚、B线对应3脚,接通电源模块,并接入通信电路即可进行通信,通信接口电路如图8所示。上位机与Profibus-DP to MODBUS RTU/ASCII协议转换器之间直接通过RS485-USB转换器连接实现通信。
图8 通信接口电路
发动机转速、冷却液温度、进气温度、进气压力等性能参数数据由发动机ECU和S7-300PLC采集好后上传给上位机[9],在上位机中建立OPC服务器,将工业现场采集到的所有发动机性能参数数据进行统一,并转换成OPC默认可以识别的数据格式,利用OPC平台,数据处理系统通过LabVIEW 2014 DSC模块对OPC Server进行访问,从上位机中获取发动机性能参数做分析计算,图9为发动机性能参数进行析处理部分程序框图。
图9 参数处理部分程序框图
数据处理系统将发动机ECU采集获取的发动机参数处理生成的性能曲线如图10所示。
图10 发动机参数测试数据
通过发动机ECU和S7-300PLC两种不同的采集方式得到发动机性能参数后,由数据处理系统处理后在同一界面显示最终的发动机性能曲线(由于数据量度不同,发动机转速和扭矩两组曲线对称给出,以Y1为纵轴,其余3组以单曲线给出,以Y2为纵轴),如图11所示。
图11 发动机性能参数曲线图
从图11中可知,以图中的发动机扭矩分析为例,图中的点划线代表由发动机ECU采集的数据得到的发动机扭矩性能曲线,虚线代表由S7-300PLC采集的数据得到的性能曲线,两组曲线形状相似(由于数据采集的两种方式不同,导致两曲线并没有完全相同,与实际相符合。如果两种测试方式下的结果差异很大,则说明以S7-300PLC为核心的数据采集系统或者以发动机ECU为核心的数据采集系统至少一者出现故障需另做研究),上文中给出待检发动机的扭矩值范围为-250~250 N·m,从图中不难看出两曲线的扭矩值范围在-20~190 N·m,均落在给定的发动机扭矩阈值内,因此认为该发动机性能合格。无论哪组曲线超出阈值均认为待测发动机不合格,需作进一步诊断处理。
研究了发动机性能测试方法,将S7-300PLC和LabVIEW典型高效的工业硬件和软件有机地结合起来,同时以S7-300PLC为核心建立数据采集系统并与发动机ECU同时采集发动机性能参数,使整个检测流程具有实时性、精确性、直观性、抗干扰性等特点,避免了以发动机ECU为核心的单一数据采集方式下的结果误差而造成最终评判失误,具有很强的理论指导意义和生产实践意义。