瓷砖分拣系统算法求教

图中是8工位瓷砖分拣系统示意图:
   蓝色是光电开关,瓷砖从左方入料口进入分拣系统,皮带输送,皮带在分拣出砖的时候不停止;
   总共有八种类别的瓷砖需要分类,当瓷砖经过左边第一个光电的时候,操作员通过操作屏将此瓷砖的类别输入PLC系统,比如属于第一类就输入1,以此类推。8个出砖工位分别对应8个瓷砖类别,各有一个光电确定瓷砖到了该工位,当属于这一工位类别时利用气缸将瓷砖推入出瓷砖机构进行出砖,反之瓷砖继续在瓷砖上输送,如果出砖机构还没结束本次出砖动作的时候,属于本类的瓷砖已经到达光电位置,则放弃此瓷砖,让皮带将其输送到系统做右方,即放弃分拣此瓷砖。同时,用户可以将几个工位设置成一个种类。
   我想了一下可以建立一个表格来管理瓷砖的种类,但是由于瓷砖可能不是连续进入的,而且同一种类的瓷砖有时会来很多片,这个从算法上怎么处理好一点。

问题补充:
图片

图片说明:

瓷砖分拣系统算法求教   

最佳答案

在第一个开关处操作员输入类别号,在1到8之间,建一个表,把类别号送入表中,类别号送入表中前进行处理,1变为00000001,2为00000010,3为00000100,依次类推。表格数据先入先出。
 
 当第一个开光触发时,从表头取值赋给vw0,如果v1.0为1,则出砖口1动作,然后vw0右移一位赋给vw2。
 当第二个开光触发时,若v3.0为1,则出砖口2动作,然后vw2右移一位赋给vw4。
 当第三个开光触发时,若v5.0为1,则出砖口3动作,然后vw4右移一位赋给vw6。
 后面以此类推。
 
 如果砖块未能出去,因为它代表的数据已经右移为0,所以即便传递后面也不会再触发任何一个出砖口。


程序如下,拷贝到一个文本文件里可以直接导入到编程软件里。
ORGANIZATION_BLOCK 主程序:OB1
TITLE=I2.0为类别检定电眼;I0.0-I0.7为1到8号砖块检测电眼,I1.0-I1.7为1到8号出砖机构检测电眼,为1代表机构正在出砖。
// vw200为表头,表长度在初始化定义时可根据工艺要求设定一个合适的表长,可以足够存储第一个类别识别电眼和1号出砖电眼之间的砖块数。
// vb100为上位机给定的类别号,1-8之间。
// vb1-vb8存放当前类别号。
BEGIN
Network 1 
// 初始化表,定义表长
LD     SM0.1
MOVW   6, VW200
AENO
FILL   0, VW202, 7
Network 2 
LD     I2.0
EU
DECB   VB100
Network 3 
// 把vb100中的1-8的类别号转变为00000001、00000010......类似的编码
LD     I2.0
EU
MOVB   1, VB101
AENO
SLB    VB101, VB100
AENO
BTI    VB101, VW102
Network 4 
// 编码填入表中
LD     I2.0
EU
ATT    VW102, VW200
Network 5 
// 一号出砖机构砖块到达,表中取类别编号
LD     I0.0
EU
FIFO   VW200, VW104
AENO
MOVB   VB105, VB1
Network 6 
// 若为1号砖,且出砖机构未运动,输出
LD     V1.0
AN     I1.0
S      Q0.0, 1
Network 7 
LD     I0.0
EU
SRB    VB1, 1
Network 8 
// 输出延时一段时间后自动复位,延时时间根据工艺调节。
LD     Q0.0
TON    T37, 50
Network 9 
LD     T37
R      Q0.0, 1
Network 10 
// 2号出砖
LD     I0.1
EU
MOVB   VB1, VB2
Network 11 
LD     V2.0
AN     I1.1
S      Q0.1, 1
Network 12 
LD     I0.1
EU
SRB    VB2, 1
Network 13 
LD     Q0.1
TON    T38, 50
Network 14 
LD     T38
R      Q0.1, 1
Network 15 
// 3到8号程序类似于2号。
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0

提问者对于答案的评价:
算法不错

专家置评

可参考“空气微凉 - 资深学长 ”的思路。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc299370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日 下午2:24
下一篇 2020年10月31日 下午2:24

相关推荐

  • 同一个网络中的指令是不是同时执行。

    一个网络中,我并联了2个指令,请问这个2个指令是不是同时执行。2个指令都是在网格的最左边就是两个加法运算指令,请问他们是不是同时执行 最佳答案 把梯形图转换为语句表格式,你看的就明…

    SIMATIC S7-200 2021年7月5日
  • S7-200PID向导

    在S7-200CN里面使用向导生成了两个PID回路,发现这两个PID共用同一个中断事件,然后实际测试的时候发现,干扰特别严重。(我是用模拟量输入模块作为反馈回路的点,模拟量输出模块…

    2021年7月5日
  • S7-200 轴运行状态

    是这样的  在S71200里  轴组态好后 可以在轴的数据块里找到一个点  他的意义是  …

    SIMATIC S7-200 2021年7月5日
  • 顺序控制指令输出不正常

    Network 1 LD     SM0.1R     &n…

    SIMATIC S7-200 2020年10月31日
  • s7-200与s7300通讯错误

    我在学校做实验时,把s7-300与em277用DP网络连接,终端电阻s7300端是ON,s7200是OFF.下载组态信息,BUSF一直在闪,SF灯亮.我不知是那里错了.请指点一下.…

    SIMATIC S7-200 2021年7月5日
  • 温度变送器与plc怎么转换

    231 一个 温度变送器 量程 -50—50 可以接0–50的pt100吗 如果能 plc程序的最大量程…

    SIMATIC S7-200 2017年11月20日
  • PC ACCESS 和CP243-1

    我严格按照CP243-1的快速入门配置了CP243-1,并在主程序中用SM0.0调用了ETHO_CTRL,用PPI电缆下载到CPU后,STEP MICRO还是连不上,软件…

    SIMATIC S7-200 2021年7月5日
  • s7200做从站,所传输数据类型

    我用的是cpu226做从站,前一部分都是实型数据,后面是位值,我在远方要把数据解析出来,请问对plc内的实型数据,我是不是远方应该选择单精度浮点型?低字低字节在前?到位的信息是不是…

    2017年7月25日
  • s7-200 SM0.0?

    请问S7_200程序中为什么经常用到SM0.0,特别是在子程序调用的时候,不用不可以吗? 最佳答案 200的语法要求:所有指令必须有一个以上的触点导引能流才能被触发使能。&nbsp…

    SIMATIC S7-200 2021年7月5日
  • S7-200 224 DCDC问题

    我想让加在电磁阀两端的电压由0~24V任意可调 I0.1增大,I0.2减小,调节DT两端电压 Q0.0输出,接三极管调节电磁阀DT两端电压0~24V …

    SIMATIC S7-200 2021年7月5日