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

TwinCAT 3 全栈
四门系统化
工程实战课程

国内目前唯一一套将 TwinCAT 3 下位机与 WPF 工业上位机完整贯通的中文实战课程体系。内容提炼自光伏、半导体、锂电三大装备行业七年一线工程经验,每一集都有对应的真实设备场景。四门课循序渐进,帮助 PLC 工程师建立完整的系统级开发能力。全部源码开源。

无需注册 · B站免费观看前三节 · 满意再购课
7+
年工程经验
143
集数总量
4门
系统课程
全源码
GitHub 开源
七年倍福自动化设备开发经验
系统化课程体系 · 工程实战驱动
四门课 143 集 · 全源码开源
购课后永久答疑群
无锡 · 可本地当面沟通
// 技术文章
精选 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 分钟
// 每日新闻
工业自动化 · 行业动态
今日更新
实时抓取行业资讯 · 每日更新
01
Beckhoff 今日 TODAY
TwinCAT 3.1 Build 4026 正式发布:VS2022 支持 + Package Management 独立更新
新版本支持 Microsoft Visual Studio 2022(64位工程环境),并引入 TwinCAT Package Management 实现组件独立升级,大幅缩短更新时间。
02
半导体行业 今日 HOT
国内晶圆厂扩产提速,设备控制系统国产化替代需求持续增长
多家国内 12 英寸晶圆厂相继宣布扩产计划,带动 PLC/运控系统本土供应商订单明显增加,Beckhoff 国内业务亦受益于此。
03
工控网 昨日
EtherCAT Technology Group 发布 EtherCAT G 新规范:10G 带宽支持高速视觉检测
ETG 最新发布的 EtherCAT G 规范将带宽提升至 10Gbps,主要面向高速视觉检测和大量数据传输场景,TwinCAT 4026 已预留支持接口。
04
锂电行业 昨日
锂电设备卷绕机精度要求提升至 ±0.1mm,电子凸轮同步控制成标配需求
随着大圆柱电池规模化量产,卷绕工序对张力控制和切刀同步精度要求进一步提高,基于 PLCopen 电子凸轮方案的设备商占比持续上升。
05
OPC基金会 2天前
OPC UA FX(Field eXchange)规范正式落地,设备间直连通信无需中间层
OPC UA FX 允许不同厂商控制器直接点对点通信,Beckhoff TwinCAT 已发布对应 TF6100 扩展支持,可替代部分 EtherCAT 主从组网场景。
06
Beckhoff 无锡 2天前
Beckhoff 无锡应用中心扩建完成,新增运动控制与半导体设备专项培训资源
无锡应用中心新增专用运动控制实验平台,可支持最多 16 轴同步演示,预计于 2026 Q2 开放工程师培训预约。
新闻内容为编辑整理,来源涵盖 Beckhoff 官网、ETG、工控网、半导体行业媒体,每日更新。
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可下载
// 四门课程体系
系统化 工程实战 课程体系
查看完整目录 →
学前营
TwinCAT 3 快速上手
5 集 · 在职工程师专属
¥99
课程一
TwinCAT 3 入门与实战 免费试看
39 集 · 4 章
¥399
课程二
运动控制实战 免费试看
39 集 · 3章+专题
¥699
课程三
工业上位机开发实战 免费试看
60 集 · 4 章
¥799
TwinCAT 3 快速上手
面向有工控基础的在职工程师(西门子/三菱/欧姆龙转型),用 5 集回答一个问题:TwinCAT 3 值不值得学,学了能干啥。¥99 可全额抵扣正式课程。
学前营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 快速上手
¥99/ 永久有效
  • 5集 · 在职工程师专属
  • ¥99 可全额抵扣正式课程
  • 完整源码 + 答疑群永久有效
  • 无需硬件,虚拟机即可学习
