跳至主要内容
AllTwinCAT3.com — TwinCAT 3 工程成长 / 接单变现 / 技术咨询 | 微信:Shang_0352 · 手机:178-1679-6750
课程体系 接单合作 技术文章 GitHub
TwinCAT 3 · 运动控制 · WPF 上位机 · 半导体设备

从 PLC 工程师到
能独立做项目、敢报价、能持续接单
的 TwinCAT 3 实战路线

AllTwinCAT3 不是只讲语法的课程站,而是一套围绕 工程能力、项目交付、职业溢价 设计的成长平台。你会系统掌握 TwinCAT 3 下位机、EtherCAT、运动控制、PackML、WPF + ADS 上位机,并拿到能够直接二次开发的工程级源码。

看得懂从 ST 基础到 OOP 架构、状态机、工程规范,建立系统方法论。
做得出聚焦 EtherCAT、电子凸轮、ADS、WPF 等高价值项目能力。
交得掉内容来自半导体 / 光伏设备一线项目,强调稳定性、边界条件与可维护性。
卖得上价课程、咨询、外包三位一体,帮助你把技术能力转成职业溢价。
138 集系统课程 工程源码开源 支持咨询 / 定制开发 微信可直接沟通
7+
年工程经验
138
集数总量
4门
系统课程
源码
可直接复用
七年倍福自动化设备开发经验
系统化课程体系 · 工程实战驱动
四门课 138 集 · 全源码开源
购课后永久答疑群
无锡 · 可本地当面沟通
// 项目合作入口

除了卖课,我也承接 TwinCAT 3 项目开发

如果你当前更关心的是设备交付、现场问题排查、上位机定制,而不是先系统上课,这里可以直接进入项目合作通道。

TwinCAT 3 PLC 工程开发
多轴 / 电子凸轮 / PackML
WPF + ADS 上位机定制
EtherCAT / WcState / ADS 疑难排查
查看接单成交页 复制微信发需求
能力升级
下位机 + 上位机
不是单点知识,而是 TwinCAT 3、EtherCAT、运动控制、WPF + ADS 的完整链路。
工程价值
可交付
强调现场稳定性、调试经验、结构化架构,而不是只做 demo。
职业溢价
可报价
你学到的是企业愿意付费的技术能力,也是外包项目最常见的成交点。
内容形态
课程 + 文章 + 咨询
先用免费内容建立信任,再通过系统课、咨询和项目合作完成变现闭环。
free starter kit
先别急着买课,先把能直接提效的资料拿走

加微信 Shang_0352,可直接领取一套 TwinCAT 3 学习 / 项目启动资料。这个入口既能给冷流量一个低门槛动作,也能帮你把公域访问沉淀成后续成交机会。

  • TwinCAT 3 学习路线图
  • ADS / WPF 工程设计要点
  • EtherCAT 调试排查清单
  • 适合接单的能力进阶建议

你这个站现在最值钱的,不只是课程

而是“内容引流 + 课程成交 + 咨询接单”的一整套路径。技术越硬,越要把流量入口和成交动作设计清楚。

  • 文章负责拿搜索流量与技术信任
  • B站视频负责降低第一次接触门槛
  • 课程负责系统化交付与放大客单价
  • 咨询 / 外包负责拉高月收入上限
立即复制微信号 →
// 技术文章
精选 TwinCAT 3 工程实战文章
课程完整目录 →
MOTION CONTROL
TwinCAT 3 电子凸轮完全指南:凸轮表设计 · 五种插补方式 · MC_CamIn 工程实战

电子凸轮是高端运动控制的核心技术,广泛应用于印刷、包装与半导体行业。本文系统梳理凸轮表设计原理,对比 Linear / Cubic / BSpline / Akima / Hermite 五种插补方式的加速度连续性,并基于 PVD 设备基板往复运动演示完整的 MC_CamIn / MC_CamOut 实现方案,含 CSV 凸轮表生成工具。

MC_CamIn电子凸轮五种插补阅读全文 →
ADS · WPF
WPF + ADS 通信:心跳检测与指数退避自动重连工程实现

工程级 ADS 断线检测与重连状态机,含指数退避算法(1s→2s→4s→最大30s)与 MVVM 完整实现,源自三槽 SCADA 项目实战打磨。

ADS心跳重连指数退避阅读全文 →
EtherCAT
EtherCAT PDO 映射深度解析:DC 同步 · WcState 监控 · 故障排查

从 ESI 文件导入到 TwinCAT 3 工程配置的完整 PDO 映射实践,含 WcState 报警 FB 设计与半导体设备调试时的真实故障树复盘。

EtherCATPDO映射DC Sync阅读全文 →
OOP · 架构设计
TwinCAT 3 OOP 轴控:INTERFACE · 继承 · 工厂模式分层架构工程实践

可复用轴控 FB 套件的 OOP 设计模式,从 I_Axis 接口到 FB_AxisBase 基类,多轴数组管理与晶圆减薄设备三轴封装完整案例。

OOPI_Axis接口工厂模式阅读全文 →
PackML · 半导体设备
PackML 状态机工程实现:17个状态 · Stopping vs Aborting · TwinCAT 3 完整 FB

ISA-88 PackML 标准在晶圆研磨设备上的完整实现,重点解析 Stopping 与 Aborting 的差异处理逻辑,含 HoldRestart 恢复机制。

PackMLISA-88状态机阅读全文 →
ST 编程 · 避坑
R_TRIG 边沿检测的正确用法:为什么脉冲命令只能触发一次

工程中最常见的逻辑错误之一。本文讲清 R_TRIG 实例化原则、在 CASE 状态机中的正确放置位置,以及用错了会导致什么后果,配合三槽项目真实案例。

R_TRIG边沿检测状态机阅读全文 →
ADS · C# · 避坑
PLC 结构体映射到 C# 的内存对齐陷阱:Pack=1 · STRING 特殊处理完整指南

ADS 通信中最隐蔽的 BUG 来源。详解 TwinCAT 3 STRUCT 与 C# StructLayout 的内存对齐规则,STRING 固定长度字节数组处理方式,以及嵌套结构体的踩坑复盘。

StructLayoutPack=1ADS通信阅读全文 →
EtherCAT · 调试
WcState 持续报错怎么排查:Working Counter 原理与现场故障树

WcState 异常是 EtherCAT 调试最高频的报错之一。本文从 Working Counter 的物理含义出发,整理连接器松动、线缆问题、DC 配置异常的逐级排查方法,附 PVD 设备现场真实故障复盘。

WcStateEtherCAT故障排查阅读全文 →
// 技术博客
工程笔记 · 深度技术 整理
持续更新中
筛选: 全部 运动控制 EtherCAT WPF · ADS OOP · 架构 工具 · 效率
运动控制 2026-03-15
TwinCAT 3 MC_Home 回零策略全解:模式0-35对比与半导体设备实践

回零是运动控制工程里最容易踩坑的环节。本文系统梳理 MC_Home 全部回零模式,重点对比模式 3(限位开关)与模式 5(原点开关)在晶圆搬运场景下的差异,含坐标系重置与多轴回零时序设计。

MC_Home 回零策略 PLCopen 约 12 分钟
EtherCAT 2026-03-08
EtherCAT 从站诊断:Init Error / PreOp Error 系统排查手册

遇到从站卡在 Init 或 PreOp 状态是工程调试最常见的拦路虎。本文整理 12 种常见原因及对应排查步骤,含 ESI 文件校验、DC Sync 偏差过大、EL6695 冗余配置错误等真实案例。

Init Error PreOp ESI诊断 约 15 分钟
WPF · ADS 2026-03-01
WPF Dispatcher 正确用法:工控场景下的线程安全与内存泄漏防范

ADS Notification 回调跑在非 UI 线程,直接更新控件必然崩溃。本文梳理 Dispatcher.Invoke vs BeginInvoke 的选型逻辑,以及在高频数据(1ms)场景下如何用节流降采样避免 UI 卡顿。

Dispatcher 线程安全 ADS Notification 约 10 分钟
OOP · 架构 2026-02-22
TwinCAT 3 ABSTRACT FB 与 INTERFACE:何时用继承,何时用组合

ST 语言的 OOP 有很多反直觉的地方。本文用轴控 FB 套件为例,讨论 FB_EXTEND 继承链的深度限制、INTERFACE 多态的性能代价,以及在 PLC 实时任务里 OOP 设计的边界在哪里。

ABSTRACT INTERFACE FB_EXTEND 约 14 分钟
工具 · 效率 2026-02-14
TwinCAT 3 + Git 工程版本管理:.gitignore 配置与多版本并行部署实践

TC3 工程目录里有大量编译产物和平台相关文件,直接 git init 会把几十 MB 二进制文件提交进去。本文给出一份经过验证的 .gitignore 模板,以及如何用 Branch 策略管理多台设备的 TwinCAT 版本差异。

Git .gitignore 多版本管理 约 8 分钟
运动控制 2026-02-05
MC_MoveVelocity 与 MC_MoveContinuousAbsolute 选型:连续运动场景的细节差异

两个 FB 初看功能相似,但在停止行为、缓冲模式支持、与凸轮脱离的配合上有明显差别。本文以 PVD 基板扫描运动为背景,梳理实际工程中的选型依据。

MC_MoveVelocity 连续运动 缓冲模式 约 9 分钟
// 每日新闻
工业自动化 · 行业动态
今日更新
实时抓取行业资讯 · 每日更新
正在拉取 Beckhoff InfoSys 最新资讯…
资讯来源:Beckhoff InfoSys · 每日 00:00 自动刷新(含缓存 24h)。
TC3 技术快讯
TwinCAT 4026 已支持 Win11 23H2,注意升级前备份
TcUnit v1.3 发布,新增 AssertArrayEquals 方法
EL7201-9014 新驱动模块支持 SIL2 安全认证
Beckhoff ADS .NET 6 SDK v6.1.0 NuGet 已更新
TF5065 Kinematic Transformation 新增 Delta 并联机器人支持
本周热门话题
TwinCAT 4026 EtherCAT G OPC UA FX 锂电扩产 晶圆国产化 PackML 2.0 TwinSAFE SIL3 ADS .NET 6 视觉检测 数字孪生
不错过每日更新

