本文关键字:CAN、LIN、FlexRay、报文消息过滤
本文目录
一、CAN报文消息过滤
在CAN报文信息中用到的过滤操作有以下几种:全局接收过滤、数据流过滤、窗口过滤、字符串过滤、可编程过滤;下面将对这几种过滤操作进行详细的讲解。
1、全局接收过滤
全局接收过滤是指在硬件控制器上完成过滤的设置,这种方式仅限支持同星的硬件及同星虚拟通道,其他厂家设备不支持。在操作之前需要将硬件通道选择同星的设备,这里以TC1016为例。
2、数据流过滤(测量过滤器)
TSMaster软件有测量设置窗口,在这个窗口可以通过组合数据流方向,实现过滤的效果,同时支持在窗口前添加过滤器窗口。
其基本的思路为,数据流经过一个窗口,这个窗口内包含的数据才允许通过,其他数据不允许通过。如下图所示,在测量设置窗口当中将报文信息#2、测量过滤器、图形三个窗口进行拓扑连接,从报文信息窗口可以看到是有EngineData报文下EngSpeed这个信号,但是在图形窗口中是n.a.,表示无效。这是因为在测量设置中添加了个过滤器阻止了通道一的EngineData。
测量窗口的过滤器是在窗口单击任意窗口所选框右键选择插入过滤器,也可以直接在空白处选择添加然后拖动到另一窗口后面。双击即可打开插入的过滤器,在这里可以选择要过滤的通道,过滤条件这里支持任意报文、单个ID、ID范围、节点筛选、以及错误帧筛选,最后需要注意的是过滤器的类型可以选择通过型或阻止型。
3、报文ID过滤器
该过滤方式直接单击报文信息窗口的漏斗图标即可弹出配置窗口,适用于实时监听总线数据或者进行报文回放的时候操作,在这里支持报文ID过滤和通道过滤,需要注意左下角选择的是通过型还是阻止型。
4、字符串过滤(建议加载DBC数据库)
字符串过滤跟窗口过滤的使用场景相同,支持模糊查询,过滤的范围包含了报文信息中报文标识符、报文信息名称解析过后的报文名称、物理值(枚举值),解析报文则需要提前加载数据库并绑定相应的通道。这里建议加载DBC数据库。
5、可编程过滤
编程过滤器是过滤条件最齐全的一种,它过滤的条件包括了报文结构体的全部成员属性,具体可以从TSMaster头文件查看,包括报文帧类型、收发方向、DLC等等。 使用这个过滤器需要先点击报文信息窗口右上角的漏斗图标,选择激活过滤器,然后选择安装默认的过滤器库;安装完成之后会弹出默认库的C小程序,小程序可以看出,分别针对CAN、LIN、FlexRay、Ethernet创建了自定义函数来进行区分,其结构体定义都在TSMaster.h头文件中可以找到。
关键的一点是:return 0表示符合条件的报文是被阻止的,而返回非0则表示该报文是可以窗口通过的。
以下是对通道一的报文进行通过型过滤的操作,编写完代码后需要编译小程序,最后在可编程过滤器中选择对应的API函数即可。
二、LIN报文消息过滤
LIN报文消息的过滤是有如下几种过滤操作方式。
1、数据流过滤
在测量设置中配置测量过滤器、LIN报文信息#2、图形三个窗口的拓扑,结果可以看到经过过滤器只有0x15的这帧报文通过到达了报文信息窗口,同时图形窗口的SteeringLampState信号值为n.a.无效值。从报文信息窗口可以看到原本的数据流是有这个信号数据的。
2、报文ID窗口过滤
窗口过滤与前面不同的是,此处的通道过滤设置移到了过滤器设置窗口的右下角,在激活使能过滤器之后选择只显示通道1或者其他,就会立即生效;另外所增加的标识符的通道是跟右下角配置的通道对应上的,这点跟前面讲到CAN的窗口过滤有所不同。
3、字符串过滤(建议加载DBC数据库)
字符串过滤的作用域也是报文信息中报文标识符、报文信息名称解析过后的报文名称、物理值(枚举值)。
4、可编程过滤
如下图,通过可编程过滤通过通道一且第一个报文数据字节为0x00的报文。
三、FlexRay报文消息过滤
FlexRay的报文消息过滤只有窗口过滤、字符串过滤和可编程过滤。
1、窗口过滤
FlexRay窗口过滤支持添加通道过滤和从数据库中添加对应的报文。
2、字符串过滤
字符串过滤与CAN、LIN的使用相同,进行信号关键词的搜索。
3、可编程过滤
可编程过滤也是通过对FR结构体成员进行条件判断来完成,以下以Slot Id为例,可以实现Slot id的范围过滤。