Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

S7-1200 SCL 学习环境搭建: 不买硬件也能完整学习

面向读者的定位: 你有 10 年 C/Python 经验, 零 PLC 基础。本章结束时, 你的 PC 上会有一套可用的 “IDE + 编译器 + 目标模拟器 + 调试器”, 并且已经跑通第一个 SCL 程序(起保停), 完成一次完整的 edit-compile-download-debug 循环。

先建立类比框架(后文反复使用):

PLC 世界C/Python 世界类比是否成立
TIA PortalVisual Studio / PyCharm(IDE + 工具链一体)基本成立, 但 TIA 还兼任硬件组态(HMI、网络、模块)
SCL 语言C / Python(文本语言)成立; SCL 属 IEC 61131-3 Structured Text 方言
S7-PLCSIM 仿真器QEMU / 模拟器部分成立: PLCSIM 是指令级仿真, 非周期精确, 高速硬件不仿真
OB / FB / DBmain() / class / object粗略成立, 细节差异后文逐条指出
scan cyclewhile(1) { read_input(); run(); write_output(); }成立, 这是最重要的一条心智模型
CPU watchdog看门狗定时器成立: 单周期超时即停机, 不像 PC 程序可以慢慢算

目录

  1. 软件选型: STEP 7 Basic 够不够
  2. 授权与获取: 正版 / 21 天试用 / 教育渠道
  3. 安装实操与常见坑
  4. 仿真: S7-PLCSIM 能做什么、不能做什么
  5. 无官方环境时的替代: CODESYS / OpenPLC
  6. 可选硬件: CPU 选型、供电与接线常识
  7. 第一个项目分步走查(精确到菜单名)
  8. 调试工具速览
  9. 验收 checklist
  10. 参考链接汇总

1. 软件选型: STEP 7 Basic 够不够

1.1 Basic vs Professional

TIA Portal 里的编程软件叫 STEP 7, 分两个档位。官方定义: STEP 7 Basic 是 STEP 7 Professional 的 “price-optimized subset”(价格优化子集)。

能力STEP 7 BasicSTEP 7 Professional
S7-1200 编程(含 SCL)支持支持
S7-1500 编程不支持支持
S7-300/400(经典系列)不支持支持(注: V20 起迁移经典工程改用独立迁移工具)
WinCC Basic(组态 KTP Basic 触摸屏)自带自带
WinCC Advanced/Professional(PC 级 HMI)不含
仿真对象仅 S7-1200S7-1200 + S7-1500 等

结论: 只学 S7-1200 的 SCL, Basic 完全够用, 而且试用版(Trial)直接给的是全家桶 Professional, 学习期内你甚至感知不到差别。

1.2 TIA Portal 版本选择

一年一个大版本, 近年发布节奏(V17 之前同理):

版本发布时间备注
V172021大量中文教材基于 V15~V17
V182022
V192023-11
V202024-11首个支持 S7-1200 G2 的版本; PLCSIM Basic 更名 S7-PLCSIM(Standard)并换新 UI
V212025-11/122026-09 当前最新, 已出 Update 2 + Hotfix 1

选版规则(程序员视角):

  • 项目文件只能“高开低“, 不能“低开高“: 高版本 TIA 可打开并单向升级低版本项目, 反之不行。类似只提供单向迁移的 IDE 工程格式, 没有兼容模式。
  • Trial 下载通常只提供最新大版本(V21)。你的 21 天试用注定跑在 V21 上。
  • 教材用 V17 而你装 V21: 界面有差异(主要是配色和 PLCSIM 新 UI), 菜单名基本一致, 可对照。
  • 新买硬件注意: S7-1200 G2(新一代, 2024 底发布)必须 TIA V20+; 经典 S7-1200(一代)用 V16+ 均可。

建议: 学习直接用当前最新版(V21 + 已发布 Update), 除非你要跟的课程/同事工程锁定在旧版。

1.3 Windows 兼容性与硬件要求

官方要求以每个版本安装手册的 “System requirements” 页为准。V21 数字(官方全文核实):

最低推荐
CPUIntel Core i3-6100UCore i5-12600HE 级别
内存8 GB16 GB, 大项目 32 GB
磁盘20 GB 空闲(S-ATA)SSD, 50 GB
显示1024x768更高
网络100 Mbit千兆

