S7-1200 编程基础指令:位逻辑、边沿检测与运算指令

PLC 编程基础指令笔记(博途 S7-1200):数据类型与变量、位逻辑(常开常闭取反/置位复位 S/R/RS 与 SR 触发器优先级/上升沿 P 下降沿 N 边沿检测)、比较与范围指令、数学运算指令、MOVE 移动与块移动、四则运算器梯形图实例(含指令速查与考点)

本文整理《PLC 编程基础指令(逻辑指令应用)》一课。本节课在前面认识博途软件、PLCSIM 仿真、起保停梯形图、进制与码制、IEC 61131 语言的基础上,系统梳理 S7-1200(TIA 博途)的常用基础指令集:先讲数据类型与变量声明,再依次讲位逻辑指令(常开/常闭/取反、置位 S/复位 R、RS 与 SR 触发器、上升沿 P/下降沿 N 边沿检测)、比较指令(六种比较与 IN_RANGE/OUT_OF_RANGE 范围判断)、数学运算指令(加减乘除取模、绝对值、极限、平方开方、对数指数、三角函数)、移动与转换指令(MOVE、MOVE_BLK、FILL_BLK、序列化/反序列化),最后用一个”电子四则运算器 $Y=20x\times35-8$,结果为 0 点红灯、否则点绿灯”的梯形图实例,演示复杂表达式如何拆成基本运算指令并用中间变量逐级传递。文末附指令速查表、课后任务、待核对清单和主动回忆题(含答案要点)。本篇与此前”PLC 编程基础与仿真””S7-1200 硬件与启保停””定时器/计数器”各篇互补,不重复仿真操作与定时计数内容。

一、核心结论

  • 博途里可以在 PLC 变量表中选择/修改变量名称和数据类型;除基本数据类型外,还有数组(Array)和由系统提供、具有预定义结构与固定成员数目的系统数据类型(SDT);S7-1200 的变量声明数据区可通过”附加说明”等方式覆盖/扩展。
  • 仿真时若节点使用 I(输入)区,只能从输入结果一侧去检查/改变;若希望在仿真中直接改变某输出结果,需要把对应节点改成 I 类型(实际接实物时仍按真实 I/O 接线)。
  • 位逻辑是梯形图最基础的部分,必须熟练掌握:
    • 常开触点 $-|\ |-$:输入为 1(通电)时闭合、为 0 时断开;
    • 常闭触点 $-|/|-$:输入为 1(通电)时断开、为 0 时闭合,与常开相反;
    • 取反(NOT,取非):把能流/逻辑结果反转,输入 1 出 0、输入 0 出 1;
    • 线圈 $-(\ )-$:把前面的逻辑结果赋给操作数。
  • 置位 S / 复位 R 具有记忆(保持)功能:置位指令 $-(\mathrm S)-$ 把操作数锁定为 1,即使触发信号随后断开仍保持 1;复位指令 $-(\mathrm R)-$ 把操作数恢复为 0。这相当于数字电路里的锁存器/触发器。
  • RS、SR 触发器用于同时管理置位与复位,区别在两输入同时接通时谁优先:
    • RS 触发器为复位优先:置位、复位同时为 1 时,输出为 0(复位生效);
    • SR 触发器为置位优先:置位、复位同时为 1 时,输出为 1(置位生效)。
  • 边沿检测只在信号跳变的瞬间接通一个扫描周期:
    • 上升沿指令 P:仅在信号由 0→1 的瞬间使输出接通一个扫描周期;
    • 下降沿指令 N:仅在信号由 1→0 的瞬间接通一个扫描周期;
    • 边沿指令需要一个边沿存储位(M 位)保存输入端上一个扫描周期的状态,通过”本周期状态 vs 上周期状态”比较判断是否发生跳变。
  • 边沿触发与普通线圈/点动的本质区别:普通线圈随输入通断而通断(像点动,按住才有、松开即无);上升沿触发只认按下(0→1)那一瞬间,触发后即使输入回到 0,被置位的输出仍继续运行,直到复位信号到来。
  • 电机启停典型用法:启动按钮的上升沿配合置位指令让 Q0.0 置位并连续运行;停止按钮的下降沿(或停止信号)配合复位指令让 Q0.0 复位停止。
  • 比较指令对两个相同数据类型操作数比较,结果作为触点通断:等于 ==、不等于 <>、大于 >、小于 <、大于等于 >=、小于等于 <=;另有范围判断 IN_RANGE(在范围内)与 OUT_OF_RANGE(超出范围),给定最小值 MIN、最大值 MAX(如判断数值是否在 10~20 之间)。典型应用:电机只允许转动 100 次,计数到 100 即停止。
  • 数学运算指令:ADD 加、SUB 减、MUL 乘、DIV 除、MOD 取模(返回余数)、NEG 取负;整数 DIV 取整后输出商,MOD 输出余数;还有 ABS 绝对值、MAX 最大值、MIN 最小值、LIMIT 极限限幅、SQR 平方、SQRT 平方根、LN 自然对数、EXP 指数、SIN/COS/TAN 及反三角函数、FRAC 返回小数等。运算框可增加输入个数;浮点数(Real)运算要求输入/输出数据类型一致;指令使能端 EN 通常高电平有效。
  • 移动与转换指令:
    • MOVE:EN 满足时把输入端数据传送到输出端,要求相同数据类型、可有多个输出,但一般不用于位变量之间;
    • MOVE_BLK(块移动):把一组连续数据(如数组中的 01 02 03 04)成块移动到另一连续区域;
    • FILL_BLK(填充):把输入量批量填充到一段连续地址;
    • 序列化 Serialize / 反序列化 Deserialize:实现标准数组与其他格式(如 UDP 通信格式)之间的相互转换,本节作了解。
  • 复杂表达式(如 $Y=20x\times35-8$)在梯形图中要拆成若干基本运算指令串联:前一条指令的输出存入中间变量(如 MD 存储区),作为下一条指令的输入,逐级算出最终结果 Y,再用比较指令判断 Y 是否为 0 去点亮红/绿灯。

