请教,如何做到开关量信号的延迟同步? 点击:1014 | 回复:10



mxtconan

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2012年6月03日
发表于:2013-10-16 21:47:06
楼主

开关量信号以不同频率输入,延迟一段时间后,PLC以开关量输出。
比方说,X0按钮被按下三次,间隔为1S,3S,2S,那么Y0会在20S后(可变),分别以1S,3S,2S的时间间隔输出。
按钮可能不止被按下3次,次数可能非常多。
类似于,输入的脉冲在输出端的延迟再现。
不知道有没有高手能解答。




  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2013-10-18 00:20:46
1楼

取决于你的plc有多大可供变量使用的容量和变量间接访问的能力

还有就是啥时候是最后一个脉冲啊?

沈阳博思科技

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 162回
  • 年度积分:0
  • 历史总积分:869
  • 注册:2001年5月14日
发表于:2013-10-18 01:05:38
2楼

好做,如果需要可联系我,QQ 121808645

renstone

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 77回
  • 年度积分:0
  • 历史总积分:792
  • 注册:2010年9月25日
发表于:2013-10-18 10:23:25
3楼

检测上升沿,下降沿,使用计数器进行计数并保存。

从按钮按下(正跳变)开始计时,启动两个计数器,一个用于计算高电平时间(以PLC内部脉冲作为计数的基数),另一个计数器用于计算到下一次按钮按下的时间,下一次按钮的正跳变开始时保存计数。另外必须有一个方法来标识这个过程的开始和结束。这个需求有些奇怪,你怎么让人来操作以准确的给出脉冲时间,不知道你是一个怎样的应用状况。


第五纪冰川

  • 精华:3帖
  • 求助:5帖
  • 帖子:37帖 | 4224回
  • 年度积分:3
  • 历史总积分:12263
  • 注册:2005年2月18日
发表于:2013-10-18 12:23:50
4楼

最好的办法就是做一个50ms分辨率的FIFO,FIFO长度可变(就是20s可变)。

比如20s,那就需要20/0.5=400,400个长度的FIFO,每50ms记录一次X0的状态,每50ms取一次FIFO的最后一个位。

当需要改变延时时间时,改变FIFO的长度就可以。如果需要实时改变,就改变记录速度。

mxtconan

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2012年6月03日
发表于:2013-10-18 21:50:10
5楼

楼上几位,可能我的描述不太清楚,我把我的应用环境描述一下:

应用环境为传送带检测

X0为传送带入口处感知产品的光电传感器输入信号,Y0为良品的分类器(气嘴吹气)的触发信号。

我希望的动作是这样的:

产品经整列来到传送带入口处,X0检测到产品,经过一定延时后,触发检验装置,当检验装置给出良品信号后,产品流到分类器位置(Y0),并被吹至良品工位,如果不良品的话,检验装置没有任何输出,不良品经过Y0时也不会触发,并继续往下流,流至不良品工位。

如果是单件流的话非常简单,但问题是,在第一个产品还没有流到Y0的位置时,可能第二个活已经进来了,也就是说,在一个产品周期里可能有好几个活在流里了。


图片看一下可能比较清楚。

第五纪冰川

  • 精华:3帖
  • 求助:5帖
  • 帖子:37帖 | 4224回
  • 年度积分:3
  • 历史总积分:12263
  • 注册:2005年2月18日
发表于:2013-10-19 16:52:51
6楼

你这个和坛子上前几天讨论的那个汽车门喷漆生产线算法一模一样,还要简单些。

不复杂。

但你的系统还差个东西,传送带从动轴上安装一个编码器,用于检测传送带的速度,这个速度检测至关重要,因为你的传送带可能会变速运行。

需要精确的知道以下个距离参数,检验器到吹气头的距离L1。比如我们对系统的精度为1mm,传送带编码器精度为1mm/p(1毫米每个脉冲)。

取1个长度为L1/1mm的寄存器组A,比如长度为100mm,那么就有A1----A100。

当皮带开始运转时,每转过1mm就把检验器的状态读一次,结果存放到A1,下一个1mm脉冲到来就把A1移动到A2,再把检验器状态读到A1。总之,每转过1mm,就把A向后移动一次,这样不管皮带转动速度快慢,A1-----A100中的数据就是皮带从检验器到吹气装置这段皮带上物品的映射。至于产品距离变化与否,根本无需考虑。

 

