技術文章
STEP7程序中為什么要用OB35調用PID塊
閱讀:1617 發布時間:2015-10-29 pidzui早是采用運放等電路器件實現的,是一個連續調節的過程;
但是數字電路里面要實現pid,就要進行“離散化",你可以查閱數字pid的相關資料。在大學自控專業的相關教材里面對此有詳細的理論公式推導。
在plc里面實現pid當然就是個數字pid,其中一個重要的因素是采樣時間,說的具體點,就是數字pid——在西門子plc里面就是fb41這個模塊需要定時調用!比如放在ob35里面,那么ob35(默認100ms)的執行周期就是數字pid的采樣時間,這個100ms是數字pid運算公式里面的一個重要參數!所以,把fb41放在ob1里面執行,表面看也是可以執行的,但運算結果其實是偏離了理論目標。由于ob1掃描周期不固定,所以結果很難預料。單說運行是可以的,但用OB35調用,可以有好的控制精度不是說非要作在OB35里,而是指從OB35調用主要是0B35以固定周期運行,數字化PID的采樣周期T必須是等間隔的,所以要用定時中斷來觸發。PID在定時中斷中執行是因為定時中斷準確,是以設定的周期執行的,除非有更高優先級的中斷同時發生.而主程序的執行周期不是定長的,在主程序中的定時器的精度也受掃描周期的影響.OB35中斷周期:按所設定的時間間隔產生中斷。即采樣周期: 常指在周期性的采樣系統中,當對一模擬量進行采樣時,兩次采樣之間的時間間隔。
原理上,PID 的調節節奏應該與其采樣周期一致,這是數學模型應與物理過程一致的要求。這也就是 FB41要在 OB35 中周期調用且 OB35 的周期要與 FB41采樣周期一致的原因。當然,在 OB1 或其他 FC、FB 中調用 FB41也是可以的,此時將 OB1 參數區中掃描周 期作為 FB41 的采樣周期。
FB 41 "CONT_C"
- 為了保證執行頻率一致,塊應當在循環中斷 OB (例如. OB35)中調用。
- "CYCLE" 參數對應的是掃描時間。必須將程序塊調用的間隔時間賦值在這里 ( 例如基于 OB35 的時間 )。
- 缺省狀態下為手動模式 (MAN_ON=true)。自動回路被中斷,在MAN參數下輸出控制值。
- 為了確保手自動的無擾切換,在手動模式下至少保證兩次塊調用的輸出時間。
- 當 CPU 重新啟動, 參數 "COM_RST" = true 將引導塊的執行。
- 參數 "COM_RST" 中斷PID控制器的執行。
- FB 42 "CONT_S"
- 為了保證執行頻率一致,塊應當在循環中斷 OB (例如. OB35) 中調用。
- "CYCLE" 參數對應的是掃描時間。必須將程序塊調用的間隔時間賦值在這里 ( 例如基于 OB35 的時間 )。
- 缺省狀態下為手動模式 (LMAN_ON=true)。
- 當 CPU 重新啟動, 參數 "COM_RST" = true 將引導塊的執行。
- 參數 "COM_RST" 中斷控制器的執行。
- 參數 "PULSE_TM" 和 "BREAK_TM" 被設置為 "CYCLE" 參數的整數倍。
- FB 43 "PULSEGEN"
- 為了保證執行頻率一致,塊應當在循環中斷 OB (例如. OB35) 中調用。
- 當 CPU 重新啟動, 參數 "COM_RST" = true 將引導塊的執行。
- "CYCLE" 參數對應的是掃描時間。必須將程序塊調用的間隔時間賦值在這里 ( 例如基于 OB35 的時間 )。
- FB43 可以和 FB41 結合使用, 但是與 FB42 功能不同。
- 參數 "PER_TM" 必須從 PID 控制器 (FB41) 上設置掃描時間。
- FB41 的調用時間通過時鐘分配器完成 (參考 FB43 在線幫助)。
注意:
由于 OB1 不能保證不變的循環時間,所以不能為 "CYCLE" 提供明確的參數。一旦 "CYCLE" 參數不能和掃描時間保持一致,那么基于時間的控制參數(例如. TI, TD)會看起來很快或者很慢。