操作系统(V21): Windows 10 64-bit(Enterprise 21H2 / LTSC 2021)、Windows 11 Pro / Enterprise 24H2、23H2、LTSC、Server 2022/2025。特别注意脚注: Windows 11 Home 24H2 只允许安装 Basic 版。经验规律: TIA 大版本大约只认证到发布日前 2~3 年的 Windows 构建, 新笔记本 + 旧版 TIA(V17/V18)极易装不上或装完起不来; 反过来旧 Win10 装新版一般没问题。虚拟机官方支持 ESXi 8+、VMware Workstation/Player 17+、Hyper-V 2019+, 学习用 VM + 快照是合理选择。

2. 授权与获取: 正版 / 试用 / 教育渠道

2.1 许可机制

授权由 Automation License Manager(ALM)管理, 许可可存本机硬盘或 USB 加密狗, 支持单机(perpetual)、租期(lease/rent)、浮动网络许可、升级(upgrade)等形态。类比: 更接近商业软件的 license file + 硬件指纹, 而不是 npm 生态的“下载即用“。Windows 大版本更新后常需升级 ALM 本身, 否则许可识别失败。

2.2 试用版(Trial): 21 天, 一次性

  • 时长与次数: 激活起 21 天, 官方明确 “expires after 21 days”, 不可延长、不可重激活。不要把学习计划寄托在“重装系统能重置“上(未经官方确认, 待核实)。
  • 内容: STEP 7 Basic/Professional + Safety + S7-PLCSIM + WinCC, 全家桶。
  • 获取步骤:
    1. 注册免费的 Siemens Industry Online Support(SIOS)账号。
    2. 打开 SIOS Entry 109989774 “SIMATIC STEP 7 incl. Safety, S7-PLCSIM and WinCC V21 TRIAL Download”。
    3. 下载(体量大, 十 GB 级, 留足磁盘与时间)。
    4. 安装后首次启动时按提示激活 Trial。
  • 零安装替代: TIA Portal Cloud 试用同样 21 天(SIOS 109772248), 浏览器里跑, 适合低配电脑, 但网络延迟影响手感。

2.3 正版与教育渠道

  • 正版: 通过西门子授权经销商或 Industry Mall(正在整合进新门户 SiePortal)购买; STEP 7 Basic 授权相对便宜, Professional 明显更贵。具体价格随地区变动, 不在此报数。

  • 教育: SCE(Siemens Automation Cooperates with Education)提供免费教材与配套项目(含 SCL 模块 052-201, 入口见第 10 节); 面向院校另有教学许可, 个人能否单独购买(待核实)。中国区还有 1847 工业学习平台与 SITRAIN 课程(对应课程 A7115 “SIMATIC S7-1200 系统课程”)。

  • 学习节奏建议: 把 21 天试用留给“跟着本仓库做完走查 + 集中练习“; 日常语法练习用免费的 CODESYS(见第 5 节)保持手感, 两者语法同源。

3. 安装实操

3.1 安装前准备 checklist

  1. 确认 Windows 版本在目标 TIA 版本支持列表(见 1.3), Home 版注意只能装 Basic。
  2. 磁盘留 50 GB 以上(最低要求 20 GB, 全家桶装完 40 GB+ 很常见), 装在 SSD。
  3. 关闭杀毒软件实时防护(或把安装目录加白名单): 杀软扫描会显著拖慢甚至中断安装。
  4. Windows 更新做完并重启一次; 暂停其他后台安装任务。
  5. 用户名、安装路径、后续项目路径全部用英文短路径, 例如 C:\TIAC:\Projects。Windows 用户名含中文/特殊字符是高频安装失败原因。
  6. 用管理员权限运行 setup.exe
  7. 笔记本接电源, 避免安装中断电。

3.2 组件勾选

安装器里按需勾选。只学 S7-1200 SCL 的话:

组件建议
STEP 7(Basic 或 Professional)必装(编程 + SCL)
SIMATIC Safety(可选)不装, 安全编程用不到
WinCC Basic随 STEP 7 Basic 自带; 想练触摸屏再留
WinCC Advanced/Professional不装, 体积大且学习期用不到
WinCC Unified不装
S7-PLCSIM装上(V20 起随 STEP 7 一起安装, 即 Standard 版)
TIA Portal Openness(自动化 API)程序员可玩(用脚本操控 TIA), 非必需

3.3 常见安装坑与解法

