三菱fx3u指令plsy和DVIT好像差不多。为什么要DVIT这条指令呢?

PLSY 和 DVIT 两条指令都属于三菱 FX3U 系列的 定位控制指令 ,都能从 Y0/Y1/Y2 等高速输出端口发出脉冲,用于驱动步进电机或伺服电机,但它们的功能和应用场景有本质区别。

PLSY 指令(FNC 57)

  • 功能 :简单脉冲输出。指定输出频率(S1)和脉冲数量(S2),从指定端口(D)发出固定数量的脉冲。
  • 特点
    • 开环控制:输出完成后自动停止,不受外部信号影响。
    • 不支持加减速(需配合 PLSR 或其他方式)。
    • 执行过程中如果驱动条件关闭,脉冲立即停止;重新驱动会从头开始输出。
  • 典型应用 :固定距离移动、恒速运行、简单速度控制(如风机调速、传送带匀速输送),对停止位置精度要求不高,或已知精确脉冲数的场合。

DVIT 指令(FNC 156)

  • 功能 :中断单速定位(Interrupt Positioning)。在输出脉冲的过程中, 当接收到指定的外部中断信号 (如 X0~X5 的高速输入,或 DOG 近点信号)时,继续输出预设的“剩余脉冲数”,然后自动停止。
  • 特点
    • 支持外部中断触发:通过表格设定多个中断输入信号及其对应的剩余脉冲数。
    • 半闭环控制:结合外部传感器(如光电开关、接近开关)实现更精确的停止位置。
    • 执行中不受扫描周期影响,响应速度快。
    • 可配合 DSZR(零返回)等指令实现完整的原点回归+定位流程。
  • 典型应用 :需要精确停止的机械定位,如机床进给、包装机械、传送带分度、自动装配线等。常见场景是“高速接近 + 低速爬行 + 精确停止”:电机先高速运行,碰到近点传感器(中断信号)后,再走设定的小距离精确到位,补偿机械惯性或误差。

为什么需要 DVIT 指令?

PLSY 只能“盲输出”固定脉冲数,无法响应外部信号。如果机械系统存在惯性、负载变化或安装误差,实际停止位置容易偏差。

DVIT 专门解决这个问题:它允许在运行中 实时响应外部中断信号 ,在中断到来后再走精确的剩余距离停止,实现更高的定位精度和可靠性。这在工业现场非常常见(如用 DOG 信号做原点回归后的精确定位)。

简单来说:

  • 用 PLSY → 适合“大概到位就行”的简单应用。
  • 用 DVIT → 适合“必须精确到位”的专业定位应用。

如果你的项目对停止精度要求高,或者需要配合传感器,优先选择 DVIT(常与 DSZR、DRVI/DRVA 组合使用)。如果只是简单速度/距离控制,PLSY 就足够了。

中断单速定位(Interrupt Positioning)。在输出脉冲的过程中,当接收到指定的外部中断信号(如 X0~X5 的高速输入,或 DOG 近点信号)时,继续输出预设的“剩余脉冲数”,然后自动停止。 不理解。如果没有中断信号,这条指令也有指定的脉冲数。请解释一下。

DVIT指令(FNC156)的参数中, S2 指定的是“最大脉冲数”(或称上限脉冲数、总脉冲数),它的作用正是你困惑的点。

DVIT的执行逻辑

  1. 启动后 :PLC以恒定频率(S1指定)从指定端口(D,如Y0)开始输出脉冲,同时实时监控中断表格(S3起始)中定义的外部中断信号(通常是X0~X5的高速输入,上升沿触发,或DOG信号)。
  2. 有中断信号触发时
    • 一旦检测到第一个匹配的中断信号(优先级按表格顺序),立即“丢弃”当前剩余的总脉冲计划。
    • 转而输出表格中对应这个中断信号的“剩余脉冲数”(也叫爬行脉冲数,通常设为一个小值,如几十到几百脉冲,用于补偿惯性精确到位)。
    • 输出完这个剩余脉冲数后,自动停止脉冲输出,指令完成标志(M8029或对应轴的)ON。
  3. 全程没有中断信号触发时
    • 指令会像普通PLSY一样,继续输出脉冲,直到累计达到S2指定的“最大脉冲数”。
    • 达到S2后,自动停止脉冲输出,指令正常完成。

为什么要有这个“最大脉冲数”S2?

  • 安全性设计 → 如果外部传感器故障、信号线断、或机械没碰到近点开关,中断永远不会触发。如果没有S2上限,脉冲会无限输出,电机可能一直转,导致撞机、损坏设备或安全事故。S2相当于一个“保险上限”,确保最坏情况下也会停。
  • 容错与灵活性 → 正常工况下,你会把S2设得很大(例如K100000或更大,甚至接近32位最大值2147483647),远超过高速接近距离,确保中断一定会触发,实现精确停止。但异常时,它会走到S2后停,程序可以检测“没触发中断”来报警或处理。
  • 退化兼容 → 如果你不设置中断表格(或表格全0),DVIT就完全等同于单速PLSY,只是多了一个中断能力的扩展。

