第三章:PLC运动控制指令详解
各位工程师朋友,大家好。今天我们来聊聊PLC运动控制里最核心的几类指令。说实话,我刚入行那会儿,面对一堆PLSY、DRVI、ZRN这些缩写,头都大了。但搞懂了它们各自的分工,你会发现,运动控制其实没那么神秘。
我个人习惯把运动控制指令分成四大类:脉冲输出、定位、原点回归和速度控制。每一类都有它特定的应用场景。下面我结合自己的项目经验,给大家掰开揉碎了讲一讲。
核心观点: 运动控制指令的本质,就是让电机按照我们期望的方式去转。脉冲指令管“怎么转”,定位指令管“转到哪”,原点回归管“从哪开始”,速度控制管“转多快”。
3.1 脉冲输出指令:PLSY 与 PLSR
先说说脉冲输出。这是最基础的指令,说白了就是让PLC的某个输出口产生一串脉冲信号。电机驱动器收到脉冲,就会驱动电机转起来。
3.1.1 PLSY:基础脉冲输出
PLSY指令,全称是Pulse Output。它的用法很简单:指定频率和脉冲数,然后启动。电机就会按照设定的频率,输出指定数量的脉冲。
指令格式:
PLSY D1 D2 D3
- D1: 输出频率(Hz)。比如D1=1000,就是每秒1000个脉冲。
- D2: 输出脉冲数。比如D2=5000,就是输出5000个脉冲后停止。
- D3: 输出端口编号(Y0、Y1等)。
我在项目中遇到过一个问题:用PLSY控制步进电机走固定距离,结果每次停下来都有点过冲。后来发现,PLSY是突然停止的,没有减速过程。电机有惯性,自然会冲过头。
我的经验: PLSY适合对启停精度要求不高的场合,比如简单的送料、点动控制。如果要求精准定位,建议用PLSR或者定位指令。
3.1.2 PLSR:带加减速的脉冲输出
PLSR指令,全称是Pulse Output with Ramp。它比PLSY多了一个加减速功能。电机启动时慢慢加速,停止前慢慢减速。这样能有效避免过冲和抖动。
指令格式:
PLSR D1 D2 D3 D4
- D1: 最高频率(Hz)。
- D2: 总脉冲数。
- D3: 加减速时间(ms)。
- D4: 输出端口编号。
嗯,这里要注意:加减速时间不能设得太短,否则电机容易丢步。我一般设100-300ms,具体看负载大小。
避坑指南: 我曾经在一条高速包装线上用PLSR,加减速时间设了50ms,结果电机高频尖叫,还丢步。后来改成200ms,问题就解决了。记住:加减速时间不是越小越好,要匹配机械系统的惯量。
3.2 定位指令:DRVI 与 DRVA
定位指令,是运动控制的核心。它们告诉电机:你要走到哪个位置。DRVI是相对定位,DRVA是绝对定位。这两个概念,我刚开始也容易搞混。
3.2.1 DRVI:相对定位
DRVI,全称是Drive to Increment。它的意思是:从当前位置,再走多少距离。比如当前在位置100,你让DRVI走200,那最终位置就是300。
指令格式:
DRVI D1 D2 D3
- D1: 输出脉冲数(相对距离)。
- D2: 输出频率(Hz)。
- D3: 输出端口编号。
我举个例子:你有一个传送带,每次需要前进100mm。用DRVI就很方便,每次触发就发100mm对应的脉冲数。不管当前在哪儿,反正再走100mm。
3.2.2 DRVA:绝对定位
DRVA,全称是Drive to Absolute。它的意思是:走到一个绝对位置。比如你设定目标位置为500,那不管当前在100还是300,电机都会跑到500。
指令格式:
DRVA D1 D2 D3
- D1: 目标绝对位置(脉冲数)。
- D2: 输出频率(Hz)。
- D3: 输出端口编号。
关键区别: DRVI是“再走多少”,DRVA是“走到哪里”。你想想看,如果系统需要回原点后再定位,用DRVA更安全。因为DRVA会基于原点计算位置,不会累积误差。
我在一个多工位转盘项目里,就吃过DRVI的亏。每次转盘停的位置都有微小偏差,累积几次后,产品就放不准了。后来改成DRVA,每次都以原点为基准定位,问题就解决了。
3.3 原点回归指令:ZRN
原点回归,是运动控制里必不可少的一步。每次开机,系统都不知道电机当前在什么位置。ZRN指令就是让电机自动寻找原点,建立位置参考系。
指令格式:
ZRN D1 D2 D3 D4
- D1: 原点回归速度(高速)。
- D2: 爬行速度(低速)。
- D3: 原点输入信号(如X0)。
- D4: 输出端口编号。
ZRN的工作流程是这样的:电机先以高速向原点方向移动,碰到原点传感器后,立即减速到爬行速度,然后慢慢靠近,直到完全停止在原点位置。
我的习惯: 爬行速度一般设高速的1/10到1/20。太快了容易过冲,太慢了浪费时间。我通常设高速5000Hz,爬行300-500Hz。
我曾经遇到一个案例:客户说每次回原点位置都不一样,偏差很大。我去现场一看,发现原点传感器安装位置有松动,而且ZRN的爬行速度设得太高。紧固传感器、降低爬行速度后,重复精度就稳定在0.1mm以内了。
避坑指南: 原点回归时,一定要确保电机有足够的减速距离。如果高速段离原点太近,电机来不及减速就会冲过原点。我一般会在程序里加一个软限位,防止这种情况。
3.4 速度控制指令
速度控制指令,顾名思义,就是控制电机的运行速度。它不像定位指令那样关心位置,只关心“转多快”。
常见的速度控制指令有:
- PLSY(连续模式): 当脉冲数设为0时,PLSY会连续输出脉冲,直到手动停止。这就是一个简单的速度控制。
- SPD(速度检测): 用于检测当前速度,配合PID调节可以实现闭环速度控制。
- PWM(脉宽调制): 通过调节占空比来控制速度,常用于直流电机。
我个人的经验是:速度控制指令在输送带、搅拌机、风机这类设备上用得最多。不需要精确定位,只要速度稳定就行。
实用技巧: 如果你需要多段速度切换,可以用多个PLSY指令配合M8029(指令执行完成标志)来实现。比如:先高速运行,碰到传感器后切换到中速,再碰到另一个传感器切换到低速。
知识体系总览
下面这张图,是我自己整理的PLC运动控制指令知识体系。你可以把它当作一个快速索引,用到哪个指令就回来查一下。
好了,以上就是PLC运动控制指令的核心内容。脉冲输出、定位、原点回归、速度控制,这四类指令基本覆盖了90%的运动控制场景。你只要把它们的原理和适用场景搞清楚了,写起程序来就会顺手很多。
记住:实践出真知。光看指令手册是不够的,一定要动手去接个步进电机或伺服,跑一遍程序,看看波形,感受一下加减速、定位精度的变化。遇到问题别怕,那都是积累经验的好机会。