发表于:2006-05-20 14:36:00
楼主
PID指令使用中一个不易查出的错误
关键点:PID指令的输入输出值必须与参数中设定的输入输出位数值一致。否则PID指令既不会报错,也不会停止运行,而是将超出部分除去。实际将导致不确定的结果。这种错误比较隐蔽,不易查出,需要特别注意。以下就是一个实际的例子。
一个客户在使用PID指令做如下闭环控制时出现问题。电机使用直流调速器调速,变频器和直流调速器的给定均由DA模块给出。
电机外接带接近开关的旋转码盘输入到CJ1M的内置IO,进行计数,并计算出电机的转速。码盘旋转一圈发出60个脉冲。
PLC对电机进行速度给定,并采集电机的速度反馈,在梯形图中使用PID指令进行速度调节。
控制过程当中,变频器控制的电机,均可准确的运行在给定的速度,控制性能良好。问题出现在主机的控制。当在0-80转/分的转速时,可人工整定出一套通用的PID参数,稳定控制电机的速度。当目标转速继续增大时,使用原来的参数,系统无法达到目标速度。针对该高速,可以整定出新的PID参数。但当使用该参数控制较低的目标值(0-80转/分)时,系统产生较大的振荡。在某一高转速的PID参数(如100转/分),甚至无法用于控制非常接近的转速(如103转/分)。
检查系统,未发现随着速度的提高,系统的特性有很大的改变。这意味着,整个系统的所有速度控制区域应该可以使用一套PID参数就能完成较为精确的控制。
PID的采样周期是750ms,转速的刷新时间是1s。把PID的采样周期缩短至100ms,没有明显的效果。
后来发现,用户的PID参数(见模拟程序)把输入和输出设置为13位,即0-8192。而实际的SV值和PV值范围是0-10000。经过做实验,发现当这两个参数与实际的输入输出不符合时,出现的情况与客户的情况十分相似。输出值MV会被钳制在某一个位置。故分析,很可能就是这个原因导致PID指令的非正常结果。
根据这个情况,建议客户将PID的采集的速度值经过SCL指令按0-8192标定后传入第一个操作数,控制的速度输出MV值也经过SCL指令标定后再放到DA中输出。用户实际做了这样的改变后,系统运行正常。
参加QQ群:24293170 ,即时发表你的观点,聆听高手的论坛.