2. PLC基础回顾

在进入结构化编程之前,有必要把PLC最核心的运行机制重新梳理一遍。很多调试问题——比如输入信号明明已经接通,程序里却读不到;输出指令已经执行,端子却没有动作——根源往往不在程序逻辑,而在对扫描周期和过程映像的理解不够扎实。本节围绕四个关键词展开:循环扫描、过程映像、PLC家族、TIA Portal。

一、PLC为什么是“循环扫描”

PLC与普通计算机最大的区别在于:它不追求“事件驱动”的即时响应,而是以固定节奏反复执行同一段程序。这个节奏就是扫描周期。一个完整周期通常包含以下几个阶段:

  1. 读取输入:把物理输入端子上的电平状态一次性复制到“输入过程映像区(PII)”。
  2. 执行用户程序:CPU按顺序逐条执行梯形图、功能块或语句表,运算过程中读取的是过程映像区,而不是直接读端子。
  3. 写入输出:程序运算得到的输出结果先写入“输出过程映像区(PIQ)”,再在周期末尾统一刷新到物理输出模块。
  4. 系统通信与自诊断:处理通信请求、模块状态检查、看门狗等后台任务。

这个“先集中采样、再集中执行、最后集中输出”的机制,决定了PLC程序具有天然的周期性一致特点:在一个扫描周期内,输入映像的值不会中途改变,输出也不会立即跳变。理解这一点,是理解后续所有编程规范的前提。

PLC循环扫描周期与过程映像 物理输入 I0.0 / I0.1 … 输入过程映像 PII(周期内冻结) CPU执行用户程序 梯形图 / FBD / SCL 读PII → 运算 → 写PIQ OB1 主循环 输出过程映像 PIQ(周期末刷新) 物理输出 Q0.0 / Q0.1 … 循环往复:下一周期重新采样输入

二、过程映像区:为什么程序里读的不是端子

过程映像区是CPU内部的一块存储区域,分为输入映像(PII)和输出映像(PIQ)。程序访问I/Q地址时,实际访问的是这块映像区。这样做有三个好处:

  • 数据一致性:同一周期内多次读取同一个输入,结果完全相同,避免逻辑抖动。
  • 执行效率:访问内存比访问I/O模块快得多。
  • 输出保护:输出在周期末统一刷新,避免程序中间状态造成输出抖动。
在S7-1200/1500中,还可以使用立即读/立即写指令(如 PEEK、POKE 或外设直接访问 I0.0:P)绕过过程映像,直接访问物理点。这类操作要谨慎使用,否则会破坏周期一致性。

三、西门子PLC家族与选型对照

西门子PLC产品线覆盖面很广,从微型到大型大致可分为以下几类。了解它们的定位,有助于在项目中做出合理选型。

系列 典型型号 编程平台 适用场景
LOGO! LOGO! 0BA8 LOGO! Soft Comfort 小型逻辑控制、楼宇、照明
S7-200 SMART CPU SR20/ST40 STEP 7-Micro/WIN SMART 小型设备、单机控制
S7-1200 CPU 1214C/1215C TIA Portal 中小型自动化、模块化设备
S7-1500 CPU 1511/1516 TIA Portal 中大型产线、过程控制
S7-300/400 CPU 315/416 STEP 7 Classic 存量项目、老系统维护

对于本课程,重点放在S7-1200/1500 + TIA Portal这一组合上。它是目前西门子主推的平台,也是结构化编程能力最强的平台。

四、TIA Portal:不只是编程软件

TIA Portal(全集成自动化门户)把PLC编程、HMI组态、驱动配置、网络组态整合在同一个工程环境中。它的核心概念包括:

  • 项目视图:左侧项目树管理设备、程序块、变量表、工艺对象。
  • 设备与网络:图形化配置硬件机架、IP地址、PROFINET连接。
  • 程序块:OB(组织块)、FB(功能块)、FC(功能)、DB(数据块)是结构化编程的四大支柱。
  • 变量表:PLC变量、用户常量、系统常量的集中管理。
TIA Portal的“块”概念是结构化编程的入口:OB决定程序何时执行,FB/FC决定程序做什么,DB决定程序记住什么。后续章节将围绕这四类块展开。

五、常见误区与复盘

在实际调试中,以下几个误区非常典型:

  1. “输入一接通,程序里马上就能读到”:错。输入要等下一个扫描周期的输入采样阶段才会进入PII。如果信号变化发生在采样之后,本周期读到的仍是旧值。
  2. “输出指令执行了,端子就一定有电”:错。输出先写PIQ,周期末才刷新到模块。如果程序在周期中间被中断或跳转,输出可能不会按预期刷新。
  3. “扫描周期越短越好”:不一定。周期过短可能导致通信和诊断任务被挤压;周期过长则影响响应速度。合理做法是评估最坏情况下的周期时间,并留出余量。
  4. “用立即读写代替过程映像更方便”:短期看似方便,长期会破坏程序的可预测性,增加调试难度。
在编写高速响应逻辑(如急停、限位保护)时,不能只依赖普通输入映像。应结合硬件安全回路、中断OB(如OB40)或立即读指令,确保响应时间满足安全要求。

把扫描周期、过程映像、PLC家族和TIA Portal这四块基础打牢,后续学习OB/FB/FC/DB的结构化编程时,才能清楚每一段代码在什么时刻执行、读写的是哪一块内存、对物理世界产生什么影响。