应用场景1
将底层传入的CAN总线变量由存储值转为物理值
例如:
CAN标准帧ID=0x224的第0、1字节表示方向盘转角,精度0.0625,偏移量-2048
底层CAN消息接收中断处理函数中,通过移位运算可以高效将上述方向转角解析为uint16类型的存储值
SAS_SteeringAngle = (u16)((u16)(RxMessage.Data[0] << 8) | RxMessage.Data[1]);
在应用层中,使用Constant模块绑定到SAS_SteeringAngle
变量,下游连接一个Data Type Conversion模块
输出数据类型选择:fixdt(0,16,0.0625,-2048)
并设置“输入和输出具有相等的”:存储的整数(SI)
Data Type Conversion模块将输出解析后的方向盘转角物理值
应用场景2
将局部运算结果类型转为下游输入要求的数据类型
某模块局部用到多次除法运算,为防止精度损失,将涉及除法运算的数据类型设为fixdt(0,32,0.00001)
该模块的输出数据类型被定义为fixdt(0,16,0.01)
此时我们需要在合适的位置(不一定在输出端),将32位定点类型转为16位定点类型
MBD开发中,模型生成代码编译报错数据类型不一致时,通常增加一个Data Type Conversion模块可以迅速解决该报错,但切记不要滥用,我们需要优选考虑导致报错的上游数据类型定义是否合适。