# PID Compact 介绍

## PID功能

PID功能用于对闭环过程进行控制。PID控制适用于温度，压力，流量等物理量，是工业现场中应用最为广泛的一种控制方式，其原理是，对被控对象设定一个给定值，然后将实际值测量出来，并与给定值比较，将其差值送入PID控制器，PID控制器按照一定的运算规律，计算出结果，即为输出值，送到执行器进行调节，其中的P,I,D指的是比例，积分，微分，是一种闭环控制算法。通过这些参数，可以使被控对象追随给定值变化并使系统达到稳定，自动消除各种干扰对控制过程的影响。

### S7-1200 PID控制器

S7-1200 CPU提供了PID控制器回路数量受到CPU的工作内存及支持DB块数量限制。严格上说并没有限制具体数量，但实际应用推荐客户不要超过16路PID回路。可同时进行回路控制，用户可手动调试参数，也可使用自整定功能，提供了两种自整定方式由PID控制器自动调试参数。另外STEP7 Basic还提供了调试面板，用户可以直观的了解控制器及被控对象的状态。

### PID控制器结构

PID控制器功能主要依靠三部分实现，循环中断块，PID指令块，工艺对象背景数据块。用户在调用PID指令块时需要定义其背景数据块，而此背景数据块需要在工艺对象中添加，称为工艺对象背景数据块。PID指令块与其相对应的的工艺对象背景数据块组合使用，形成完整的PID控制器。PID控制器结构如图1。  
![](images/1-01.jpg)

  
图1 PID控制器结构  
  
循环中断块可按一定周期产生中断，执行其中的程序。PID指令块定义了控制器的控制算法，随着循环中断块产生中断而周期性执行，其背景数据块用于定义输入输出参数，调试参数以及监控参数。此背景数据块并非普通数据块，需要在目录树视图的工艺对象中才能找到并定义。

## S7-1200 PID_Compact 的版本说明

自软件 TIA Protal V13 起，固件为 4.0 或更高版本的 S7-1200，可以使用 PID_Compact V2.2 指令。

S7-1200 在 V4.0 以上，TIA V13 SP1 以上，使用 S7-PLCSIM V13 SP1 可以仿真 PLC 程序，**但不支持工艺功能（高速计数器、运动控制、PID 调节）的仿真。**

### **PID_Compact 的版本与 CPU 和 FW 的兼容性**

下表显示了 PID_Compact 的每个版本可用于哪种 CPU：

|     |     |     |
| --- | --- | --- |
| **CPU** | **FW** | **PID_Compact** |
| S7-1200 | ≥ V4.x | V2.2  <br>V1.2 |
| S7-1200 | ≥ V3.x | V1.2  <br>V1.1 |
| S7-1200 | ≥ V2.x | V1.2  <br>V1.1 |
| S7-1200 | ≥ V1.x | V1.0 |

### PID_Compact V2.x 的 CPU 处理时间和存储器要求

PID_Compact V2.0 工艺对象典型 CPU 处理时间（取决于 CPU 类型）：

|     |     |
| --- | --- |
| CPU | 典型 CPU 处理时间 (PID_Compact V2.x) |
| CPU 1211C ≥ V4.0 | 300 µs |
| CPU 1215C ≥ V4.0 | 300 µs |
| CPU 1217C ≥ V4.0 | 300 µs |

PID_Compact V2.0 工艺对象背景数据块的存储器要求：

|     |     |
| --- | --- |
| 分类  | PID_Compact V2.x 背景数据块的存储器要求 |
| 装载存储器要求 | 约 12000 个字节 |
| 总工作存储器要求 | 788 个字节 |
| 保持性工作存储器要求 | 44 个字节 |

### PID_Compact 不同版本的特性

在 TIA Protal 软件中使用 PID 功能，有两种方式选择 PID 的指令版本。  
方式一、通过在工艺对象中添加新对象，在弹出的“新增对象”对话框中，左侧竖列选择 “PID” 后，看对话框中间部分对于 “Compact PID” 版本的选择，如图 2 和图 3 所示：  
![](images/1-02.PNG)  
图2、工艺对象-添加新对象

![](images/1-03.PNG)  
图3、选择 Compact PID 指令文件夹版本

方式二、当程序处于编程界面时，右侧指令栏中在工艺 \> PID 控制 > Compact PID 指令 > 版本选择，如图4 和图 5所示：  
![](images/1-04.PNG)  
图4、指令栏 > 工艺 > Compact PID

![](images/1-05.PNG)  
图5、Compact PID 不同版本选择

Compact PID文件夹 V5.0 和 V4.0 的区别是 PID\_Temp 指令，其中 PID\_Compact 指令均为 V2.2. 编写 PID 功能时，可以使用上述方法进行 PID 指令的版本选择。  
在硬件版本一定的情况下，建议使用对应固件中最新版本的指令。PID Compact 指令不同版本所对应新特性，如下表所示：

|     |     |
| --- | --- |
| **PID_Compact 版本** | **不同版本指令的新特性** |
| V2.2 | **全面改进对错误的响应**  <br>Error 指示是否存在错误处于未决状态。如果 Error=TRUE，则此周期内至少有一条错误消息处于未决状态。ErrorBits 显示发生的具体错误。  <br>使用 ErrorAck 在不重启控制器或清除积分作用的情况下确认错误和警告。切换工作模式不会清除处于非未决状态的错误。  <br>使用 Reset 可以重启控制器、清除积分作用，同时清除处于非未决状态的错误。  <br>**组态界面增加对错误响应的设置**  <br>可使用 SetSubstituteOutput 和 ActivateRecoverMode 来组态对错误的响应。  <br>**使用 Mode 和 ModeActivate 来切换工作模式**  <br>**将 PID_Compact 作为多重背景数据块进行调用**  <br>**启动特性**  <br>**根据工作模式设置 ENO**  <br>如果 State=0，则 ENO=FALSE;如果 State≠0，则 ENO=TRUE。  <br>**可修改调节期间允许的设定值拐点（CancelTuningLevel）**  <br>**输出值限值的范围（下限可小于 0.0）**  <br>**增加积分的预分配作用**  <br>从“未激活”切换到“自动模式”时，可使用变量 IntegralResetMode 和 OverwriteInitialOutputValue 确定积分作用的预分配。  <br>**在 Disturbance 参数中启用扰动变量**  <br>**PID** **参数的默认值(更改权重系数)**  <br>**重命名某些变量名称** |
| V1.2 | **CPU 启动时的手动模式**  <br>如果 CPU 启动时 ManualEnable = TRUE，则 PID_Compact 以手动模式启动。 并非一定需要 ManualEnable 出现上升沿。  <br>**预调节**  <br>如果在预调节期间关闭 CPU，当重新开启 CPU 时预调节会再次启动。 |
| V1.1 | **CPU 启动时的手动模式**  <br>CPU 启动时，仅在 ManualEnable 出现上升沿时，PID_Compact 才切换到手动模式。  <br>没有上升沿时，PID_Compact 在 ManualEnable 为 FALSE 的上一个工作模式下启动。  <br>**对 Reset** **的响应**  <br>Reset 上升沿时会复位错误和警告并清除积分作用，Reset 下降沿会触发切换到最近激活的工作模式。  <br>**过程值的默认上限（更改为 120.0）** |