不是很理解為什么會有跳變,PID本身是確定性算法,給什么輸入就給什么輸出,不過有的PID算法依賴歷史值需要多保存幾個(gè)變量.也就是你3L的這個(gè)手動值,需要在運(yùn)行過程中不斷記錄前值,切換的時(shí)候向PID填充這個(gè)記錄的值而不是清零或者什么初始化的值.
從這個(gè)角度上來說,只要保證手動自動切換的時(shí)候PID算法(不管你是一條指令還是一串還是一個(gè)塊什么的)的輸入不變就行了.
實(shí)際上常規(guī)來說一般PID算法程序是需要一直運(yùn)行的,所以不是很懂你這個(gè)手動自動切換為啥會導(dǎo)致PID輸出跳變,一般而言即使是關(guān)掉輸出也是通過控制PID輸入值(比如關(guān)到0,因?yàn)橛蠭值存在不會導(dǎo)致輸出直接拉到0)這樣只要保證PID程序的輸入值是連續(xù)變化的就不可能導(dǎo)致跳變.但是PID輸出后的值最好是不要加任何控制的否則一個(gè)完整的閉環(huán)控制引入了其他變量,理論知識又不到位的情況下,一般人是搞不定的.
PID就是外部命令輸入,閉環(huán)反饋,參數(shù),輸出直接到執(zhí)行器,除了潛在的數(shù)據(jù)格式轉(zhuǎn)換和處理以外,不需要其他任何處理.