2次遅れ系にP制御、PI制御、PD制御入力を適用したシステムへのステップ応答

制御対象(2次遅れ系)の定義

t = 0:0.01:3
G=10/((s+5)*(s+2)) #2次遅れ系
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C)))) #Cは未定義 GC:1巡伝達関数

制御なしのステップ入力だと0.1に収束するところを制御入力を入れて1に近づける

P制御

clf 
C=1
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),1)
C=10 
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),2)
C=100 
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),3)
legend(["Kp=1" "Kp=10" "Kp=100"])

ゲインKp→大で定常偏差少なくなるも振動し始める

I制御

clf 
C=1/%s
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),1)
C=1/(2*%s) 
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),2)
C=1/(0.5*%s)
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),3)
C=1/(0.1*%s)
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),4)
legend(["Ti=1" "Ti=2" "Ti=0.5" "Ti=0.1"])

定常偏差が改善
積分時間Ti→短で応答速度早くなるも振動し始める

PI制御(Kp=1 固定)

clf 
C=1+1/(1*%s)
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),1)
C=1+1/(3*%s)
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),2)
C=1+1/(0.1*%s)
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),3)
legend(["Ti=1" "Ti=3" "Ti=0.1"])

ゲインKpとの連携で目標値への追従性能を改善

D制御
微分時間Td=0.1で固定

clf 
C=1+0.1*%s
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),1)
C=10*(1+0.1*%s) 
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),2)
C=100*(1+0.1*%s)
plot2d(t,csim("step",t,syslin("c",G*C/(1+G*C))),3)
legend(["Kp=1" "Kp=10" "Kp=100"])

ゲインKp→大の際の振動を吸収
但しKp→大でシステム入力過大となる危険