首页 上一页 1 2 3 下一页 尾页

s7-200单位时间内计算次数的问题 点击:3352 | 回复:55



一品黄山

    
  • 精华:11帖
  • 求助:0帖
  • 帖子:754帖 | 9779回
  • 年度积分:0
  • 历史总积分:48262
  • 注册:2004年3月31日
发表于:2011-08-10 08:24:46
楼主

题目这样:

输入点4个:I0.0、I0.1、I0.2、I0.3;

输出点2个:Q0.0、Q0.1。

要求:若1分钟内4个输入点只要累计有9次输入脉冲信号,则输出Q0.0。

             若1分钟内4个输入点累计有15次输入脉冲信号,则输出Q0.1。
     程序越简洁越好。




miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2011-08-10 08:49:33
1楼
假如 1 分钟内 累计有 12个脉冲 是不是就 Q0.0,Q0.1都不输出?

kskstiy

  • 精华:0帖
  • 求助:1帖
  • 帖子:3帖 | 379回
  • 年度积分:0
  • 历史总积分:2649
  • 注册:2010年8月30日
发表于:2011-08-10 08:55:57
2楼

做个1分钟的中断,然后I0.0,I0.1,I0.2,I0.3并起来公用一个记数器。

当你的记数值等于9的时候输出Q0.0,当记数值等于15的时候输出Q0.1,然后关闭输出Q0.0

一品黄山

  • 精华:11帖
  • 求助:0帖
  • 帖子:754帖 | 9779回
  • 年度积分:0
  • 历史总积分:48262
  • 注册:2004年3月31日
发表于:2011-08-10 09:09:19
3楼
15次以里还是输出Q0.0。

ye_w

  • 精华:21帖
  • 求助:1帖
  • 帖子:69帖 | 5217回
  • 年度积分:0
  • 历史总积分:46739
  • 注册:2002年4月17日
发表于:2011-08-10 09:23:23
4楼

西门子200可以考虑使用I0.0~I0.3的上升沿中断+定时中断来完成。

shuilian

  • 精华:8帖
  • 求助:0帖
  • 帖子:238帖 | 1929回
  • 年度积分:0
  • 历史总积分:15326
  • 注册:2008年4月24日
发表于:2011-08-10 15:27:15
5楼
给个例子看看啊。                    

去留无意

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 138回
  • 年度积分:0
  • 历史总积分:660
  • 注册:2010年4月15日
发表于:2011-08-10 16:39:58
6楼

看起来很简单的题目,但是细琢磨发现有点难!

去留无意

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 138回
  • 年度积分:0
  • 历史总积分:660
  • 注册:2010年4月15日
发表于:2011-08-10 16:52:56
7楼
初步想法如下,将一分钟确定为60秒,每秒对应一个存储器,这个存储器记录当前秒内上升沿次数,让这60个存储器建立一个堆栈,先入先出,每秒中执行一次出栈(丢弃最初一秒的数据),执行一次压栈(压入刚过去一秒的上升沿次数),通过统计这60个数据的和,就知道当前一分钟内的脉冲量,从而做出决断;这种设计思路有可能会带来延迟,比如第一秒就有20个上升沿,可是必须等到一分钟后才能决断,可以做一些优化,同时也可以缩短时间间隔,比如100MS,不知道楼主是否要的是这个功能,如果是,思路有了,程序就容易了!

wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2011-08-10 16:53:06
8楼

楼主:1、你这1分钟是随意的1分钟?即任意连续出现9个(或15个)输入脉冲的间隔小于1分钟?还是启动后的1分钟?

            2、如果是连续的进行判断,是否是这样要求:当最后出现的输入脉冲与它相连续出现的前9个(或15个)输入脉冲的间隔小于1分钟,使Q0.0=1(或Q0.1=1),否则Q0.0=0(或Q0.1=0)。。。。

           这些问题应讲清楚才可考虑怎样编程。仅供参考。

去留无意

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 138回
  • 年度积分:0
  • 历史总积分:660
  • 注册:2010年4月15日
发表于:2011-08-10 17:00:40
9楼
使用每分钟的一次中断是不合理的,试想一下,比如第一分钟的最后一秒有上升沿8次,之前的59秒无上升沿,第二分钟的第一秒也有八次,其余59秒没有,那么按照这种做法,会判定两个一分钟都少于9次,实际上,分钟与分钟之间只是人为的设定了界限,这是不科学的,所以应该让这一分钟以一定间隔不断的向后"滑动",就像我上面提到的思路!

乔工

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 530回
  • 年度积分:0
  • 历史总积分:6371
  • 注册:2006年9月26日
发表于:2011-08-10 19:41:35
10楼
要求应该再详细些,要知道控制的目的是什么。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-08-10 21:32:13
11楼
也曾看过一个帖。那个帖是说指定时间内是否发生3个脉冲。说得很详细的了。可,找不到……

一品黄山

  • 精华:11帖
  • 求助:0帖
  • 帖子:754帖 | 9779回
  • 年度积分:0
  • 历史总积分:48262
  • 注册:2004年3月31日
发表于:2011-08-11 07:55:56
12楼
是随意的1分钟,只要在一分钟内发生9次或15次都会有输出。