比如检测器检测良品状态为1,不良品为0,那么吹气头只需要检测A100的数据,如果为1则吹气,为0则不吹气。

 

这样问题就搞定了。实际编程时比如有5米的距离,就会有5000个数据,如果每次都要移动5000次的话显然不方便,PLC速度也跟不上,那么就可以不移动数据,而只移动寄存器组的指针,每转1mm,指针就向后移动一次,把指向的数据取出来,这个数据就是吹气头的应该的状态,又把当前检测器的数据写入这个位置。指针指向A5000后,下一个1mm又跳会到A1。就这样循环下去。

 

第五纪冰川

  • 精华:3帖
  • 求助:5帖
  • 帖子:37帖 | 4224回
  • 年度积分:3
  • 历史总积分:12263
  • 注册:2005年2月18日
发表于:2013-10-19 17:28:23
7楼

当然,当距离比较远时这种方法会比较耗费PLC的资源。

其实也还有其它的方法来做,仍然以5米的距离为例。比如这段距离上的物品数量为有限个数时,比如最大也就不过50个物品。那么也可以取50个计数器C1---C50(不是真的使用PLC的计数器资源,可以用寄存器数据+1和大小判断来模拟计数器),我们把C理解为一个牌子,就像你在单位表现好,年底来了老板给的支票。每经过一个物体时我们就判断他是否是良品,是良品就发给他一个支票(计数器)。从C0开始,直到C50。当物品到达喷气口后(银行),有C(支票)的就交给给检验器,检验器就把C(支票)收了,并给你钱(开气)。

 

当然,没有支票的不用管他,随皮带到废品站。

 

被银行收了的牌子有还到检验器那里发给即将到来的物品。

 

现在就来看如何来运行的。比如物品W1经过检验器,被判断为良品,那么就把C1给他。现在开始,皮带每转过1mm,就把C1+1。

 

假如皮带运行20mm后(此时C1=20了),又一个物品W2到来,被判断为不良品,对于这种不认真工作的人,我们不管他,不发给他牌牌。

 

皮带又运行了10mm(此时C1=30了),又来一个物品W3,被皮带为良品,那么就把C2给他。和C1一样,每转给1mm,就把C2+1。

 

如此,如此,,,,

 

当第一个物品C1=5000时,证明到达喷气口了,开动喷口把他吹到良品区。

 

仅仅过了10mm,那个W2由于没有C,所以喷口不动作。

 

这下明白了吧。

mxtconan

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2012年6月03日
发表于:2013-10-19 21:47:57
8楼

引用 第五纪冰川 的回复内容: 当然,当距离比较远时这种方法会比较耗费PLC的资源。其...


谢谢了~~~我有个问题

检验器到吹气头的距离L1-----》有无可能使用时间延迟替代?使用某个延时继电器来控制。

在皮带速度一定的情况下,我们可以知道检验装置移动到吹气位置的时间T1,也就可以这么认为,检验装置发出良品信号后,经过时间T1,就会吹气,如果没有良品信号,则忽略吹气,产品直接掉落,当然,上一个产品运行的周期里,下一个产品也会进来。有无可能?


第五纪冰川

  • 精华:3帖
  • 求助:5帖
  • 帖子:37帖 | 4224回
  • 年度积分:3
  • 历史总积分:12263
  • 注册:2005年2月18日
发表于:2013-10-20 17:05:21
9楼

回复内容:

对: mxtconan  引用 第五纪冰川 的回复内容: 当然,当距离比较远时这... 内容的回复!


 如果皮带速度不变,或变化不大,当然可以用时间继电器了。

renstone

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 77回
  • 年度积分:0
  • 历史总积分:792
  • 注册:2010年9月25日
发表于:2013-10-22 11:51:37
10楼

我的想法是这样,建立一个先入先出队列,根据检验装载的测试结果在队列中加入0或者1作为标志位,在吹气位增加一个光电传感器,光电传感器每检测到一个工件时,读取队列的队头的数据,若为1吹气阀开,吹物料。队列为满时,则暂停添加物料。不知你的检测装置是什么,需要多长时间得出结论,这期间传送带是暂停还是继续运动。


热门招聘
相关主题

官方公众号

智造工程师