症状原因解法
反复提示 “Please reboot before installing any more programs”, 重启无效(重启循环)Windows 里有残留的 PendingFileRenameOperations 注册表值, 安装器每次都判定“有待完成的重启“官方 FAQ 8861819: 运行 regedit, 定位 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager, 右键删除整个 PendingFileRenameOperations 值, 然后不重启, 立即以管理员身份运行 setup; TIA 会连续调用多个子安装器, 每次报此错都重复该操作。改注册表前先导出备份
卸载残留后重装失败/仍提示旧版本HKLM\SOFTWARE\Siemens\AUTSW 下产品子键残留 InternalVersion 等安装状态备份后删除对应产品子键(社区通用做法; 路径随产品变化, 操作前导出)
安装中后期失败, 提示驱动/运行库错误缺 VC++ 运行库或杀软拦截先装 VC++ 运行库合集, 杀软加白名单后重试
项目打不开/创建报错项目路径超 143 字符(TIA 自身上限), 或触发 Windows 260 字符 MAX_PATH用短路径如 C:\Projects\SCL_Demo
Windows 大更新后 TIA 起不来/许可丢失ALM 版本过旧单独升级 Automation License Manager
安装极慢杀软实时扫描 + 机械盘关杀软, 装 SSD

耗时预期: 全家桶安装常见 30 分钟到 2 小时(取决于磁盘与杀软), 下载另计。预算一个晚上。

4. 仿真: S7-PLCSIM 能做什么、不能做什么

4.1 定位与启动

S7-PLCSIM 是随 TIA Portal 附带的 S7-1200/S7-1500 指令级仿真器(早期叫 PLCSIM Basic, V20 起更名 Standard 并换新 UI)。启动方式: 菜单 Online > Simulation(或工具栏 Start simulation 图标)。官方许可文档明确: 启动仿真不需要任何额外许可; STEP 7 Basic 许可下只能仿真 S7-1200。

类比: 相当于 qemu-system-arm 跑目标固件, 编译产物下载进虚拟 CPU, 与真机共用同一套调试前端(TIA 的在线监视)。注意与单元测试框架的区别: PLCSIM 仿真的是整个 CPU 扫描循环, 不是函数级 mock。

4.2 标准 PLCSIM 与真实 CPU 的差异清单

能力标准 PLCSIM真实 CPU
用户程序(OB/FB/FC/DB)、定时器、计数器、系统功能仿真
PUT/GET(S7 通信)、开放用户通信 TSEND_C/TRCV_C 等仅经本机 Softbus 在同一 PC 内工作真实通信
真实 TCP/IP 栈(抓包可见)
Web Server、OPC UA Server有(视 CPU/固件)
Modbus TCP(MB_CLIENT/MB_SERVER)不仿真(第三方多方结论, 非官方原文)
Trace(变量时序录制)不支持; 录制仅 PLCSIM Advanced(上限 8 条), V16 起才可在 TIA 中查看 Trace支持
HSC 高速计数、PWM/PTO 高速输出不仿真支持(且高速输出仅晶体管型 CPU)
PID_Compact V2.x一代 S7-1200 不支持仿真(官方: 仅 S7-1500 与 S7-1200 G2 可仿真); 且仿真中自整定可能因采样时间误差中断, 需设 CycleTime 的 EnEstimation=FALSE、EnMonitoring=FALSE支持
存储卡、固件更新、实际接线诊断不适用
时间行为近似: 扫描周期与真机有偏差, 依赖真实定时的逻辑结果可能不同真实
并发实例最多 2 个仿真 CPU-

结论: 学语法、学 FB/DB 组织、学调试, 标准 PLCSIM 覆盖 90% 需求; 学通信、高速 IO、PID 自整定时要么上真机, 要么认清局限。

4.3 PLCSIM Advanced 不支持(一代)S7-1200

PLCSIM Advanced 是另一个更强的产品(真实虚拟网卡、API、Trace)。官方对比表明: Advanced 面向 S7-1500 家族; 一代 S7-1200 不在支持列表。从 Advanced V8.0(配 TIA V21)起新增对 S7-1200 G2 的支持。所以: 你学经典 S7-1200, 仿真只能用内置标准 PLCSIM; Advanced 帮不上忙(它自带 Trial 许可, 但对一代 1200 无意义)。

