简介:面向Beckhoff CX、CPxxxx、Cxxxx系列控制器及TwinCAT 2软件用户的实践型PDF教程,由在倍福从事技术工作近15年的Lizzy Chen编写,属非官方发行资料。内容围绕TwinCAT 2的系统概述、选型接线、编程入门、开发环境与调试展开,并覆盖系统备份与桌面接管、掉电保持、数据存储、配方、温控/PID、EtherCAT与K-Bus、ADS、串口、Modbus及TcpIp通讯等常见环节,侧重项目开发中的操作窍门和常见错误规避,适合传统PLC工程师转向PC-based控制时系统查阅。压缩包内仅1个PDF文件,约5.55MB,轻量便于本地阅读与随用随查。已有213人学习下载,可作为从入门到独立实施的参考材料。
1. 第一次被这份 2018 年的 PDF 救回来
一台工控机前面,TwinCAT 2 软件装好了、授权注册过了、PLC 程序编译零错误,变量监视表里却全是红色波形线,程序一行都没执行。整整两天,我把路由删了重建、防火墙关了又开,最后翻到这份资料第 3 章的 FAQ,一句话点醒我:实时核没有独立绑核,PLC 任务根本没有跑起来。这种问题任何官方手册都不会写,它属于“踩过才知道”的那一类。这份从 2010 年写到 2018 年、改到第 3.1 版的《TwinCAT 2.0 从入门到精通》,作者自己把它定位成“加强版的软件使用说明”,不是自动化项目开发指南。这篇就按这个定位来讲:它该怎么读、哪些章节能直接照搬、哪些坑我照着它躲过去了,又有哪些它没写、得靠自己补。
2. 从 2010 写到 2018:这份教程的骨架该怎么拆
2.1 十六个章节按项目阶段排过序,不是按知识点排的
很多人拿到一份几百页的 PDF,习惯从第一页往下啃,啃到第 3 章就放弃了。这份资料的组织方式其实不是知识体系,而是项目阶段:第 1 章系统概述讲原理、选型、安装和接线;第 2 章编程入门带你用最简单的程序控制一套硬件;第 3 章深入开发环境、常见错误和技巧;第 4 章讲操作系统与硬件,包括系统备份和桌面接管;第 5 章是掉电保持、数据存储、配方这类常用功能;第 6 章是库文件里的扩展算法,重点在温控、PID 和 Windows 功能调用;第 7 章之后一路铺到 IO、控制器间通讯、第三方仪表、现场总线、HMI 和企业数据库。
作者在“本书的使用方法”里给了四段式读法,这段建议比正文里任何一章都值钱:项目考察阶段只读第 1 章加目录;初学者必须依次读完第 2 章的所有小节;功能测试阶段按目录跳章节,每章在配套文档里都有对应文件夹,放例程、工具和说明;项目开发阶段先预读第 3 章,再按你手上实际用的 IO 模块细读第 7 章;项目收尾才去翻第 4 章。
我把它整理成一张表,贴在工位上用了好几年:
| 项目阶段 | 先读哪章 | 要解决的问题 | 我的实际耗时 |
|---|---|---|---|
| 考察选型 | 第 1 章、目录 | 控制器型号、IO 系统、扩展模块能不能覆盖需求 | 半天 |
| 第一次上机 | 第 2 章全部小节 | 环境、路由、第一个程序跑通 | 两到三天 |
| 功能验证 | 按目录跳章节 + 配套文档 | 配方、掉电保持、通讯逐个打通 | 按功能点计 |
| 正式开发 | 第 3 章 + 第 7 章 | 周期、任务、变量链接、IO 诊断 | 一周 |
| 交付前后 | 第 4 章 | 系统备份、桌面接管、断电保护 | 一天 |
这张表的意义在于:它把“读文档”这件事从线性变成了按需触发。选型的人最怕的是读到一半才发现某型号不支持某个扩展模块,第 1 章的选型小节就是干这个的;上手的人最怕的是程序写得漂亮但硬件不动,第 2 章的顺序恰好是反过来的,先跑通再写好。
2.2 版本号和 Build 号,决定了你能照搬多少
资料里写得很直白:所有操作截图和程序代码基于 TwinCAT 2.11(Build 2234),后续版本界面会变,例程代码也可能不适用。这一句不是免责声明,而是使用说明书。我见过有人拿 2.11 的截图去对 2.10 的界面,找“激活配置”按钮找了半小时,最后断定资料有问题,其实是版本对不上。
更有价值的是那份更新记录。它等于一份“哪一章曾经出过错”的清单:2014 年 11 月修正了第 9 章 TCP/IP 通讯的“严重误导”,2017 年 3 月重新整理了串口和 TCP/IP 两部分,2017 年 4 月更新了数据库章节,2018 年 11 月做了章节重排并取消了第 13 到 15 章。你要用第三方设备通讯这部分,就必须拿 2017 年之后的版本,早期版本里那段是有坑的。反过来,如果你手上只有旧版,看到 TCP/IP 那一章就要多留一个心眼,别照着老写法直接上现场。
还有两个细节能看出作者是真在一线干的:2018 年 10 月把全书拆成 16 个独立章节,为的是“方便以后单节更新”;2018 年 11 月把插图统一压到 80%、正文统一五号宋体,为的是打印。一个把 PDF 的排版和章节粒度都按“工程师会打印出来带进车间”来设计的人,写出来的东西大概率是能落地的。
2.3 上册管配置和通讯,下册管运动控制,别读错册
这套资料分上下两册。上册就是手上这份,讲系统配置、PLC 编程、各种硬件、常用控制功能和通讯;下册是 NC PTP 的运动控制教程。资料里明确写了:用下册的人应该已经熟悉上册的所有操作。这句话我建议当真。
原因很实际。运动控制在 TwinCAT 里不是孤立的一块,轴的使能、状态机、回零,全都要靠 PLC 程序和 IO 配合;你连 EtherCAT 从站怎么进 OP、变量怎么链接到轴接口都没搞清楚,直接翻下册,只会看到一堆 NC 配置项,不知道哪个该动。我自己的顺序是:上册第 2 章跑通、第 7 章把 IO 打通、第 3 章把任务和周期搞明白,再去看 NC。这个顺序走下来,下册的配置界面基本是“填空”而不是“猜谜”。
资料里还有一句自评:如果项目不涉及运动控制,这 12 章能满足百分之八十的需求。这话可以验证:你把手头项目的功能点列出来,逐个在第 1 到 12 章的目录里找对应,找不到的再考虑是不是要用到运动控制或者更上层的 MES 集成。我试过三次,命中率确实在八成上下,剩下两成多半是工艺算法,那本来也不该由一份软件使用说明来负责。
3. 上机第一周:把环境、路由、第一个程序串成一条链路
3.1 装完先别写程序:授权、状态图标和 NetID
新手最容易犯的错是软件一装完就急着建 PLC 工程,结果卡在“下载失败”上,然后开始怀疑人生。正确的顺序是先确认三件事:授权、状态、身份。
授权这块,TwinCAT 2 有试用期,到期后需要注册正版授权,否则系统会周期性退出运行模式。工程现场最怕的就是调试到一半系统自己停了,看起来像程序 bug,实际上是授权到期。所以装完第一件事是打开授权管理,确认授权状态和到期时间,把这件事写进项目交接清单。
状态看的是任务栏那个 TwinCAT 图标。它有好几种颜色和形态,代表配置未激活、运行中、停止、报错等不同状态。我一般会让新人先把这个图标的几种形态背下来,因为后面所有“程序没反应”的排查,第一步都是看它。图标不对,后面全是白费功夫。
身份就是 AMS NetID。TwinCAT 的通讯不认 IP,认的是 AMS NetID,格式类似192.168.1.10.1.1。本机有一个,控制器出厂也有一个,两者必须在同一网段逻辑下能互相路由。很多人把 IP 配通了就以为通了,实际上 NetID 没配或者两台设备 NetID 撞了,照样连不上。资料里对这块写得很细,包括设置 IP、设置 NetID、在 System Manager 里添加路由三步,顺序不能乱。
3.2 路由是第一个拦路虎:IP、NetID、路由表三者的顺序
我把这块的排查顺序固定成四步,几乎每次都能定位:
第一步,确认物理层和 IP。用ping通控制器,这一步不通,后面免谈。注意工控机多网卡时,ping通不代表走的是你以为的那张网卡。
第二步,确认 AMS NetID 不冲突。同一网段里出现两个相同 NetID,表现是时通时不通,非常像“偶发故障”,实际是地址冲突。
第三步,在 System Manager 里添加路由。可以用广播搜索,也可以直接填 IP。广播搜索在现场经常被防火墙或者交换机策略挡住,所以我一般直接填 IP 加 NetID,稳一点。
第四步,看路由表里的状态。添加成功不代表通讯正常,要看那条路由是不是处于可用状态,端口是不是能访问。ADS 的通讯端口是有约定的,PLC 运行时、系统服务各用各的端口,端口不通就是端口不通,别去改程序。
提示:调试期临时关防火墙是常规操作,但交付前必须把规则补回去,并且只放开必要端口。我见过交付后现场重启一次全部失联的,最后查出来是当初调试时关掉的防火墙被系统更新重新打开了。
3.3 第一个最小程序:新建、下载、运行、开机自启
第 2 章把“开发第一个 PLC 项目”拆成了四步:创建 PLC 程序、System Manager 配置、下载和运行、设置开机自启动。这四步里,第三步和第四步是新旧手的分水岭。
创建程序没什么好说的,选语言、写两行逻辑、编译。真正容易翻车的是配置和激活:PLC 程序编译通过了,但 System Manager 里的配置没有“激活”,硬件树和 PLC 工程没建立映射关系,下载下去也不会有任何输出。我见过最典型的现场是:程序下载成功、日志无报错、指示灯不亮,最后发现是配置压根没激活。
下载和运行之后是开机自启。设备交付后不可能每次停电都让人手动点运行,所以必须把系统服务设成自动启动、把运行模式设成上电即运行。这一步资料里写得很清楚,但很多人会漏掉一个前提:你得先确认配置已经保存并且激活,否则重启之后加载的还是上一版配置,表现为“改了代码没生效”。这种问题查起来极其折磨,因为代码确实改了、也下载了,就是行为不对。
3.4 Scope 2:把调机现场的玄学变成可回放的曲线
调试现场最常见的一句话是“它有时候会抖一下”。这种描述没法排查,因为等你打开监视表,它已经不抖了。Scope 就是用来把这种玄学变成证据的。
资料里对 Scope View 和 Scope 2 的写法很实用:基本操作步骤、曲线保存和分析、显示远程控制器上的变量、显示数组和超采样变量,以及在 .NET 程序里集成 Scope 控件。前三个是日常用的,后两个是进阶。
远程看曲线这一条尤其关键。实际项目里 PLC 跑在控制柜里的控制器上,你坐在办公室的笔记本上,想看在线的变量波形,就得靠远程 Scope。这里面有个容易忽略的点:能不能采到,取决于变量有没有被优化掉、采样周期和任务周期是否匹配。你用 1 ms 的任务去采 10 ms 周期的变量,看到的是阶梯;你用远高于任务周期的采样率去采,只会得到重复值。搞清楚这两者的关系,曲线才有意义。
超采样是另一个层次。普通变量一个任务周期只有一个值,快速变化的信号根本抓不住。超采样配合支持超采样的 IO 模块,才能在一个任务周期内采到多个点。资料里专门写了这块,说明作者确实在需要抓瞬态信号的场合用过。
4. 深入开发环境:周期、任务、优先级这几个参数才是分水岭
4.1 低于 1ms 的周期能配出来,但先确认实时核绑对了
TwinCAT 的实时性来自在 Windows 之上跑一个实时核,实时任务抢占指定的 CPU 核心,Windows 只能用在剩下的核上。所以“能不能做到 1 ms 以下”这个问题,答案不在软件参数里,在硬件和系统配置里。
资料第 3 章里有两个连着的小节:如何实现低于 1ms 的控制周期、如何设置任务的优先级。这两件事是一体的。你把任务周期设成 500 µs,但实时核和 Windows 抢同一个核心,结果就是周期抖动,表现为偶发的通讯超时、轴报警、IO 短暂掉站。这种故障特别隐蔽,因为大部分时间它是好的。
我的做法是先确认三件事:实时核独占一个物理核心;BIOS 里的节能选项(降频、C-State 之类)关掉;网卡是实时以太网兼容性好的型号。前两条决定抖动下限,第三条决定你会不会莫名其妙丢包。工业现场用普通消费级网卡跑实时以太网,是常见的翻车点,能跑起来不代表能稳定跑。
判断实时性有没有达标,资料里给了方法:看控制器的实时性指标,看任务的实际执行时间与周期时间的余量。余量长期低于三成,就是在悬崖边上跑,现场温度一高、负载一涨就出问题。
4.2 任务与优先级:分时多任务的真实含义
TwinCAT 的“分时多任务”不是 Windows 那种时间片轮转,而是按优先级抢占。高优先级任务一旦就绪,低优先级任务立刻让出 CPU。这带来一个反直觉的结论:任务不是越多越好,优先级不是越高越好。
把 PLC 任务设成最高优先级,看起来能保证逻辑实时性,但如果这个任务里有耗时操作(大量字符串处理、文件读写、循环等待),它会把所有低优先级任务饿死,表现为通讯中断、HMI 卡死。我吃过这个亏:一个负责数据记录的慢任务被塞进了高优先级任务里,结果 EtherCAT 周期性地丢帧。
正确的拆法是按“必须准时”和“可以等”来分。控制逻辑、IO 刷新、轴接口放高优先级短周期任务;数据记录、配方读写、数据库写入放低优先级长周期任务。两者之间用全局变量或者缓冲区传递,不要让高优先级任务去等低优先级任务的结果。资料里专门有一节讲“在 Task 调用程序”和“在 PLC 程序中配置分时多任务”,这两节看着像基础操作,实际是整个系统稳定性的地基。
4.3 变量链接、地址重分配与结构体对齐
变量链接是 TwinCAT 里最容易“看起来没问题、实际全是问题”的环节。IO 变量和 PLC 变量建立链接的时候,地址是自动分配的,但自动分配不等于永久正确。你改了硬件配置、增删了模块,地址就可能整体偏移,原来的链接全部错位,表现为按钮按了没反应、传感器读数张冠李戴。
资料里提到批量链接变量和自动重新分配地址这两个操作,建议在每次硬件变更之后都走一遍。手工一个个点,几百个变量点到怀疑人生,还容易漏。
比链接更容易翻车的是数据对齐。举个最常见的场景:PLC 和第三方设备通过 Modbus 交换数据。
(* ST 示例:结构与寄存器的对应关系,字段顺序即寄存器顺序 *) TYPE ST_ModbusReg : STRUCT wStatus : WORD; (* 寄存器 0 *) nValue : INT; (* 寄存器 1 *) rTemp : REAL; (* 寄存器 2、3,占两个 16 位寄存器 *) END_STRUCT END_TYPE这段结构体看着没问题,实际上有两个坑。第一,REAL 在 Modbus 里占两个寄存器,高低字的顺序各家设备不一样,有的先高字有的先低字,不确认就等着读数变成天文数字。第二,结构体在内存里的对齐方式可能和寄存器顺序不一致,尤其是夹杂 BOOL、BYTE 的时候,编译器会插入填充字节。资料里专门有“数据格式与对齐方式引发的问题”和“变量的格式转换”两节,我建议在做任何跨设备数据交换之前先读一遍,比事后拿示波器抓报文省事得多。
4.4 加密、库文件与复用:别把经验留在上一台机器里
资料里有一节叫“建立自己的库文件”,还有项目加密和对象加密。这两件事看起来相反,实际是一体的:加密是保护别人的成果,库文件是沉淀自己的成果。
TwinCAT 2 的项目可以整体加密,也可以对单个对象加密,密码丢了基本没有后悔药。我一般只在交付给客户的最终版本上做加密,开发过程不加密,否则接手的人(很可能是半年后的自己)会很痛苦。
真正的价值在建立库文件。你写的每个功能块、每次调试出来的延时补偿逻辑、每个设备的通讯封装,都值得抽出来做成库。下一个项目直接引用,不用再翻上一个项目的工程去找那段代码。更实际的是,做成库之后你不会去改它,行为稳定;留在工程里,下个项目复制粘贴,改着改着就分叉了。
配套文档这件事也是同理。资料里写得很清楚:正文只写步骤,截图打包放附件,每章有对应的文件夹,里面是例程、工具和文档说明。这个做法的好处是正文可搜索、附件可替换。你自己做项目也该这么干:工程文件、配置备份、接线图、调试记录分目录放,别全都塞在一个叫“最终版”的压缩包里。
5. 避坑排查:五条血泪记录,每条都带现象、原因和解决
5.1 环境与连接类的三条坑
坑一:路由加了,ADS 还是连不上。现象是路由表里能看到目标,状态却时好时坏,重启电脑后恢复,过一会儿又断。原因多半是 AMS NetID 冲突或者多网卡路由指向错误:机器上有线和无线同时开着,系统走了无线那条路。解决办法是先固定只启用一张调试网卡,把另一张禁用;再核对两端的 NetID 和子网掩码,确保唯一且同段;最后检查防火墙是否放行了 ADS 相关端口。这三步做完还连不上,再去看交换机是不是做了端口隔离。
坑二:下载成功、运行中,但硬件毫无反应。现象是 PLC 状态显示运行,日志干净,输出点不动。原因是配置没有激活,或者变量没有链接到实际 IO。System Manager 里改了硬件树却没点激活,下载下去的只是 PLC 程序,硬件映射还是旧的。解决办法是每次改完配置都重新激活并下载,然后到变量表里确认输出变量确实处于被链接状态,而不是悬空的内部变量。这个坑新手几乎必踩一次。
坑三:重启后配置回退到上一版。现象是改了代码、下载、运行都正常,第二天开机又是老行为。原因是修改后的配置只在内存里生效,没有保存并激活,控制器启动时加载的是磁盘上的旧配置。解决办法是养成“改完就保存、保存就激活、激活就重启验证一遍”的习惯。这一步多花三分钟,能省掉一整天。
5.2 编译与数据类的两条坑
坑四:掉电保持的数据,停电后全变成零。现象是配方参数、累计产量这些本该保持的值,断电重启后归零。原因有三种:变量声明成了普通变量而不是保持型;控制器电池老化或没有配 UPS,掉电瞬间数据没来得及写入;关机流程不规范,直接拉闸。解决办法是先确认变量类型,再检查控制器的电池状态和掉电保持机制,最后把“先停系统再断电”写进操作规程。
坑五:和第三方设备通讯,数值全错但通讯正常。现象是能读能写、没有报错,读回来的温度是 3276.8 或者负数。原因是字节序、字序或者数据类型宽度不匹配。解决办法是拿一个已知值(比如设备面板上显示的固定值)去对,逐字节比对报文,确认是字交换还是字节交换,再在 PLC 里做转换。这类问题不要靠猜,一定要拿已知值验证,否则改十次也改不对。
注意:这五条里没有一条是“软件本身的 bug”,全是配置、习惯、流程问题。这也印证了那份资料的定位:它讲的是怎么把工具用顺手,而不是工具的原理有多深。
6. 通讯这条路怎么选,以及我每次上机前都会走的一遍
通讯是这份资料里最厚的一部分,也是最容易选错的部分。控制器之间通讯有 ADS、实时以太网、网桥模块几条路;对上位有 HMI 直连、组态软件、高级语言程序几种做法;对第三方设备有串口、Modbus、TCP/IP 几类协议。选错的代价不是跑不起来,而是跑起来之后不好维护。
我一般按三个维度比:实时性要求、跨厂商程度、后期谁维护。
| 通讯路径 | 适合什么场景 | 优点 | 代价 |
|---|---|---|---|
| ADS | 同一厂商控制器之间、上位机读 PLC 变量 | 配置简单,能直接访问变量名 | 跨厂商支持差,网络要求稳定 |
| 实时以太网 / 网桥模块 | 两台控制器之间要求强同步 | 周期确定,抖动小 | 硬件成本高,配置门槛高 |
| Modbus / 串口 | 仪表、变频器、老设备 | 兼容性最好 | 速率低,需要自己做数据映射 |
| TCP/IP 自定义协议 | 对方有协议文档、数据量大 | 灵活 | 协议要自己调,出错排查成本高 |
这张表的用法不是选一个,而是排优先级:能用现成的协议栈就不自己写,能走同一厂商的方案就不跨厂商,实在跨不过去再用通用协议兜底。资料里那 14 种现场总线和工业以太网通讯的汇总,本质就是给你一张“对方支持什么、我这边怎么接”的对照表,遇到不认识的设备先查这张表,比到处问人快。
最后说一个我这些年雷打不动的习惯:每次上机之前,先把“网卡、NetID、路由、授权、配置激活状态”这五项过一遍,用一张纸打勾,全部通过才打开编程软件。听起来很笨,但这五项里任何一项出问题,后面所有工作都是白做,而且症状会伪装成程序 bug,让你在错误的方向上浪费掉一整天。那份资料里有一句话我记到现在:领先于众人,就要踩众人不曾踩过的坑。踩坑不可怕,可怕的是同一个坑踩两遍。希望这份拆解能帮你少踩几个。
本文还有配套的精品资源,点击获取