二、知识结构(指令树)

  • 数据与变量:PLC 变量、基本/数组/系统数据类型、I/Q/M 区、变量声明
  • 位逻辑指令
    • 常开、常闭、取反 NOT、线圈
    • 置位 S、复位 R(保持/记忆)
    • RS(复位优先)、SR(置位优先)触发器
    • 上升沿 P、下降沿 N(边沿存储位,接通一个扫描周期)
  • 比较指令:==、<>、>、<、>=、<=;IN_RANGE、OUT_OF_RANGE
  • 数学运算:ADD/SUB/MUL/DIV/MOD/NEG;ABS/MAX/MIN/LIMIT/SQR/SQRT/LN/EXP/三角函数/FRAC
  • 移动与转换:MOVE、MOVE_BLK、FILL_BLK、Serialize/Deserialize
  • 指令体系总览:位逻辑、比较、数学、移动、逻辑运算、移位循环、转换、定时器、计数器、高速脉冲/高速计数器
  • 综合实例:电子四则运算器 $Y=20x\times35-8$ 梯形图

三、详细笔记

3.1 数据类型与变量声明

  • 在博途项目的 PLC 变量(变量表)中可以选择变量并修改其名称、数据类型、地址等;编程时尽量用语义化的变量名(如”启动按钮””电机接触器”)提高可读性。
  • PLC 数据类型:除 Bool、Int、DInt、Real 等基本类型外,还可以使用 PLC 数据类型(UDT,用户自定义数据类型,课堂口语记作 PCD),把若干相关变量打包成一个结构,便于复用。
  • 数组类型 Array:相同类型数据的有序集合,在块移动、批量数据处理中应用很多。
  • 系统数据类型 SDT:由系统提供,具有预定义的结构和固定数目(固定成员),用于定时器、计数器、通信等特定功能;S7-1200 声明变量的数据区域可通过附加说明进行覆盖/编辑。
  • I/Q/M 区与仿真:I 为输入映像区、Q 为输出映像区、M 为位存储器(中间标志)。做 PLCSIM 模拟仿真时,如果节点用 I 区,通常只能从”输入结果”一侧去检查;若想直接改变某个输出结果观察逻辑,可临时把该节点改成 I 类型来强制;真正下载到实物时仍按外部接线使用对应 I/Q。
  • 双字(DWord)、字(Word)、字节(Byte)等数据类型在存储运算结果(如 MD104)时经常用到,变量类型要与指令输入/输出要求匹配。

3.2 位逻辑指令(本节重点)