4.4 仿真里改输入的精确语义

  • 在 PLCSIM 里用 Watch table Modify 一个输入(%I0.0): 值会一直保持, 因为没有物理外设去刷新输入映像(process image)。
  • 在真实 CPU 上 Modify 输入映像: 下一个扫描周期开始时被物理输入重新覆盖, 修改“站不住“。真机上要持续固定输入须用 Force(S7-1200 支持 Watch and Force table, 官方手册有专章; Force 激活期间会阻碍下载, 调试完务必停掉, 否则触发 “Test and commissioning function active” 类诊断事件)。
  • 这条差异是“仿真通过、现场翻车“的经典来源之一, 现在就记住。

5. 无官方环境时的替代: CODESYS / OpenPLC

没有 TIA(试用到期、机器不满足)时的免费路径。两者都实现 IEC 61131-3, 其中 Structured Text(ST)与 SCL 同源, SCL 本质是西门子对 ST 的方言。

5.1 CODESYS

  • IDE 在 CODESYS Store 标价免费(€0.00); 本地 SoftPLC 运行时(Control Win)Demo 模式全功能, 但无许可时每 2 小时自动退出, 重启即可(官方行为, 不是破解)。
  • 语法相通度: IF/ELSIF/CASE/FOR/WHILE/REPEAT、FUNCTION_BLOCK/FUNCTION、数组/结构/枚举、赋值与表达式几乎一致, 约 60~70% 的 ST 经验可直接迁移。
  • 工程组织差异(移植时的真正成本):
维度CODESYS STTIA SCL
接口声明POU 内直接文本声明 VAR_INPUT ... END_VAR图形化接口表(也可经外部源文本导入, 见 5.3)
全局变量GVL(Global Variable List)PLC tag table + Global DB
FB 调用声明实例变量 fbInst: FB_Motor;fbInst(...)必须经 instance DB, 写作 "FB_Motor_DB"(...); 或多重实例嵌在调用者的 Static 区
变量引用局部直接写名字#局部, "全局"(双引号), 语法层面强制区分作用域
直接地址%IX0.0 / %QX0.0 / %MX0.0%I0.0 / %Q0.0 / M0.0
库管理Library Manager, 版本化TIA 库, 拖拽式, 概念不同
指针/引用POINTER TO / REFERENCES7-1200 的 SCL 无指针运算; 参数传递用 Input/Output/InOut 语义
定时器Standard 库 TON 等, 直接声明TON 也是 FB, 但实例化方式服从 TIA 规则(IEC_TIMER 实例)

结论(与调研一致): 用 CODESYS 练 ST 手感可行且免费, 但 TIA 的工程化用法(instance DB、多重实例、优化访问、库、在线监控)必须在 TIA 里学, 不可替代。

5.2 OpenPLC

开源免费(OpenPLC project / GitHub OpenPLC_v3), 支持 IEC 61131-3 ST, 跨平台, 能跑在树莓派上接真实 IO。定位: 语法练习 + 开源硬件玩具。工程模型与 TIA 差异比 CODESYS 更大, 没有仿真-调试一体化体验, 学西门子技术栈的价值有限, 作为备选项了解即可。

5.3 迁移回 TIA 的注意点

TIA 提供文本源通道: 项目树 External sources > Add new external source > New external source (SCL), 粘贴源码后右键 Generate blocks from source 生成块。源码语法与 CODESYS 的 POU 文本声明接近, 但需改写:

FUNCTION_BLOCK "FB_Motor"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT
      Start : Bool;
      Stop : Bool;
   END_VAR
   VAR_OUTPUT
      Motor : Bool;
   END_VAR
BEGIN
   #Motor := (#Motor OR #Start) AND NOT #Stop;
END_FUNCTION_BLOCK

迁移 checklist:

  1. 把 GVL 拆成 PLC tag table(管 IO 地址)与 Global DB(管数据)。
  2. FB 调用点全部改写为 instance DB 形式, 补建 instance DB。
  3. %IX0.0 风格地址改为 %I0.0; 位/字节序访问方式核对。
  4. 删掉 CODESYS 特有(AT 覆盖、继承、指针、REF_TO)代码, 用 TIA 等价物重写。
  5. 逐块编译, 优先处理 Optimized access 与非优化访问差异。

6. 可选硬件: 想买也没问题

纯学习不买硬件完全可行(本文主线即仿真)。要买, 看本节。

6.1 CPU 选型对比(经典一代, DC/DC/DC 型号)

