您现在所在的是:

PLC论坛

回帖:31个,阅读:19598 [上一页] [1] [2] [3] [4] [下一页]
9032
wanwan8778
文章数:2352
年度积分:48
历史总积分:9032
注册时间:2008/8/2
发站内信
发表于:2012/11/30 10:18:23
#0楼
请教各位高手:
    近日闲来无事,给自己找点事做,请各位抽空指点一二:
     RT,10个灯,每隔一秒亮一个
    这个功能倒是很容易实现,
最基本的第一个方法,堆一些定时器就可以了达到目的。

首先给各位陪个不是,我描述和写的都没表述清楚,
正常的逻辑是这样的,
第一个灯亮(保持为1直至停止),隔1s,第二个灯开始亮(保持为1直至停止),再隔1秒,第三个灯亮(保持为1直至停止),如此循环,
到最后是十个灯全亮; 按下停止,全灭。
我后来写的程序都是置位的指令。
所以,移位只能是亮一个灯,我想实现的是逐个点亮,而且每个均保持常亮直至停止。


第二个方法是一个定时器,一个计数器,
启动之后就开始定时,隔1s,计数器+1,
再隔1s,计数器再+1,
如此往复,也可以实现功能。

第三种方法,
我想用西门子300 的PLC,
在子程序FC1中编辑时间延时的程序,
OB1中调用FC1,
启动后,
第一个灯亮,调用FC1,隔1s
第二个灯亮后,再调用FC1,再隔1s
。。。
如此往复,上电后,第一次启动,由于FC1中计时器都为0,可以实现循环,
第二次已启动,其他灯都会亮
期间我尝试在调用结束后,将FC1中的时间清零,效果也不明显.

OB1 的程序段:

确保每次调用FC1时,都是不同的定时器
只需注意last_start和 nextstart

附件

附件

附件

FC1
附件


其他的方法,也可以用移位的指令来实现,

静待高手指点~~~

谢谢
[此贴子已经被作者于2012/11/30 21:22:37编辑过]
独学而无友,则孤陋而寡闻。
有问题,是必须要解决的。
Another complicated. Another mystery.
86078
ZCMY 版主
文章数:47535
年度积分:597
历史总积分:86078
注册时间:2004/3/16
发站内信
2018论坛贡献奖
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(三)
2016论坛优秀版主
2015论坛优秀版主
2014论坛优秀版主
2014相约国庆
2013论坛优秀版主
2012论坛优秀版主
2011论坛贡献奖
2010年论坛优秀版主
发表于:2012/11/30 12:30:36
#1楼
呵呵;程序能达到你的要求即可,不必纠结于用了多少步,用了什么提令;
1609
蓝天月亮
文章数:267
年度积分:50
历史总积分:1609
注册时间:2007/12/31
发站内信
发表于:2012/11/30 13:54:16
#2楼
用移位最简单了..
29037
秀空
文章数:13492
年度积分:529
历史总积分:29037
注册时间:2012/10/26
发站内信
2018春节活动(三)
2014相约国庆
发表于:2012/11/30 13:58:01
#3楼
以下是引用蓝天月亮2012/11/30 13:54:16的发言:
用移位最简单了..
9032
wanwan8778
文章数:2352
年度积分:48
历史总积分:9032
注册时间:2008/8/2
发站内信
发表于:2012/11/30 14:11:07
#4楼
以下是引用蓝天月亮2012/11/30 13:54:16的发言:
用移位最简单了..

期待你的程序
独学而无友,则孤陋而寡闻。
有问题,是必须要解决的。
Another complicated. Another mystery.
738
taolei36
文章数:24
年度积分:50
历史总积分:738
注册时间:2012/11/12
发站内信
发表于:2012/11/30 14:53:40
#5楼
像这种程序还是觉得移动指令来的要方便些
660
seasideman1958
文章数:159
年度积分:50
历史总积分:660
注册时间:2012/9/18
发站内信
发表于:2012/11/30 15:01:42
#6楼
大家都说位移好,哪位大侠画出来让我们新手学习学习。谢谢了!
14000
lvjun7258
文章数:1634
年度积分:50
历史总积分:14000
注册时间:2009/12/4
发站内信
发表于:2012/11/30 15:09:34
#7楼
使用计数器+比较指令快捷些:
附件:
[本地下载]
com
9032
wanwan8778
文章数:2352
年度积分:48
历史总积分:9032
注册时间:2008/8/2
发站内信
发表于:2012/11/30 15:25:36
#8楼
以下是引用lvjun72582012/11/30 15:09:34的发言:
使用计数器+比较指令快捷些:
附件:
[本地下载]

我的第二种方法是类似于这么做的,
只不过你的Q0.0  Q0.1 Q0.2...需要置位,
如果不置位的话,就只是闪一下了~~~
不过,
写程序总是比那些说空话的强多了
呵呵表情
独学而无友,则孤陋而寡闻。
有问题,是必须要解决的。
Another complicated. Another mystery.
37981
cvlsam 版主
文章数:12476
年度积分:592
历史总积分:37981
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2012/11/30 15:58:30
#9楼
你的第一种堆定时器实质上与第三种是一样的,第三种输入不同的定时器不就是堆定时器的方法么。
而第二种方式也就是使用编码译码指令。

上面的大虾已经说过了,移位指令,这里使用腾控的PLC给你做个8个灯循环点亮的例子,10个也类似,100个也差不多,只不过大于32位的使用位数组来实现而已。

之所以使用腾控,因为腾控给我寄了一个样机,另外腾控符合IEC61131-3标准,即使转换到其他厂牌也异常方便,不清楚你是否看得懂。
首先给灯输出赋初值:
附件
然后每秒移位,最后判断值等于第9个灯亮时,那么就给输出赋值。
附件

这里必须BS一下国产品腾控,他们的实际继电器输出并不能使用诸如三菱KnY或者西门子这种QW的方式输出,这是腾控的曲线,同样的程序,你可以在富士,研华甚至于菲尼克斯上使用毫无问题,如果使用三菱来编写,可能更简单,用西门子300系列的话,你也可以依样画葫芦。

Good Luck~

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

93.6006