典型编程建议

  • 高速接近阶段 → 把S2设大(确保不会先达到S2)。
  • 剩余脉冲数 → 设小(根据机械惯性实测,补偿停止误差)。
  • 常见组合 → DVIT常与DSZR(零返回)或DRVI(相对/绝对定位)配合,实现“粗定位+中断精确定位”。

举个简单例子:

  • 假设目标是让电机高速跑到一个传感器前,然后低速爬行10脉冲精确停。
  • 设置:频率10kHz,S2 = K50000(很大),中断信号X0,剩余脉冲K10。
  • 正常:跑到传感器(X0 ON),触发中断,再走10脉冲停 → 精确到位。
  • 异常(没碰到传感器):走到50000脉冲后自动停 → 不会无限转。

如果你程序中发现“有时没中断也停了”,很可能就是达到了S2。建议检查S2值是否设得太小。

请举例说明?

DVIT指令实际应用举例

假设一个典型场景: 步进电机驱动一个机械臂或转盘,需要高速接近目标位置,然后精确停止 。机械上安装了一个接近开关(近点信号DOG,接在X000输入),用于检测“粗定位到位”。

  • 目标 :电机先以10kHz高速运行,接近开关触发后,再低速爬行50脉冲(补偿惯性)精确停在目标点。
  • 硬件 :脉冲输出Y000,方向Y001(如果需要,正反转)。DOG信号接X000(上升沿触发)。

参数设置

使用DVIT指令: DVIT S1 S2 S3 D

  • S1 (频率):K10000(10kHz,高速接近)
  • S2 (最大脉冲数):K100000(设一个很大值,确保正常情况下不会先达到这个数;相当于“保险上限”)
  • S3 (中断表格起始地址):D100(表格从D100开始定义中断)
  • D (输出端口):Y000(脉冲从Y000输出,方向可另设)

中断表格设置(关键部分,从D100开始)

FX3U的DVIT支持多个中断点(通常最多3~4个,按顺序优先检测第一个触发的)。表格格式示例(简化,只用一个中断):

寄存器 含义
D100 K1 中断点数量(这里设1个)
D101 K0 中断输入信号编号(0对应X000,1对应X001…)
D102 K50 该中断触发后的剩余脉冲数(爬行50脉冲精确停)
D103~ (未用) 如果有多个中断,继续往下定义

(注:实际表格格式请参考三菱手册,FX3U具体是:第一个字为中断数n,然后每中断占2字:中断输入编号 + 剩余脉冲数)

执行过程举例

  1. 正常情况(有中断触发)
    • 程序驱动DVIT指令启动。
    • 电机以10kHz开始高速转动(对应机械臂快速接近目标)。
    • 当机械臂碰到接近开关 → X000 ON(上升沿),PLC立即检测到中断信号。
    • 此时忽略原来的S2(100000) ,转而只输出表格中设定的剩余脉冲:50脉冲。
    • 输出完50脉冲后,脉冲自动停止,指令完成(M8029 ON或对应轴标志)。
    • 结果 :精确停在目标位置(高速接近 + 低速爬行补偿惯性误差)。
  2. 异常情况(无中断触发,例如传感器故障或没碰到开关)
    • 电机一直以10kHz高速转动。
    • 因为没有中断信号,PLC继续累计脉冲。
    • 当累计达到S2(K100000)时,自动停止脉冲输出,指令完成。
    • 结果 :电机停在“最大安全距离”(对应100000脉冲),不会无限转下去,避免撞机。
    • 程序可以检测“脉冲输出完成但中断标志没置位”来报警(例如检查专用标志位)。

简单梯形图伪代码示例(GX Works2风格)

text

LD M0                  ; 启动条件(M0为定位启动按钮)

DVIT K10000 K100000 D100 Y000   ; 执行DVIT

; 预先MOV指令设置表格(程序初始化时执行)

MOV K1 D100            ; 中断数=1

MOV K0 D101            ; 中断输入=X000

MOV K50 D102           ; 剩余脉冲=50

为什么这个例子实用?

  • 在包装机、贴标机、分度盘等设备中非常常见:高速运行节省时间,中断+剩余脉冲保证精度。
  • 如果把剩余脉冲设为0,就是“碰到开关立即停”(适合零速停止场景)。
  • 如果不设中断表格(D100=K0),DVIT就完全退化为PLSY,只走S2脉冲。

登录

注册

重设密码

请输入您的用户名或电子邮箱地址。您会收到一封包含创建新密码链接的电子邮件。