d2c PID-Conversion

6 次查看(过去 30 天)
Christoph Fleischmann
Christoph Fleischmann about 13 hours 前
评论: Walter Roberson about 4 hours 前
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?

回答(1 个)

Walter Roberson
Walter Roberson about 4 hours 前
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.
  1 个评论
Walter Roberson
Walter Roberson about 4 hours 前
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.

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by