我不理解PID控制器的组成部分.让我们假设来自维基百科的这个伪代码:
previous_error = 0
integral = 0
start:
error = setpoint - measured_value
integral = integral + error*dt
derivative = (error - previous_error)/dt
output = Kp*error + Ki*integral + Kd*derivative
previous_error = error
wait(dt)
goto start
Run Code Online (Sandbox Code Playgroud)
积分在开始时设置为零.然后在循环中它整合了错误随着时间的推移.当我对测量值或设定值进行(正)变化时,误差将变为正值,积分将在整个时间内(从头开始)"吃掉"值.但我不明白的是,当误差稳定回零时,积分部分仍然会有一些值(随时间积分的误差),并且仍然会对控制器的输出值有所贡献,但它不应该.
请问有人解释一下吗?
我想做我自己的版本的wc(unix过滤器),但我有非ASCII字符的问题.我做了一个文本文件的HEX转储,发现这些字符占用多个字节,所以它们不适合char.有什么方法我怎么能从文件中读取这些字符并像C一样处理它们(所以我可以计算文件中的字符)?我一直在谷歌搜索并找到一些wchar_t类型,但没有任何简单的例子如何将它与文件一起使用.