bus - 在 LIN Slave 传输的帧通过 CAPL 到达 Master 之前应用审查
问题描述
在我目前的设置中,我有一个 LIN 主机和一个 LIN 从机。调度表是无条件的,从不重新协商:
主框架
从属帧
从属帧
我正在使用物理总线和模拟主(物理从)。我的目标是对某些 LIN 帧进行实时审查。
例如,我知道来自 Master 的请求(可能是单帧或多帧)将触发特定的 Slave 响应。我想捕捉这个响应,比如在 CAPL 脚本中,对内容进行检查并对其应用选择性审查,以便主接收的帧不会说明从站首先传输的内容。当没有发送 Master 请求时,Master 和 Slave 都继续发送空帧以完成调度表。
我可以使用不透明的 CAPL 轻松“捕捉”帧,但我不确定如何重新传输它。
根据output()
关键字文档:
重新配置 LIN 帧的响应数据。在这种情况下,RTR 选择器必须设置为 0。LIN 硬件使用新配置的数据响应指定帧的下一个请求。
我不想在传输中添加一条消息的延迟。鉴于以下限制,我不知道如何做到这一点,或者是否可以使用 CANoe 中的 CAPL API:
- 我无法预见何时广播主请求;
- 我知道 Slave 会立即回复确认;
- 在我无法预见的一段时间后,Slave 会发送我想要审查的额外数据;
- 从站回复必须就地修改并重新传输;
- 原始的 Slave 回复绝不能到达 Master。
拒绝伪代码:
on linFrame 0x01 // <-- slave frame
{
if( payload I'm looking for )
{
// edit payload content
}
output(this)
}
解决方案
特别是从
原始的 Slave 回复绝不能到达 Master。
您必须在物理上断开 Master 和 Slave 并将 CANoe 置于其间
您将需要一个具有(至少)两个 LIN 通道的网络接口——一个连接到主机,一个连接到从机——并且需要将 CANoe 设置为这两个通道之间的网关。即作为对奴隶的主人和对主人的奴隶。
在您的网关实现中,您可以对主从之间交换的消息做任何您想做的事情。
可行但没那么有趣。
推荐阅读
- ios - iOS 上的 Webview 渲染问题 [Testflight]
- laravel - 一般错误:1005 无法创建表 `chatbot`.`staistic_students`(错误号:150“外键约束格式不正确”)
- python - 错误:network_service_instance_impl.cc(262)] 网络服务崩溃,重新启动服务。python 仅编译为可执行文件时出现 Pyqt5 错误。视窗
- java - 使用 th:object 保存所有对象
- arduino - ESP8266-01 如何使用电阻将 GPIO 接地,如下图所示
- angular - Angular 获得 30 多个结果
- javascript - 我如何在 swagger/nodejs 中检查不记名令牌
- node.js - 如何以编程方式运行和停止运行 Artillery.io?
- excel - 如何使用集合为用户表单中的下拉列表提供选项 - Excel VBA
- swift - 我们可以在 swift 包管理器中使用协调器模式吗?