3.2.1 常开、常闭与取反

  • **常开触点 $-|\ |-$**:操作数为 1 时触点闭合、能流通过;为 0 时断开。可类比继电器/接触器里的常开辅助触点。
  • **常闭触点 $-|/|-$**:与常开相反,操作数为 0 时闭合、为 1 时断开;常用来接停止按钮、互锁条件。快捷键可在博途里直接插入常闭。
  • 取反(NOT / 取非):对能流取反。若前面逻辑有电能流过来(结果为 1),经取反后变为 0、后级断开;前面没有电(为 0),取反后反而为 1、后级接通。它与常闭触点都体现”非”逻辑,但取反是对整段能流结果取反。
  • **线圈 $-(\ )-$**:把左侧逻辑运算结果写入操作数;得电(能流到)则为 1,失电则为 0。

3.2.2 置位 S 与复位 R(记忆/保持)

  • **置位指令 $-(\mathrm S)-$**:当能流到达,把指定操作数置为 1 并锁存;之后即使能流消失(按钮松开、输入断开),该位仍保持 1,具有记忆保存功能。
  • **复位指令 $-(\mathrm R)-$**:当能流到达,把指定操作数清为 0 并保持;可理解为把状态恢复到初始(0)状态。
  • 直观例子:按一下启动按钮(常开瞬动),用 S 把灯/电机锁为 1,松开按钮后灯仍亮;再按停止用 R 复位,灯才灭。这正是启保停”自锁”的另一种实现方式(用 S/R 替代自锁触点)。

3.2.3 RS 触发器与 SR 触发器(优先级)

  • 触发器把置位、复位集成在一个指令框中,用两个输入分别控制,对应课本 110 页图 7-5(课堂记作 7-0-5)。
  • RS 触发器(复位优先 / 复位置位):
    • 只有置位端接通 → 输出置 1;
    • 只有复位端接通 → 输出清 0;
    • 置位、复位同时接通 → 输出为 0(复位优先)。
  • SR 触发器(置位优先 / 置位复位):
    • 只有置位端接通 → 输出置 1;
    • 只有复位端接通 → 输出清 0;
    • 置位、复位同时接通 → 输出为 1(置位优先)。
  • 记忆方法:名字中排在前面的字母代表”优先”——RS 中 R 在前,复位优先;SR 中 S 在前,置位优先。课堂以 M1.0/M1.1 控制 M0.0、M2.0/M2.1 控制 M2.2 分别演示了两种触发器。

3.2.4 上升沿 P 与下降沿 N(边沿检测)

  • 作用:捕捉信号的跳变瞬间,而不是信号的持续电平。
  • 上升沿指令 P($-(\mathrm P)-$):仅当流入线圈的能流由 0 变 1(断开→闭合)的那个扫描周期,指令上方操作数接通一个扫描周期,随后即使输入保持 1,输出也回到 0。
  • 下降沿指令 N($-(\mathrm N)-$):仅当能流由 1 变 0(闭合→断开)的那个扫描周期接通一个扫描周期。
  • 边沿存储位:边沿指令下方需要指定一个 M 位(如 M1.0、M2.1),用来保存 P/N 输入端上一个扫描周期的状态;CPU 把当前周期状态与该存储位中的上周期状态比较,不同才说明发生了跳变,从而产生一个扫描周期的脉冲。该存储位即使按钮松开也仍保留上一周期信息。
  • 与普通线圈、点动的区别(高频考点):
    • 普通线圈/点动:输入为 1 输出为 1、输入回 0 输出立即回 0,按住才有、松开即无;
    • 上升沿触发:只对触发信号 0→1 的瞬间有效,触发一次后”后面不管输入降不降”,被置位的输出都继续保持运行,直到复位;因此常用于”按一下启动、电机连续运转”。
  • 单台电机启停经典程序(课本 111~112 页):
    • 启动按钮(如 M0.0/I0.0)按下的上升沿,经 P 指令产生一个扫描周期脉冲,通过置位指令把 Q0.0 置 1,电机启动并连续运行;
    • 停止按钮松开/按下的下降沿,经 N 指令产生脉冲,通过复位指令把 Q0.0 清 0,电机停止;
    • P、N 必须与置位/复位配合使用,边沿存储位各自独立、不能混用。

