2、脉冲输出基础:PLC高速脉冲输出口与PTO/PWM/PLS指令详解

各位工程师朋友,咱们今天聊聊脉冲输出。说实话,搞伺服定位,脉冲就是PLC和驱动器之间的“语言”。你发多少个脉冲,电机就转多少角度;你发多快的脉冲,电机就转多快。这个基础打不牢,后面调参数全是瞎蒙。

我刚开始带项目那会儿,就吃过这个亏。明明程序逻辑都对,电机就是抖得跟筛糠似的。查了两天,最后发现是脉冲输出口的硬件配置没设对。嗯,从那以后,我再也不敢跳过硬件配置这一步了。

2.1 高速脉冲输出口的硬件配置

S7-200 SMART 的高速脉冲输出口,固定是 Q0.0 和 Q0.1。这两个点可不是普通数字量输出,它们背后有专门的硬件电路支持,最高能跑到 100kHz。

配置的时候,有几点你一定要注意:

  • 输出类型必须选“高速”:在系统块里,把 Q0.0 和 Q0.1 的“脉冲输出”选项勾上。默认是普通输出,不勾的话,你发出去的脉冲波形会严重畸变。
  • 晶体管输出型:只有晶体管输出的 CPU 才支持高速脉冲。继电器型的就别想了,机械触点根本跟不上这个频率。
  • 负载匹配:高速脉冲口的驱动能力是 0.75A。我建议你加一个中间继电器或者光耦隔离,别直接驱动大负载,容易烧口。

关键点:Q0.0 和 Q0.1 是独立的两个通道,可以同时输出不同频率、不同数量的脉冲。但要注意,它们共用同一个高速计数器资源,如果你要用 HSC(高速计数器)做反馈,得提前规划好通道分配。

2.2 PTO 与 PWM 的区别

很多新手搞不清 PTO 和 PWM 到底有啥区别。说白了,PTO 是“发一串脉冲”,PWM 是“输出一个方波”。

咱们用个表格来对比,这样更直观:

对比项 PTO(脉冲串输出) PWM(脉宽调制)
核心用途 伺服/步进电机定位控制 调速、调光、加热控制
输出波形 50% 占空比的方波串 占空比可调的连续方波
脉冲数量 可设定(1~4,294,967,295) 连续输出,无数量限制
频率范围 1Hz ~ 100kHz 1Hz ~ 100kHz
典型应用 点到点定位、直线插补 变频器速度给定、LED 调光

你想想看,做伺服定位,你需要的是“走多少步就停”,所以 PTO 最合适。而 PWM 是“一直转,但转多快由占空比决定”,适合调速场景。

我的经验:曾经有个项目,客户非要用 PWM 去控制伺服走位置。结果伺服一直在震荡,因为 PWM 的占空比变化会导致脉冲宽度不均匀,伺服驱动器根本没法准确计数。后来换成 PTO,问题立刻解决。所以,定位就用 PTO,别折腾。

2.3 PLS 指令详解

PLS 指令是 S7-200 SMART 里控制脉冲输出的核心指令。它虽然只有一条,但参数配置相当讲究。

指令格式很简单:

PLS Q0.x

其中 Q0.x 可以是 Q0.0 或 Q0.1。执行这条指令时,PLC 会根据特殊寄存器里的配置,自动生成脉冲波形。

配置参数主要放在以下几个特殊寄存器里:

  • SMB67(Q0.0) / SMB77(Q0.1):控制字节。决定是 PTO 还是 PWM,是否允许更新频率、脉冲数等。
  • SMW68(Q0.0) / SMW78(Q0.1):周期/频率值。PTO 模式下是周期(单位 μs),PWM 模式下是周期(单位 μs)。
  • SMW70(Q0.0) / SMW80(Q0.1):PWM 模式下是脉宽(单位 μs),PTO 模式下不用。
  • SMD72(Q0.0) / SMD82(Q0.1):脉冲数。PTO 模式下设定要发的脉冲总数。

我习惯把配置写成一个初始化子程序,这样调用起来特别清晰。举个例子:

// 配置 Q0.0 为 PTO 模式,输出 5000 个脉冲,周期 200μs(即 5kHz)
MOVB  16#8D, SMB67    // 控制字节:PTO 模式,允许更新周期和脉冲数
MOVW  200, SMW68      // 周期 200μs
MOVD  5000, SMD72     // 脉冲数 5000
PLS   Q0.0            // 启动脉冲输出

这里控制字节 16#8D 是什么意思?我拆开给你看:

  • Bit7 = 1:使能脉冲输出
  • Bit6 = 0:选择 PTO 模式(1 是 PWM)
  • Bit5 = 1:允许更新周期
  • Bit4 = 0:不更新脉宽(PTO 不需要)
  • Bit3 = 1:允许更新脉冲数
  • Bit2~Bit0:固定为 101

合起来就是 1000 1101,也就是 16#8D。

注意:PLS 指令执行时,如果 Q0.0 正在输出脉冲,新的 PLS 指令会立即终止当前输出,并按新参数重新开始。所以,在运动过程中改变参数要特别小心,我建议先停止输出,再更新参数,最后重新启动。

2.4 知识结构总览

为了让你对整个脉冲输出体系有个全局认识,我画了张图:

脉冲输出知识体系 高速脉冲输出 硬件配置 工作模式 Q0.0 / Q0.1 通道 晶体管输出类型 PTO(定位) PWM(调速) PLS 指令 控制字节 SMB67/77 周期/脉冲数寄存器 核心指令

从这张图你可以看到,整个脉冲输出体系分三层:硬件层决定“能不能发”,模式层决定“怎么发”,指令层决定“发多少”。三层配合好了,伺服定位才能稳。

避坑指南:我曾经在一个项目里,把 PTO 的周期设成了 10μs(即 100kHz),结果电机跑起来噪音特别大。后来发现是负载惯量太大,100kHz 的脉冲频率导致驱动器响应不过来。最后降到 20kHz,一切正常。所以,频率不是越高越好,得看你的机械系统和驱动器能不能跟上。

好了,这一章的内容就这些。记住:硬件配置是地基,PTO/PWM 选择是方向,PLS 指令是工具。地基稳了,方向对了,工具用熟了,后面调伺服参数就是水到渠成的事。