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.

[参考译文] TIDA-010054:闭环导通电压

Guru**** 2564565 points
Other Parts Discussed in Thread: TMS320F280049C, SYSCONFIG

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

https://e2e.ti.com/support/tools/simulation-hardware-system-design-tools-group/sim-hw-system-design/f/simulation-hardware-system-design-tools-forum/1298574/tida-010054-closing-loop-on-voltage

器件型号:TIDA-010054
主题中讨论的其他器件:TMS320F280049CSysConfig

您好!

我正在尝试关闭我的项目的循环。  

我是否必须将 DAB_closeGvLoop 设置为1才能启用它(是否类似于 DAB_cleatTrip)?

谢谢!

文森特·博利厄-加农

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

    您好、Vincent:

    请遵循 第4.4.3章中实验3设计指南中的指南。 (https://www.ti.com/lit/ug/tidues0c/tidues0c.pdf)

    此致、

    安德烈

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

    尊敬的 Andreas:

    我遵循了指导原则、但我无法让它运行。

    每次它激活油箱跳闸标志并将清除跳闸设置回0时。

    我不明白、因为我在输入端只有40V 和0A。

    希望您能有所帮助、

    文森特·博利厄-加农

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

    您好、Vincent:

    正如您正确地说过的、您有一个初级侧箱、过流

    我建议按照设计指南的实验2进行操作、以检查是否所有保护功能都正常工作。

    否则、您也可以通过将 dab_user_settings.h 中的 DAB_Board_PROTECTION_IPRIM_TANK 设置为0来禁用此保护。

    此致、

    安德烈

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

    尊敬的 Andreas:

    我还有一个问题。 每次我运行程序时,Kp 和 Ki 的值都会返回到原始值。 我如何禁用它。

    此外、

    电路有任何问题。 IPRIM_TANK 的引脚电压为1.65V。 但即使输入为0V 和0A 时也会触发。 因此、我对它取消激活、但现在我有另一个跳闸标志。

    谢谢!

    文森特·博利厄-加农

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

    您好、Vincent:  
    KI 和 KP 在 dab_settings.h 文件中定义。 每次构建该文件时都会由 Power Suite GUI (main.syscfg)覆盖该文件。  
    您可以删除 main.syscfg 文件、并在 dab_settings.h 文件中手动更改值。 或者您在 dab_user_settings.h 中定义一个新的 Ki 和 Kp ,并在 dab.c 中初始化控制结构时使用这些新的定义:

    DCL_resetPI (&DAB_gi);
    DAB_gi。 KI = DAB_GI_KI;
    DAB_gi。 KP = DAB_GI_KP;
    DAB_gi。 UMAX = DAB_GI_UMAX;
    DAB_gi。 Umin = DAB_GI_Umin;
    DAB_gi。 IMAX = DAB_GI_IMAX;
    DAB_gi。 Imin = DAB_GI_Imin;

    跳闸是意外发生的。 以下几个要点可用于检查、其中可以提供问题的提示:

    1. 您是否使用 TI.com 上设计文件中所述的确切硬件?
      因此、IPRIM_Tank 已连接到正确的引脚 、可与设计指南中的表4-1进行比较。
    2. 测量本身是否工作正常?
      您可以向输入施加电压、并在"Expression"窗口中观察测量的电压
      您可以直接在分流器上施加电流并检查测量的电流是否正确。
    3. 电路板保护 编码在 DAB_HAL_seupBoardProtection ()为 dab_hal.c
      能否检查 DAB_IPRIM_TRIP_LIMIT 和 DAB_IPRIM_MAX_SENSE 的值? 如果跳变限制设置为高于最大检测值、则可能会发生跳变、即使在0A 时也是如此。  
    4. 您可以 使用 CCS Debug 视图中的"Registers"选项卡开始查看寄存器。  例如、槽路过流 由 CMPSS 5进行监控。
      因此、您可以查看存储在 DACLVALA 和 DACHVALA 中的比较值 。 有关 CMPSS 子系统工作原理的详细说明、请参阅 TMS320F280049C 技术参考手册: https://www.ti.com/lit/ug/sprui33g/sprui33g.pd

    此致、

    安德烈

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

    尊敬的 Andreas:

    我进行了更改(在 dab_user_settings.h 中定义一个新的 KI 和 KP、并在 DAB.c 中初始化控制结构时使用这些新的定义)这似乎可以正常工作、但是是否有办法验证该实验是否正在运行 KI 和 KP 的值?

    此外、我在闭环中进行了一些测试、结果很好。 我想更改相移的最小额值。 事实上,性价比很高

    #define DAB_GI_UMAX (float32_t) 0.125 pu = 45度
    #define DAB_GI_Umin (float32_t) 0.001 pu = 0.36度

    我可以将 GI_Umin 放置在更接近0还是0的位置吗?

    因此、对于相同的负载和相同的输入、我可以达到较低的电压输出。

    感谢您的帮助、

    文森特·博利厄-加农

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

    尊敬的 Andreas:

    我正在尝试使用 IV 曲线来控制转换器。

    我不确定如何从 PU 值切换到标准值?

    因为我想在控制器中使用 pu、但对于 IV 曲线、我需要标准值。

    谢谢!

    文森特·博利厄-加农

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

    尊敬的 Andreas:

    如何使用这里的指数? 我真的需要使用 pow 吗?如果可以、我可以直接在计算中使用它吗?

    谢谢!

    文森特·博利厄-加农

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

    这些错误代码可能有助于

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

    您好、Vincent:

    1.您可以在表达式窗口中查看控制结构 dab_gi、检查 Kp 和 Ki 的值

    2. pu 值的计算方式如下:以 pu 为单位的电压=测得的电压/最大电压。
    您可以在 SysConfig GUI 中看到的最大电压:  


    例如、对于输出电压、最大检测电压为636V。 如果输出为500V、则等于500/636 =  0.786pu

    3.是的,你需要使用 pow()函数,你应该自己直接使用它。 如果尚未包含 math.h 标头、则可能需要包含该标头。
    如果这些是固定值、在运行时不需要更改、我建议预先计算它们。

    4.我 对浮点误差没有直接的修正。 首先要检查的是、所有数据类型都与函数 输入数据类型一致。 如果不匹配,则需要使用强制转换运算符。 若要进行调试、 从错误来源开始、先执行一个操作、查看是否生成了该操作、然后添加下一个操作、直到遇到错误。

    希望这对您有所帮助。

    此致、

    安德烈

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

    尊敬的 Andreas:

    4.我认为 th exp()和 pow()字体是个问题。 Somone 遇到同样的问题(https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/510269/behavior-of-power-function)。 该字体给出了一个双精度值、因此它无法放入"float32_t"中。 但我仍然不知道如何解决。

    我不知道是否包含 math.h 标题? 从何处可以找到它?

    2、谢谢你,这真的可以帮助我。

    1.我在那里看,但可能我没有使用 gobal 变量选项添加。 (我还使用了 lab.js)

    还有一个问题。 如何使用 dab.h 中 dab.c 定义的值来计算我的 IV 曲线?

    感谢您的大力支持、

    文森特·博利厄-加农

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

    您好、Vincent:

    4. 我认为你可以使用一个转换运算符所以(float32_t) pow (...) 将输出转换为 float32_t 类型。

    3.头文件始终包含在文件顶部。 它应位于 dab.h 中  

    1.您只能 在运行时的调试视图中查看 dab_gi 结构、因此如果您的代码未编译且未运行、则无法检查它是否采用了正确的 kp 和 ki 值。

    在您共享的屏幕截图中、编译器未找到您的变量。 你在哪里罚他们?  

    此致、

    安德烈

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

    尊敬的 Andreas:

    在 dab.c 中。

    我尝试在 dab.h 中使用它们

    此致、

    文森特·博利厄-加农

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

    您好、Vincent:

    您是否也在 dab.h 中通过 extern 命令引用它们。 如果 y 在 DAB.c 中定义并在 DAB.h 中使用、这是必要的、因为 DAB.c 不包含在 DAB.h 中。 请参阅以下示例:


    关于 IV 曲线、我认为您可以在初始化中计算该值并将其存储在查找表中。

    此致、

    安德烈

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

    尊敬的 Andreas:

    我创建了与您给我的示例类似的变量、但它似乎有错误。

    希望这些屏幕截图能有所帮助。

    我的 IV 曲线使用 Isec 值实时计算 Vsec 基准。

    这就是为什么我需要在控制环路中执行 calcul。

    此致、

    文森特·博利厄-加农

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

    您好、Vincent:

    1.关于未解析的符号。 您在 dab.c 中定义了它们 、并使用 extern 命令将它们包含在 dab.h 中。 两者都是必要的。
    有关如何消除此错误的更多信息、请访问: https://software-dl.ti.com/ccs/esd/documents/sdto_ccs_build-errors.html#error-unresolved-symbols-remain (链接器诊断下页面的中间)。

    2.关于 IV 曲线:我们的控制环路运行频率是100kHz。 可能没有足够的时间在10us 内计算这个值。 您也可以使用以10kHz 运行的 ISR 2来计算曲线。

    此致、

    安德烈

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

    尊敬的 Andreas:

    1、我看了看。 但它实际上并没有帮助。 在评论618行时没有任何错误。 我以为问题出在日志上。 但是在删除了几乎所有内容后,仍然有相同的错误。 问题可能来自"DAB_vSecRefEMULATION"。 它在 DAB.h 中使用前需要一个初始值吗?

    2、我不明白。 DAB.c 中的 calcul 只制作一次正确(我只需要它们一次用于我的曲线)? dab.h 中只有 IV 曲线方程。

    如果您认为有更好的解决方案、我想试试。 你可以详细说明一下,我不明白如何使用 ISR2和它如何会比实际的解决方案更好?

    谢谢!

    文森特·博利厄-加农

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

    您好、Vincent:

    1.是的,每个值都应该被初始化,但我不确定这是否会解决这个错误。

    2、我不是100%确定 我是否理解,你要如何实施 IV 曲线.
    您在前面提到过、您需要实时计算它。
    我当时想、一旦将该值存储在查找表中、然后在控制环路中选定、就会计算该值。  

    ISR2是 dab_main.c 的一部分。它用于将电压和电流的 PU 值转换为伏特和安培。 此过程以10kHz 的频率执行、可用于无需在每个 PWM 周期完成的计算。

    此致、

    安德烈

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

    尊敬的 Andreas:

    1.它不能解决此错误。 我不知道该怎么说。 问题来自 IV 曲线等式、因为当我添加注释时、编译工作正常。 也许这是我编写方程的方法? 我需要将 dab.c 更改为 dab.h?

    我是否可以将计算放在其他位置、在这里可以连续进行计算?

    2.我想使用电流测量作为我的公式的输入。 输出将是控制器中用于设置点的电压基准。

    我可以做一个查找表,但我不知道如何和它似乎更复杂的编程这样的事情。

    此致、

    文森特·博利厄-加农

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

    尊敬的 Andreas:

    由于不喜欢 DAB.c、我可以使用这个地方进行只需执行一次的计算?

    此致、

    文森特·博利厄-加农

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

    您好、Vincent:
     如果代码执行一次或更频繁、则不取决于代码的放置位置。 这取决于 DAB.c 或 dab.h 中定义的函数的调用位置。
    我们有两个 ISR、它们处理时间关键函数。 您可以在 dab_main.c 文件中看到它们。 表单中的所有函数都被调用。


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

    尊敬的 Andreas:

    我仍在尝试解决错误。

    如果我将 IV 曲线的公式放在 ISR 中、是否能够像我打算的那样使用它? 它能够实时跟随 IV 曲线吗? 以下是一些截图:

    此外:

    我想更改相移的最小额值。 实际值是...

    #define DAB_GI_UMAX (float32_t) 0.125 pu = 45度
    #define DAB_GI_Umin (float32_t) 0.001 pu = 0.36度

    将 GI_Umin 靠近0还是置于0是安全的?

    谢谢! 您的支持真的可以帮助我

    文森特·博利厄-加农

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

    您好、Vincent:  
    如果您公开 ISR 中的代码、它将以 ISR 频率运行。 ISR2以10kHz 的频率运行。 该速度应该足够快、足以计算 IV 曲线。
    是的、您可以自由调节相移的限值。 负相移将导致负功率流。

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

    尊敬的 Andreas:

    是否有办法将我的计算放入 ISR 中并将其调用为在 DAB.h 中使用?

    此外、您是否知道导致先前错误的原因? 是因为我需要使用一种特殊的方法在 DAB.h 中编写公式吗?

    感谢你的帮助。

    文森特·博利厄-加农

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

    您好、Vincent:

    请仔细查看现有代码。 dab.h 中定义的许多函数都在 ISR 中调用。 例如 ISR1调用 DAB_runISR1 ()。 DAB_runISR1 ()在 dab.h 中定义  

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

    您好、Vincent:
    如果你将所有代码放置在 ISR 中、它将不起作用。 只有时间关键部分可以位于 ISR 中。 MCU 的速度非常快、足以每10us 执行一次所有代码。 只有强制计算应该在 ISR 中。  变量的所有定义和初始化都应在中的初始化函数中完成、该函数在 stat up 期间仅调用一次。

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

    Andreas、您好

    我理解、但我不确定 变量的定义和初始化在哪里?

    我可以将它们放在 dab.c 或 DAB_USER_SETTINGS 中吗? 我应该在 dab_main.c 中创建一个新字体并调用一次吗?

    谢谢!

    文森特·博利厄-加农

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

    您好、Vincent:

    最后、您在何处执行初始化并不重要。 清理方法是创建一个单独的函数 、并在 main 的开头调用它一次。 就像  DAB_initGlobalVariables()中的操作一样。

    此致、

    安德烈

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

    尊敬的 Andreas:

    我听从了您的意见。  变量的所有定义和初始化都在 DAB_initGlobalVariables()中完成。

    但现在我有人说、该值是在其值设置之前使用的。 我可以做些什么来先设置该值?

    谢谢!

    文森特·博利厄-加农

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

    尊敬的 Andreas:

    我先前的评论中的警告是否是我的声明引起的(第173至181行)?

    是否可以调用 DAB_initGlobalVariables()中所做的声明?

    谢谢!

    文森特·博利厄-加农

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

    您好、Vincent:
    您需要为第184行中使用的变量提供一个值。  

    此致、

    安德烈

    亚斯