DYING4EVER

NOTES

第04章_S7-1200程序设计基础与指令

第4章 S7-1200程序设计基础与指令

资料来源

  • PPT:第3.1章 S7-1200程序设计基础.pptx
  • PPT:第3.2章 S7-1200的指令260322.pptx
  • 辅导书:S7-1200 PLC编程及应用 第3版,对应第2章“S7-1200程序设计基础”和第3章“S7-1200的指令”。

1. 本章脉络

S7-1200程序设计基础与指令
├─ PLC编程语言
│  ├─ LAD梯形图
│  ├─ FBD函数块图
│  └─ SCL结构化控制语言
├─ PLC工作原理
│  ├─ 逻辑运算
│  ├─ 模块化编程
│  ├─ OB/FC/FB/DB
│  └─ 扫描周期
├─ 数据类型与系统存储区
├─ 编写用户程序与变量表
└─ S7-1200常用指令
   ├─ 位逻辑指令
   ├─ 定时器指令
   ├─ 计数器指令
   ├─ 数据处理指令
   ├─ 数学运算指令
   ├─ 程序控制指令
   ├─ 日期时间、字符串指令
   └─ 高速脉冲输出与高速计数器

2. PLC编程语言

IEC 61131-3是PLC编程语言标准。S7-1200常用语言包括LAD、FBD、SCL。

编程语言 中文 特点 适合场景
LAD 梯形图 类似继电器电路,直观 数字量逻辑、启保停、联锁
FBD 函数块图 用与门、或门等功能块表达逻辑 逻辑关系清晰、功能块连接
SCL 结构化控制语言 类似高级语言,适合算法封装 复杂运算、循环、分支、函数块内部逻辑

2.1 梯形图 LAD

梯形图有“假想能流”,逻辑从左到右执行,程序段通常自上而下循环扫描。常开触点、常闭触点和线圈分别对应逻辑条件与输出结果。

工程意义:电气工程师容易从继电器电路迁移到PLC程序。

2.2 函数块图 FBD

FBD用功能块表达逻辑关系,如“&”表示与,“>=1”表示或。它与梯形图在逻辑上可等价转换。

2.3 SCL

SCL适合复杂算法、循环、判断和封装功能块。它更接近C/Pascal语言,适合处理数学运算、数组、复杂数据结构。

3. PLC工作原理

3.1 逻辑运算

PLC控制主电路时,并不是直接把按钮串到接触器线圈中,而是读取输入点状态,在程序中用软触点进行逻辑运算,再通过输出映像寄存器控制Q点输出。

位变量只有两种状态,可用0和1表示:

状态 物理含义
1 高电平、线圈通电、条件成立
0 低电平、线圈断电、条件不成立

3.2 模块化编程

模块化编程把复杂自动化任务分成若干功能子任务,每个子任务用一个块实现。

名称 作用
OB 组织块 操作系统和用户程序接口,决定程序执行结构
FC 功能 可重复调用的无固定存储区子程序
FB 功能块 有背景数据块,适合需要记忆状态的功能
DB 数据块 存储用户数据或FB背景数据

3.3 组织块 OB

OB由操作系统调用,不能由用户指令直接调用。

常见OB:

OB类型 作用
程序循环OB 如OB1,循环执行主程序
启动OB CPU从STOP到RUN时执行一次,用于初始化
时间延迟中断OB 延迟时间到达后执行
周期中断OB 按固定周期执行
硬件中断OB 外部硬件事件触发执行
时间错误OB 扫描超时等时间错误处理
诊断错误OB 模块或系统诊断错误处理

3.4 FC与FB

FC没有固定存储区,执行结束后临时变量丢失。FB有背景数据块,输入、输出、静态变量可以保存在背景DB中,适合电机控制、阀门控制、定时计数等需要保持状态的对象。

4. PLC扫描工作过程

PLC采用循环扫描方式,一个扫描周期通常包括:

输入采样 → 程序执行 → 输出刷新 → 通信/诊断/中断处理 → 下一周期

4.1 输入采样

程序执行前,CPU集中读取外部输入状态并存入输入映像区I。程序执行过程中,即使外部输入变化,当前周期中通常仍使用采样时的I区值。

4.2 程序执行

CPU按顺序执行用户程序,计算内部变量和输出映像区Q的状态。

4.3 输出刷新

程序执行结束后,CPU把Q区状态集中写到实际输出端子。

易错点:程序执行过程中Q映像区会更新,但实际输出通常在输出刷新阶段集中改变。

5. CPU工作模式

模式 含义
STOP 不执行用户程序,可下载项目
STARTUP 启动阶段,执行启动OB并初始化
RUN 循环执行程序,处理通信、诊断和中断

CPU模块上通常没有物理模式开关,可通过STEP 7在线工具或程序指令控制模式。

6. 数据类型与系统存储区

6.1 物理存储器

类型 作用 类比
装载存储器 保存用户程序、数据、组态,非易失 硬盘
工作存储器 CPU运行时使用,高速RAM 内存
保持性存储器 断电后保持指定数据 掉电保持区
存储卡 可选,用于程序传送和存储 外部存储介质

