加载中…
个人资料
剑思庭
剑思庭
  • 博客等级:
  • 博客积分:0
  • 博客访问:0
  • 关注人气:90
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

S7200PID使用方法和调整

(2010-11-17 14:56:56)
标签:

it

Micro/WIN提供了PID Wizard(PID指令向导),可以帮助用户方便地生成一个闭环控制过程的PID算法。此向导可以完成绝大多数PID运算的自动编程,用户只需在主程序中调用PID向导生成的子程序,就可以完成PID控制任务。

PID向导既可以生成模拟量输出PID控制算法,也支持开关量输出;既支持连续自动调节,也支持手动参与控制。建议用户使用此向导对PID编程,以避免不必要的错误。如果用户不能确定中文编程界面的语义,我们建议用户使用英文版本的Micro/WIN,以免对向导中相关概念发生误解。

mk:@MSITStore:D:/Siemens/Micro%20 建议用户使用较新的编程软件版本。在新版本中的PID向导获得了改善。

 

PID向导编程步骤

在Micro/WIN中的命令菜单中选择Tools > Instruction Wizard,然后在指令向导窗口中选择PID指令:

http://blog.cechinamag.com/Upload/2008/12/30/76d8a4ee-fedd-4e86-8aa8-bf1caa0b4a9b.gif
图1. 选择PID向导

在使用向导时必须先对项目进行编译,在随后弹出的对话框中选择“Yes” ,确认编译。如果已有的程序中存在错误,或者有没有编完的指令,编译不能通过。

如果你的项目中已经配置了一个PID回路,则向导会指出已经存在的PID回路,并让你选择是配置修改已有的回路,还是配置一个新的回路:

http://blog.cechinamag.com/Upload/2008/12/30/8262486c-29e9-47d7-a6fe-1ceb12695b6f.gif
图2. 选择需要配置的回路

第一步:定义需要配置的PID回路号

http://blog.cechinamag.com/Upload/2008/12/30/d469b455-677a-419b-8fcd-6f62d26f0050.gif
图3. 选择PID回路号

第二步:设定PID回路参数

http://blog.cechinamag.com/Upload/2008/12/30/7efac81d-16e2-49b8-bb40-8d45d91f0806.gif
图4. 设置PID参数

图4中:

  1. 定义回路设定值(SP,即给定)的范围:
    在低限(Low Range)和高限(High Range)输入域中输入实数,缺省值为0.0和100.0,表示给定值的取值范围占过程反馈量程的百分比。

    mk:@MSITStore:D:/Siemens/Micro%20 这个范围是给定值的取值范围。它也可以用实际的工程单位数值表示。参见:设置给定-反馈的量程范围

    以下定义PID回路参数,这些参数都应当是实数:

  2. Gain(增益): 即比例常数。
  3. Integral Time(积分时间):如果不想要积分作用,可以把积分时间设为无穷大:输入“INF”。
  4. Derivative Time(微分时间):如果不想要微分回路,可以把微分时间设为0 。
  5. Sample Time(采样时间):是PID控制回路对反馈采样和重新计算输出值的时间间隔。在向导完成后,若想要修改此数,则必须返回向导中修改,不可在程序中或状态表中修改。

mk:@MSITStore:D:/Siemens/Micro%20 注意:关于具体的PID参数值,每一个项目都不一样,需要现场调试来定,没有所谓经验参数。

第三步:设定回路输入输出值

http://blog.cechinamag.com/Upload/2008/12/30/76e7652b-ea6e-4a93-baf5-71ec7b5f6816.gif
图5. 设定PID输入输出参数

