1、使用手动设置参数时,在设定值、反馈输入值、输出值之间,找不出和标准 PID 公式对应的数学关系,请问怎么回事,是我调试错了,还是有其它问题?B、调节 PID 控制器的循环中断时间和 PID 手动参数的循环调用时间之间是什么关系?比如问题补充:是 S7-1200里面,PID 手动参数设置时,有一个中断时间设置;再做循环中断调节用时,中断程序本身有一个中断时间。我说的是这两个的时间关系。答案对于 PID 运算,你可以查看 S7-200编程手册的 PID 章节,那里的叙述非常详细。采样时间必须和循环中断的时间对应,比如1S 采集一次样,如果循环中断为50ms 执行一次,那么 PID 运算就要时隔20
2、次循环中断后,再运行 PID 运算,得出开关量的通断时间或者模拟量的数值大小。回答者:ghiblid- 新生   第1级 2010-10-11 22:55:53PID 控制器参数整定的一般方法: PID 控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定 PID 控制器的比例系数、积分时间和微分时间的大小。PID 控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改;二是工程整定方法,它主要依赖工程经验,直接在控制系统的试
3、验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。PID 控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。现在一般采用的是临界比例法。利用该方法进行 PID 控制器参数的整定步骤如下:(1)首先预选择一个足够短的采样周期让系统工作;(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;(3)在一定的控制度下通过公式计算得到 PID 控制器的参数。PID 参数的设定:
4、是靠经验及工艺的熟悉,参考测量值跟踪与设定值曲线,从而调整 P、I、D 的大小。书上的常用口诀:参数整定找最佳,从小到大顺序查;先是比例后积分,最后再把微分加;曲线振荡很频繁,比例度盘要放大;曲线漂浮绕大湾,比例度盘往小扳;曲线偏离回复慢,积分时间往下降;曲线波动周期长,积分时间再加长;曲线振荡频率快,先把微分降下来;动差大来波动慢。微分时间应加长;理想曲线两个波,前高后低4比1;一看二调多分析,调节质量不会低。个人认为 PID 参数的设置的大小,一方面是要根据控制对象的具体情况而定;另一方面是经验。P 是解决幅值震荡,P 大了会出现幅值震荡的幅度大,但震荡频率小,系统达到稳定时间长;I 是解
5、决动作响应的速度快慢的,I 大了响应速度慢,反之则快;D 是消除静态误差的,一般 D 设置都比较小,而且对系统影响比较小。PID 控制原理:1、比例(P)控制 :比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差。 2、积分(I)控制 :在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统。为了消除稳态误差,在控制器中必须引入“积分项” 。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的
6、增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。 3、微分(D)控制 :在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。 自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前” ,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项” ,它
7、能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。西门子 plc 的 pid 的计算过程Micro/WIN 提供了 PID Wizard(PID 指令向导) ,可以帮助用户方便地生成一个闭环控制过程的 PID 算法。此向导可以完成绝大多数 PID 运算的自动编程,用户只需在主程序中调用 PID 向导生成的子程序,就可以完成 PID 控制任务。PID 向导既可以生成模拟量输出 PID 控制算法,也支持开关量输出;既支持连续自动
8、调节,也支持手动参与控制。建议用户使用此向导对 PID 编程,以避免不必要的错误。如果用户不能确定中文编程界面的语义,我们建议用户使用英文版本的 Micro/WIN,以免对向导中相关概念发生误解。建议用户使用较新的编程软件版本。在新版本中的 PID 向导获得了改善。PID 向导编程步骤在 Micro/WIN 中的命令菜单中选择 Tools Instruction Wizard,然后在指令向导窗口中选择 PID 指令:在使用向导时必须先对项目进行编译,在随后弹出的对话框中选择“Yes” ,确认编译。如果已有的程序中存在错误,或者有没有编完的指令,编译不能通过。如果你的项目中已经配置了一个 PID
9、 回路,则向导会指出已经存在的 PID 回路,并让你选择是配置修改已有的回路,还是配置一个新的回路:第一步:定义需要配置的 PID 回路号第二步:设定 PID 回路参数定义回路设定值(SP,即给定)的范围:在低限(Low Range)和高限(High Range)输入域中输入实数,缺省值为0.0和100.0,表示给定值的取值范围占过程反馈量程的百分比。这个范围是给定值的取值范围。它也可以用实际的工程单位数值表示。参见:设置给定反馈的量程范围。以下定义 PID 回路参数,这些参数都应当是实数:Gain(增益): 即比例常数。 Integral Time(积分时间):如果不想要积分作用,可以把积分
10、时间设为无穷大:输入“INF” 。 Derivative Time(微分时间):如果不想要微分回路,可以把微分时间设为0 。 Sample Time(采样时间):是 PID 控制回路对反馈采样和重新计算输出值的时间间隔。在向导完成后,若想要修改此数,则必须返回向导中修改,不可在程序中或状态表中修改。 注意:关于具体的 PID 参数值,每一个项目都不一样,需要现场调试来定,没有所谓经验参数。 第三步:设定回路输入输出值指定输入类型 Unipolar: 单极性,即输入的信号为正,如010V 或020mA 等 Bipolar:双极性,输入信号在从负到正的范围内变化。如输入信号为10V、5V 等时选用
11、 20% Offset:选用20%偏移。如果输入为420mA 则选单极性及此项,4mA 是020mA 信号的20%,所以选20% 偏移,即4mA 对应6400,20mA 对应32000反馈输入取值范围 在 a.设置为 Unipolar 时,缺省值为0 - 32000,对应输入量程范围0 - 10V 或0 - 20mA 等,输入信号为正 在 a.设置为 Bipolar 时,缺省的取值为-32000 - +32000,对应的输入范围根据量程不同可以是10V、5V 等 在 a.选中20% Offset 时,取值范围为6400 - 32000,不可改变 此反馈输入也可以是工程单位数值,参见:设置给定反
12、馈的量程范围。然后定义输出类型Output Type(输出类型)可以选择模拟量输出或数字量输出。模拟量输出用来控制一些需要模拟量给定的设备,如比例阀、变频器等;数字量输出实际上是控制输出点的通、断状态按照一定的占空比变化,可以控制固态继电器(加热棒等) 选择模拟量则需设定回路输出变量值的范围,可以选择: Unipolar:单极性输出,可为010V 或020mA 等 Bipolar:双极性输出,可为正负10V 或正负5V 等 20% Offset:如果选中20% 偏移,使输出为4 - 20mA 取值范围: d 为 Unipolar 时,缺省值为 0 到 32000 d 为 Bipolar 时,取
13、值-32000到32000 d 为20% Offset 时,取值6400 - 32000,不可改变 如果选择了开关量输出,需要设定此占空比的周期。第四步:设定回路报警选项向导提供了三个输出来反映过程值(PV)的低值报警、高值报警及过程值模拟量模块错误状态。当报警条件满足时,输出置位为1。这些功能在选中了相应的选择框之后起作用。使能低值报警并设定过程值(PV)报警的低值,此值为过程值的百分数,缺省值为0.10,即报警的低值为过程值的10。此值最低可设为0.01,即满量程的1% 使能高值报警并设定过程值(PV)报警的高值,此值为过程值的百分数,缺省值为0.90,即报警的高值为过程值的90。此值最高
14、可设为1.00,即满量程的100% 使能过程值(PV)模拟量模块错误报警并设定模块于 CPU 连接时所处的模块位置。 “0”就是第一个扩展模块的位置 第五步:指定 PID 运算数据存储区PID 指令(功能块)使用了一个120个字节的 V 区参数表来进行控制回路的运算工作;除此之外,PID 向导生成的输入/输出量的标准化程序也需要运算数据存储区。需要为它们定义一个起始地址,要保证该地址起始的若干字节在程序的其它地方没有被重复使用。如果点击“Suggest Address” ,则向导将自动为你设定当前程序中没有用过的 V 区地址。自动分配的地址只是在执行 PID 向导时编译检测到空闲地址。向导将自
15、动为该参数表分配符号名,用户不要再自己为这些参数分配符号名,否则将导致 PID 控制不执行。第六步:定义向导所生成的 PID 初使化子程序和中断程序名及手/自动模式向导已经为初使化子程序和中断子程序定义了缺省名,你也可以修改成自己起的名字。指定 PID 初使化子程序的名字。 指定 PID 中断子程序的名字注意: 如果你的项目中已经存在一个 PID 配置,则中断程序名为只读,不可更改。因为一个项目中所有 PID 共用一个中断程序,它的名字不会被任何新的 PID 所更改。 PID 向导中断用的是 SMB34定时中断,在用户使用了 PID 向导后,注意在其它编程时不要再用此中断,也不要向 SMB34
16、中写入新的数值,否则 PID 将停止工作。 此处可以选择添加 PID 手动控制模式。在 PID 手动控制模式下,回路输出由手动输出设定控制,此时需要写入手动控制输出参数一个0.01.0的实数,代表输出的0100而不是直接去改变输出值。PID 控制的自动/手动之间的无扰动切换 第七步:生成 PID 子程序、中断程序及符号表等一旦点击完成按钮,将在你的项目中生成上述 PID 子程序、中断程序及符号表等。第八步:配置完 PID 向导,需要在程序中调用向导生成的 PID 子成序在用户程序中调用 PID 子程序时,可在指令树的 Program Block(程序块)中用鼠标双击由向导生成的PID 子程序,
17、在局部变量表中,可以看到有关形式参数的解释和取值范围。必须用 SM0.0来使能 PIDx_INIT 子程序,SM0.0 后不能串联任何其他条件,而且也不能有越过它的跳转;如果在子程序中调用 PIDx_INIT 子程序,则调用它的子程序也必须仅使用 SM0.0 调用,以保证它的正常运行 此处输入过程值(反馈)的模拟量输入地址 此处输入设定值变量地址(VDxx) ,或者直接输入设定值常数,根据向导中的设定0.0100.0,此处应输入一个0.0100.0的实数,例:若输入20,即为过程值的20,假设过程值 AIW0是量程为0200度的温度值,则此处的设定值20代表40度(即200度的20) ;如果在
18、向导中设定给定范围为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,则设
19、定为输出的50。若在向导中没有选择 PID 手动功能,则此项不会出现 此处键入控制量的输出地址 当高报警条件满足时,相应的输出置位为1,若在向导中没有使能高报警功能,则此项将不会出现 当低报警条件满足时,相应的输出置位为1,若在向导中没有使能低报警功能,则此项将不会出现 当模块出错时,相应的输出置位为1,若在向导中没有使能模块错误报警功能,则此项将不会出现 调用 PID 子程序时,不用考虑中断程序。子程序会自动初始化相关的定时中断处理事项,然后中断程序会自动执行。第九步:实际运行并调试 PID 参数没有一个 PID 项目的参数不需要修改而能直接运行,因此需要在实际运行时调试 PID 参数。查看 Data Block(数据块) ,以及 Symbol Table(符号表)相应的 PID 符号标签的内容,可以找到包括PID 核心指令所用的控制回路表,包括比例系数、积分时间等等。将此表的地址复制到 Status Chart(状态表)中,可以在监控模式下在线修改 PID 参数,而不必停机再次做配置。参数调试合适后,用户可以在数据块中写入,也可以再做一次向导,或者编程向相应的数据区传送参