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

软件定制开发公司    

软件定制开发公司,承接各类工控软件,上位机软件,plc程序开发,编程,调试,电气...

联系方式
  • 联系人:吴经理
  • 电话:18576370666
新闻分类
  • 暂无分类
站内搜索
 
友情链接
首页 > 新闻中心 > 当D0的值由20增加到21或由21减少到20如何编程!
新闻中心
当D0的值由20增加到21或由21减少到20如何编程!
发布时间:2025-07-26        浏览次数:7        返回列表

在PLC编程中,当需要检测某个数据寄存器(如D0)的值从20增加到21或从21减少到20时,可以通过比较指令和上升沿/下降沿检测来实现。以下是几种常见PLC品牌的编程示例:


1. 三菱PLC(使用GX Works2)

方法1:使用比较指令和边沿检测

ladder

LD M8000                // 常ON触点(确保扫描)
LDI D0 20               // 如果D0不等于20
OUT M0                  // M0置0
LD D0 20                // 如果D0等于20
OUT M0                  // M0置1
LD M0                   // 检测M0的上升沿(D0从非20变为20)
AND P_First             // 使用上升沿指令(如P_ON或P_First)
OUT M1                  // M1置1(表示D0刚变为20)

// 检测D0从20变为21
LD M1                   // 如果上一步检测到D0=20
AND D0 21               // 且当前D0=21
OUT M2                  // M2置1(表示D0从20增加到21)

// 检测D0从21变为20
LD D0 21                // 如果D0=21
OUT M3                  // M3置1
LD M3                   // 检测M3的下降沿(D0从21变为非21)
AND P_Last              // 使用下降沿指令(如P_OFF或P_Last)
AND D0 20               // 且当前D0=20
OUT M4                  // M4置1(表示D0从21减少到20)

方法2:使用SUB指令和比较

ladder

LD M8000
MOV D0 D1               // 将D0的值复制到D1(上一次的值)
MOV D1 D0               // 更新D0的值

// 检测上升(20→21)
LD D1 20
AND D0 21
OUT M5                  // M5置1(20→21)

// 检测下降(21→20)
LD D1 21
AND D0 20
OUT M6                  // M6置1(21→20)

2. 西门子PLC(使用TIA Portal)

方法1:使用比较指令和边沿检测

ladder

Network 1: 检测D0=20
A     "DB1".D0          // 读取D0的值
L     20                // 加载比较值
==I                     // 整数比较
=     M0.0              // 结果存入M0.0

Network 2: 检测上升沿(20→21)
A     M0.0              // 上一次D0=20
A     "DB1".D0          // 当前D0的值
L     21
==I
FP    M0.1              // 上升沿检测
=     M0.2              // 结果存入M0.2(20→21)

Network 3: 检测下降沿(21→20)
A     M0.3              // 上一次D0=21(需额外逻辑记录)
A     "DB1".D0          // 当前D0的值
L     20
==I
FP    M0.4              // 上升沿检测(实际是下降沿逻辑)
=     M0.5              // 结果存入M0.5(21→20)

方法2:使用SCRT指令(状态控制)

ladder

// 定义状态字
A     "DB1".D0
L     20
==I
S     M0.0              // 状态位:D0=20

A     "DB1".D0
L     21
==I
S     M0.1              // 状态位:D0=21

// 检测状态变化
A     M0.0              // 上一次状态:D0=20
AN    M0.1              // 当前状态不是D0=21
=     M0.2              // 20→其他值(非21)

A     M0.1              // 上一次状态:D0=21
AN    M0.0              // 当前状态不是D0=20
=     M0.3              // 21→其他值(非20)

3. 欧姆龙PLC(使用CX-Programmer)

方法1:使用比较指令和边沿检测

ladder

LD D0
CMP K20                 // 比较D0和20
OUT M0                  // M0=1表示D0=20

LD M0
AND D0
CMP K21                 // 比较D0和21
OUT M1                  // M1=1表示D0从20变为21

LD D0
CMP K21                 // 比较D0和21
OUT M2                  // M2=1表示D0=21

LD M2
AND D0
CMP K20                 // 比较D0和20
OUT M3                  // M3=1表示D0从21变为20

方法2:使用微分指令(DIFU/DIFD)

ladder

LD D0
CMP K20                 // 比较D0和20
OUT M0

LD M0
DIFU M1                 // 检测M0的上升沿(D0从非20变为20)

LD D0
CMP K21                 // 比较D0和21
OUT M2

LD M2
DIFU M3                 // 检测M2的上升沿(D0从非21变为21)

// 结合逻辑判断20→21或21→20
LD M1
AND M3
OUT M4                  // M4=1表示20→21

LD M3
AND M1
OUT M5                  // M5=1表示21→20(需额外逻辑)

关键点总结

  1. 边沿检测:使用上升沿(P_ON/FP)或下降沿(P_OFF/FD)指令捕捉值的变化瞬间。

  2. 状态记录:通过辅助继电器(如M0)记录上一次的值,与当前值比较。

  3. 品牌差异

    • 三菱:P_ON/P_OFFDIFU/DIFD

    • 西门子:FP(正跳变)或SCRT状态控制。

    • 欧姆龙:DIFU/DIFD或比较指令组合。


推荐方案(通用逻辑)

  1. 使用两个辅助寄存器(如M0M1)分别记录“上一次值”和“当前值”。

  2. 通过比较指令检测具体变化(20→21或21→20)。

  3. 结合边沿检测确保动作只触发一次。

如果需要更具体的代码(如特定PLC型号),请提供详细信息!

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服