📱 微信:Shang_0352(点击复制)
👆 复制微信号后添加,或前往下方服务区
TwinCAT 3 入门与实战
面向从零开始或从西门子/三菱/欧姆龙转型的工程师。以「干中学」为理念,结合半导体/光伏/锂电设备上的真实工程案例,建立从环境安装到 EtherCAT 总线的完整工程认知体系。共4章39集,前置:无(或完成学前营)。
第 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 入门与实战
¥399/ 永久有效¥699
  • 4章 · 39集 · 约每集 20 分钟
  • 完整 GitHub 源码工程(可直接运行)
  • 答疑群永久有效
  • 后续新增集数免费获得
  • 学前营 ¥99 可全额抵扣本课
B站免费看 EP01–03,满意再购课 →
▶ 立即免费试看
📱 微信:Shang_0352(点击复制)
👆 复制微信号后添加,或前往下方服务区扫码
运动控制实战
从 PLCopen MC 单轴基础到多轴同步、电子凸轮、压力闭环、PackML 完整实现,以及工程级 OOP 轴控架构设计。内容来源于尚工在晶圆减薄、PVD/CVD、锂电设备上的真实项目。共3章+EtherCAT进阶专题39集。前置:课程一,或有 ST 编程基础。
第 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 进阶驱动器总线深度实践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
运动控制实战
¥699/ 永久有效¥999
  • 3章+专题 · 39集 · 约每集 20 分钟
  • PLCopen 单轴 → 多轴同步 → 电子凸轮
  • 压力闭环 · PackML · OOP 轴控架构
  • 完整 GitHub 源码 + 答疑群永久有效
📱 微信:Shang_0352(点击复制)
👆 复制微信号后添加,或前往下方服务区扫码
工业上位机开发实战
C# 工控编程基础 → WPF/MVVM → Beckhoff ADS 深度通信 → 工业功能模块 → 三槽 SCADA 综合项目。国内首套 TwinCAT 3 + WPF 全栈中文课程,面向 PLC 工程师「向上延伸」。共 4 章 60 集。前置:课程一或有 ST 基础。
第 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 入门与实战 · 运动控制 · 工业上位机开发 · 赠 1v1 答疑 1次
全套价格 ≈ 一次设备调试咨询费 · 终身有效 · 包含所有源码更新
¥1,599
原价 ¥1,897
咨询套餐购买 →
学前营 ¥99 可全额抵扣任一正式课程;所有课程均含完整 GitHub 源码;购买前可免费索取任意课程完整大纲;企业定制培训另行报价。
// 学员评价
真实工程师的 反馈

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

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

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

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

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

王工
设备工程师 · 半导体行业 · 无WPF基础入门
// 接单合作
工程定制开发 & 技术咨询
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+
年一线经验
143
课程集数
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 入门与实战 · 运动控制实战 · 工业上位机开发实战)是目前国内覆盖度最高的 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
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

三门课程完整目录

139 课时3 门课程11 个章节含完整源码
课程一 · TwinCAT 3 工程实战 · 36课时 · ¥399
第1章TwinCAT 3 生态与开发环境EP01–08 · 8课时
  • EP01TwinCAT 3 架构:XAE/XAR/Runtime · 与西门子/三菱对比 · PC-based 原理
  • EP02安装开发环境 · License 授权 · Windows 11 兼容性 · ADS 4132 报错修复
  • EP03创建第一个项目 · Activate Configuration · Watch 窗口在线观察
  • EP04Task 配置与实时性原理 · CPU Core 绑定 · Jitter 分析
  • EP05版本控制 Git · .gitignore 配置 · 分支策略建议
  • EP06项目工程结构设计规范 · Library Project 规划
  • EP07虚拟机开发环境搭建 · ADS 路由配置(无硬件学习)
  • EP08管理多个 TwinCAT 版本 · 多版本并存 · 部署最佳实践
