主题中讨论的其他器件:C2000WARE
大家好、如何将 Simulink 中的数字控制库用于 C2000 F28388D 微控制器? 具体而言、我想使用 PID 控制器和 REFGEN 函数。 这些函数要求指针变量和结构作为参数。 到目前为止、我已经尝试将函数与 coder.不透明/Coder.ceval Matlab Coder 命令和 C 函数调用方块集成在一起。 但总是有错误、表明变量 rgen 不存在。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、如何将 Simulink 中的数字控制库用于 C2000 F28388D 微控制器? 具体而言、我想使用 PID 控制器和 REFGEN 函数。 这些函数要求指针变量和结构作为参数。 到目前为止、我已经尝试将函数与 coder.不透明/Coder.ceval Matlab Coder 命令和 C 函数调用方块集成在一起。 但总是有错误、表明变量 rgen 不存在。
尊敬的 Maximilian:
Simulink 块 未针对代码生成进行特别优化、与 使用 DCL 中的代码相比、执行周期计数会更高。 如果要使用 DCL 中的优化代码、可以使用 Simulink 中的 C 函数块来调用库函数。 您可以在 MathWorks 论坛上就类似主题进行讨论时参阅此帖子。
韩文
e2e.ti.com/.../Motor_5F00_control.zip
您好、Han、
非常感谢你的帮助。 这些信息已经让我更进一步。 我尝试将 REFGEN 函数与 C 函数块集成。 在编译期间、现在会出现以下错误消息。
在 c 行:\ti\c2000\c2000ware_4_00_00\libraries\control\DCL\c28\include\DCL_REFGEN.h:477:error:223、function "_fsat"隐式声明
| p->ya =__fsat (p->Ampl * p->ya + p->yr、p->UMAX、p->Umin);
我不知道可以在哪个库中找到_fsat 函数。
我已将 Simulink 模型放入附件中。
也许您有更多好的建议。
尊敬的 Maximilian:
_fsat 是 C28x FPU 的 C 内在函数。 编译期间、此函数将被转换为 MAXF32和 MINF32指令。 内在函数 是 编译器中内置的内容、因此没有用于声明 这些函数的头文件。 您可以 在您在 MATLAB 中创建的 C 函数中添加函数声明、如下所示。 有关更多详细信息,请参阅 https://www.ti.com/lit/spru514上 C2000编译器用户指南的第7.6.2节 。
float __fsat (float val、float max、float min);
韩文
e2e.ti.com/.../refgen_5F00_Block.zip
您好、Han、
非常感谢您的支持。 我已经分享了 Simulink 模型的简化版本、其中仅包含 C 函数块。