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.

[参考译文] CCS/TMS320F2.802万:TMS320F2.802万关于2P2Z函数的问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/585328/ccs-tms320f28020-tms320f28020-question-about-2p2z-function

部件号:TMS320F2.802万

工具/软件:Code Composer Studio

问题描述:

消息信息
55 AA 00 00 00 00 00 00 00 02 FB 95 00 01 CD 1C 42 5B 00 6E 31 9D 05 04 00 00 00 C8 00 66 66 FF 37

1.I使用TMS320F2.802万,频率为50m,我称之为CNTL_2P2Z.ASM函数。

2.接通PCB电源后,我发现2P2Z操作结果错误是一个很好的值,不在设置的最大值和最小值之间。

3.进行实验1.设置程序长度400,从地图视图中设置实际长度(160),设置DataRAM长度B00,
从地图查看的实际长度(65)。 然后,2P2Z_1计算结果是设置范围(0万C0-00666666)66.6666万)
,但2P2Z_2值不在的范围内,作为固定值(415.8465万A),它超出了范围。

4.进行实验2.设置程序长度800,从地图视图中设置实际长度(160),设置DataRAM长度800,
从地图查看的实际长度(65)。 然后,2P2Z_2计算将产生范围的设置(0万C0-00666666)66.6666万)
,但2P2Z_1值不在范围内,并且作为固定值(319D0504)超出范围。

5.程序图仅修改程序和DataRAM CMD文件的长度,其它位置不做任何更改。

6.信息读数:(55 AA)开始信息---(00 00 00 00)-参考值
                         (00 02 FB 95) 2P2Z - 2个输入中的2个,(00 01 CD 1C) 2P2Z - 1个输入
                               (42 5B 00 6E)旗帜,无实际意义
                               (31 9D 05 04) 2P2Z - 2输出,(00 01 CD 1C) 2P2Z - 1输出

7.您能告诉我如何使2P2Z-1和2P2Z-2同时成为正常输出吗? 我的问题在哪里?
 
10.如何正确分配程序和DataRAM的大小,是否需要此文档或通知?

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

    如果我理解正确,您将通过串行链接下载程序和初始化的数据到内部RAM并运行程序。 我看到系数和限制值已在代码中初始化,但我看不到内部状态的初始化位置。 可能是这些在您运行代码时产生了意外的输出。 您能否检查您是否正确设置了代码中的2P2Z vars结构-包括引用,反馈和两个延迟行? 我建议在2P2Z呼叫之前设置断点,并验证这些数据是否正确。

    如果事先知道代码和数据段的大小,则只需在链接程序文件中分配足够的内存。 请记住,链接程序文件以16位字指定内存大小。 我不清楚为什么代码和数据大小连接到2P2Z操作,除非未初始化的数据采用之前加载的值。

    此致,

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

    尊敬的Richard:

    好的,谢谢。

    请检查地图的文件。

    “CNTL_2P2Z_CoefStrut1.I_MIN”的含义是什么?

    如何使用关于CNTL_2P2Z_CoefStrut1.I_MIN的此函数?

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

    尊敬的Roy:

    系数"I_MIN"用于允许内部控制变量具有负值,即使控制器输出饱和至零的下限。  这可防止振荡的形成,并允许控制器输出在零稳态上收敛。  以下是库用户指南中的说明:

    "I_satmin是存储输出历史记录时用于饱和控制努力下限的值。 这使历史记录的值具有负值,有助于避免在无负载的情况下输出振荡。 用户可以指定自己的值,但建议使用_iQ24 (-Q24 0.9)。""

    例如,如果您正在驱动PWM占空比,通常您希望控制变量u (k)的下限为零。  但是,如果不允许进入递归路径的数据变为负值,则库中使用的2P2Z控制器结构将无法正常运行。  因此,递归下部夹具有不同的结构元素。

    此致,

    Richard