QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在西门子PLC中实现如下功能:
- F5 ?& V& b; l( }, ]! z  E) L8 I7 \& W8 e& G5 K$ b8 A, e
    在整个运行中,若20秒钟内如出现5次某一触点信号输入,实现一个输出。运行时持续检测上述工况是否出现。
3 x9 c9 M- m) x/ X9 C   (这里定时器好像不好用,我要的是计时器,且可能要用到先进先出的队列)4 B9 f5 [+ c$ ?, }

; `9 S$ q  f) X/ Z4 [- i% c5 y" e& }如何编程实现,望指教。
发表于 2008-10-31 12:12:37 | 显示全部楼层 来自: LAN
我不知道哦,帮你顶顶
发表于 2008-10-31 15:48:16 | 显示全部楼层 来自: 中国湖北襄阳
可以用中断嘛,若20秒钟内如出现5次某一触点信号输入则产生一次中断,在中断程序里面设置输出,就OK了
 楼主| 发表于 2008-10-31 21:16:35 | 显示全部楼层 来自: 中国浙江宁波
我要问的问题就是:
4 ]- E, l3 @1 R. e4 p0 W- l0 s
    如何实现20秒钟内出现5次某一触点信号输入即产生一个输出。( Y" E3 m/ D0 u, o$ R6 j1 x" p% g6 x
   (关键在20秒 时间 内5次信号的识别)!!!
, u4 p. g: e4 n) K! X   如果用定时器的话,只能把时间切分为一个个20秒,但如果出现在第一个20秒没有达到5次输入,但在第一个和第二个之间有5次输入,就检查不出来。; p  u" k8 ^* L+ K2 u  w

  H# k9 |8 k& c5 _   望指教!
发表于 2008-11-1 10:04:04 | 显示全部楼层 来自: 中国广东广州
可能要做5个定时器了。
8 C7 J: [  J4 @3 A; CRUN后的第一次信号输入,开始T0计时,20秒内看有没有5次(T0用于第一次、第六次、第11次。。。。下面的一次类推,20秒到了后就复位重新开始计数了); \" F' ~% v% c3 Q9 a  r9 x& ^9 E
       第二次信号输入,开始T1计时
( D' r5 r* r. v     第三次信号输入,开始T2计时4 D$ R; W# e/ b; s& o
    第四次信号输入,开始T3计时. j9 d0 ?7 _' f! G5 D' g& L
   第五次信号输入,开始T4计时
: M7 W% C3 S5 D% Y3 T% T; C比如第一次与第五次之间是21秒,但是第二次与第六次之间为19秒,这样就可以通过T1来识别了。不会漏掉
' X# A2 ]+ ^: ~注意定时复位定时器就可以了。
发表于 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 | 显示全部楼层 来自: 中国四川成都
同意楼上的说法   就是两个条件同时满足  ; h( u3 l* z+ [/ [

+ Q6 S' S/ ^0 A% S  若T1小于20秒  M0接通    计数器到5     C0接通
+ ~0 c# A" v3 B/ c      7 i; k! `# A; g. Z3 y- {( `# C, w
  ------11----------11-------------Y0
, q: V9 ^' F% D& t% t! M  u! U            M0             C0
发表于 2008-11-1 19:09:39 | 显示全部楼层 来自: 中国浙江温州
是有点 难度哦 titter
 楼主| 发表于 2008-11-1 20:51:30 | 显示全部楼层 来自: 中国浙江宁波
二楼的方法好像可以。但不太现实。为什么呢。
& d" `8 j3 E. O1 }' J5 [& N+ o. M* a  S7 Y如果我要实现1分钟20次,那我不就要做20个定时器了吗?!!!1 y, p# |  I- C. m' ?
4 ]0 J& k, i! ~: y
三楼和四楼的方法,恕我愚钝,还不太能理解。感觉太简单,实现不了。呵。 望深解之。
发表于 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# 超海天一色 的帖子

不太懂,仅供参考!  s5 D: J' Y8 Y; r. l
20秒内,I0.0 五次输入,Q1.0一次输出,不知道对不对。. J& F! }8 y8 k: I4 |& \4 b

5 X0 |2 M$ a3 ~[ 本帖最后由 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
4 x0 X2 x) X! x% D你可以用系统时间,设置5个变量,s1、s2、s3、s4、s5每个脉冲来时记忆当时系统时间,以s5-s1

. m" p5 P! ?2 ~3 u% J) T8 R' f4 E$ k& y! E1 j2 h& S  p

7 M4 X, W9 ?" u
  r3 ?4 y9 X$ a# z' \- i这个主意好,我本来还只想到用一个定时器计时,用四个地址记录间隔时间,如果他们的时间和小于20S就输出,用堆栈最好(就是要把最早的时间替换为最近的时间),不过不知道PLC中有吗5 S( Y. V3 a; k0 Z1 ^

; H0 w( M$ X: h[ 本帖最后由 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
同意采用记录时间时隔的方法是目前我可以想到的最好的方法。! G" t' {! B% T3 Y: @) `
不过我认为楼主如能深入分析一下具体工况,或许不用引出这么复杂的问题。
发表于 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 )

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