6.2 常用数据类型

类型 位数 用途
Bool 1 开关量、触点、线圈
Byte 8 字节数据
Word 16 字数据、位组合
DWord 32 双字数据
SInt/Int/DInt 8/16/32 有符号整数
USInt/UInt/UDInt 8/16/32 无符号整数
Real 32 浮点数
Time 32 时间值,如定时器PT、ET
Char/String 字符/字符串 文本处理

6.3 寻址方式

地址 含义 例子
I 输入映像区 I0.0
Q 输出映像区 Q0.0
M 位存储区/标志位 M0.0
DB 数据块 DB1.DBX0.0

7. 位逻辑指令

位逻辑指令用于处理Bool变量,是PLC中最基础、最常考的内容。

指令 作用
常开触点 条件为1时导通
常闭触点 条件为0时导通
取反触点 对逻辑结果取反
输出线圈 把逻辑结果赋给输出位
置位S 条件成立后置1并保持
复位R 条件成立后清0
RS/SR锁存器 处理置位和复位优先关系
上升沿检测 检测0→1瞬间
下降沿检测 检测1→0瞬间

7.1 启保停基本逻辑

常见表达:

[ Q=(Start \lor Q)\land \lnot Stop ]

符号 含义
(Start) 启动按钮
(Stop) 停止按钮
(Q) 输出或自保持状态

适用条件:最常见电机启停、自锁控制。

物理/工程意义:按启动后输出保持,按停止后解除保持。

常见变形:增加热继电器、急停、限位等串联保护条件:

[ Q=(Start \lor Q)\land StopOK\land OverloadOK\land EStopOK ]

8. 定时器指令

S7-1200常用IEC定时器包括TP、TON、TOF、TONR。定时器本质上是功能块,调用时需要背景数据块。

定时器 中文 功能
TP 脉冲定时器 输入上升沿后输出保持指定时间
TON 接通延时定时器 输入为1持续达到PT后输出为1
TOF 断开延时定时器 输入变0后输出延迟一段时间再变0
TONR 保持型接通延时 累计输入为1的时间,复位端清零

8.1 定时器参数

参数 类型 含义
IN Bool 启动输入
R Bool TONR复位输入
PT Time 预设时间
Q Bool 定时器输出
ET Time 已经过时间
DB 数据块 定时器背景数据

适用条件:需要延时启动、延时停止、脉冲保持、累计运行时间等场合。

易错点:TON输入断开时ET通常清零;TONR需要R复位。

9. 计数器指令

S7-1200常用软件计数器:CTU、CTD、CTUD。

计数器 功能
CTU 加计数
CTD 减计数
CTUD 加减计数

计数器最大计数速率受所在OB扫描周期限制;高速脉冲应使用高速计数器HSC。

常用参数:

参数 含义
CU 加计数输入,上升沿计数
CD 减计数输入,上升沿计数
R 复位输入
LD 装载输入
PV 预置值
CV 当前计数值
Q 达到条件后的输出

10. 数据处理与数学运算指令

10.1 比较指令

比较指令用于判断两个数据大小关系,如等于、不等于、大于、小于、大于等于、小于等于。

用途:液位上下限判断、温度报警、计数值判断、模拟量阈值控制。

10.2 移动指令

移动指令用于把一个变量值复制到另一个变量。常用于初始化、数据暂存、参数传递。

10.3 转换指令

转换指令用于不同数据类型之间转换,如Int转Real、DInt转Real等。

易错点:整数除法会丢失小数,模拟量工程转换时常需先转Real或先乘后除。

10.4 数学运算指令

包括加、减、乘、除、求绝对值、平方根、三角函数等。Calculate指令可把复杂表达式封装为一个计算块。

11. 程序控制、字符串、日期时间指令

指令类型 用途
程序控制指令 跳转、返回、条件执行等
日期时间指令 读取系统时间、时间戳、定时记录
字符串指令 字符串连接、查找、转换、通信报文处理

12. 高速脉冲输出与高速计数器

12.1 PTO与PWM

类型 含义 用途
PTO Pulse Train Output,脉冲串输出 步进/伺服位置控制,脉冲数决定位移,频率决定速度
PWM Pulse Width Modulation,脉宽调制 调速、功率控制、模拟量近似输出

S7-1200 CPU通常有两个高速脉冲发生器,可分配给Q0.0和Q0.1等高速输出点。

12.2 高速计数器 HSC

HSC用于高速脉冲计数,如编码器、流量计、测速齿盘。它不受普通OB扫描周期限制。

常见模式包括单相计数、带方向输入计数、双相加减计数、A/B正交计数。

正交计数中,A相和B相相差90°,可根据相位超前/滞后判断方向;4x模式可提高分辨率。

13. 图表索引

