技术论坛

 回复:输入点时间检测

返回主题列表
作者 主题
wangyw
侠客

经验值:678
发帖数:124
精华帖:0
楼主    2016-12-08 16:27:25
主题:输入点时间检测 精编帖 

我想用在家里热水系统循环泵控制,当水流开关动作时(作为输入信号),检测其动作时间,如大于2秒小于5秒则输出Q,如小于2秒或大于5秒则不动作,不知用LOGO 0BA6能否实现这个功能,谢谢

高山孤影
至圣

经验值:38591
发帖数:3518
精华帖:108
2楼    2016-12-08 17:12:24
精编帖  主题:回复:输入点时间检测

不做这一行,不太明白这个水流开关的原理。这个动作时间要是一个过程量的话,用DI点还真不好检测,毕竟初没有始的信号点可以检测。

最好是用带模拟量输出的水流传感器,用异步脉冲触发器将频率设定为1S,再经过计数、阈值触发等手段可以实现这个功能。或者干脆判断这个模拟量的变化速度,也可以满足楼主要求。

http://blog.163.com/xiuzhang_2000/
wangyw
侠客

经验值:678
发帖数:124
精华帖:0
3楼    2016-12-08 19:04:32
精编帖  主题:回复:输入点时间检测
谢楼上的解答,我是想用在热水循环泵上,主要功能是这样的,当打开热水龙头后,水流开关动作,如果水龙头在2到5秒内关闭,则开启循环泵一段时间,如果水龙头打开时间小于2秒或一直打开则循泵不动作。这个龙头打开时间倒可以检测,如用秒计数,但是好象没有数值比较功能块,想了一段时间了还是没办法,只能向大侠求助,想想LOGO应该能实现这个功能吧(水流开关就一干簧管接v点信号,水龙头一打开就接通)
高山孤影
至圣

经验值:38591
发帖数:3518
精华帖:108
4楼    2016-12-08 20:59:04
精编帖  主题:回复:输入点时间检测

哦,这样的动作机理检测起来并不算麻烦,计数值需要用算数指令来引用,并提供给模拟量阈值触发器作上下限的切换。

至于Q点打开的时间,相对来说就很简单了,楼主可以自己去做。

这是程序贴图:


这是源程序:

水流开关打开2-5sQ输出.zip

程序去掉计数器自动清零,简化如下:



http://blog.163.com/xiuzhang_2000/
wangyw
侠客

经验值:678
发帖数:124
精华帖:0
7楼    2016-12-09 07:55:39
精编帖  主题:回复:输入点时间检测

程序怎么打不开出错,Class not found: java.lang.ClassNotFoundException: DE.siemens.ad.logo.model.hardware.Logo8,这是什么意思?

高山孤影
至圣

经验值:38591
发帖数:3518
精华帖:108
8楼    2016-12-09 08:28:34
精编帖  主题:回复:输入点时间检测

下载后需要解压后打开,您的软件是什么版本的啊?我的是LOGO!8的绿色版,下载验证了,没问题啊。

http://blog.163.com/xiuzhang_2000/
高山孤影
至圣

经验值:38591
发帖数:3518
精华帖:108
9楼    2016-12-09 08:36:23
精编帖  主题:回复:输入点时间检测

在实际使用中,可以将自动清零部分去掉,这样,程序更简单,而且完全可以满足要求。贴图如下:

程序同样在4楼作了补充,以与原程序做比对。


http://blog.163.com/xiuzhang_2000/
高山孤影
至圣

经验值:38591
发帖数:3518
精华帖:108
10楼    2016-12-09 08:58:51
精编帖  主题:回复:输入点时间检测

呵呵,挺好玩吧,200也有这种FBD程序功能哈,玩过数电的,特别容易上手的。

http://blog.163.com/xiuzhang_2000/
HUANGZE75
至圣

经验值:68023
发帖数:12836
精华帖:122
11楼    2016-12-09 10:54:45
精编帖  主题:回复:输入点时间检测

LOGO是比较好玩的控制器,我04年左右玩过一下,简单的改进了一下程序,后面就没有使用了。

wangyw
侠客

经验值:678
发帖数:124
精华帖:0
12楼    2016-12-09 10:56:13
精编帖  主题:回复:输入点时间检测

我用的是V7.0绿色版的,可能版本问题吧,谢谢你这么详尽的帮助

高山孤影
至圣

经验值:38591
发帖数:3518
精华帖:108
13楼    2016-12-09 11:08:35
精编帖  主题:回复:输入点时间检测

是啊,我玩过很多了,一开始觉得这东东编程灵活,也界面很好玩,所以就玩上瘾了......

http://blog.163.com/xiuzhang_2000/
甫哥
至圣

