资讯动态

基于汇川H5U与FactoryIO的三物料分拣SFC编程与仿真实战

发布时间:2026/8/8 7:20:42 来源:尧图企业网站定制
在工业自动化项目中物料分拣是经典且高频的应用场景。很多工程师在初次接触汇川H5U PLC与FactoryIO仿真软件联调时常会感到无从下手——如何将视觉传感器的信号转化为可靠的控制逻辑如何构建一个稳定、易维护的程序框架本文将分享一套基于顺序功能图SFC的“三物料分拣系统”核心编程逻辑模板。这套模板不仅清晰地拆解了分拣流程更将视觉检测、气缸动作、传送带控制与联机通讯融为一体形成了一套可复用的工程化解决方案。无论你是正在学习PLC编程的学生还是需要快速搭建分拣系统的工程师这套逻辑都能让你事半功倍。1. 系统概述与核心组件介绍在深入代码之前我们首先要理解整个系统的构成和工作原理。一个典型的三物料分拣系统其核心目标是通过视觉传感器识别出传送带上三种不同颜色例如红、绿、蓝或形状的物料然后控制对应的气动推杆或机械臂将物料推入指定的分拣槽中。1.1 系统核心组件与功能整个系统由硬件和软件两部分协同工作控制核心 - 汇川H5U PLC作为系统的大脑负责接收所有输入信号如传感器信号执行我们编写的控制逻辑并输出控制信号驱动执行机构如气缸电磁阀、电机驱动器。仿真与可视化 - FactoryIO这是一个强大的3D工业场景仿真软件。我们可以在电脑上搭建出包含传送带、传感器、气缸、物料模型的虚拟分拣线并通过驱动与真实的汇川H5U PLC进行联机通讯。这极大地降低了学习成本和项目前期的调试风险。“眼睛” - 视觉传感器在实际系统中可能是颜色传感器、光电传感器或工业相机。在仿真中FactoryIO会模拟其信号。它的作用是检测物料是否到位以及识别物料类型通常用不同的数字信号表示如1、2、3。“手臂” - 执行机构主要是三个分拣气缸对应三种物料和传送带电机。PLC通过输出点控制气缸的伸出/缩回和电机的启停。通讯桥梁实现FactoryIO运行在PC上与汇川H5U PLC之间数据交换的通道通常采用Modbus TCP/IP或汇川自由协议over Ethernet。1.2 为什么选择顺序功能图SFC对于分拣这种具有明显顺序步骤、多种状态转换的流程控制顺序功能图Sequential Function Chart, SFC是最直观、最合适的编程语言。它源于佩特里网将复杂的控制流程分解为一系列的“步”Step和“转换”Transition。步Step代表系统的一个稳定状态例如“等待物料”、“气缸A伸出”。在步中可以执行具体的动作。转换Transition从一个步切换到下一个步的条件例如“物料到位且为红色”。优势结构清晰逻辑与工艺流程图一一对应易于设计、调试和维护。当需要增加一种物料或改变分拣顺序时只需在SFC框架内增减步和转换条件即可程序主体结构不变。2. 环境准备与软件配置在开始编程前请确保你的开发环境已就绪。以下是基于当前常见版本的配置说明。2.1 所需软件及版本汇川PLC编程软件AutoShop建议使用V2.8或以上版本。这是汇川H系列PLC的官方编程软件支持梯形图LD、指令表IL、顺序功能图SFC等多种编程语言。FactoryIO仿真软件建议使用2.5.10或以上版本。请从官网或正规渠道获取并完成激活。操作系统Windows 10 或 Windows 11 专业版/企业版。2.2 软件安装与基础设置安装AutoShop按照向导安装汇川AutoShop软件。安装完成后连接你的汇川H5U PLC硬件如果进行实物调试或使用软件自带的模拟器功能进行离线测试。安装FactoryIO安装FactoryIO并确保其已被正确激活。首次运行时可以选择界面语言。关键配置 - 驱动设置这是联机通讯成功的关键。打开FactoryIO进入File - Drivers。在驱动列表中选择Inovance汇川。注意不同版本的FactoryIO驱动名称可能略有差异也可能是“H3U”或“Modbus TCP”。配置驱动参数。如果选择Modbus TCP通常需要设置PLC的IP地址例如192.168.1.10、端口号默认为502、以及Modbus从站地址默认为1。这些设置需要与PLC内部的配置或AutoShop中的设置保持一致。2.3 建立通讯连接在AutoShop中设置PLC如果是真实PLC确保其IP地址与FactoryIO驱动中设置的一致。如果是模拟器模拟器本身会虚拟一个网络适配器需要配置模拟PLC的IP。在FactoryIO中加载场景从FactoryIO的场景库中选择一个包含传送带、传感器和气缸的场景或自己搭建一个简单的分拣线场景。将场景中的输入如传感器I0.0、输出如气缸Q0.0与驱动中定义的地址映射好。连接测试在AutoShop中编写一个简单的点动程序控制一个输出点。下载到PLC或模拟PLC并运行。然后在FactoryIO场景中观察对应的执行机构如灯、气缸是否有反应。反之在FactoryIO中手动触发一个传感器观察AutoShop监控表中对应的输入点是否变化。双向测试成功标志着通讯链路已打通。3. 顺序功能图SFC核心逻辑拆解本节将详细拆解三物料分拣系统的SFC程序结构。我们将程序分为几个关键的“步”和“转换”。3.1 SFC程序基本结构一个完整的SFC程序始于一个初始步通常用双线框表示结束于一个循环返回或结束。我们这里采用循环结构使系统能连续工作。[初始步 S0] (系统初始化) | v (转换条件启动按钮 无急停) [步 S1] (传送带运行等待物料) | v (转换条件视觉传感器检测到物料) [选择分支] --(物料类型1)-- [步 S2] (执行分拣动作1) | --(物料类型2)-- [步 S3] (执行分拣动作2) | --(物料类型3)-- [步 S4] (执行分拣动作3) | --(其他/超时)-- [步 S5] (异常处理) | v (所有分拣动作步完成后汇合到同一转换条件动作完成) [步 S6] (复位动作延时) | v (转换条件延时到) (跳转回步 S1等待下一个物料)选择分支根据视觉传感器的不同信号1,2,3选择不同的分拣路径。这是系统的核心决策点。并行分支如果需要多个动作同时执行例如分拣气缸伸出时传送带暂停可以使用并行分支。本例为简化采用顺序执行。3.2 I/O地址规划与变量定义在编写程序前规划好软元件内部继电器、寄存器和物理I/O的映射至关重要。以下是一个示例规划表元件类型地址/名称说明输入 (X)X0系统启动按钮 (FactoryIO模拟)X1系统停止/急停按钮X2视觉传感器物料到位D0 (数据寄存器)视觉传感器类型值1:红, 2:绿, 3:蓝输出 (Y)Y0传送带电机运行Y1红色物料分拣气缸Y2绿色物料分拣气缸Y3蓝色物料分拣气缸Y10蜂鸣器异常报警内部辅助 (M)M0系统运行总标志M100-M120SFC各步的激活标志AutoShop中SFC步通常自动关联状态位定时器 (T)T0分拣动作保持时间如气缸伸出时间T1动作复位后延时确保物料落下注意在FactoryIO中你需要将场景中的传感器和执行器与上述X/Y地址进行绑定。D0寄存器值的写入可以通过FactoryIO的“标签”功能或脚本模拟视觉传感器输出。4. 完整SFC程序实现与代码详解现在我们在汇川AutoShop软件中将上述逻辑转化为实际的SFC程序。4.1 创建新工程与SFC程序块打开AutoShop新建一个工程设备类型选择对应的H5U型号。在程序组织单元POU中新建一个程序块编程语言选择“SFC”。4.2 编写SFC主体逻辑以下是SFC程序的详细步骤描述及关键代码片段。在AutoShop的SFC编辑器中这些步骤通过图形化方式连接。// 以下为SFC图形化编程的文本化描述实际在AutoShop中为图形界面 // 步与动作使用梯形图LD编写 // ---- 初始步 ---- 步 S0: “INIT” 动作: (无或执行一次初始化复位) 转换条件 TR0: M8002 (PLC上电首次扫描ON) 或 停止后复位完成 | v // ---- 主循环开始 ---- 步 S1: “RUN_CONVEYOR” 动作: LD M0 // 系统运行标志 OUT Y0 // 启动传送带 转换条件 TR1: X0 AND M0 // 启动按钮按下且系统运行 | v // ---- 检测等待步 ---- 步 S2: “WAIT_FOR_OBJECT” 动作: (保持传送带运行 Y0) 转换条件 TR2: X2 // 视觉传感器检测到物料到位 | v // ***** 选择分支开始 ***** // 分支条件根据D0的值跳转 | --[D0 K1]-- 步 S10: “SORT_RED” | 动作: SET Y1 // 红色气缸伸出 | OUT T0 K50 // 定时0.5秒根据实际调整 | 转换条件: T0 // 定时时间到 | | | v | --[D0 K2]-- 步 S20: “SORT_GREEN” | 动作: SET Y2 // 绿色气缸伸出 | OUT T0 K50 | 转换条件: T0 | | | v | --[D0 K3]-- 步 S30: “SORT_BLUE” | 动作: SET Y3 // 蓝色气缸伸出 | OUT T0 K50 | 转换条件: T0 | | | v | --[ELSE]-- 步 S40: “ERROR_HANDLE” 动作: SET Y10 // 报警蜂鸣器 OUT T2 K100 // 报警延时 转换条件: T2 | v (报警后也可选择回到等待步或停机) // ***** 选择分支汇合 ***** // 所有正常分拣步(S10,S20,S30)完成后转换条件均为T0汇合到同一点 // 异常步S40单独处理 | v (正常路径汇合点) 步 S50: “RESET_ACTION” 动作: RST Y1 RST Y2 RST Y3 // 复位所有气缸 OUT T1 K30 // 短暂延时确保物料滑入槽内 转换条件 TR3: T1 // 复位延时到 | v (使用“JUMP”指令跳转回步 S1: “RUN_CONVEYOR”) // 形成循环关键点解释系统运行标志M0由启动/停止按钮控制。这是所有自动流程的前提便于紧急停止。视觉值寄存器D0在真实系统中由视觉控制器通过通讯写入。在FactoryIO仿真中你需要通过其“标签”或“脚本”功能在检测到物料时根据物料类型向PLC的D0寄存器写入1、2或3。这模拟了视觉传感器的通讯过程。定时器T0用于控制气缸伸出保持时间。时间常数K50表示50*10ms0.5秒需根据实际气缸速度调整。选择分支的实现在AutoShop的SFC中可以直接在转换条件上编写判断语句如D0K1。软件会自动处理分支与汇合。异常处理当D0的值不是1、2、3时进入异常处理步。这是一个非常重要的工程实践能防止因信号干扰或错误导致的程序卡死。4.3 辅助梯形图程序SFC主要描述流程一些基础逻辑和故障处理更适合用梯形图写在另一个程序块中。// 文件主程序或子程序梯形图 // 1. 系统启停控制 LD X0 // 启动按钮 OR M0 ANI X1 // 停止按钮常闭点按下断开 OUT M0 // 系统运行总标志 // 2. 视觉传感器信号处理示例在FactoryIO中用脚本写D0此处可做滤波 // 可以添加一个上升沿触发确保每次只处理一个物料 LD X2 PLS M100 // M100产生一个扫描周期的脉冲 LD M100 MOV D0 D100 // 将视觉类型值存入缓存寄存器D100 // 这里可以添加数据有效性判断例如 D100必须在1~3之间 // 3. 急停处理最高优先级 LD X1 // 急停按钮按下 RST Y0 // 立即停止传送带 RST Y1 // 立即复位所有气缸 RST Y2 RST Y3 RST M0 // 清除运行标志 // 同时可以强制将SFC跳转回初始步S0具体指令取决于PLC型号和软件5. FactoryIO场景搭建与联机调试程序编写完成后需要在FactoryIO中搭建测试环境进行联调。5.1 搭建分拣场景在FactoryIO中新建场景。从左侧元件库拖放一条Conveyor传送带、三个Cylinder气缸作为推杆、三个Photoeye光电传感器一个用于物料检测两个用于限位实际上视觉识别通常用一个传感器配合软件。为了模拟视觉我们用一个传感器检测到位物料类型则通过“标签”来区分。在传送带起点放置一个Emitter发射器来生成物料。在发射器的属性中可以创建不同的物料类型如Red Box, Green Box, Blue Box。将传送带电机、传感器、气缸与之前规划的I/O地址进行绑定如Conveyor Motor - Y0, Sensor - X2, Cylinder1 - Y1...。5.2 模拟视觉传感器信号这是仿真的关键。我们需要让FactoryIO在检测到物料时不仅触发X2还要向PLC的D0寄存器写入对应的值。在FactoryIO中进入View - Script Editor。编写Lua脚本监听物料通过的事件。以下是一个简化的示例思路-- 假设有一个名为‘ColorSensor’的传感器 function onSensorActivated(sensor) if sensor.name “ColorSensor” then local object sensor.detectedObject local tagValue 0 if object.type “RedBox” then tagValue 1 elseif object.type “GreenBox” then tagValue 2 elseif object.type “BlueBox” then tagValue 3 end -- 将值写入PLC的D0寄存器。具体函数取决于驱动可能是 setTag(‘D0’, tagValue) driver.writeRegister(‘D0’, tagValue) -- 示例写法实际函数名需查驱动手册 end end -- 注册事件监听器 scene.onSensorActivated onSensorActivated注意FactoryIO不同版本和驱动的脚本API可能不同请务必查阅其官方文档。核心思想是用脚本逻辑模拟视觉控制器的通讯功能。5.3 联机调试步骤离线测试先在AutoShop中利用软件模拟器运行SFC程序使用“软元件测试”功能强制改变X2和D0的值观察SFC步的切换和Y输出点的变化。确保逻辑正确。连接FactoryIO关闭模拟器将AutoShop与真实PLC或设置为与FactoryIO通讯的IP连接。将程序下载到PLC。在线监控在AutoShop中在线监控程序。在FactoryIO中启动场景并开始发射物料。观察与排错观察物料到达传感器时PLC的X2是否亮起D0寄存器值是否变为1、2、3。观察对应的步如S10是否被激活对应的输出点如Y1是否输出。观察FactoryIO场景中的气缸是否动作物料是否被正确推入槽中。如果物料堆积或动作不协调调整定时器T0和T1的值。6. 常见问题与排查思路在调试过程中你可能会遇到以下典型问题问题现象可能原因排查思路与解决方案FactoryIO与PLC无法通讯1. IP地址设置错误。2. 端口号不正确。3. 防火墙阻止。4. PLC未处于RUN模式。1. 使用ping命令检查网络连通性。2. 核对AutoShop中PLC的IP与FactoryIO驱动中设置的IP是否一致。3. 暂时关闭防火墙测试。4. 确认PLC已运行且程序已下载。传感器信号无反应1. I/O地址映射错误。2. FactoryIO中传感器未正确关联到驱动地址。3. PLC输入点滤波时间过长。1. 在AutoShop监控表中强制对应X点看FactoryIO中传感器是否高亮。2. 双击FactoryIO中传感器检查其“Address”属性是否正确。3. 检查PLC系统参数中的输入滤波时间适当调小。气缸不动作1. 输出地址映射错误。2. SFC程序未执行到对应步。3. 气路/电路问题实物。4. FactoryIO中气缸未关联输出地址。1. 在AutoShop中监控Y点当SFC步激活时Y点是否输出。2. 检查SFC的选择分支条件D0值是否满足。3. 在FactoryIO中检查气缸的“Actuator”属性地址。视觉类型值D0不正确1. FactoryIO脚本未正确写入。2. 通讯写入失败。3. 物料类型判断逻辑有误。1. 在FactoryIO脚本中添加调试打印确认tagValue计算正确。2. 检查驱动写寄存器的函数调用格式和地址格式。3. 在AutoShop中直接监控D0寄存器观察其值变化。SFC程序不循环只执行一次1. 最后一步没有跳转回初始步或等待步。2. 转换条件始终不满足导致流程卡死。1. 检查SFC最后一个步之后是否有“JUMP”指令跳转到循环起点。2. 检查复位步S50的转换条件T1是否正常触发。多个物料同时处理导致混乱1. 没有对视觉信号进行“一次性”处理。2. 传送带速度过快SFC流程来不及处理。1. 在梯形图中使用上升沿PLS指令确保每个物料只触发一次流程。2. 在等待物料步S2增加“互锁”只有处于该步时才允许检测新物料。也可以在机械上增加间距。7. 工程优化与最佳实践一个能稳定运行的程序是基础一个易于维护和扩展的程序才是优秀的工程代码。7.1 程序结构优化模块化设计将SFC主流程、气缸控制子程序、报警处理子程序、通讯处理子程序分开编写。在汇川AutoShop中可以使用“子程序”或“功能块”来实现。使用功能块封装气缸动作将气缸的伸出、缩回、动作延时及到位检测如果有磁性开关封装成一个可重复调用的功能块。这样主SFC程序会更加简洁。状态与报警分离建立独立的报警处理程序块。将设备故障如气缸超时未到位、流程异常如未知物料类型等统一管理并输出到报警灯或HMI。7.2 增强系统鲁棒性信号去抖与滤波对关键的传感器信号如X2在梯形图中进行软件滤波防止抖动误触发。超时监控在SFC的每一步尤其是执行动作的步如S10添加步激活时间监控。如果该步激活时间超过合理范围例如气缸伸出本应1秒完成但3秒后仍未完成则触发报警并跳转到安全状态。这可以防止因气缸卡死导致的程序死等。模式管理增加手动/自动模式切换。在手动模式下可以通过HMI或按钮单独点动每个气缸和传送带便于设备调试和维护。数据追溯如果需要可以将每次分拣的物料类型、时间等信息存入PLC的数据寄存器或通过通讯上传到上位机便于生产统计。7.3 通讯与仿真注意事项Modbus地址映射如果使用Modbus TCP通讯务必清楚汇川H5U PLC的Modbus地址与内部软元件如D、M的映射关系。例如D0寄存器可能对应Modbus Holding Register的40001地址。FactoryIO驱动中的地址设置需与此一致。仿真不是实物FactoryIO仿真忽略了物理世界的惯性、延迟和随机故障。在仿真通过后切换到实物调试时务必从低速、单步开始逐步提高速度并仔细调整传感器位置、气缸节流阀和各项延时参数。文档与注释在程序中对每一个SFC步、重要的转换条件、功能块进行详细的注释。这对自己后期维护和团队交接至关重要。通过本文的详解你应该已经掌握了一套从零构建汇川H5U PLC与FactoryIO联合仿真三物料分拣系统的完整方法。这套基于顺序功能图的核心逻辑模板清晰地分离了流程控制与设备动作结构稳定且易于扩展。你可以在此基础上增加物料类型、引入机器人抓取、添加上位机监控从而构建更复杂的自动化系统。记住好的程序不仅是能跑起来更是要跑得稳、看得懂、改得动。建议你将此模板保存在未来的项目中灵活应用和演化。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价