回复:瓷砖分拣系统算法求教

hezk

  • 帖子

    371
  • 精华

    2
  • 被关注

    28

论坛等级:侠士

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2012-08-09 10:26:20

15楼

quote:以下是引用hezk在2012-08-08 16:59:06的发言:
本来想了一个思路,不过发觉芳季的方案更简单,程序好编点。

先说下我对芳季方案的解决方法。在第一个开关处操作员输入类别号,在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
TITLE=子程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
END_INTERRUPT_BLOCK
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。