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.

[参考译文] TMS320F2.8379万D:将Simulink嵌入式编码器生成的代码集成到现有CCS项目中。

Guru**** 2589275 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1096072/tms320f28379d-integrating-simulink-embedded-coder-generated-code-into-existing-ccs-project

部件号:TMS320F2.8379万D
线程中讨论的其他部件:TMS320F28.0025万sysconfigC2000WARE

我们正在为整流器的数字控制进行基于模型的设计。 建模和模拟在Simulink中完成,然后使用Simulink嵌入式编码器生成代码。 帧工作代码主要是使用sysconfig工具生成的。 所有控制外围设备(如ADC,ePWM等  )以及通信接口均已使用最新版本的sysconfig工具进行设置。 以前我们一直使用没有CLA的TMS320F28.0025万控制器。 在这种情况下,嵌入式编码器生成的文件的集成非常简单。 我们仅在现有的CCS项目中复制了三个生成的文件,即model_name.C,model_name.h和rtwtypes.h文件。 我们只需在精确计时时调用model step函数即可实现所需的控制循环执行。  

我们只是迁移到Delfino系列,以利用增强的处理能力和CLA。 同样,我们使用sysconfig工具设置了所有外围设备。 还使用sysconfig工具设置了CLA任务和中断。 我已经完成了一些基本测试,以验证CLA是否已正确设置以执行代码。 C2000Academy的CLA深度潜水子模块很有帮助。 我很难确定将嵌入式编码器生成的CLA代码整合到我们的CCS项目中的正确过程/步骤。 我已经浏览过Mathworks文档"使用控制法律加速器(CLA)",但我不清楚将生成的文件合并到现有CCS项目的过程。 如果有人能在以下几点上提供指导,那将是很好的选择:

1-在CCS项目中配置所有外设,然后将嵌入式编码器文件集成到其中,或者从嵌入式编码器生成项目,然后向其中添加外设配置和自定义代码,这种方法是否正确? 我们熟悉并熟悉前一种方法,即将生成的文件集成到现有项目中。

2-请提供这两种方法的准则。 如果第一种方法可行,请指导哪些生成的文件必须添加到项目中,哪些文件可以忽略,例如,sysconfig工具已经生成了许多外围设备配置文件。  

