梯形图举例说明欧姆龙CPM2A系列PLC(注:CPM2HA是其中的一个型号)中PID指令的使用方法。
欧姆龙CPM2A的PID指令非常经典,它通过一个指定的参数表来工作,而不是在指令中直接填写参数。理解这个参数表的结构是成功使用的关键。

1. PID指令介绍
• 指令符:PID
• 操作数:PID S C D
◦ S:输入字,存放设定值(SV)的通道地址。
◦ C:参数首字,这是一个连续的数据区域(从C到C+32),用于存放PID的所有参数,包括设定值、比例带、积分时间等,以及指令工作用的内部参数。
◦ D:输出字,存放PID计算结果的输出值(MV)的通道地址。
2. PID参数表结构
这是最关键的部分。参数表占用33个通道(从C到C+32),您必须在执行PID指令前,预先在程序中(通常是在第一个扫描周期用FIRST CYCle位)将必要的参数写入这些通道。


通道地址
参数说明
含义
设置范围
举例值
C
设定值 (SV)
您希望达到的目标值
取决于您的量程
600
C+1
比例带 (P)
比例作用的范围
0-9999 (0.1-999.9%)
300 (即30.0%)
C+2
积分时间 (Tik)
积分作用的速度
0-9999 (0.1-999.9秒)
100 (即10.0秒)
C+3
微分时间 (Tdk)
微分作用的强度
0-9999 (0.1-999.9秒)
50 (即5.0秒)
C+4
采样周期 (Ts)
PID运算的间隔时间
0-9999 (0.01-99.99秒)
10 (即0.10秒)
C+5
2-PID参数 α
微分增益
0-9999 (0.00-0.99)
通常设为0
C+6
输入范围
模拟量输入信号的范围
0000-FFFF
0000 (0-4000)
C+7
输出范围
PID输出值的范围
0000/0001
0000 (0-4000)
C+8 至 C+32
工作区
PLC内部使用,切勿写入数据
-
-
注意:C+6和C+7的设置非常关键。0000通常代表0-4000,对应模拟量模块的4-20mA或0-10V信号转换后的数字量范围。

3. 应用举例
控制要求:用一个温度传感器(4-20mA输入到模拟量输入通道010),控制一个加热器(通过模拟量输出通道011输出4-20mA)。我们将温度稳定在 60.0°C。温度变送器量程为0-100°C。
1. 计算设定值 (SV):
◦ 量程0-100°C对应数字量0-4000。
◦ 目标值60°C对应的数字量 = (60 / 100) * 4000 = 2400。
◦ 因此,我们将SV设置为2400。
2. 分配参数区:
◦ 我们选择DM区作为参数表,因为它断电保持。假设从DM100开始。
◦ S -> 2400 (存放在DM100)
◦ C -> D100 (参数表从D100开始)
◦ D -> 011 (输出通道,直接控制模拟量输出)
3. 初始化参数:
◦ 在第一个扫描周期,用MOV指令将参数写入参数表。
4. 梯形图程序:
ladder

复制

下载
| | First Cycle Flag | |
| | P_First_Cycle | |
| |-------| |---------| [MOV #02400 ] | 将设定值2400送入DM100
| | | D100 |
| | | |
| | First Cycle Flag | |
| | P_First_Cycle | |
| |-------| |---------| [MOV #00300 ] | 设置比例带P=30.0% -> DM101
| | | D101 |
| | | |
| | First Cycle Flag | |
| | P_First_Cycle | |
| |-------| |---------| [MOV #00100 ] | 设置积分时间Ti=10.0秒 -> DM102
| | | D102 |
| | | |
| | First Cycle Flag | |
| | P_First_Cycle | |
| |-------| |---------| [MOV #00050 ] | 设置微分时间Td=5.0秒 -> DM103
| | | D103 |
| | | |
| | First Cycle Flag | |
| | P_First_Cycle | |
| |-------| |---------| [MOV #00010 ] | 设置采样周期Ts=0.10秒 -> DM104
| | | D104 |
| | | |
| | First Cycle Flag | |
| | P_First_Cycle | |
| |-------| |---------| [MOV #00000 ] | 设置α=0 -> DM105
| | | D105 |
| | | |
| | First Cycle Flag | |
| | P_First_Cycle | |
| |-------| |---------| [MOV #00000 ] | 设置输入范围0-4000 -> DM106
| | | D106 |
| | | |
| | First Cycle Flag | |
| | P_First_Cycle | |
| |-------| |---------| [MOV #00000 ] | 设置输出范围0-4000 -> DM107
| | | D107 |
| | | |
| | Always ON Flag | |
| | P_On | |
| |-------| |---------| [ PID ] | 每扫描周期执行一次PID运算
| | | 010 D100 011 |
| | | (S) (C) (D) |


梯形图解释:
• 上半部分:利用首次扫描标志P_First_Cycle,在程序运行的第一时间将PID参数写入到从D100开始的参数表中。
• 下半部分:利用常通标志P_On,在每个PLC扫描周期都执行一次PID指令。
◦ S是010,即从模拟量输入通道010读取当前的过程值(PV)。
◦ C是D100,指定参数表从DM100开始。
◦ D是011,将计算出的输出值(MV)直接写入模拟量输出通道011,从而控制加热器功率。
4. PID调试步骤
1. 初步设定:先将积分时间Tik(C+2)和微分时间Tdk(C+3)设为0,即关闭积分和微分作用,只使用比例控制(P)。
2. 调整P:逐渐减小比例带P(C+1)的数值,直到系统开始出现等幅振荡。此时的比例带称为“临界比例带Pu”,振荡周期称为“临界周期Tu”。
3. 设置PID参数:根据齐格勒-尼科尔斯整定法,参考以下经验公式设置:
◦ P = 0.6 * Pu
◦ Ti = 0.5 * Tu (积分时间)
◦ Td = 0.125 * Tu (微分时间)
4. 微调:将计算出的参数填入参数表,观察系统响应(超调量、稳定时间等),根据实际情况进行细微调整,直到达到最佳控制效果。
总结:使用CPM2A的PID指令,核心是正确建立和初始化参数表,然后使用一条简单的PID指令即可完成复杂的控制。调试则需要根据实际系统的响应来整定P、I、D三个参数。