CPU板载 DI/DO板载 AI/AOPRONET 口定位新品价格区间(2026-09 检索, 波动大)
1211C6/42/01最小实验约 US$178-251(第三方/eBay)
1212C8/62/01入门G2 版约 138 欧元净价
1214C14/102/01学习/小项目主力(教程事实标准)欧洲 366-478 欧; 美国 $350-378; 国行渠道约 5084 元(未税)
1215C14/102/22(内置交换机)中型, 自带 AO约 632 欧元净价
1217C更多 IO(含多路模拟量, 具体规格见系统手册)2大点数紧凑型约 1018 英镑

不存在 1213C/1216C。扩展能力差异: 均可加 Signal Board(SB, 插在 CPU 前)与 Signal Module(SM, 右侧扩展), 以及通信模块(CM); 各 CPU 可挂数量不同, 选型时查系统手册。工作内存/装载内存规格亦随型号与固件不同, 以手册为准(不在此报数, 待核实项)。

G2 与停产传闻: S7-1200 G2(2024 发布)目前只有 1212C/1214C(+FC 变体), 硬件与一代不兼容, 且不支持设备更换式迁移, 必须 TIA V20+。多个第三方渠道称一代 S7-1200 将于 2026-11-01 停产停售(未见西门子官方原文, 待核实); 采买前向经销商确认。若买全新且面向未来, 倾向 G2; 若跟老教材/买二手, 一代便宜且资料最多。

6.2 Starter Kit(套装)

经典套装 6AV6651-7KA01-3AA4: CPU 1212C AC/DC/RLY + KTP400 Basic 触摸屏 + STEP 7 Basic V10.5 许可 + SIM 1274 输入模拟器 + 网线 + 文档, 第三方现货约 1004 欧。注意其软件许可停在 V10.5, 属清仓货, 许可通常可按规则升级到新版本(需另购升级授权, 待核实)。G2 时代有新的 “Basic Package”(如 1212C G2 + KTP400)形式。套装相对单买划算, 且附输入模拟器, 适合不想自己接线的初学者。

6.3 24V 供电与干接点常识(零基础必读)

  • 型号后缀解读(以 1214C 为例, 订货号 6ES7214-1xG4x-0xB0): 第一个字母编码供电+输出组合 —— AG=24VDC 供电 + 晶体管输出(DC/DC/DC), BG=AC 供电 + 继电器输出(AC/DC/RLY), HG=24VDC 供电 + 继电器输出(DC/DC/RLY)。末段数字与硬件/固件代际相关(如 G4 对应 V4.x 一代, G5 见于 G2)。
  • 供电: DC 型号需要 24VDC 电源(建议工业开关电源, 如 SITOP), AC 型号直接接 110/230VAC。24V 电源的 0V 必须与 CPU 的 M 端共地。
  • 干接点(dry contact): 指无极性、无源位的机械触点。继电器输出(RLY)就是干接点: 可切交流或直流小负载(每点约 2A 级, 查手册), 与机械寿命和负载类型相关, 感性负载(接触器线圈、电磁阀)要加续流二极管或 RC 吸收。
  • 晶体管输出(DC): 24VDC、有极性(源型/PNP), 无触点磨损, 支持高频输出(PWM/PTO 脉试探步进伺服)—— 只有晶体管型支持 HSC/PWM/PTO。
  • 数字量输入: S7-1200 板载 DI 可按源型(PNP, 常见于欧洲/国内主流)或漏型(NPN)接线, 由公共端接法决定。按钮、开关一端接 24V, 另一端接 DI, 公共端回 0V/24V 按手册接。绝对不要把 220VAC 接进 DI。
  • 安全常识: 接线前断电; 强电回路(接触器、电机)与 24V 控制回路的线槽/端子分开; 学习阶段建议全部用 24V 安全电压 + 面包板按钮, 或直接用 SIM 1274 模拟器。

6.4 二手注意

  1. 固件版本: 设备组态里目标固件要匹配 CPU 实际固件; 太旧的 CPU(如 V2.x 硬件)无法升级到 V4 特性, 老 TIA 工程也打不开新特性。先问卖家固件版本。
  2. 密码与 know-how 保护: 被 CPU 级密码保护或块加密的二手 CPU 很难恢复(整体复位出厂设置可去密码, 但块保护仍可能在源工程里, 你拿不到工程)。
  3. 检查: PROFINET 口是否完好、端子排螺丝是否滑丝、外壳挡板是否缺失、是否进过水/粉尘。
  4. 一代停产传闻若属实, 二手一代件会更充裕, 价格更低, 学完再出掉损失不大。