在图5中,首先 设定过程变量的范围:

  1. 指定输入类型
    • Unipolar: 单极性,即输入的信号为正,如0-10V或0-20mA等
    • Bipolar:双极性,输入信号在从负到正的范围内变化。如输入信号为±10V、±5V等时选用
    • 20% Offset:选用20%偏移。如果输入为4-20mA则选单极性及此项,4mA是0-20mA信号的20%,所以选20% 偏移,即4mA对应6400,20mA对应32000

  2. 反馈输入取值范围
    • 在a.设置为Unipolar时,缺省值为0 - 32000,对应输入量程范围0 - 10V或0 - 20mA等,输入信号为正
    • 在a.设置为Bipolar时,缺省的取值为-32000 - +32000,对应的输入范围根据量程不同可以是±10V、±5V等
    • 在a.选中20% Offset时,取值范围为6400 - 32000,不可改变

    mk:@MSITStore:D:/Siemens/Micro%20 此反馈输入也可以是工程单位数值,参见:设置给定-反馈的量程范围

    然后定义输出类型

  3. Output Type(输出类型)
    可以选择模拟量输出或数字量输出。模拟量输出用来控制一些需要模拟量给定的设备,如比例阀、变频器等;数字量输出实际上是控制输出点的通、断状态按照一定的占空比变化,可以控制固态继电器(加热棒等)
  4. 选择模拟量则需设定回路输出变量值的范围,可以选择:
    • Unipolar:单极性输出,可为0-10V或0-20mA等
    • Bipolar:双极性输出,可为正负10V或正负5V等
    • 20% Offset:如果选中20% 偏移,使输出为4 - 20mA
  5. 取值范围:
    • d为Unipolar时,缺省值为 0 到 32000
    • d为Bipolar时,取值-32000到32000
    • d为20% Offset时,取值6400 - 32000,不可改变

如果选择了开关量输出,需要设定此占空比的周期。

第四步:设定回路报警选项

http://blog.cechinamag.com/Upload/2008/12/30/cad99996-5e2e-4657-8336-022a157304fd.gif
图6. 设定回路报警限幅值

向导提供了三个输出来反映过程值(PV)的低值报警、高值报警及过程值模拟量模块错误状态。当报警条件满足时,输出置位为1。这些功能在选中了相应的选择框之后起作用。

  1. 使能低值报警并设定过程值(PV)报警的低值,此值为过程值的百分数,缺省值为0.10,即报警的低值为过程值的10%。此值最低可设为0.01,即满量程的1%
  2. 使能高值报警并设定过程值(PV)报警的高值,此值为过程值的百分数,缺省值为0.90,即报警的高值为过程值的90%。此值最高可设为1.00,即满量程的100%
  3. 使能过程值(PV)模拟量模块错误报警并设定模块于CPU连接时所处的模块位置。“0”就是第一个扩展模块的位置

第五步:指定PID运算数据存储区

http://blog.cechinamag.com/Upload/2008/12/30/db79117a-092e-4c95-a9cb-2555fbae9a7a.gif
图7. 分配运算数据存储区

PID指令(功能块)使用了一个120个字节的V区参数表来进行控制回路的运算工作;除此之外,PID向导生成的输入/输出量的标准化程序也需要运算数据存储区。需要为它们定义一个起始地址,要保证该地址起始的若干字节在程序的其它地方没有被重复使用。如果点击“Suggest Address”,则向导将自动为你设定当前程序中没有用过的V区地址。

mk:@MSITStore:D:/Siemens/Micro%20 自动分配的地址只是在执行PID向导时编译检测到空闲地址。向导将自动为该参数表分配符号名,用户不要再自己为这些参数分配符号名,否则将导致PID控制不执行。

第六步:定义向导所生成的PID初使化子程序和中断程序名及手/自动模式

http://blog.cechinamag.com/Upload/2008/12/30/b26b751b-09d8-4279-9d6e-775c51874d2d.gif
图8. 指定子程序、中断服务程序名和选择手动控制

向导已经为初使化子程序和中断子程序定义了缺省名,你也可以修改成自己起的名字。

  1. 指定PID初使化子程序的名字。
  2. 指定PID中断子程序的名字

    mk:@MSITStore:D:/Siemens/Micro%20 注意:
    1. 如果你的项目中已经存在一个PID配置,则中断程序名为只读,不可更改。因为一个项目中所有PID共用一个中断程序,它的名字不会被任何新的PID所更改。
    2. PID向导中断用的是SMB34定时中断,在用户使用了PID向导后,注意在其它编程时不要再用此中断,也不要向SMB34中写入新的数值,否则PID将停止工作。

  3. 此处可以选择添加PID 手动控制模式。在PID手动控制模式下,回路输出由手动输出设定控制,此时需要写入手动控制输出参数一个0.0-1.0的实数,代表输出的0%-100%而不是直接去改变输出值。

    mk:@MSITStore:D:/Siemens/Micro%20 PID 控制的自动/手动之间的无扰动切换