经验值:10005
发帖数:1448
精华帖:72
15楼    2016-12-12 09:55:07
精编帖  主题:回复:输入点时间检测

   楼主您好。您的意思是不是:水流开关动作(打开水龙头)的时间在2至5秒内时 开泵,否则不开泵。开泵后延时关泵。

   这个不使用模拟量,用逻辑也可以实现(提供2个参考方案)。

  



20161212 回复 【求助】输入点时间检测 两个逻辑编程方案.rar

书山有路勤为径,学海无涯苦作舟;三人行,必有我师;森林之外的树木也能成才
甫哥
至圣

经验值:10005
发帖数:1448
精华帖:72
16楼    2016-12-12 10:04:36
精编帖  主题:回复:输入点时间检测

楼上程序中的M标志位不可以去掉,否则不会开泵。当然了,去掉后换成断电延时定时器也可以(设置很短的时间即可)。

楼上给出了M标志位的一种用途。

书山有路勤为径,学海无涯苦作舟;三人行,必有我师;森林之外的树木也能成才
高山孤影
至圣

经验值:38591
发帖数:3518
精华帖:108
17楼    2016-12-13 09:37:07
精编帖  主题:回复:输入点时间检测

还是喜欢第一套程序,虽然不如第二套简洁,但时间设置比较直观。甫哥所说的M点标志位的作用类似于200的扫描周期机理。

http://blog.163.com/xiuzhang_2000/
高山孤影
至圣

经验值:38591
发帖数:3518
精华帖:108
18楼    2016-12-13 10:04:14
精编帖  主题:回复:输入点时间检测

这个是用模拟量方法的补充,请参考:

上面的程序因为算数指令的程序为单独的程序段,所以无需加M点,要是用模拟量的话,推荐这个程序。下面的程序则必须加M标志位,因为算数指令之后的程序与上面的程序在一个程序段:


源程序:

水流开关打开2-5sQ输出2加延时.rar


http://blog.163.com/xiuzhang_2000/
蓝桥镇
侠士

经验值:1132
发帖数:59
精华帖:2
19楼    2017-03-03 13:52:26
精编帖  主题:回复:输入点时间检测

 

 

浦哥,我怎么越分析越糊涂呢,您帮忙看看,我什么地方分析的不对,哪里有理解误区呢,万分感谢!

蓝桥镇
侠士

经验值:1132
发帖数:59
精华帖:2
20楼    2017-03-04 08:11:37
精编帖  主题:回复:输入点时间检测

方案1中的标志位M1确实不能去掉,

如果去掉,程序第一次运行时:设B007接通,I1接通2-5秒钟内,则B001置位,B006置位,Q1动作;

但B001一旦置位后一直保持输出为1,B002的延时2S这个条件会被短接,即Q1动作过一次以后,只要B007接

通,不管接通几秒钟,都会使B006置位,Q1动作,显然这样的结果不是程序设计的初衷,这个M1是复位B001的(比置位信号晚一个周期),

就是说这个周期先置位B001继而使B006也置位,下个周期再复位B001,加个M1使置位、复位信号不要在同一周期出现,导致B001不输出。

高山孤影
至圣

经验值:38591
发帖数:3518
精华帖:108
21楼    2017-03-04 09:17:26
精编帖  主题:回复:输入点时间检测

关于能不能去掉,要从以下两种情况来分析:

标志位M1之所以不能去掉,是因为如果去掉,则RS触发器一直接通,没办法复位呀,没办法复位,就会导致在任意时间段,当水流开关动作触发下降沿时,Q点都会有输出,那楼主要求的2-5S输出还有什么意义呢?

如果将B007直接连接B004,则会导致无论开关怎么动作,Q点也不输出。因为RS触发器是复位优先的,所以,必须加M点使置位复位动作有一个0.1mS(一个扫描周期)的短间隔。

所以说,这个程序单单去关注扫描周期是不能完全去理解的,还要关注RS触发器的原理。

http://blog.163.com/xiuzhang_2000/
蓝桥镇
侠士

经验值:1132
发帖数:59
精华帖:2
22楼    2017-03-04 13:01:57
精编帖  主题:回复:输入点时间检测

谢谢高哥的回复!

您所说的“如果将B007直接连接B004,则会导致无论开关怎么动作,Q点也不输出。因为RS触发器是复位优先的,所以,必须加M点使置位复位动作有一个0.1mS(一个扫描周期)的短间隔。”

关于这一条我在“方案1”图片,最下面一行红色的字也标注过,和您说的是一个意思,原话是“如果去掉标志位M1,再短接B007输出至B004第一个输入端的线路,则B001的S端和R端同时输入1,B001复位,B006不能置位Q1"

