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