第七步:生成PID子程序、中断程序及符号表等

一旦点击完成按钮,将在你的项目中生成上述PID子程序、中断程序及符号表等。

http://blog.cechinamag.com/Upload/2008/12/30/43c372d8-cf0c-4b8b-aa00-76fa5e9d1446.gif
图9. 生成PID子程序、中断程序和符号表等

第八步:配置完PID向导,需要在程序中调用向导生成的PID子程序(如下图)

http://blog.cechinamag.com/Upload/2008/12/30/5d48a22b-334d-4dea-9b40-ec56e80d5514.JPG
图10. PID子程序

http://blog.cechinamag.com/Upload/2008/12/30/bd69cd68-7722-4482-a49d-bb7de91708d8.gif
图11. 调用PID子程序

在用户程序中调用PID子程序时,可在指令树的Program Block(程序块)中用鼠标双击由向导生成的PID子程序,在局部变量表中,可以看到有关形式参数的解释和取值范围。

  1. 必须用SM0.0来使能 PIDx_INIT 子程序,SM0.0 后不能串联任何其他条件,而且也不能有越过它的跳转;如果在子程序中调用 PIDx_INIT 子程序,则调用它的子程序也必须仅使用 SM0.0 调用,以保证它的正常运行
  2. 此处输入过程值(反馈)的模拟量输入地址
  3. 此处输入设定值变量地址(VDxx),或者直接输入设定值常数,根据向导中的设定0.0-100.0,此处应输入一个0.0-100.0的实数,例:若输入20,即为过程值的20%,假设过程值AIW0是量程为0-200度的温度值,则此处的设定值20代表40度(即200度的20%);如果在向导中设定给定范围为0.0 - 200.0,则此处的20相当于20度
  4. 此处用I0.0控制PID的手/自动方式,当I0.0为1时,为自动,经过PID运算从AQW0输出;当I0.0为0时,PID将停止计算,AQW0输出为ManualOutput(VD4)中的设定值,此时不要另外编程或直接给AQW0赋值。若在向导中没有选择PID手动功能,则此项不会出现
  5. 定义PID手动状态下的输出,从AQW0输出一个满值范围内对应此值的输出量。此处可输入手动设定值的变量地址(VDxx),或直接输入数。数值范围为0.0-1.0之间的一个实数,代表输出范围的百分比。例:如输入0.5,则设定为输出的50%。若在向导中没有选择PID手动功能,则此项不会出现
  6. 此处键入控制量的输出地址
  7. 当高报警条件满足时,相应的输出置位为1,若在向导中没有使能高报警功能,则此项将不会出现
  8. 当低报警条件满足时,相应的输出置位为1,若在向导中没有使能低报警功能,则此项将不会出现
  9. 当模块出错时,相应的输出置位为1,若在向导中没有使能模块错误报警功能,则此项将不会出现

mk:@MSITStore:D:/Siemens/Micro%20 调用PID子程序时,不用考虑中断程序。子程序会自动初始化相关的定时中断处理事项,然后中断程序会自动执行。

第九步:实际运行并调试PID参数

没有一个PID项目的参数不需要修改而能直接运行,因此需要在实际运行时调试PID参数。

查看Data Block(数据块),以及Symbol Table(符号表)相应的PID符号标签的内容,可以找到包括PID核心指令所用的控制回路表,包括比例系数、积分时间等等。将此表的地址复制到Status Chart(状态表)中,可以在监控模式下在线修改PID参数,而不必停机再次做配置。

参数调试合适后,用户可以在数据块中写入,也可以再做一次向导,或者编程向相应的数据区传送参数。

常问问题

