4. 梯形图编程基础

梯形图(Ladder Diagram,简称 LD)是 Studio 5000 Logix Designer 中最贴近继电器控制逻辑的编程语言。它的核心思想是把控制关系画成“能流”从左母线经触点、线圈流向右侧,能流是否通过取决于触点状态。本节围绕五类最常用的指令展开:位指令、计时器、计数器、比较指令和数学指令,并给出可直接在 Studio 5000 中复现的典型控制逻辑。

一、位指令:XIC、XIO、OTE 与 OTL/OTU

位指令操作的是 BOOL 型标签,本质是对某一位的读取或写入。最常用的四条是:

  • XIC(Examine If Closed,常开触点):当标签值为 1 时导通,相当于“条件成立”。
  • XIO(Examine If Open,常闭触点):当标签值为 0 时导通,相当于“条件不成立”。
  • OTE(Output Energize,输出线圈):能流通过时把标签置 1,能流断开时置 0,是“跟随型”输出。
  • OTL / OTU(锁存 / 解锁):OTL 一旦被触发就把位保持为 1,直到同一标签被 OTU 复位,用于启保停中的“保持”环节。

需要特别注意的是:OTE 在同一扫描周期内如果被多次赋值,最终结果由最后一次执行决定;而 OTL/OTU 是保持型,适合做状态记忆。位指令的标签建议按功能命名,例如 Start_PB、Stop_PB、Motor_Run,避免使用 B3:0/0 这类无意义地址。

二、计时器指令:TON、TOF、RTO

Studio 5000 的计时器是结构体标签,包含 .EN(使能位)、.TT(计时中)、.DN(完成位)、.PRE(预设值)和 .ACC(当前值)。时间基准固定为 1 ms,因此预设值 5000 表示 5 s。

  • TON(延时导通):条件为真时开始累加,.ACC 达到 .PRE 时 .DN 置 1;条件断开则立即复位。
  • TOF(延时断开):条件为真时输出立即为 1,条件断开后开始计时,到时后输出变 0。
  • RTO(保持型延时导通):条件断开后 .ACC 保持,需用 RES 指令复位,适合累计运行时间。

典型用法是“启动后延时 5 秒再输出”:用 XIC 触发 TON,预设值 5000,再用 TON 的 .DN 位驱动 OTE。若需要循环计时,可在 .DN 为真时用 XIO 串在使能前形成自复位。

三、计数器指令:CTU、CTD、RES

计数器同样是结构体,包含 .CU(加计数使能)、.CD(减计数使能)、.DN(完成位)、.OV(溢出)、.UN(下溢)、.PRE 和 .ACC。CTU 在每个上升沿使 .ACC 加 1,达到 .PRE 时 .DN 置 1;CTD 则减 1;RES 把 .ACC 清零并复位完成位。

计数器的关键点是“边沿触发”:只有 .CU 从 0 变 1 的那一次扫描才计数,因此输入信号必须保证有明确的通断变化。典型应用是“工件计数到 10 个后报警”,用 CTU 预设 10,.DN 驱动报警输出,操作员确认后用 RES 复位。

四、比较指令:EQU、NEQ、GRT、LES、GEQ、LEQ、LIM

比较指令用于判断两个数值的关系,结果为 BOOL。常用指令包括:EQU(等于)、NEQ(不等于)、GRT(大于)、LES(小于)、GEQ(大于等于)、LEQ(小于等于)以及 LIM(限值判断,判断值是否落在下限与上限之间)。

比较指令常与计时器、计数器配合,例如:Timer_1.ACC >= 3000 时触发中段报警;Counter_1.ACC < 5 时允许继续进料。LIM 指令在模拟量处理中很实用,可判断 Analog_In 是否在 4~20 mA 对应的 0~10000 范围内。

五、数学指令:ADD、SUB、MUL、DIV、MOV、CPT

数学指令对数值标签进行运算,结果写入目标标签。ADD/SUB/MUL/DIV 分别完成加、减、乘、除;MOV 用于赋值;CPT 可用表达式完成复合计算,例如 (A+B)*0.5。运算时要注意数据类型:INT 与 DINT 混用可能产生溢出或截断,除法要防止除数为 0。

典型场景是“产量换算”:用 CTU 统计工件数,再用 MUL 乘以单件重量得到总重量,用 MOV 把结果送到 HMI 显示标签。若需要保留小数,应使用 REAL 类型并注意浮点比较不要直接用 EQU,而应判断差值绝对值小于某个容差。

五类指令协同的典型控制逻辑:启动延时 + 计数 + 比较 + 运算 左母线 XIC Start XIO Stop OTE Run TON T1 PRE=5000 Run 自锁反馈 XIC T1.DN CTU C1 PRE=10 GEQ C1.ACC≥10 XIC Alarm_Flag MUL C1.ACC × 2.5 kg MOV → Total_Wt XIC Reset_PB RES C1 RES T1 OTU Alarm_Flag 右母线 执行顺序与要点: ① Start 按下 → Run 置 1 并自锁;② T1 计时 5 s 到 → T1.DN 触发 C1 计数;③ C1.ACC 达到 10 → 比较成立置 Alarm_Flag; ④ 用 C1.ACC 乘单件重量送 HMI;⑤ Reset_PB 复位 C1、T1 并解锁报警。注意:OTE 跟随能流,OTL/OTU 用于保持,RES 只复位计时/计数器。

六、典型控制逻辑的编写与验证

把上述指令组合起来,可以完成一个“启动延时后计数、计数到限报警、并换算总重量”的完整逻辑。编写时建议按以下顺序组织:

  1. 先定义标签:Start_PB、Stop_PB、Run、T1(TON)、C1(CTU)、Alarm_Flag、Total_Wt(REAL)。
  2. 第一梯级写启保停:XIC Start_PB 与 XIO Stop_PB 串联,驱动 OTE Run,并用 Run 的 XIC 并联在 Start_PB 两端实现自锁。
  3. 第二梯级用 XIC Run 驱动 TON T1,预设 5000(5 s)。
  4. 第三梯级用 XIC T1.DN 驱动 CTU C1,预设 10;再用 XIC C1.DN 驱动 OTE Alarm_Flag。
  5. 第四梯级用 XIC Alarm_Flag 触发 MUL,把 C1.ACC 乘以 2.5 得到 Total_Wt,并用 MOV 送到 HMI 显示标签。
  6. 第五梯级用 XIC Reset_PB 驱动 RES C1、RES T1 和 OTU Alarm_Flag,完成复位。

验证时可在 Studio 5000 中切换到“监视”模式,观察各标签的实时值:按下 Start_PB 后 Run 应为 1;5 s 后 T1.DN 应为 1;每来一个计数脉冲 C1.ACC 加 1;到 10 时 Alarm_Flag 为 1,Total_Wt 显示 25.0。若计数不动作,优先检查输入信号是否有上升沿;若计时不启动,检查 TON 的使能条件是否持续为真。

提示:比较指令的数值类型要与被比较标签一致。例如 C1.ACC 是 DINT,比较常数写 10 即可;若与 REAL 比较,建议用 REAL 常数或显式转换,避免隐式转换带来的意外结果。
注意:除法指令 DIV 的除数不能为 0,否则会产生溢出或错误。工程上应先用比较指令判断除数是否大于 0,再执行除法。