S7-1200 SCL 学习环境搭建: 不买硬件也能完整学习
面向读者的定位: 你有 10 年 C/Python 经验, 零 PLC 基础。本章结束时, 你的 PC 上会有一套可用的 “IDE + 编译器 + 目标模拟器 + 调试器”, 并且已经跑通第一个 SCL 程序(起保停), 完成一次完整的 edit-compile-download-debug 循环。
先建立类比框架(后文反复使用):
| PLC 世界 | C/Python 世界 | 类比是否成立 |
|---|---|---|
| TIA Portal | Visual Studio / PyCharm(IDE + 工具链一体) | 基本成立, 但 TIA 还兼任硬件组态(HMI、网络、模块) |
| SCL 语言 | C / Python(文本语言) | 成立; SCL 属 IEC 61131-3 Structured Text 方言 |
| S7-PLCSIM 仿真器 | QEMU / 模拟器 | 部分成立: PLCSIM 是指令级仿真, 非周期精确, 高速硬件不仿真 |
| OB / FB / DB | main() / class / object | 粗略成立, 细节差异后文逐条指出 |
| scan cycle | while(1) { read_input(); run(); write_output(); } | 成立, 这是最重要的一条心智模型 |
| CPU watchdog | 看门狗定时器 | 成立: 单周期超时即停机, 不像 PC 程序可以慢慢算 |
目录
- 软件选型: STEP 7 Basic 够不够
- 授权与获取: 正版 / 21 天试用 / 教育渠道
- 安装实操与常见坑
- 仿真: S7-PLCSIM 能做什么、不能做什么
- 无官方环境时的替代: CODESYS / OpenPLC
- 可选硬件: CPU 选型、供电与接线常识
- 第一个项目分步走查(精确到菜单名)
- 调试工具速览
- 验收 checklist
- 参考链接汇总
1. 软件选型: STEP 7 Basic 够不够
1.1 Basic vs Professional
TIA Portal 里的编程软件叫 STEP 7, 分两个档位。官方定义: STEP 7 Basic 是 STEP 7 Professional 的 “price-optimized subset”(价格优化子集)。
| 能力 | STEP 7 Basic | STEP 7 Professional |
|---|---|---|
| S7-1200 编程(含 SCL) | 支持 | 支持 |
| S7-1500 编程 | 不支持 | 支持 |
| S7-300/400(经典系列) | 不支持 | 支持(注: V20 起迁移经典工程改用独立迁移工具) |
| WinCC Basic(组态 KTP Basic 触摸屏) | 自带 | 自带 |
| WinCC Advanced/Professional(PC 级 HMI) | 不含 | 含 |
| 仿真对象 | 仅 S7-1200 | S7-1200 + S7-1500 等 |
结论: 只学 S7-1200 的 SCL, Basic 完全够用, 而且试用版(Trial)直接给的是全家桶 Professional, 学习期内你甚至感知不到差别。
1.2 TIA Portal 版本选择
一年一个大版本, 近年发布节奏(V17 之前同理):
| 版本 | 发布时间 | 备注 |
|---|---|---|
| V17 | 2021 | 大量中文教材基于 V15~V17 |
| V18 | 2022 | |
| V19 | 2023-11 | |
| V20 | 2024-11 | 首个支持 S7-1200 G2 的版本; PLCSIM Basic 更名 S7-PLCSIM(Standard)并换新 UI |
| V21 | 2025-11/12 | 2026-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 数字(官方全文核实):
| 项 | 最低 | 推荐 |
|---|---|---|
| CPU | Intel Core i3-6100U | Core i5-12600HE 级别 |
| 内存 | 8 GB | 16 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, 全家桶。
- 获取步骤:
- 注册免费的 Siemens Industry Online Support(SIOS)账号。
- 打开 SIOS Entry 109989774 “SIMATIC STEP 7 incl. Safety, S7-PLCSIM and WinCC V21 TRIAL Download”。
- 下载(体量大, 十 GB 级, 留足磁盘与时间)。
- 安装后首次启动时按提示激活 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
- 确认 Windows 版本在目标 TIA 版本支持列表(见 1.3), Home 版注意只能装 Basic。
- 磁盘留 50 GB 以上(最低要求 20 GB, 全家桶装完 40 GB+ 很常见), 装在 SSD。
- 关闭杀毒软件实时防护(或把安装目录加白名单): 杀软扫描会显著拖慢甚至中断安装。
- Windows 更新做完并重启一次; 暂停其他后台安装任务。
- 用户名、安装路径、后续项目路径全部用英文短路径, 例如
C:\TIA、C:\Projects。Windows 用户名含中文/特殊字符是高频安装失败原因。 - 用管理员权限运行
setup.exe。 - 笔记本接电源, 避免安装中断电。
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 ST | TIA 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 / REFERENCE | S7-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:
- 把 GVL 拆成 PLC tag table(管 IO 地址)与 Global DB(管数据)。
- FB 调用点全部改写为 instance DB 形式, 补建 instance DB。
%IX0.0风格地址改为%I0.0; 位/字节序访问方式核对。- 删掉 CODESYS 特有(AT 覆盖、继承、指针、REF_TO)代码, 用 TIA 等价物重写。
- 逐块编译, 优先处理 Optimized access 与非优化访问差异。
6. 可选硬件: 想买也没问题
纯学习不买硬件完全可行(本文主线即仿真)。要买, 看本节。
6.1 CPU 选型对比(经典一代, DC/DC/DC 型号)
| CPU | 板载 DI/DO | 板载 AI/AO | PRONET 口 | 定位 | 新品价格区间(2026-09 检索, 波动大) |
|---|---|---|---|---|---|
| 1211C | 6/4 | 2/0 | 1 | 最小实验 | 约 US$178-251(第三方/eBay) |
| 1212C | 8/6 | 2/0 | 1 | 入门 | G2 版约 138 欧元净价 |
| 1214C | 14/10 | 2/0 | 1 | 学习/小项目主力(教程事实标准) | 欧洲 366-478 欧; 美国 $350-378; 国行渠道约 5084 元(未税) |
| 1215C | 14/10 | 2/2 | 2(内置交换机) | 中型, 自带 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 二手注意
- 固件版本: 设备组态里目标固件要匹配 CPU 实际固件; 太旧的 CPU(如 V2.x 硬件)无法升级到 V4 特性, 老 TIA 工程也打不开新特性。先问卖家固件版本。
- 密码与 know-how 保护: 被 CPU 级密码保护或块加密的二手 CPU 很难恢复(整体复位出厂设置可去密码, 但块保护仍可能在源工程里, 你拿不到工程)。
- 检查: PROFINET 口是否完好、端子排螺丝是否滑丝、外壳挡板是否缺失、是否进过水/粉尘。
- 一代停产传闻若属实, 二手一代件会更充裕, 价格更低, 学完再出掉损失不大。
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 仿真设备“条目。
- Portal 视图点 Devices & Networks > Add new device。
- 点 PLC 按钮, 展开 SIMATIC S7-1200 > CPU 1214C DC/DC/DC (6ES7214-1AG40-0XB0), 固件选 V4.4, 勾选 Open device view, 点 OK。
- 项目树出现
PLC_1。
7.3 新建 SCL 语言的 FB
- 项目树展开 PLC_1 > Program blocks, 双击 Add new block。
- 选 Function block (FB), Name 填
FB_Motor, Language 选 SCL, 点 OK。生成FB_Motor [FB1]并打开编辑器。
接口声明(编辑器上方的接口表, 相当于 class 的成员声明区; C 类比: Input=const 形参, Output=出参, InOut=指针形参, Static=私有成员, Temp=局部变量):
| Name | Data type | 区(Interface) | Comment |
|---|---|---|---|
| Start | Bool | Input | 启动按钮(点动) |
| Stop | Bool | Input | 停止按钮(点动) |
| Motor | Bool | Output | 电机输出 |
代码区:
// 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, 双击打开, 添加三行:
| Name | Data type | Address |
|---|---|---|
| Start | Bool | %I0.0 |
| Stop | Bool | %I0.1 |
| Motor | Bool | %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); 点击块引脚上的 ??.?.?? 占位符, 依次输入 Start、Stop、Motor 并回车绑定。
做法 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
- 工具栏 Download to device(或菜单 Online > Download to device)。
- 弹出 Load preview, 列出将下载的块, 点 Load。
- 若提示模块启动状态, 选 Start modules / RUN, 点 Finish。
- PLCSIM 窗口确认 CPU 处于 RUN。
下载失败先查: PG/PC 接口是否指向 PLCSIM(通常自动); CPU 是否被前一次在线会话占用(关闭旧的在线连接)。
7.9 Watch table: 改输入、看输出
- 项目树 PLC_1 > Watch tables > Add new watch table, 双击打开。
- Name 列依次输入
Start、Stop、Motor(自动补全 tag)。 - 菜单/工具栏 Go online 切到在线; 点 Monitor all(眼镜图标)开始监视。
- 在
Start行的 Modify value 列输入1(TRUE), 点工具栏 Modify all(一次性写入); 观察 Motor 变 1。 - 把
Start改回0: Motor 保持 1(自保持生效 —— 状态在 instance DB 里, 不依赖输入保持)。 - 把
Stop置1: 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 buffer | CPU 级事件日志: 停机原因、块错误、上电记录 | 类比 dmesg; CPU 停机后第一件事看这里 |
9. 验收 checklist
学完本章, 以下每条都应能独立完成(不看本文):
- 说出 STEP 7 Basic 与 Professional 对学 S7-1200 的实际差别(结论: 无差别)。
- 从 SIOS 下载 Trial 并完成安装, 知道 21 天一次性、不可延长的规则。
- 独立排掉重启循环安装故障(PendingFileRenameOperations 注册表解法)。
- 新建项目(短英文路径)、添加 CPU 1214C、新建 SCL FB、在 OB1 以 instance DB 方式调用、编译到 0 error —— 全程 30 分钟内。
- 启动 PLCSIM, 下载, 切 RUN。
- 用 Watch table 的 Modify 驱动起保停的全部三种状态(启动/保持/停止), 并解释为什么 Start 松开后 Motor 还是 1。
- 在 SCL 编辑器里打开程序状态监视并读值。
- 打开诊断缓冲区并读懂一条事件。
- 列出标准 PLCSIM 不可用的功能(Trace、HSC/PWM、真实 TCP/IP、Modbus TCP、一代 1200 的 PID_Compact 仿真)。
- 解释 Modify 与 Force 的差异, 以及“仿真里能站住的输入修改, 真机上为什么站不住“。
- 说出
#Motor与"Motor"的作用域区别。 - (可选硬件线)说出 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/