3.3 比较指令

  • 在指令库”比较操作(CMP)”中选择,对两个相同数据类型的操作数进行比较,比较结果为真时触点闭合、能流通过。
  • 六种关系:
    • 等于 ==(CMP==)、不等于 <>(CMP<>);
    • 大于 >、小于 <、大于等于 >=、小于等于 <=。
  • 课堂示例:输入一个数与 100 比较——等于 100、不等于 100、大于等于 100、小于等于 100、大于 100、小于 100,分别接通不同的 M 点。
  • 范围比较:
    • IN_RANGE(在范围内):给定最小值 MIN、最大值 MAX,当 MIN ≤ 输入值 ≤ MAX 时输出为 1。如 MIN=10、MAX=20,输入 15、19 时接通,输入 12 是否接通要看是否落在区间;
    • OUT_OF_RANGE(超出范围):输入值小于 MIN 或大于 MAX 时接通。
  • 工程应用:例如要求电机只能转动 100 次,用计数器记录次数,再用”次数 ≥ 100”的比较触点去切断运行输出,实现定量停止/限位保护。

3.4 数学运算指令

  • 四则与取模:
    • ADD 加法、SUB 减法、MUL 乘法、DIV 除法、MOD 取模(返回除法余数);
    • NEG 取负(求相反数,与补码相关,补码 = 反码 + 1);
    • 整数除法 DIV 对结果取整后以整数格式输出商,余数由 MOD 取得。
  • 扩展数学函数:
    • ABS 绝对值;MAX 取最大值、MIN 取最小值;LIMIT 极限(限幅);
    • SQR 平方、SQRT 平方根;LN 自然对数、EXP 指数(幂)函数;
    • SIN/COS/TAN 正弦、余弦、正切,以及相应反三角函数;FRAC 返回一个数的小数部分。
  • 使用要点:
    • 在指令框数据类型下拉列表中选择运算的数据类型(整数选 Int/DInt,实数选 Real);
    • ADD、MUL 等指令可以点击”增加输入”得到多个输入端,实现多个数连加/连乘(输入1 运算 输入2 再运算 输入3……);
    • 浮点数(Real)运算指令的输入 IN 与输出 OUT 必须同为实数类型,类型不一致需要先用转换指令;
    • 指令框的 EN 为使能端(本例为高电平有效,个别指令可设低电平有效),EN 接通(如 M0.0 闭合)时该运算才执行,ENO 用于级联到下一条指令。

3.5 移动与转换指令

  • MOVE(移动):当使能端条件满足(为真)时,把输入端的数据原样传送到输出端,实现相同数据类型数据的传送;例如输入为 10.5 则输出也为 10.5。可增加多个输出端一次送到多个地址;一般不包括位变量之间的传送。
  • MOVE_BLK(块移动):把一组连续数据从一个存储区成块移动到另一个连续存储区。课堂练习:把数组中的 01 02 03 04 移到指定目标区域(源与目标按连续地址对应)。
  • FILL_BLK(填充/块填充):当使能条件满足时,把输入量批量填充到一段连续地址;例如把某数组中连续的若干个字统一填 0(源、目标填充个数相同)。
  • 序列化 Serialize / 反序列化 Deserialize(了解):把标准数组看成一个序列,与其他(非序列)格式(如 UDP 通信格式)相互转换;可实现字节、字、双字之间的格式拼装/拆分(如把若干字节序列拼成双字)。本节不要求深入掌握,实际通信编程中再用。

3.6 指令体系总览(知道有哪几类)

  • 博途指令主要包括:位逻辑指令、比较指令、数学函数指令、移动操作指令、逻辑运算指令、移位与循环指令、转换操作指令、定时器指令、计数器指令,以及高速脉冲输出与高速计数器等。
  • 工程上定时器、计数器用得非常多,工业逻辑中大量出现;其用法在专门的定时器/计数器章节讲解,本篇不展开。
  • 学习方法:先把最常用的位逻辑(常开/常闭/取反、S/R、触发器、边沿)和比较、基本四则运算练熟,高级数学函数与序列化等用到时再查手册。

四、综合实例:电子四则运算器梯形图

4.1 控制要求

  • 设计一个电子四则运算器,完成计算
    $$Y=20x\times35-8$$
    其中 $x$ 为输入变量;当计算结果 $Y=0$ 时点亮红灯,否则点亮绿灯。
  • (注:课堂口语中”乘 35 / 除以 35”发音含糊,纪要两处均记作 $Y=20x*35-8$,本文按”乘以 35”绘制;若老师作业原题为除以 35,只需把第二条 MUL 换成 DIV,详见待核对表。)