您所说的”标志位M1之所以不能去掉,是因为如果去掉,则RS触发器一直接通,没办法复位呀,没办法复位,就会导致在任意时间段,当水流开关动作触发下降沿时,Q点都会有输出,那楼主要求的2-5S输出还有什么意义呢?“

关于这一条我在20楼也做过回复,和您说的也基本一个意思,原话是“方案1中的标志位M1确实不能去掉,

如果去掉,程序第一次运行时:设B007接通,I1接通2-5秒钟内,则B001置位,B006置位,Q1动作;

但B001一旦置位后一直保持输出为1,B002的延时2S这个条件会被短接,即Q1动作过一次以后,只要B007接

通,不管接通几秒钟,都会使B006置位,Q1动作,显然这样的结果不是程序设计的初衷,这个M1是复位B001的(比置位信号晚一个周期),”

再次感谢高哥的热心回复,谢谢。

蓝桥镇
侠士

经验值:1132
发帖数:59
精华帖:2
23楼    2017-03-04 13:52:34
精编帖  主题:回复:输入点时间检测

刚才又仔细分析了下,方案2中的标志位M2不能去掉,我原先的分析有误区。

B012是一个脉宽继电器,我分析时,总是下意识的将其当成断电延时的继电器,总认为一旦B011延时2S时间到了之后输出1,B012就也会输出1并保持3S钟;

实际情况不是这样,实际上用的是脉宽继电器,B011输出1,B012也立即输出1,但B011输出0,B012也立即输出0,如果B011输出一直为1,B012输出1的状态最多维持3S就会断开(B012设定断开延时3S),

B011 2S延时到了之后输出1(满足条件水流开关接通2S后开泵),B012也立即输出1(但最多只能输出3S),而此时B013刚收到一个下降沿信号,得等到下一个周期B013才会输出1,给B011,B012后面加上标志位M2,是为了下个周期再由M2输出1,到了下个周期B014两个输入端同时输入1,B010置位,Q2置1

如果不考虑超过5S不能输出的这个条件,将B12换为断电延时继电器,再取消M2,Q2也可以有输出的。

高山孤影
至圣

经验值:38591
发帖数:3518
精华帖:108
24楼    2017-03-04 14:54:00
精编帖  主题:回复:输入点时间检测

其实这个程序并不复杂,略一仿真就会明白了,看了一下您那个有红字的截图,截完后处理的太小了吧,有些模糊啊,看着吃力……

http://blog.163.com/xiuzhang_2000/
甫哥
至圣

经验值:10005
发帖数:1448
精华帖:72
25楼    2017-03-27 14:14:54
精编帖  主题:回复:输入点时间检测

方案1:程序分析

  一、水流开关动作时间小于2秒时:B7下降沿输出高电平,由于B2延时时间小于2秒,B1不置位。此时B8的2脚为低电平,则B6不能置位,Q1不输出。在下一个周期时M1输出1,对B1复位(因B1没有置位,此复位脉冲无意义)。

  二、水流开关动作(打开水龙头)的时间在2至5秒内时:

  1)当水流开关动作时间达到2秒时,B2输出高电平置位B1;

  2)在2至5秒内时水流开关断开:B7下降沿输出高电平,此周期内M1输出低电平。由于此时B1已经置位,B8输出高电平置位B6,Q1输出;

  3)在下一个周期时M1输出1,对B1复位(一个周期的时间);

  4)B5延时时间到时,B6复位,Q1停止输出。

三、水流开关动作(打开水龙头)的时间大于5秒时:

  1)当水流开关动作时间达到2秒时,B2连续输出高电平置位B1,B1输出高电平;

  2)当水流开关动作时间达到5秒时,B3连续输出高电平复位B1,由于是复位优先,B1输出低电平;

  3)5秒以后水流开关断开。B7下降沿输出高电平,由于B1输出低电平。此时B8的2脚为低电平,则B6不能置位,Q1不输出。

  4)在下一个周期时M1输出1,对B1复位(因B1没有置位,此复位脉冲无意义)。

方案二:程序动作分析

  一、水流开关动作时间小于2秒时:B13下降沿输出高电平,由于B11延时时间小于2秒,B11不置位。此时断电延时B12、M2输出低电平,B14的2脚为低电平,则B10不能置位,Q2不输出。

  二、水流开关动作(打开水龙头)的时间在2至5秒内时:

  1)当水流开关动作时间达到2秒时,B11、B12输出高电平,M2在下一周期后输出高电平

  2)在2秒(实际是 2秒再加一个程序周期的时间)至5秒内时水流开关断开:B13下降沿输出高电平,由于此时M2保持输出一个周期时间的高电平,B10置位,Q2输出;

  3)B9延时时间到时,B10复位,Q2停止输出。

