尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

PLC仿真实验:FactoryIO输送线汇流梯形图设计与联调

PLC仿真实验:FactoryIO输送线汇流梯形图设计与联调 做PLC仿真实验最容易卡住人的往往不是程序本身而是“我怎么确定逻辑一定对”。FactoryIO这类仿真软件的好处就是能让梯形图跑起来之后用3D画面直观看产线动作一个传感器接错了、一个互锁漏了零件当场就卡在输送线上一眼就能看出来。这次拿“输送线汇流”这个实验当例子我把一套用简单梯形图写的仿真实验程序完整拆开讲覆盖I/O规划、梯形图实现、FactoryIO联调步骤以及几个容易踩的坑。想学PLC梯形图的学生可以直接照着抄作业带实训课的老师也可以拿这套逻辑当参考模板。1. 项目背景输送线汇流在仿真里到底难在哪1.1 工业场景还原输送线汇流在真实产线里太常见了。两条支线装配出来的半成品要汇到同一条主输送线上进入下一道工序这在汽车零部件、电子装配、包装物流里几乎天天见。最简单的布局就是这样A、B两条支线传送带分别从上料器接货运到汇流口附近主线从汇流口下游把零件带走。难点不在设备动作而在调度。两条支线如果同时放件两个零件会在汇流点顶在一起轻则卡料停机重则把挡停器、传感器撞坏。实验要做的就是设计一套梯形图逻辑让两条支线有序放行互不干扰。这个场景放在FactoryIO里做比搭实物台架便宜太多而且出问题后随时可以暂停、回放、重置教学和自学都特别友好。1.2 为什么选FactoryIO做验证我在实训和竞赛辅导里反复用FactoryIO主要图它三点。第一机构库全。传送带、光电传感器、电感传感器、挡停器、气缸、推杆、机械手都是拖拽式放置不需要懂机械建模十分钟就能搭出产线雏形。第二接口开放。FactoryIO支持S7-PLCSIM、Modbus TCP、OPC UA等多种连接方式既能连真实PLC也能连TIA Portal里的仿真PLC。也就是说梯形图程序从验证到现场移植逻辑是通用的。第三调试环境宽容。实验中传感器位置放偏了、方向反了画面上一眼能看出来实物产线则要蹲在地上查半天。对初学者来说这种“看得见摸得着”的反馈是建立PLC调试感觉最省成本的方式。1.3 控制需求清单在动笔写梯形图之前建议先把需求一条条写清楚。这套汇流实验程序我认为至少要覆盖五条有总启动和总停止停止时所有传送带停、挡停器复位。两条支线能独立上料Feeder持续供料零件到达等待区后被挡住。汇流点同一时间内只允许一个零件通过。有零件占用汇流区时所有支线自动暂停放行。程序必须逐行注释方便实验报告和下次复用。这五条看着简单但后面每一条都会映射到梯形图的具体回路。尤其是“占用检测”这条很多初学者会漏等出问题再补逻辑就乱了。2. 整体方案设计与I/O规划2.1 核心思路传送带常开挡停器控放行我第一次做这个实验时第一反应是控制每条支线传送带的启停来放行零件。实际调了两轮就发现不对支线传送带一停Feeder送出来的零件就堆在传送带入口传感器逻辑全乱套。后来改成“传送带常开、挡停器控放行”的思路程序立刻干净了。这个思路的解释是传送带在系统运行期间就一直转Feeder不断往带上投放零件零件到达汇流口前的等待区时被挡停器挡住。放行时只需要让挡停器缩回零件被传送带送出挡停器再伸出挡下一个。这个方案的优点在于把“送料”和“放行”两个动作彻底解耦。传送带只关心系统运行状态挡停器只关心汇流条件是否允许互不干扰。梯形图写出来只有六个网络非常适合做教学演示。2.2 I/O点表我在写程序前习惯先在程序文件头部放一张I/O映射表这比任何注释都管用。这套实验的I/O规划如下信号类型对应FactoryIO部件说明X0输入启动按钮常开按下后系统自保持运行X1输入停止按钮常闭逻辑断开时系统停止X2输入主线汇流点光电传感器检测到零件通过时ON作为占用信号X3输入A支线等待区传感器A支线有零件等待放行时ONX4输入B支线等待区传感器B支线有零件等待放行时ONY0输出主线传送带ON运行Y1输出A支线传送带ON运行Y2输出B支线传送带ON运行Y3输出A支线挡停器程序约定ON缩回放行Y4输出B支线挡停器程序约定ON缩回放行这里要特别提醒一句FactoryIO里的Stopper模块不同版本对“信号ON是伸出还是缩回”的定义不一样。我建议先手动给输出点强制信号看挡停器实际是放行还是阻挡再决定梯形图用常开还是常闭触点。这个动作只需要一分钟但能避免后面半小时的排查。2.3 互锁与占用检测的双保险设计汇流控制最怕的就是两个支线同时放行。我在程序里加了两层保护。第一层是输出互锁。A支线挡停器Y3的回路中串入B挡停器Y4的常闭触点B支线挡停器Y4的回路中串入Y3的常闭触点。这样即使PLC扫描顺序有偏差两个输出也不可能同时得电。第二层是占用检测。主线汇流点传感器X2只要检测到零件所有支线的放行条件全部失效。这个保险用来兜底万一某个挡停器卡住没伸出或者零件已经越过等待区传感器但还没离开汇流区X2都能把风险挡住。两层保护不是冗余而是角度不同。互锁保护的是“输出端不带电”占用检测保护的是“物理上已有零件在汇流区”。我见过只做互锁、不做占用检测的程序零件从A支线冲出去后还没到主线B支线就放行了结果在汇流点直接撞上。所以这两层都别省。3. 梯形图实现先跑通最简版3.1 程序结构总览整个最简版程序控制逻辑分成六个网络用三菱FX系列指令表书写。为什么不直接贴梯形图图形因为用指令表写网络和注释放到文本里最容易看清逻辑关系。指令助记符各品牌略有差异但逻辑思想完全通用。网络功能输出1系统启停自保持M02主线传送带控制Y03A支线传送带控制Y14B支线传送带控制Y25A挡停器放行Y36B挡停器放行Y43.2 启停回路与传送带控制网络1是整台设备的钥匙。X0启动按钮按下后M0得电自保持系统进入运行态X1按下时M0断开所有输出复位。下面是带逐行注释的写法网络1 系统启停 LD X0 // 启动按钮 OR M0 // 运行标志自保持 ANI X1 // 停止按钮常闭逻辑 OUT M0 // 运行标志输出M0是整个程序的总开关后面所有网络的第一步都判断M0是否ON。这属于梯形图最基本的主控回路写的时候注意X1用ANI而不是LD这样硬件停止信号优先程序跑得再乱也能一键停下来。网络2到网络4控制三条传送带。主线传送带Y0、A支线Y1、B支线Y2都只依赖运行标志M0网络2 主线传送带 LD M0 OUT Y0 // 主线传送带运行 网络3 A支线传送带 LD M0 OUT Y1 // A支线传送带运行 网络4 B支线传送带 LD M0 OUT Y2 // B支线传送带运行三条传送带全部跟随M0意味着停止时不会再有零件往汇流区送。这种“集中供电式”的控制方式让程序后面不需要重复判断停止条件逻辑会干净非常多。3.3 A/B支线挡停器放行逻辑网络5和网络6是整个程序的核心。以A支线为例挡停器Y3得电的条件是系统运行M0为ONA支线等待区有零件X3为ON汇流点没有零件X2为OFFB支线没有在放行Y4为OFF。四个条件同时满足Y3才得电缩回把A线等待区里的零件放行。B支线逻辑完全对称网络5 A挡停器放行 LD M0 // 系统运行 AND X3 // A支线等待区有零件 ANI X2 // 汇流点空闲 ANI Y4 // B支线未放行互锁 OUT Y3 // A挡停器放行 网络6 B挡停器放行 LD M0 // 系统运行 AND X4 // B支线等待区有零件 ANI X2 // 汇流点空闲 ANI Y3 // A支线未放行互锁 OUT Y4 // B挡停器放行这段逻辑就叫固定优先级当A、B同时有料时由于网络5先执行Y3优先ONY4被Y3的常闭触点锁死B只能等。如果A线没有料B线才有机会放行。这个方案代码最少、最好理解适合第一次接触汇流控制的同学先跑通。3.4 梯形图注释怎么写才有用标题里强调“写有详细注释”我说说自己的注释习惯。很多初学者在指令后面写“输出Y1”这种废话等于没写。我一般坚持三点。第一网络开头必须写这个网络的完整功能比如“A挡停器放行”让人不用看指令就知道这段干嘛。第二每个关键指令行后面注释要写信号背后的物理含义。比如“AND X3 // A支线等待区有零件”这比“AND X3”多了一层现场信息。第三遇到互锁、占用检测这种关键保护要单独注释为什么这样写。比如“ANI Y4 // B支线未放行互锁”括号里的“互锁”两个字在答辩和汇报时能体现你的设计意识。4. 升级版加入交替公平调度4.1 为什么需要交替放行固定优先级有个明显问题如果A支线不断有料B支线可能长期饿死。在真实产线中如果主线不要求优先级两条支线的来料应该尽量均衡否则上游B线会堆积甚至触发停线。在实验演示中更明显A线一直来料B线从来没动过老师一看就知道你没做调度。所以我在最简版跑通之后建议加一个“交替放行”的升级功能。4.2 轮换标志M4的设计思路交替放行的核心是一个内部继电器M4。我规定M4为OFF时下一轮优先放AM4为ON时下一轮优先放B。交替的判断逻辑是如果只有一条支线有料不管M4是什么状态直接放行如果两条支线都有料只有轮到的那条可以放行。放行结束后把优先权让给对方。用生活里的例子最好懂两台车同时到了一个窄桥谁先过不是固定让左边或右边永远先过而是“上次右边先过这次就让左边先过”M4就是记录“上次谁先过”的那张纸条。4.3 完整梯形图与注释交替版需要在最简版基础上增加中间变量和轮换标志。A支线放行条件拆成两个场景分别用M1、M2表示再用OR合并输出网络5 A支线放行条件之一B支线无等待 LD M0 // 系统运行 AND X3 // A有料 ANI X2 // 汇流点空闲 ANI Y4 // B未放行 ANI X4 // B支线没有等待 OUT M1 // 场景1成立B没料A直接放行 网络6 A支线放行条件之二B有等待但轮到A LD M0 AND X3 ANI X2 ANI Y4 ANI M4 // M4OFF表示轮到A OUT M2 // 场景2成立两边都等但本轮归A 网络7 A挡停器输出 LD M1 OR M2 OUT Y3 // A挡停器放行B支线逻辑对称只是轮到条件变成M4为ON网络8 B支线放行条件之一A支线无等待 LD M0 AND X4 ANI X2 ANI Y3 ANI X3 // A支线没有等待 OUT M3 // 场景1成立A没料B直接放行 网络9 B支线放行条件之二A有等待但轮到B LD M0 AND X4 ANI X2 ANI Y3 AND M4 // M4ON表示轮到B OUT M5 // 场景2成立两边都等但本轮归B 网络10 B挡停器输出 LD M3 OR M5 OUT Y4 // B挡停器放行轮换标志M4的翻转是神来之笔利用等待区传感器的下降沿来判断“一个零件已经真正离开”。当A支线放行的零件离开X3检测点时X3从ON变OFF的瞬间产生一个脉冲这个脉冲把M4置位让下一轮B优先。同样B支线放行完X4下降沿把M4复位回到A优先网络11 记录A放行完成轮到B LD X3 PLF M6 // A等待区传感器下降沿 LD M6 SET M4 // 置位轮换标志B优先 网络12 记录B放行完成轮到A LD X4 PLF M7 // B等待区传感器下降沿 LD M7 RST M4 // 复位轮换标志A优先如果用西门子S7-1200没有PLF指令可以用NEG沿检测块或直接在OB1里写上升沿/下降沿辅助逻辑但思想完全一样。两个版本的实际效果差异在FactoryIO里放慢运行速度能看得很清楚。5. FactoryIO联调实操指南5.1 场景搭建要点我通常在一个空场景里手工搭这套产线步骤也不复杂。先放两条支线传送带方向对准主线每条支线入口处放一台Feeder出料方向朝向传送带在支线靠近汇流口的位置放Stopper注意挡停器挡住的是零件的运动方向别放成平行的。Stopper之前放光电传感器作为X3/X4等待检测主线汇流点下游再放一个光电传感器作为X2。搭的时候有个小技巧先把Feeder暂停手动放几个零件到传送带上让零件走到等待区看传感器是否准确点亮。这个步骤能过滤掉一半的接线和方向问题。信号映射是另一件大事。我习惯先在纸上写好I/O表再在FactoryIO里逐个部件属性设置里输入对应的信号编号。比如把A支线Stopper的输出绑定到Y3主线汇流点Sensor绑定到X2。如果用的仿真PLC驱动已经建立了信号表直接在FactoryIO的Driver Mapping页面做对应关系即可。5.2 连接PLC仿真环境连接方式取决于你手上的工具链。我实验室常用的有两种。第一种是西门子TIA Portal PLCSIM。在TIA里建一个S7-1200项目把梯形图写好启动PLCSIM并下载程序然后打开FactoryIO的Driver设置选择Siemens S7-PLCSIM进入运行模式后信号就自动映射上了。注意PLCSIM版本和TIA版本要匹配否则会一直报通信失败。第二种是Modbus TCP方式。FactoryIO可以作为Modbus TCP ServerPLC端只需用Modbus指令读写线圈把X输入映射到线圈地址Y输出也映射到线圈地址。这种方式适合实验室里用第三方PLC设备或串口调试工具的情况配置灵活但需要理解Modbus的寄存器映射关系对零基础用户没那么友好。我不建议一上来就折腾通信。先在FactoryIO的演示模式下手动点动各个部件确认场景机构动作没问题再和PLC仿真环境对接排查范围会小很多。5.3 在线调试三步走程序下进去之后调试顺序一定要对。我总结为三步。第一步盯传感器。在PLC程序监控表里观察X0到X4的实时状态同时看FactoryIO画面里的传感器是否发光。两边不一致先查映射。第二步强置输出。手动把Y3强制ON看A挡停器是否缩回、零件是否被放行再强制OFF看挡停器是否伸出。这一步确认执行器方向和程序约定一致。第三步自动运行。把强制取消启动程序观察零件连续流过汇流点的过程。重点看X2占用信号是否能准确覆盖“零件在汇流区”的整个时间段。如果发现汇流点卡料优先检查X2的位置是否太靠后。整个调试过程里我习惯把FactoryIO的仿真速度调到0.5倍或更低这样能看清每一个机械动作的前后关系也方便截图做实验记录。6. 常见问题与排查速查表6.1 汇流点卡料互锁失效最常见的故障是两个零件在汇流点顶住。排查时先不要急着改程序用慢速播放或暂停功能观察两个零件分别是从哪个方向进入的。如果A、B同时放行说明互锁没起作用。检查Y3、Y4回路里是不是真的串入了对方的常闭触点有些人写了互锁但把触点号写成了自己的等于白写。如果A放行后还没离开汇流区B就放行了说明X2占用检测这一环有问题。要么传感器安装位置太靠后要么X2的信号在PLC里没有参与放行条件。把X2的位置往汇流点前移一点问题通常立刻消失。6.2 传感器信号抖动逻辑乱跳在FactoryIO里传感器的检测半径是可以调的如果设置得太大零件边缘经过时信号会反复通断导致挡停器反复动作。处理办法有两种。一是在梯形图里做滤波。原理很简单用一个定时器把传感器信号延时信号至少要持续几十毫秒才认为有效。参考写法是LD X3 // 原始等待区信号 OUT T0 K1 // 延时0.1秒 LD T0 OUT M10 // 滤波后的信号二是在FactoryIO里把传感器的检测半径调到比零件尺寸略小一点避免边缘效应。这个方法更直接但要注意别把小零件漏检。仿真实验里两种方法都能用建议都试一下感受软硬件的边界在哪里。6.3 挡停器放行时序异常有的同学反馈零件已经离开了等待区但挡停器复位太慢导致零件尾端被刮蹭。这在采用“传送带常开”方案时不太常见出现了通常说明挡停器的信号极性和程序约定相反。我建议在联调时用一步最简单的确认强制Y3或Y4输出观察Stopper实际是伸出还是缩回记下来再决定网络里是用OUT还是用ANI。FactoryIO那个模块的属性里如果提供了“Invert Signal”选项也可以通过这个勾选来统一极性但一定要在真值表里记录最终约定不然隔两天就忘了。6.4 仿真连接失败PLC和FactoryIO对不上这类问题排查路径很固定。PLCSIM连不上时先确认TIA项目已经编译成功并下载进PLCSIM再看FactoryIO的Driver状态是否显示已连接最后试试把两个软件都重启一遍。防火墙有时会拦截仿真通信特别是在学校实验室网络环境里可以把防火墙临时关闭再测试。Modbus TCP连不上时重点确认FactoryIO和PLC程序的IP地址在同一网段端口号一致。很多实训平台默认端口不同需要到两边设置里核对一改就好。6.5 问题排查速查表现象直接原因处理办法两条支线同时放行Y3/Y4互锁没生效检查互锁触点是否用对汇流点卡料X2位置太靠后把汇流点传感器前移某支线一直不送料X3/X4没检测到位监控传感器实时状态挡停器动作时卡零件信号极性反了强制输出测试方向传感器信号抖动检测半径太大加定时器滤波或调小半径PLCSIM连不上版本或防火墙问题核对版本、重启、关防火墙支线传送带反向布局方向错误检查传送带方向箭头我在实际调试中最深的体会是这个实验的程序本身不复杂难的是把传感器、执行器、PLC这三角关系理顺。任何一环的物理位置或信号极性不对程序逻辑再完美也白搭。所以我在指导别人的时候都会强调先花十分钟把I/O表和信号极性确认清楚再上电跑程序效果比盲目改梯形图好得多。另外交替放行版本里用到了PLF下降沿指令初学者第一次见到可能会绕不过来。别急先在FactoryIO里把A线单独运行一次观察X3下降沿产生的时刻对应的画面再把M4在监控表里盯住两轮下来就懂它在干嘛了。顺着这个思路你还可以继续往程序里加计数功能统计两条支线各放行了多少零件练一练PLC计数器的用法也是个不错的扩展方向。
返回列表