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