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