4.2 编程思路——表达式拆解 + 中间变量

  • 复杂表达式不能用一条指令完成,要按运算顺序拆成基本指令,前一步的输出存入中间变量,作为后一步的输入:
    1. 第一步 MUL:$20\times x$,结果存入中间变量(如 MD100);
    2. 第二步 MUL:$\mathrm{MD100}\times35$,结果存入中间变量(如 MD102);
    3. 第三步 SUB:$\mathrm{MD102}-8$,最终结果 $Y$ 存入 MD104;
    4. 比较:用 CMP == 判断 MD104 是否等于 0:
      • MD104 == 0 → 接通红灯输出;
      • MD104 <> 0(否则)→ 接通绿灯输出。
  • 梯形图结构(文字示意):
1
2
3
4
5
6
7
8
网络1:MUL          网络2:MUL           网络3:SUB
IN1 = 20 IN1 = MD100 IN1 = MD102
IN2 = x → IN2 = 35 → IN2 = 8
OUT = MD100 OUT = MD102 OUT = MD104 (即 Y)

网络4:比较与输出
CMP == (MD104, 0) ──( 红灯线圈 )
CMP <> (MD104, 0) ──( 绿灯线圈 )
  • 若用可多输入的 MUL,也可把 $20\times x\times35$ 合并到一个三输入乘法框,再做减法;课堂还演示了”$20x$ 与 35 先除/乘再减 8”的等价写法,运算顺序和数据类型保持一致即可。
  • 考点提示:这类题有两种考法——给出梯形图说运算功能(较易),或给出表达式让你自己画梯形图(要会拆表达式、会用中间变量 MD、会接比较与输出线圈)。

五、常用指令速查表

类别 指令/符号 功能要点
位逻辑 常开 $-|\ |-$ 操作数为 1 闭合
位逻辑 常闭 $- /
位逻辑 NOT 取反 能流结果 1↔0 反转
位逻辑 线圈 $-(\ )-$ 把逻辑结果写入操作数
位逻辑 置位 S 锁为 1,输入断开仍保持
位逻辑 复位 R 清为 0 并保持
触发器 RS 复位优先(S、R 同 1 出 0)
触发器 SR 置位优先(S、R 同 1 出 1)
边沿 P 上升沿 0→1 瞬间接通一个扫描周期,需 M 存储位
边沿 N 下降沿 1→0 瞬间接通一个扫描周期,需 M 存储位
比较 ==、<>、>、<、>=、<= 两同类型操作数比较,结果作触点
范围 IN_RANGE MIN≤值≤MAX 时接通
范围 OUT_OF_RANGE 值<MIN 或 >MAX 时接通
数学 ADD/SUB/MUL/DIV 加/减/乘/除(整数 DIV 取整得商)
数学 MOD/NEG 取余/取负
数学 ABS/MAX/MIN/LIMIT 绝对值/最大/最小/限幅
数学 SQR/SQRT 平方/平方根
数学 LN/EXP 自然对数/指数
数学 SIN/COS/TAN、FRAC 三角(含反三角)/取小数
移动 MOVE 同类型传送,EN 有效,可多输出
移动 MOVE_BLK 连续数据块移动
移动 FILL_BLK 连续区域批量填充
转换 Serialize/Deserialize 数组与 UDP 等格式互转(了解)

六、课堂任务与复习安排

  • 课后任务(@全体同学):
    1. 查阅课本 110 页图 7-5,理解置位、复位触发器(RS/SR)的逻辑功能与优先级;
    2. 查阅课本 111~112 页关于信号上升沿、下降沿置位操作的内容,吃透单台电机”上升沿启动连续运行、下降沿停止”的程序;
    3. 完成作业:设计电子四则运算器 $Y=20x\times35-8$(Y=0 点红灯、否则点绿灯)的梯形图。
  • 本节课还讲评了第六章部分选择/判断题答案(如 6-1、6-2 选 B 等),以老师公布的标准答案为准。
  • 复习要求:
    1. 默写常开、常闭、取反、线圈、S、R、RS/SR、P/N 的符号与功能;
    2. 能说清置位复位与普通线圈、上升沿与点动的区别;
    3. 会用六种比较和 IN_RANGE/OUT_OF_RANGE 做条件判断;
    4. 会用 ADD/SUB/MUL/DIV/MOD 并正确选择数据类型;
    5. 能把一个含多级运算的表达式拆成梯形图,正确使用中间变量。

