LHxiaobaixinshou 2026-03-13 15:03 采纳率: 0%
浏览 1

视觉筛选机plc程序怎么写

转盘筛选机 汇川的伺服驱动器和伺服电机 一个上料触发传感器 三个相机分布角度相差50度以上 三个剔除工位分布相差80度以上 剔除工位分别是OK剔除 NG剔除 X剔除 转盘一直转 每分钟通过280到300个产品 三个相机不均匀分布 不同步拍照 确保相机拍到的是同一个产品 确保收到的剔除信号是同一个产品的 剔除精准 视觉给PLC依次发送三个剔除信号 这个怎么保证在第一个产品的三个信号还没有发送完 第二个产品又发送了一个剔除信号 怎么确保不会影响第二个产品的判断 用先入先出编写梯形图程序 (PLC是汇川Easy521-0808TN扩展模块是DL20-0008ETN,编程软件是AutoShop,变量名转化为中文)

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2026-03-13 15:04
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    针对您描述的视觉筛选机PLC程序设计问题,涉及以下关键点:

    1. 转盘持续旋转(每分钟280-300个产品)
    2. 三个相机不均匀分布、不同步拍照,确保每个产品被拍到一次
    3. 三个剔除工位(OK/NG/X)
    4. 视觉系统发送三个剔除信号,但可能在第一个产品的三个信号未完成时,第二个产品已触发
    5. 需要使用“先入先出”逻辑来保证剔除信号与产品对应
    6. 使用汇川Easy521-0808TN + DL20-0008ETN扩展模块,编程软件为AutoShop
    7. 变量名需转化为中文

    ✅ 一、核心需求分析

    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] 产品计数器 = 1
    

    2.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], 视觉_剔除信号3
    

    2.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
    

    📌 说明:此代码为逻辑框架,具体数值需根据实际传感器响应时间调整。


    ✅ 四、注意事项

    1. 信号冲突处理:若多个相机同时触发,需增加优先级判断延迟机制
    2. 剔除装置动作延时:建议添加定时器,防止连续动作导致设备过载。
    3. 数据同步:确保视觉系统与PLC之间通信稳定,可采用Modbus/TCP以太网协议
    4. 异常处理:加入超时报警信号丢失检测等机制。

    ✅ 五、总结

    | 关键点 | 解决方案 | |----------------------|--------------------------------------------------------------------------| | 信号与产品同步 | 使用FIFO队列,确保每个产品只被处理一次 | | 信号覆盖问题 | 通过队列指针控制,实现先入先出逻辑 | | 剔除装置控制 | 根据剔除信号类型,分别触发对应的剔除装置 | | 程序编写 | 使用AutoShop,变量名统一为中文,确保可读性和维护性 |


    如需进一步优化或定制,请提供更详细的传感器信号时序剔除逻辑要求设备型号参数

    评论

报告相同问题?

问题事件

  • 创建了问题 3月13日