观看程序指令PID视频:
转换和标准化回路输入
一个回路有两个输入变量,分别是设定值和过程变量。 设定值通常是固定值,例如汽车 巡航控制装置上的速度设置。 过程变量是与回路输出相关的值,因此可衡量回路输出对 受控系统的影响。 在巡航控制示例中,过程变量是测量轮胎转速的测速计输入。 设定值和过程变量都是实际值,其大小、范围和工程单位可以不同。 在 PID 指令对这些 实际值进行运算之前,必须将这些值转换为标准化的浮点型表示。 步是将实际值从 16 位整数值转换为浮点值或实数值。 下面的指令序列显示了如何将 整数值转换为实数值。
ITD AIW0, AC0 //将输入值转换为双字
DTR AC0, AC0 //将 32 位整数转换为实数
下一步是将实际值的实数值表示转换为 0.0 到 1.0 之间的标准化值。
下面的公式用于标 准化设定值或过程变量值:
RNorm = ((RRaw / Span) + Offset)
其中: RNorm 实际值的标准化实数值表示 RRaw 实际值的非标准化或原始实数值表示 偏移 对于单极性值为 0.0 对于双极性值为 0.5 跨度 大可能值减去小可能值: 对于单极性值为 27,648(典型值) 对于双极性值为 55,296(典型值) 下面的指令序列显示了如何标准化 AC0 中的双极性值(其跨度为 55,296),该指令序列 是前一指令序列延续: /R 55296.0, AC0 //标准化累加器中的值 +R 0.5, AC0 //将值转换到 0.0 到 1.0 之间 MOVR AC0, VD100 //将标准化值存储在回路表中
将回路输出转换为标定整数值
回路输出是控制变量,例如汽车巡航控制装置上的节气门设置。 回路输出是介于 0.0 到 1.0 之间的标准化实数值。 回路输出转换为 16 位标定整数值后,才能用于驱动模拟量输 出。 此过程与将 PV 和 SP 转换为标准化值的过程相反。 步是使用下面给出的公式 将回路输出转换为标定实数值: RScal 回路输出的标定实数值 Mn 回路输出的标准化实数值 偏移 对于单极性值为 0.0 对于双极性值为 0.5 跨度 大可能值减去小可能值: 对于单极性值为 27,648(典型值) 对于双极性值为 55,296(典型值) 以下指令序列显示了如何标定回路输出: MOVR VD108, AC0 //将回路输出移至累加器 -R 0.5, AC0 //仅当值为双极性值时才使用本语句 *R 55296.0, AC0 //标定累加器中的值 接下来,必须将代表回路输出的标定实数值转换为 16 位整数。 下列指令序列显示了如何 进行此转换: ROUND AC0, AC0 //将实数转换为 32 位整数 DTI AC0, LW0 //将该值转换为 16 位整数 MOVW LW0, AQW0 //将该值写入到模拟量输出
正作用或反作用回路
如果增益为正,则回路为正作用回路;如果增益为负,则回路为反作用回路。 (对于增 益值为 0.0 的 I 或 ID 控制,如果将积分时间和微分时间指定为正值,则回路将是正作用 回路;如果指定负值,则回路将是反作用回路。)
变量和范围
过程变量和设定值是 PID 计算的输入值。 因此,PID 指令只能读出这些变量的回路表字 段,而不能改写。 输出值通过 PID 计算得出,因此,每次 PID 计算完成之后,会更新回路表中的输出值字 段。 输出值限定在 0.0 到 1.0 之间。 当输出从手动控制转换为 PID 指令(自动)控制 时,用户可使用输出值字段作为输入来指定初始输出值。 (请参见下面的“模式”部分中的 讨论。) 如果使用积分控制,则偏置值通过 PID 计算更新,并且更新值将用作下一次 PID 计算的 输入。 如果计算出的输出值超出范围(输出小于 0.0 或大于 1.0),则将按照下列公式调 整偏置: ● 如果计算出的输出 Mn > 1.0 ● 如果计算出的输出 Mn < 0 MX 调整后的偏置值 MPn 采样时间 n 时回路输出的比例项值 MDn 采样时间 n 时回路输出的微分项值 Mn 采样时间 n 时的回路输出值 如上所述调整偏置后,如果计算出的输出回到正常范围内,可提高系统响应性。 计算出 的偏置也会限制在 0.0 到 1.0 之间,然后在每次 PID 计算完成时写入回路表的偏置字段。 存储在回路表中的值用于下一次 PID 计算。 用户可以在执行 PID 指令之前修改回路表中的偏置值,在某些应用情况下,这样可以解 决偏置值问题。 手动调整偏置时必须格外小心,向回路表中写入的任何偏置值都必须是 0.0 到 1.0 之间的实数。 过程变量的比较值保留在回路表中,用于 PID 计算的微分作用部分。 不应修改该值。
模式
PID 回路没有内置模式控制。 仅当能流流到 PID 功能框时才会执行 PID 计算。 因此,循 环执行 PID 计算时存在“自动化”或“自动”模式。 不执行 PID 计算时存在“手动”模式。 与计数器指令相似,PID 指令也具有能流历史位。 该指令使用该历史位检测 0 到 1 的能 流转换。 如果检测到能流转换,该指令将执行一系列操作,从而实现从手动控制无扰动 地切换到自动控制。 要无扰动地切换到自动模式,在切换到自动控制之前,必须提供手 动控制设置的输出值作为 PID 指令的输入(写入 Mn 的回路表条目)。 检测到 0 到 1 的 能流转换时,PID 指令将对回路表中的值执行以下操作,以确保无扰动地从手动控制切换 到自动控制: ● 设置设定值 (SPn) = 过程变量 (PVn) ● 设置旧过程变量 (PVn-1) = 过程变量 (PVn) ● 设置偏置 (MX) = 输出值 (Mn) PID 历史位的默认状态为“置位”,控制器启动和每次从 STOP 切换到 RUN 模式时设置此 状态。 如果在进入 RUN 模式后执行 PID 功能框时有能流流到该功能框,则检测不 到能流转换且不会执行无扰动模式切换操作。
报警检查和特殊操作
PID 指令是一种简单但功能强大的指令,可执行 PID 计算。 如果需要进行其它处理,例 如报警检查或回路变量的特殊计算,则必须使用 CPU 支持的基本指令来实现。
错误条件
如果在指令中指定的回路表起始地址或 PID 回路编号操作数超出范围,那么在编译时, CPU 将生成编译错误(范围错误),编译将失败。 PID 指令不检查某些回路表输入值是否超出范围。 必须确保过程变量和设定值(以及用 作输入的偏置和前一过程变量)是 0.0 到 1.0 之间的实数。 如果在执行 PID 计算的数学运算时发生任何错误,将置位 SM1.1(溢出或非法值),PID 指令将终止执行。 (回路表中输出值的更新可能不完全,因此,在下一次执行回路的 PID 指令之前应忽略这些值并纠正引起数学运算错误的输入值。