PLC 编程基础与 PLCSIM 仿真:数制、码制与 IEC 语言

PLC编程基础与仿真笔记:S7-PLCSIM仿真变量为何必须选M(不能选I/Q)、起保停梯形图仿真、二进制/十六进制与字节字双字、原码反码补码与BCD码、与或非逻辑、IEC 61131-3五种语言及LAD/FBD/SCL的选择(含考点)

本文整理《PLC 编程基础与仿真技术》一课。这是在 S7-1200 硬件认识、启保停实训之后的一节编程入门与上机仿真课,内容分三部分:第一部分讲博途(TIA Portal)配套仿真软件 S7-PLCSIM 的使用,重点是仿真时变量类型必须选 M(中间变量)而不能选 I/Q 这一最常见错误,并用起保停电路做仿真演示;第二部分复习 PLC 编程所必需的数字编码与逻辑运算基础——二进制/十六进制、字节/字/双字、原码反码补码、BCD 码、与或非;第三部分讲 IEC 61131-3 标准的五种编程语言,重点对比 S7-1200 使用的 LAD(梯形图)、FBD(功能块图)、SCL(结构化文本)三种语言及其适用场合、新建程序块时如何选择语言。文末附仿真步骤表、语言对比表、待核对清单和主动回忆题(含答案要点)。

