使用 pid 指令向?qū)Ь幊虝r,指令向?qū)詣诱{(diào)用 pid 指令,并且編寫外圍的控制變量標準化換算、定時采樣等功能。用戶在使用 pid 指令向?qū)r,需要在用戶程序中用 sm0.0 調(diào)用指令向?qū)傻淖映绦颍ㄈ?pidx_init 子程序)。pid 向?qū)Э梢陨蓭ё詣?手動切換功能的子程序,這個子程序使用一個數(shù)字量點為“1”、“0”的狀態(tài)來控制是否投入 pid 自動控制。
到目前為止(step 7-micro/win v4.0 sp5),使用 pid 向?qū)傻淖映绦驎r,由于用戶程序不能直接使用 pid 指令,它的無擾切換能力因為隔了外殼子程序,所以受到了局限。如果對無擾切換要求比較嚴格,需要另外編一些程序加以處理。
考察如下 pid 控制子程序。
圖 1. pid 向?qū)傻闹噶?br>圖中:
a.過程反饋量
b.設定值,實數(shù)
c.自動/手動控制,“1”=自動,“0”=手動
d.手動控制輸出值,0.0 - 1.0 之間的一個實數(shù)
e.pid 控制輸出值
要實現(xiàn)無擾動切換,必須:
.在從自動向手動切換時,使手動輸出值(vd2004)等于當前的實際控制輸出值;
.在從手動向自動切換使,使設定值相當于當前的過程反饋值。
為此,可編寫類似下圖所示的程序,放在 pid 控制子程序之前:
圖 2. 無擾切換處理程序
圖中:
a.自動/手動切換控制點
b.從自動向手動切換時,使手動輸出值等于實際當前值
c.從手動向自動切換時,把當前反饋量換算為相應的給定值
上述程序中的 scale_i_to_r 就是量程變換指令庫中的子程序。這是為了解決過程反饋與設定值之間的換算問題。用戶也可以自己編程換算,或者根據(jù)反饋與給定的取值范圍決定是否需要換算。
此段程序適用于 step 7-micro/win v4.0 sp5 及以前版本,僅供參考,如果在實際項目中使用,上述程序未必一定適用。用戶需要根據(jù)實際工藝決定自己的編程思路。