QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 3591|回复: 25
收起左侧

[讨论结束] 请教一个较难的PLC编程问题

 关闭 [复制链接]
发表于 2008-10-30 20:43:56 | 显示全部楼层 |阅读模式 来自: 中国浙江宁波

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
如何在西门子PLC中实现如下功能:+ Y& c1 v5 ]: T

" e3 c6 s0 q$ \8 O    在整个运行中,若20秒钟内如出现5次某一触点信号输入,实现一个输出。运行时持续检测上述工况是否出现。
) {5 f2 j/ }0 J# H   (这里定时器好像不好用,我要的是计时器,且可能要用到先进先出的队列)
8 i  d1 b" N+ M0 f5 M" S2 \  i" e/ H  H- i
如何编程实现,望指教。
发表于 2008-10-31 12:12:37 | 显示全部楼层 来自: LAN
我不知道哦,帮你顶顶
发表于 2008-10-31 15:48:16 | 显示全部楼层 来自: 中国湖北襄阳
可以用中断嘛,若20秒钟内如出现5次某一触点信号输入则产生一次中断,在中断程序里面设置输出,就OK了
 楼主| 发表于 2008-10-31 21:16:35 | 显示全部楼层 来自: 中国浙江宁波
我要问的问题就是:9 a0 ]  e/ i, Q+ j' O8 l; y

* A4 }8 M3 Y' {% D: Z8 N& k7 G0 z    如何实现20秒钟内出现5次某一触点信号输入即产生一个输出。
: A" E4 O) q0 U   (关键在20秒 时间 内5次信号的识别)!!!
! B& J8 J; t% ]4 p( q  l; [9 B, e   如果用定时器的话,只能把时间切分为一个个20秒,但如果出现在第一个20秒没有达到5次输入,但在第一个和第二个之间有5次输入,就检查不出来。
# V% V8 r/ p% d+ ~' G8 b8 t! j+ n) {7 P' W; o
   望指教!
发表于 2008-11-1 10:04:04 | 显示全部楼层 来自: 中国广东广州
可能要做5个定时器了。2 u2 r4 H2 r. s$ f2 O) N
RUN后的第一次信号输入,开始T0计时,20秒内看有没有5次(T0用于第一次、第六次、第11次。。。。下面的一次类推,20秒到了后就复位重新开始计数了)$ n1 P: }2 j$ s0 U/ A2 t6 ~  P  B
       第二次信号输入,开始T1计时. s! X( r5 L/ u: B6 f: j
     第三次信号输入,开始T2计时; w$ a' x* K: S5 _- |
    第四次信号输入,开始T3计时
. g5 J; ^5 ^: D. _   第五次信号输入,开始T4计时
5 x' `. e3 ^9 o5 G) Z6 O比如第一次与第五次之间是21秒,但是第二次与第六次之间为19秒,这样就可以通过T1来识别了。不会漏掉8 y- o% S% L/ K( a( L3 u
注意定时复位定时器就可以了。
发表于 2008-11-1 17:51:21 | 显示全部楼层 来自: 中国陕西汉中
用计数器C1计数来处理5次输入,用定时器T1来控制20s延时,如果C1=5 and T1=1,z则输出一个结果,然后用定时器T2来控制输出结果时间,同时T1,C1复位重复工作即可.
发表于 2008-11-1 18:38:50 | 显示全部楼层 来自: 中国四川成都
同意楼上的说法   就是两个条件同时满足  
3 v  Q8 a- u5 y/ ^6 W' X' d
+ D9 n1 n7 h" ]7 z1 h! m$ F: p* f  若T1小于20秒  M0接通    计数器到5     C0接通, s8 p$ O/ w: J& Q
      
. H- B0 Q% D3 ^2 k/ p6 l  ------11----------11-------------Y0
9 k/ a7 }0 f% ^- l            M0             C0
发表于 2008-11-1 19:09:39 | 显示全部楼层 来自: 中国浙江温州
是有点 难度哦 titter
 楼主| 发表于 2008-11-1 20:51:30 | 显示全部楼层 来自: 中国浙江宁波