第2章IEC 61131-3 ST 语言精讲EP09–20 · 12课时
  • EP09数据类型全覆盖 · LREAL 精度陷阱 · TYPE 自定义类型
  • EP10数组与指针 · 数组越界防护(真实案例)· REFERENCE TO
  • EP11结构体 STRUCT · 联合体 UNION · 轴参数打包设计
  • EP12FUNCTION 设计 · 中位值/均值滤波实现(半导体测厚案例)
  • EP13FUNCTION_BLOCK 基础 · VAR 类型全解析 · 气缸控制 FB
  • EP14INTERFACE 接口与多态 · 通用轴接口设计 · EXTENDS 继承
  • EP15CASE 状态机 · 循环控制 · CSV 事件记录器实战
  • EP16Tc2_Standard 标准库 · TON/TOF/TP · R_TRIG 最佳实践
  • EP17Tc2_Utilities · FIFO 缓冲区 · 执行时间测量
  • EP18I/O 配置 · EL 系列模块 · PDO 变量链接 · AT 语法映射
  • EP19Library 库工程创建 · 参数列表 · 版本管理
  • EP20TwinCAT Functions · TF6310 TCP/IP · OPC UA · MQTT IoT
第3章调试技术 · 代码规范 · 工程实践EP21–28 · 8课时
  • EP21在线调试 · Watch/Force/Online Change · 断点调试
  • EP22TwinCAT Scope 波形采集 · Trigger 触发 · 运动波形分析
  • EP23经典报错速查:C0555 / ADS 4132 / WcState / Hyper-V 冲突
  • EP24命名规范:Beckhoff 规范 vs PLCopen 规范对比 · 个人规范手册
  • EP25ADS 通信原理 · AmsNetId · 路由配置(课程三基础)
  • EP26TwinCAT Automation Interface · GitHub Actions CI/CD 自动部署
  • EP27TcUnit 单元测试 · TDD 工控实践 · 滤波函数测试案例
  • EP28综合实战:三槽液体混合下位机(课程三联调基础工程)
第4章EtherCAT 总线深度实践EP29–36 · 8课时
  • EP29EtherCAT 原理 · E-Frame 帧结构 · DC 同步机制 · 拓扑类型
  • EP30ESI 文件导入 · 设备配置 · OnlineDevice 在线诊断
  • EP31PDO 映射完整流程 · TxPDO/RxPDO · 自定义 PDO 配置实操
  • EP32DC Synchron 配置 · WcState 报警 FB 设计(含防抖)
  • EP33EtherCAT 状态机 · Init/Pre-Op/Safe-Op/Op · 故障排查流程
  • EP34EL 模块族深解:EL1008/EL2008/EL3068/EL5101/EL3314
  • EP35TF6340 串口通信 · Modbus TCP TF6250 · 第三方仪表接入
  • EP36工程案例:PVD 设备 EtherCAT 多轴总线调试实录
课程二 · 运动控制实战 · 42课时 · ¥699
第5章NC 轴基础与 PLCopen 单轴控制EP01–14 · 14课时
  • EP01NC 系统架构 · PTP/NCI/FIFO Channel · 轴类型全解
  • EP02轴配置 · EtherCAT Axis Link · CoE 参数 · AX5000/AX8000
  • EP03轴动力学参数 · Kv 增益 · 跟随误差 · Jerk 平滑运动
  • EP04MC_Power · MC_Reset · 轴状态机 · ErrorID 速查表
  • EP05MC_Home 8种回零策略 · 原点开关 · 绝对值编码器 SetPosition
  • EP06MC_MoveAbsolute/Relative · BufferMode · Override · 时序分析
  • EP07MC_MoveVelocity · MC_Jog · MC_Stop vs MC_Halt 差异
  • EP08位置捕获 MC_TouchProbe · MC_DigitalCamSwitch 凸轮开关
  • EP09轴诊断 · Scope 采集轴波形 · Bode 图频响分析 · Autotuning
  • EP10OOP 轴控架构(一)· I_Axis 接口 · FB_AxisBase 基类实现
  • EP11OOP 轴控架构(二)· 子类扩展 · 工厂模式 · 轴对象数组
  • EP12软限位 · 硬限位 · 超程保护与恢复流程设计
  • EP13飞剪与追剪 · MC_GearIn 速度同步 · 锂电/光伏切割应用
  • EP14工程案例:晶圆减薄设备轴控系统完整回顾 · 源码讲解