关注 B站尚工账号或微信公众号,每日推送行业动态 + 技术博客更新。

▶ 关注 B站·尚工 微信:Shang_0352
// 代码资源库
开源 TwinCAT 3 工程模块
前往 GitHub →
OOP 轴控 FB 套件
I_Axis 接口 + FB_AxisBase 基类 + FB_LinearAxis 子类,覆盖 Home/Jog/MoveAbs/MoveRel/GearIn,适用于半导体及通用运动控制场景。
ST · TC3可下载
ADS 通信框架
WPF 上位机 IAdsService 接口封装,含心跳检测、指数退避自动重连、Notification 订阅管理,完整 MVVM 工程示例。
C# · WPF可下载
电子凸轮模板
MC_CamIn / MC_CamOut 标准实现,含 CSV 凸轮表生成工具、五种插补方式示例与完整 TwinCAT 3 工程。
ST · Motion可下载
报警信号处理库
带防抖滤波的报警采集与分级处理 FB(Fatal/Error/Warning/Info),含屏蔽/确认/自动复位逻辑,适用于 PVD/CVD 等半导体设备。
ST · TC3可下载
// 四门课程体系
系统化 工程实战 课程体系
查看完整目录 →
PATH 01 · 转型打基础
你还没系统做过 TwinCAT 3,或者刚从西门子 / 三菱转过来
先把环境、ST、工程结构、EtherCAT、调试方法补齐,避免一上来就学运动控制或上位机导致信息过载。先打稳基础,后面进阶会快很多。
推荐:学前营 → 课程一
PATH 02 · 做设备控制
你已经会写基础逻辑,正在做轴控、多轴同步、电子凸轮或 PackML
这时最值钱的不是“再看基础语法”,而是拿到能上项目的运动控制思路、OOP 架构和故障排查经验,直接提升你在设备项目里的含金量。
推荐:课程二 / 全系套餐
PATH 03 · 向上延伸
你想从 PLC 工程师升级为能做上位机、能带项目、能接整体方案的人
把 WPF、MVVM、ADS、SCADA 和项目交付串起来,你就不只是“写 PLC 的人”,而是能独立交付上下位完整方案的工程师。
推荐:课程三 / 全系套餐
// 先选对,再购买

不是所有人都该一上来买全套

如果你告诉我你现在是“刚转型 / 正在做轴控 / 准备做上位机”,我可以直接帮你匹配更省钱的购买路径,避免买错课、学错顺序。

  • 刚接触 TwinCAT 3:先学前营或课程一,低风险起步
  • 设备控制主力:课程二最容易直接提高项目价值
  • 要做整机方案 / 上位机:课程三或全系更划算
  • 企业团队培养:可先发需求,我再建议课程或内训方案
📱 复制微信,发我“课程建议”
低风险方式 01 · 先看免费试看课程一、课程二、课程三都保留了免费试看入口,先确认讲解风格和深度再决定。
低风险方式 02 · 先上 ¥199 学前营如果你不确定自己是否适合 TwinCAT 3,先用学前营验证方向,且可全额抵扣正式课程。
低风险方式 03 · 先拿完整大纲购买前可先加微信索取完整目录,对照你当前工作内容判断是否匹配。
低风险方式 04 · 先聊你的项目把你现在卡住的点告诉我,我会直接建议更适合的课程或咨询路径。
学前营
TwinCAT 3 快速上手
5 集 · 在职工程师专属
¥199
课程一
TwinCAT 3 入门与实战 免费试看
39 集 · 4 章
¥599
课程二
TwinCAT 3 运动控制 免费试看
39 集 · 3章+专题
¥999
课程三
工业上位机开发实战 免费试看
60 集 · 4 章
¥1,199
TwinCAT 3 快速上手
面向有工控基础的在职工程师(西门子/三菱/欧姆龙转型),用 5 集回答一个问题:TwinCAT 3 值不值得学,学了能干啥。¥199 可全额抵扣正式课程。
这门课适合谁
  • 想判断 TwinCAT 3 是否值得转型学习的人
  • 已经会传统 PLC,但没真正跑过 TwinCAT 项目的人
  • 预算有限,想先低成本验证方向的人
学完你能得到什么
  • 明确 TwinCAT 3 的学习路线和工程边界
  • 知道环境、项目结构、ST 迁移该怎么起步
  • 判断自己下一步该买课程一、课程二还是课程三
为什么现在就可以上
  • 不需要硬件,虚拟机即可开始
  • 价格低,适合先试课再决定
  • ¥199 可抵扣正式课程,几乎没有试错成本
学前营TwinCAT 3 快速上手 · 5集全覆盖EP01–05 · 5集
  • EP01
    PC控制 vs 传统PLC:TwinCAT 3 凭什么
    XAE/XAR实时内核PC-based
  • EP02
    TwinCAT 3 环境搭建全攻略(含避坑指南)
    XAE ShellLicenseADS 4132
  • EP03
    创建第一个项目,跑起来
    项目结构ActivateWatch窗口
  • EP04
    ST语言核心语法:从西门子/三菱快速迁移
    CASE状态机TON定时器S7对照
  • EP05
    综合小项目:用 TwinCAT 3 做一个完整控制逻辑
    综合实战PackML雏形Git归档
学前营 · PRE-CAMP
TwinCAT 3 快速上手
¥199/ 永久有效
  • 5集 · 在职工程师专属
  • ¥199 可全额抵扣正式课程
  • 完整源码 + 答疑群永久有效
  • 无需硬件,虚拟机即可学习
📱 微信:Shang_0352(点击复制)
👆 复制微信号后添加,发我“课程建议”即可直接推荐购买路径
TwinCAT 3 入门与实战
面向从零开始或从西门子/三菱/欧姆龙转型的工程师。以「干中学」为理念,结合半导体/光伏/锂电设备上的真实工程案例,建立从环境安装到 EtherCAT 总线的完整工程认知体系。共4章39集,前置:无(或完成学前营)。
这门课适合谁
  • 刚转 TwinCAT 3,还没有完整工程认知的 PLC 工程师
  • 会写简单逻辑,但对任务、总线、工程结构不成体系的人
  • 想从“能跑起来”升级到“能规范交付”的人
学完你能做什么
  • 独立搭建 TwinCAT 3 开发与仿真环境
  • 写出可维护的 ST、状态机和基础 FB 结构
  • 完成 EtherCAT 基础配置、调试与项目归档
为什么值得买
  • 帮你少走环境搭建、版本、总线、调试的弯路
  • 给后续运动控制与上位机课程打牢地基
  • 是最适合转型 PLC 工程师的“补短板”课程
第 1 章TwinCAT 3 生态与开发环境EP01–10 · 10集
  • EP01
    TwinCAT 3 凭什么——PC控制为何碾压传统PLC
    XAE/XAR实时内核PC-based
  • EP02
    安装 TwinCAT 3 开发环境(含避坑指南)
    XAE ShellLicenseADS 4132
  • EP03
    没有硬件也能学——虚拟机跑 TwinCAT 3 全流程
    虚拟机仿真ADS路由
  • EP04
    创建第一个 TwinCAT 3 项目,跑起来
    项目结构ActivateWatch窗口
  • EP05
    实时性原理与 Task 配置
    Task周期Core绑定Jitter
  • EP06
    TwinCAT 3 工程与 Git 实战
    Git.gitignore分支策略
  • EP07
    半导体项目文件结构实战
    工程结构Library模块化
  • EP08
    管理多个 TwinCAT 版本
    多版本XAR版本部署
  • EP09
    InfoSys:工控工程师的查错圣经
    InfoSys文档查阅错误码
  • EP10
    TwinCAT 虚拟轴仿真实践
    仿真轴虚拟IO软件调试
第 2 章IEC 61131-3 编程核心——ST 语言精讲EP11–24 · 14集
  • EP11
    数据类型完全指南 · LREAL 精度陷阱
  • EP12
    数组越界怎么把设备搞崩的——数组与指针避坑
  • EP13
    工艺配方怎么设计——STRUCT 结构体实战
  • EP14
    FUNCTION:函数的设计与滤波算法实现
  • EP15
    FB 是工控 OOP 的核心——从气缸控制 FB 开始
  • EP16
    INTERFACE:接口与多态
  • EP17
    工厂模式/策略模式实战
  • EP18
    CASE 状态机彻底搞懂
  • EP19
    TON/R_TRIG 这些 FB 你真的会用吗——标准库深度
  • EP20
    Tc2_Utilities 工具库 · FIFO · 执行时间测量
  • EP21
    I/O 配置与变量链接
  • EP22
    把自己的 FB 打包成库——可复用代码库实战
  • EP23
    OPC UA/MQTT/TCP——连接外部世界
  • EP24
    设备日志怎么记才专业——文件操作与滚动日志
第 3 章调试技术 · 代码规范 · 工程实践EP25–34 · 10集
  • EP25
    Watch/Force/断点——在线调试三件套
  • EP26
    TwinCAT Scope 波形采集
  • EP27
    TwinCAT 3 高频报错全解析(C0555/ADS 4132/WcState)
  • EP28
    命名规范与注释实战
  • EP29
    ADS 通信原理与测试工具
  • EP30
    静态代码分析与代码质量
  • EP31
    TcUnit 单元测试从零开始
  • EP32
    CI/CD 自动化流水线实战
  • EP33
    Task 性能优化实战
  • EP34
    综合实战——三槽液体混合下位机
