我是 CAPL 和 Canoe 的新手,我的问题是何时为 CAN 消息中的信号分配值,是否应该使用物理信号进行分配,如下所示: MSG.Signal_A = raw_data * 比例 + 偏移量; 或者只是分配 raw_data: MSG.Signal_A = raw_data; 我正在使用演示版和模拟来学习,没有真正的硬件,所以我不知道如何检查。
我希望使用物理值,因为 CAPL 对我来说有点像 C++。我认为消息 ID 对象是原始 CAN 帧的包装,它具有在原始帧和物理帧之间进行转换的内部方法。
两种选择都可用。但是,默认情况下,设置/读取信号会为您提供物理值。也就是说,会自动应用 .dbc 中定义的比例和偏移量。如果您想访问原始值,则可以在信号上使用“.raw”属性。
MSG.Signal_A = raw_data * scale + offset; //this is OK. Calculate + set physical value
MSG.Signal_A = phys_value; //this is OK. Set physical value directly
MSG.Signal_A.phys = phys_value; //equivalent to above
MSG.Signal_A = raw_data; //this will not yield the expected result. you are using raw value to set phyical
MSG.Signal_A.raw = raw_data; //this is OK