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.

[参考译文] TMS320F28388D:使用 TI DCL 库函数的 C2000 Simulink

Guru**** 2584465 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1191940/tms320f28388d-c2000-simulink-using-ti-dcl-library-functions

器件型号:TMS320F28388D
主题中讨论的其他器件:C2000WARE

大家好、如何将 Simulink 中的数字控制库用于 C2000 F28388D 微控制器? 具体而言、我想使用 PID 控制器和 REFGEN 函数。 这些函数要求指针变量和结构作为参数。 到目前为止、我已经尝试将函数与 coder.不透明/Coder.ceval Matlab Coder 命令和 C 函数调用方块集成在一起。 但总是有错误、表明变量 rgen 不存在。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Maximilian:

    您可以使用{C2000ware Directory}\libraries\control\DCL\c28\models\DCL.slx 库文件中提供的 DCL Simulink 模型、使用 Simulink 进行仿真和生成代码。 这些是 Simulink 中 DCL 中使用的算法的一对一模型。

    韩文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Han、
    非常感谢您的回答。 在 DCL 用户指南的第4.7.1章中、Simulink 块不适用于代码生成。 我想找到一种方法、将 DCL 库的优化汇编器函数插入到使用 Simulink 生成的代码中。 我想添加 REFGEN 和 DLOG 函数以及其他函数。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Maximilian:

    Simulink 块 未针对代码生成进行特别优化、与  使用 DCL 中的代码相比、执行周期计数会更高。 如果要使用 DCL 中的优化代码、可以使用 Simulink 中的 C 函数块来调用库函数。 您可以在 MathWorks 论坛上就类似主题进行讨论时参阅此帖子。

    https://www.mathworks.com/matlabcentral/answers/777562-custom-c-code-with-embedded-coder-and-ti-c2000

    韩文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    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);

    韩文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Han、

    非常感谢您的快速回复。 我已将内在函数__fsat 函数添加到 C 函数块中,但错误仍然存在。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Maximilian:

    您能不能与 C 块共享 Simulink 文件的简化版本。 我需要对您的 具体案例进行进一步测试、以提供更详细的支持。 谢谢。

    韩文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../refgen_5F00_Block.zip

    您好、Han、

    非常感谢您的支持。 我已经分享了 Simulink 模型的简化版本、其中仅包含 C 函数块。