13771165220
级别: 家园常客
精华主题: 0
发帖数量: 320 个
工控威望: 548 点
下载积分: 1588 分
在线时间: 83(小时)
注册时间: 2017-11-27
最后登录: 2024-03-21
查看13771165220的 主题 / 回贴
楼主  发表于: 2020-05-14 13:54
从M0---M19任何一个产生上升沿D0就加1,我用了很多ORP感觉程序看着不舒服。
大家有啥好主意吗?
anlyl2014
大吉大利
级别: 网络英雄
精华主题: 0
发帖数量: 968 个
工控威望: 8868 点
下载积分: 3062 分
在线时间: 894(小时)
注册时间: 2014-05-23
最后登录: 2024-05-17
查看anlyl2014的 主题 / 回贴
1楼  发表于: 2020-05-15 16:09
给你一个参考,这里是M0-M31共32位,有变化,D0会计数,当然,包括M0-M19.

楼主留言:
这个下降沿也会加的。
活到老,学到老!
微信号:anjjyy2013
添加时注明来自工控人家园
压缩包用WINRAR打开,没密码
anlyl2014
大吉大利
级别: 网络英雄
精华主题: 0
发帖数量: 968 个
工控威望: 8868 点
下载积分: 3062 分
在线时间: 894(小时)
注册时间: 2014-05-23
最后登录: 2024-05-17
查看anlyl2014的 主题 / 回贴
2楼  发表于: 2020-05-17 20:20
引用
引用楼主13771165220于2020-05-14 13:54发表的 如何简化一条指令 :
从M0---M19任何一个产生上升沿D0就加1,我用了很多ORP感觉程序看着不舒服。
大家有啥好主意吗?

楼主总觉得这不行、那不行,我们提供一些程序,只是如何简化程序,供你参考,那么,请问楼主你把你的程序发出来看看,能解决你说的这些问题吗?
例如:M0到M19同时有通,或者断开;如果M0-M19有两个或以上同时通,那么到底要加1或加2?若几个同时通,只加1,有什么实用意义?
如果不管什么时候,M0-M19有多少个接通都要实时计数,就没有说用ORP,并联输入能解决问题的,正确的做法是:M0--D1计数,M1-D2计数余类推,最后D1-D20相加结果存到D0,这样子不管何时来信号,都有加


程序例子,只写M0-M3,供参考。
[ 此帖被anlyl2014在2020-05-17 21:22重新编辑 ]
活到老,学到老!
微信号:anjjyy2013
添加时注明来自工控人家园
压缩包用WINRAR打开,没密码
anlyl2014
大吉大利
级别: 网络英雄
精华主题: 0
发帖数量: 968 个
工控威望: 8868 点
下载积分: 3062 分
在线时间: 894(小时)
注册时间: 2014-05-23
最后登录: 2024-05-17
查看anlyl2014的 主题 / 回贴
3楼  发表于: 2020-05-19 07:32
引用
引用第19楼13771165220于2020-05-18 16:50发表的  :
程序如下,从M202开始到M215只要任何其中一个中继检测到上升沿,必须有蜂鸣器响一下。这条程序不大没几步,如果步数多的话并联的点就比较多,所以想到这个问题。

看了楼主的程序,写了不少注解,这种习惯不错!没有硬件结构布局,我没办法理解是否可以达到你的设计目的,就你本贴而言,似乎你程序没写完,无法达到M202到M215有接通蜂鸣器就响一下这个功能要求!响一下,到底响多久也没写。
很多热心网友提供了不少写法供你参考,各有特点,总结一下,供你参考:
1.用FOR指令,循环法:实际上是不断扫描M0-M19是否接通,通就D0加1,要注意M0到M19不能一直通,只要有一个一直通就会不停计数;
2.比较法,就之前我写给你参考的那种,当然,你要的只是上升沿有效,只选择大于的情况是对的;要注意的是:比较法刚好与FOR循环刚好相反,M0-M19要一直实时给信号;
楼主留言:
真诚感谢!我参考参考。
活到老,学到老!
微信号:anjjyy2013
添加时注明来自工控人家园
压缩包用WINRAR打开,没密码