mk:@MSITStore:D:/Siemens/Micro%20 做完PID向导后,如何知道向导中设定值,过程值及PID等参数所用的地址?

  • 做完PID向导后可在Symbol Table(符号表)mk:@MSITStore:D:/Siemens/Micro%20中,查看PID向导所生成的符号表(上例中为PID0_SYM),可看到各参数所用的详细地址,及数值范围。
  • 在Data Block(数据块)mk:@MSITStore:D:/Siemens/Micro%20中,查看PID指令回路表的相关参数。如图所示:

http://blog.cechinamag.com/Upload/2008/12/30/0938098e-482c-48e7-9d5b-37d4af2bc255.gif
图12. PID数据块

mk:@MSITStore:D:/Siemens/Micro%20 做完PID向导后,如何在调试中修改PID参数?

可以在Status Chart(状态表)mk:@MSITStore:D:/Siemens/Micro%20中,输入相应的参数地址,然后在线写入用户需要的PID参数数值,这样用户就可根据工艺需要随时对PID参数、设定值等进行调整。

mk:@MSITStore:D:/Siemens/Micro%20 PID已经调整合适,如何正式确定参数?

可以在Data Block(数据块)中直接写入参数。

mk:@MSITStore:D:/Siemens/Micro%20 做完PID向导后,能否查看PID生成的子程序,中断程序?

PID向导生成的子程序,中断程序用户是无法看到的,也不能对其进行修改。没有密码能够打开这些子程序,一般的应用也没有必要打开查看。

mk:@MSITStore:D:/Siemens/Micro%20 PID参数有经验值吗?

每一个项目的PID 参数都不一样,没有经验参数,只能现场调试获得。

mk:@MSITStore:D:/Siemens/Micro%20 我的PID向导生成的程序为何不执行?

  • 必须保证用SM0.0无条件调用PID0_INIT程序
  • 在程序的其它部分不要再使用SMB34定时中断,也不要对SMB34赋值

mk:@MSITStore:D:/Siemens/Micro%20 如何实现PID反作用调节?

在有些控制中需要PID反作用调节。例如:在夏天控制空调制冷时,若反馈温度(过程值)低于设定温度,需要关阀,减小输出控制(减少冷水流量等),这就是PID反作用调节(在PID正作用中若过程值小于设定值,则需要增大输出控制)。

若想实现PID反作用调节,需要把PID回路的增益设为负数。对于增益为0的积分或微分控制来说,如果指定积分时间、微分时间为负值,则是反作用回路。

mk:@MSITStore:D:/Siemens/Micro%20 如何根据工艺要求有选择地投入PID功能?

可使用“手动/自动”切换的功能。PID向导生成的PID功能块只能使用SM0.0的条件调用。

 

 

在开始PID自整定调整前,整个PID控制回路必须工作在相对稳定的状态。

稳定的PID是指过程变量接近设定值,输出不会不规则的变化,且回路的输出值在控制范围中心附近变化。

问题与解决方法:

  1. PID输出总是输出很大的值,并在这一区间内调节变化
    http://blog.cechinamag.com/Upload/2008/12/30/8be2a7a3-de0d-491b-9af8-84855d940c82.JPG

    产生原因:

    • 增益(Gain)值太高
    • PID扫描时间(sample time)太长(对于快速响应PID的回路)

    解决方法:降低增益(Gain)值并且/或选择短一些的扫描时间


  2. 过程变量超过设定值很多(超调很大)
    http://blog.cechinamag.com/Upload/2008/12/30/2dddf16a-69e7-4d94-bf6e-905a300e285f.JPG

    产生原因:积分时间(Integral time)可能太高

    解决方法:降低积分时间

  3. 得到一个非常不稳定的PID
    http://blog.cechinamag.com/Upload/2008/12/30/45b2e9f9-8272-4ef3-9cbf-e55cce30147d.JPG

    产生原因:

    • 如果用了微分,可能是微分参数有问题
    • 没有微分,可能是增益(Gain)值太高

    解决方法:

    • 调整微分参数到0-1的范围内
    • 根据回路调节特性将增益值降低,最低可从0.x 开始逐渐增大往上调,直到获得稳定的PID 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有