Vspy是一款集合了网络监控、数据获取/记录、节点仿真、诊断、自动测试等功能的工具,支持所有英特佩斯的硬件产品(如下图是neoVI Fire版硬件盒子);有着友好的视图交互界面,每个视图可单独悬浮停靠、叠加,这对于使用非常方便(例如同时打开报文发送视图和报文监控视图等);此外,Vspy提供了外部编程API接口,方便用户的二次开发,完成更为复杂的任务;相较Canoe工具其价格优势也让其被广泛应用于汽车电子行业中。
接下来,我们针对以下的几点对Vspy常用到的一些功能进行介绍:
1、通过Message界面查看报文信息
2、日志文件的保存
3、导入dbc数据库文件
4、导入cdd文件
5、报文导入或自定义
6、通过Tx Panel界面发送报文
7、Application Signals的使用
8、Function Blocks的使用
1.1、报文查看:连接好Vspy硬件,通过左上角的按钮 运行Vspy工程(注意是”Online”的状态下);选择”Spy Networks”下的”Message”。此时界面如下,当前在CAN网络上进行交互的报文信息会在该界面显示。
1.2、Message界面常用操作:在进行报文的查看时,有些辅助的功能是我们经常用到的。如上图,从左到右红框的操作。
1、通过”Scroll”选择是否把同一ID的报文收起还是逐条显示;
2、通过”ArbId/Header”过滤出特定ID的报文;
3、通过”Pause”暂停Message接收界面的更新;
4、通过”Erase”擦除Message接收界面当前的信息。
1、保存操作:点击Message界面下标题栏的”Save”,选择要保存的格式,即可将发送的报文信息保存下来,以便后续分析工作,保存界面如下图所示:
2、查看保存下来的Logging日志文件:如下图,点击右上角的”Data”,将打开文件保存的位置;此时,可以将保存下来的文件重新丢回Message界面进行查看;也可以用Notepad++等第三方软件进行查看。
Ps:保存数据量的设置:如上图,点击”Setup”(需在停止Vspy工程状态下)进行设置;此时的界面如下图所示。可在这里进行日志文件保存的报文数量进行设置。
dbc数据库文件是用来描述CAN网络节点间数据通讯的一种文件,包含了CAN总线协议中协议数据及其所代表的具体意义。简单的讲,dbc文件描述了在CAN网络上有哪些报文信息;这些报文上又携带了哪些信号信息;该报文是从哪个节点发出,哪个节点进行接收的等信息。当我们已经有了dbc数据库文件后,可以将其直接导入到我们的Vspy工程中进行使用操作。其导入过程如下:
1、建立平台:需先建立一个用于加载dbc文件的数据库平台。在Vspy工程Stop的状态下,点击工具栏”Setup”下的” Setup Platforms“,此时界面如下,通过”Add”新建一个平台;
2、在新建的平台上导入dbc文件:点击工具栏”Setup”下的” Network Databases“,此时界面如下,选择”Network”后点击”Add”添加dbc文件(也可以直接导入其他Vspy工程中的报文信号),点击”Save Platform Changes”进行保存。即完成dbc文件的导入工作了。
3、dbc文件的使用:经过前面的步骤我们完成了dbc文件的导入工作,此时在”Message Editor”界面下的”Database”里,就可以看到我们加载进来的dbc文件中的报文了(注意”Network”的选择);右键要使用的报文选择拷贝到“Transmit”、“Receive”下,即可进行直接使用这些报文了。
cdd是诊断数据库文件,描述了诊断应用的范围和数据格式,用于优化整个诊断开发过程。可通过”CANdelaStudio”这个诊断协议开发软件来进行编辑。在Vspy中,导入cdd文件的操作如下:
1、文件导入:在Vspy工程Stop的状态下,点击工具栏”Setup”下的” ECU Diagnostic Databases“,此时界面如下;选择用来加载dbc的数据库平台,若当前工程没有平台,则需新建一个;步骤可参考上一小节加载dbc文件时的介绍。
点击上图中的”Import”,选择“ISO 14229”下的“ODX/PDX”,选择想要导入的cdd/odx文件。这样便完成cdd文件的导入了,完成导入后的界面如下(注意要输入诊断ID):
2、cdd文件的使用:点击”Spy Networks”下的”Diagnostics”,此时界面如下,可在该界面下直接进行诊断报文的发送操作,或者将其拷贝到”Message Editor”界面下进行操作等。
1、点击工具栏”Spy Networks”下的”Message Editor”,此时界面如下图,选择我们刚刚导入dbc的CAN网络,并选到”Database”这一列,此时则会显示出导入的dbc中包含的报文及其信号信息(下图通过ID过滤掉了其他报文信息)
2、选择要导入的报文(可一次性导入多条报文),右键,选择”Copy To”,此时可以选择导入到”Transmit”(发送报文列表)处,或者”Receive” (接收报文列表)处。此时再到”Receive”或者”Transmit”界面下进行查看,可以看到我们刚刚从dbc导入的报文已经在列表下了。
点击工具栏”Spy Networks”下的”Message Editor”,在”Receive”界面下编辑接收报文;在”Transmit”界面下编辑发送报文;点击鼠标右键,选择”Add”进行报文的新增工作,此时界面如下:
1、在”Description”下输入新建的报文名字;
2、在”Type”下选择报文的类型,是11位的标准帧还是29位扩展帧(默认是11位的标准帧格式);
3、在”ArbID”下输入该报文的ID(16进制);
4、在”Multi”下选择多帧情况下遵循的协议,可以选择”None”,此时不能发送多帧;选择”ISO15765-2”、“J1939”,则在信息大于一帧的情况下,分别遵循其网络层协议将信息分成多帧进行发送;
6、在”B1—B7”项中,输入报文中携带的固定的数据信息;如下图ID为0x123这一条报文,其前面三个字节固定是以”01 02 03”发送的;若发送数据是变化的,我们可以通过在报文下面新建信号来实现。
7、在该报文下面的”Signals in message”界面增减该报文的信号;输入信号名字、选择信号值类型、定义信号长度及起始位等信息。如下:
通过前面的小节,我们完成了在vspy工程下报文的创建(或导入)工作。在”Message Editor”下的”Receive”的报文即为定义的接收报文;在”Transmit”下的为发送报文。而关于报文的发送操作,可以在”Tx panel”界面下完成。操作如下:
1、点击工具栏”Spy Networks”下的”Tx panel”,此时界面如下(我们在”Transmit”界面下的创建的发送报文都会在”Tx panel”界面下出现)
2、选择要进行发送的报文,在”Auto Tx”这一列设置好发送方式:
“Periodic On”方式下:可以通过点击前面的按钮进行开启/关闭该报文的周期发送;
“Periodic”方式下:也是周期发送;只不过该方式是一运行工程就自动进行周期发送,在关闭工程时才停止发送;
“At Start”方式下:每点击前面的发送按钮才会对该报文进行一次发送操作。
2、在右侧设置该报文的信号变量值,点击前面的发送按钮;即将此条报文信息发送出去了。可以在”Message”界面下查看发送出去的报文。
7、“Application Signals”的使用
在“Application Signals”下定义的应用信号可以作为我们Vspy工程中,”Graphical Panels”下创建的界面控件与vs工程(或Function Block)的连接纽带。即当我们在Vspy下点击某个控件时,此时是改变其关联的应用信号的值;vs工程(或Function Block)中再判断该信号值的改变,进而执行相应的程序。应用信号的定义操作如下:
1、“Application Signals”的创建:点击工具栏”Scripting and Automation”下的” Application Signals”,点击左侧的”+”进行应用信号的添加,此时界面如下,对应完成信号名、信号类型、初始值等的设置工作。
2、与”Graphical Panels”下的控件按钮进行关联:点击工具栏”Measurement”下的” Graphical Panels”,以放置一个开关按钮控件为例,此时界面如下:
双击”Signal”进入到选择关联信号的界面,如下,在左侧点击到”App Signals”这一项,双击选择我们要关联到的应用信号。
Ps:这里由于Application Signals的使用介绍,提到了” Graphical Panels”面板界面的使用;但这里不做过多描述,关于” Graphical Panels”下常用的控件介绍,放在下一篇文章中进行介绍。
当我们需要在Vspy工程中进行多个功能指令的操作时,则可以在”Function Blocks”界面下进行操作;步骤如下:
8.1、” Function Blocks”的创建
点击工具栏”Scripting and Automation”下的” Function Blocks”,点击左上角的”+”进行功能块的添加,此时界面如下:
8.2、” Function Blocks”常用指令介绍
设置新建功能块的名字,触发方式(点击上图绿色框起来的”Start”进行设置,有立即触发、手动触发等方式;还可以设置触发按键;设置界面如下图所示)、及其执行的指令集等。
如上图的例子中,我们新增了一个名为”MyFunctionBlock1”的功能块;其触发方式是”Manual”,即手动点击开始按键触发。然后最主要的重点是其触发后执行的指令块,这些信息是在下面进行设置的。
接下来我们介绍下”Function Blocks”中常用到的一些指令集,如下:
3、If、Else、Else If、End If:条件判断指令(使用了If指令,需配套End If指令表示结束);
4、Wait For/Wait Until:等待时间(相当于延时)/在某个条件满足前等待(该指令下也可设置超时时间);
5、Pause/Stop:暂停/停止(若该Function Block结尾处没有加Stop指令;则该block会不断循环);
6、Start Loop/End Loop:相当于C语言中的For循环;用于定义”Start Loop”到”End Loop”之间指令块的循环次数;
7、Jump To/Jump If:指令跳转,用于指定跳转到第几行指令(类似于C语言中的goto);Jump If则是Jump To与If指令的组合,即条件满足再进行跳转;
8、Clear History:清除”Message”界面的报文信息;
9、Function Block Action:对其他”Function Block”的操作(比如可以在当前Block调用/停止其他Block);可进行的操作如下:
Ps:这里只是简短介绍了下常用到的几个指令集的用途;至于其他指令,大家可以在帮助文档(”F1”神键进入)中”Function Block”的章节进行查阅。
Vspy是一款集合了网络监控、数据获取/记录、节点仿真、诊断、自动测试等功能的工具;友好的操作界面及相对较低的价格成本让其广泛应用于汽车电子行业。Vspy工具的核心功能,说到底也是在硬件基础上通过上位机工具实现与ECU间的信息交互;包括进行报文发送及网络上报文数据的监测等。
其中,报文的发送是在Tx Panel视图下完成的(第6小节);而关于发送出去的报文,需要我们自己进行定义(第5小节)、或者从dbc/cdd(发送的为诊断报文时)中进行导入(第3、4小节)。关于对网络上报文数据的监测及保存则是在Message视图下完成的(第1、2小节)。以上就是Vspy最基本的功能操作。在Vspy与用户的交互上,我们一般会通过”Graphical Panels”下的控件来制作交互用的面板,方便用户的操作使用;此时就需要第7、8小节的知识点。
版权声明:本文为CSDN博主「第55号小白鸭」的原创文章,遵循CC 4.0 BY-SA版权协议,本文已获作者转载权限。
推荐阅读
特斯拉最新的12V蓄电池有什么不同?
特斯拉最新中央计算模块(CCM)解析
关于对自动驾驶传感器的理解
特斯拉的电池管理系统 (BMS) 相比其他电动车有哪些优势?
2021款特斯拉Model Y ECU接口梳理
详解CANoe之CAPL编程
关于CAN时间同步的理解
dbc文件的格式以及创建详解
大众ID.4 X网络架构详解
学习笔记——NVM数据处理机制
学习笔记——AUTOSAR NVM基础知识
基于UDS的Bootloder详解
关于整车上下电流程的理解
一文详解CAN总线错误帧|附下载
DoIP协议介绍,资料分享!
详解车载网络 OTA系统的开发|文末附下载
一文了解汽车嵌入式AUTOSAR架构|附下载
特斯拉Autopilot系统安全研究|附dbc下载
原文始发于微信公众号(汽车ECU开发):Vspy常用操作