『7x24小时有问必答』

控制算法要求如下:

用一按钮控制三组(或三个)灯,以达到控制灯的亮度。由 PLC 组成一个控制器,每按一次按钮增加一组灯亮;三组灯全亮后,每按一次按钮,灭一组灯;如果按下按钮的时间超过2s,则灯全灭。
输入/输出元件及控制功能表:
动作逻辑说明(通俗版):
按钮控制三组灯动作逻辑
状态转换图:
状态顺序表(先亮先灭)
核心编程思路
本程序需要实现两个核心功能:
1.短按切换:检测按钮上升沿(按下后松开瞬间),状态值按预设顺序变化
2.长按复位:检测按钮按下持续时间,超过2秒则强制归零
关键点:
使用状态值(0~6的特定序列)来管理当前灯的组合
使用定时器检测长按
使用上升沿检测短按
状态切换在按钮松开时执行(防止按住时连续跳变)
这是一个经典的单按钮多功能控制案例,包含短按循环切换和长按复位的功能。我们来完整实现这个程序。
200 SMART PLC 程序(西门子)
网络 1:按钮按下检测与长按定时
// :按钮按下时启动长按定时器
网络 2:短按脉冲生成(松开时触发)
// :按钮松开瞬间产生短按脉冲
网络 3:长按复位处理
// :长按超过2秒,全部熄灭
网络 4:状态切换逻辑(核心)
// :短按时状态值按预设序列切换
// 根据当前状态值决定下一个状态
网络 5:输出映射(状态值转换为输出)
// :根据状态值VB0控制对应的输出
// 状态值 = 0:全灭
// 状态值 = 1:只有L1亮
// 状态值 = 3:L1、L2亮
// 状态值 = 7:全亮
// 状态值 = 6:L2、L3亮(L1灭)
// 状态值 = 4:只有L3亮
优化版程序(使用查表法)
// ========== 优化版:查表法,代码更简洁 ==========
// 网络1:建立状态输出对应表(首次扫描执行一次)
LD       SM0.1                  // 首次扫描周期
MOVB    1600, VB100      // 状态0:全灭
MOVB    1601, VB101      // 状态1:L1亮
MOVB    1603, VB102       // 状态2:L1+L2亮
MOVB    1607, VB103      // 状态3:全亮
MOVB    1606, VB104      // 状态4:L2+L3亮
MOVB    1604, VB105       // 状态5:L3亮
// 网络2:按钮按下检测与定时
LD       I0.0
TON      T37, 20              // 2秒长按检测
// 网络3:长按复位
LD       T37
MOVB    0, VB0               // 状态指针归零
R         T37, 1
// 网络4:短按状态切换(使用递增方式)
LD       I0.0
ED                                // 松开按钮
AN       T37                    // 不是长按
LPS
INCB    VB0                    // 状态指针+1
LPP
LDB>=   VB0, 6                // 超过最大状态值(0~5共6个状态)
MOVB    0, VB0                // 回到0
// 网络5:查表输出
LD       SM0.0
MOVB    VB0, AC0            // 状态值放入累加器
MOVB    *(&VB100 + AC0), QB0   // 从表中取出对应的输出值写入QB0
变量表汇总:
状态与输出对应表;
调试步骤:
1.初始状态:上电后三组灯全灭
2.短按测试:
         第1次短按(按下后松开):L1亮
         第2次短按:L1、L2亮
         第3次短按:全亮
         第4次短按:L2、L3亮(L1灭)
         第5次短按:只有L3亮
         第6次短按:全灭
         循环重复
3:长按测试:
         任意状态下按住按钮不放,超过2秒
         所有灯立即全灭,状态归零
4.边界测试:
         快速连按:每次只变化一次状态
         按住不放:不会连续跳变
常见问题排查:
本例 个人观点 ,内容仅供参考,请仔细甄别。
   
                                              END                    

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码