七、待核对与疑问

问题 原因 建议核对方式
四则运算器原式是 $20x\times35-8$ 还是 $20x\div35-8$ 逐字稿”乘/除 35”发音含糊,纪要记作乘 以老师作业题/课本原题为准,DIV 与 MUL 互换即可
课堂口语”PCD 数据类型” 应为 PLC 数据类型(UDT) 对照博途帮助/教材术语
RS/SR、P/N 在不同博途版本中的具体指令名与引脚 版本差异 在本机博途指令库核对符号
第六章习题答案(6-1~6-16 等) 逐字稿为口头讲评、较碎 以老师公布标准答案为准
电机启停实例中按钮用 I0.0 还是 M0.0 口语中 I/M 混用 仿真可用 M,实物接 I,按实际接线
序列化/反序列化、块移动细节 本节仅要求了解 后续通信/数组章节再深入

说明:本文依据课程纪要与课堂逐字稿整理,逐字稿为语音转写、口语与同音字较多,凡录音含糊之处均已在表中标注;指令名称与功能以 TIA 博途软件和本校教材为准。

八、复习与主动回忆

复习清单

  1. 用 5 分钟区分常开、常闭、取反、线圈的符号和通断规律。
  2. 用 6 分钟讲清置位 S、复位 R 的保持功能,并举锁存灯的例子。
  3. 用 6 分钟对比 RS 与 SR 触发器,重点说两输入同时接通时谁优先。
  4. 用 8 分钟讲清上升沿 P、下降沿 N 的工作过程、边沿存储位作用,以及与点动的区别。
  5. 用 5 分钟列出六种比较和两种范围指令并各举一例。
  6. 用 6 分钟默写数学运算指令,说明整数除法/取模、浮点类型一致、EN 使能。
  7. 用 5 分钟区分 MOVE、MOVE_BLK、FILL_BLK。
  8. 用 10 分钟独立画出 $Y=20x\times35-8$ 四则运算器梯形图。

主动回忆题

  1. 常开触点和常闭触点在输入为 1 时分别是什么状态?
  2. 取反(NOT)指令的作用是什么?
  3. 置位 S 和普通线圈有什么不同?为什么说 S/R 有”记忆”功能?
  4. 复位 R 执行后操作数变成什么状态?
  5. RS 触发器和 SR 触发器有什么区别?置位、复位同时接通时各自输出什么?
  6. 怎样快速记住 RS、SR 谁优先?
  7. 上升沿指令 P 在什么时刻接通?接通多长时间?
  8. 下降沿指令 N 在什么时刻接通?
  9. 边沿指令下方的 M 位(边沿存储位)起什么作用?
  10. 上升沿触发和点动(普通线圈)控制电机有什么本质区别?
  11. 写出”启动按钮上升沿启动并连续运行、停止按钮下降沿停止”的编程思路。
  12. 比较指令有哪六种?对操作数数据类型有什么要求?
  13. IN_RANGE 和 OUT_OF_RANGE 怎样判断?给定 MIN=10、MAX=20,输入 15 和 25 分别接通哪个?
  14. 举一个比较指令的工程应用例子。
  15. ADD/SUB/MUL/DIV/MOD 分别做什么?整数除法的商和余数分别由哪条指令得到?
  16. NEG、ABS、LIMIT、SQR、SQRT、LN、EXP、FRAC 分别是什么功能?
  17. 数学运算框能否有多个输入?怎样实现连加/连乘?
  18. 浮点数运算对输入输出数据类型有什么要求?EN 端有什么作用?
  19. MOVE、MOVE_BLK、FILL_BLK 有什么区别?
  20. 序列化/反序列化主要用在什么场合?
  21. 复杂数学表达式在梯形图中如何实现?为什么要用中间变量?
  22. 写出 $Y=20x\times35-8$、Y=0 点红灯否则点绿灯的梯形图步骤。

