简介:本资源是施耐德电气 Twido Suite V2.31.4 编程软件工具包,面向工业自动化领域从事中小型 PLC 项目开发、调试与维护的工程师。软件支持梯形图和结构化文本编程,内置模拟器便于离线调试,并提供实时监控与诊断功能,适用于工厂产线、物流系统和楼宇自动化等场景。压缩包共 2 个文件,包含 PDF 格式的发布说明和 HTM 格式的在线帮助文档,整体仅 24KB,虽以文档为主,但可帮助用户快速了解软件新特性、安装注意事项及详细使用指南。已有 581 人学习下载。该资源既有 ReadMe 中的版本更新与问题修复说明,又有 TWIDO SUITE 帮助页面的功能导航,为初次接触 Twido 编程或需要升级维护现有系统的工程师提供了精简而实用的参考信息,能有效缩短软件上手和项目排错时间。
1. Twido Suite V2.31.4 是什么,为什么现在还要翻出来讲
Twido Suite V2.31.4 是施耐德电气 Twido 系列微型 PLC 的编程软件,V2.31.4 也是这个产品线后期最常见的版本号之一。虽然 Twido 已经不再适合新项目选型,但产线上仍有大量当年用 Twido 做的设备在跑,设备维护、程序改动、备机更换都离不开这个软件。对刚接触 PLC 编程的人来说,TwidoSuite 比西门子 TIA Portal 和三菱 GX Works2 更容易上手,硬件配置、变量表、程序段都集中在同一个窗口里;对老工程师来说,它还带着仿真器、动画表和 Modbus 调试能力,处理一台 40 点左右的设备完全够用。下面我按安装、程序编写、仿真通信和排错四个部分展开,全程用我实际维护时验证过的步骤来写。
2. Twido Suite V2.31.4 的安装与工程环境:先把项目和变量表理顺
2.1 安装时的目录、权限和硬件目录
V2.31.4 是较老版本,在 Windows 10 上安装最容易卡在两处:权限不足和缺少 .NET Framework 3.5。先到“控制面板-程序-启用或关闭 Windows 功能”里勾选 .NET Framework 3.5,再把安装包放到全英文路径下,右键 Setup.exe 以管理员身份运行。安装类型建议选完全安装,把 Hardware Catalog(硬件目录)和 Simulator(仿真器)一起装上,否则后面配置扩展模块时找不到对应的 I/O 型号。
第一次启动 Twido Suite 会提示是否自动更新硬件目录。如果现场没有外网,选“否”,以后在Tools > Hardware Catalog里手动指定目录文件。装完先建一个测试工程,看左侧树状目录里能不能看到 Twido 本体、总线和扩展模块。如果这一层是空的,说明硬件目录没装全,需要重新运行安装包做修复安装。
每次动旧项目之前,先把 .xef 文件备份出来。我习惯在项目目录里放一个批处理,把工程复制到按日期生成的文件夹:
@echo off set "src=D:\PLC_Projects\Line1.xef" set "dst=D:\PLC_Projects\Backup\%date:~0,4%%date:~5,2%%date:~8,2%" if not exist "%dst%" mkdir "%dst%" copy "%src%" "%dst%\Line1_%date:~0,4%%date:~5,2%%date:~8,2%.xef" >nul echo backup done pause%date:~0,4%、%date:~5,2%、%date:~8,2%是从系统日期字符串里切出年月日的常见写法,注意系统区域设置必须是 yyyy/MM/dd,否则取到的时间段会错位。备份文件不要放在 Twido Suite 的安装目录里,卸载软件时可能会被连带清掉。如果现场有版本管理工具,也可以把 .xef 文件放进 Git,每次改动前先提交一版,这样能留下可对比的文本差异。
2.2 新建工程时选对 CPU 型号和任务类型
新建工程向导第一步是选 CPU 型号。Twido 系列常见的有 TWD10、TWD20、TWD40 等本体,V2.31.4 的硬件目录里都覆盖到。选错型号时工程文件不至于打不开,但下载到 PLC 前会提示固件不匹配。最稳妥的做法是打开机柜看端子侧标牌,把型号完整抄下来,不要凭印象选。打开旧工程时如果出现 “Device revision mismatch”,先不要急着改程序,到 Configuration 里把 CPU 的固件修订号改成标牌上的版本,或者在菜单里用 Update Firmware 选项把 PLC 固件升到 V2.31.4 支持的版本。
任务分配是新手最容易漏的一块。Twido Suite 把程序放在 MAST、FAST、EVENT 三个任务里,它们的定位完全不同:
| 任务名 | 用途 | 典型周期 | 说明 |
|---|---|---|---|
| MAST | 主任务,普通开关量逻辑 | 10ms~250ms | 绝大多数程序都写在这里 |
| FAST | 固定中断周期任务 | 1ms~10ms | 适合高速计数、位置脉冲处理 |
| EVENT | 事件触发任务 | 由硬件事件触发 | 只在指定输入沿时执行一段逻辑 |
我的原则是:启停、定时器、计数器、普通互锁全部放 MAST;需要严格周期执行的高频逻辑才放 FAST;EVENT 里只放响应要求极高的短逻辑,不能在里面做复杂运算。另外还要注意,两个任务如果对同一个输出地址写值,编译时不会报错,但下载后实际执行结果会互相覆盖,所以在配置阶段就要把输出地址统一登记,避免重复。
2.3 变量表与 I/O 映射:从 %I/%Q 到符号名
Twido 的变量沿用了 IEC 风格的直接地址表示,刚接触时容易记混。常用地址类型有以下几种:
| 地址前缀 | 含义 | 例子 |
|---|---|---|
| %I | 数字量输入 | %I0.0 |
| %Q | 数字量输出 | %Q0.0 |
| %M | 内部位 | %M0 |
| %MW | 内部字 | %MW0 |
| %KW | 常量字 | %KW10 |
| %IW | 模拟量输入 | %IW0.0 |
| %QW | 模拟量输出 | %QW0.0 |
在变量表或 Symbol Editor 里,可以把这些直接地址绑定成符号名,程序里优先使用符号名。这样做的好处是,后期改端子接线时只需要调整变量表里的地址映射,程序段里的逻辑不用动。在 Twido Suite 的 Configuration 里双击某个输入模块,右侧会显示这个模块每个通道对应的 %I 地址,不要在程序里手工推算通道号。
这里有个实际坑:变量表里填了中文符号名,在 ST 段里看着正常,但工程文件换电脑或换版本后,中文可能变成乱码。建议符号名统一用英文或拼音,中文只写到注释里。另一个建议是把项目里用到的所有 %M 和 %MW 集中在变量表登记,后面查地址冲突时能一眼看出谁占用了谁。
3. Twido Suite V2.31.4 里写 PLC 程序:LD、IL、ST 三种语言怎么选
3.1 电机起停的指令表 IL 写法
Twido Suite 的每个程序段可以用梯形图 LD、指令表 IL 或结构化文本 ST 编写。LD 和 IL 可以互相转换,ST 是独立的。我写短逻辑时更喜欢用 IL,因为它能把操作数和运算符的先后关系直接摊开。以电机起停为例:
LD %I0.0 OR %Q0.0 ANDN %I0.1 ST %Q0.0这段逻辑对应最经典的 PLC 启停回路:LD %I0.0读取启动按钮,按下时为 1;OR %Q0.0把接触器反馈并联进去,形成自锁;ANDN %I0.1对停止按钮取反,停止按钮按下时该行结果为 0;ST %Q0.0把结果写入输出。整个过程用梯形图表示就是常开启动按钮、常开接触器反馈、常闭停止按钮三者串联再驱动线圈。Q0.0 一旦接通,反馈触点保持回路,松开启动按钮后输出不会掉。若要多加一个远程启动按钮,在OR下面再写一行OR %I0.2即可,程序段会自动优化成多路并联。
3.2 定时器和计数器的参数说明:%TM、%C 在程序里的使用
Twido 定时器用 %TM0 到 %TM63 表示,计数器用 %C0 到 %C31 表示。双击程序段里的定时器对象,可以配置工作模式 TON、TOF、TP,预设值%TMi.P,当前值%TMi.V,使能位%TMi.IN,输出位%TMi.Q。TON 是最常用的通电延时:IN 从 0 变 1 时开始计时,当前值到达预设值后 Q 置 1;IN 一旦变 0,当前值立刻归零。TOF 则相反,IN 断开后才开始计时,适合做风机停止后的延时停机;TP 是单脉冲输出,适合把长时间保持的信号压缩成一个固定脉冲。
定时器预设值的单位和时基有关。常见时基是 100ms,P 设置成 30,实际延时就是 3 秒;如果时基是 1s,同样 P=30 就是 30 秒。刚入门的人最容易在这里犯错,把预设值当秒直接填。我一般写程序前先在参数表里把时基统一成 100ms,写注释时把换算后的秒数标出来。
计数器方面,%Ci.P 是设定值,%Ci.V 是当前值,输入指令 CU/CD 分别表示加计数和减计数。要注意 %TM0.V 只能读,不能写,修改预设值要用 %TM0.P。配置计数器时还要指定计数保持与否,断电后清零还是保持计数值,这取决于现场要求。
3.3 用结构化文本 ST 做模拟量换算和报警逻辑
PLC 梯形图解决开关量逻辑很顺手,但模拟量换算用梯形图写就很啰嗦。Twido Suite 的 ST 段支持 IF-ELSE、算术运算和数组访问。下面这段代码把模拟量输入 %IW0.0 的原始值换算成 0~00,并产生一个高报警输出:
(* 模拟量输入 %IW0.0 假设量程 0~1000, 换算到 %MW10,单位为 0.1℃ *) IF %IW0.0 > 0 THEN %MW10 := %IW0.0 / 10; END_IF; IF %MW10 >= 800 THEN %Q0.2 := TRUE; ELSE %Q0.2 := FALSE; END_IF;ST 里每个 IF 都必须有 END_IF 结尾,语句结束加分号。如果变量表里把 %MW10 命名为 AI_PV,把 %Q0.2 命名为 ALM_HIGH,这段代码的可读性会明显提高。我建议开关量逻辑用 LD 或 IL,模拟量和数组运算用 ST,这样程序结构最清楚。
4. 仿真、联机与 Modbus 通信:Twido Suite V2.31.4 怎么把程序跑起来
4.1 用内置仿真器先跑一遍逻辑
写完程序先按 F7 编译,没有错误后点击工具栏上的 Simulation 按钮进入仿真模式。Twido Suite 会弹出一个 CPU 状态窗口和动画表窗口,仿真不依赖真实硬件,适合在写 PLC 入门程序时快速验证启停逻辑和定时器参数。我在动画表里把 %I0.0 强制为 1,观察 %Q0.0 是否能自锁保持;再强制 %I0.1 为 1,看线圈是否立即断开。这个过程比下载到 PLC 再排查快得多。
仿真模式下如果看到 “Task time exceeded” 或 CPU 报警位置位,说明扫描时间超过设置值。这时候先把动画表关掉,再找是哪个程序段执行时间过长。有的老式做法喜欢把所有程序都堆在 MAST 任务里,逻辑一多扫描周期就涨价,遇到这种情况要把 PLC 高频率无关的处理逻辑拆到 FAST 任务,或者把不需要每次扫描都执行的分支放到条件块里。
4.2 USB/串口下载前的 COM 参数
第一次下载到真实 PLC 前,先确认编程线的驱动装好了。设备管理器里会出现一个新的 COM 口,比如 COM3 或 COM4,然后在PLC > Communication里设置端口、波特率、从站地址。常见参数是 19200bps、8 位数据位、无校验、1 位停止位,Modbus RTU 从站地址 1。这是大多数 Twido 默认出厂配置,但最好打开 Configuration 里的串口设置页面,直接看当前工程的参数,不要硬套默认值。
连接不成功时,优先检查三件事:第一看编程线有没有亮灯,没亮说明线或驱动有问题;第二看 Windows 防火墙是不是拦了串口通信;第三看软件里选的是不是虚拟 COM 口。我见过不少情况,程序没问题,只是 COM 口选成了 USB 打印机端口,导致下载一直超时。另外,下载前要把仿真模式退出,仿真和真实联机不能同时在跑。
4.3 用 Modbus 从上位机读 %MW 变量
Twido PLC 内置的串口支持 Modbus RTU 从站功能,内存区 %MW 和 Modbus 保持寄存器是一一对应的。用 Python 写一个最小测试脚本,可以直接读 %MW100 的值:
import minimalmodbus import time # COM3 是编程/通信串口,1 是 Modbus 从站地址 plc = minimalmodbus.Instrument("COM3", 1) plc.serial.baudrate = 19200 plc.serial.bytesize = 8 plc.serial.parity = "N" plc.serial.stopbits = 1 plc.mode = minimalmodbus.MODE_RTU while True: try: # 功能码 03 读保持寄存器,寄存器地址 100 对应 %MW100 value = plc.read_register(100, 0, 3) print("MW100 =", value) time.sleep(1) except KeyboardInterrupt: plc.serial.close() break这段代码执行前要先pip install minimalmodbus。read_register的第一个参数是寄存器地址,第二个参数是小数位数,第三个参数是功能码。在 Twido 侧,Modbus 40001 地址对应 %MW0,所以读取地址 100 拿到的就是 %MW100。如果 PLC 侧的 Modbus 从站功能没有打开,上位机会一直报超时;如果 PLC 正被编程软件占用,串口会同权限冲突,要先把软件里的联机断开。
5. Twido Suite V2.31.4 的排错技巧:从内部寄存器、滤波到软件互锁
5.1 出问题先查内部寄存器和动画表,别急着改程序
设备运行异常时,我一般先不删程序,而是打开动画表,把 %SW0 到 %SW10 这一组系统字加进去。Twido PLC 的运行状态、I/O 模块状态、扫描周期异常等信息都会反映在系统字里,具体的位定义可以在软件里选中该地址按 F1 查看。观察系统字中为 1 的位,再回到 Configuration 检查对应模块,大部分硬件层面的故障都能在这个环节定位。
比起一上来就修改逻辑,先把 CPU 正面的 ERR/IO 指示灯和系统字对照起来看,能省不少时间。IO LED 常亮时,先看是不是扩展模块掉线;ERR LED 闪动时,多半是程序段引用了不存在的地址。
5.2 数字量输入滤波的设置方法
Twido Suite 的数字量输入模块在 Configuration 里可以设置滤波时间,常见档位有 0.1ms、1ms、5ms、10ms。按钮、接近开关这类信号在机械抖动较大时,把滤波时间调到 10ms 能有效减少误动作。但要注意,接入高速计数器的输入通道不要设置过大的滤波时间,否则会漏掉高速脉冲。滤波时间并不是越大越好,它和输入信号的最短脉冲宽度直接相关,需要先确认现场信号的最短脉宽再设置。
5.3 软件互锁不能替代硬件互锁
最后说一个最容易被忽视的 PLC 程序设计技巧:正反转回路除了接触器的硬件互锁,程序里也必须加软件互锁。下面是一段典型写法:
LD %I0.0 ANDN %Q0.1 ST %Q0.0 LD %I0.1 ANDN %Q0.0 ST %Q0.1在第一个输出前插入ANDN %Q0.1,只要反转输出还保持着,正转回路就不能接通;同理,正转保持时反转也不能启动。这样即使现场误接了启动按钮,程序层也不会让两个方向同时输出。但即便程序里做了软件互锁,接触器的主触点仍然可能因为卡涩而不能及时断开,所以 PLC 程序和硬件电路两边的互锁都必须保留。软件互锁是最后一道保障,硬件互锁不能省。
本文还有配套的精品资源,点击获取