图表 来源位置 作用
LAD/FBD等价图 第3.1章PPT约第3-4页 理解梯形图与函数块图对应关系
PLC扫描周期图 第3.1章PPT约第23页 理解输入采样、程序执行、输出刷新
CPU模式转换图 第3.1章PPT约第26-29页 理解STOP/STARTUP/RUN
数据类型表 第3.1章PPT约第31页 掌握Bool、Byte、Word、Real等
定时器时序图 第3.2章PPT定时器部分 区分TP、TON、TOF、TONR
计数器功能图 第3.2章PPT计数器部分 掌握CTU、CTD、CTUD
高速计数器模式图 第3.2章PPT后部 理解单相、双相、正交计数

14. 易错点

  1. PLC程序中触点可以重复使用,但输出线圈重复赋值可能导致覆盖问题。
  2. 输入采样后,当前扫描周期内外部输入变化通常不会立即改变程序读取的I区值。
  3. 定时器和计数器是功能块,需要背景数据块。
  4. TON和TOF的触发条件相反,TON是接通延时,TOF是断开延时。
  5. CTU等软件计数器不适合高速脉冲,编码器应使用HSC。
  6. SCL适合复杂运算,但考试和工程入门常以LAD为主。
  7. 模拟量计算要注意数据类型转换和运算顺序。

15. 考前补充:程序分析与指令细节

15.1 扫描周期类题目的答题模板

输入采样:把外部输入状态集中读入I映像区
程序执行:按程序顺序计算逻辑,更新M、DB、Q映像区等
输出刷新:把Q映像区状态集中送到物理输出端子
通信/诊断/中断:由操作系统在扫描周期中穿插处理

判断题常考:程序执行过程中,普通输入端子变化一般要到下一次输入采样后才反映到I区;普通输出线圈状态变化也通常到输出刷新阶段才真正作用到端子。

15.2 沿触发与普通触点区别

指令/触点 动作特点 典型用途
常开/常闭触点 条件持续为真时持续接通 普通联锁、启保停
上升沿检测 0变1时只接通一个扫描周期 启动一次动作、计数脉冲
下降沿检测 1变0时只接通一个扫描周期 松开按钮触发、信号消失报警

沿触发需要记忆上一扫描周期状态,所以要有边沿存储位或由触发器内部保存状态。

15.3 定时器、计数器常考口径

  • TP:输入上升沿触发固定宽度脉冲,脉冲期间输入再变化通常不重新开始。
  • TON:输入为1开始计时,达到预置时间后Q为1;输入变0则复位。
  • TOF:输入为1时Q立即为1,输入变0后延时一段时间再变0。
  • TONR:保持型接通延时,累计时间保持,需要复位信号清零。
  • CTU:加计数,CV >= PV时Q置1;R复位。
  • CTD:减计数,通常从预置值向下减。
  • CTUD:可加可减,注意加减输入同时动作时的处理规则以软件帮助为准。

16. 本章预测题与答案

题1:S7-1200常用编程语言有哪些?各有什么特点?

答案:常用语言有LAD、FBD、SCL。LAD类似继电器电路,适合数字量逻辑;FBD用功能块表达逻辑关系,适合块连接;SCL类似高级语言,适合复杂运算、分支、循环和封装算法。

题2:说明PLC一个扫描周期的基本过程。

答案:PLC一个扫描周期通常包括输入采样、程序执行、输出刷新以及通信/诊断/中断处理。输入先集中读入I区,程序按顺序计算并更新Q区,扫描结束后再把Q区输出到实际端子。

题3:OB、FC、FB、DB分别是什么?

答案:OB是组织块,由操作系统调用,决定程序执行结构;FC是无固定存储区的功能子程序;FB是有背景数据块的功能块,可保存状态;DB是数据块,用于存储全局数据或FB背景数据。

题4:FC和FB最核心区别是什么?

答案:FB有专用背景数据块,能保存输入、输出和静态变量,适合需要记忆状态的设备控制;FC没有固定存储区,执行结束后临时变量丢失,适合无状态计算或可重复操作。

题5:写出启保停逻辑表达式并说明含义。

答案:(Q=(Start \lor Q)\land \lnot Stop)。Start按下时Q置1,Q自身触点实现保持;Stop动作时条件断开,Q复位。

题6:TON、TOF、TP、TONR分别适合什么场景?

答案:TON用于接通延时,如延时启动;TOF用于断开延时,如延时停机;TP用于产生固定宽度脉冲;TONR用于累计运行时间,需要复位端清零。

题7:为什么定时器和计数器调用时需要背景数据块?

答案:IEC定时器和计数器属于功能块,需要保存ET、CV、Q等内部状态,这些状态必须存放在背景数据块中,否则下一扫描周期无法保持定时或计数过程。

题8:软件计数器和高速计数器有什么区别?

答案:软件计数器由程序扫描执行,计数速率受OB扫描周期限制;高速计数器由CPU硬件高速通道处理,适合编码器、脉冲流量计等高速脉冲信号。

题9:PTO和PWM有什么区别?

答案:PTO输出固定占空比、频率可调的脉冲串,常用于步进/伺服位置控制;PWM输出占空比可调的脉冲,常用于调速和功率控制。

题10:模拟量工程计算为什么要注意“先乘后除”?

答案:PLC中若使用整数运算,先除会截断小数造成精度损失;先乘后除能尽量保留有效数值。更可靠的方法是转换为Real后进行浮点运算。