Function Block是VSPY中常用的脚本控制语言,它既可以在VSPY软件中运行,也可以用VSPY可将其编译成CoreMini写入到neoVI硬件产品中脱机运行。目前Function Block中大概含有三十条指令,包括常用的逻辑控制、数据记录、发送报文等。
Function Block脚本中共有四栏信息,分别是:
Step:序号编码,标志每条脚本所在的序号,可作为跳转指令的Value;
Description:脚本代码语句,可以选择三十多种脚本;
Value:脚本的参数信息,如指定发送的报文等
Comment:注释
下面将详细介绍每条指令的具体含义及其用法:
1. Clear History
作用:清除Message窗口中的所有发送与接收报文的历史数据
Value设置:固定为“Message View”。Message View窗口(主菜单“Spy Networks” -> “Messages”)是查看所有总线数据的重要工具,利用该命令可以对历史数据进行清除,实现窗口刷新功能。
2. Clear States
作用:清除接收报文(Receive面板中的报文)或者某一个网络的统计信息,注意该命令不影响发送报文的统计信息。常用于设置报文的Present标志位,以实现报文的多次监控。
图中第2步清除了RxMessage的统计信息(包含Present标志位),程序一直在第3步等待,直到RxMessage报文在总线上再次出现。
Value设置:选择需要设置的某一条报文,或者某一个网络,或者所有网络。
3.Comment
作用:放置注释,以绿色显示,可用于将大型的脚本分段。也可在Comment中直接输入内容,然后按回车填充。
Value设置:不适用
4.CoreMini Action
作用:控制可脱机运行于neoVI硬件产品中的内嵌CoreMini脚本(使用CoreMini Console生成的vs3cmb文件)
Value设置:Action可以选择启动,停止或者下载CoreMini脚本,Medium选择下载至neoVI硬件产品的存储介质,CM File选择CoreMini文件
5.DAQ Action
作用:控制VehicleScape DAQ中设置生成的DAQ事件
Value设置:Action列表中选择操作命令,DAQ列表中选择DAQ事件
操作命令:
Start:启动未执行的DAQ事件
Wait Until Complete:一直等待直到DAQ事件执行完成
Save:保存DAQ事件中记录的数据
Stop:停止正在执行的DAQ事件
Call:启动另一个DAQ事件,直到它执行完成之后才继续往下执行
6.Diagnostic Job Action
作用:控制VehicleScape DAQ中设置生成的Diag Job(诊断任务)
Value设置:Action列表中选择操作命令,Diag Job列表中选择诊断任务
操作命令:
Start:启动未执行的诊断任务
Wait Until Complete:一直等待直到诊断任务执行完成
Save:保存诊断任务中记录的数据
Stop:停止正在执行的诊断任务
Call:启动另一个诊断任务,直到它执行完成之后才继续往下执行(合并了Start和Wait Until Complete两个命令)
7.Function Block Action
作用:控制其它的Function Block脚本
Value设置:Action列表中选择操作命令,Function Block列表中选择脚本
操作命令:
Start:启动未执行的Function Block脚本
Trigger:启动待触发的Capture Function Block脚本,该脚本的Stop and Trigger标签必须配置为表达式触发或者手动触发模式才有效
Save:保存Capture Function Block脚本中记录的数据
Stop:停止正在执行的Function Block脚本
Call:启动另一个Function Block脚本,直到它执行完成之后才继续往下执行
8.If, Else, Else If, End If
作用:脚本条件逻辑控制
Value设置:设置判断条件,使用表达式生成器自动生成。If与End If必须配套使用。
注意:如需要判断某一个信号是否等于1,应该使用”=“,而不是”==“。
9.Jump If
作用:跳转指令,如果给定的表达式成立,跳转至Function Block中的其它语句
Value设置:Step To Jump To中输入跳转到的语句所在的Step序号,Expression中输入表达式,可利用表达式生成器自动生成。
10.Jump To
作用:跳转指令,直接跳转至Function Block中的其它语句。该命令常用于循环或者跳过某些脚本操作
Value设置:跳转的Step序号
上图使用Jump To跳过Step 2,直接执行Step 3
11.Load Message Data
作用:从文件中加载十六进制数据,并将其放在发送报文中
Value设置:打开一个对话框,将配置要读取的文件以及将数据放置于哪一条发送报文中
配置选项:
Start Index:指定读取文件中的第一个字节起始地址,使用Application Signal作为参数。Application Signal是VSPY中的一种应用信号,一般用作中间变量,便于其它脚本或者代码使用。
Length:读取的文件数据字节数,使用Application Signal作为参数。
FileName:读取的文件名路径。文件后缀名必须为msgbin,并且该文件需要位于用户的DATA目录中。
Message:指定将数据加载到哪一条发送报文。
Byte Start Index:报文中放置数据的其实字节位置。
12.Log Data
作用:提供一种简单记录数据的方法,可保存为txt或html文件
Value设置:打开配置对话框,设置需要记录的数据,保存到文件类型及名称等
操作命令:
Text To Log:使用表达式生成器自动生成需要记录的数据格式。
FileType:选择文件类型为txt或html格式。
单选框选择使用动态文件名还是静态文件名,根据application signal生成动态文件名。
Overiwrite File if it exists:是否覆盖原文件。
13.Start loop, End Loop
作用:这两条命令根据设置的次数,循环执行脚本
Value设置:设置循环执行的次数,次数要求:必须为大于等于1。如果需要设置更为复杂的次数,如根据Application Signal或者其他信号计算而来的循环次数,则单击Value单元后按下”=“键两次,在弹出的表达式生成器中进行设置。
所有需要循环执行的脚本必须位于Start loop和End loop两条脚本之间。这两条语句必须配合使用。
下面是一个示例:
14.neoVI PRO Action
作用:该命令已被弃用
Value设置:该命令已被弃用
15.Pause
作用:暂停执行Function Block脚本,并弹出一个串口显示设置的表达式数据。当用户单击“OK”按钮后脚本继续执行。
Value设置:使用表达式生成器自动生成需要显示的数据格式,可包含信号值以及简单的格式处理。
使用示例:
Function Block 命令深入详解(二)
16.Read Data
作用:从文本文件中读取数据放置于Application Signal中,如果需要将该数据发送到总线上,则将该Application Signal与发送的总线报文进行关联
Value设置:配置要读取的文本文件名,从文件中采集的数据以及将数据放置在哪个Application Signal中。
Data To Read标签中设置将数据放置于哪个Application Signal,如果需要可将读取的一行数据放置于多个Application Signal中,其中用逗号分隔。
FileName标签中设置要读取的文件名,可以输入一个固定的文件名(无后缀名),也可以是利用Application Signal选择动态文件名。这些文本文件必须位于用户的DATA目录下
File Line To Read标签配置文件中读取数据的行号,可使用表达式生成器自动生成
下面是一个简单的实例脚本:
17.Set Value
作用:设置信号的值,该信号可以是Application Signal,报文中的Signal,Physical IO信号等。如果是Physical IO信号,需要在3G Explorer设置窗口中激活硬件的MISC IO reporting功能。
Value设置:打开Enter Expression窗口,先选择需要设置的信号后,单击“Pick Set Value”将其添加至“Value To Set”框中。再选择将该信号的设置值,单击”Add To Expression“按钮将其添加至”Expression“框中。
18.Show Panel
作用:自动显示Graphical Panel中创建的面板
Value设置:选择创建好的面板
下面是一个示例:
19.Sleep
作用:强制硬件进入睡眠状态
Value设置:不适用
注意:该命令只适用于neoVI Fire,Red以及Yellow产品,并且要求该Function Block被编译成CoreMini写入到硬件中执行才有效。
20.Stop
作用:立即停止Function Block脚本执行。如果不需要循环执行脚本,一般放置于脚本的最后一行
Value设置:不适用
21.Test DTC
作用:检测接受报文的数据是否包含用户定义的DTC(故障码)。如果检测到含有DTC,则号码被复制至Application Signal中,否则该Application Signal设置为0。目前该命令仅支持J1939 DTC。
Value设置:打开配置窗口,包括要检测的DTC,存储结果的Application Signal以及检测DTC所在的报文。对于J1939 DTC,需要输入如下几个参数:
- SPN – Suspect Parameter Number (0 to 524,287).
- FMI – Failure Mode Indicator (0 to 31).
- OC – Occurrence Count (0 to 127).
如果忽略FMI和OC参数,则单击旁边的”Don’t Care“按钮。输入这些参数后,单击”Add”按钮添加该DTC,将会在参数下面的区域中以十六进制方式显示这条DTC信息。
Application Signal:选择存储结果的Application Signal
Rx Message:检测DTC所在的J1939报文,该报文为Received Message
22.Text API
作用:在Function Block脚本中发送Text API命令
Value设置:设置Text API命令,可使用表达式生成器自动生成字符串,可以包含信号值。返回值可放置于application signal中。还可以将Text API命令发送至远程计算机上的Vechicle Spy。
操作命令:
Expression:使用表达式生成器自动生成字符串,可以包含信号值。
Assign Result to Application Signal(Optional):设置返回值。
Remote Server:发送至远程计算机
23.Transmit
作用:发送一条报文
Value设置:选择需要发送的报文,只可以选择Transmit Message
24.Wait For
作用:设置脚本等待指定时间
Value设置:等待的时间,单位:秒(sec)。如果需要设置更为复杂的等待时间,如根据Application Signal或者其他信号计算而来的时间值,则单击Value单元后按下”=“键两次,在弹出的表达式生成器中进行设置。
25.Wait Until
作用:控制脚本一直处理等待状态,直到设置的条件为真才继续往下执行。
Value设置:使用表达式生成器设置条件表达式。