第6章多轴同步与电子凸轮EP15–28 · 14课时
  • EP15主从耦合原理 · MC_GearIn · 齿轮比 · 虚轴应用
  • EP16MC_Phasing 相位调整 · 印刷套准 · 卷绕张力补偿
  • EP17电子凸轮原理 · Cam Table 数据结构 · 运动学分析
  • EP18五种插补方式深度对比 · 加速度连续性 · 选型建议
  • EP19CSV 凸轮表生成工具 · Python 脚本 · Cam Design Editor
  • EP20MC_CamTableSelect · 在线修改 · 无停机换型
  • EP21MC_CamIn · StartMode 三种方式 · Periodic 周期模式
  • EP22MC_CamOut · 脱离时机选择 · 凸轮完整状态机设计
  • EP23电子凸轮调试 · Scope 同步波形 · 机械振动诊断
  • EP24包装机应用 · MC_GearInPos 爬坡同步 · 横封机切断
  • EP25工程案例:PVD 多轴协调 · 传送+旋转+往复轴同步
  • EP26压力/力闭环控制 · PID 整定 · 位置↔压力无冲击切换
  • EP27NC 插补 NCI · G 代码基础 · TF5200 CNC 功能简介
  • EP28综合实战:SCADA 运动控制模块 + ADS 变量导出配置
第7章传感器融合 · 安全控制 · PackMLEP29–42 · 14课时
  • EP29模拟量标定 · 滤波算法库:移动均值/一阶低通/中位值
  • EP30CG 测厚传感器集成 · 中位值滤波 · 数组边界防护
  • EP31温度控制 · FB_CTRL_PID 整定 · PVD 腔体温度案例
  • EP32气体流量控制 MFC · CVD 工艺气体配方管理 FB
  • EP33真空系统控制 · 门阀联锁 · PVD 腔体抽气流程状态机
  • EP34报警系统设计 · 防抖滤波 FB · 40路报警管理库(半导体设备)
  • EP35PackML 17 状态完整实现 · FB_PackMLStateMachine 封装
  • EP36Stopping vs Aborting 深度对比 · 晶圆研磨设备实战流程
  • EP37TwinSAFE 入门 · SIL/PLe 等级 · FSoE 安全总线
  • EP38数据持久化 · PERSISTENT 变量 · XML 配方 · 无停机换型
  • EP39ADS 变量导出规范 · C# 内存对齐设计(课程三前置)
  • EP40OPC UA Server 配置 · 节点管理 · 订阅 · 安全认证
  • EP41SECS/GEM 协议入门 · HSMS · 国内 Fab MES 对接要求
  • EP42综合实战:半导体设备控制系统架构总结 · GitHub 源码
课程三 · WPF 工业上位机开发 · 55课时 · ¥799
第8章C# 工控编程快速入门EP01–10 · 10课时
  • EP01从 ST 到 C#:两种语言对比(面向 PLC 工程师专属视角)
  • EP02面向对象:class / interface / 继承 / abstract / override
  • EP03集合与 LINQ · ObservableCollection · Lambda 表达式
  • EP04async/await 异步编程 · CancellationToken · 避免 UI 死锁
  • EP05文件 I/O · CSV/JSON/XML 读写 · 配方文件持久化
  • EP06定时器与线程 · DispatcherTimer vs System.Timers.Timer
  • EP07NuGet 生态 · TwinCAT.Ads · MahApps.Metro · LiveCharts2
  • EP08日志系统 NLog · 滚动日志文件 · 通信断线记录
  • EP09数据库基础 · SQLite + Dapper ORM · 历史数据表设计
  • EP10单元测试 xUnit · Moq Mock ADS 连接 · 内存泄漏检测
