【问题标题】:How to simulate a LIN Slave Node in CANoe如何在 CANoe 中模拟 LIN 从节点
【发布时间】:2020-08-06 19:32:31
【问题描述】:

我找不到关于如何在 CANoe 配置中构建合成 LIN 从站的综合指南,所以我想在这里创建一个。

场景:ECU 充当 LIN 主机并与 n 个 LIN 从机通信。目标是能够在 CANoe 模拟中添加一个合成从站,作为其中一个物理从站的替代者。由于有no way to dynamically activate or de-activate a LIN node,我们的设置将是 n-1 个物理从属和 1 个合成从属,再加上主控。在这里,Master 正在测试中,特别是,我们希望通过模拟从机并触发所需的任何帧来评估它对某些从机响应做出反应的能力。让我们假设会有一个 GUI 或其他东西,它不在问题的范围内。

我可以向模拟设置添加一个新节点,将其分配给 LIN 网络,如果激活,它会连接到指示模拟总线的红线。一个 LDF 被创建并添加到配置中,我知道节点应该通信的 linFrame ID。

节点将通过 CAPL 脚本进行模拟。我卡在传输部分:

on ???
{
    // This is my call: as LIN slave I should output something.
    output(myLinFrame);
}

我应该在哪里添加我的逻辑来更新和传输消息?

我尝试的基本方法是键绑定它,但输出将在 LDF 的下一个关联插槽上,而且它是键绑定的。

on key 'A'
{
    // prepare new content...
    output(myLinFrame);
}

这个问题与我关于LIN censorship 的一个较早的问题有关。

最后说明:我的 CANoe 许可证插槽非常有限,无法测试我想出的任何代码,所以我需要提前准备和研究。

在这种情况下,我应该使用linUpdateResponse()吗?

【问题讨论】:

  • 不确定你在问什么。您想知道您应该使用哪个事件过程(而不是按键)还是想知道如何组装和发送 LIN 帧?还是别的什么?
  • 你说的很对。我怎么知道我应该输出我的帧?我应该使用哪种方法来输出它? outputlinUpdateFrame?
  • 我希望这仍然成立,自从使用 LIN 以来已经有一段时间了......对于从节点,outputlinUpdateResponse 之间没有真正的区别。两者都更新将在主节点的下一个请求中发送的响应。我认为output 你有责任设置RTR 选择器。但其余的应该是一样的。用必要的 ID 和 outputlinUpdateResponse 组装一个 LIN 框架。
  • 什么时候?是否有任何事件可以让我知道我的日程安排何时完成?例如,有没有什么告诉我,作为一个合成器奴隶,我刚刚发送了我的帧,我可以组装下一个?我害怕把自己锁起来把它链接到on myframe
  • 我认为对于 when on linFrame 将是正确的地方。当 old 框架在总线上时调用此事件处理程序。在事件处理程序中,您使用linUpdateResponse 更新响应,以便下次发送帧。

标签: testing capl canoe


【解决方案1】:

您应该创建on linFrame ... 事件处理程序。

一旦将帧放入总线,就会调用这些事件处理程序。 在事件处理程序中,您可以使用linUpdateResponse(或output)来修改下一次发送的帧,即调用修改不会立即发送响应,而是修改从属的内部状态,所以下次发送不同的帧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 2020-11-05
    • 2021-11-21
    • 2019-12-04
    • 2019-11-03
    • 1970-01-01
    • 2014-01-17
    相关资源
    最近更新 更多