返回主站|会员中心|保存桌面

Viking威肯中国区域服务商    

威卡叶片,离心泵,圆心活塞,旋转页,内齿轮,外齿轮

新闻分类
  • 暂无分类
联系方式
  • 联系人:吴经理
  • 电话:18576370666
  • 邮件:18576370666@163.com
  • 传真:散热风扇
站内搜索
 
首页 > 新闻中心 > 当寄存器值变化时位元件导通如何编程?
新闻中心
当寄存器值变化时位元件导通如何编程?
发布时间:2025-10-17        浏览次数:1        返回列表

在三菱 PLC 中,实现 “当寄存器(D)的值变化时,触发位元件(M/X/Y)导通” 的核心思路是:通过比较寄存器的当前值与上一扫描周期的值,判断是否发生变化,若变化则置位位元件。以下是具体编程方法,包含基础逻辑、优化方案及应用示例:

一、核心原理

  1. 存储历史值:用一个寄存器(如 D10)存储目标寄存器(如 D0)的 “上一扫描周期值”;

  2. 实时比较:每个扫描周期将 D0 的当前值与 D10 的历史值比较;

  3. 触发动作:若两者不相等(D0≠D10),说明 D0 的值变化,此时置位位元件(如 M0);

  4. 更新历史值:比较后,将 D0 的当前值存入 D10,作为下一周期的 “历史值”。

二、基础编程示例(梯形图)

以 “当 D0 的值变化时,M0 导通一个扫描周期” 为例:

ladder

// 步骤1:将D0的当前值与历史值(D10)比较,不等则M0导通
LD     M8000          // 常通信号(每个扫描周期执行)
CMP    D0             D10        // 比较D0(当前值)与D10(历史值)
OUT    M0             // 当D0≠D10时,M0=1(仅当前扫描周期)

// 步骤2:将D0的当前值存入D10,更新历史值(确保下一周期比较正确)
LD     M8000
MOV    D0             D10        // 扫描周期结束前,用当前值覆盖历史值

逻辑说明

  • CMP D0 D10:当 D0≠D10 时,CMP指令的输出触点(此处直接驱动 M0)导通,M0 在当前扫描周期为 1;

  • MOV D0 D10:在同一扫描周期内,用 D0 的当前值更新 D10,确保下一周期比较的是 “新历史值” 与 “更新后的当前值”;

  • 效果:D0 的值每变化一次,M0 仅在变化发生的一个扫描周期内导通(脉冲信号)。

三、扩展需求:位元件保持导通(直到复位)

若需要 “D0 变化后,位元件保持导通,直到手动复位”,可增加锁存逻辑:

ladder

// 步骤1:比较D0与历史值,变化时触发锁存
LD     M8000
CMP    D0             D10
OR     M1             // 锁存当前状态
OUT    M1             // M1=1(保持导通,直到复位)

// 步骤2:更新历史值
LD     M8000
MOV    D0             D10

// 步骤3:手动复位(如X0按下时复位M1)
LD     X0
RST    M1

逻辑说明

  • D0 首次变化时,CMP输出为 1,通过OR M1OUT M1实现锁存,M1 保持导通;

  • 按下 X0(复位按钮),RST M1使 M1 复位为 0;

  • 适用于 “寄存器变化后需持续执行某个动作,直到确认处理完毕” 的场景(如报警提示)。

四、优化方案:过滤微小波动(防抖动)

若寄存器值因干扰产生微小波动(如模拟量转换的 ±1 误差),需忽略这类 “无效变化”,可通过 “差值范围判断” 优化:

ladder

// 目标:仅当D0的变化量>±2时,M0才导通
LD     M8000
// 计算D0与D10的差值(绝对值)
SUB    D0             D10        D20   // D20 = D0 - D10
ABS    D20            D20        // D20 = |D0 - D10|(取绝对值)
// 当差值>2时,M0导通
CMP    D20            K2         // 比较D20与2
OUT    M0             // D20>2时,M0=1

// 更新历史值
LD     M8000
MOV    D0             D10

逻辑说明

  • SUB计算差值,ABS取绝对值,确保 “增大” 或 “减小” 的变化都能被检测;

  • 仅当变化量超过设定阈值(如 2)时,M0 才触发,过滤微小波动导致的误动作;

  • 适用于模拟量转换(如电位器、传感器)的寄存器,避免信号噪声干扰。

五、应用场景示例

场景:当温度寄存器(D50,模拟量转换值)变化时,触发数据上传

ladder

// D50:温度值(0-100对应0-100℃)
// M10:触发数据上传信号(脉冲)
// X10:上传完成反馈

// 检测D50变化
LD     M8000
CMP    D50            D51        // D51存储历史温度值
OUT    M10            // 变化时M10=1(触发上传)

// 更新历史值
LD     M8000
MOV    D50            D51

// 上传逻辑(示例:通过以太网发送数据)
LD     M10
// 调用数据上传指令(如TCP_SEND)
...

总结

核心逻辑是 “历史值存储→实时比较→触发动作”,通过CMP指令判断寄存器值是否变化,再根据需求设计位元件的导通方式(脉冲 / 保持)。实际应用中,需注意:

  1. 若寄存器值变化频繁,位元件会高频触发,需根据设备承受能力限制频率;

  2. 模拟量寄存器需增加 “差值过滤”,避免干扰导致误动作;

  3. 保持型位元件需设计明确的复位逻辑(如手动按钮、完成反馈)。

这种方法适用于数据监控、状态变化触发、异常报警等场景,是 PLC 中常用的逻辑设计技巧。

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服