示例数据下载

假设我们收到一个总线上的报文,需要转发到另一路总线上,如何进行处理呢?我们以示例中的数据文件为例。通过Run-Simulation以及加载DBC,我们可以看到HS CAN上的711这条报文。

现在我们把这条报文转发到MS CAN上。

第一步: 在VSpy3中,任何一条需要被发送的报文,都需要在Message Editor中被创建,因此我们创建一条在MS CAN上的711,如下图所示。

第二步: 在Scripting and automation->Function Block->Script中,建立一个新的脚本,命名为Gateway.

第三步: 在脚本中写报文响应函数,因为我们每接受一条HS CAN上的711,就要发送一次MS CAN上的711,所以只有可能通过响应式的函数来实现。在VSpy3自带的Script中,有一个Wait Until函数可以实现,我们要Wait Until HS CAN 711在总线上出现,表达式如下: {Data_7 (Present) :db66-0}=1,只需要选择711的Present属性即可。

第四步: 判断完711的Present属性为真以后,要Set Value,将711的Present属性重新赋零,否则会以非常快而且不正常的速度响应,函数写法如下。

一条报文在VSpy3中有非常多的属性,都有不同的作用,这边我们注意一定要选中Present属性!

第五步: 至此,我们的响应式函数已经写完,接下来我们要将HS CAN上711的值赋到MS CAN上,再把MS CAN上的711发出去即可,函数写法如下所示。(请注意一定要选中Present属性进行操作!)

第五步: 至此,我们的响应式函数已经写完,接下来我们要将HS CAN上711的值赋到MS CAN上,再把MS CAN上的711发出去即可,函数写法如下所示。

第六步: 将脚本运行,检查算法是否成功,在Message界面将711筛选出来。

范例下载

示例数据下载

拓展练习:

  • 选择只转发第一个信号的报文 
  • 选择只转发第二个信号大于2000的报文
  • MS CAN上的711的第七八个字节作为一个新的信号,用来做计数器,计算转发的次数。
JapanKoreaChinaUSA