北京龙鼎源科技有限公司BeijingDragonResourcesLimited第一章PID原理简介比如说一个压力调节,设定目标值PIT_SP=4MPa,现场反馈回来的实际压力值PIT_PV=3MPa,阀门开度为0%~100%。如果PID在自动调节状态下,由于实际压力值PIT_PV与目标值PIT_SP不相等,此时阀门开度会增加(此处PID分正反作用,此处是反作用。如果是正作用,则阀门开度减小),使现场的管道压力PIT_PV增加至与设定的压力值PIT_SP相等。变化过程中,现场反馈的实际压力值PIT_PV越接近目标值PIT_SP,阀门开度变化的速度越慢,直到相等时,阀门开度不变,否则开度一直增加至100%(正作用时,减小至0%)。第二章PID功能块简介打开Logix5000编程软件,添加一个rung,输入PID,即可出现PID功能块,如下图1,图2所示。图1图2北京龙鼎源科技有限公司BeijingDragonResourcesLimited2.1变量简介PID:PID结构体,此处定义了一个名为PIDA的结构体,结构体子变量说明见附件1。ProcessVariable:现场反馈过来的实际参数值,如温度,压力,流量等;Tieback:设定的牵引值,如手动情况下输入的阀门开度值;ControlVariable:控制输出值,如实际输出的阀门开度;PIDMasterLoop:PID主回路;Inholdbit:初始化保持位;Inholdvalue:初始化保持数据;Setpoint:显示设定的控制值,即目标值,如我需要将压力控制在4MPa;ProcessVariable:显示现场反馈过来的实际参数值,如温度,压力,流量等;Output:显示控制输出的阀门开度。2.2PID详细设置在2.1节已经说明了进入PID详细设置的方法,进入后如下图所示。注意:一下截图只是说明相应项的设置意义,具体设置值是具体情况而定。Tuning:图3北京龙鼎源科技有限公司BeijingDragonResourcesLimited图4Configuration:图5北京龙鼎源科技有限公司BeijingDragonResourcesLimited图6图7Alarm:北京龙鼎源科技有限公司BeijingDragonResourcesLimited图8Scaling:图9北京龙鼎源科技有限公司BeijingDragonResourcesLimited图102.3PID的无冲击启动图11北京龙鼎源科技有限公司BeijingDragonResourcesLimited图12图13北京龙鼎源科技有限公司BeijingDragonResourcesLimited第三章PID程序分析3.1手自动无扰切换简介总的来说,就是手自动相互切换时,输出的阀门开度值必须保持上一个状态的开度值。比如说现场的一个压力调节阀正常自动进行PID调节,输出的阀门开度为40%,现在由于特殊需要,需要将阀门开度开到一个特定值80%,此时切换到手动情况下,阀门的开度值必须保持自动状态下的最后的开度值40%,然后再手动输入特定的开度值80%。完成后,投入自动调节时,同样,阀门开度必须保持在手动状态下的开度值80%,然后从80%开始自动调节。3.2程序说明程序如下图14所示。图14实际上,只需要第0行(rung)就可以完成手自动无扰切换,但是为了与上位机连接,故将PID结构体里的变量赋给我们自定义的变量,这样上位机连我们自定义的变量名及对应得地址即可(同时这样做的意义还有就是方便做成一个完整的功能块)。那么第1行(rung)的意义:1.用自己定义的变量MA_Value用于手自动切换(结构体里的.SWM);2.用自己定义的变量KAIDU_M用于表示手动情况下输出的开度值(结构体里的.SO)。第2行(rung)的意义:由于第一行将KAIDU_M的值赋给了输出开度值(结构体里的.SO)。如果没有第二行,且此时由自动切换至手动,则此时的输出的阀门开度值为上一次手动输入的开度值,并不是上一次自动状态下的阀门开度值,这样便无法实现自动向手动的无扰切换了。要达到自动向手动的无扰切换,就必须使KAIDU_M的值实时跟随控制输出的阀门开度值Output。那么第2行的赋值就可实现。第3行(rung)的意义:用自己定义的变量PID_SP,PID_KP,PID_KI,PID_KD用于输入北京龙鼎源科技有限公司BeijingDragonResourcesLimited设置值,比例,积分,微分参数。第四章功能块制作图15对Add-On-Defined下的WRQH的设置定义如下图16所示。北京龙鼎源科技有限公司BeijingDragonResourcesLimited图16上图16中的红框里KAIDU_M的Usage为InOut。因为程序里对KAIDU_M,既对它进行了赋值,又把它作为数值赋给了别的变量,因此此处定义为InOut,用作输入输出。另外,在上图16中的LocalTags中定义了一个PIDA的结构体,为本地变量,即局部变量,如下图17所示。图17定义完成后,再在MainProgram里的PID里添加一个rung,双击,输入WRQH后回车,即可添加刚才制作完成的功能块WRQH,如下图18所示。北京龙鼎源科技有限公司BeijingDragonResourcesLimited图18到此,功能块制作完成并可以使用,我们自己定义的变量也在功能块里了,这样设置就友好多了。第五章附件1PID结构体的子变量如下所述:助记符类型说明.CTLDINT.CTL的各部分存储下列状态于一个16位字节内。用户可以置位或清零下列位位数据类型.EN31BOOL使能指令,输入梯级调节为真则置位.CT30BOOL级联类型(0=从,1=主).CL29BOOL级联回路(0=否,1=是).PVT28BOOL跟踪过程变量(0=否,1=是).DOE27BOOL...的微分(0=PV,1=偏差).SWM26BOOL软件手动模式(0=否,自动;1=是手动模式).CA25BOOL控制作用(0=SP-PV,1=PV-SP).MO24BOOL工作模式(0=自动,1=手动).PE23BOOLPID方程(0=独立,1=相关).NDF22BOOL微分平滑处理(0=否,1=是)北京龙鼎源科技有限公司BeijingDragonResourcesLimited.NOBC21BOOL反相偏滞计算(0=否,1=是).NOZC20BOOL过零死区计算(0=否,1=是).SPREAL设定点.KPREAL独立比例增量(无量纲),相关控制器增量(无量纲).KIREAL独立积分增量(1/秒),相关积分时间(分钟每循环).KDREAL独立微分增量(1/秒),相关微分时间(分钟每循环).BIASREAL前馈或偏滞百分比.MAXSREAL最大工程单位定标值MINSREAL最小工程单位定标值.DBREAL死区工程单位.SOREAL设置输出百分比.MAXOREAL最大输出限幅(输出百分比).MINOREAL最小输出限幅(输出百分比).UPDREAL回路更新时间.PVREAL已标定的过程变量PV值.ERRREAL已标定的误差值.OUTREAL输出百分比.PVHREAL过程变量上限报警值.PVLREAL过程变量下限报警值.DVPREAL正偏移报警值.DVNREAL负偏移报警值.PVDBREAL过程变量报警死区.DVDBREAL偏移报警死区.MAXIREAL最大过程变量PV值(未标定的输入).MINIREAL最小过程变量PV值(未标定的输入).TIEREAL手动控制的牵引信号.MAXCVREAL最大控制变量CV值(对应于100%).MINCVREAL最小控制变量CV值(对应于0%).MINTIEREAL最小牵引TIE值(对应于100%).MAXTIEREAL最大牵引TIE值(对应于0%).DATA[17]REALDATA[17]中各元素存储.DATA[0]积分累加值.DATA[1]微分平滑临时数据.DATA[2]前一次.PV值.DATA[3]前一次.ERR值.DATA[4]前一次有效.SP值.DATA[5]百分比标定常数.DATA[6].PV的标定常数.DATA[7]微分定标常数.DATA[8]前一次KP值.DATA[9]前一次KI值.DATA[10]前一次KD值.DATA[11]相关增益KP北京龙鼎源科技有限公司BeijingDragonResourcesLimited.DATA[12]相关增益KI.DATA[13]相关增益KD.DATA[14]前一次.CV值.DATA[15].CV的缩小标定常数.DATA[16]牵引值的最小标定常数