如何在 CANoe 中模拟 LIN 从节点

How to simulate a LIN Slave Node in CANoe

我找不到关于如何在 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);
}

这个问题与我之前关于 的问题有关。

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

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

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

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