徐钰琨,赵传伟
(1.山东科技职业学院 电气工程系,潍坊 261053;2.福田雷沃国际重工股份有限公司,潍坊 261206)
在当下的工程机械产品中,为了满足按揭销售与租赁业务的需求,主流远程监控系统主要集中在GPS定位及锁车两大功能上[1~3]。随着市场需求的变化,远程监控系统除上述功能外,还要满足运行工况数据化,故障检测远程化等要求。而柴油发动机作为工程机械产品的动力源,它的性能好坏直接关系到整机效率的高低。因此,远程监控发动机的各项参数(转速、压力、温度、耗油量、电瓶电压等)以及故障代码具有极其重要的意义。本文根据产品开发的需要,结合目前远程监控终端系统的新要求,开发了一套基于ARM的发动机远程监控终端系统。此系统采用的主控制器是基于ARM Cortex-M3内核的STM32系列微处理器。此处理器具备外围接口丰富,支持串口和CAN,功耗低等特点。在系统设计完成后,通过实际的产品测试表明:该系统在线率稳定,可靠性高,能够满足整机设备制造商对于产品远程监控的需求,并比同类产品具备价格优势。
系统主要由三部分组成:发动机模块,GPRS模块和GPS模块。具体的系统模块框图如图1所示。
图1 系统模块框图
1)发动机模块:STM32通过CAN总线与发动机自带的控制器进行通讯,获取各种参数或故障代码,其通讯协议为SAE J1939协议。
2)GPRS模块:STM32通过串口与其进行信息交换。一方面微处理器将采集到的发动机各项参数和GPS信息经过处理后发送到GPRS模块,此模块将这些数据上传到远程的服务器;另一方面,GPRS模块接收到服务器下传的控制信息后,也可经过串口与STM32进行通讯,控制发动机的部分参数。其通讯采用标准的AT指令。
3)GPS模块:将定位信息通过串口传送到STM32。其采用标准的GPS数据格式。
由于工程机械产品的工作环境比较恶劣,因此远程监控终端系统需要有较高的稳定性和可靠性,另外当整机不工作时,远程监控终端系统的能耗要低,便于延长待机时间,保证数据的及时上传。因此,本系统中选取STM32F103CBT6微处理器作为主控制芯片。它的电源管理系统比较可靠,可根据电源的变化选择三种低功耗模式。此处理器的封装形式为LQFP48,通讯接口比较丰富,具有3个串口,1个CAN接口,满足系统对于各模块的通讯要求。另外体积较小,便于集成[4]。
GPRS模块的主芯片采用华为的GTM900-C,它具备EGSM900和GSM1800两个频段;接收灵敏度小于-106dBm;标准SIM卡接口(1.8或3V);GSC射频天线连接器;短消息业务支持MO和MT点对点和小区广播短消息模式,支持TEXT和PDU GPRS数据业务;GPRS CLASS 10编码方式CS1,CS2,CS3,CS4,最高速率可达85.6Kbit/s,支持PBCCH内嵌TCP/IP协议[5]。
GPS模块的主芯片采用GARMINGPS25LP,其采用全密封方式,其位置精度小于15m,速度精度小于0.1m/s,性价比较高[6]。
发动机模块电路的主体是CAN接口电路,如图2所示。在此电路中采用型号为TJA1050的CAN总线收发器。此收发器通过它的两个有差动接收和发送能力的总线终端可以连接到柴油发动机的CAN线回路中,从而使STM32F103CBT6微处理器和发动机自带的控制器进行通讯。
图2 CAN接口电路
TJA1050的3号端口为电源端,采用5V电压;1号、4号端口分别连接STM32F103CBT6的CAN发送端口(33号引脚)和CAN接收端口(32号引脚);8号端口为工作模式选择端口,其连接到地可进入高速模式(正常工作模式),总线输出的信号有固定的斜率,可以尽快的速度节能型切换,满足最大的位速率和最大的总线长度,而且其循环延迟最小;7号和6号端口对应CANH和CANL,为了满足发动机CAN总线网路的要求,在两个端口间采用120欧的终端匹配电阻。
GPRS模块与STM32F103CBT6连接如图3所示。GTM900-C是华为公司生产的GPRS模块,它由电源管理单元、串口处理单元、SIM卡处理单元、射频收发单元等组成。其15号端口(IGT)可实现开关机功能,与微处理器的PA4端口相连,由微处理器进行控制;17号~21号端口为串口,为TTL电平信号,可直接与微处理器的1号串口连接;25号~28号端口为SIM卡的接口,与标准的SIM卡模块连接;29号端口为模块接地端口,此端口必须和SIM卡模块的SIMGND相连,保证两者的电平一致。31号端口为复位端口,与微处理器的PA5端口相连接,此端口低电平有效,从而实现对整个模块的复位。
图3 GTM900C与STM32F103CBT6连接电路图
GPS模块主要采用GRMIN公司的GPS25LP,它只需要一个12针的引脚与系统相连,如图4所示。其中,TXD1和RXD1为串口的通讯端口,为5V的逻辑电平,可直接与STM32F103CBT6的串口1(PA9和PA10端口)相连;端口10为电源端口,采用5V供电。为了保证其工作稳定性,通常在端口10和端口8之间加一个10MF的保持电容。
图4 GPS25LP接线图
软件设计的调试环境采用RealView MDK,它是ARM公司专门针对嵌入式处理开发的一套软件,具有完善的设备调试和软件仿真功能。STM32F103CBT6本身带有的大量固件库函数,可以提高代码质量,缩短开发周期。在本系统中,重点使用flash、DCC、CAN、USART等固件库。
软件框架采用主函数和中断函数的结构。其中,在主函数中对各种功能模块进行初始化,并实现简单的数据存储和数据计算;中断函数主要实现CAN、USART两大模块的数据接收和发送。中断的优先级依次为CAN、USART2、USART1。
为了提高数据传输的实时性,如上所述,CAN报文的接收采用中断方式。因此,在主函数的CAN初始化过程中应该通过调用STM32固件库函数voidCAN_IT-Config来开启CAN1的中断,在接收时通过判断其标志位来确定是否产生的中断,以此进入中断函数对收到的报文进行处理。即:在接收一个报文时,其标识符首先与配置在标识符列表模式下的过滤器相比较,若匹配,报文就被存放到相关联的FIFO中,并且所匹配的过滤器的序号被存入过滤器匹配序号中。若不匹配,报文标识符立即再与配置在屏蔽位模式下的过滤器进行比较,如果报文标识符与过滤器中的任何标识符都不匹配,那么硬件就丢弃该报文,且不会对软件有任何打扰。数据接收模块流程如图5所示。
图5 CAN数据接收流程
图6 GPS数据接收流程
由于柴油发动机采用J1939协议规定的数据格式进行数据传输,因此STM32通过CAN中断接收到报文后,必须对数据进行解析。J1939协议是美国汽车工程师协会(Society of Automotive Engineers,简称SAE)发布的以CAN 2.0B协议为基础的车辆网络串行通讯和控制协议。它是目前车辆应用最广泛的协议之一,有9个子标准,其中J1939-71标准中对发动机各个参数的地址、名称、数据格式以及发送优先级等做了详细的定义。它采用PDU(Protocol Data Unit协议数据单元)传送信息,每个PDU相当于CAN协议中的一帧。由于每个CAN帧最多可传输8个字节数据,因此PDU的传输具有很高的实时性。PDU是由29位标识符和8个字节数据组成的[7]。现以J1939中对发动机温度的定义(如表1所示)进行数据解析说明。
如果计算发动机冷却液温度,按照J1939协议中的要求,计算公式为:发动机冷却液温度=原始数×分辨率+偏移量。假如此时字节1的原始数为7Dh(说明:h为十六进制,b为二进制,d为十进制),则7Dh =125d。查对应分辨率表格为1oC/位,偏移量为-40oC。因此,发动机冷却液温度=125×1-40=85oC。按照此思路,便可以从J1939协议的应用层中解析出发动机的转速、机油压力、水温、燃油量等各种参数[8]。
表1 发动机温度参数定义格式
如前所述,GPS模块主要采用GRMIN公司的GPS25LP。GPS模块会每秒钟发出数据包,数据包遵循NMEA-0183协议,协议中有准确的经纬度信息。通过数据解析,数据传输通常有GPGGA和GPRMC两种格式。为了减少GPS模块的数据传输负担,通常采用GPRMC格式。
GPS数据接收流程如图6所示。STM32利用中断模式接收GPS25LP传来的数据,然后判断是否为GPRMC格式,如果格式正确,则开始接收数据并存在缓存中。当数据全部接收完毕,退出中断程序。部分程序如下:
GTM900C与STM32之间通过USART2进行数据传输,程序中采用常用的AT指令。但在数据发送之间,需要对GPRS模块初始化。所谓的初始化就是GTM900C建立TCP链接的过程,通常由众多的AT命令子程序组成。具体的流程图如图7所示。
首先是验证GTM900C是否正常,通过AT指令进行测试来实现。如果测试成功,为了减少无用的返回字符串,要对其执行“关回显”的命令。回显的意思是给它发条指令它会原封不动的回发一条已发的指令,“关回显”可以使串口专心监测GTM900C实际返回的参数。
其次是判断SIM卡是否插入,检查信号强度以及网络注册状态等。这是为GTM900C建立TCP链接做准备。因为只有在网络已经注册完毕的状态下,GTM900C才能建立TCP链接,而建立的快慢与信号强度有关。
最后是通过配置APN,进入TCP/IP功能和建立TCP链接。如果对具有固定IP地址服务器来说,GTM900C按照以上三个步骤即可。而对于非固定IP地址的服务器,还需要经过域名解析获得服务器的IP地址,然后才能建立TCP链接。
图7 GPRS模块初始化的程序流程图
远程监控系统设计完成后,在福田雷沃重工的FR630D旋挖钻机产品上进行测试。一是可靠性测试,让装有此终端(如图8所示)的5台整机分别连续工作200小时,监控其运行情况,通过PC端的监控软件可以看到发动机的参数可实时显示。二是功能性测试,测试GTM900C与服务器之间的连接,通过设置TCP的地址,让GPRS的发送数据与服务器建立连接,然后通过服务器将所有数据用图文表现出来,体现可读性。如图9所示。
图8 远程监控终端
图9 PC端监控显示界面
本论文通过对发动机远程监控的终端系统进行设计,满足了当下整机产品对于此系统的要求。硬件方面,基于STM32的终端系统,通过实验可以看出,在功耗和可靠性方面有着高性价比。软件部分,通过STM32丰富的固件库函数,可以提高软件质量,缩短开发周期。整个系统的设计与实现对整机厂提出的运行工况数据化,故障检测远程化有着积极地作用。在后续的研究中,要对GPRS信号的稳定性进一步研究,提高系统在线率。
[1]王兴刚,李来平.GPS远程监控系统在旋挖钻机上的应用[J].探矿工程.2008,35(10),30-32.
[2]宋祥献,王经聪,史继松.挖掘机的全球卫星定位远程监控系统[J].工程机械与维修.2011,10,190-191.
[3]邓小星,喻寿益.多功能工程机械远数据采集与传输终端的设计[J].机电技术.2010,33(2),2-5.
[4]ST Microelectronics ,STM32F103XB Datasheet[M].ST Microelectronics,2012.
[5]华为技术有限公司.GTM900-C无线模块产品概述[M].华为技术有限公司,2009.
[6]GARMIN.GPS25LP series GPS sensor boards technical specification[M].USA:GARMIN,2005.
[7]Society of Automotive Engineers.SAE J1939 standards collection,recommended practice for a serial control and communication vehicle network[S].2003.
[8]SAE,SAE J1939-71.Vehicle application layer–J1939-71(through1999)[S].USA:SAE J1939 Committee Draft,1994:5-98.