第 4 章EtherCAT 总线深度实践EP35–39 · 5集
  • EP35
    EtherCAT 原理与性能对比
  • EP36
    EtherCAT 设备配置实操
  • EP37
    PDO 映射从零配置全流程
  • EP38
    WcState 排查——DC 同步与总线诊断
  • EP39
    EtherCAT 诊断与故障排查
课程一 · COURSE 01
TwinCAT 3 入门与实战
¥599/ 永久有效¥1,499
  • 4章 · 39集 · 约每集 20 分钟
  • 完整 GitHub 源码工程(可直接运行)
  • 答疑群永久有效
  • 后续新增集数免费获得
  • 学前营 ¥199 可全额抵扣本课
B站免费看 EP01–03,满意再购课 →
▶ 立即免费试看
📱 微信:Shang_0352(点击复制)
👆 复制微信号后添加,发我“课程建议”即可直接推荐购买路径
TwinCAT 3 运动控制
从 PLCopen MC 单轴基础到多轴同步、电子凸轮、压力闭环、PackML 完整实现,以及工程级 OOP 轴控架构设计。内容来源于尚工在晶圆减薄、PVD/CVD、锂电设备上的真实项目。共3章+EtherCAT进阶专题39集。前置:课程一,或有 ST 编程基础。
这门课适合谁
  • 正在做单轴、多轴、同步控制、电子凸轮的工程师
  • 需要把“会调用 MC FB”升级成“能做整套轴控方案”的人
  • 想进入半导体 / 锂电 / 高端设备控制岗位的人
学完你能做什么
  • 独立实现单轴、多轴同步、凸轮、压力闭环
  • 掌握 PackML、OOP 轴控、工程级状态机设计
  • 更有底气承担高价值设备模块与整机调试任务
为什么值得买
  • 这部分最接近设备项目中真正值钱的核心能力
  • 讲的不是“API 说明书”,而是工程实现与踩坑经验
  • 适合把技术能力直接变成岗位溢价或项目溢价
第 5 章NC 轴基础与 PLCopen 单轴控制EP01–14 · 14集
  • EP01
    TwinCAT 运动控制全景——NC 轴是什么
  • EP02
    轴配置——从驱动器到 NC 轴
  • EP03
    Kv/Jerk/跟随误差——伺服参数三件事
  • EP04
    MC_Power · MC_Reset · 轴使能逻辑
  • EP05
    MC_MoveAbsolute/Relative——定位控制实战
  • EP06
    速度控制与连续运动
  • EP07
    六种 Homing 模式全解析
  • EP08
    轴控 OOP 架构设计(IAxis + CServoAxis)
  • EP09
    Scope 波形——跟随误差分析与伺服调试
  • EP10
    SafeMotion 与轴安全基础
  • EP11
    压力/力矩控制——传感器融合
  • EP12
    PackML 完整状态机设计
  • EP13
    单轴综合实战——晶圆减薄控制
  • EP14
    NC 配置优化与调试技巧
EtherCAT 进阶EtherCAT 进阶专题 · 驱动器总线深度实践EP15–19 · 5集
  • EP15
    Beckhoff I/O 模块族深度解析
  • EP16
    串口/Modbus/TCP——读取第三方设备
  • EP17
    CoE 对象字典读写实战
  • EP18
    大型 EtherCAT 系统拓扑规划
  • EP19
    PVD 设备 EtherCAT 总线调试案例
第 6 章多轴同步与协调控制EP20–29 · 10集
  • EP20
    多轴控制三种模式怎么选
  • EP21
    MC_GearIn——主从速度耦合
  • EP22
    飞剪控制——MC_GearInPos 相位同步
  • EP23
    MC_CamIn 电子凸轮从原理到实现
  • EP24
    MC_CamTableSelect——凸轮表切换
  • EP25
    凸轮设计五步法——硅片传输全流程
  • EP26
    耦合故障与急停恢复实战
  • EP27
    FIFO 轴与轨迹控制
  • EP28
    多轴综合实战——PVD 多轴协同
  • EP29
    多轴调试技巧与性能分析
第 7 章传感器融合 · 压力控制 · 工程级封装EP30–39 · 10集
  • EP30
    PID 控制器原理与 TwinCAT 实现
  • EP31
    多源信号融合——运动控制策略
  • EP32
    双环控制架构设计与调试
  • EP33
    力矩监控工程实战
  • EP34
    工程级报警管理系统实战
  • EP35
    配方管理系统设计
  • EP36
    设备级 OOP 架构——工程实战
  • EP37
    Library 工程级封装与发布
  • EP38
    系统集成测试与验收规范
  • EP39
    运动控制综合实战——完整设备
课程二 · COURSE 02
TwinCAT 3 运动控制
¥999/ 永久有效¥1,499
  • 3章+专题 · 39集 · 约每集 20 分钟
  • PLCopen 单轴 → 多轴同步 → 电子凸轮
  • 压力闭环 · PackML · OOP 轴控架构
  • 完整 GitHub 源码 + 答疑群永久有效
📱 微信:Shang_0352(点击复制)
👆 复制微信号后添加,发我“课程建议”即可直接推荐购买路径
工业上位机开发实战
C# 工控编程基础 → WPF/MVVM → Beckhoff ADS 深度通信 → 工业功能模块 → 三槽 SCADA 综合项目。国内首套 TwinCAT 3 + WPF 全栈中文课程,面向 PLC 工程师「向上延伸」。共 4 章 60 集。前置:课程一或有 ST 基础。
这门课适合谁
  • 想从 PLC 工程师向上延伸到上位机 / SCADA 的人
  • 想提升项目完整交付能力,而不只负责下位机的人
  • 有意向接上下位一体项目、做技术负责人或独立开发的人
学完你能做什么
  • 独立做 WPF + MVVM + ADS 通信架构
  • 完成报警、配方、历史数据、权限、波形图等模块
  • 具备交付完整工业上位机项目的能力
为什么值得买
  • 这是最容易把你从“单一 PLC 工程师”拉到“整机方案工程师”的课程
  • WPF + ADS 是当前 TwinCAT 场景里很强的差异化能力
  • 能明显提升项目报价空间与职业天花板
第 8 章C# 基础——工控上位机开发基石EP01–12 · 12集
  • EP01
    C# 开发环境与第一个程序
  • EP02
    变量、类型与运算符
  • EP03
    控制流与方法
  • EP04
    面向对象核心——类、接口、继承
  • EP05
    集合与 LINQ
  • EP06
    async/await 异步编程彻底搞懂
  • EP07
    文件 I/O 与序列化
  • EP08
    定时器与线程
  • EP09
    NuGet 包选型与使用指南
  • EP10
    NLog 日志系统
  • EP11
    SQLite + Dapper 数据库基础
  • EP12
    单元测试与调试技巧
第 9 章WPF 与 MVVM 架构EP13–26 · 14集
  • EP13
    WPF 核心概念快速入门
  • EP14
    Grid/DockPanel 工业 SCADA 布局实战
  • EP15
    数据绑定——MVVM 的核心
  • EP16
    RelayCommand 命令模式实战
  • EP17
    MVVM 架构完整搭建
  • EP18
    MahApps.Metro 工业 UI 控件库
  • EP19
    LED/阀门/仪表——工业风自定义控件
  • EP20
    动画与状态机——VisualState
  • EP21
    LiveCharts2 工控波形图实战
  • EP22
    DataGrid 高级用法
  • EP23
    对话框 · 弹窗 · 通知
  • EP24
    多语言与本地化
  • EP25
    响应式布局——适配不同分辨率
  • EP26
    WPF 性能优化与内存泄漏实战
第 10 章Beckhoff ADS 通信深度开发EP27–36 · 10集
  • EP27
    ADS 协议深度解析
  • EP28
    ADS 连接建立与配置
  • EP29
    同步读写——基础变量操作
  • EP30
    异步读写——async/await 模式
  • EP31
    结构体映射 Pack=1 全解析
  • EP32
    Sum Command 批量优化(200ms→8ms)
  • EP33
    ADS Notification 实时数据推送
  • EP34
    心跳检测与自动重连——工程级实现
  • EP35
    Symbol 管理器与动态变量访问
  • EP36
    ADS over TCP 跨网段通信
第 11 章工业功能模块 · 三槽 SCADA 综合实战EP41–60 · 20集
  • EP41
    报警管理系统完整实现
  • EP42
    配方管理系统
  • EP43
    历史数据查询与报表
  • EP44
    用户权限与登录系统
  • EP45
    SCADA 流程图——Canvas 动态绘制
  • EP46
    仪表盘与状态监控页
  • EP47
    设置页面与系统配置
  • EP48
    应用程序打包与部署
  • EP49
    三槽 SCADA EP01:架构设计
  • EP50
    三槽 SCADA EP02:通信层
  • EP51
    三槽 SCADA EP03:主界面开发
  • EP52
    三槽 SCADA EP04:配方+报警
  • EP53
    三槽 SCADA EP05:历史数据+报表
  • EP54
    三槽 SCADA EP06:联调与测试
  • EP55
    三槽 SCADA EP07:代码 Review
  • EP56
    扩展:MQTT IoT 上报
  • EP57
    扩展:Modbus TCP 上位机开发
  • EP58
    接单报价——从需求到交付物清单
  • EP59
    WPF 还是 TwinCAT HMI——选型指南
  • EP60
    上位机架构演进与展望
