我们正在开发一个基于dsPIC的电机控制器。我们打算使用Simulink对电机控制算法进行建模,并使用Real Time Embedded Workshop将其转换为C代码。
我们的固件将有其他一些次要的逻辑操作,但它的主要功能是电机控制。我们想知道我们是否应该尝试在Simulink中完成所有的固件,或者将逻辑运算分离到C代码中,而电机控制算法则停留在Simulink中?有没有人建议我们应该从哪条路开始呢?
谢谢,布伦特
发布于 2010-06-19 21:53:20
仅供参考,我刚刚建立了一个像你的系统,但与TI的DSP。
我假设你正在做一些复杂的事情,比如矢量控制。如果是这样,下面是你要做的:在你的模型中,为每个任务/你需要的每个时间段创建一个块。这可能只是包含控制的PWM中断。定义每个任务需要的所有IO -尝试将每个信号保持为16位,这在DsPIC上是原子的(这消除了大多数速率转换)。让simulink使每个顶级块都有一个函数调用。只在这个/这些块中进行控制,将所有硬件配置、任务调度和其他逻辑留给C代码。Simulink可以生成一个C和H文件,您可以将该文件与其他代码一起包含在项目中。您将填写输入的结构,调用函数,然后返回包含输出的结构。保持模型中所有硬件依赖项的整洁。
不要相信Mathworks的营销人员。他们想让你在Simulink中做所有的事情。不要误会我的意思,对于某些类型的事情,它是一个很棒的工具。但是对于你不能在模型中做的事情(比如hello world),他们建议使用“遗留代码工具”,就好像任何不是模型的东西都是“完全老式的”。将您的模型限制为控制循环和信号流-它对此很好-它会很好。
发布于 2010-06-08 04:23:48
逻辑操作是否与电机控制相互作用,或者它们只是无关的操作?互动的程度可以帮助做出决定。
如果它们是不相关的,那么为了可维护性,最好将它们排除在模型之外。然后,您可以更新逻辑,而不必为整个SimuLink模型重新生成C。出现回归问题的可能性会更小。
如果它们与模型相关或与模型交互,那么当然可以将它们保留在模型中,这样您就不会将不兼容的版本链接到构建中。
https://stackoverflow.com/questions/2992797
复制相似问题