在Micro/WIN中的命令菜单中选择工具 >指令向导,然后在指令向导窗口中选择PID指令:
图3.1. 选择PID向导
在使用向导时必须先对项目进行编译,在随后弹出的对话框中选择“是” ,确认编译。如果已有的程序中存在错误,或者有没有编完的指令,编译不能通过。
如果你的项目中已经配置了一个PID回路,则向导会指出已经存在的PID回路,并让你选择是配置修改已有的回路,还是配置一个新的回路:
图3.2. 选择需要配置的回路
3.1PID向导设置步骤
第一步:定义需要配置的PID回路号
图3.1.1. 选择PID回路号
第二步:设定PID回路参数
图3.1.2. 设置PID参数
图3.1.2中:
- 定义回路设定值(SP,即给定)的范围:
在低限(Low Range)和高限(High Range)
输入域中输入实数,缺省值为0.0和100.0,表示给定值的取值范围占过程反馈量程的百分比。
这个范围是给定值的取值范围。它也可以用实际的工程单位数值表示。参见:PID给定-反馈量程设置
以下定义PID回路参数,这些参数都应当是实数:
- Gain(增益):
即比例常数。
- Integral Time(积分时间):如果不想要积分作用,可以把积分时间设为无穷大:输入“INF”。
- Derivative Time(微分时间):如果不想要微分回路,可以把微分时间设为0 。
- Sample Time(采样时间):是PID控制回路对反馈采样和重新计算输出值的时间间隔。在向导完成后,若想要修改此数,则必须返回向导中修改,不可在程序中或状态表中修改。
注意:关于具体的PID参数值,每一个项目都不一样,需要现场调试来定,没有所谓经验参数。
第三步:设定回路输入输出值
图3.1.3. 设定PID输入输出参数
在图3.1.3中,首先
设定过程变量的范围:
- 指定输入类型
- Unipolar:
单极性,即输入的信号为正,如0-10V或0-20mA等
- Bipolar:双极性,输入信号在从负到正的范围内变化。如输入信号为±10V、±5V等时选用
- 20% Offset:使用20%偏移。如果输入为4-20mA则选单极性及此项,4mA是0-20mA信号的20%,所以选20% 偏移,即4mA对应6400,20mA对应32000
- 反馈输入取值范围
- 在a.设置为单极性时,缺省值为0 - 32000,对应输入量程范围0 - 10V或0 - 20mA等,输入信号为正
- 在a.设置为双极性时,缺省的取值为-32000 - +32000,对应的输入范围根据量程不同可以是±10V、±5V等
- 在a.使用20%偏移时,取值范围为6400 - 32000,不可改变
此反馈输入也可以是工程单位数值,参见:PID给定-反馈量程设置
然后定义输出类型
- Output Type(输出类型)
可以选择模拟量输出或数字量输出。模拟量输出用来控制一些需要模拟量给定的设备,如比例阀、变频器等;数字量输出实际上是控制输出点的通、断状态按照一定的占空比变化,可以控制固态继电器(加热棒等)
- 选择模拟量则需设定回路输出变量值的范围,可以选择:
- Unipolar:单极性输出,可为0-10V或0-20mA等
- Bipolar:双极性输出,可为正负10V或正负5V等
- 20% Offset:如果选中20% 偏移,使输出为4 - 20mA
- 取值范围:
- d为Unipolar时,缺省值为 0 到 32000
- d为Bipolar时,取值-32000到32000
- d为20% Offset时,取值6400 - 32000,不可改变
如果选择了开关量输出,需要设定此占空比的周期。
第四步:设定回路报警选项
图3.1.4. 设定回路报警限幅值
向导提供了三个输出来反映过程值(PV)的低值报警、高值报警及过程值模拟量模块错误状态。当报警条件满足时,输出置位为1。这些功能在选中了相应的选择框之后起作用。
- 使能低值报警并设定过程值(PV)报警的低值,此值为过程值的百分数,缺省值为0.10,即报警的低值为过程值的10%。此值最低可设为0.01,即满量程的1%
- 使能高值报警并设定过程值(PV)报警的高值,此值为过程值的百分数,缺省值为0.90,即报警的高值为过程值的90%。此值最高可设为1.00,即满量程的100%
- 使能过程值(PV)模拟量模块错误报警并设定模块于CPU连接时所处的模块位置。“0”就是第一个扩展模块的位置
第五步:指定PID运算数据存储区
图3.1.5. 分配运算数据存储区
PID指令(功能块)使用了一个120个字节的V区参数表来进行控制回路的运算工作;除此之外,PID向导生成的输入/输出量的标准化程序也需要运算数据存储区。需要为它们定义一个起始地址,要保证该地址起始的若干字节在程序的其它地方没有被重复使用。如果点击“建议地址”,则向导将自动为你设定当前程序中没有用过的V区地址。
自动分配的地址只是在执行PID向导时编译检测到空闲地址。向导将自动为该参数表分配符号名,用户不要再自己为这些参数分配符号名,否则将导致PID控制不执行。
第六步:定义向导所生成的PID初使化子程序和中断程序名及手/自动模式
图3.1.6. 指定子程序、中断服务程序名和选择手动控制
向导已经为初使化子程序和中断子程序定义了缺省名,你也可以修改成自己起的名字。
-
指定PID初使化子程序的名字。
- 指定PID中断子程序的名字
注意:
- 如果你的项目中已经存在一个PID配置,则中断程序名为只读,不可更改。因为一个项目中所有PID共用一个中断程序,它的名字不会被任何新的PID所更改。
- PID向导中断用的是SMB34定时中断,在用户使用了PID向导后,注意在其它编程时不要再用此中断,也不要向SMB34中写入新的数值,否则PID将停止工作。
- 此处可以选择添加PID 手动控制模式。在PID手动控制模式下,回路输出由手动输出设定控制,此时需要写入手动控制输出参数一个0.0-1.0的实数,代表输出的0%-100%而不是直接去改变输出值。
PID调节手/自动无扰动切换
第七步:生成PID子程序、中断程序及符号表等
一旦点击完成按钮,将在你的项目中生成上述PID子程序、中断程序及符号表等。
图3.1.7. 生成PID子程序、中断程序和符号表等
第八步:配置完PID向导,需要在程序中调用向导生成的PID子程序(如下图)
图3.1.8. PID子程序
图3.1.9. 调用PID子程序
在用户程序中调用PID子程序时,可在指令树的Program Block(程序块)中用鼠标双击由向导生成的PID子程序,在局部变量表中,可以看到有关形式参数的解释和取值范围。
- 必须用SM0.0来使能 PIDx_INIT 子程序,SM0.0 后不能串联任何其他条件,而且也不能有越过它的跳转;如果在子程序中调用 PIDx_INIT 子程序,则调用它的子程序也必须仅使用 SM0.0 调用,以保证它的正常运行
- 此处输入过程值(反馈)的模拟量输入地址
- 此处输入设定值变量地址(VDxx),或者直接输入设定值常数,根据向导中的设定0.0-100.0,此处应输入一个0.0-100.0的实数,例:若输入20,即为过程值的20%,假设过程值AIW0是量程为0-200度的温度值,则此处的设定值20代表40度(即200度的20%);如果在向导中设定给定范围为0.0 - 200.0,则此处的20相当于20度
- 此处用I0.0控制PID的手/自动方式,当I0.0为1时,为自动,经过PID运算从AQW0输出;当I0.0为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,为求程序简单可读,未设置回路报警选项,仅简单常用配置,具体参见例程,关注程序注释以及符号表内容可帮助更快理解程序。
例程:S7-200 PID
注意:此指令程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为 此联系西门子技术支持与服务部门
3.2PID向导生成的组件介绍
p>PID向导完成后,自动生成的除PID子程序(上一节已经介绍)以外还有数据块、符号表以及中断程序等组件。
1.数据块
图3.2.1. PID向导生成数据块
完成PID Wizard配置后,会为每个PID回路生成一个数据块PIDx_DATA(x=0-7)。图中可以看出数据块的内容实际就是PID回路表以及报警的高/低限位。实际也说明PID向导是基于PID指令块编程经过调整后呈现给用户。
2.符号表
图3.2.2. PID向导生成符号表
完成PID Wizard配置后,会为每个PID回路生成一个数据块PIDx_SYM(x=0-7)。图中可以看出符号表内容也是回路表相关参数。
3.中断程序 PID向导生成的中断程序PID_EXE自动加密,相关功能已经附在向导生成的子程序内,这里不涉及。
查看Data Block(数据块),以及Symbol Table(符号表)相应的PID符号标签的内容,可以找到包括PID核心指令所用的控制回路表,包括比例系数、积分时间等等。将此表的地址复制到Status Chart(状态表)中,可以在监控模式下在线修改PID参数,而不必停机再次做配置。
参数调试合适后,用户可以在数据块中写入,也可以再做一次向导,或者编程向相应的数据区传送参数。
常见问题
做完PID向导后,如何知道向导中设定值,过程值及PID等参数所用的地址?
做完PID向导后可在Symbol Table(符号表)中,查看PID向导所生成的符号表(上例中为PID0_SYM),可看到各参数所用的详细地址,及数值范围。
在Data Block(数据块)中,查看PID指令回路表的相关参数。
怎样在上位机或触摸屏上修改PID参数?
图3.2.1/3.2.2中均能查到对应参数地址,在上位机获触摸屏中修改即可,注意数据类型。
数据块内设定值与过程变量以及输出的范围是多少?
数据块内的变量范围完全与回路表内变量范围一致,即都是0.0-1.0之间的浮点数,如果向导里这些变量是模拟量,或者实际工程量,向导会自动换算成0.0-1.0的标准化数值。通过这些变量也可以确认向导内设置的设定值与过程变量量程是否正确。
3.3PID设定值与过程变量 量程设置
下图是PID向导生成的子程序:
图3.3.1. 调用PID子程序
各参数在3.1章节中已经介绍,这里对以下几个参数着重解释:
- PV_I: 过程反馈参数值的入口
- Setpoint_R: 给定参数值的入口
- Output: PID调节器的输出值
在这里,给定、反馈的入口参数不是PID指令功能块所需要的0.0 - 1.0之间的实数,而可以是实际的反馈地址,或是其他变量。例如,PV_I可以是模拟量输入地址AIW0,也可以是存储器地址VW100等;Setpoint则往往来自V变量存储区,这样可以从人机操作界面(HMI)设备输入给定值。
注意:
对于PID控制系统来说,必须保证给定与过程反馈的一致性:
- 给定与反馈(过程变量)的物理意义一致
这取决于被控制的对象,如果是压力,则给定也必须对应于压力值;如果是温度,则给定也必须对应于温度。
- 给定与反馈(过程变量)的的数值范围对应
如果给定直接是摄氏温度值,则反馈必须是对应的摄氏温度值;如果反馈直接使用模拟量输入的对应数值,则给定也必须向反馈的数值范围换算。
如果给定与反馈的换算有特定的比例关系也可以。如给定也可以表示为以反馈的数值范围的百分比数值。
给定与反馈的数值具体是什么数值,其取值范围究竟如何,完全取决于我们在使用“PID向导”编程时指定的给定与反馈的数值范围。其中,反馈量的数值范围不能随便自己定义,而要取决于具体应用的模拟量输入模块。
图3.3.2. 在图中a.处设置给定范围
图3.3.3. 在图中b.处设置反馈范围
实例
1. 假定一个PID控制系统的控制对象是压力,反馈元件的测量范围为0 - 16MPa。反馈器件的信号经过变换,以0 - 20mA(或4 - 20mA)电流信号的形式输入到EM231模拟量输入模块中。据此,我们可以按下表设置给定、反馈(过程变量)的的范围。
|
反馈(单极性) |
给定 |
|
实际物理量 |
模拟量输入数值 |
百分比形式(占0 - 16MPa的百分比) |
物理工程单位形式 |
高限 |
16 MPa |
32000 |
100.0 |
n×16.0 |
低限 |
0 MPa |
0 (0 - 20mA) |
0.0 |
0.0 |
6400 (4 - 20mA) |
表3.3.1.反馈/给定设置
n 为比例系数,为了精度高些可以设置n=10等等
2. 一个温度控制的PID系统,温度值直接由热电偶测量,输入到EM231 TC(热电偶)模块转换为温度值。热电偶为J型,其测量范围为 -150.0°C - 1200.0 °C。则可按如下设置给定的范围。
|
反馈(双极性) |
给定 |
|
实际物理量 |
模拟量输入数值 |
百分比形式(占-150°C - 1200.0°C的百分比) |
物理工程单位形式 |
高限 |
1200.0 °C |
12000 |
100.0 |
1200 |
低限 |
-150.0 °C |
-1500 |
0.0 |
-150 |
表3.3.2.反馈/给定设置
在表3.3.2的例子中,给定和反馈可以按照如下方法设置
图3.3.4. 给定范围设置
图3.3.5. 反馈范围设置
3.4PID调节控制面板使用
STEP 7-Micro/WIN V4.0中提供了一个PID调节控制面板,具有图形化的给定、反馈、调节器输出波形显示,可以用于手动调试PID参数。另外从面板中还可以启动、停止自整定功能,对于没有“自整定PID”功能的老版CPU,也能实现PID手动调节。
要使用PID调节控制面板,PID编程必须使用PID向导完成。
图3.4.1. PID调节控制面板
在图3.4.1中:
- 过程值指示
显示过程变量的值及其棒图
- 当前的输出值指示
显示当前使用的设定值、采样时间、PID 参数值及显示当前的输出值和棒图
- 可显示过程值、设定值及输出值的PID趋势图
图3.4.2. 图形显示区
图中:
- 过程变量和设定值的取值范围及刻度
- PID输出的取值范围及刻度
- 实际PC时间
- 以不同颜色表示的设定值、过程变量及输出的趋势图
- 调节参数
这里你可以:
- 选择PID参数的显示:当前参数(Current)、推荐参数(Suggested)、手动输入(Manual)
- 在Manual模式下,可改变PID参数,并按Update PLC按钮来更新PLC中的参数
- 启动PID自整定功能
- 选择Advanced(高级)按钮进入高级参数设定
- 当前的PID回路号
这里你可以选择需要监视或自整定的PID回路
- 时间选项设定
这里你可以设定趋势图的时基,时基以分为单位
- 图例颜色
这里你可以看到趋势图中不同的颜色代表不同的值的趋势
- 帮助按钮
- PID信息显示窗口
- 关闭PID调节面板
常见问题
使用PID调节面板手动调整增益、积分时间、微分时间参数,修改的数值能否进入到PLC?
可以,但是需要在参数设置完以后手动点击调节面板的Update PLC(更新PLC)按钮,来更新PLC中的参数。
PID已经调整合适,如何正式确定参数?
可以在Data Block(数据块)中直接写入参数。
做完PID向导后,能否查看PID生成的子程序,中断程序?
PID向导生成的子程序,中断程序用户是无法看到的,也不能对其进行修改。没有密码能够打开这些子程序,一般的应用也没有必要打开查看。
PID向导生成的程序为何不执行或没有输出?
- 必须保证用SM0.0无条件调用PID0_INIT程序
- 在程序的其它部分不要再使用SMB34定时中断,也不要对SMB34赋值
- 确认当前工作状态:手动还是自动
如何根据工艺要求有选择地投入PID功能?
可使用“手动/自动”切换的功能。PID向导生成的PID功能块只能使用SM0.0的条件调用。