不是很理解为什么会有跳变,PID本身是确定性算法,给什么输入就给什么输出,不过有的PID算法依赖历史值需要多保存几个变量.也就是你3L的这个手动值,需要在运行过程中不断记录前值,切换的时候向PID填充这个记录的值而不是清零或者什么初始化的值.
从这个角度上来说,只要保证手动自动切换的时候PID算法(不管你是一条指令还是一串还是一个块什么的)的输入不变就行了.
实际上常规来说一般PID算法程序是需要一直运行的,所以不是很懂你这个手动自动切换为啥会导致PID输出跳变,一般而言即使是关掉输出也是通过控制PID输入值(比如关到0,因为有I值存在不会导致输出直接拉到0)这样只要保证PID程序的输入值是连续变化的就不可能导致跳变.但是PID输出后的值最好是不要加任何控制的否则一个完整的闭环控制引入了其他变量,理论知识又不到位的情况下,一般人是搞不定的.
PID就是外部命令输入,闭环反馈,参数,输出直接到执行器,除了潜在的数据格式转换和处理以外,不需要其他任何处理.