1. 工业控制系统与Simulink开发环境

工业控制系统(Industrial Control System, ICS)是面向连续生产、批量加工或离散制造过程,以可编程控制器、传感器、执行器和上位监控软件为核心,对温度、压力、流量、位置、速度等物理量进行实时采集、运算与调节的自动化系统。它的本质是一个“感知—决策—执行”的闭环:传感器把物理量转换为电信号,控制器按既定算法计算控制量,执行器(阀门、变频器、伺服电机等)改变被控对象状态,再由传感器重新测量,形成持续反馈。理解这一闭环结构,是后续用Simulink建模的前提。

1.1 工业控制系统的组成与典型架构

从功能层次看,工业控制系统通常分为三层。现场层包含传感器、变送器、执行机构与驱动装置,直接与被控对象接触;控制层由PLC、DCS控制器、运动控制器或工控机组成,承担实时逻辑运算、PID调节、联锁保护;监控层由SCADA、HMI、历史数据库与工程师站组成,负责画面监视、参数下发、报警管理与数据归档。三层之间通过现场总线(如Profibus、Modbus、EtherCAT)或工业以太网(Profinet、EtherNet/IP)连接,形成自上而下的指令流与自下而上的数据流。

按被控对象与行业习惯,工业控制系统可分为过程控制系统(化工、电力、冶金,以温度、压力、流量、液位等慢变量为主)、运动控制系统(机床、机器人、包装线,以位置、速度、转矩等快变量为主)和离散逻辑控制系统(装配线、分拣线,以开关量、顺序逻辑为主)。分类不同,对采样周期、控制算法和实时性的要求差异很大:过程控制常见采样周期为100 ms~1 s,运动控制则常在1 ms甚至更短。

工业控制系统三层架构与Simulink定位 监控层 SCADA / HMI 历史数据库 工程师站 Simulink 算法验证 控制层 PLC / DCS 运动控制器 PID / 逻辑运算 控制算法模型 现场层 传感器/变送器 执行机构 变频器/伺服 被控对象 参数下发 / 指令 控制输出 测量反馈 状态 / 报警 Simulink 作用:在监控层/控制层之间,用模型替代真实控制器,先验证算法与参数,再下载到 PLC 或生成代码。 典型采样周期:过程控制 100 ms~1 s;运动控制 1 ms~10 ms。

1.2 Simulink在控制系统开发中的定位

Simulink是MATLAB中的图形化建模与仿真环境,用模块和信号线描述动态系统。在工业控制开发中,它承担三类角色:一是算法验证平台,在真实设备投运前,用被控对象模型替代现场设备,检验PID参数、前馈补偿、状态机逻辑是否稳定;二是代码生成来源,通过Simulink Coder或PLC Coder把模型自动转换为C代码或PLC结构化文本,减少手写代码错误;三是系统级分析工具,用于频域分析、阶跃响应、抗扰能力评估。它不替代PLC的实时运行,而是把“试错”从现场搬到桌面。

1.3 Simulink界面、模块库与求解器

打开Simulink后,常用入口是Library Browser(库浏览器),其中与工业控制最相关的是:Sources(Step、Sine Wave、Signal Generator)、Sinks(Scope、To Workspace、Display)、Continuous(Integrator、Transfer Fcn、State-Space)、Discrete(Discrete PID、Unit Delay、Zero-Order Hold)、Math Operations(Gain、Sum、Saturation)以及Signal Routing(Mux、Demux、Switch)。建模时把模块拖入画布,用信号线连接端口,双击模块设置参数。

求解器决定仿真如何推进。定步长求解器(如ode4、ode1)按固定时间间隔计算,适合需要生成代码或与实时系统对齐的场景;变步长求解器(如ode45)根据误差自动调整步长,适合精度要求高、动态变化剧烈的模型。工业控制仿真中,若控制器是离散的,通常把求解器设为定步长,步长与控制器采样周期一致,例如Ts=0.01 s,这样仿真结果更接近实际PLC执行节奏。

1.4 搭建第一个工业控制仿真模型

下面以一个“加热炉温度闭环控制”为例,说明从零搭建的过程。被控对象可近似为一阶惯性加纯滞后:G(s)=K/(Ts+1)·e^(-τs),取K=2、T=30 s、τ=5 s,目标温度设定值80 ℃,初始炉温20 ℃。控制器采用离散PID,采样周期Ts=0.5 s。

操作步骤:新建Blank Model;从Sources拖入Step,设置Step time=0、Initial value=20、Final value=80;从Continuous拖入Transfer Fcn,分子设为[2],分母设为[30 1];从Continuous拖入Transport Delay,Time delay设为5;从Discrete拖入Discrete PID Controller,Sample time设为0.5,P=1.2、I=0.05、D=0.1;从Sinks拖入Scope,把设定值、实际温度、控制量三路信号用Mux合并后接入Scope。把PID输出经Saturation限幅到0~100(对应阀门开度百分比),再接入被控对象。

模型信号链:
Step(80℃) → Sum(+) → Discrete PID → Saturation[0,100] → Transfer Fcn(2/(30s+1)) → Transport Delay(5s) → Scope
                ↑                                                                        |
                └──────────────────────── 反馈温度 ────────────────────────────────────┘

配置仿真:Simulation → Model Configuration Parameters,Solver选Fixed-step、ode4,Fixed-step size设为0.5;Stop time设为200 s。点击Run,观察Scope曲线。判断依据:温度应在约5 s后开始上升,经过约60~80 s接近80 ℃,超调量控制在10%以内(即不超过88 ℃),稳态误差小于1 ℃。若超调过大,减小P或增大D;若响应过慢,适当增大P或减小I的积分时间。若曲线发散,检查反馈极性是否接反——Sum模块的反馈端口应为负号。

首次建模建议先不加PID,用Step直接驱动被控对象,观察开环响应,确认对象模型和延迟设置正确后,再接入闭环控制器。这样能把“对象问题”和“控制器问题”分开排查。

1.5 从模型到工业现场的衔接

仿真通过后,下一步是把模型中的PID参数和逻辑映射到实际控制器。常见做法是:在Simulink中固定采样周期与PLC一致,用Scope记录控制量变化范围,确认没有频繁饱和;再用PLC Coder生成结构化文本,或手动把PID参数填入PLC的PID功能块。现场投运时先手动给定,再切自动,观察实际温度曲线与仿真曲线的偏差,若偏差大,优先检查传感器滤波、阀门死区和纯滞后是否与模型一致。Simulink的价值正在于:让这些判断在电脑上先做一遍,减少现场停机时间。