overview概述
TSMaster的4种过滤器: 1)硬件过滤器:可以在硬件端针对数据位进行筛选过滤,硬件过滤。在硬件端阻止接收一部分不需要的报文,留更多带宽对其他报文进行接收。 2)数据流过滤器:过滤总线数据流,软件过滤。操作高效便捷,需要对要过滤的内容比较明确。 3)窗口过滤器:对窗口设置过滤器,软件过滤。设置方便,作用范围仅限于窗口,过滤条件较为有限。 4) 编程过滤器:可以通过脚本对窗口报文进行过滤,软件过滤。过滤条件比较灵活、丰富,需要一定的编程基础。
1、硬件过滤器
关于下图的CAN过滤器设置可以对标准帧(11位)和扩展帧(29位)进行过滤,过滤的依据是ID段的数据位。每一位共有三种状态(0:阻止,1:通过,x:任意位),通过鼠标左键点击即可切换每一位状态,在设置好后,下方会实时显示可通过的标识符列表。在对话框最下方左下角可进入帮助的视频说明文档,中间可校验某个ID在当前筛选条件下是否可以通过,右下角有确定和取消过滤器设置。
例如,要设置0x100这个报文通过,其他标识符报文全部阻止,则可以按下图设置:
那么我们如果想禁止某一个ID的报文能在这里设置吗?答案是肯定的。但由于这个是在硬件端对数据位做过滤,所以我们在限制某一位不能通过时,必然也会带着一部分其他ID的报文被限制,这也是这种过滤器的局限性。
如下图设置0x100禁止通过时,会把数据位为09这位为1的所有报文ID都给限制了:
那么我们一共可以设置多少种过滤方式呢?如之前所述,我们每一位都有3个状态可以选择,标准帧的ID有11位,扩展帧的ID有29位,所以针对这两种报文帧就有如下几种过滤方式:
标准帧:过滤方式数量=311种
扩展帧:过滤方式数量=329种
2、数据流过滤器
1)配置过程
数据流过滤器实际就是报文的流向,如从左边数据源(这里可以理解为这个工程对应的总线网络)流向了报文信息、总线记录等窗口的报文是经过了过滤器筛选后才流入到了这些模块,所以这些模块下收到的报文并不一定是总线上的全部报文。
2)模块颜色含义
另外这些模块的颜色都是不一样的,不同颜色有对应的含义:
✔ 白色窗体:允许所有数据通过
✔ 绿色窗体:满足条件的数据通过
✔ 红色窗体:禁止所有数据通过
例如下图,我们在通道1设置了0x100这条报文的通过型过滤器,并且对CAN/CAN FD报文信息窗口、总线记录模块、曲线窗口进行了过滤,所以在发送窗口发送的两条周期报文(0x100、0x101),在报文信息窗口中只能看到通道1下发出的0x100这条报文。
这种过滤器的优点是高效、直观、可重复性使用,但相较于简单的筛选观察来说配置流程会繁琐些(这种需求选用下一个窗口过滤器会更为方便),关于数据流过滤器这块内容也可以参考TSMaster软件帮助下的《TSMaster快速入门》手册。
3、窗口过滤器
这种过滤器比较常见,配置也比较简单,在需要过滤的窗口中直接点击漏斗按钮即可配置。适用于我们在实时总线的部分报文或者回放情况下的部分报文的监测,配置简单、方便。但也正是它的便捷所致它功能有较大的局限性,如作用域仅限于单一窗口、过滤筛选条件较少,总线记录报文和过滤窗口报文一致性较差(这种建议用数据流过滤器)等,所以这个过滤器一般是用于简单观察或与其他过滤器组合使用。
4、编程过滤器
1)配置过程
下图两张图即是编程过滤器设置的步骤,编程过滤器是TSMaster较新几个版本的功能,所以在使用前建议先在帮助下更新TSMaster至最新版。
2)优势
那么我们在什么情况下可能会使用到这个编程过滤器呢?首先我们需要了解这个编程过滤器相较于其他三个过滤器的区别在哪:
✔ 编程过滤器是在软件端实现的过滤,可以把筛选的条件更细化,甚至可以细化到某一个数据位的筛选
✔ 编程过滤器适用于一些不常见、较为特殊情况下的筛选
✔ 编程过滤器可配置内容更为灵活,完全可以根据自己的需求进行定制化配置,且可以复用
✔ 编程过滤器可以结合其他过滤器一起使用,适配度比较高
3)难点
编程过滤器实际可以粗暴的理解为自己写一个过滤器,所以需要对C脚本的语法及相关结构体有一定的熟悉程度,门槛相较于另外几种过滤器会高一些。但因为有示例的缘故,只要了解C脚本的基本语法,其实也可以成为我们在提升工作效率和关键问题解决中起到较大的作用。
4)示例演示
以下便设置一个编程过滤器为例来演示我们如何实现按自己的需求对窗口报文进行过滤:
以报文信息窗口过滤为例,首先进入分析下报文信息窗口的编程过滤器。
打开编程过滤器的脚本,编写过滤条件并编译。
启动工程接收报文进行观察,过滤器生效。
以上我们可以清晰的看到加了编程过滤器的筛选条件均已生效。示例中仅仅是对我们的报文结构体中的通道、ID及数据位进行了筛选,除此之外我们也可以对其他信息进行筛选,如报文帧类型、收发方向、字节长度(DLC),甚至可以筛选波特率是否是会变化的报文、信号值、报文周期(在一定容错范围内)等:
以上便是在TSMaster中4种不同类型的过滤器,这几种过滤器针对我们不同的应用场景有着不同的作用,我们应该根据自己的需求来选择其中一种或者几种过滤器进行组合使用,以此来提高我们的工作效率,以可重复性、便捷有效的原则来快速解决工作中遇到的部分难题。
(彩蛋:以上都是接收过滤器,那么如何来实现发送过滤呢?思路:利用C脚本的预发送事件把不要的报文发送到不存在的通道中,如上图中的通道2(CH3)其实并不存在)。