中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 841查看
  • 5回复

浅谈远程诊断技术在电控发动机方面的应用

[复制链接]

  • TA的每日心情
    开心
    18-6-2015 07:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 13-3-2015 17:47:20 | 显示全部楼层 |阅读模式

    汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


      
      引 言
      近年来,随着电子技术、计算机技术和信息技术的应用,汽车电子控制技术得到了迅猛的发展,尤其在控制精度、控制范围、智能化和网络化等多方面有了较大突破。汽车电子控制技术已成为衡量现代汽车发展水平的重要标志。
      汽车电子控制系统大体可分为四个部分:发动机电子控制系统,底盘综合控制系统,车身电子安全系统,信息通讯系统。其中,最为重要的为发动机电子控制系统,发动机电子控制系统基本由传感器、电子控制器(ECU)、驱动器和控制程序软件等部分组成。国内电控发动机系统尚处于未成熟阶段,一方面由于电控发动机在市场中的应用处于摸索阶段经常需要升级电控单元的底层控制程序,一方面在发动机试装车阶段常会出现因为车辆匹配性不佳而导致大量的软故障问题发生,甚至在批量交付给终端用户后都还会发生系统软故障。目前发动机厂家的解决办法都是依靠技术人员到实地进行现场故障诊断以及电控单元的控制程序升级。由于车辆已经交到用户手中,在全国各地无规律的分布,这将导致技术人员来回奔波,影响客户对电控发动机的信任度,如此的故障诊断方案效率低下。其次,故障诊断的区域分布广,差旅费带来的开销极大,势必增加电控发动机厂家的开发、生产成本。
      如何及时处理发生故障的车辆以及对车辆故障位置的准确定位,远程故障诊断系统的应用使这一难题逐步得到解决。车辆发生故障的情况下,通过GPRS网络系统辅以GPS系统可以准确确定车辆所处的位置,以及通过故障信息来初步确定故障产生的位置。技术人员通过计算机网络和数据库,迅速升级发动机电控单元控制程序,迅速修复车辆的故障。通过计算机数据库技术对汽车运行状态参数以及故障诊断信息的有效存储、管理,可以为车辆故障提供科学依据,同时对后期的产品设计提供有益的借鉴。
      由此看出,实现远程排除电控发动机的软故障,实现短时间、高效率、跨区域的远程故障诊断对汽车产业的发展具有重要意义。国内发动机行业里,远程故障诊断尚无先河,如果国内电控发动机企业能率先推出远程的故障诊断方案,定能增加电控发动机的附加值,提高电控系统在行业领域里的竞争力,同时也能在售后服务及时解决系统的软故障问题,给售后服务及时性带来极大的技术保障。
      1. 远程故障诊断系统简述
      据悉,汽车远程故障诊断并非新鲜事物,在许多进口高端汽车上已有较多运用。远程故障诊断技术是传统的故障诊断技术与网络技术、计算机技术和现代通信技术相结合的一种新型诊断技术,它是在汽车发生故障征兆或发生了故障,驾驶员或现场技术人员对其不能作出诊断时,通过与车辆监控中心或技术负责人建立连接,由监控中心、维修技师或其他先进故障诊断技术及时对其进行的诊断,并给出诊断结果。
      发动机远程故障诊断系统旨在利用网络环境,实现异地传输数据,实时监控发动机的解决办法,以电控发动机厂家的角度出发,远程故障诊断方案即指利用无线网络技术,解决远程装车数据匹配、调试、整车标定以及远程故障诊断、电控单元控制程序远程升级、以及远程售后服务等工作。
      2. 系统设计与实现
      远程故障诊断系统涉及多个领域和技术,主要技术有计算机网络技术、现代通信技术、分布式数据库技术、人工智能技术、在线监测和数据采集技术等。发动机远程故障诊断作为传统诊断技术的补充,利用电控单元采集汽车发动机的相关数据,利用中国移动GSM/GPRS无线网络资源,可以将分散且移动的汽车有效管理起来,实现汽车的远程故障诊断,便于技术人员排除故障,还可以通过智能终端控制装置实现在线监控,确保车辆电控系统的正常运行。系统不仅大大提高了故障诊断和维修的效率,而且便于技术的继承和更新。
      2.1 网络
      如何做到不改变现有电控发动机硬件设备,异地传输数据,实时监控发动机运行状况?结合电控单元(ECU)的产品特性,如何对遍布全国角落的车辆运行状况进行状态监控以及故障诊断. 针对车辆分布广,地域性要求较高的特点,最为理想的则是利用无线网络。受制于无线AP(Access Point)接入点的苛刻要求,偏远地区很可能没有无线网络WIFI信号,传统的WIFI无线网络在远程故障诊断系统上并不适用。如今,移动信号已普及中国的各个地区,针对这一特性,通用分组无线服务技术(General Packet Radio Service)是GSM移动电话用户可用的一种移动数据业务。利用GPRS无线网络来解决发动机远程故障诊断系统是最合适的方案。
      GPRS是目前解决移动通信信息服务的一种较完美的业务,它是以数据流量计费、或大数据的包月包年计费。覆盖范围广泛、数据传输速度更快。GPRS的推出,为行业和企业用户开展无线数据传输提供了基础设施平台,为推动移动办公的应用和发展创造了有利条件。与有线网络相比,GPRS网络具有租用费用低、移动办公,不受地域制约等优点。有移动网络的地方就可以实现数据传输(手机有信号的地方,我们就可以实现远程诊断车辆)。
      GPRS网络优点
      (1)覆盖范围。
      传输系统要求数据通信覆盖范围广,扩容无限制,接入地点无限制,能满足山区、乡镇和跨地区的接入需求。技术人员可在公司总部对发动机电控程序进行升级,同样,售后服务人员也可在千里之外对故障车辆进行故障诊断。
      (2)数据传输速率高。目前GPRS实际数据传输速率在40Kbps左右,完全能满足电控单元(ECU)数据传输速率的需求。
      (3)系统的传输容量大。
      (4)通信费用控制灵活。
      如果采用GPRS通信方式,可采用包月与按流量付费的两种结算方式。
      (5)良好的实时响应与处理能力。由于GPRS具有实时在线特性,系统无时延,可很好的满足系统对数据采集和传输实时性的要求。
      2.2硬件
      基于GPRS无线网络实现数据远程传输,不需要对现有的电控单元(ECU)产品做任何硬件改动,只需引入GPRS无线模块连接到发动机通信诊断口上即可。GPRS模块目前主要以DTU (Data Transfer unit)数据传输单元为主,专门用于将串口数据转换为IP数据或将IP数据转换为串口数据通过无线通信 网络进行传送的无线终端设备。市面上DTU厂家供应厂家较多,为实现异地与异地之间的数据传输连接,需选用能实现点对点,俗称透明数据传输的DTU设备。
      DTU的主要功能是把远端设备的数据通过无线的方式传送回后台中心。
      GPRS DTU的四个核心功能:
      (1)内部集成TCP/IP协议栈
      GPRS DTU内部封装了PPP拨号协议以及TCP/IP协议栈并且具有嵌入式操作系统,从硬件上,它可看作是嵌入式PC与无线GPRS MODEM的结合;它具备GPRS拨号上网以及TCP/IP数据通信的功能。
      (2)提供串口数据双向转换功能
      GPRS DTU提供了串行通信接口,包括RS232,RS485,RS422等都属于常用的串行通信方式,而且GPRS DTU在设计上大都将串口数据设计成“透明转换”的方式,也就是说GPRS DTU可以将串口上的原始数据转换成TCP/IP数据包进行传送,而不需要改变原有的数据通信内容。因此,GPRS DTU可以和各种使用串口通信的用户设备进行连接,而且不需要对用户设备作改动。
      (3)支持自动心跳,保持永久在线
      GPRS通信网络的优点之一就是支持GPRS终端设备永久在线,因此典型的GPRS DTU在设计上都支持永久在线功能,这就要求DTU包含了上电自动拨号、采用心跳包保持永久在线(当长时间没有数据通信时,移动网关将断开DTU与中心的连接,心跳包就是DTU与数据中心在连接被断开之前发送一个小数据包,以保持连接不被断开)、支持断线自动重连、自动重拨号等特点。
      GPRS DTU工作过程描述:
      GPRS DTU上电后,首先读出内部FLASH中保存的工作参数(包括GPRS拨号参数,串口波特率,数据中心IP地址等等,事先已经配置好)。
      GPRS DTU登陆GSM网络,然后进行GPRS PPP拨号。拨号成功后,GPRS DTU将获得一个由移动随机分配的内部IP地址(一般是10.X.X.X)。也就是说,GPRS DTU处于移动内网中,而且其内网IP地址通常是不固定的,随着每次拨号而变化。
      我们可以理解为GPRS DTU这时是一个移动内部局域网内的设备,通过移动网关来实现与外部Internet公网的通信。这与局域网内的电脑通过网关访问外部网络的方式相似。
      GPRS DTU主动发起与数据中心的通信连接,并保持通信连接一直存在。
      由于GPRS DTU处于移动内网,而且IP地址不固定。因此,只能由GPRS DTU主动连接数据中心,而不能由数据中心主动连接GPRS DTU。这就要求数据中心具备固定的公网IP地址或固定的域名。数据中心的公网IP地址或固定的域名作为参数存储在GPRS DTU内,以便GPRS DTU一旦上电拨号成功,就可以主动连接到数据中心。
    
  • TA的每日心情
    开心
    18-6-2015 07:30
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 13-3-2015 17:48:20 | 显示全部楼层

    浅谈远程诊断技术在电控发动机方面的应用

      具体地讲,GPRS DTU通过数据中心的IP地址(如果是采用中心域名的话,先通过中心域名解析出中心IP地址)以及端口号等参数,向数据中心发起TCP或UDP通信请求。在得到中心的响应后,GPRS DTU即认为与中心握手成功,然后就保持这个通信连接一直存在,如果通信连接中断,GPRS DTU将立即重新与中心握手。
      对于DTU来说,只要建立了与数据中心的双向通信,完成用户串口数据与GPRS网络数据包的转换就相对简单了。一旦接收到用户的串口数据,DTU就立即把串口数据封装在一个TCP/UDP包里,发送给数据中心。反之,当DTU收到数据中心发来的TCP/UDP包时,从中取出数据内容,立即通过串口发送给用户设备。
      2.3软件
      在前端,DTU和电控单元(ECU)通过RS232接口相连。DTU上电运行后先注册到移动的GPRS网络,然后去和设置在DTU中的后台中心建立SOCKET连接。后台中心作为SOCKET的服务端,DTU是SOCKET连接的客户端。因此只有DTU是不能完成数据的无线传输的,还需要有后台软件的配合一起使用。在建立连接后,前端的设备和后台的中心就可以通过DTU进行无线数据传输了,而且是双向的传输。
      软件设计实质上是改变现有基于本地串口通信的故障诊断软件的通信方式,将串口上的数据传输改变为TCP/IP协议的网络传输数据,及SOCKET网络编程。通过SOCKET编程,将电控单元(ECU)的通信协议命令移植到TCP/UDP数据包中,通过TCP/UDP数据传输实现发动机的故障诊断命令收发。本文基于VC++程序,将原有程序设计的通信模块进行重新设计,从而实现了不改变原有故障诊断软件的基本框架,快速实现基于DTU数据交互的诊断软件。
      在vc中进行winsock的api编程开发的时候,需要在项目中使用以下三个文件。
      (1)winsock.h: winsock api的头文件,需要包含在项目中。可在stdafx.h中加入#Include "winsock2.h"。
      (2)wsock32.lib: winsock api连接库文件。在使用中,一定要把它作为项目的非缺省的连接库包含到项目文件中去。打开选择菜单project-setting (alt+f7),进入project setting 对话框,在link下的 ob-ject/library modules 输入ws2_32.lib,然后点ok,或者在头文件中添加:#pragma comment(lib, "ws2_32.lib")。
      (3)winsock.dll: winsock的动态连接库,位于windows的安装目录
      基本的SOCKET编程大致可分为以下几个步骤,如图1所示:
      
    20141229120935539.jpg
      
    20141229120935388.gif
      图1 SOCKET编程步骤
      由于DTU上电后主动向服务器端发送连接请求,所以故障诊断软件主要基于服务器端SOCKET编程,具体服务器端操作如下。
      服务器端操作 socket(套接字)
      (1)在初始化阶段调用wsastartup()
      此函数在应用程序中初始化windows sockets dll ,只有此函数调用成功后,应用程序才可以再调用其他windows sockets dll中的api函数。在程式中调用该函数的形式如下:wsastartup(0x0202,(lpwsadata)wsadata),其中0x0202表示我们用的是winsocket2.0版本,wsaata用来存储系统传回的关于winsocket的资料。
      (2)建立socket
      初始化winsock的动态连接库后,需要在服务器端建立一个监听的socket,为此可以调用socket()函数用来建立这个监听的socket,并定义此socket所使用的通信协议。此函数调用成功返回socket对象,失败则返回invalid_socket(调用wsagetlasterror()可得知原因,所有winsocket 的函数都可以使用这个函数来获取失败的原因)。
      socket pascal far socket( int af, int type, int protocol )
      参数: af:目前只提供 pf_inet(af_inet);
      type:socket 的类型 (sock_stream、sock_dgram);
      protocol:通讯协定(如果使用者不指定则设为0);
      如果要建立的是遵从tcp/ip协议的socket,第二个参数type应为sock_stream,如为udp(数据报)的socket,应为sock_dgram。
      (3)绑定端口
      接下来要为服务器端定义的这个监听的socket指定一个地址及端口(port),这样客户端才知道待会要连接哪一个地址的哪个端口,为此我们要调用bind()函数,该函数调用成功返回0,否则返回socket_error。
      int pascal far bind( socket s, const struct sockaddr far *name,int namelen );
      参 数: s:socket对象名,即通过socket函数创建的socket对象;
      name:socket的地址值,这个地址必须是执行这个程式所在机器的ip地址,这个地址为地址结构,其中包含了本机的ip地址和监听端口号;
      namelen:name的长度,即地址结构的长度;
      如果使用者不在意地址或端口的值,那么可以设定地址为inaddr_any,及port为0,windows sockets 会自动将其设定适当之地址及port (1024 到 5000之间的值)。此后可以调用getsockname()函数来获知其被设定的值。
      (4)监听
      当服务器端的socket对象绑定完成之后,服务器端必须建立一个监听的队列来接收客户端的连接请求。listen()函数使服务器端的socket 进入监听状态,并设定可以建立的最大连接数(目前最大值限制为 5, 最小值为1)。该函数调用成功返回0,否则返回socket_error。
    回复 支持 反对

    使用道具 举报

    
  • TA的每日心情
    开心
    18-6-2015 07:30
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 13-3-2015 17:49:28 | 显示全部楼层

    浅谈远程诊断技术在电控发动机方面的应用

      int pascal far listen( socket s, int backlog );
      参 数: s:需要建立监听的socket;
      backlog:最大连接个数;
      服务器端的socket调用完listen()后,如果此时客户端调用connect()函数提出连接申请的话,server 端必须再调用accept() 函数,这样服务器端和客户端才算正式完成通信程序的连接动作。为了知道什么时候客户端提出连接要求,从而服务器端的socket在恰当的时候调用accept()函数完成连接的建立,我们就要使用wsaasyncse-lect()函数,让系统主动来通知我们有客户端提出连接请求了。该函数调用成功返回0,否则返回socket_error。
      int pascal far wsaasyncse-lect( socket s, hwnd hwnd,unsigned int wmsg, long levent );
      参数: s:socket 对象;
      hwnd :接收消息的窗口句柄;
      wmsg:传给窗口的消息;
      levent:被注册的网络事件,也即是应用程序向窗口发送消息的网路事件,该值为下列值fd_read、fd_write、fd_oob、fd_accept、fd_connect、fd_close的组合,各个值的具体含意为fd_read:希望在套接字s收到数据时收到消息;fd_write:希望在套接字s上可以发送数据时收到消息;fd_accept:希望在套接字s上收到连接请求时收到消息;fd_connect:希望在套接字s上连接成功时收到消息;fd_close:希望在套接字s上连接关闭时收到消息;fd_oob:希望在套接字s上收到带外数据时收到消息。
      具体应用时,wmsg应是在应用程序中定义的消息名称,而消息结构中的lparam则为以上各种网络事件名称。所以,可以在窗口处理自定义消息函数中使用以下结构来响应socket的不同事件:
      switch(lparam)
      {
      case fd_read:
      …
      break;
      case fd_write、
      …
      break;
      …
      }
      电控单元(ECU)的通信协议主要就封装在该消息响应函数当中。
      (5)服务器端接受客户端的连接请求
      当client提出连接请求时,server 端hwnd视窗会收到winsock stack送来我们自定义的一个消息,这时,我们可以分析lparam,然后调用相关的函数来处理此事件。为了使服务器端接受客户端的连接请求,就要使用accept() 函数,该函数新建一socket与客户端的socket相通,原先监听之socket继续进入监听状态,等待他人的连接要求。该函数调用成功返回一个新产生的socket对象,否则返回invalid_socket。
      socket pascal far accept( scoket s, struct sockaddr far *addr,int far *addrlen );
      参数:s:socket的识别码;
      addr:存放来连接的客户端的地址;
      addrlen:addr的长度
      (6)结束 socket 连接
      结束服务器和客户端的通信连接是很简单的,这一过程可以由服务器或客户机的任一端启动,只要调用closesocket()就可以了,而要关闭server端监听状态的socket,同样也是利用此函数。另外,与程序启动时调用wsastartup()憨数相对应,程式结束前,需要调用 wsacleanup() 来通知winsock stack释放socket所占用的资源。这两个函数都是调用成功返回0,否则返回socket_error。
      int pascal far closesocket( socket s );
      参 数:s:socket 的识别码;
      int pascal far wsacleanup( void );
      参 数: 无
      3.系统实现与应用
      远程故障诊断系统要完成数据的传输需要建立一套完整的数据传输系统。系统中包括:DTU,电控单元(ECU)、移动网络、后台中心。
      3.1网络拓扑图:
      
    20141229120935811.jpg
      
    20141229120935388.gif
      图2 网络结构
      3.2系统实现方式
      (1)终端设备,GPRS模块(DTU)
      首先通过AT命令对GPRS模块进行设置,设置要连接的中心IP和端口及其它必要性的设置,设置好之后电控单元(ECU)通过RS232接口和GPRS模块相连,GPRS模块上电之后根据事先设置好的中心IP和端口进行连接,成功连接到服务中心后即可双向传输数据。即可实现在线远程监控电控单元(ECU)状态与下载电控单元(ECU)程序。
    回复 支持 反对

    使用道具 举报

    
  • TA的每日心情
    开心
    18-6-2015 07:30
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 13-3-2015 17:51:03 | 显示全部楼层

    浅谈远程诊断技术在电控发动机方面的应用

      (2) 公司总部与异地连接
      总部条件:首先必须是能有能通过固定IP地址让外网到的计算机,如总部的PC机在局域网里面,那要在局域网路由器做端口映射到本机PC,等这些条件具备之后在本机开放一个端口,运行故障诊断软件等待GPRS模块的连接。
      GPRS模块连接中心后,就可按要求进行传输数据。通道建立成功后,GPRS模块串口实时监控采集器的数据,只要集线器串口有数据过来,GPRS模块将全透明进行实时传输。如此,公司总部便可在家里使用电控单元(ECU)监控、标定软件与发动机厂以及其它终端用户的电控单元(ECU)相连接,开展远程监控电控单元(ECU)数据以及更新电控单元(ECU)数据的动作。
      

      

      图3 公司总部与异地
      通过上图3所示,总部的技术人员可以通过INTERNET\\uGPRS网络连接到服务中心以外地区的故障车,实现软件监控、标定工作,为用户及时的排除电控发动机的软故障。
      (3)异地与异地连接
      

      图4异地 与 异地
     
      
    回复 支持 反对

    使用道具 举报

    
  • TA的每日心情
    开心
    18-6-2015 07:30
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 13-3-2015 17:52:21 | 显示全部楼层
     如图4所示,。如上图所示,故障车辆出现在北京地区的郊外,此时,公司以外的服务人员无论在什么地方,正如图3所示,广州、武汉、成都地区的技术人员都可以对北京地区的故障车实现远程故障诊断。点对点的网络数传模式两端都是基于GPRS网络建立连接。服务人员可通过手机网络拨号,在GPRS网络内部与故障车辆实现数据传输,从而及时方便地排除发动机电控故障。
     4.总结与展望
      总之,远程故障诊断技术作为传统诊断技术的补充,利用中国移动GSM/GPRS无线网络资源,可以将分散且移动的汽车有效管理起来,实现发动机的远程故障诊断,便于技术人员排除故障。系统不仅大大提高了故障诊断和维修的效率,而且便于技术的继承和更新,是一种便捷的优秀管理模式。
      远程故障诊断系统会是电控发动机的一个独有亮点,大大提高电控发动机企业竞争力。随着我国3G网络基本建设完成,打破了无线带宽瓶颈的限制,使网络带宽得到较大提升,基于3G网络将使得远程故障诊断系统的数据传输速度、测控命令响应速度更快,系统用户体验将得到明显的改善。
      此外,随着Andriod、Iphone等移动系统开发技术的成熟,以及手机硬件性能的不断提高使得远程故障诊断软件从电脑移植到手机成为可能,针对智能手机,基于MOBILE设备的操作系统,开发故障诊断手机软件完全可行。技术人员便可通过手机随时随地为远在万里之外的故障车排除电控系统故障。如此将大大提高诊断软件系统的便捷性,手机应用对汽车故障诊断系统具有重要意义。可以确信,未来远程故障诊断系统有着广阔的应用前景,必将促进我国的汽车工业飞速发展。 
    回复 支持 反对

    使用道具 举报

    
  • TA的每日心情
    开心
    18-10-2018 07:29
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 19-3-2015 08:17:15 | 显示全部楼层
    听君一席话,盛读十年书
    回复 支持 反对

    使用道具 举报

    快速发帖

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

    GMT+8, 25-8-2025 12:56 , Processed in 0.469552 second(s), 40 queries .

    Powered by Discuz! X3.5

    © 2001-2013 Comsenz Inc.