转盘筛选机 汇川的伺服驱动器和伺服电机 一个上料触发传感器 三个相机分布角度相差50度以上 三个剔除工位分布相差80度以上 剔除工位分别是OK剔除 NG剔除 X剔除 转盘一直转 每分钟通过280到300个产品 三个相机不均匀分布 不同步拍照 确保相机拍到的是同一个产品 确保收到的剔除信号是同一个产品的 剔除精准 视觉给PLC依次发送三个剔除信号 这个怎么保证在第一个产品的三个信号还没有发送完 第二个产品又发送了一个剔除信号 怎么确保不会影响第二个产品的判断 用先入先出编写梯形图程序 (PLC是汇川Easy521-0808TN扩展模块是DL20-0008ETN,编程软件是AutoShop,变量名转化为中文)
1条回答 默认 最新
檀越@新空间 2026-03-13 15:04关注下午好🌅🌅🌅
本答案参考通义千问针对您描述的视觉筛选机PLC程序设计问题,涉及以下关键点:
- 转盘持续旋转(每分钟280-300个产品)
- 三个相机不均匀分布、不同步拍照,确保每个产品被拍到一次
- 三个剔除工位(OK/NG/X)
- 视觉系统发送三个剔除信号,但可能在第一个产品的三个信号未完成时,第二个产品已触发
- 需要使用“先入先出”逻辑来保证剔除信号与产品对应
- 使用汇川Easy521-0808TN + DL20-0008ETN扩展模块,编程软件为AutoShop
- 变量名需转化为中文
✅ 一、核心需求分析
1.1 视觉信号与产品同步
- 每个产品通过相机区域时,必须被准确识别,并记录其状态
- 视觉系统发送三个剔除信号,但需确保这些信号属于同一个产品
1.2 避免信号覆盖
- 在第一个产品的三个信号未处理完时,第二个产品又触发了新的剔除信号
- 需要排队机制(FIFO队列)来处理这些信号
1.3 剔除工位动作控制
- 三个剔除工位分别执行 OK、NG、X 剔除动作
- 必须根据产品类型和剔除信号精准触发对应的剔除装置
✅ 二、解决方案(梯形图逻辑)
2.1 系统结构设计
2.1.1 硬件配置
- 主PLC: 汇川 Easy521-0808TN
- 扩展模块: DL20-0008ETN
- 传感器: 上料触发传感器(用于启动流程)
- 相机: 三个相机(角度相差50度以上)
- 剔除装置: 三个剔除工位(OK、NG、X)
2.1.2 变量定义(中文命名)
| 变量名 | 类型 | 功能说明 | |------------------|--------|-----------------------------------| | 上料触发信号 | I | 输入信号,表示产品进入检测区 | | 相机1_触发信号 | I | 相机1检测到产品 | | 相机2_触发信号 | I | 相机2检测到产品 | | 相机3_触发信号 | I | 相机3检测到产品 | | 视觉_剔除信号1 | Q | 视觉系统发出的第一个剔除信号 | | 视觉_剔除信号2 | Q | 视觉系统发出的第二个剔除信号 | | 视觉_剔除信号3 | Q | 视觉系统发出的第三个剔除信号 | | OK_剔除装置 | Q | OK剔除装置动作输出 | | NG_剔除装置 | Q | NG剔除装置动作输出 | | X_剔除装置 | Q | X剔除装置动作输出 | | 产品计数器 | D | 当前检测的产品数量 | | 信号队列 | M | 存储剔除信号的队列(FIFO) | | 队列指针 | D | 当前处理的队列位置 |
2.2 程序逻辑设计
2.2.1 初始化与上料触发
- 上料触发信号触发后,开始一个产品检测周期
- 产品进入检测区,开启计数器并等待相机触发
[LD] 上料触发信号 → [SET] 产品计数器 = 12.2.2 相机触发逻辑
- 任一相机触发后,记录当前产品编号,并将剔除信号存入队列
- 确保每个产品只被处理一次
[LD] 相机1_触发信号 → [MOV] 产品计数器, 信号队列[0] [LD] 相机2_触发信号 → [MOV] 产品计数器, 信号队列[1] [LD] 相机3_触发信号 → [MOV] 产品计数器, 信号队列[2]📌 注意:此处应根据实际相机触发顺序进行判断,避免重复存储。
2.2.3 FIFO队列处理
- 使用一个队列指针来管理信号的处理顺序
- 每次处理一个信号后,指针递增,并清空当前信号
[LD] 队列指针 = 0 → [MOV] 信号队列[0], 视觉_剔除信号1 [LD] 队列指针 = 1 → [MOV] 信号队列[1], 视觉_剔除信号2 [LD] 队列指针 = 2 → [MOV] 信号队列[2], 视觉_剔除信号32.2.4 剔除信号处理
- 根据剔除信号内容,触发对应的剔除装置
- 处理完成后,重置信号并更新队列指针
[LD] 视觉_剔除信号1 → [SET] OK_剔除装置 = 1 [LD] 视觉_剔除信号2 → [SET] NG_剔除装置 = 1 [LD] 视觉_剔除信号3 → [SET] X_剔除装置 = 1⚠️ 注意:剔除装置动作应有延时,防止误操作或设备损坏
2.2.5 队列指针更新
- 每次处理完一个信号后,指针自增,循环使用
[ADD] 队列指针, 1 → [MOD] 队列指针 = 3 → [MOV] 队列指针, 0
✅ 三、代码示例(AutoShop梯形图逻辑)
以下是部分简化版的梯形图逻辑(中文变量名):
[LD] 上料触发信号 → [SET] 产品计数器 = 1 [LD] 相机1_触发信号 → [MOV] 产品计数器, 信号队列[0] [LD] 相机2_触发信号 → [MOV] 产品计数器, 信号队列[1] [LD] 相机3_触发信号 → [MOV] 产品计数器, 信号队列[2] [LD] 队列指针 = 0 → [MOV] 信号队列[0], 视觉_剔除信号1 [LD] 队列指针 = 1 → [MOV] 信号队列[1], 视觉_剔除信号2 [LD] 队列指针 = 2 → [MOV] 信号队列[2], 视觉_剔除信号3 [LD] 视觉_剔除信号1 → [SET] OK_剔除装置 = 1 [LD] 视觉_剔除信号2 → [SET] NG_剔除装置 = 1 [LD] 视觉_剔除信号3 → [SET] X_剔除装置 = 1 [ADD] 队列指针, 1 → [MOD] 队列指针 = 3 → [MOV] 队列指针, 0📌 说明:此代码为逻辑框架,具体数值需根据实际传感器响应时间调整。
✅ 四、注意事项
- 信号冲突处理:若多个相机同时触发,需增加优先级判断或延迟机制。
- 剔除装置动作延时:建议添加定时器,防止连续动作导致设备过载。
- 数据同步:确保视觉系统与PLC之间通信稳定,可采用Modbus/TCP或以太网协议。
- 异常处理:加入超时报警、信号丢失检测等机制。
✅ 五、总结
| 关键点 | 解决方案 | |----------------------|--------------------------------------------------------------------------| | 信号与产品同步 | 使用FIFO队列,确保每个产品只被处理一次 | | 信号覆盖问题 | 通过队列指针控制,实现先入先出逻辑 | | 剔除装置控制 | 根据剔除信号类型,分别触发对应的剔除装置 | | 程序编写 | 使用AutoShop,变量名统一为中文,确保可读性和维护性 |
如需进一步优化或定制,请提供更详细的传感器信号时序、剔除逻辑要求或设备型号参数。
解决 无用评论 打赏 举报