6.5 KTP 触摸屏(可选)

KTP400 Basic(4.3 寸)/KTP700 Basic 等面板用 WinCC Basic 组态, 而 WinCC Basic 随 STEP 7 Basic 免费, 且可无许可仿真 Basic 面板(做 HMI 联调)。学 SCL 阶段完全非必需; 到 HMI 章节再买。价格数百到千余元, 波动大(待核实)。PC 级 WinCC Runtime 仿真无许可时每次只能激活 1 小时(官方规则)。

7. 第一个项目分步走查: 起保停

目标: Start 按下后 Motor 得电并自保持, Stop 按下后断电; Stop 优先。这是 PLC 的 “Hello, World + 闭包” —— 它展示 PLC 与 PC 程序最本质的差别: 程序被周而复始地执行, 状态存在变量里而非调用栈里。

先看 C 类比(仅一条, 成立):

/* 伪代码: CPU 的循环, 你写的所有程序都在 run() 里被反复调用 */
while (1) {
    read_physical_inputs();   /* 刷新输入映像 %I */
    run_ob1();                /* 执行 OB1: 你的 FB 在这里被调用 */
    write_physical_outputs(); /* 写输出映像 %Q */
    self_diagnostics();       /* watchdog 在这里计时, 超时停机 */
}

注意类比失效处: PC 里你可以 sleep() 或阻塞等事件; PLC 的 OB1 里任何阻塞都会吃掉 scan time, 超 watchdog 上限 CPU 直接停机。PLC 不是事件回调模型。

7.1 新建项目

启动 TIA Portal, 在 Portal 视图选 Create new project, Project name 填 SCL_Demo, Path 填 C:\Projects(短英文路径), 点 Create

7.2 添加 CPU(纯仿真也选真实 CPU 型号)

CPU 型号即“编译目标“, 类比 GCC 的 target triple —— PLCSIM 仿真的是这个型号, 不存在单独的“S7-1200 仿真设备“条目。

  1. Portal 视图点 Devices & Networks > Add new device
  2. PLC 按钮, 展开 SIMATIC S7-1200 > CPU 1214C DC/DC/DC (6ES7214-1AG40-0XB0), 固件选 V4.4, 勾选 Open device view, 点 OK
  3. 项目树出现 PLC_1

7.3 新建 SCL 语言的 FB

  1. 项目树展开 PLC_1 > Program blocks, 双击 Add new block
  2. Function block (FB), Name 填 FB_Motor, Language 选 SCL, 点 OK。生成 FB_Motor [FB1] 并打开编辑器。

接口声明(编辑器上方的接口表, 相当于 class 的成员声明区; C 类比: Input=const 形参, Output=出参, InOut=指针形参, Static=私有成员, Temp=局部变量):

NameData type区(Interface)Comment
StartBoolInput启动按钮(点动)
StopBoolInput停止按钮(点动)
MotorBoolOutput电机输出

代码区:

// FB_Motor (FB1) - SCL
// 起保停: Start 置位并自保持, Stop 复位; Stop 优先
// 注意: FB 的 Output 变量可读可写, 上一周期的 Motor 值被当作状态用,
// 这正是"自保持"的实现方式 —— 状态存在 FB 实例(instance DB)里, 而不是栈上
IF #Stop THEN
    #Motor := FALSE;
ELSIF #Start THEN
    #Motor := TRUE;
END_IF;

等价的一行组合逻辑写法(电工图直译, 结果相同; 两者都要求 Stop 为“常开按钮信号取反“的语义):

#Motor := (#Motor OR #Start) AND NOT #Stop;

# 前缀 = 块接口局部变量; 之后引用全局 PLC tag 时用双引号 "Start"。这是作用域在语法层面的强制区分, 类比 Python 的 local 与 module 命名空间, 但 SCL 用符号而非作用域规则。

7.4 建 PLC tag(全局符号表)

项目树 PLC tags > Default tag table, 双击打开, 添加三行:

NameData typeAddress
StartBool%I0.0
StopBool%I0.1
MotorBool%Q0.0

7.5 在 OB1 里调用 FB

默认的 Main [OB1] 是 LAD 语言。两种做法, 任选:

做法 A(LAD 网络, 最常见): 双击打开 Main [OB1], 从项目树 Program blocks 里把 FB_Motor 拖到 Network 1 的梯级上; 弹出 Call options 对话框, 选 Single instance DB, 名字默认 FB_Motor_DB, 点 OK(TIA 自动创建 instance DB, 相当于给 FB 这个 class 实例化一个 object); 点击块引脚上的 ??.?.?? 占位符, 依次输入 StartStopMotor 并回车绑定。

做法 B(全 SCL): 右键 Main [OB1] > Delete 删除默认 OB1, 再 Program blocks > Add new block > Organization block, 选 Main program cycle (OB1), Language 选 SCL, OK; 代码区写:

// Main (OB1) - SCL
// 每个 scan cycle 调用一次 FB 实例; 形参用 => 只对输出参数
"FB_Motor_DB"(Start := "Start",
              Stop  := "Stop",
              Motor => "Motor");

7.6 编译

项目树右键 Program blocks > Compile(或工具栏 Compile 按钮)。底部 Info > Compile 选项卡必须显示 0 error; warning 可先忽略(常见: 未使用的变量)。类比: 这是纯编译/一致性检查, 还没链接到任何目标。

7.7 启动仿真

项目树选中 PLC_1, 菜单 Online > Simulation(或工具栏 Start simulation)。S7-PLCSIM 启动, 出现虚拟 CPU 窗口(RUN/STOP 开关在此切换)。无需任何额外许可。

7.8 下载到仿真 CPU

  1. 工具栏 Download to device(或菜单 Online > Download to device)。
  2. 弹出 Load preview, 列出将下载的块, 点 Load
  3. 若提示模块启动状态, 选 Start modules / RUN, 点 Finish
  4. PLCSIM 窗口确认 CPU 处于 RUN。

下载失败先查: PG/PC 接口是否指向 PLCSIM(通常自动); CPU 是否被前一次在线会话占用(关闭旧的在线连接)。

7.9 Watch table: 改输入、看输出

  1. 项目树 PLC_1 > Watch tables > Add new watch table, 双击打开。
  2. Name 列依次输入 StartStopMotor(自动补全 tag)。
  3. 菜单/工具栏 Go online 切到在线; 点 Monitor all(眼镜图标)开始监视。
  4. Start 行的 Modify value 列输入 1(TRUE), 点工具栏 Modify all(一次性写入); 观察 Motor 变 1。
  5. Start 改回 0: Motor 保持 1(自保持生效 —— 状态在 instance DB 里, 不依赖输入保持)。
  6. Stop1: Motor 变 0; Stop 清零后 Motor 仍为 0, 直到下一次 Start。

记住 4.4 节的语义: 仿真中 Modify 输入会保持; 真机输入映像每周期被物理量覆盖, 固定输入要用 Force。

7.10 在线监控 SCL 代码

回到 FB_Motor 编辑器, 在线状态下工具栏点 Monitoring(程序状态监视), 代码各行直接内联显示变量当前值(绿色为当前值)。这就是 PLC 版的 “debugger watch”, 但注意它默认按扫描周期连续刷新, 不是断点暂停模型; TIA 的断点调试(可选)才类似单步, 此处不展开(后续章节讲)。

8. 调试工具速览

工具入口适用场景注意
Watch table(监控表)项目树 Watch tables批量观测 + Modify 变量, 联调首选Modify I 的真机语义见 4.4
Force table(强制表)项目树 Watch tables 体系真机上持续固定 I/Q, 绕过物理信号仿真中用不到; 忘记关闭会阻塞下载并产生诊断事件
Program status(程序状态)块编辑器内 Monitoring看单块逻辑的实时数据流, 定位分支走向只看, 不改
Trace(轨迹)项目树 Traces示波器式录制变量时序, 调 PID/振荡标准 PLCSIM 不支持; 需真机或 PLCSIM Advanced(后者不含一代 1200)
Diagnostics buffer(诊断缓冲区)Online & diagnostics > Diagnostics bufferCPU 级事件日志: 停机原因、块错误、上电记录类比 dmesg; CPU 停机后第一件事看这里

9. 验收 checklist