第9章WPF 与 MVVM 架构EP11–24 · 14课时
  • EP11WPF 核心概念 · XAML 语法 · 渲染机制 · vs WinForms
  • EP12布局系统 Grid/StackPanel/Canvas · SCADA 主界面骨架设计
  • EP13数据绑定 Binding · INotifyPropertyChanged · DataContext
  • EP14命令模式 RelayCommand · ICommand · CanExecute 控制按钮
  • EP15MVVM 完整架构 · 依赖注入 DI · ViewModelLocator
  • EP16MahApps.Metro 工业 UI · 深色主题 · 工业配色规范
  • EP17自定义控件 · LED 指示灯 · 阀门/泵图形控件
  • EP18动画与状态机 · Storyboard · 报警闪烁 · VisualStateManager
  • EP19实时波形图 LiveCharts2 · 滚动缓冲区 · 降采样优化
  • EP20DataGrid 高级用法 · 虚拟化 · 条件格式 · 报警历史列表
  • EP21对话框 · Snackbar 通知 · 参数确认弹窗设计
  • EP22多语言本地化 · ResourceDictionary · 运行时语言切换
  • EP23响应式布局 · 适配工业触摸屏 · DPI 感知配置
  • EP24WPF 性能优化 · Dispatcher 正确用法 · 内存泄漏诊断
第10章Beckhoff ADS 通信深度开发EP25–38 · 14课时
  • EP25ADS 协议深度解析 · AmsNetId · IndexGroup · TwinCAT.Ads NuGet
  • EP26ADS 连接建立 · 本地 vs 远程 · ADS 路由配置
  • EP27同步读写 ReadAny/WriteAny · IAdsSymbol · AdsException 处理
  • EP28异步读写 async/await · 并发线程安全设计
  • EP29结构体映射 · StructLayout Pack=1 · STRING 特殊处理
  • EP30Sum Command 批量读写 · 1000变量性能对比测试
  • EP31ADS Notification 实时推送 · 变化触发 · 1ms 高频接收
  • EP32心跳检测 + 指数退避自动重连(工程级完整实现)
  • EP33Symbol 管理器 · 动态变量访问 · 通用监控工具开发
  • EP34ADS over TCP · 跨网段通信 · 防火墙端口 48898
  • EP35OPC UA Client · Subscription + MonitoredItem · vs ADS 选型
  • EP36通信框架封装 · ICommunicationService · Mock 单元测试
  • EP37性能测试 · Sum Command vs Notification · 内存优化
  • EP38工程案例:三槽 SCADA ADS 通信层完整源码讲解
第11章工业功能模块 · 三槽 SCADA 综合实战EP39–55 · 17课时
  • EP39报警管理系统 · AlarmModel · DataGrid 条件格式 · 声音报警
  • EP40配方管理系统 · JSON 持久化 · ADS 批量写入 · 差异对比
  • EP41历史数据查询 · Excel 导出 EPPlus · PDF 报告 QuestPDF
  • EP42用户权限系统 · 角色模型 · MD5 登录 · 操作日志
  • EP43工艺流程图 · Canvas 绘制 · 管道流向动画 · 设备状态控件
  • EP44仪表盘 Gauge · 状态总览 · 关键参数大字显示
  • EP45设置页面 · appsettings.json · 主题切换 · 首次启动引导
  • EP46打包部署 · self-contained 发布 · Inno Setup · ClickOnce
  • EP47三槽 SCADA EP01:架构设计 · 项目结构 · DI 注册
  • EP48三槽 SCADA EP02:ADS 通信层 · 心跳重连 · Notification
  • EP49三槽 SCADA EP03:主界面 · Canvas 流程图 · 液位动态显示
  • EP50三槽 SCADA EP04:配方页面 + 报警页面完整实现
  • EP51三槽 SCADA EP05:历史趋势图 · 历史回放 · 班产报表
  • EP52三槽 SCADA EP06:上下位机联调 · 全流程功能验证
  • EP53三槽 SCADA EP07:代码 Review · GitHub Release 整理
  • EP54扩展专题:MQTTnet · EMQX · 设备数据云端上报
  • EP55扩展专题:接单开发实战经验 · 报价策略 · 品牌运营
📚 查看课程详情与购买 →