二楼的方法好像可以。但不太现实。为什么呢。
( r; q% o" X8 ~) x( o如果我要实现1分钟20次,那我不就要做20个定时器了吗?!!!; u- y* x8 s1 d3 i& X

1 u4 T( b, H  P三楼和四楼的方法,恕我愚钝,还不太能理解。感觉太简单,实现不了。呵。 望深解之。
发表于 2008-11-2 18:22:44 | 显示全部楼层 来自: 中国天津
用上升沿计数  闭合一次记一次数 设定五次输出
发表于 2008-11-2 21:04:18 | 显示全部楼层 来自: 中国江苏常州
还没学,帮你顶下
发表于 2008-11-3 09:59:23 | 显示全部楼层 来自: 中国山东青岛
好像有个指令 是三菱 的pls 也就是 10楼说的 上升沿触发命令
 楼主| 发表于 2008-11-3 20:17:43 | 显示全部楼层 来自: 中国浙江宁波
我要的是20秒5次, 不是单单的5次计数,!
发表于 2008-11-3 20:57:41 | 显示全部楼层 来自: 中国广东韶关

我知道怎样做

能否给点积分
发表于 2008-11-3 21:05:03 | 显示全部楼层 来自: 中国广东韶关
你可以用系统时间,设置5个变量,s1、s2、s3、s4、s5每个脉冲来时记忆当时系统时间,以s5-s1<=20,输出,然后s1=s2,s2=s3,s3=s4,s4=s5,s5等于第六个脉冲,不停循环。
发表于 2008-11-4 00:38:16 | 显示全部楼层 来自: 中国上海

回复 1# 超海天一色 的帖子

不太懂,仅供参考!2 O4 O2 {  F0 Y+ m9 |& k
20秒内,I0.0 五次输入,Q1.0一次输出,不知道对不对。/ t( w# A: H- J* q. [

% P: J6 {4 T8 ^( j! f* r' J[ 本帖最后由 evtepe 于 2008-11-4 00:42 编辑 ]
20秒钟内如出现5次某一触点信号输入,实现一个输出.jpg
screenshot.jpg
发表于 2008-11-4 20:16:01 | 显示全部楼层 来自: 中国广东韶关
原帖由 zhg309 于 2008-11-3 21:05 发表 http://www.3dportal.cn/discuz/images/common/back.gif& ~* G3 {& V! P- y4 I% X8 C3 j0 ^
你可以用系统时间,设置5个变量,s1、s2、s3、s4、s5每个脉冲来时记忆当时系统时间,以s5-s1

$ P8 Q2 `7 n8 [9 ^/ r
, K7 M* }1 N( l- q7 x0 X. J0 ?
, W% @- Y4 {" ]! b( A& q& N
% e6 m- p3 s! M' a这个主意好,我本来还只想到用一个定时器计时,用四个地址记录间隔时间,如果他们的时间和小于20S就输出,用堆栈最好(就是要把最早的时间替换为最近的时间),不过不知道PLC中有吗, v9 j( ~1 w4 g) a+ q
8 r0 K4 G! s2 a" i: M0 P
[ 本帖最后由 wjx6205 于 2008-11-4 21:43 编辑 ]
发表于 2008-11-5 17:28:22 | 显示全部楼层 来自: 中国山东淄博

回复 6# ahxinny 的帖子

正确的很!!!!
发表于 2008-11-15 22:02:49 | 显示全部楼层 来自: 中国上海
想问一下兄弟解决了吗?想问问如何解决的?
发表于 2008-12-3 17:38:06 | 显示全部楼层 来自: LAN
同意采用记录时间时隔的方法是目前我可以想到的最好的方法。
7 S$ S0 j  s( a+ b不过我认为楼主如能深入分析一下具体工况,或许不用引出这么复杂的问题。
发表于 2008-12-4 15:39:08 | 显示全部楼层 来自: 中国浙江绍兴
有难度,好好考虑以下
发表于 2008-12-12 11:00:12 | 显示全部楼层 来自: 中国江苏盐城
楼主解决了的话,希望分享下,小弟也想学习下!!!
发表于 2008-12-18 20:04:19 | 显示全部楼层 来自: 中国河南南阳
非要用西门子的吗,用三菱的PLC行吗
发表于 2008-12-22 10:27:10 | 显示全部楼层 来自: 中国北京
长了见识,不错不错!
发表于 2008-12-22 17:12:35 | 显示全部楼层 来自: 中国河北唐山
利用20S计时器的上升沿给计数器清零,然后开始计数,在计时器下降沿是判断计数器是否大于5即可。
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表