服务与案例 Service 当前位置: 首页 > 服务与案例 > 应用案例 >
固定电话:028-68743610
客服手机:13730631678
客服QQ  :
 
联系地址:四川省成都市成华区双林横路12号
ID过滤
2015-03-25 23:50:42
  一般CAN ID过滤的应用场景之一就是CAN控器A与B需要相互通信,比如A需要接收B传输的数据,但B只有确定的几个ID是A需要的。其它ID并不需要,或者其它ID与A从其它控制器接收的ID有冲突,需要将其在发送给A之前过滤掉。这就需要有一个ID过滤设备来完成。
  该功能可以使用CANslinkal或者CANdirect来完成。如果要长期固定使用(比如发动机测试台架、工厂之类),建议使用CANdirect来做。因为CANdirect能够把功能固化在硬件里面,只需要外接电源就可以运行。一般网络组成如下:
\
 无论使用CANslinkal还是CANdirect硬件来完成,都需要使用CANslinkal软件来构建这个转换功能。  
  第一步需要做的是在CANslinkal软件中建立一个工程,然后分别设设置CAN通信参数,两个通道的CAN参数必须分别与控制A与控制B所在CAN网络通信速率相适应。余来的事情,就是建立功能模块程序。这里需要做的事情就是:当CAN2收到数据(也即控制器B的数据),就从CAN1发送出去(发送给控制器A)。
 一般来说,过滤有两种方式,一种被称为“滤通”:对特定ID通过,其它ID过滤掉。别一种被称为“滤阻”:将特定ID过滤掉,其它ID都通过。我们下面先做“滤通”的功能。

  我们需要建立一个中断源模块,与一个触发系统,中断源模块就是对应CAN2接收到数据的中断。当这这个中断发生时,就会触发这个触发系统执行。在触发系统中,接收实际的数据,判定是否需要过滤,然后转发到另一通道中就可以了。
  下图是这两个模块的设计结果:
\


  然后进入触发系统,作如下设计:
\
 这里对接收到的ID作了判断,如果是我们所要的ID的话,要驱动下面“转发处理”系统执行,完成转发工作。进入“发发处理”系统中,作实际的转发处理:
\  这里就比较直接了。因为这里确定是从通道2接收数据的中断处理,所以数据肯定是从通道2来的,只需要把改为通道1,其它原封不动的发送出去就可以了。
 上面就完成了“滤通”功能。如果要做“滤阻”呢,其实非常简单的。将转发判断部分修改一下就可以了:
\
  注意上面的橙色圈起来的部分,就是修改的部分。就是修改了一下判定逻辑而已。
 可以看见,实现一个过滤功能是非常容易的。可以随意添加确定的ID,当然也可以设定任意的ID数据范围,都在用户的自由控制之下。当然,如果A与B的通信速率不同的话,改动一下CANslinkal或者CANdirect的各通道的通信速率,也就同时完成了速率的转换工作。