// 全系套餐 · 最佳选择
课程一 + 课程二 + 课程三 · 全部 138 集
如果你目标是:从 TwinCAT 3 入门 → 运动控制 → 上位机交付,一次买全系是学习顺序最完整、单位成本最低的选择。
全套价格 ≈ 一次设备调试咨询费 · 终身有效 · 包含所有源码更新 · 更适合准备长期做 TwinCAT 3 的工程师
¥2,499
原价 ¥1,897
学前营 ¥199 可全额抵扣任一正式课程;所有课程均含完整 GitHub 源码;购买前可免费索取任意课程完整大纲;企业定制培训另行报价。
// 怎么买更划算
选课路径和套餐逻辑,一眼看懂
这不是“课越多越好”,而是看你现在所处阶段。下面这张表,帮你快速判断应该先补基础、先强化轴控,还是直接拉满上下位一体交付能力。
对比项 学前营 课程一 课程二 课程三 全系套餐
适合谁 不确定是否要转型 TwinCAT 3 的人 刚入门或基础薄弱的 PLC 工程师 要做轴控、多轴、凸轮、PackML 的工程师 要做 WPF / ADS / SCADA 的工程师 准备长期做 TwinCAT 3,并希望完成上下位整体交付的人
核心作用 低成本判断方向 补齐 TwinCAT 3 基础地基 提升设备控制项目价值 打开上位机与整机方案能力 建立完整能力树,避免后续单独补课成本更高
学习顺序 第 0 步 第 1 步 第 2 步 第 3 步 一步到位,按推荐顺序系统推进
试看/低风险 ¥199 可抵扣 可先索取目录 + 免费试看 可先索取目录 + 免费试看 可先索取目录 + 免费试看 先看目录、先聊需求、再决定是否全系
更适合的购买心态 先确认方向 先把地基打稳 优先学最值钱的控制能力 拓宽职业上限 把课程当成未来 1~3 年能力资产来买
风险逆转 01 · 先看再买课程一、二、三都有免费试看内容,先判断讲解风格是否适合你,再决定是否购买。
风险逆转 02 · 先用 ¥199 学前营试方向如果你只是想确认 TwinCAT 3 是否值得投入,学前营就是最稳的试错入口,而且可抵扣正式课程。
风险逆转 03 · 先发你的背景给我你可以直接发“我现在做什么设备 / 会什么 PLC / 想学到哪一步”,我会建议更合适的路径。
风险逆转 04 · 先拿目录对照工作场景购买前先要完整目录,对照你的项目内容再决定,这比盲买更省钱也更高效。
如果你已经有明确项目需求,比如“正在做多轴同步”“准备做 WPF 上位机”“想把 TwinCAT 3 能力变成接单能力”,最省时间的方式就是直接加微信,把你的阶段发给我,我会直接告诉你先买哪一门更划算。
// 学员评价
真实工程师的 反馈

之前 ADS 断线一直没处理好,重连逻辑自己写的比较糙。看了心跳那篇文章,指数退避那块确实没想到,照着思路改了一版,稳多了。内容比较实在,不是那种讲概念的文章。

李工
自动化工程师 · 锂电设备 · 3年TC3经验

电子凸轮课程讲得比较细,五种插补的区别之前只知道个大概,这里对比下来清楚多了。PVD 案例跟我的场景不完全一样,但思路是通的,自己改了改能用。课时有点多,如果能有个精简版就好了。

张工
PLC 工程师 · 光伏设备 · 西门子转Beckhoff

我是 PLC 背景,C# 基础很差。课程三从头开始讲还好,MVVM 那块绕了几遍才搞懂,不过 SCADA 项目跑起来的时候还是挺有成就感的。跟尚工私信问过几个问题,回复比较及时。

王工
设备工程师 · 半导体行业 · 无WPF基础入门
// 项目优先变现
如果你要的是交付,先看 项目合作方式
进入接单成交页 →
你可能不需要先买课

很多客户来找我,不是为了学,而是为了尽快把设备做出来。

课程适合系统提升;项目合作适合当前就要落地交付、要排查现场问题、要补齐上下位机方案的团队或个人。

适合直接找我合作的场景
  • 项目正在推进,PLC / 运动控制 / 上位机其中一块卡住
  • 设备要交付,想找人补齐 TwinCAT 3 或 WPF 关键模块
  • EtherCAT、WcState、ADS 通信等现场问题反复排查无果
  • 团队想做标准化架构、代码审查或专项技术咨询
常见合作输出
  • TwinCAT 3 工程源码、Library 封装、调试记录
  • WPF 上位机源码、部署包、操作说明与联调支持
  • 报警 / 配方 / 历史数据 / 权限系统等模块化交付
  • 需求确认书、阶段验收、远程协助与交付清单
项目案例更匹配哪些方向
  • 半导体设备:PVD / CVD / 减薄 / 研磨相关控制与联调
  • 锂电设备:叠片机、节拍型自动化设备、多轴协同场景
  • 上位机协同:WPF + ADS、报警 / 配方 / 数据采集 / 报表
  • 项目卡点:交付前救火、节拍优化、结构重整、模块补齐
报价方式更适合怎么谈
  • 先判断需求,再选按咨询 / 按模块 / 按阶段合作
  • 小问题可先远程排查,减少一上来整包的试错成本
  • 模块开发更适合当前项目已推进,但关键环节卡住
  • 整机协同更适合目标明确、需要完整交付边界的项目
联系承接建议

直接发设备类型、当前阶段、卡点和时间要求,判断会快很多。

客户不是来听概念,而是来解决问题。资料更完整,就更容易快速判断能否接入、先做哪一段、怎么报价。

// 接单合作
工程定制开发 & 技术咨询
建议加微信时直接发这四条:① 设备类型;② 目前进度;③ 卡在哪个模块(PLC / 运动控制 / 上位机 / EtherCAT);④ 你希望我做咨询、救火排查还是直接接模块开发。这样我能更快判断是否适合项目合作。
01
TwinCAT 3 工程开发
基于 Beckhoff 硬件的完整 PLC 工程定制,涵盖运动控制、EtherCAT 总线调试、OOP 模块封装、PackML 状态机、传感器融合与安全联锁设计。
交付物
完整 TC3 工程源码 · 变量表 · 调试报告
参考报价:按功能模块协商,日费制或里程碑制
运动控制EtherCATPackMLOOP 架构电子凸轮
02
WPF 工业上位机开发
WPF + MVVM + Beckhoff ADS 工业上位机软件定制,含实时数据可视化(LiveCharts2)、报警管理、配方管理、历史数据追溯、用户权限系统。
交付物
WPF 可执行程序 · 完整 C# 源码 · 部署说明
参考报价:SCADA 类项目通常 2–6 周,按页面模块报价
WPF / C#ADS 通信MVVMSCADASQLite
03
技术咨询 & 代码审查
TwinCAT 3 / WPF 项目的技术方案评审、Bug 精准排查、代码重构建议。按小时计费,适合遇到技术卡点需要专家介入的工程团队。
适合场景
EtherCAT 调试卡点 · ADS 通信异常 · 架构评审
参考报价:按小时或次计费,初次沟通免费
方案设计Bug 排查代码重构1对1

联系尚工

有课程咨询、项目开发需求,或只是想聊聊 TwinCAT 3 技术,都欢迎联系。通常 24 小时内回复,工作日内 2 小时内回复微信。

微信加好友
说明需求
免费初步
技术沟通
确认范围
报价交付
微信 · WeChat
Shang_0352
点击复制微信号
手机 · Phone
178-1679-6750
通常 24 小时内回复
// 关于我
尚工 · Shanger
TWINCAT 3 FULL-STACK ENGINEER
尚工
Shanger · AllTwinCAT3
7+
年一线经验
138
课程集数
3
行业覆盖
全源码
GitHub 开放
课程讲授 工程外包 企业培训 技术咨询
TWINCAT 3 SPECIALIST · MOTION CONTROL · WPF SCADA · EDUCATOR

工业自动化工程师,深耕 Beckhoff TwinCAT 3 平台逾七年,完整参与并主导过光伏 PVD/CVD 薄膜沉积、晶圆减薄研磨(CMP)、锂电装备等方向的控制系统开发,积累了从底层 EtherCAT 总线调试到系统级 OOP 架构设计的一线工程经验。

擅长 TwinCAT 3 + WPF 双端全栈开发,能独立交付从下位机逻辑到工业 SCADA 上位机的完整控制系统。在国内 Beckhoff 工程师群体中,属于少数同时具备 PLC 底层开发与上位机软件能力的工程师。

课程教学:创立 AllTwinCAT3 · 尚工 技术品牌,四门课体系(学前营 · TwinCAT 3 入门与实战 · TwinCAT 3 运动控制 · 工业上位机开发实战)是目前国内覆盖度最高的 Beckhoff 全栈中文课程,全部源码开源,内容来自真实产线项目。

工程外包:接受 TwinCAT 3 控制系统定制开发、WPF 工业上位机软件开发及企业内训。可签合同、开发票、里程碑付款,需求明确即可快速启动。微信 Shang_0352 直接沟通,24 小时内响应。

核心技术栈
TwinCAT 3 XAE/XAREtherCAT · PDOPLCopen MotionIEC 61131-3 STBeckhoff ADSWPF · MVVMC# · .NETPackML 状态机电子凸轮OOP 设计压力闭环 · PIDTwinSAFE光伏 · 半导体 · 锂电
项目经历
  • 2020–至今
    高级 PLC 工程师 · 半导体 / 光伏设备控制系统
    无锡 · PVD/CVD 薄膜沉积 / 晶圆减薄研磨 / 多轴同步运动控制 · 独立负责选型到量产交付全流程
  • 持续
    技术教育者 · 外包工程师 · AllTwinCAT3 品牌创始人
    课程讲授 / 工程外包 / 企业培训 · Bilibili · github.com/tc3-engineer · alltwincat3.com
// 下一步最该做的动作
别只是收藏网站,直接把我加上。