答案要点

  1. 常开触点输入为 1 时闭合、能流通过;常闭触点输入为 1 时断开(为 0 时才闭合)。
  2. 对能流/逻辑结果取反:输入(前级结果)为 1 时输出 0,为 0 时输出 1。
  3. 普通线圈随输入通断,输入回 0 线圈立即回 0;置位 S 一旦被触发就把操作数锁为 1,输入断开仍保持 1,需复位才能清 0,因此具有记忆(保持/锁存)功能,类似锁存器。
  4. 复位 R 被触发后把操作数清为 0,并保持到下次置位。
  5. RS 为复位优先,SR 为置位优先;置位、复位同时接通时,RS 输出 0、SR 输出 1;只有单一输入接通时,两者都是置位接通出 1、复位接通出 0。
  6. 名称中排在前面的字母优先:RS 的 R 在前→复位优先;SR 的 S 在前→置位优先。
  7. 上升沿 P 只在能流/信号由 0 变 1(断开到闭合)的那个扫描周期接通,接通时间为一个扫描周期,之后即使信号保持 1 也回到 0。
  8. 下降沿 N 只在信号由 1 变 0(闭合到断开)的那个扫描周期接通一个扫描周期。
  9. 边沿存储位(M 位)保存输入端上一个扫描周期的状态,CPU 用当前周期状态与它比较,两者不同才判定出现跳变并产生一个扫描周期的脉冲;没有它就无法判断是否发生边沿。
  10. 点动/普通线圈:按住(输入为 1)才有输出、松开立即停止;上升沿触发:只认按下瞬间,触发一次后被置位的输出持续运行,即使输入回到 0 也不受影响,直到复位。故上升沿常用于”按一下就连续运行”。
  11. 启动按钮常开信号接上升沿 P,P 输出的一个扫描周期脉冲驱动置位 S 把 Q0.0 置 1(电机连续运行);停止按钮信号接下降沿 N(或停止逻辑),其脉冲驱动复位 R 把 Q0.0 清 0;P、N 各用独立的边沿存储位。
  12. 等于 ==、不等于 <>、大于 >、小于 <、大于等于 >=、小于等于 <=;两个操作数必须是相同数据类型,结果为真时触点闭合。
  13. IN_RANGE 在 MIN≤值≤MAX 时接通,OUT_OF_RANGE 在值<MIN 或 >MAX 时接通;MIN=10、MAX=20 时,15 在范围内→IN_RANGE 接通,25 超出范围→OUT_OF_RANGE 接通。
  14. 例如用计数器统计电机运行次数,再用”次数 ≥ 设定值(如 100)”的比较触点切断输出,使电机转到规定次数自动停止;也可用于温度/压力上下限报警。
  15. ADD 加、SUB 减、MUL 乘、DIV 除、MOD 取模;整数除法 DIV 取整后输出商,余数由 MOD 取得。
  16. NEG 取负(求相反数);ABS 取绝对值;LIMIT 极限限幅(把值限制在上下限之间);SQR 平方、SQRT 平方根;LN 自然对数、EXP 指数(e 的幂);FRAC 返回一个数的小数部分。
  17. 可以。点击指令框”增加输入”即可添加输入端,按顺序对多个输入连续运算,实现连加、连乘;各输入与输出数据类型要一致。
  18. 浮点数(Real)运算的所有输入 IN 和输出 OUT 都必须是实数类型,否则要先做数据类型转换;EN 是使能端,EN 接通(本例高电平有效)时该指令才执行,ENO 可把执行状态级联到下一条指令。
  19. MOVE 把单个(同类型)数据从源传到目的、可多个输出;MOVE_BLK 把一段连续数据成块搬到另一连续区;FILL_BLK 把同一个数据批量填充到一段连续地址。
  20. 序列化把标准数组转换成连续字节流(如 UDP 等通信格式)以便发送/存储,反序列化把接收到的字节流还原成数组,主要用于通信和数据打包/解包。
  21. 按运算优先级和顺序把表达式拆成若干基本运算指令,用 EN/ENO 或母线逐级连接;因为每条运算指令的输出需要一个地址保存,且要作为下一条指令的输入,所以必须用中间变量(如 MD100、MD102)暂存每一步结果。
  22. ① MUL:20×x→MD100;② MUL:MD100×35→MD102(若原式为除以 35 则用 DIV);③ SUB:MD102−8→MD104(即 Y);④ CMP == 比较 MD104 与 0,相等接通红灯;CMP <> 不相等接通绿灯。

S7-1200 编程基础指令:位逻辑、边沿检测与运算指令
https://tdexxx.github.io/2026/10/07/02_电气控制与PLC/电气控制与PLC_编程基础指令_发布稿/
作者
tdexxx
发布于
2026年10月7日
许可协议