全模型代码生成最难的地方还是计算转速和AD采样部分:
如果是采用光电编码器部分进行转速计算,比较简单,核心问题是在simulink中获得寄存器的值(memory copy模块(只接受十进制)或者system模块),如单位位置事件产生的时候,要判断UPENT寄存器值是否为1等。目前我知道如何通过memory copy 模块获得值。这部分可以参考重庆大学硕士论文。
若采样旋转变压器解码芯片进行计算,要么做模块(需要懂C语言的sfunction和TLC语言)。
要么采用底层代码和自动生成结合(把头文件和源文件都拿到工程中)。这部分可以参考书中。关键问题是如何把底层代码计算的转速值传递到simulink中去。(听说2018b有个C caller模块可以实现!听说stateflow也可以实现!)
AD采样如果采用片内的采样很简单,片外的采样AD7606模块已经搭好了,但是在数据类型转换中不知道怎么处理(用了IQ的乘法模块)。
现在想到一种方法:
用system 模块去触发采样、旋变角度获取之类的值。
然后定义接口名字和文件里面相同的名字。
有做代码生成的希望一起探讨一下。