你现在最需要的不是再看十篇泛泛教程,而是快速判断:你当前卡在哪个阶段、该先补哪一块、适合走课程、咨询还是项目合作路线。把微信加上,我可以帮你更快把 TwinCAT 3 能力变成实际产出。

课程咨询项目评估技术答疑外包合作企业培训
📱 复制微信 🎓 看课程
复制微信 查看课程
AllTwinCAT3 · 技术文章
MOTION CONTROL

TwinCAT 3 电子凸轮完全指南:凸轮表设计 · 五种插补方式 · MC_CamIn 工程实战

MC_CamIn电子凸轮五种插补运动控制 2026-01-18 · 尚工

一、什么是电子凸轮

机械凸轮通过固定的物理形状将主轴旋转转换为从轴位移,一旦加工成型就无法更改。电子凸轮(Electronic Cam)则将这种映射关系存入凸轮表(Cam Table),在 TwinCAT 3 的 NC 系统中由软件实时计算从轴位置,可随时在线修改,无需停机换型。

核心公式很简单:SlavePosition = f(MasterPosition),凸轮表就是这个函数 f 的离散采样点集合。

应用场景:印刷套准、横封切断、PVD 设备基板往复运动、卷绕张力控制、包装机出料同步。

二、凸轮表数据结构

TwinCAT 3 的凸轮表由一系列 (主轴位置, 从轴位置, 插补类型) 三元组构成:

// 凸轮表条目结构(简化)
TYPE ST_CamPoint :
STRUCT
    fMasterPos  : LREAL;   // 主轴位置(单位:mm 或 deg)
    fSlavePos   : LREAL;   // 对应从轴位置
    nInterpType : INT;     // 插补类型 0-4
END_STRUCT
END_TYPE

三、五种插补方式深度对比

1. Linear(线性,类型 0)

相邻两点之间直线连接。速度曲线为阶跃,加速度在节点处不连续,会产生冲击。适用于:对平滑性要求不高的慢速场合。

2. Cubic(三次多项式,类型 1)

每段用三次多项式拟合,保证速度连续但加速度在节点处可能不连续。适用于:中速场合,比线性平滑但计算量小。

3. BSpline(B 样条,类型 2)

全局平滑,位移/速度/加速度均连续,是多数工业场合的首选。不经过控制点(逼近而非插值),对抗扰动能力强。PVD 往复运动推荐使用此方式。

4. Akima(Akima 样条,类型 3)

局部插值方法,经过所有控制点且对个别异常点不敏感。适用于凸轮表由实测数据(传感器采样)生成的场合。

5. Hermite(Hermite 样条,类型 4)

需要同时指定每点的导数值(斜率),控制自由度最高,可精确控制每点处的速度。适用于需要严格匹配端点速度的场合(如与其他轴的速度对接)。

选型建议:默认选 BSpline(类型2);若凸轮表来自实测数据选 Akima(类型3);需要控制端点速度选 Hermite(类型4)。

四、MC_CamIn 完整实现

// 完整凸轮控制状态机
VAR
    fbCamTableSel : MC_CamTableSelect;
    fbCamIn       : MC_CamIn;
    fbCamOut      : MC_CamOut;
    eMasterAxis   : AXIS_REF;
    eSlaveAxis    : AXIS_REF;
    nState        : INT := 0;
    bStartCam     : BOOL;
    bStopCam      : BOOL;
END_VAR

CASE nState OF
0: // Idle - 等待启动命令
    IF bStartCam THEN
        bStartCam := FALSE;
        nState := 10;
    END_IF

10: // 加载凸轮表
    fbCamTableSel(
        Master    := eMasterAxis,
        Slave     := eSlaveAxis,
        CamTable  := CamTable_PVD,  // 预定义凸轮表
        Periodic  := TRUE,
        Execute   := TRUE
    );
    IF fbCamTableSel.Done     THEN nState := 20; END_IF
    IF fbCamTableSel.Error    THEN nState := 99; END_IF

20: // 激活凸轮跟随
    fbCamTableSel.Execute := FALSE;
    fbCamIn(
        Master        := eMasterAxis,
        Slave         := eSlaveAxis,
        MasterOffset  := 0,
        SlaveOffset   := 0,
        StartMode     := AXIS_START_MODE.ABSOLUTE,
        Execute       := TRUE
    );
    IF fbCamIn.InSync THEN nState := 30; END_IF
    IF fbCamIn.Error  THEN nState := 99; END_IF

30: // 凸轮运行中 - 等待停止命令
    fbCamIn.Execute := FALSE;
    IF bStopCam THEN
        bStopCam := FALSE;
        nState := 40;
    END_IF

40: // 脱离凸轮
    fbCamOut(Slave := eSlaveAxis, Execute := TRUE);
    IF fbCamOut.Done  THEN nState := 0;  END_IF
    IF fbCamOut.Error THEN nState := 99; END_IF

99: // Error Stop
    fbCamTableSel.Execute := FALSE;
    fbCamIn.Execute       := FALSE;
END_CASE

五、CSV 凸轮表生成工具

TwinCAT 3 支持从 CSV 文件动态加载凸轮表,格式为 主轴位置,从轴位置,插补类型。可用 Python 或 Excel 自动生成,尤其适合将机械设计数据直接转换为控制参数:

# Python 生成正弦凸轮表示例
import numpy as np
master = np.linspace(0, 360, 180)
slave  = 50 * np.sin(np.radians(master))
with open('cam_pvd.csv', 'w') as f:
    for m, s in zip(master, slave):
        f.write(f"{m:.3f},{s:.3f},2
")  # 类型2=BSpline

完整源码已上传至 github.com/tc3-engineer,含 TwinCAT 3 工程 + CSV 生成脚本 + PVD 设备案例。

AllTwinCAT3 · 技术文章
ADS · WPF

WPF + ADS 通信:心跳检测与指数退避自动重连工程实现

ADS心跳重连WPFMVVM 2025-12-30 · 尚工

一、问题背景

工业现场网络并不稳定,网线松动、网络切换、PLC 重启都会导致 ADS 连接断开。如果上位机没有自动重连机制,工程师必须手动重启软件,这在无人值守的产线上是不可接受的。

本文介绍一套经过半导体设备现场验证的心跳检测 + 指数退避自动重连方案,完整 C# MVVM 实现。

二、整体架构

连接状态机包含三个状态:

  • Connected:ADS 正常,心跳每 1s 检测一次
  • Disconnected:心跳失败超过阈值,触发重连流程
  • Reconnecting:指数退避等待后尝试重连,成功回到 Connected

三、核心代码实现

// IAdsService.cs
public interface IAdsService
{
    bool IsConnected { get; }
    event Action<bool> ConnectionChanged;
    Task<T> ReadAsync<T>(string symbolName);
    Task WriteAsync<T>(string symbolName, T value);
}
// AdsService.cs - 心跳检测 + 指数退避重连
private int[] _backoffSeconds = { 1, 2, 4, 8, 15, 30 };
private int  _retryIndex = 0;

private async Task HeartbeatLoopAsync(CancellationToken ct)
{
    while (!ct.IsCancellationRequested)
    {
        await Task.Delay(1000, ct);
        try
        {
            var state = await _client.ReadStateAsync();
            if (state.AdsState != AdsState.Run)
                throw new AdsException("PLC not in Run state");
            _retryIndex = 0;          // 重置退避计数
            SetConnected(true);
        }
        catch
        {
            SetConnected(false);
            await ReconnectWithBackoffAsync(ct);
        }
    }
}

private async Task ReconnectWithBackoffAsync(CancellationToken ct)
{
    var wait = _backoffSeconds[
        Math.Min(_retryIndex, _backoffSeconds.Length - 1)];
    _retryIndex++;
    await Task.Delay(wait * 1000, ct);
    try
    {
        _client.Disconnect();
        _client.Connect(_amsNetId, _port);
        SetConnected(true);
        _retryIndex = 0;
    }
    catch { /* 继续下一轮 */ }
}

四、ViewModel 绑定连接状态

// MainViewModel.cs
public string ConnectionStatus =>
    _adsService.IsConnected ? "● 在线" : "○ 离线";

public string StatusColor =>
    _adsService.IsConnected ? "#2e9e5b" : "#cc3333";

// 在构造函数中订阅事件
_adsService.ConnectionChanged += isConnected =>
    Application.Current.Dispatcher.Invoke(() =>
    {
        OnPropertyChanged(nameof(ConnectionStatus));
        OnPropertyChanged(nameof(StatusColor));
    });

💡 重连成功后需要重新订阅所有 ADS Notification,否则实时数据推送会静默失效——这是最常被遗漏的一步。

完整工程源码含 IAdsService 接口、AdsService 实现、Mock 测试类,已上传至 github.com/tc3-engineer

AllTwinCAT3 · 技术文章
EtherCAT

EtherCAT PDO 映射深度解析:DC 同步 · WcState 监控 · 故障排查

EtherCATPDO 映射DC SyncWcState 2025-11-08 · 尚工

一、PDO vs SDO——搞清楚再配置

PDO(Process Data Object)是 EtherCAT 周期性实时数据通道,每个控制周期自动传输,延迟可低至 100μs 级别。SDO(Service Data Object)是非周期配置通道,用于读写设备参数(如驱动器额定电流),不适合实时控制。

  • 运动控制位置/速度/状态字 → 必须用 PDO
  • 驱动器参数配置(Kp/Ki/额定电流)→ 用 SDO(启动时配置一次)

二、PDO 映射配置完整流程

  1. 在 TwinCAT XAE 中扫描设备,导入 ESI 文件
  2. 进入设备的 Process Data 标签页
  3. 确认默认 PDO 映射是否满足需求(多数情况够用)
  4. 若需自定义:在 Sync Manager 中调整 PDO 条目
  5. 将 PDO 变量拖拽链接到 PLC 变量(或使用 AT 语法直接映射)
// AT 语法直接映射 PDO 到 PLC 变量
VAR
    nActPos  AT %I* : DINT;  // 输入:驱动器实际位置
    nCtrlWd  AT %Q* : WORD;  // 输出:控制字
    nStsWd   AT %I* : WORD;  // 输入:状态字
END_VAR

三、DC 同步(Distributed Clocks)配置

DC 同步让所有 EtherCAT 从站在同一时刻更新 PDO 数据,消除各从站之间的时间偏差。对于多轴同步控制(如电子凸轮),DC 同步是必须配置的。

在设备的 DC 标签中选择 DC-Synchron 模式,Sync0 周期应与 NC Task 周期一致(通常 1ms 或 2ms)。

注意:如果多个驱动器的 Sync0 周期不一致,会导致轴间同步抖动,电子凸轮跟随误差增大。统一设置为相同周期。

四、WcState 监控与报警 FB

WcState(Working Counter State)反映 EtherCAT 帧的完整性。值为 0 表示正常;非 0 表示有从站丢失或通信错误。

// WcState 监控 FB(带防抖)
FUNCTION_BLOCK FB_WcStateMonitor
VAR_INPUT
    nWcState    : UINT;
    tDebounce   : TIME := T#500MS;
END_VAR
VAR_OUTPUT
    bEcatFault  : BOOL;
END_VAR
VAR
    tonDebounce : TON;
END_VAR

tonDebounce(IN := nWcState <> 0, PT := tDebounce);
bEcatFault := tonDebounce.Q;

五、常见故障排查速查表

  • Init Error / Link Loss:检查网线和接头;确认从站上电顺序正确
  • WcState 频繁跳变:网线品质问题或拓扑中存在环路;检查所有设备接地
  • DC 同步失败:主时钟(First DC Device)配置错误;检查从站固件版本是否支持 DC
  • PDO 数据全为 0:变量链接未正确建立;重新激活配置(Ctrl+Shift+F4)
AllTwinCAT3 · 技术文章
OOP · 架构设计

TwinCAT 3 OOP 轴控:INTERFACE · 继承 · 工厂模式分层架构工程实践

OOPINTERFACEFB_AxisBase工厂模式 2025-10-22 · 尚工

一、为什么要用 OOP 封装轴控

传统做法:每个轴复制一套 MC_MoveAbsolute / MC_Home 代码,修改一处需改多处,新增轴型(步进/伺服)需大改逻辑。OOP 封装后:新增轴只需继承基类、重写差异部分,主程序调用统一接口,完全解耦。

二、I_Axis 通用接口定义

INTERFACE I_Axis
    // 使能/复位
    METHOD Enable  : BOOL
    METHOD Reset   : BOOL
    // 回零
    METHOD Home    : BOOL
    // 运动
    METHOD MoveAbs : BOOL
        VAR_INPUT fPos : LREAL; fVel : LREAL; END_VAR
    METHOD MoveRel : BOOL
        VAR_INPUT fDist : LREAL; fVel : LREAL; END_VAR
    METHOD Jog     : BOOL
        VAR_INPUT bFwd : BOOL; bBwd : BOOL; END_VAR
    METHOD Stop    : BOOL
    // 状态属性
    PROPERTY IsReady   : BOOL GET
    PROPERTY IsMoving  : BOOL GET
    PROPERTY ActPos    : LREAL GET
    PROPERTY HasError  : BOOL GET
    PROPERTY ErrorID   : UDINT GET

三、FB_AxisBase 基类实现(核心)

FUNCTION_BLOCK FB_AxisBase IMPLEMENTS I_Axis
VAR
    _axis      : AXIS_REF;
    _fbPower   : MC_Power;
    _fbHome    : MC_Home;
    _fbMoveAbs : MC_MoveAbsolute;
    _fbMoveRel : MC_MoveRelative;
    _fbJog     : MC_Jog;
    _fbStop    : MC_Stop;
    _fbReset   : MC_Reset;
    _eState    : E_AxisState;
END_VAR

METHOD MoveAbs : BOOL
VAR_INPUT fPos : LREAL; fVel : LREAL; END_VAR
    _fbMoveAbs(
        Axis     := _axis,
        Position := fPos,
        Velocity := fVel,
        Execute  := TRUE
    );
    MoveAbs := _fbMoveAbs.Done;

四、子类扩展——以 FB_GrindingAxis 为例

// 晶圆研磨下压轴:继承基类,扩展压力闭环切换
FUNCTION_BLOCK FB_GrindingAxis EXTENDS FB_AxisBase
VAR
    _fbPressureCtrl : FB_PressureLoop;
    _bPressureMode  : BOOL;
END_VAR

// 重写 Stop —— 增加压力控制器关闭逻辑
METHOD Stop : BOOL
    _fbPressureCtrl.Enable := FALSE;  // 先关压力控制
    SUPER^.Stop();                     // 再调用基类停止
    Stop := TRUE;

五、主程序统一调用

// 工厂模式:用接口数组管理所有轴
VAR
    fbLinearAxis   : FB_LinearAxis;
    fbGrindAxis    : FB_GrindingAxis;
    arrAxes        : ARRAY[0..1] OF I_Axis;
END_VAR

arrAxes[0] := fbLinearAxis;
arrAxes[1] := fbGrindAxis;

// 统一回零:无需关心具体轴型
FOR i := 0 TO 1 DO
    arrAxes[i].Home();
END_FOR

完整 OOP 轴控套件(含 I_Axis / FB_AxisBase / FB_LinearAxis / FB_RotaryAxis)已开源,见 github.com/tc3-engineer

AllTwinCAT3 · 技术文章
PackML · 半导体设备

PackML 状态机工程实现:17个状态 · Stopping vs Aborting · TwinCAT 3 完整 FB

PackML状态机ISA-88半导体设备 2025-09-15 · 尚工

一、为什么半导体设备要用 PackML

半导体设备控制逻辑复杂,状态繁多,如果用自定义状态机,不同工程师写出来的结构各不相同,维护和交接成本极高。ISA-88 PackML 标准定义了一套通用的 17 状态机,已被 OMAC 组织采纳,成为工业设备控制的事实标准。

二、17 个状态总览

  • Stopped:已停止,等待 Start 命令
  • Starting:启动中(预热、检查)→ 自动进入 Execute
  • Execute:正常运行
  • Completing:当前批次完成 → 进入 Complete
  • Complete:批次完成,等待 Reset
  • Suspending:暂停中(原材料不足等外部原因)
  • Suspended:已暂停
  • Unsuspending:恢复中
  • Holding:保持中(内部原因,如参数调整)
  • Held:已保持
  • Unholding:解保持中
  • Stopping:受控停止(安全抬刀→关气→回零)
  • Aborting:紧急中止(立即停所有运动)
  • Aborted:已中止,等待 Clear
  • Clearing:清除错误,回到 Stopped
  • Resetting:复位,回到 Stopped
  • Idle:空闲(部分实现中使用)

三、Stopping vs Aborting 的核心区别

这是最常被混淆的两个状态,搞错了会导致设备损坏或安全事故。

  • Stopping(受控停止):有时间完成安全动作序列。晶圆研磨:① 减小下压力 → ② 抬起研磨头 → ③ 关闭研磨液 → ④ 轴回零 → 进入 Stopped
  • Aborting(紧急中止):立即停止所有运动,不等待安全序列。触发条件:急停按钮、安全门打开、设备故障。进入 Aborted 后必须 Clear 才能重新启动。

四、TwinCAT 3 FB 实现

FUNCTION_BLOCK FB_PackMLStateMachine
VAR_INPUT
    cmdStart     : BOOL;
    cmdStop      : BOOL;
    cmdAbort     : BOOL;
    cmdReset     : BOOL;
    cmdClear     : BOOL;
    bStopDone    : BOOL;  // 外部:安全停止序列完成
    bStartDone   : BOOL;  // 外部:启动检查完成
END_VAR
VAR_OUTPUT
    eState       : E_PackMLState;
    bDoExecute   : BOOL;  // 输出:允许执行工艺
    bDoStop      : BOOL;  // 输出:执行安全停止序列
    bDoAbort     : BOOL;  // 输出:立即停止所有运动
END_VAR

CASE eState OF
E_PackMLState.Stopped:
    IF cmdStart  THEN eState := E_PackMLState.Starting; END_IF
    IF cmdAbort  THEN eState := E_PackMLState.Aborting; END_IF

E_PackMLState.Starting:
    IF bStartDone THEN eState := E_PackMLState.Execute; END_IF
    IF cmdAbort   THEN eState := E_PackMLState.Aborting; END_IF

E_PackMLState.Execute:
    bDoExecute := TRUE;
    IF cmdStop  THEN eState := E_PackMLState.Stopping; END_IF
    IF cmdAbort THEN eState := E_PackMLState.Aborting; END_IF

E_PackMLState.Stopping:
    bDoExecute := FALSE;
    bDoStop    := TRUE;  // 触发安全停止序列
    IF bStopDone THEN
        bDoStop := FALSE;
        eState  := E_PackMLState.Stopped;
    END_IF
    IF cmdAbort  THEN eState := E_PackMLState.Aborting; END_IF

E_PackMLState.Aborting:
    bDoExecute := FALSE;
    bDoStop    := FALSE;
    bDoAbort   := TRUE;  // 立即停所有轴
    eState     := E_PackMLState.Aborted;

E_PackMLState.Aborted:
    bDoAbort := FALSE;
    IF cmdClear THEN eState := E_PackMLState.Clearing; END_IF

E_PackMLState.Clearing:
    eState := E_PackMLState.Stopped;
END_CASE

完整 PackML FB 源码(含所有 17 状态 + 模式切换 + 报警集成)已上传至 github.com/tc3-engineer

AllTwinCAT3 · 课程目录
COURSE CATALOG

四门课程完整目录

学前营 5集课程一 39集课程二 39集课程三 60集含完整源码
学前营 · TwinCAT 3 快速上手 · 5集 · ¥199
全5集TwinCAT 3 值不值得学,学了能干啥EP01–05 · 5集
  • EP01PC控制 vs 传统PLC:TwinCAT 3 凭什么 · XAE/XAR架构 · 与S7-1500/三菱iQ-R对比
  • EP02TwinCAT 3 环境搭建全攻略(含避坑指南) · BIOS VT · License · ADS 4132 · Win11兼容
  • EP03创建第一个项目,跑起来 · Solution结构 · MAIN编写 · Activate · Watch窗口
  • EP04ST语言核心语法:从西门子/三菱快速迁移 · 数据类型 · IF/CASE · TON · 气缸往复
  • EP05综合小项目:完整控制逻辑 · 需求分析→状态机→调试→Git归档 · PackML雏形
课程一 · TwinCAT 3 入门与实战 · 39集 · 4章 · ¥599
第1章TwinCAT 3 生态与开发环境EP01–10 · 10集
  • EP01TwinCAT 3 凭什么——PC控制为何碾压传统PLC · XAE/XAR/Runtime全景 · 半导体/锂电/光伏选Beckhoff的理由
  • EP02安装 TwinCAT 3 开发环境(含避坑指南) · XAE Shell · License · ADS Error 4132 · Win11兼容性警告
  • EP03没有硬件也能学——虚拟机跑TwinCAT 3全流程 · VMware/Hyper-V · 软件仿真 · ADS路由
  • EP04创建第一个 TwinCAT 3 项目,跑起来 · Solution结构 · Activate Configuration · Watch窗口
  • EP05为什么工控不能用普通Windows——实时性原理与Task配置 · Task周期 · Core绑定 · Jitter分析
  • EP06工控也要版本控制——TwinCAT 3工程与Git实战 · .gitignore · 分支策略 · .sln/.tsproj解析
  • EP07真实设备工程怎么组织——半导体项目文件结构实战 · Library Project · 工程结构设计
  • EP08管理多个 TwinCAT 版本 · 多版本并存场景 · 版本切换注意事项 · 部署最佳实践
  • EP09InfoSys:工控工程师的查错圣经 · 离线安装 · 错误码速查(ADS/NC Error) · 查文档姿势
  • EP10TwinCAT 虚拟轴仿真实践 · 软件轴配置 · 虚拟I/O · 仿真运行三槽液体混合
第2章IEC 61131-3 编程核心——ST语言精讲EP11–24 · 14集
  • EP11数据类型完全指南 · BOOL/INT/LREAL/TIME/STRING · LREAL精度陷阱 · TYPE自定义类型
  • EP12数组越界怎么把设备搞崩的——数组与指针避坑实战 · 越界案例复盘 · POINTER · REFERENCE TO
  • EP13工艺配方怎么设计——STRUCT在设备中的实战 · 参数打包 · UNION协议解析 · PVD配方设计
  • EP14FUNCTION 设计与使用 · 值传递vs引用传递 · 中位值/均值滤波(半导体测厚案例)
  • EP15FB是工控OOP的核心——从气缸控制FB开始 · 实例概念 · VAR类型全解析 · 含超时检测/报警
  • EP16INTERFACE:接口与多态 · 通用轴控对象 · EXTENDS继承 · 气缸FB/伺服FB实现同一接口
  • EP17工控代码也能优雅——工厂/策略/单例模式实战 · OOP重构阀门管理模块
  • EP18工控编程最核心的模式——CASE状态机彻底搞懂 · PackML简介 · 循环使用原则
  • EP19TON/R_TRIG这些FB你真的会用吗——标准库深度解析 · TON/TOF/TP · CTU/CTD · R_TRIG/F_TRIG · RS/SR
  • EP20Tc2_Utilities 工具库 · FIFO缓冲区 · 执行时间测量 · NT_GetTime · 关键循环耗时分析
  • EP21I/O 配置与变量链接 · EL系列数字量/模拟量 · PDO链接 · AT语法 · EL1008/EL2008/EL3068
  • EP22把自己的FB打包成库——可复用代码库实战 · Library Project · 版本号管理 · 气缸套件封装
  • EP23OPC UA/MQTT/TCP——TwinCAT如何连接外部世界 · TF6310/TF6100/TF6701 · MQTT上报云平台
  • EP24设备日志怎么记才专业——文件操作与滚动日志实战 · FB_FileOpen · 滚动日志 · 日志级别规范
第3章调试技术 · 代码规范 · 工程实践EP25–34 · 10集
  • EP25Watch/Force/断点——在线调试三件套 · Online Change · Message Window日志
  • EP26TwinCAT Scope 波形采集 · 采样周期 · Trigger · 数据导出 · 液位/泵信号调试分析
  • EP27这些坑我都踩过——TwinCAT 3高频报错全解析 · C0555 · ADS 4132 · 0x1C · WcState · Hyper-V冲突
  • EP28让同事看懂你的代码——命名规范与注释实战 · 匈牙利命名法 · PLCopen规范 · ENUM替代魔法数字
  • EP29ADS 通信原理与测试工具 · AmsNetId · Port · IndexGroup/Offset · ADS Test Tool
  • EP30静态代码分析与代码质量 · Static Analysis工具 · 未使用变量/类型不匹配/数组越界风险检测
  • EP31工控代码也要写测试——TcUnit单元测试从零开始 · TDD · ASSERT断言 · 对FB进行单元测试
  • EP32一键部署TwinCAT工程——CI/CD自动化流水线 · Automation Interface · GitHub Actions
  • EP33扫描时间超标怎么办——Task性能优化实战 · Watchdog · 多Task优先级 · PVD多轴Task架构
  • EP34综合实战——三槽液体混合下位机 · PackML状态机 · 报警 · 配方切换 · 课程三联调基础
第4章EtherCAT 总线深度实践EP35–39 · 5集
  • EP35为什么半导体设备都用EtherCAT——原理与性能对比 · E-Frame · DC同步 · 拓扑类型
  • EP36EtherCAT 设备配置实操 · ESI导入 · Sync Mode · OnlineDevice诊断 · 混合拓扑配置
  • EP37PDO映射搞不懂?手把手带你完成从零配置 · TxPDO/RxPDO · CoE对象字典基础
  • EP38WcState一直报错怎么排查——DC同步与总线诊断实战 · Working Counter · 报警FB设计
  • EP39EtherCAT 诊断与故障排查 · 状态机 Init/Pre-Op/Safe-Op/Op · Link Loss · Frame Drop
课程二 · TwinCAT 3 运动控制 · 39集 · 3章+专题 · ¥999
第5章NC轴基础与PLCopen单轴控制EP01–14 · 14集
  • EP01TwinCAT运动控制全景——NC轴是什么能干什么 · NC Task/Channel/Axis · PTP/NCI/FIFO适用场景
  • EP02轴配置——从驱动器到NC轴 · EtherCAT驱动器链接 · CoE参数 · AX5000/AX8000配置要点
  • EP03Kv/Jerk/跟随误差——伺服参数你必须搞懂的三件事 · Kv增益 · 跟随误差配置 · Scope辅助调节
  • EP04MC_Power · MC_Reset · 轴使能逻辑 · 轴状态机 · ErrorID速查 · 工程封装模式
  • EP05MC_MoveAbsolute/Relative——定位控制从入门到实战 · MC_Stop/MC_Halt · Z轴定位控制案例
  • EP06速度控制与连续运动 · MC_MoveVelocity · Override速度倍率 · PVD匀速扫描控制
  • EP07设备上电第一步——六种Homing模式全解析 · MC_Home · 软/硬限位 · 多轴Homing序列设计
  • EP08轴控OOP架构设计 · IAxis接口+CServoAxis实现 · 多实例轴管理 · 三轴封装案例
  • EP09Scope波形怎么看——跟随误差分析与伺服调试实战 · Kv/Ki/Kp影响 · 前馈补偿 · 调试流程
  • EP10SafeMotion与轴安全基础 · TwinSAFE STO/SS1/SLS/SOS · EL6900 · 安全功能测试
  • EP11压力/力矩控制——传感器融合 · ActTorque扭矩读取 · 压力闭环PI设计 · 磨削压力控制
  • EP12PackML完整状态机设计 · ISA-88全17状态 · 状态迁移 · HoldRestart恢复机制
  • EP13单轴综合实战——晶圆减薄控制 · Homing→进给→磨削→退出序列 · 报警管理 · 源码讲解
  • EP14NC配置优化与调试技巧 · Online Axis View · 0x4XXX报错速查 · 调试日志规范
EtherCAT专题驱动器总线深度实践EP15–19 · 5集
  • EP15Beckhoff I/O模块族深度解析 · EL数字量/模拟量/编码器/RTD · 标定方法 · PVD设备配置清单
  • EP16串口/Modbus/TCP——TwinCAT如何读取第三方设备 · TF6340 串口 · Modbus TCP/RTU · 温控器读取
  • EP17驱动器参数怎么在线改——CoE对象字典读写实战 · SDO读写FB · 驱动器参数持久化
  • EP1830个从站还是100个——大型EtherCAT系统拓扑规划 · 带宽计算 · 100+从站拓扑规划原则
  • EP19PVD设备EtherCAT总线调试案例 · 多轴+多IO调试经验 · 调试顺序 · 设备级文档建立
第6章多轴同步与电子凸轮EP20–29 · 10集
  • EP20独立轴/主从耦合/插补——多轴控制三种模式怎么选 · NC PTP vs NCI · Task优先级规划
  • EP21MC_GearIn——主从速度耦合 · 齿轮比设置 · 动态切换 · 虚轴技巧 · PVD基板移送同步
  • EP22飞剪控制原理——MC_GearInPos相位同步实战 · SyncPosition · 渐进软同步 · 飞剪仿真
  • EP23告别机械凸轮——MC_CamIn电子凸轮从原理到实现 · 凸轮表结构 · 多项式插值 · Cam Design Tool
  • EP24MC_CamTableSelect——凸轮表切换 · 多段凸轮策略 · 热切换 · Master周期影响分析
  • EP25凸轮设计五步法——硅片传输机构电子凸轮全流程 · 工艺分析→关键点→插值→仿真→实施
  • EP26NCI插补与G代码 · G00/G01/G02/G03 · NCI Channel · 圆弧插补
  • EP27Robotics——SCARA/Delta机器人正反解 · TF5100 Robotics · 坐标变换
  • EP28多轴综合实战——贴片机XY平台 · 伺服双轴同步定位+视觉触发 · 源码完整讲解
  • EP29多轴调试技巧与案例 · 多轴Scope波形分析 · 同步误差排查 · 典型故障复盘
第7章传感器融合 · 安全控制 · 高级运控专题EP30–39 · 10集
  • EP30编码器高精度位置采集 · EL5151绝对值编码器 · 多圈编码器处理 · 精度补偿
  • EP31力矩/推力闭环控制 · PI控制器设计 · 抗积分饱和 · 磨削力闭环工程实现
  • EP32视觉触发与位置锁存 · EL1252高速数字量 · 触发捕获 · 视觉对位应用
  • EP33TwinSAFE系统集成 · 安全功能设计流程 · SIL等级 · 安全矩阵设计
  • EP34OPC UA Server——TwinCAT对外开放数据 · TF6100 OPC UA · 节点配置 · 上位机读取
  • EP35TwinCAT Analytics——数据分析与预测维护 · TF3500 · 时序数据采集 · 异常检测
  • EP36高速I/O应用——EL1252/EL2252与实时控制 · 亚毫秒响应 · 高速印刷/视觉触发
  • EP37晶圆减薄设备完整控制系统 · 多轴联动+压力闭环+视觉 · 架构设计与源码解析
  • EP38锂电卷绕设备电子凸轮应用 · 张力控制+切刀同步 · ±0.1mm精度实现方案
  • EP39运动控制课程总结与进阶路线 · 项目接单能力建立 · 继续学习资源推荐
课程三 · 工业上位机开发实战 · 60集 · 4章 · ¥1,199
第8章C# 基础——工控上位机开发基石EP01–12 · 12集
  • EP01为什么工控上位机选C#/WPF · 与Python/LabVIEW/Java对比 · .NET 6+长期支持 · 适合工控的理由
  • EP02C# 开发环境 · Visual Studio 2022 · NuGet包管理 · 项目结构 · 第一个控制台程序
  • EP03变量/类型/运算符 · int/double/string/bool · 隐式显式转换 · 字符串插值
  • EP04控制流:if/switch/for/while · break/continue · 工控逻辑映射到C#
  • EP05方法与参数 · 值类型vs引用类型 · ref/out · 重载 · 工具方法库设计
  • EP06类与对象 · 构造函数 · 属性 · 封装 · DeviceModel设备模型设计
  • EP07继承与多态 · 虚方法 · 抽象类 · 接口(IDevice · IAlarm) · 多态的工控意义
  • EP08集合与泛型 · List<T> · Dictionary · ObservableCollection · LINQ基础
  • EP09异常处理 · try/catch/finally · 自定义异常 · 工控异常处理策略(不能崩溃的软件)
  • EP10异步编程 · Task/async/await · CancellationToken · 工控中为何必须异步
  • EP11文件与序列化 · File/Directory · JSON序列化(System.Text.Json) · 配方文件存取
  • EP12C#进阶速览 · Lambda/委托/事件 · 扩展方法 · 为MVVM打基础
第9章WPF 与 MVVM 架构EP13–26 · 14集
  • EP13WPF是什么 · XAML语法基础 · 数据绑定初体验 · Hello WPF控制面板
  • EP14布局系统 · Grid/StackPanel/DockPanel/WrapPanel · 响应式布局策略
  • EP15控件全家桶 · Button/TextBox/ComboBox/Slider/ProgressBar · 工业UI常用控件
  • EP16数据绑定深度 · INotifyPropertyChanged · Binding Mode · Converter · 绑定调试
  • EP17MVVM架构设计 · Model/ViewModel/View职责划分 · CommunityToolkit.Mvvm · RelayCommand
  • EP18MahApps.Metro主题框架 · 工业风深色主题 · MetroWindow · 自定义样式
  • EP19依赖注入 · Microsoft.Extensions.DependencyInjection · ServiceCollection · 工厂模式
  • EP20页面导航 · Frame导航 · ContentControl · 多视图切换 · 工业软件页面结构
  • EP21实时数据可视化——LiveCharts2图表 · 折线图/柱状图 · 滚动缓冲区 · 降采样优化
  • EP22数据表格——DataGrid高级用法 · 条件格式 · 虚拟化千行不卡 · 排序/过滤/分页
  • EP23对话框·弹窗·通知 · MahApps Dialog · Snackbar · 参数确认弹窗+权限验证
  • EP24多语言与本地化 · ResourceDictionary · 运行时中英文切换(不重启)
  • EP25响应式布局——适配不同分辨率 · Grid*弹性 · ViewBox缩放 · DPI感知配置
  • EP26界面越用越卡怎么排查——WPF性能优化与内存泄漏实战 · Dispatcher · 弱事件模式
第10章Beckhoff ADS 通信深度开发EP27–36 · 10集
  • EP27ADS协议深度解析 · AmsNetId+Port+IndexGroup/Offset · 命令类型 · TwinCAT.Ads NuGet版本选择
  • EP28ADS连接建立与配置 · AdsClient · 本地/远程连接 · 路由配置 · 连接生命周期管理
  • EP29同步读写——基础变量操作 · ReadAny/WriteAny · ReadSymbol(推荐) · AdsException处理
  • EP30异步读写——async/await模式 · ReadAnyAsync · 不卡界面 · 100ms周期刷新30个变量
  • EP31PLC结构体到C#对象踩了什么坑——内存对齐Pack=1全解析 · StructLayout · STRING映射
  • EP32100个变量读取从200ms降到8ms——Sum Command批量优化实战 · AdsSymbolLoader
  • EP33ADS Notification——实时数据推送 · AddDeviceNotification · 1ms高频稳定接收策略
  • EP34心跳检测与自动重连——工程级实现 · AdsState · 指数退避算法 · UI在线/离线同步
  • EP35Symbol管理器与动态变量访问 · IAdsSymbolLoader · 符号树浏览 · 通用变量浏览器开发
  • EP36ADS over TCP——跨网段通信 · AMS over TCP · TCP 48898端口 · VPN · 安全性考量
第11章工业功能模块开发 · 综合项目实战EP41–60 · 20集
  • EP41报警管理系统完整实现 · AlarmModel · 报警DataGrid(颜色+闪烁) · 声音 · SQLite持久化
  • EP42配方管理系统 · 配方数据模型 · JSON文件持久化 · 配方对比视图 · 一键下发ADS批量写入
  • EP43历史数据查询与报表 · SQLite时间分区 · DateTimePicker查询 · EPPlus导出Excel · QuestPDF报告
  • EP44用户权限与登录系统 · 四角色模型 · MD5登录 · 操作日志 · 控件按角色动态绑定
  • EP45SCADA流程图怎么画——Canvas动态绘制阀门/管道/液位罐 · Path/Ellipse · 管道流向动画
  • EP46仪表盘与状态监控页 · Gauge仪表盘 · LED矩阵状态总览 · OEE计算 · PVD设备监控主页
  • EP47设置页面与系统配置 · ADS连接参数用户可修改 · appsettings.json持久化 · 主题/语言切换
  • EP48应用程序打包与部署 · self-contained发布 · ClickOnce局域网自动更新 · Inno Setup安装包
  • EP49综合项目——三槽SCADA EP01:架构设计 · 需求分析 · MVVM结构规划 · NuGet清单 · GitHub初始化
  • EP50综合项目——三槽SCADA EP02:通信层 · IAdsService+心跳重连 · 结构体映射 · Notification订阅
  • EP51综合项目——三槽SCADA EP03:主界面开发 · Canvas流程图 · 液位动态显示 · 手动控制联锁
  • EP52综合项目——三槽SCADA EP04:配方+报警 · 完整配方页面 · 报警页面 · SQLite集成
  • EP53综合项目——三槽SCADA EP05:历史数据+报表 · 历史回放 · LiveCharts2 · Excel/PDF导出
  • EP54综合项目——三槽SCADA EP06:联调与测试 · 与TwinCAT下位机联调 · 72小时稳定性测试
  • EP55综合项目——三槽SCADA EP07:代码Review · 架构合理性 · 反模式识别 · GitHub Release整理
  • EP56扩展专题——MQTT IoT上报 · MQTTnet · EMQX/阿里云IoT · 断线重连 · 云端设备监控
  • EP57扩展专题——Modbus TCP上位机开发 · NModbus4 · 轮询vs事件驱动 · 第三方仪表集成
  • EP58工业上位机接单怎么报价——从需求沟通到交付物清单 · 报价模板 · 需求确认书 · 品牌运营
  • EP59WPF还是TwinCAT HMI——工业上位机选型决策指南 · TE2000 · Web架构 · 何时选哪个
  • EP60扩展专题——上位机架构演进与展望 · WinUI 3/.NET MAUI · 云边端融合 · AI工业应用
📚 查看课程详情与购买 →