
西门子S7-200SMARTPLC采用的编程软件为Step7-Micro/WINSMART,在该编程软件中,组态PID控制回路,专门有一个工具,叫PID指令向导(PIDWizard),在编程时,只需要......
西门子S7-200SMARTPLC采用的编程软件为Step7-Micro/WINSMART,在该编程软件中,组态PID控制回路,专门有一个工具,叫PID指令向导(PIDWizard),在编程时,只需要按照向导步骤一步一步操作,可以完成大多数PID功能的编程,编程人员只需要在主程序中调用PID向导生成的子程序,即可完成PID控制程序的组态。该PID向导既可以生成模拟量输出PID控制算法,也支持开关量输出;既支持连续自动调节,也支持手动参与控制。建议用户使用此向导对PID编程,以避免不必要的错误。(建议编程时,采用比较新的编程软件版本)
一、PID向导编程步骤
使用以下方法之一打开PID向导:
在Micro/WINSMART中的工具菜单中选择PID向导:
图1.选择PID向导
在项目树中打开“向导”文件夹,然后双击“PID”,或选择“PID”并按回车键。
图2.选择PID向导
第一步:定义需要配置的PID回路号
在此对话框中选择要组态的回路。最多可组态8个回路。在此对话框上选择回路时,PID向导左侧的树视图随组态该回路所需的所有节点一起更新。
图3.选择需要配置的回路
第二步:为回路组态命名
可为回路组态自定义名称。此部分的默认名称是“回路x”,其中“x”等于回路编号。
图4.为PID回路命名
第三步:设定PID回路参数
图5.设置PID参数
图5中定义了PID回路参数,这些参数都应当是实数:
增益:即比例常数,默认值=1.00。
积分时间:如果不想要积分作用可以将该值设置很大(比如10000.0),默认值=10.00。
微分时间:如果不想要微分回路,可以把微分时间设为0,默认值=0.00。
第四步:设定回路过程变量
图6.设定PID输入过程变量
1、指定回路过程变量(PV)如何标定。可以从以下选项中选择:
单极性:即输入的信号为正,如0-10V或0-20mA等
双极性:输入信号在从负到正的范围内变化。如输入信号为±10V、±5V等时选用
选用20%偏移:如果输入为4-20mA则选单极性及此项,4mA是0-20mA信号的20%,所以选20%偏移,即4mA对应5530,20mA对应27648。
温度x10°C
温度x10°F
在a.设置为单极时,缺省值为0-27648,对应输入量程范围0-10V或0-20mA等,输入信号为正
在a.设置为双极时,缺省的取值为-27648-+27648,对应的输入范围根据量程不同可以是±10V、±5V等
在a.选中20%偏移量时,取值范围为5530-27648,不可改变
3、在“标定”(Scaling)参数中,指定回路设定值(SP)如何标定。默认值是0.0和100.0之间的一个实数。
第五步:设定输入回路输出选项
图7.设定PID输出选项
1、输出类型
可以选择模拟量输出或数字量输出。模拟量输出用来控制一些需要模拟量给定的设备,如比例阀、变频器等;数字量输出实际上是控制输出点的通、断状态按照一定的占空比变化,可以控制固态继电器(加热棒等)
2、选择模拟量则需设定回路输出变量值的范围,可以选择:
单极:单极性输出,可为0-10V或0-20mA等
双极:双极性输出,可为正负10V或正负5V等
单极20%偏移量:如果选中20%偏移,使输出为4-20mA
3、取值范围:
c为单极时,缺省值为0到27648
c为双极时,取值-27648到27648
c为20%偏移量时,取值5530-27648,不可改变
如果选择了开关量输出,需要设定此循环周期,如图7所示:
图8.设定PID输出为数字量
第六步:设定回路报警选项
图9.设定回路报警限幅值
向导提供了三个输出来反映过程值(PV)的低值报警、高值报警及过程值模拟量模块错误状态。当报警条件满足时,输出置位为1。这些功能在选中了相应的选择框之后起作用。
1、使能低值报警并设定过程值(PV)报警的低值,此值为过程值的百分数,缺省值为0.10,即报警的低值为过程值的10%。此值最低可设为0.01,即满量程的1%
2、使能高值报警并设定过程值(PV)报警的高值,此值为过程值的百分数,缺省值为0.90,即报警的高值为过程值的90%。此值最高可设为1.00,即满量程的100%
3、使能过程值(PV)模拟量模块错误报警并设定模块于CPU连接时所处的模块位置。“EM0”就是第一个扩展模块的位置
第七步:定义向导所生成的PID初使化子程序和中断程序名及手/自动模式
图10.指定子程序、中断服务程序名和选择手动控制
向导已经为初使化子程序和中断子程序定义了缺省名,你也可以修改成自己起的名字。
1、指定PID初使化子程序的名字。
2、指定PID中断子程序的名字
注意:
1)如果你的项目中已经存在一个PID配置,则中断程序名为只读,不可更改。因为一个项目中所有PID共用一个中断程序,它的名字不会被任何新的PID所更改。
2)PID向导中断用的是SMB34定时中断,在用户使用了PID向导后,注意在其它编程时不要再用此中断,也不要向SMB34中写入新的数值,否则PID将停止工作。
3、此处可以选择添加PID手动控制模式。在PID手动控制模式下,回路输出由手动输出设定控制,此时需要写入手动控制输出参数一个0.0-1.0的实数,代表输出的0%-100%而不是直接去改变输出值。
第八步:指定PID运算数据存储区
图11.分配运算数据存储区
第九步:生成PID子程序、中断程序及符号表等
图12.生成PID子程序、中断程序和符号表等
第十步:配置完PID向导,需要在程序中调用向导生成的PID子程序(如下图)
在用户程序中调用PID子程序时,可在指令树的程序块中用鼠标双击由向导生成的PID子程序,在局部变量表中,可以看到有关形式参数的解释和取值范围。
必须用来使能PIDx_CTRL子程序,后不能串联任何其他条件,而且也不能有越过它的跳转;如果在子程序中调用PIDx_CTRL子程序,则调用它的子程序也必须仅使用调用,以保证它的正常运行
此处输入设定值变量地址(VDxx),或者直接输入设定值常数,根据向导中的设定0.0-100.0,此处应输入一个0.0-100.0的实数,例:若输入20,即为过程值的20%,假设过程值AIW0是量程为0-200度的温度值,则此处的设定值20代表40度(即200度的20%);如果在向导中设定给定范围为0.0-200.0,则此处的20相当于20度
此处用控制PID的手/自动方式,当为1时,为自动,经过PID运算从AQW0输出;当为0时,PID将停止计算,AQW0输出为ManualOutput(VD4)中的设定值,此时不要另外编程或直接给AQW0赋值。若在向导中没有选择PID手动功能,则此项不会出现
定义PID手动状态下的输出,从AQW0输出一个满值范围内对应此值的输出量。此处可输入手动设定值的变量地址(VDxx),或直接输入数。数值范围为0.0-1.0之间的一个实数,代表输出范围的百分比。例:如输入0.5,则设定为输出的50%。若在向导中没有选择PID手动功能,则此项不会出现
此处键入控制量的输出地址
当高报警条件满足时,相应的输出置位为1,若在向导中没有使能高报警功能,则此项将不会出现
当低报警条件满足时,相应的输出置位为1,若在向导中没有使能低报警功能,则此项将不会出现
当模块出错时,相应的输出置位为1,若在向导中没有使能模块错误报警功能,则此项将不会出现
第十一步:实际运行并调试PID参数
没有一个PID项目的参数不需要修改而能直接运行,因此需要在实际运行时调试PID参数。
查看数据块以及符号表相应的PID符号标签的内容,可以找到包括PID核心指令所用的控制回路表,包括比例系数、积分时间等等。将此表的地址复制到状态表中,可以在监控模式下在线修改PID参数,而不必停机再次做配置。
参数调试合适后,用户可以在数据块中写入,也可以再做一次向导,或者编程向相应的数据区传送参数。
二、常见问题
做完PID向导后,如何知道向导中设定值,过程值及PID等参数所用的地址?
PID已经调整合适,如何正式确定参数?
可以在数据块中直接写入参数。
做完PID向导后,能否查看PID生成的子程序,中断程序?
PID向导生成的子程序,中断程序用户是无法看到的,也不能对其进行修改。没有密码能够打开这些子程序,一般的应用也没有必要打开查看。
PID参数有经验值吗?
每一个项目的PID参数都不一样,没有经验参数,只能现场调试获得。
我的PID向导生成的程序为何不执行?
必须保证用无条件调用PID0_CTRL程序
在程序的其它部分不要再使用SMB34定时中断,也不要对SMB34赋值
如何实现PID反作用调节?
在有些控制中需要PID反作用调节。
若想实现PID反作用调节,需要把PID回路的增益设为负数。对于增益为0的积分或微分控制来说,如果指定积分时间、微分时间为负值,则是反作用回路。
如何根据工艺要求有选择地投入PID功能?
可使用“手动/自动”切换的功能。PID向导生成的PID功能块需要保证每个扫描周期都调用,所以建议在主程序内使用调用。