一种汽车模拟方法、装置及汽车测试模拟系统的制作方法

文档序号:10684842阅读:801来源:国知局
一种汽车模拟方法、装置及汽车测试模拟系统的制作方法
【专利摘要】本发明公开一种汽车模拟方法、装置及系统,方法包括:接收来自测试工控机的测试命令,测试命令包括汽车测试命令或转鼓试验台工控机命令;如果接收到汽车测试命令,则执行诊断模拟步骤,如果接收到转鼓试验台工控机命令,则执行转鼓模拟步骤;诊断模拟步骤,包括:模拟汽车各电子控制单元根据汽车测试命令执行相应的诊断功能所返回的诊断响应消息或者模拟执行汽车测试命令所返回的控制响应消息,向测试工控机返回诊断相应消息或控制响应消息;转鼓模拟步骤,包括:根据转鼓试验台工控机命令返回相应的转鼓试验台数据,向测试工控机返回转鼓试验台数据。本发明为测试系统GATS提供调试时所需要的各种信号,以加快GATS的调试工作。
【专利说明】
_种汽车模拟方法、装置及汽车测试模拟系统
技术领域
[0001] 本发明涉及汽车相关技术领域,特别是一种汽车模拟方法、装置及汽车测试模拟 系统。
【背景技术】
[0002] 现有的所有样车验证、学习和测试都是通过试制的实验车辆进行实体验证的,具 体的测试手段是将实体实验车辆置于转鼓测试设备中,然后采用通用总装测试系统 (General Assembly Test System,GATS)向实验车辆发送测试命令,例如诊断请求、控制提 示等,通过获取实验车辆所返回的诊断响应、驾驶员根据提示执行操作后车辆返回的控制 响应以及工控机实时采集的转鼓试验台数据作为测试结果。
[0003] 上述的测试方式需要有实体的实验车辆,其测试时间长、实验成本高。

【发明内容】