三、水流开关动作(打开水龙头)的时间大于5秒时:

  1)当水流开关动作时间达到2秒时,B11、B12连续输出高电平,M2在下一周期后输出高电平

  2)当水流开关动作时间达到5秒时,B12输出低电平,M2在下一周期时及之后输出低电平

 3)当水流开关在5秒加一个程序周期之后断开时:B13下降沿输出高电平。由于此时M2已经输出低电平,则B14继续输出低电平,B10不置位,Q2的输出不动作。

书山有路勤为径,学海无涯苦作舟;三人行,必有我师;森林之外的树木也能成才
wangyw
侠客

经验值:678
发帖数:124
精华帖:0
26楼    2017-03-29 10:43:50
精编帖  主题:回复:输入点时间检测

谢谢各位大侠的热心帮助,最后我采取了这个方案,使用正常;

?水流开关2-5秒.zip


甫哥
至圣

经验值:10005
发帖数:1448
精华帖:72
27楼    2017-03-30 10:19:28
精编帖  主题:回复:输入点时间检测

条条大路通北京,26楼又一方案。

根据程序中的参数设置,水流开关的时间是1.5—4.5秒,不是2—5秒。原因:发出第一个计数脉冲的时间是0.5秒。

建议B003的脉冲宽度设置为0.99秒、脉冲间宽度设置为0.01秒。

书山有路勤为径,学海无涯苦作舟;三人行,必有我师;森林之外的树木也能成才
蓝桥镇
侠士

经验值:1132
发帖数:59
精华帖:2
28楼    2017-03-30 12:37:46
精编帖  主题:回复:输入点时间检测

(1)非常感谢浦哥这么耐心细致的讲解,论坛有了您这样热心的前辈,我们这些新手才能更快的成长。

(2)您在方案二:程序动作分析中,"断电延时B012..."而此处B012应该是一个“脉宽触发继电器”吧

        而您后续的分析又是按照脉宽触发继电器来分析的,这应该是笔误吧?

        断电延时的定时器,输入高电平,输出立即为高电平,若输入一直保持为高电平,输出也一直保持高电

        平,只有当输入变为低电平,且到了定时时间后,输出才为低电平。

(3)我初次接触LOGO,还是设备出现了软故障(三台泵变频恒压供水,一台泵变频常用,压力不够时第二

       台泵工频运行,到设定压力后停工频泵,三台泵可自动故障切换、72小时定时轮换投入,出现的故障是

       3#泵变频运行的接触器有时会频繁抖动,即接通后很快断开,再接通再断开,如此反复持续几秒至几十

       秒)查外围元件及硬件接线,都没问题,不得转头怀疑LOGO 的程序问题,后来尝试上载程序,并仿真

       查看,仿真时Q3有时也会出现抖动,基本确认程序72小时定时切换部分写得有问题,自己尝试修改,仿

       真和下载到我自己在家里面玩的LOGO里面都没问题。以后就慢慢的喜欢上LOGO。

       以前只接触过西门子200、300、PLC以及Wincc,触摸屏,都只会些皮毛,接触到LOGO后,我才知道自

       己需要什么了,再次感谢论坛里所有热心的老前辈,感谢您对于我们这些新手的无私帮助,谢谢。

甫哥
至圣

经验值:10005
发帖数:1448
精华帖:72
29楼    2017-03-30 16:13:00
精编帖  主题:回复:输入点时间检测

回28楼:

1)B012是【脉宽继电器】。输入高,输出立刻为高。输入高的时间小于“关断延时时间”设定时,输入由高变低,输出立刻变低。输入高的时间达到“关断延时时间”设定时输出立刻变低。输入高的时间超过“关断延时时间”设定时保持输出低。


没有【脉宽触发继电器】吧?有【沿触发脉宽继电器】


不是【关断延时定时器】,又名“断电延时定时器”;

2)【脉宽继电器】B012在“水流开关”连续动作后的2至5秒时间段输出高电平。

B011是【接通延时定时器】:输入高的时间小于设定时间时以及小于设定时间时变低,保持输出低。输入高的时间达到设定时间时立刻输出高,一直保持到输入变低时输出立刻变低。


三台泵变频恒压供水的程序还是比较复杂的。您做的这个程序【3#泵变频运行的接触器有时会频繁抖动....】,应是程序有漏洞。您怀疑是“72小时定时换泵”时出现问题,可将时间设置短一点进行仿真,可节约时间。如:设置一两分钟。在将要达到换泵时间时,【暂停】仿真,改为【一个周期一个周期的仿真】,并在每个周期观察、分析程序的执行情况(这个功能很有用的!);



书山有路勤为径,学海无涯苦作舟;三人行,必有我师;森林之外的树木也能成才
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。