3-有关此主题的任何其他技术文献,它们将有助于Simulink Embedded Coder中的CLA代码配置以及与C28x代码的接口。

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

    Asad,

    sysconfig功能是C2000Ware SDK发行版中的新功能,到目前为止,我们尚未集成sysconfig生成的代码和Simulink生成的代码。 让我与我们的本地团队讨论一下,然后在一两天内再与您联系。

    谢谢,此致,

    Santosh

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

    即使它是基于driverlib的项目,也应该有一种方法只将控制算法代码从Simulink导出到现有CCS项目中。 期待您的指导。

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

    Asad,

    我们没有做过类似的事情。 我们正在与MathWorks工程师核实他们的首选方法。 当我们收到他们的回复时,我将向您提供最新信息。

    谢谢,此致,

    Santosh

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

    您好,Asad,

    1-在CCS项目中配置所有外设,然后将嵌入式编码器文件集成到其中,或者从嵌入式编码器生成项目,然后向其中添加外设配置和自定义代码,这种方法是否正确? 我们熟悉并熟悉前一种方法,即将生成的文件集成到现有项目中。

    2-请提供这两种方法的准则。 如果第一种方法可行,请指导哪些生成的文件必须添加到项目中,哪些文件可以忽略,例如,sysconfig工具已经生成了许多外围设备配置文件。

    可以,您可以使用CCS项目遵循外设配置方法,然后集成从模型生成的算法代码以获得完整的应用程序。 因为您可以轻松地执行此操作,所以您可以继续执行此操作。

    对于第一种方法, 您应该选取使用ModelName.c和modelName.h生成的文件进行集成,以及从子系统或参考模型生成的任何其他单独的算法特定文件。如果您已完成所有外围设备配置,并且您启动并运行了调度程序以调用函数,则这些文件就足够了 。

    如果您想进行第二种方法,则最好使用Simulink支持的外设块,并仅对Simulink不支持的外设功能使用自定义代码,以便直接在Simulink中与自定义代码工作流集成。  如何使用Simulink“自定义代码”块测量TI C2000上的代码执行时间? (mathworks.com)

    3-有关此主题的任何其他技术文献,它们将有助于Simulink Embedded Coder中的CLA代码配置以及与C28x代码的接口。

    对于CLA,请使用以下文档页作为参考,其中解释了您必须考虑使用相同内容的所有详细信息

    https://in.mathworks.com/help/supportpkg/texasinstrumentsc2000/ug/CLA-Task-Subsystem.html 

    https://in.mathworks.com/help/supportpkg/texasinstrumentsc2000/ug/using-the-control-law-accelerator-cla.html 

    希望这能回答您的问题。

    谢谢!

    Aditya

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

    我已经浏览了参考文档。 让我尝试实施第一种方法。 我谨要求回答这方面的以下问题:

    是否有禁止生成外设文件的选项,以便只生成控制算法代码文件?

    请确认以下理解是否正确:

    我知道CLA代码接口与非CLA代码相似。 我需要通过 调度程序调用ModelName_initialize()和ModelName_step ()函数。 我认为区别在于CLA功能输入和输出。 对于非CLA代码,有用于更新模型输入和读取输入的输入和输出结构RTU和RTY。 但是,对于CLA功能,输入和输出需要使用CPU访问CLA消息RAM,使用CLA访问CPU消息RAM (使用Simulink中的数据存储内存块分配)。 所以我需要写 和读这些变量?

    我还注意到来自嵌入式编码器的CLA初始化代码正在设置CLA消息RAM和数据RAM。 我在CCS项目中配置了CLA。 我认为我需要删除该代码以避免重复。

    非常感谢您的支持。

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

    您好,Asad,

    用于禁止生成外围设备文件的选项

    如果不使用任何驱动程序块,则不会看到任何特定于驱动程序的文件,这些文件包括在ModelName.c文件中,但会有其他文件的名称是从MW_C28x_开始生成的,这些文件是特定于调度程序和外设时钟初始化配置的。 您只需使用 ModelName.c和.h文件中的函数。

    CLA代码接口

    是的,对于CLA,您需要集成CLS子系统生成的源文件和头文件。 这将定义特定于CLA消息RAM的变量以及CLA函数。 您可以将其与CCS项目集成以继续。

    谢谢!

    Aditya

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

    您好,Aditya,

      还有一个相关的问题。 我们正在维护两个单独的Simulink项目以生成代码。  所有生成的模型文件都具有与模型相关的名称,但“CLA_TASK_CLA”文件除外。 两种模型生成的代码具有相同的文件名。 问题是:

    1-How to resolve this same name conflict (如何解决此相同名称冲突)。 嵌入式代码生成中是否有任何设置为此文件提供自定义名称,或者我们是否需要在代码生成后手动处理此冲突。

    2-请告知建议的方法是什么? 是否可以从两个单独的Simulink项目(不同的人员在不同的控制子系统上工作)生成代码,或者我们应该只执行一个项目? 我没有尝试将两个模型合并到一个项目中,但我认为这需要两个任务触发器和两个CLA子系统。 需要两个单独的CLA任务才能独立执行这两个任务。

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

    您好,Asad,

    1. 没有更改生成 的"CLA_TASK_CLA" 文件的名称的规定。 您必须在代码生成后对其进行更改并手动集成。
    2. 这取决于多人处理的逻辑(CLA触发源,CLA子系统的内容以及CPU和CLA之间共享的数据)。 最终,您可能需要建立自己的代码生成和集成流程,因为您可能需要通过多次迭代来获取最终算法。  

    谢谢!

    Aditya

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

    您好,Aditya,

      感谢您回答最后的问题。 我还有几个问题。  

    1-第一个问题与 __TMS320C28XX_CLA__定义有关。 我认为我需要在代码中的某个点定义这一点,因为CLA子系统功能不是使用我当前的项目设置构建/定义的。

    请指导如何正确定义。 如果我全局定义它,则编译器会抛出许多错误。

    2-第二个问题与编译时间错误有关。 此错误出现在我的项目中(已在现有项目中手动导入了模型相关文件) 以及嵌入式编码器生成的项目中。 这在下面的屏幕截图中显示:

    请就以上两点提供指导。

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

    您好,Aditya,

     我在以下帖子中找到了第一个问题的答案: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1055510/tms320f280049c-question-about-__tms320c28xx_cla__?tisearch=e2e-sitesearch&keymatch=__TMS320C28XX_CLA__# 。2000。</s>2000 105.551万28.0049万 

    我对第二个问题有一些线索:实际上,我们正在尝试将为C28x处理器开发的现有模型迁移到CLA任务。 我认为我们需要改变一些模糊之处,因为CLA不支持标准数学库。 我还注意到,生成的项目中包含了用于CLA代码的math.h库。 是否应该添加CLAmath.h? 请参阅是否有一些文档指导将代码从C28x迁移到CLA。

    /*
     * Trial License - for use to evaluate programs for possible purchase as
     * an end-user only.
     *
     * File: aux_grid_cla.c
     *
     * Code generated for Simulink model 'Aux_Grid'.
     *
     * Model version                  : 4.34
     * Simulink Coder version         : 9.7 (R2022a) 13-Nov-2021
     * C/C++ source code generated on : Mon May  9 14:51:42 2022
     *
     * Target selection: ert.tlc
     * Embedded hardware selection: Texas Instruments->C2000
     * Code generation objectives:
     *    1. Execution efficiency
     *    2. RAM efficiency
     * Validation result: Not run
     */
    
    #include "aux_grid_cla.h"
    #include "IQmathLib.h"
    #include <math.h>
    #include "rtwtypes.h"
    #include "multiword_types.h"
    #include "Aux_Grid_private.h"
    #include "cla_header.h"
    

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

    您好,Asad,

    CLAMath.h作为CLA_TASK_CLA文件的一部分添加。 要使用CLA特定的数学函数,您需要使用MATLAB函数块。 请参见示例c2.8035万pmsmfin_CLA。

    以下块使用CLA三角函数。

    c2.8035万pmsminf_CLA/FOC算法/扭矩控制算法/生成空间矢量/生成原始空间矢量/驻车转换

    要将代码从C28x迁移到CLA,需要确保使用CLA MAth函数而不是标准数学库函数。  

    谢谢!

    穆库尔

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

    您好,Mukul,

    非常感谢您的回复。

    代码生成似乎不包含任何检查以确保CLA子系统仅包含CLA支持的功能。 只要存在任何标准数学库函数,CLA子系统就会包括math.h库。 当CLA C编译器遇到标准数学库函数调用时,该问题会出现在项目编译阶段。

    您建议的解决方案是正确的,我们昨天学习并使用了这种方法来解决其中一个模型中的编译问题。  

    如果我的理解是正确的,那么这只是对Mathworks的一个建议,就是在CLA子系统块中加入一些检查,以便只有在没有不兼容性的情况下,代码生成才会成功。

    我想我们可以关闭这个线程。

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

    感谢Mukul,Aditya和Asad帮助解决问题。 我现在将关闭该线程。