[0004] 基于此,有必要针对现有的测试方式需要有实体的实验车辆,导致测试时间长、实 验成本高的技术问题,提供一种汽车模拟方法、装置及汽车测试模拟系统。
[0005] 本发明提供一种汽车模拟方法,包括:
[0006] 命令接收步骤,包括:接收来自测试工控机的测试命令,所述测试命令包括汽车测 试命令或转鼓试验台工控机命令;
[0007] 判断步骤,包括:如果接收到所述汽车测试命令,则执行诊断模拟步骤,如果接收 到转鼓试验台工控机命令,则执行转鼓模拟步骤;
[0008] 诊断模拟步骤,包括:模拟汽车各电子控制单元根据所述汽车测试命令执行相应 的诊断功能所返回的诊断响应消息或者模拟执行所述汽车测试命令所返回的控制响应消 息,向所述测试工控机返回所述诊断相应消息或所述控制响应消息;
[0009] 转鼓模拟步骤,包括:根据所述转鼓试验台工控机命令返回相应的转鼓试验台数 据,向所述测试工控机返回所述转鼓试验台数据。
[0010] 本发明提供一种汽车模拟装置,包括:
[0011] 命令接收模块,用于:接收来自测试工控机的测试命令,所述测试命令包括汽车测 试命令或转鼓试验台工控机命令;
[0012] 判断模块,用于:如果接收到所述汽车测试命令,则执行诊断模拟模块,如果接收 到转鼓试验台工控机命令,则执行转鼓模拟模块;
[0013] 诊断模拟模块,用于:模拟汽车各电子控制单元根据所述汽车测试命令执行相应 的诊断功能所返回的诊断响应消息或者模拟执行所述汽车测试命令所返回的控制响应消 息,向所述测试工控机返回所述诊断相应消息或所述控制响应消息;
[0014] 转鼓模拟模块,用于:根据所述转鼓试验台工控机命令返回相应的转鼓试验台数 据,向所述测试工控机返回所述转鼓试验台数据。
[0015] 本发明提供一种汽车测试模拟系统,包括:测试工控机、如前所述的汽车模拟装 置、汽车总线接口转换器和串口转换器,所述汽车模拟装置通过所述汽车总线接口转换器 与所述测试工控机的汽车总线接口通信连接,所述汽车模拟装置通过所述串口转换器与所 述测试工控机的串口通信连接,所述测试工控机通过所述汽车总线接口发送汽车测试命 令、接收诊断响应消息、以及接收控制响应消息,所述测试工控机通过所述串口发送转鼓试 验台工控机命令以及接收转鼓试验台数据。
[0016] 本发明的汽车模拟方案,模拟汽车各电子控制单元根据所述汽车测试命令执行相 应的诊断功能所返回的诊断响应消息或者模拟执行所述汽车测试命令所返回的控制响应 消息,向所述测试工控机返回所述诊断相应消息或所述控制响应消息,或者转鼓模拟步骤, 包括:根据所述转鼓试验台工控机命令返回相应的转鼓试验台数据,向所述测试工控机返 回所述转鼓试验台数据,为测试系统GATS提供调试时所需要的各种信号,以加快GATS的调 试工作。模拟对象汽车各电子控制单元(Electronic Control Unit,ECU)的诊断功能和驾 驶员根据提示所做的操作,以及工控机实时采集的转鼓试验台数据,从而加快软件调试过 程,即省时省力又经济高效。
【附图说明】
[0017] 图1为本发明一种汽车模拟方法的工作流程图;
[0018] 图2为本发明一种汽车模拟装置的结构模块图;
[0019] 图3为本发明一种汽车测试模拟系统的结构模块图。
【具体实施方式】
[0020] 下面结合附图和具体实施例对本发明做进一步详细的说明。
[0021] 如图1所示为本发明一种汽车模拟方法的工作流程图,包括:
[0022] 步骤S101,包括:接收来自测试工控机的测试命令,所述测试命令包括汽车测试命 令或转鼓试验台工控机命令;
[0023]步骤S102,包括:如果接收到所述汽车测试命令,则执行步骤S103,如果接收到转 鼓试验台工控机命令,则执行步骤S104;
[0024] 步骤S103,包括:模拟汽车各电子控制单元根据所述汽车测试命令执行相应的诊 断功能所返回的诊断响应消息或者模拟执行所述汽车测试命令所返回的控制响应消息,向 所述测试工控机返回所述诊断相应消息或所述控制响应消息;
[0025] 步骤S104,包括:根据所述转鼓试验台工控机命令返回相应的转鼓试验台数据,向 所述测试工控机返回所述转鼓试验台数据。
[0026]步骤S101从测试工控机GATS上接收测试命令,然后步骤S102进行判断,如果是汽 车测试命令,则执行步骤S103模拟汽车ECU的诊断功能或者模拟执行命令返回控制响应消 息,该功能为模拟汽车静态测试(Simulation on SVT,SSVT),如果是转鼓试验台工控机命 令,则执行步骤S10 4直接返回对应的转鼓试验台数据,该功能为模拟宝克转鼓工控机 (Simulation on BP,SBP)〇
[0027] 通过步骤S103和步骤S104模拟测试车辆和测试设备,让测试工控机的测试程序 (Design Verification Test,DVT)能够在没有实车的情况下进行。同时,还能模拟车辆缺 陷,测试修正DVT测试程序。可以通过诊断协议自定义ECU模块,模拟的多个ECU可以同时加 载,卸载和保存。具体来说,通过设置模块生成和修改ini数据库文件,按照各协议对应的格 式修改和添加数据库,该数据库文件内容决定了该系统所加载的协议类型、ECU模块及各条 测试命令所对应的反馈数据。优选地,可以模拟三种通信协议(IS014230,J1850,IS015765) 的通信,支持应有的操作模式,并且保留通信协议的扩展接口。可以自定义通信协议加载, 卸载和保存,通信时可以同时加载,卸载几种通信协议。可以键盘控制,油门开度,刹车踏板 位置,PRNDL档位,离合器位置。具体来说,油门开度、刹车踏板位置、PRNDL档位、离合器位置 等信息在ECU内部都是以相应PID值来反馈的,通过用户界面键盘修改ini数据库内相应PID 值,来模拟控制实车上的以上信号数据。可以自定义键盘及其对应模拟器件的位置,按键响 应产生增量变化,并更改对应DPID的数字量。具体来说,通过设置用户界面上控件、用户键 盘按键及ini数据库内PID值得对应关系,来实现自定义键盘机器对应模拟器件的位置。其 中DPID为E⑶自定义的PID的组合,修改DPID的实质与修改PID-样。显示4个轮子的速度,加 速度,油门开度,刹车踏板位置,PRNDL档位,离合器位置。具体的,通过用户界面的显示控 件,与ini数据库中的轮速、加速度、油门开度、刹车踏板位置、PRNDL档位、离合器位置等PID 值相关联,实现实时显示上述模拟控件的状态信息。可以模拟产生故障码,可以自由选择开 关所有传感器用于模拟车辆故障。具体的,车辆出现某些故障时,会产生故障码存储于汽车 ECU内存,测试工控机可通过读码指令读取该码。在模拟系统中,若在ini数据库内读码命令 对应数据中设置故障码,当测试工控机发出读码指令时,ini数据库内的故障码被读出并被 测试工控机显示出来。
[0028]车辆的各项性能指标及工况数据会实时传输到各ECU,并通过大量PID值来动态反 馈,测试工控机通过不断读取汽车ECU的PID值,来判断汽车各项指标是否正常。模拟系统 通过修改PID值,来验证测试程序是否能正确读取数据,并在数据异常时发出报错提示,从 而在没有车辆的情况下,对测试程序进行debug。
[0029]本发明为测试系统GATS提供调试时所需要的各种信号,以加快GATS的调试工作。 模拟对象汽车各ECU的诊断功能和驾驶员根据提示所做的操作,以及工控机实时采集的转 鼓试验台数据,从而加快软件调试过程,即省时省力又经济高效。
[0030]在其中一个实施例中,所述步骤S103,具体包括:
[0031 ]解析所述汽车测试命令,确定所述汽车测试命令的类型;
[0032] 如果所述汽车测试命令的类型为请求命令,则从请求命令中解析出待请求电子控 制单元以及待请求类型,从预先保存的数据库中获取待请求电子控制单元关于待请求类型 对应的响应值作为诊断响应消息,向所述测试工控机返回所述诊断响应消息;
[0033] 如果所述汽车测试命令的类型为控制命令,则根据控制提示读取控制序号,根据 所述控制序号读取控制内容,如果所述控制内容为设置数值控制,则从所述控制内容的数 据段中获取待写入数值和待写入电子控制单元,向所述待写入电子控制单元的模拟数组中 写入所述待写入数值,如果所述控制内容为发送消息,则从所述控制内容的数据段中获取 待发送信息和待发送汽车总线标识,将所述待发送信息作为控制响应消息,向所述待发送 汽车总线标识所指示的汽车总线发送所述控制响应消息。
[0034]在一个通常的车辆检测过程中,检测设备向车辆ECU发出各种指令,ECU按照车辆 实际工况及内部逻辑,按照既定协议格式反馈出数据,检测设备根据该反馈数据进行进一 步交互通讯,或者作出测试结果的判断。
[0035]本实施例中,先建立一个数据源ini文件,该数据源中,根据总线识别信息所包括 的通讯针脚(确定哪条物理总线)、CAN ID(确定与哪个ECU的通讯数据)、以及SID命令,对应 唯一 ECU反馈数据。该数据源可通过程序的设置模块从历史测试数据文本中转化获得,或者 手动输入。然后根据测试工控机发出的指令,从文本数据库查询获得对应的反馈数据,并 向测试工控机发送出该数据,从而实现模拟车辆ECU。
[0036]其中,设置数值是指测试工控机向E⑶发送相应命令改写E⑶中DID值。DID值在需 要的时候可被测试工控机读取,例如车龄识别码VIN,ECU零件号等信息。另外,一条控制消 息,包含了总线识别信息(用以决定使用那条总线)、CAN ID(用以确定总线上的哪一个ECU) 及具体控制内容信息,打包后从测试工控机向该总线发出,该总线上该CAN ID所对应的某 个ECU接收该控制消息后,通过该总线向测试工控机反馈控制响应消息,包括正常接收或者 拒绝执行。
[0037] SID即服务标识(Service Identifier),在不同的协议中有不同的定义。其中,在 GMLAN(General Motors in vehicle Local Area Network)协议中常用的SID如下:
[0039]具体来说,包括如下步骤:
[0040]读取数据:从数据库读取数值到内存。
[0041 ]接收请求:接收来自GATS的请求命令。
[0042] 解析命令:根据GMW3110、KWP2000解析请求命令和根据控制格式解析控制命令。
[0043] 发送响应:发送运算出的响应消息。
[0044] 其算法如下:
[0045] (1)、SSVT运行模块通讯接口功能的TOL语言描述
[0046] PROCEDURE运行模块通讯接口功能
[0047] 配置通讯接口参数
[0048] 调用"接收数据线程"通过硬件接收数据
[0049] 调用"发送数据函数"通过硬件发送数据
[0050] END PROCEDURE
[0051 ] (2)、SSVT运行模块控制解析功能的roL语言描述
[0052] PROCEDURE运行模块控制解析功能
[0053] 根据控制提示读取控制序号/*TIPS_01=01 :XXX->01
[0054] 根据控制序号读取控制命令/*01->C0NTR0L_01=PID* …*PID*MSG*."*MSG
[0055] IF控制命令含有PID/*设置数值命令
[0056]读取数据段,确定是E⑶还是PID数值 [0057] 把PID数值写入相应ECU数据组中
[0058] END IF
[0059] IF控制命令含有MSG/*发送消息命令
[0060]读取数据段,确定是CANid还是MSG数值 [0061 ] 把MSG数值写入相应CANid数据组中
[0062] 调用周期发送消息线程发送消息
[0063] END IF
[0064] END PROCEDURE
[0065] (3)、SSVT运行模块请求解析功能(GMLAN)的PDL语言描述
[0066] PROCEDURE运行模块请求解析(GMLAN)功能
[0067]从系统读取请求消息 [0068] /*第1步:根据请求类型解析(2种)
[0069] IF CANid = $101
[0070] 功能性请求(Functional Request)
[0071] ELSE
[0072] 点到点请求(Point to Point Request)
[0073] END IF
[0074] /*第2步:根据帧的类型解析(4种)
[0075] IF Data[ 1 ] =$10/*(First Frame,FF)
[0076] 直接发送$30
[0077] ELSE IF Data[l]=30/*(Flow Control,FC)
[0078] 直接发送$10
[0079] ELSE/*(Consecutive Frame,CF和Single Frame,SF)
[0080]根据SID进行进一步进行解析 [0081] END IF
[0082] /*第3步:根据服务类型解析(20种)
[0083] 根据ECU读取内存中的3££0^1^6,010,0?10和?10等数据
[0084] DO CASE
[0085] CASE SID = $04/*(ClearDiagnosticInformation Service)
[0086] 解析出一次响应值
[0087] ……
[0088] CASE SID = $AA/*(ReadDataByPacketIdentifier Service)
[0089] IF sub-function = $00/$01
[0090] 解析出一次响应值
[0091 ] ELSE/*sbu-function = $02/$03/$04
[0092] 调用"周期响应线程"
[0093] END IF
[0094] CASE SID = $AE/*(Device Control Service)
[0095] 解析出一次响应值
[0096] END CASE
[0097] /*第4步:确定相应报文类型(2种)
[0098] IF SID = $A9/$AA/*(Unacknowledged Segmented Data Transfer)
[0099] 根据E⑶读取内存中UUDT值
[0100] ELSE/*(Unacknowledged Unsegmented Data Transfer)
[0101] 根据E⑶读取内存中USDT值
[0102] END IF
[0103] 往系统发送响应消息
[0104] END PROCEDURE
[0105] (4)、SSVT运行模块请求解析(KWP2000)功能的H)L语言描述
[0106] PROCEDURE运行模块请求解析(KWP2000)功能
[0107] 从系统读取一个收到的结构体
[0108] /*第1步:由请求消息结构体得到请求消息的头(三个字节)
[01 09 ]源地址(CStr ing)=头数据(1 ong)的前两位;
[0110]目标地址(CStr ing)=头数据(long)的中间两位;
[0111]头的形式(CString) =头数据(long)的后两位;
[0112] 请求消息的头(CString)=源地址(CString)+目标地址(CString)+头的形式 (CString);
[0113] /*第2步:由请求消息结构体数组得到该结构体的数据
[0114] IF 0= =M1.ArblDOrHeader
[0115] sRequestFlag = 0/*表示sRequest未装填完毕,下次来消息时续写
[0116] ELSE IF 0= = (UINT)Ml.MessagePieceID
[0117]将该结构体八字节或少于八字节的数据写入sRequest
[0118] sRequestFlag = l/*sRequest 装填完毕
[0119] ELSE IF l = = (UINT)Ml.MessagePieceID
[0120] 根据头形式是80还是其他,判断表示数据字节数的字节位置并读出 [0121 ]将该结构体的数据写入sRequest
[0122] 设置sRequestFlag = 0/*表示sRequest未装填完毕,下次来消息时续写
[0123] ELSE IF nLength>8*(UINT)Ml.MessagePieceID/*说明该结构体不是最后的结 构体
[0124]将该结构体的八字节数据续写入sRequest
[0125] 设置sRequestFlag = 0/*表示sRequest未装填完毕,下次来消息时续写
[0126] ELSE/*这是最后一个结构体
[0127] 将结构体的数据续写入sRequest
[0128] sRequestFlag = l/*sRequest 装填完毕
[0129] END IF
[0130] IF sRequestFlag = 0
[0131] 返回系统读取下一个结构体
[0132] ELSE
[0133] 去除请求消息校验码
[0134] 得到请求消息的数据段
[0135] /*第3步:解析请求消息数据,给出响应消息数据
[0136] 从请求消息sRequest中读出ECU、SID
[0137] 根据E⑶和SID解析请求消息数据,给出响应数据
[0138] DO CASE
[0139] CASE SID = 0xl0/*(Start Diagnostic Session Service)
[0140]程序直接给出一次响应固定值
[0141] ……
[0142] CASE SID = 0x21/*(Read Data By Local Identifier Service)
[0143] 由内存数据给出一次响应值
[0144] ……
[0145] CASE SID=0x30/*(Input/Output Control Service)
[0146] 程序直接给出一次响应固定值
[0147] 按协议和请求执行写数据操作
[0148] ……
[0149] CASE SID = 0x3B/*(ffrite Data by Local Identifier Service)
[0150] 由内存数据给出一次响应值 [0151 ]按协议和请求执行写数据操作
[0152] ……
[0153] CASE SID = 0x81/*(Start Communication Service)
[0154] 由内存数据给出一次响应值
[0155] ……
[0156] CASE SID=0x82/*(Stop Communication Service)
[0157] 程序直接给出一次响应固定值
[0158] END CASE
[0159] /*第4步:根据请求消息的头和响应消息的数据确定响应消息的头 [0160]计算响应消息数据的字节数
[0161 ]根据响应消息字节数计算出响应消息头的形式
[0162] 响应消息源地址=请求消息目标地址
[0163] 响应消息目标地址=请求消息源地址
[0164] 响应消息的头=响应消息源地址+响应消息目标地址+头的形式
[0165] /*第5步:设置响应消息结构体数组
[0166] 写结构体状态
[0167] 写NetworkID
[0168] 写数据和数据字节数
[0169] 写头和头的字节数
[0170] 为所有写好的结构体编号
[0171 ] /*第6步:向系统发送响应消息结构体数组
[0172] 向系统发送上一步已经编号的结构体数组
[0173] END PROCEDURE
[0174] 在其中一个实施例中,所述步骤S104,具体包括:
[0175] 解析所述转鼓试验台工控机命令,从预先保存的数据库中获取所述转鼓试验台工 控机命令对应的转鼓试验台数据,向所述测试工控机返回所述转鼓试验台数据。
[0176] 本实施例具体实现SBP功能。其算法具体如下:
[0177] PROCEDURE运行模块请求解析(RS232/GM Gen3)功能
[0178] /*第1步:从串口读取请求消息
[0179] 调用利用PComm组建的API编写的读串口函数
[0180] 将读到的数据写入一个CString变量sRequestMessage
[0181 ] /*第2步:解析请求消息,给出响应消息
[0182] 从请求消息sReque s tMe s sage中读出该消息的Mode、Me s sage
[0183] 根据Mode和Message解析请求消息,给出响应消息
[0184] DO CASE
[0185] CASE Mode = 0x01
[0186] 由内存数据解析出一次响应值
[0187] ……
[0188] CASE Mode = 0x04
[0189] 直接给出一次响应值
[0190] ……
[0191] CASE Mode = 0x06
[0192] 由内存数据解析出一次响应值
[0193] 按照协议规定和请求数据对内存进行数据修改操作
[0194] ……
[0195] CASE SID = 0x2A
[0196] 按照协议和内存数据解析出周期响应数据
[0197] END CASE
[0198] 计算数据字节数
[0199] 计算LRC校验码Check Sum
[0200] 生成响应消息sResponseMessage = ECUid+Mode+Message+Data+Check Sum
[0201] /*第3步:将响应消息发送到指定串口
[0202] 调用利用PComm组件的API编写的写串口函数发送sResponseMessage
[0203] END PROCEDURE
[0204] 在其中一个实施例中,所述汽车测试命令通过汽车总线接口接收,所述转鼓试验 台工控机命令通过串口接收,所述诊断响应命令通过汽车总线接口发送,所述转鼓试验台 数据通过串口发送。
[0205] 如图2所示为本发明一种汽车模拟装置的结构模块图,包括:
[0206] 命令接收模块201,用于:接收来自测试工控机的测试命令,所述测试命令包括汽 车测试命令或转鼓试验台工控机命令;
[0207]判断模块202,用于:如果接收到所述汽车测试命令,则执行诊断模拟模块,如果接 收到转鼓试验台工控机命令,则执行转鼓模拟模块;
[0208]诊断模拟模块203,用于:模拟汽车各电子控制单元根据所述汽车测试命令执行相 应的诊断功能所返回的诊断响应消息或者模拟执行所述汽车测试命令所返回的控制响应 消息,向所述测试工控机返回所述诊断相应消息或所述控制响应消息;
[0209] 转鼓模拟模块204,用于:根据所述转鼓试验台工控机命令返回相应的转鼓试验台 数据,向所述测试工控机返回所述转鼓试验台数据。
[0210] 在其中一个实施例中,所述诊断模拟模块,具体包括:
[0211] 解析所述汽车测试命令,确定所述汽车测试命令的类型;
[0212] 如果所述汽车测试命令的类型为请求命令,则从请求命令中解析出待请求电子控 制单元以及待请求类型,从预先保存的数据库中获取待请求电子控制单元关于待请求类型 对应的响应值作为诊断响应消息,向所述测试工控机返回所述诊断响应消息;
[0213] 如果所述汽车测试命令的类型为控制命令,则根据控制提示读取控制序号,根据 所述控制序号读取控制内容,如果所述控制内容为设置数值控制,则从所述控制内容的数 据段中获取待写入数值和待写入电子控制单元,向所述待写入电子控制单元的模拟数组中 写入所述待写入数值,如果所述控制内容为发送消息,则从所述控制内容的数据段中获取 待发送信息和待发送汽车总线标识,将所述待发送信息作为控制响应消息,向所述待发送 汽车总线标识所指示的汽车总线发送所述控制响应消息。
[0214]在其中一个实施例中,所述转鼓模拟模块,具体包括:
[0215] 解析所述转鼓试验台工控机命令,从预先保存的数据库中获取所述转鼓试验台工 控机命令对应的转鼓试验台数据,向所述测试工控机返回所述转鼓试验台数据。
[0216] 在其中一个实施例中,所述汽车测试命令通过汽车总线接口接收,所述转鼓试验 台工控机命令通过串口接收,所述诊断响应命令通过汽车总线接口发送,所述转鼓试验台 数据通过串口发送。
[0217] 如图3所示为本发明一种汽车测试模拟系统的结构模块图,包括:测试工控机31、 如前所述的汽车模拟装置32、汽车总线接口转换器33和串口转换器34,所述汽车模拟装置 32通过所述汽车总线接口转换器33与所述测试工控机31的汽车总线接口通信连接,所述汽 车模拟装置32通过所述串口转换器34与所述测试工控机31的串口通信连接,所述测试工控 机31通过所述汽车总线接口发送汽车测试命令、接收诊断响应消息、以及接收控制响应消 息,所述测试工控机31通过所述串口发送转鼓试验台工控机命令以及接收转鼓试验台数 据。
[0218] 作为本发明的最佳实施例,其中硬件采用ODBII Adapter作为汽车总线接口转换 器33,采用RS232/USB Converter作为串口转换器34,通过neoVI FIRE作为通讯硬件连接汽 车总线接口转换器33与汽车模拟装置32,汽车模拟装置32采用工控机实现,并通过12V 60W 直流电源对通讯硬件等设备进行供电。
[0219] 汽车模拟装置32在软件上的设计如下:
[0220] 1 ?接口
[0221] 用户接口 :设置、运行和保存等放在工具栏上,显示放在主界面上。
[0222] 外部接口 :通过neoVI FIRE连接模拟系统SSVT和测试系统GATS;通过RS232串口通 信线路连接模拟系统SBP和GATS。
[0223] 内部接口:SSVT通过调用动态链接库DLL实现设置、保存对话框和实现运行功能; SBP中无DLL,只实现转鼓工控机的运行功能。
[0224] 2.功能|旲块
[0225] 系统分成两个软件来实现功能:SSVT(模拟汽车静态测试)和SBP (模拟宝克转鼓 工控机)。
[0226] 其中,SSVT软件有以下4个功能模块
[0227] 设置模块:实现从snp文件自动转换出ini数据库文件和修改inin数据库文件内容 的功能。
[0228] 运行模块:实现系统的读取数据、接收请求、解析命令和发送响应等处理数据的功 能。
[0229] 显示模块:实现各种信息实时显示的功能。
[0230] 保存模块:实现对运行中收发的数据进行保存的功能。
[0231 ]其中"运行"模块实现主要功能,"设置"、"显示"和"保存"模块实现辅助功能。
[0232] SBP软件只有运行模块,实现系统的读取数据、接收请求、解析命令和发送响应等 处理数据的功能。
[0233] 3.程序实现方法:
[0234] 系统采用Microsoft Visual C++6.0基于对话框的MFC应用程序来实现。SSVT软件 分别使用动态链接库Dialog. DLL实现设置和保存模块功能;Ports. DLL实现运行模块的数 据收发功能;Parse. DLL实现运行模块的数据解析功能。显示模块直接在SSVT主程序中实 现。SBP软件只有一个主程序,实现相当于接口模块和运行模块的功能。SBP的ini文件设置 和修改可以用SSVT的Dialog ? DLL实现。
[0235] 3.1设置模块设计
[0236] 3.1.1程序描述
[0237] 设置模块程序主要是为了实现从snp文件自动转换出ini数据库文件和修改ini文 件内容的功能,即转换功能和修改功能。转换功能只限于在对采用GMLAN(CAN)总线的汽车 诊断数据仿真时才可使用;修改功能则可用于所有车型和转鼓的ini文件内容的写操作。
[0238] 3.1.2功能:
[0239] 设置转换:根据输入snp文件名称的ECU模块名称自动转换出ini数据库文件。
[0240]设置修改:设置故障,修改转换后的数据库内容和添加新ECU模块。
[0241] 3.1.3算法:
[0242] 1、SSVT设置模块转换功能算法的TOL语言描述
[0243] PROCEDURE设置模块转换功能
[0244] /*此时运行无法开始
[0245] 写入 TIPS,C0NTR0L 数据到 Control[000_00]中/*TIPS_01=XX,Control_01=XX
[0246] WHILE
[0247] 读取一个ECU名称,转换为CANid_NETid格式
[0248] 写入 USDT,UUDT,SEED,SID 数据到 ECU[CANid_NETid]中
[0249] END WHILE
[0250] WHILE
[0251] 读取一个ECU名称,转换为CANid_NETid格式
[0252] 打开snp文件
[0253] 写入 DID,DPID,PID,SEED 数据到 ECU[CANid_NETid]中 [0254]关闭文件
[0255] END WHILE
[0256] END PROCEDURE
[0257] 2、SSVT设置模块修改功能算法的H)L语言描述
[0258] PROCEDURE设置模块修改功能
[0259] /*此时运行无法开始
[0260] IF输入了新的数据库名称
[0261] 更新数据库名称
[0262] END IF
[0263] IF输入了新的E⑶名称
[0264] 更新E⑶的名称
[0265] END IF
[0266] IF Control或ECU的内容发生变化
[0267] 根据E⑶名称写入新内容到到文件中
[0268] END IF
[0269] END PROCEDURE
[0270] 3.2运行模块设计
[0271] 3.2.1程序描述:
[0272] SSVT运行模块的程序主要是为了实现系统的读取数据、接收请求、解析命令和发 送响应等处理数据的功能。
[0273] SBP软件实现转鼓试验台系统的读取数据、接收请求、解析命令和发送响应等处理 数据的功能,其功能是在SBP主程序实现的。
[0274]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并 不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员 来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保 护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【主权项】
1. 一种汽车模拟方法,其特征在于,包括: 命令接收步骤,包括:接收来自测试工控机的测试命令,所述测试命令包括汽车测试命 令或转鼓试验台工控机命令; 判断步骤,包括:如果接收到所述汽车测试命令,则执行诊断模拟步骤,如果接收到转 鼓试验台工控机命令,则执行转鼓模拟步骤; 诊断模拟步骤,包括:模拟汽车各电子控制单元根据所述汽车测试命令执行相应的诊 断功能所返回的诊断响应消息或者模拟执行所述汽车测试命令所返回的控制响应消息,向 所述测试工控机返回所述诊断相应消息或所述控制响应消息; 转鼓模拟步骤,包括:根据所述转鼓试验台工控机命令返回相应的转鼓试验台数据,向 所述测试工控机返回所述转鼓试验台数据。2. 根据权利要求1所述的汽车模拟方法,其特征在于,所述诊断模拟步骤,具体包括: 解析所述汽车测试命令,确定所述汽车测试命令的类型; 如果所述汽车测试命令的类型为请求命令,则从请求命令中解析出待请求电子控制单 元以及待请求类型,从预先保存的数据库中获取待请求电子控制单元关于待请求类型对应 的响应值作为诊断响应消息,向所述测试工控机返回所述诊断响应消息; 如果所述汽车测试命令的类型为控制命令,则根据控制提示读取控制序号,根据所述 控制序号读取控制内容,如果所述控制内容为设置数值控制,则从所述控制内容的数据段 中获取待写入数值和待写入电子控制单元,向所述待写入电子控制单元的模拟数组中写入 所述待写入数值,如果所述控制内容为发送消息,则从所述控制内容的数据段中获取待发 送信息和待发送汽车总线标识,将所述待发送信息作为控制响应消息,向所述待发送汽车 总线标识所指示的汽车总线发送所述控制响应消息。3. 根据权利要求1所述的汽车模拟方法,其特征在于,所述转鼓模拟步骤,具体包括: 解析所述转鼓试验台工控机命令,从预先保存的数据库中获取所述转鼓试验台工控机 命令对应的转鼓试验台数据,向所述测试工控机返回所述转鼓试验台数据。4. 根据权利要求1~3任一项所述的汽车模拟方法,其特征在于,所述汽车测试命令通 过汽车总线接口接收,所述转鼓试验台工控机命令通过串口接收,所述诊断响应命令通过 汽车总线接口发送,所述转鼓试验台数据通过串口发送。5. -种汽车模拟装置,其特征在于,包括: 命令接收模块,用于:接收来自测试工控机的测试命令,所述测试命令包括汽车测试命 令或转鼓试验台工控机命令; 判断模块,用于:如果接收到所述汽车测试命令,则执行诊断模拟模块,如果接收到转 鼓试验台工控机命令,则执行转鼓模拟模块; 诊断模拟模块,用于:模拟汽车各电子控制单元根据所述汽车测试命令执行相应的诊 断功能所返回的诊断响应消息或者模拟执行所述汽车测试命令所返回的控制响应消息,向 所述测试工控机返回所述诊断相应消息或所述控制响应消息; 转鼓模拟模块,用于:根据所述转鼓试验台工控机命令返回相应的转鼓试验台数据,向 所述测试工控机返回所述转鼓试验台数据。6. 根据权利要求5所述的汽车模拟装置,其特征在于,所述诊断模拟模块,具体包括: 解析所述汽车测试命令,确定所述汽车测试命令的类型; 如果所述汽车测试命令的类型为请求命令,则从请求命令中解析出待请求电子控制单 元以及待请求类型,从预先保存的数据库中获取待请求电子控制单元关于待请求类型对应 的响应值作为诊断响应消息,向所述测试工控机返回所述诊断响应消息; 如果所述汽车测试命令的类型为控制命令,则根据控制提示读取控制序号,根据所述 控制序号读取控制内容,如果所述控制内容为设置数值控制,则从所述控制内容的数据段 中获取待写入数值和待写入电子控制单元,向所述待写入电子控制单元的模拟数组中写入 所述待写入数值,如果所述控制内容为发送消息,则从所述控制内容的数据段中获取待发 送信息和待发送汽车总线标识,将所述待发送信息作为控制响应消息,向所述待发送汽车 总线标识所指示的汽车总线发送所述控制响应消息。7. 根据权利要求5所述的汽车模拟装置,其特征在于,所述转鼓模拟模块,具体包括: 解析所述转鼓试验台工控机命令,从预先保存的数据库中获取所述转鼓试验台工控机 命令对应的转鼓试验台数据,向所述测试工控机返回所述转鼓试验台数据。8. 根据权利要求5~7任一项所述的汽车模拟装置,其特征在于,所述汽车测试命令通 过汽车总线接口接收,所述转鼓试验台工控机命令通过串口接收,所述诊断响应命令通过 汽车总线接口发送,所述转鼓试验台数据通过串口发送。9. 一种汽车测试模拟系统,其特征在于,包括:测试工控机、如权利要求5~8任一项所 述的汽车模拟装置、汽车总线接口转换器和串口转换器,所述汽车模拟装置通过所述汽车 总线接口转换器与所述测试工控机的汽车总线接口通信连接,所述汽车模拟装置通过所述 串口转换器与所述测试工控机的串口通信连接,所述测试工控机通过所述汽车总线接口发 送汽车测试命令、接收诊断响应消息、以及接收控制响应消息,所述测试工控机通过所述串 口发送转鼓试验台工控机命令以及接收转鼓试验台数据。
【文档编号】G01M17/007GK106053098SQ201610584718
【公开日】2016年10月26日
【申请日】2016年7月22日 公开号201610584718.9, CN 106053098 A, CN 106053098A, CN 201610584718, CN-A-106053098, CN106053098 A, CN106053098A, CN201610584718, CN201610584718.9
【发明人】王天军, 叶则南, 刘敏, 王超逸, 周洋, 席宇峰, 周杰, 陆佶鹏, 毛晨轩, 殷伟智, 丁国栋, 褚艳春, 陈铭军
【申请人】上汽通用汽车有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1