d2c PID-Conversion

2 次查看(过去 30 天)
Hi,
I'm trying to convert a discrete-time PID-controller to a continuous-time PID using the d2c function.
c_discrete = pid(4.406,0.0114,0.0112,0,0.0050) %Kp, Ki, Kd, Tf, Ts
c_continuous = d2c(c_discrete)
But I keep getting the following Error:
The "d2c" conversion failed because the result cannot be expressed as a PID controller.
Does anyone have an Idea, where my mistake is?

采纳的回答

Walter Roberson
Walter Roberson 2024-7-22
That error is given when Tf < Ts, and apparently exists in order to avoid getting complex-valued outputs.
Your Tf is 0, certainly less than Ts.
Example with Tf > Ts
c_discrete = pid(4.406,0.0114,0.0112,0+0.01,0.0050) %Kp, Ki, Kd, Tf, Ts
c_discrete = Ts 1 Kp + Ki * ------ + Kd * ----------- z-1 Tf+Ts/(z-1) with Kp = 4.41, Ki = 0.0114, Kd = 0.0112, Tf = 0.01, Ts = 0.005 Sample time: 0.005 seconds Discrete-time PIDF controller in parallel form.
c_continuous = d2c(c_discrete)
c_continuous = 1 s Kp + Ki * --- + Kd * -------- s Tf*s+1 with Kp = 4.41, Ki = 0.0114, Kd = 0.00808, Tf = 0.00721 Continuous-time PIDF controller in parallel form.
  2 个评论
Walter Roberson
Walter Roberson 2024-7-22
c_discrete = pid(4.406,0.0114,0.0112,0,0.0050) %Kp, Ki, Kd, Tf, Ts
c_discrete = Ts z-1 Kp + Ki * ------ + Kd * ------ z-1 Ts with Kp = 4.41, Ki = 0.0114, Kd = 0.0112, Ts = 0.005 Sample time: 0.005 seconds Discrete-time PID controller in parallel form.
c_continuous = d2c(c_discrete, d2cOptions(method='matched'))
Error using DynamicSystem/d2c (line 108)
The "matched" method of the "d2c" command cannot be used for models with negative real zeros with odd multiplicity.
Christoph Fleischmann
Hi Walter,
thanks a lot for your Help.
Problem solved, System is working.
Greetings
Christoph

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 PID Controller Tuning 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by