学完本章, 以下每条都应能独立完成(不看本文):

  1. 说出 STEP 7 Basic 与 Professional 对学 S7-1200 的实际差别(结论: 无差别)。
  2. 从 SIOS 下载 Trial 并完成安装, 知道 21 天一次性、不可延长的规则。
  3. 独立排掉重启循环安装故障(PendingFileRenameOperations 注册表解法)。
  4. 新建项目(短英文路径)、添加 CPU 1214C、新建 SCL FB、在 OB1 以 instance DB 方式调用、编译到 0 error —— 全程 30 分钟内。
  5. 启动 PLCSIM, 下载, 切 RUN。
  6. 用 Watch table 的 Modify 驱动起保停的全部三种状态(启动/保持/停止), 并解释为什么 Start 松开后 Motor 还是 1。
  7. 在 SCL 编辑器里打开程序状态监视并读值。
  8. 打开诊断缓冲区并读懂一条事件。
  9. 列出标准 PLCSIM 不可用的功能(Trace、HSC/PWM、真实 TCP/IP、Modbus TCP、一代 1200 的 PID_Compact 仿真)。
  10. 解释 Modify 与 Force 的差异, 以及“仿真里能站住的输入修改, 真机上为什么站不住“。
  11. 说出 #Motor"Motor" 的作用域区别。
  12. (可选硬件线)说出 1214C 三个后缀变体(AG/BG/HG)的供电与输出类型含义, 以及继电器输出与晶体管输出的取舍; 给出二手 CPU 验机要点。

10. 参考链接汇总

官方(权威, 免费注册后可下载):

  • TIA Portal V21 Trial 下载入口(SIOS 109989774): https://support.industry.siemens.com/cs/document/109989774/
  • 许可文档(Trial 21 天 / PLCSIM 无需许可 / WinCC 仿真 1 小时): https://docs.tia.siemens.cloud/r/en-us/v21/installation/licensing/licensing-step-7-and-wincc
  • V21 系统要求(Win11 Home 仅 Basic 等脚注): https://docs.tia.siemens.cloud/r/en-us/v21/installation/system-requirements-for-installation/general-software-and-hardware-requirements
  • 重启循环官方 FAQ 8861819(PendingFileRenameOperations 解法): https://support.industry.siemens.com/cs/document/8861819/
  • PLCSIM 产品对比(标准 vs Advanced, 差异清单依据): https://docs.tia.siemens.cloud/r/simatic_s7_1500_et_200mp_manual_collection_enus_21/comprehensive-information/cpu-function-manuals/s7-plcsim-advanced/product-overview/s7-plcsim-products
  • PID_Compact 仿真限制(EnEstimation/EnMonitoring): https://docs.tia.siemens.cloud/r/simatic_s7_1500_et_200mp_manual_collection_enus_21/comprehensive-information/technology-function-manuals/pid-control/using-pid_compact/pid_compact-as-of-v2/simulating-pid_compact-as-of-v2-with-plcsim
  • S7-1200 手册集 - Watch tables and force tables: https://docs.tia.siemens.cloud/r/simatic_s7_1200_manual_collection_enus_20/programming-concepts/debugging-and-testing-the-program/watch-tables-and-force-tables
  • S7-1200 系统手册(V4.7, SIOS 109977302): https://support.industry.siemens.com/cs/us/en/view/109977302
  • S7-1200 G2 与一代对照(型号变体、V20+ 限制): https://docs.tia.siemens.cloud/r/simatic_s7_1200_g2_manual_collection_enus_20/comparison-to-s7-1200/comparison-to-s7-1200
  • TIA Portal Cloud 试用(SIOS 109772248): https://support.industry.siemens.com/cs/document/109772248/
  • SCE 免费教材(含 SCL 模块, SIOS 109972110): https://support.industry.siemens.com/cs/document/109972110/
  • 中文支持门户(下载中心/找答案/论坛): https://www.ad.siemens.com.cn/home/ 与 https://www.ad.siemens.com.cn/service/answer/

第三方(交叉验证用, 结论已尽量以官方为准):

  • CODESYS IDE(免费)与 SoftPLC 运行时(2 小时 Demo): https://store.codesys.com/en/engineering/ide.html 、https://us.codesys.com/products/runtime/control-sl/
  • OpenPLC: https://www.openplcproject.com/ 、https://github.com/thiagoralves/OpenPLC_v3
  • TIA Portal 强制表使用与 “Test and commissioning function active” 案例: https://industrialmonitordirect.com/blogs/knowledgebase/siemens-tia-portal-force-table-how-to-force-plc-tags 、https://sieportal.siemens.com/en-ww/support/forum/posts/test-commissioning-function-active/113020
  • 路径长度错误(143/260 字符): https://support.industry.siemens.com/cs/document/67184464/