您好!
我想使用 CLA 实现3个 PI 环路。 循环是顺序的、第一个循环的输出是输入到第二个循环、第二个循环的输出是输入到第三个循环。
我创建了3个 DCL_PI_CLA 实例、并使用每个循环的值初始化所有实例
问题1:
我可以 在一个任务中将函数"DCL_runPI_L1"调用3次吗? 还是应该有3个不同的任务任务任务任务1、任务2和任务3? 我已经尝试过这两种方法、但我只能看到第一个循环在使用 uk1时根据 rk1中的变化改变其值。 uk2和 uk3最初为零、然后直接跳转到1 (当 rk1发生更改时)、之后完全不会更改。 uk1逐渐变化并达到1。
uk1 = DCL_runPI_L1 (&pi1、rk1、yk1);
uk2 = DCL_runPI_L1 (&Pi2、RK2、yk2);
uk3 = DCL_runPI_L1 (&PI3、rk3、yk3);
问题2:
我希望它们根据 EPWM2模块以一定的频率运行 CLA、因此我将触发源定义如下
CLA_setTriggerSource (CLA_task_1、CLA_TRIGGER_EPWM2INT);
CLA_setTriggerSource (CLA_task_2、CLA_TRIGGER_EPWM2INT);
CLA_setTriggerSource (CLA_task_3、CLA_TRIGGER_EPWM2INT);
是否有办法在第一个环路完成时触发第二个环路、并在第一个环路完成时类似地触发第三个环路?
问题3:
即使 CLA 正在计算并且我可以在观察窗口中看到 uk1值发生变化、调试窗口显示 CLA 被暂停。 它应该是这样吗?


如果我按下运行按钮、控制台中会出现以下错误

问题4:

是否有单独的 DCL_PI_L1架构图? 此图中未找到 L1函数代码中使用的一些变量、例如 i6。 我正在尝试找到我需要分配积分器增益的变量、该增益将与之前的积分器输出相乘。
积分器输出+=增益*上一个积分器输出
其中先前积分器输出=误差* Ki (误差= rk - YK)
您能否给我指出我应该为其分配此"增益"值的变量? 它是 i6、i10还是其他东西?
此致、
Rashmitha

