如何使用CAPL从dbc生成信号可能值作为通用输出

时间:2018-01-08 13:31:42

标签: capl canoe canalyzer

我正在使用独木舟版本10.0,我想问一下是否有一个聪明的方法 从数据库生成可选信号的值到其他值。

现在我正在进行硬编码,但是对于每个信号都这样做很烦人。特别是当我知道数据库保存信息长度,起始位和最小和最大可能值等信息时。

我看到有一些选项,如getSignal,setSignal等。 但我无法理解如何正确使用它们以实现我的目标。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

简短:否,您不能从dbc / fibex数据库中描述的给定信号的CAPL中访问符号值。因此,您无法拨打以下电话:

 SetSignal (SignalnamefromDbc, SNA_VALUE); /*SNA_VALUE defined in dbcis 7*/

有几种解决方法,但是我需要更多有关模拟可以做什么和不能做什么的信息。

例如: OEM与Vector一起通常会编写特定的dll库以生成实际的信号值,而无需您的特定请求。这些dll通常链接到Simulation节点,并且可以在仿真过程中随时激活/扰动/暂停。

答案 1 :(得分:0)

我知道已经很久了,但是我的理解如下。

  

尤其是当我知道数据库保存的信息时,例如信号长度,起始位以及最小和最大可能值。

通常在2个文件中定义数据库:

  • DBC(来自VECTOR的格式),用于定义信号,名称,位开始,长度等
  • 一个EXCEL文件,用于定义帧的周期性并发出默认值信号

您可以将DBC文件直接输入到CANoe / CANalyser中,并且CAPL将能够直接访问信号值。

for (int i = 0; i < size; i++)
    ans[size+i+1] = second[i] + '0';

无需编写任何复杂的函数来提取信号值。如果您提供适当的DBC文件,则CANoe / CANalyser会进行适当的解码。