合信论坛

快捷导航
查看: 269|回复: 0

使用SM0.1上电初始化后面加上升沿后程序不执行的原因

[复制链接]

13

主题

14

帖子

1033

积分

高级会员

Rank: 3Rank: 3

积分
1033
发表于 2026-4-11 21:27:28 | 显示全部楼层 |阅读模式
PLC工作原理分析SM0.1与上升沿指令组合失败的根本原因
一、PLC扫描机制原理
合信PLC采用循环扫描工作方式,每个扫描周期分为三个阶段:
输入采样:读取所有输入状态并存储到输入映像区
程序执行:按顺序执行用户程序,访问映像区中的数据
输出刷新:将输出映像区的数据写入实际输出端口
二、SM0.1的内部实现机制
SM0.1是一个特殊的系统标志位,其内部实现基于扫描周期计数:
第一个扫描周期:系统检测到这是从STOPRUN的第一个周期,将SM0.1置为1
后续所有扫描周期:系统将SM0.1置为0
这种机制保证了SM0.1只在PLC启动后的第一个扫描周期为1
三、上升沿检测指令的工作原理
上升沿检测指令(P指令)的内部实现需要两个关键要素:
当前状态:当前扫描周期的输入值
前一状态:前一个扫描周期的输入值
比较逻辑:只有当"当前为1且前一状态为0"时,输出一个扫描周期的脉冲
四、组合使用时的内部执行过程
第一个扫描周期(PLC刚进入RUN模式)
系统将SM0.1置为1(因为这是第一个扫描周期)
上升沿检测指令检查:当前SM0.1=1,但前一状态是系统上电时的默认值(通常为0
关键问题:虽然当前为1、前一为0,看似满足上升沿条件,但由于系统标志位的设置与上升沿检测在同一个扫描周期内完成,存在时序上的细微差异,导致上升沿检测可能无法正确捕获这个状态变化
第二个扫描周期
系统将SM0.1置为0
上升沿检测指令检查:当前SM0.1=0,前一状态=1
判断结果:01为上升沿,10为下降沿,所以这次检测到的是下降沿,输出为0
后续扫描周期
SM0.1始终保持为0
上升沿检测指令检查:当前0,前一也是0
判断结果:00没有状态变化,输出为0
五、根本失败原因
功能重复:SM0.1本身就是在第一个扫描周期产生一个单次脉冲,这与上升沿指令要实现的功能完全重叠
时序错配:SM0.1的脉冲特性发生在扫描周期的早期阶段,而上升沿检测指令在程序执行阶段运行,两者的时间配合不匹配
状态存储冲突:上升沿指令需要存储前一周期的状态,但SM0.1的状态变化是一次性的,无法提供有意义的前后状态对比
逻辑设计矛盾:SM0.1的设计初衷就是作为初始化脉冲源,直接使用即可,不需要额外的边沿检测
六、正确的使用方式
由于SM0.1本身就具备"仅在第一个扫描周期为真"的特性,它本身就是最纯净的上升沿信号,直接使用SM0.1驱动后续逻辑即可,无需也不应该再加任何边沿检测指令。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

客服热线
400-700-4858 周一至周五:09:00 - 18:00
深圳市南山区打石一路深圳国际创新谷6栋A座9层

深圳市合信自动化技术有限公司(简称“合信技术”)成立于2003年,高新技术企业,专注于工业自动化产品的研发、生产、销售和技术服务,依靠高质量、高性能的自动化控制产品与方案为客户创造最大价值,立志于成为全球领先的工业自动化解决方案供应商。

Archiver|手机版|小黑屋|COTRUST Inc. ( 粤ICP备13051915号 )

GMT+8, 2026-6-14 22:16 , Processed in 0.019302 second(s), 21 queries .

快速回复 返回顶部 返回列表