一、核心结论

  • 博途配套的 S7-PLCSIM 仿真软件(课程使用 V16/V20 等版本)可以仿真 S7-1200 的绝大部分指令、几乎支持 S7-PLC 的全部常用指令,使学习者在没有 PLC 实物的情况下也能快速熟悉指令和元件、验证程序逻辑。
  • 仿真最关键的易错点:在 S7-PLCSIM 仿真环境中修改变量时,变量类型必须选 M(中间变量/位存储器);若选 I(输入)或 Q(输出),程序将无法被仿真驱动、运行不出来。而在实物 PLC 上则可以正常使用 I0.0、I0.1、Q0.0 等 I/Q 地址。
  • I、Q、M 三类变量:I 是输入(接按钮、传感器等,实物由外部信号驱动)、Q 是输出(接接触器线圈、指示灯等执行元件)、M 是中间变量(中间继电器/位存储器);仿真时没有真实外部信号,只能靠把 M 位置 0/置 1 来模拟输入,故必须改用 M。
  • 仿真操作流程:安装并启动 S7-PLCSIM → 在博途中搜索、配对并启动模拟仿真平台 → 把编写好的程序下载到仿真模块(启动模块) → 在仿真界面用鼠标改变 M 变量的 0/1 状态,即可观察线圈、触点的得电/失电,完成功能验证(实物调试时则用网线或无线把程序下载到真实 PLC)。
  • 起保停仿真现象:按下启动按钮(使对应位置 1)→ 输出线圈得电,梯形图中得电的导线/线圈显示为绿色;与启动按钮并联的自锁(自保持)触点闭合维持线圈得电,并进一步控制主回路接触器、驱动电动机;按下停止按钮 → 线圈失电、自锁解除,整条线路断电。
  • 必须能读懂的经典继电器/梯形图控制电路:点动控制、连续(长动/起保停)控制、三相异步电动机正反转控制;起保停的核心是”启动常开按钮 + 与之并联的自锁常开触点 + 串联的停止常闭按钮”。
  • 数字基础:二进制按权展开、二进制与十六进制相互转换(4 位二进制对应 1 位十六进制,权为 8421);字节 Byte = 8 位、字 Word = 2 字节 = 16 位、双字 DWord = 2 字 = 4 字节 = 32 位;程序中用前缀区分常数进制(如 2# 表示二进制、16# 表示十六进制)。
  • 原码、反码、补码:最高位为符号位(0 表示正、1 表示负);正数的原码、反码、补码完全相同;负数的反码是符号位不变、数值位按位取反,负数的补码是其反码末位加 1。计算机内部有符号数一般用补码表示和运算。
  • BCD 码:用 4 位二进制数表示 1 位十进制数(8421BCD),每一位范围为 00001001,对应十进制 09;可方便地表示年月日、计数等十进制信息。
  • 三种基本逻辑运算与梯形图触点一一对应:与运算 = 常开触点串联(两者都为真输出才真)、或运算 = 常开触点并联(任一为真输出即真)、非运算 = 常闭触点(输入 0 输出 1、输入 1 输出 0);多个触点串并联可实现复杂逻辑。
  • PLC 编程语言遵循国际电工委员会 IEC 61131-3 标准,共五种:LAD 梯形图、ST(SCL)结构化文本、FBD 功能块图、IL 指令表、SFC 顺序功能图;S7-1200 在博途中主要使用 LAD、FBD、SCL 三种。
  • LAD 梯形图最直观、最接近继电器控制电路,适合实现简单逻辑控制(如起保停),并配有通电延时定时器(TON)、断电延时定时器(TOF)、计数器等指令;SCL 结构化文本类似 C、Java、Python 等高级语言,用 If…Then、Case、For、While 等语句构建分支与循环,适合复杂运算、算法和数据管理,机械专业掌握 SCL 竞争力更强。
  • 在博途中”添加新块(函数 FC/函数块 FB)”时要为该块选择编程语言(LAD 或 SCL 等),程序块名称只能用英文(可加数字),如”机械一二班起保停”程序块需用英文命名。

二、知识结构

  • S7-PLCSIM 仿真软件
    • 作用、版本、下载与配对启动;仿真 vs 实物的变量区别(M 与 I/Q);仿真操作步骤
    • 起保停仿真演示、经典控制电路读图
  • 数字编码基础
    • 二进制/十六进制转换;字节、字、双字;常数表示
    • 原码、反码、补码;BCD 码
  • 基本逻辑运算
    • 与(串联)、或(并联)、非(常闭);复杂串并联逻辑
  • IEC 61131-3 编程语言
    • 五种语言;S7-1200 的 LAD/FBD/SCL;LAD 与 SCL 对比与选择;新建块选语言

三、详细笔记

3.1 S7-PLCSIM 仿真软件及其作用

  • S7-PLCSIM 是博途(TIA Portal)配套的 PLC 模拟仿真软件(课程演示使用了 V16、V20 等版本)。它在计算机内部虚拟出一台 PLC,可仿真 S7-1200 的大部分功能、几乎支持 S7-PLC 的全部常用指令。
  • 作用:在没有 PLC 实物、没有接线和外部按钮/指示灯的情况下,学习者可以先在软件中编写、下载、运行程序,快速熟悉各种指令和元件、验证控制逻辑,降低实训成本、提高上机效率;后期再到实物 PLC 上调试。
  • 仿真与实物的连接方式:仿真时程序下载到计算机内的虚拟 PLC;实物调试时,编程计算机通过网线(也可无线)与真实 PLC 连接,再把程序下载进 PLC,启动后即可控制实际设备。

3.2 仿真变量必须选 M(本节最重要的考点/易错点)

  • PLC 的变量(地址)按区域主要分三类:
    • I(输入映像区):接外部输入元件,如启动/停止按钮、行程开关、传感器,实物运行时由外部信号决定其 0/1;
    • Q(输出映像区):接外部执行元件,如接触器/继电器线圈、指示灯、电磁阀;
    • M(位存储器/中间变量,相当于中间继电器):用于程序内部存储中间状态、自锁/互锁信号,不直接对应外部端子。
  • 在 S7-PLCSIM 仿真中,没有真实的外部按钮去驱动 I 点,也没有真实负载反映 Q 点。如果把需要手动改变的变量命名为 I 或 Q,仿真时无法对其置位/复位,程序就”运行不出来”。正确做法是把这类变量改成 M 区变量(如 M0.0、M0.1),在仿真界面用鼠标点击即可让 M 位在 0、1 之间切换,用 M 位模拟现场输入信号,程序才能被驱动。
  • 在实物 PLC 上,I0.0、I0.1、Q0.0 等地址由真实接线和外部元件驱动,可以正常使用,不存在此限制。
  • 记忆要点:仿真用 M、实物可用 I/Q;上机时若发现程序”点了没反应”,首先检查变量类型是否误选成了 I/Q。

3.3 仿真操作步骤

  1. 安装并打开博途与配套的 S7-PLCSIM 仿真软件;
  2. 在博途中编写好程序(如起保停梯形图),启动仿真、搜索并与虚拟 PLC 配对,软件会自动弹出/进入模拟仿真平台;
  3. 把程序下载到仿真模块(启动模块),令虚拟 PLC 处于运行状态;
  4. 在仿真变量界面把需要模拟的输入改为 M 变量,用鼠标将其置 1(模拟按下)或置 0(模拟松开);
  5. 观察梯形图中导线、触点、线圈颜色变化(得电通常显示为绿色)和 M/Q 变量状态,验证逻辑是否正确。

3.4 起保停电路的仿真与读图

  • 起保停(连续/长动控制)是 PLC 最经典、必须掌握的梯形图:
    • 启动按钮用常开触点,停止按钮用常闭触点;
    • 输出线圈(如 Q0.0,仿真时可用 M 位代替)的一个常开辅助触点与启动按钮并联,构成自锁(自保持)支路;
    • 按下启动→线圈得电并由自身常开触点保持得电(”保”),线圈再去控制主回路接触器从而驱动电动机;按下停止(常闭断开)→线圈失电、自锁解除,全线断电。
  • 仿真现象:按下启动按钮,线圈及得电支路变为绿色并保持;按下停止按钮,绿色消失、线路断电。
  • 为便于在线修改、调试,工程上常把启动信号单独用一个输入点引出(增加 I 点),再驱动中间继电器/线圈,修改逻辑时不必改动主接线,实现的功能不变。
  • 课程要求能读懂的第二章经典控制电路还包括:点动控制(按下就转、松开就停,无自锁)、连续控制(起保停)、三相异步电动机正反转控制(含互锁)。这些电路的逻辑都要能在梯形图中识别。

3.5 数制与编码基础

  • 二进制与十六进制:二进制只有 0、1,按权($2^{n}$)展开即可化为十进制,如二进制 $1011=1\times2^{3}+0\times2^{2}+1\times2^{1}+1\times2^{0}=11$。二进制转十六进制时,从小数点起每 4 位分为一组,每组按 8、4、2、1 的权换算成 1 位十六进制数(09、AF);反之 1 位十六进制对应 4 位二进制。
  • 数据长度单位:
    • 1 字节(Byte,B)= 8 位(bit);
    • 1 字(Word,W)= 2 字节 = 16 位;
    • 1 双字(Double Word,DWord,DW)= 2 字 = 4 字节 = 32 位。
  • 常数的进制表示:在程序中常加前缀以区分进制,例如用 2# 开头表示二进制常数、用 16# 开头表示十六进制常数(具体写法以博途/教材为准)。
  • 原码、反码、补码:
    • 约定最高位为符号位,0 表示正数、1 表示负数,其余为数值位;
    • 正数:原码、反码、补码三者相同;
    • 负数的反码:符号位保持为 1 不变,数值位逐位取反(0 变 1、1 变 0);
    • 负数的补码:在其反码的基础上末位加 1;
    • 计算机中有符号整数通常以补码形式存储和运算,可把减法化为加法、简化运算器。
  • BCD 码(二—十进制编码):用 4 位二进制数表示 1 位十进制数字,最常用的是 8421BCD 码;每一位十进制数字对应 00001001(即 09),1010~1111 为非法码。多位十进制数逐位编码,例如日期、时间、计数显示等可用 BCD 码表示,便于人与十进制习惯对应。

3.6 基本逻辑运算与梯形图触点

  • 与(AND)逻辑:对应常开触点串联。只有所有串联触点都闭合(条件都为真)时,输出线圈才得电;逻辑表达式可写为 $Q=A\cdot B$。
  • 或(OR)逻辑:对应常开触点并联。只要并联支路中有一个触点闭合(任一条件为真),输出就得电;$Q=A+B$。
  • 非(NOT)逻辑:对应常闭触点。输入为 0 时触点导通、输出为 1,输入为 1 时触点断开、输出为 0,即输出与输入相反。
  • 实际控制中,把若干常开/常闭触点按串联、并联组合,即可实现”与、或、非”复合的复杂条件判断,这正是梯形图编程的基础。

3.7 IEC 61131-3 与 PLC 的五种编程语言

  • PLC 编程语言由国际电工委员会 IEC 61131-3 标准统一规定,标准给出五种编程语言:
    1. 梯形图 LAD(LD):以类似继电器控制电路的图形符号(母线、触点、线圈、功能框)编程,最直观、应用最广;
    2. 结构化文本 ST(西门子称 SCL):类似高级语言的文本式语言,用语句、表达式编程;
    3. 功能块图 FBD(FBD):以功能框(与门、或门、定时器、计数器等功能模块)和连线编程,类似数字逻辑电路图;
    4. 指令表 IL(STL 类):类似汇编的逐条指令(助记符)列表,逐步执行,现已较少使用;
    5. 顺序功能图 SFC(GRAPH/顺序控制):用”步—转换—动作”描述顺序控制流程,适合按工步推进的自动化过程(课程后续章节讲解)。
  • S7-1200 在博途中主要使用 LAD、FBD、SCL 三种语言。

3.8 LAD 与 SCL 的特点、选择与新建块

  • LAD 梯形图:图形化、直观易懂、与继电器控制电路对应紧密,最适合实现简单的逻辑控制(点动、起保停、互锁、联锁等);指令库中还包括定时器(如通电延时 TON、断电延时 TOF)、计数器(触发一次计一次数)、比较、传送、运算等功能指令。
  • SCL 结构化文本:文本化语言,语法类似 C、Java、C++、Python,使用 If…Then(条件分支)、Case(多分支选择)、For、While(循环) 等语句构建程序结构,适合实现大量数学运算、复杂算法、数据处理与管理;缺点是不如梯形图直观。对机械专业学生而言,在掌握梯形图的基础上再掌握 SCL,在竞赛、就业中优势更大。
  • 语言选择原则:简单开关量逻辑、互锁联锁优先用 LAD(直观、便于现场人员读图维护);复杂计算、循环、批量数据处理、通信数据管理用 SCL 更简洁;二者可在同一项目中混用(不同程序块用不同语言)。
  • 新建程序块时选择语言:在博途中”添加新块”(组织块 OB、函数 FC、函数块 FB 等)时,需要为该块选择编程语言——选 LAD 则进入梯形图编辑、选 SCL 则进入文本编辑;程序块名称只能使用英文字母(可含数字),例如为”机械 1、2 班起保停”程序块命名时应写成英文标识符。梯形图中可直接从指令列表把启动按钮触点、线圈等拖入网络(程序段)编辑,操作简洁。

四、上机操作与案例

4.1 起保停仿真完整操作

  • 新建项目、添加 CPU(S7-1200),在 OB1 中用 LAD 编写起保停:启动常开触点与自锁常开触点并联,再与停止常闭触点、输出线圈串联;
  • 启动 S7-PLCSIM 并下载程序;把启动、停止信号改用 M 变量(如启动 M0.0、停止 M0.1,输出可用 M 或观察 Q);
  • 将 M0.0 置 1 再置 0(点按启动),观察线圈得电并自锁、线路变绿;将 M0.1 动作(常闭断开)模拟停止,观察线圈失电、自锁解除。

4.2 仿真”程序不运行”的排查

  • 现象:点击变量但线圈无反应。排查顺序:①变量是否误设为 I/Q(仿真应改为 M);②程序是否已下载到仿真模块并处于运行状态;③触点常开/常闭、自锁支路、停止按钮逻辑是否接对;④是否处于监控(在线)状态。

4.3 数制与补码换算练习

  • 把二进制 10111001 转十进制/十六进制;判断一个负数的原码、反码、补码;把十进制数(如日期 2026、计数 27)写成 8421BCD 码;判断字节、字、双字各含多少位。

4.4 同一功能用 LAD 与 SCL 实现

  • 起保停既可用 LAD(启动常开并联自锁、停止常闭串联线圈)实现,也可在新建 FC/FB 时选择 SCL,用 If 等语句判断启动、停止和自保持状态实现;体会两种语言的优缺点和选用场合。

五、仿真步骤与语言对比速查表

项目 关键内容
仿真软件 博途配套 S7-PLCSIM(V16/V20 等),可仿真 S7-1200 大部分指令
仿真变量 必须选 M(中间变量),不能选 I/Q;实物 PLC 可用 I/Q
I/Q/M 含义 I 输入、Q 输出、M 中间变量(位存储器/中间继电器)
仿真步骤 启动 PLCSIM→搜索配对→下载到仿真模块→M 位置 0/1→监控得电(绿色)
起保停 启动常开 ∥ 自锁常开,再串停止常闭与线圈;按启动自锁、按停止解除
必读电路 点动、连续(起保停/长动)、三相异步电动机正反转(含互锁)
数据单位 1 字节=8 位;1 字=2 字节=16 位;1 双字=2 字=4 字节=32 位
进制 二进制按权展开;4 位二进制↔1 位十六进制(8421);2#、16# 前缀
原反补码 正数三码相同;负数反码符号位不变数值取反,补码=反码+1
BCD 码 4 位二进制表 1 位十进制,00001001 对应 09(8421BCD)
与/或/非 与=常开串联;或=常开并联;非=常闭触点
编程标准 IEC 61131-3 五种语言:LAD、ST/SCL、FBD、IL、SFC
S7-1200 主用 LAD 梯形图、FBD 功能块图、SCL 结构化文本
LAD 直观、适合简单逻辑;含 TON/TOF 定时器、计数器等
SCL 类 C/Python,If/Case/For/While,适合复杂算法与数据管理
新建块 添加 FC/FB 时选语言(LAD/SCL),块名只能用英文

六、课堂任务与复习安排

  • 上机任务:下载并安装 S7-PLCSIM,完成博途与仿真平台的配对、程序下载;用 M 变量成功仿真起保停电路,观察启动自锁、停止解除的现象。
  • 复习要求:
    1. 牢记仿真时变量必须选 M、不能选 I/Q,并能解释原因,能排查”程序不运行”;
    2. 能独立画出并讲解点动、起保停、正反转电路的梯形图逻辑;
    3. 熟练进行二进制/十六进制/十进制换算,记住字节、字、双字位数;
    4. 会求正数、负数的原码、反码、补码,理解 BCD 码;
    5. 能把与、或、非逻辑对应到串联、并联、常闭触点;
    6. 记住 IEC 61131-3 五种语言,重点掌握 LAD、FBD、SCL,能说明 LAD 与 SCL 的特点和选用场合;
    7. 会在博途中新建程序块并正确选择编程语言、用英文命名。

七、待核对与疑问

问题 原因 建议核对方式
常数进制前缀的准确写法(2#、16# 等) 录音口语带过 查博途/S7-1200 教材常数表示
BCD 码正负数最高四位符号表示(1111/0000) 录音表述含糊 查教材 BCD/带符号 BCD 码
S7-PLCSIM 具体版本号(V16/V20) 录音提到博主版本 以机房实际安装版本为准
五种语言中 IL 指令表、SFC 在博途中的确切名称 录音列举较口语 查 IEC 61131-3 与博途文档
定时器/计数器指令助记符(TON/TOF/CTU 等) 录音只提”通电/断电延时、计数” 查 S7-1200 指令表
仿真下载、配对菜单的具体名称与步骤 录音为现场演示口述 上机对照博途+PLCSIM 操作

八、复习与主动回忆

复习清单

  1. 用 3 分钟说清 S7-PLCSIM 的作用和仿真下载步骤。
  2. 用 4 分钟讲透”仿真变量为什么必须选 M、不能选 I/Q”,并说出 I/Q/M 的含义。
  3. 用 4 分钟画出起保停梯形图并描述仿真现象,比较点动与长动。
  4. 用 5 分钟复习进制换算、字节/字/双字、原反补码、BCD 码。
  5. 用 3 分钟把与、或、非对应到梯形图触点。
  6. 用 5 分钟说出 IEC 61131-3 五种语言,对比 LAD 与 SCL 的特点和选用。
  7. 用 2 分钟说明在博途新建程序块时如何选语言、命名有何要求。

主动回忆题

  1. S7-PLCSIM 仿真软件有什么作用?没有 PLC 实物时能做什么?
  2. 为什么在仿真环境中变量必须选 M,而不能选 I 或 Q?实物 PLC 上也有这个限制吗?
  3. I、Q、M 分别代表什么区域?各接什么元件或起什么作用?
  4. 简述用 S7-PLCSIM 仿真一个程序的操作步骤。
  5. 画出起保停梯形图,说明启动、自锁、停止各由什么触点实现;仿真时按下启动、停止按钮分别看到什么现象?
  6. 点动控制和连续(长动)控制的区别是什么?正反转控制为什么要互锁?
  7. 字节、字、双字各是多少位?二进制怎样转十六进制?
  8. 正数和负数的原码、反码、补码分别怎么求?什么是 BCD 码?
  9. 与、或、非三种逻辑分别对应梯形图中触点的什么连接方式?
  10. IEC 61131-3 规定了哪五种编程语言?S7-1200 主要用哪三种?LAD 和 SCL 各适合什么场合?新建程序块时要注意什么?

答案要点

  1. S7-PLCSIM 是博途配套的仿真软件,可在计算机中虚拟一台 PLC,仿真 S7-1200 的大部分指令和元件;在没有 PLC 实物、不接线的情况下就能编写、下载、运行程序,熟悉指令、验证逻辑,降低实训成本,之后再到实物上调。
  2. 仿真时没有真实外部按钮和负载,I 点无法被外部信号驱动、Q 点也无真实负载,若把需要手动改变的变量设为 I/Q,就无法置位复位、程序运行不出来;改用 M 中间变量后,可用鼠标把 M 位置 0/置 1 来模拟输入。实物 PLC 上 I/Q 由真实接线和元件驱动,可以正常使用,没有这一限制。
  3. I 是输入映像区,接按钮、行程开关、传感器等输入元件;Q 是输出映像区,接接触器/继电器线圈、指示灯、电磁阀等执行元件;M 是位存储器(中间变量,相当于中间继电器),用于程序内部保存中间状态、自锁互锁信号,不直接对应外部端子。
  4. 打开博途写好程序→启动 S7-PLCSIM 并搜索、配对虚拟 PLC→把程序下载到仿真(启动)模块并运行→把需模拟的输入改为 M 变量并用鼠标置 0/1→在线监控触点、线圈、导线颜色(得电变绿),验证逻辑。
  5. 启动按钮用常开触点,输出线圈的一个常开辅助触点与启动按钮并联实现自锁(自保持),停止按钮用常闭触点串联在线路中。仿真时按启动(M 位置 1)线圈得电、自锁触点闭合保持,线路变绿并控制主回路电动机;按停止(常闭断开)线圈失电、自锁解除,整条线断电。
  6. 点动控制没有自锁,按下按钮运转、松开即停;连续(长动/起保停)有自锁触点,按一次启动后即使松开按钮仍持续运转,直到按停止。正反转控制若两个方向同时接通会造成电源相间短路,故必须设置互锁(电气互锁/机械互锁),保证正转、反转接触器不能同时得电。
  7. 1 字节=8 位;1 字=2 字节=16 位;1 双字=2 字=4 字节=32 位。二进制转十六进制时从小数点起每 4 位分一组,每组按 8421 权换成 1 位十六进制(09、AF),反之 1 位十六进制展开为 4 位二进制。
  8. 最高位为符号位(0 正 1 负);正数的原码、反码、补码相同;负数反码是符号位不变、数值位逐位取反,负数补码是反码末位加 1;计算机有符号数多用补码运算。BCD 码是用 4 位二进制表示 1 位十进制数的编码(8421BCD 中 00001001 分别表示 09),便于表示和显示十进制数据。
  9. 与运算对应常开触点串联(全部闭合才得电,$Q=A\cdot B$);或运算对应常开触点并联(任一闭合即得电,$Q=A+B$);非运算对应常闭触点(输入 0 输出 1、输入 1 输出 0)。触点串并联组合可实现复杂复合逻辑。
  10. IEC 61131-3 规定五种语言:梯形图 LAD、结构化文本 ST(SCL)、功能块图 FBD、指令表 IL、顺序功能图 SFC;S7-1200 在博途中主要用 LAD、FBD、SCL。LAD 直观、接近继电器电路,适合点动、起保停、互锁等简单逻辑;SCL 类似 C/Python,用 If/Case/For/While,适合复杂运算、算法和数据管理。新建 FC/FB 等程序块时要在添加块时选择该块语言(LAD 或 SCL),且程序块名只能用英文字母(可含数字)。

PLC 编程基础与 PLCSIM 仿真:数制、码制与 IEC 语言
https://tdexxx.github.io/2026/10/07/02_电气控制与PLC/电气控制与PLC_编程基础与仿真_发布稿/
作者
tdexxx
发布于
2026年10月7日
许可协议