一品黄山

  • 精华:11帖
  • 求助:0帖
  • 帖子:754帖 | 9779回
  • 年度积分:0
  • 历史总积分:48262
  • 注册:2004年3月31日
发表于:2011-08-11 08:03:48
13楼
这是一个磨机油站磨辊的位置信号,共计有4个磨辊,每个磨辊对应一个低位限位信号,即I0.0、I0.1、I0.2、I0.3;
对应两个输出信号,即Q0.0、Q0.1。
当磨辊处于低位时会有指示灯闪烁,但当1分钟内4个磨辊累计超过9次低位信号,则输出Q0.0报警。若超过15次则输出Q0.1发出停机信号。

虫子

  • 精华:0帖
  • 求助:1帖
  • 帖子:20帖 | 1062回
  • 年度积分:0
  • 历史总积分:3730
  • 注册:2009年8月01日
发表于:2011-08-11 08:29:11
14楼
学习一下                          

去留无意

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 138回
  • 年度积分:0
  • 历史总积分:660
  • 注册:2010年4月15日
发表于:2011-08-11 10:12:06
15楼
回复内容:
对:wyb2866255 关于

楼主:1、你这1分钟是随意的1分钟?即任意连续出现9个(或15个)输入脉冲的间隔小于1分钟?还是启动后的1分钟?

            2、如果是连续的进行判断,是否是这样要求:当最后出现的输入脉冲与它相连续出现的前9个(或15个)输入脉冲的间隔小于1分钟,使Q0.0=1(或Q0.1=1),否则Q0.0=0(或Q0.1=0)。。。。

           这些问题应讲清楚才可考虑怎样编程。仅供参考。

内容的回复:


这个思路更加灵活,与我的想法相结合,得出算法如下,使用中断(如果时序要求严格)或者通用程序中检测上升沿,建立一个先入先出的压栈结构,每发生一次上升沿记录一次当前时间,压入栈结构,同时检测与前面第9次的时间间隔是否有一分钟,再检测前面第15次时间间隔是否有一分钟,从而做出决断。这里有两个问题,一是,是栈结构,而非真正的栈,因为时常要检测两个时间间隔,即第9次与第15次,传统的栈不能从中间得到数据,故需要自己来写一个栈的算法;二,这个一分钟间隔向后滑动的时间是不确定的(两次上升沿的间隔),比如前面已经在一分钟内发生了20次上升沿,那么报警已经输出,下一次上升沿间隔了2分钟才来,结果导致这两分钟内都有信号输出,就不够客观了。这种算法优势是计算量较小---------我们都知道股票分析中最常用的一个指标叫做“均线”比如说20日均线,就是最新20天的平均值,向后推移一天后,增加一个新的值,同时舍弃最初的一个值,始终保持最近20天的平均值,然后将这些平均值用线连接起来!我想楼主需要的是一个类此均线的系统。

一品黄山

  • 精华:11帖
  • 求助:0帖
  • 帖子:754帖 | 9779回
  • 年度积分:0
  • 历史总积分:48262
  • 注册:2004年3月31日
发表于:2011-08-11 16:10:25
16楼
本来以为容易实现,听大家一说还这要好好考虑一下了。

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日

wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2011-08-12 00:29:17
18楼

        题目:输入点4个:I0.0、I0.1、I0.2、I0.3; 输出点2个:Q0.0、Q0.1。      控制要求:
       1、4个输入点分别有脉冲信号输入,其四路连续累计9个输入脉冲信号的时间间隔 < 1 分钟时。其输出Q0.0=1,否则Q0.0=0。
       2、4个输入点分别有脉冲信号输入,其四路连续累计15个输入脉冲信号的时间间隔 < 1 分钟时。其输出Q0.1=1,否则Q0.1=0。
       编程构思:当PLC出现的输入脉冲个数>=9(或15)后,每出现一个脉冲,PLC就判断它与它相连续出现的前9个(或15个)输入脉冲的间隔时间,如间隔时间小于1分钟,使Q0.0=1(或Q0.1=1),否则使Q0.0=0(或Q0.1=0)。

       梯形图:

        VW2是秒脉冲计数器,最大计时为65535,合65535÷3600=18.2小时,即该程序从启动开始,可连续工作18个小时,可以满足一个班次的时间。

robotH

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 688回
  • 年度积分:0
  • 历史总积分:2433
  • 注册:2004年10月14日
发表于:2011-08-12 08:59:40
19楼
这个题目作为14楼说的实际应用,其实很简单,以1分钟为时间段,判断信号是否到达设定数量即可。因为实际应用中不需要以任意时间段作为判断条件。如果作为趣味题目研究,可参考18楼说的帖子。

song1km

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2004年6月23日
发表于:2011-08-12 09:51:23
20楼

引用robotH 的回复内容:这个题目作为14楼说的实际应用,其实很简单,以1分钟为时间段,判断信号是否到达设定数量即可。因为实际应用中不需要以任意时间段作为判断条件。如果作为趣味题目研究,可参考18楼说的帖子。



如果“以1分钟为时间段,判断信号是否到达设定数量即可”那么每1分钟都需要做个判断,这样会有浪费资源,相反,只有累积到达9次,或者12次才做一次时间判断,这样会节省很多资源,因为毕竟正常运行的时候,出现错误的几率是少的。

因此:19楼的方法值得借鉴。


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 3 下一页 尾页