控制要求
1. 系统结构
-物料在传送带上移动。
-首先经过视觉系统,视觉系统识别物料型号(1~10),将数据发送给PLC。
-物料继续向前移动,经过各分拣口。
-每个分拣口有一个感应开关,检测物料是否到达该位置。
-当感应开关检测到物料时,如果该物料的目标气缸编号与当前气缸编号匹配,则气缸动作,将物料推入对应滑道。
2. 核心逻辑
-视觉识别物料型号 → PLC记录该物料的型号和“预期分拣位置”
-当物料经过第N号感应开关时,检查该物料的目标气缸是否等于N。
-匹配则气缸推出分拣,不匹配则继续前进。
3. 关键技术
-填表指令(AD_T_TBL):视觉识别的数据依次存入表格,形成队列。
-先入先出指令(FIFO):物料到达分拣区时,从表头取出最早进入的数据进行处理。
-指针和间接寻址:用于批量处理10个气缸的感应信号和输出。
I/O 分配表
内存变量分配
设计原理(核心思想)
1. 工作流程图
2. 队列存储原理
物料经过视觉系统时,将型号(1~10)存入表格。表格结构如下:
VW200 = 10 (表格最大长度)
VW202 = 3 (当前已存储3个物料)
VW204 = 5 (第1个物料:型号5)
VW206 = 2 (第2个物料:型号2)
VW208 = 7 (第3个物料:型号7)
.............
当感应开关触发时,FIFO指令从表头取出第一个物料的型号,进行匹配判断。
3. 感应开关与气缸匹配原理
-当第N个感应开关被触发时:
-从表格头部取出一个物料型号.
-如果型号 = N,则气缸N动作.
-如果型号 ≠ N,说明该物料不是这个气缸的,继续向后移动(实际程序中需要处理超时或错误情况)
4. 间接寻址的使用场景
在本程序中,10个气缸的状态检测和输出指令如果逐个编写,需要大量重复代码。使用间接寻址可以通过循环批量处理,大大简化程序长度。
梯形图程序
// 网络1:上电初始化(SM0.1仅执行一次)
// 初始化表格(长度为10,清空所有数据)
// 表格最大长度 = 10// 表格当前计数 = 0// 清空10个数据存储区
// 清除标志和输出
// 网络2:系统启停控制
// 网络3:视觉识别数据接收(填表)
// 当物料到达视觉位时,视觉系统将型号写入VW0,PLC读取并存入表格
// 视觉触发光电(上升沿)// 系统运行中
// 检查表格是否已满(VW202 >= VW200)
// 如果表格已满// 清除溢出标志(可选)
// 执行填表指令// 将VW0中的数据存入以VW200开头的表格
// 注意:AD_T_TBL指令执行后:// - 数据存入表格第一个空位
// - VW202自动+1
// 网络4:气缸动作定时器(用于控制气缸伸出时间)
// 网络5:气缸缩回控制(每个气缸动作0.5秒后缩回)
// 0.5秒到// 批量扫描10个气缸的输出位
// 网络6:感应开关触发处理(以1气缸为例,其他位置同理) // 当物料到达1感应开关时,读取表格数据,判断是否匹配 // 1感应开关// 检查表格是否有数据// 表格非空 // 执行FIFO指令,取出最早的数据
// 将表格中第一个数据移到VW230,其他数据上移
// VW230 = 当前物料的型号
// 判断物料型号是否匹配当前气缸
//其他位置同理
// 结构同网络6,将型号判断值改为对应气缸编号
// 篇幅限制,此处仅列出框架,实际需补全至10个气缸
工作流程演示
场景1:1号物料分拣
场景2:2号物料分拣
关键注意事项
总结
这个程序实现了10种物料从视觉识别到分拣的全自动化控制,核心采用 AD_T_TBL+FIFO 指令实现先进先出的物料队列管理。
本例 个人观点 ,内容仅供参考,请仔细甄别。
END
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!