xadzka
级别: 探索解密
精华主题: 0
发帖数量: 20 个
工控威望: 146 点
下载积分: 939 分
在线时间: 14(小时)
注册时间: 2013-10-05
最后登录: 2017-02-15
查看xadzka的 主题 / 回贴
楼主  发表于: 2015-04-16 15:21
[attachment=134084]
这是一个试验程序,X0是按纽设定初值,X1是时间继电器,Y015是时间继电器复位.M0到M3代表设备的4个工作状态.
原意是每当时间继电器接通瞬间 ,设备由前一个状态转换到下一个工作.
但实际运行起来当时间继电器上升沿来临时候,程序从语句3到语句18都执行了一遍,最后始终M0保持为1.
请教高手,这是为什么呢?
liaohianbin
成功=目标+坚持
级别: 略有小成
精华主题: 0
发帖数量: 192 个
工控威望: 295 点
下载积分: 2470 分
在线时间: 125(小时)
注册时间: 2014-08-29
最后登录: 2024-05-14
查看liaohianbin的 主题 / 回贴
1楼  发表于: 2015-04-16 18:22
这程序很明显的,按钮一按,程序条件一步步都成立了,最后结果只能以最后一条程序为准了。这个其实做个用时间继电器上升沿做个循环移动指令,按一个起动按钮,驱动M0,以后来一个上升沿,左循环一下就行
xadzka
级别: 探索解密
精华主题: 0
发帖数量: 20 个
工控威望: 146 点
下载积分: 939 分
在线时间: 14(小时)
注册时间: 2013-10-05
最后登录: 2017-02-15
查看xadzka的 主题 / 回贴
2楼  发表于: 2015-04-16 19:27
引用
引用第1楼liaohianbin于2015-04-16 18:22发表的  :
这程序很明显的,按钮一按,程序条件一步步都成立了,最后结果只能以最后一条程序为准了。这个其实做个用时间继电器上升沿做个循环移动指令,按一个起动按钮,驱动M0,以后来一个上升沿,左循环一下就行


为什么会一个周期内都一步步都成立呢? 比如第一周期,按纽按下后又松开M0置1,等时间继电器闭合X1变1的瞬间,程序扫描把M1置1的语句,但M1必须等刷新阶段才会置1,本周期内M1还根本不会变1,那么后面的语句根本不满足条件怎么可能执行呢? 只有下个周期读取阶段把M1已经是1的情况读出来,再等时间继电器闭合再次闭合程序扫描把M2置1的语句才能在输出阶段把M2置1吧。
ajiang_th
级别: 略有小成
精华主题: 0
发帖数量: 195 个
工控威望: 319 点
下载积分: 13575 分
在线时间: 319(小时)
注册时间: 2010-08-13
最后登录: 2024-05-17
查看ajiang_th的 主题 / 回贴
3楼  发表于: 2015-04-16 22:46
根本就不用高手来指点,这个程序只有神经有问题的人才会这样写。根本就是在勿扰人嘛。
   
级别: 探索解密
精华主题: 0
发帖数量: 48 个
工控威望: 145 点
下载积分: 695 分
在线时间: 23(小时)
注册时间: 2015-04-16
最后登录: 2016-03-17
查看   的 主题 / 回贴
4楼  发表于: 2015-04-16 23:00
因为你的M0 两次SET 了,就是两次输出,,,以最后一个为准
sjbandmm
级别: 略有小成
精华主题: 0
发帖数量: 236 个
工控威望: 406 点
下载积分: 985 分
在线时间: 167(小时)
注册时间: 2008-08-23
最后登录: 2024-04-22
查看sjbandmm的 主题 / 回贴
5楼  发表于: 2015-04-17 16:28
程序的顺序很重要,将第二行到第五行的顺序倒一下就能完美执行了,也就是将现在的第五行和第二行对调,第三行和第四行对调就可以了。
zhengf1989
级别: 略有小成
精华主题: 0
发帖数量: 141 个
工控威望: 272 点
下载积分: 684 分
在线时间: 482(小时)
注册时间: 2012-11-28
最后登录: 2023-12-02
查看zhengf1989的 主题 / 回贴
6楼  发表于: 2015-04-17 22:01
因为程序是从左到右,从上到下执行的,上面的结果影响到下面,所以一个周期每个状态都执行完了。每个状态的转移条件不一样,才会一个一个执行。