资讯动态

基于S7-200 PLC的货车装料与料仓出料控制系统梯形图详解

发布时间:2026/10/19 11:22:31 来源:尧图企业网站定制
前阵子和几个做工业配套的朋友聊天又聊到货车装料这种看着简单、实际麻烦的活儿。砂石料场、水泥搅拌站、粮库到处都是类似的场景货车开进装车位工人仰头盯着料仓判断装没装满差不多了就喊一声“停”。一车两车还好几十车下来要么超载被罚要么溢料洒一地效率还低得让人着急。后来用S7-200 PLC加组态王做了这套物料传送系统的货车装料、料仓出料控制才算是把这个问题彻底解决掉。这篇文章就把整个项目的来龙去脉写清楚尤其是梯形图程序部分我尽量把每一段逻辑为什么这么写都解释到位给正在接触这类物料输送控制的朋友做个参考。这套系统解决的核心问题其实有三个第一货车到位之后自动完成装料流程不需要人工在皮带旁边守着第二满车之后准确停车不洒料、不超载第三料仓缺料、电机过载这些异常情况能自动保护并且把状态送到组态王画面上值班室一目了然。设备不复杂成本可控很适合中小型料场的自动化升级。1. 先从现场说起货车装料这个动作藏着多少逻辑很多人第一次接触这个项目时会觉得装料嘛一个启动按钮、一个停止按钮再来个满车检测就结束了。真到写梯形图的时候才发现问题一个接一个皮带和闸门谁先动作满车信号来了是先停皮带还是先关闸门司机没把车停正怎么办料仓见底了还继续装会不会损坏设备所有这些看起来不大的细节堆在一起就是一个典型的顺序控制难题。一套完整的货车装料系统通常由这几部分组成储料料仓、料仓底部的出料闸门常见的是气动插板阀或电动闸门、皮带输送机、货车到位检测传感器、满车料位检测开关、电控柜里的PLC以及值班室的组态王监控画面。工作流程可以这样描述货车倒进装车位车斗对准出料口安装在车位后方的光电传感器检测到车辆到位操作人员在现场按一下启动按钮PLC收到信号后先启动皮带输送机皮带稳定运行几秒钟之后再打开料仓出料闸门物料开始连续落入货车车斗车斗装满时物料顶到满车料位开关PLC立即关闭闸门闸门关闭后再让皮带继续运行一小段延时把皮带上残留的物料全部送进车斗然后停止皮带最后点亮装车完成指示灯司机驶离整个流程结束。这里面的关键点在于皮带和闸门不是同时动作的。我在现场见过一上来就让闸门和皮带一起动作的方案结果皮带还没平稳物料已经堆在皮带上甚至从皮带边缘滚落。正确的做法必须是先启动皮带、延时开闸门让皮带有一个空载启动和稳定运行的时间。而满车时恰好反过来先关闸门、延时停皮带确保皮带上的余料不会留在原地下次启动不至于带载。除了主流程还要处理几个边界情况。比如料仓低料位仓里没料了继续开机不仅装出来的是半车料闸门附近还可能形成空洞下次进料容易冲击设备比如皮带电机过载热继电器动作后必须停机保护再比如手动和自动两种模式的切换检修时不能一按启动就直接呼啦啦把料放出来。这些都要在梯形图里提前设计好不能指望现场工人随机应变。2. 硬件选型与I/O分配为什么是S7-200点位怎么排2.1 CPU选型与系统组成这台设备选S7-200并不是因为它性能有多强而是这个项目正好踩在S7-200最舒服的区间上控制点数不多逻辑不复杂现场环境也算不上恶劣成本还要压得住。S7-200的编程软件是STEP 7-Micro/WIN梯形图、语句表都能写调试和模拟功能对初学者也友好。虽然这款CPU已经停产多年但存量设备在中小型料场里依然大量存在学会这套逻辑换到S7-200 SMART或者S7-1200上也只是换汤不换药。具体选型上我建议用CPU 226或者CPU 224XP这一类集成点数较多的型号。以CPU 226为例本体带24点数字量输入、16点数字量输出我们这个项目大概用到6个输入点、5个输出点绰绰有余后续想加料位模拟量或者变频器控制也有冗余。通讯方面CPU本体带两个通信口既可以走PPI协议连接组态王也可以通过扩展以太网模块走TCP方式灵活性足够。整个系统的硬件配置大概如下表设备选型建议作用PLCS7-200 CPU 226核心控制器处理梯形图逻辑编程软件STEP 7-Micro/WIN编写、调试梯形图程序组态软件组态王上位机监控画面与数据记录皮带电机三相异步电机加接触器驱动皮带输送物料出料闸门气动插板阀加电磁阀控制料仓出料通断货车到位检测对射式光电传感器检测货车是否停在装车位满车料位开关阻旋式料位开关检测车斗是否装满低料位开关阻旋式或音叉式料位开关检测料仓是否有料2.2 I/O点位分配表I/O分配是整个工程的“地基”点位分配得好后面写梯形图和组态王连变量都顺。下面这是我惯用的分配方式照着用不会出问题地址设备说明I0.0启动按钮自动装料流程启动I0.1停止按钮急停/流程终止I0.2货车到位光电有车时为1I0.3满车料位开关车斗装满时为1I0.4料仓低料位开关缺料报警时为1I0.5热继电器故障皮带电机过载时为1I0.6手动/自动切换自动模式为1Q0.0皮带电机接触器驱动皮带运行Q0.1出料闸门电磁阀打开闸门下料Q0.2装车完成指示灯流程结束点亮Q0.3故障报警器蜂鸣器/报警灯Q0.4皮带运行指示灯皮带运行时点亮这里注意输入信号全部按“常开触点接入、得电有效”来处理这样现场布线习惯统一梯形图里也好理解。热继电器这种故障信号有人喜欢接常闭触点、用常闭点进程序我倾向于接常开故障时触点闭合程序里通过常开指令检测逻辑反而不容易拧巴。2.3 传感器选型与配合细节传感器选型上货车到位检测我用的对射式光电开关一组投光器一组受光器货车车斗遮挡光束后给出到位信号。这类传感器抗粉尘能力比反射式强一些但要注意定期清洁镜片料场粉尘大镜片一脏就会误动作。满车料位开关我建议用阻旋式它的叶片被物料挡住后停止旋转输出开关量比电容式、音叉式更耐灰尘和物料冲击缺点是叶片会磨损需要备几个叶片换着用。料仓低料位开关和满车料位开关的区别很多人搞不清。满车料位开关装在装车现场的车斗上方检测的是车斗里的物料高度低料位开关装在料仓侧壁检测的是料仓内部有没有存料。两个信号在梯形图里的作用完全不同前者是正常流程的终止信号后者是故障保护信号千万别混。3. 梯形图程序逐段精讲从启停到满车停机的完整逻辑这节是文章的核心。我会按照S7-200语句表STL的形式列出一段示例程序再逐行解释。大家看的时候不要只看指令重点是理解每一段逻辑要解决的问题这样换到任何PLC平台都能写出同样的控制效果。3.1 手动/自动切换与启动自锁Network 1 手动/自动切换与流程运行标志 LD I0.6 // 自动模式 A I0.0 // 启动按钮按下 O M0.0 // 自锁流程运行中保持 AN I0.1 // 停止按钮 AN M0.1 // 故障锁存 AN M0.2 // 装车完成标志未复位 M0.0 // 自动流程运行标志这段程序是整个自动流程的“总开关”。I0.6是手动/自动选择开关只有切到自动模式时启动按钮按下才有效。M0.0自锁意思是M0.0一旦得电就会通过自身的常开触点一直保持即使启动按钮松开也不掉电。这样设计以后操作工只需要点一下启动PLC就会自动把整个流程跑完不用一直按着按钮。停止按钮用的是常闭指令AN意味着只要I0.1接通即按钮被按下M0.0立即断开流程终止。这个安排让急停具有最高优先级。故障锁存M0.1得电时AN指令也会切断M0.0确保故障状态下无法继续运行。M0.2是装车完成标志它得电后同样会切断M0.0让流程处于“完成”状态等司机开走货车后复位。3.2 皮带启动与闸门开启的先后顺序Network 2 皮带电机启动 LD M0.0 // 自动流程运行 AN M0.1 // 无故障 AN I0.5 // 热继电器未动作 Q0.0 // 皮带电机运行 Network 3 闸门延时开启 LD Q0.0 // 皮带已运行 TON T37, 30 // 延时3秒100ms定时器 LD T37 AN M0.1 // 无故障 Q0.1 // 打开出料闸门Network 2里皮带的启动条件很干净自动流程运行、没有故障锁存、热继电器没有动作。只要这三个条件满足皮带接触器就吸合电机带动皮带开始空载运行。Network 3这里用了TON接通延时定时器。Q0.0得电后T37开始计时经过30个100毫秒也就是3秒后T37的常开触点接通Q0.1电磁阀得电气动插板阀打开物料才开始落到皮带上。这个3秒延时就是前面提到的关键经验先让皮带空载启动并平稳运行再下料避免皮带启动瞬间承受“启动冲击物料负载”的双重压力。3.3 满车判断与延时停机为什么先关闸门再停皮带Network 4 满车检测与装车完成置位 LD I0.3 // 满车料位开关动作 A Q0.1 // 闸门确实在打开状态 EU // 上升沿触发 S M0.2, 1 // 置位装车完成标志 Network 5 满车后的停料顺序 LD M0.2 // 装车完成 R Q0.1, 1 // 立即关闭闸门 LD M0.2 TON T38, 20 // 延时2秒 LD T38 R Q0.0, 1 // 延时后停止皮带满车信号的处理是整个程序的点睛之笔。I0.3满车料位开关动作后并不直接停皮带而是先置位M0.2完成标志再由M0.2去执行“先关闸门、延时停皮带”的序列。这里用了EU上升沿指令保证满车信号每次只触发一次置位避免信号抖动导致逻辑反复进出。A Q0.1这个条件很多人会忽略它的意思是只有闸门处于打开状态时满车信号才算有效。如果你按启动后还没来得及开闸门车辆那边恰巧有物料误触发料位开关这个条件可以把误动作拦住。为什么先关闸门再停皮带因为皮带从闸门口到车斗这一段是有一段距离的闸门一关皮带上已经落下的那部分物料还能继续往前走掉进车斗里。让皮带再转2秒刚好把这段余料送干净。如果满车信号一到就直接停皮带余料就留在皮带上下次启动时皮带带着一堆料启动容易过载而且残留料在停机期间可能板结清理起来很麻烦。3.4 缺料保护、过载联锁与急停复位Network 6 故障检测与报警 LD I0.4 // 低料位开关 O I0.5 // 热继电器故障 M0.1 // 故障锁存 Network 7 故障后的设备停止 LD M0.1 // 故障锁存 R Q0.0, 1 // 停止皮带 R Q0.1, 1 // 关闭闸门 Q0.3 // 故障报警输出 Network 8 故障复位 LD I0.1 // 停止按钮按下 R M0.1, 1 // 清除故障锁存 R M0.2, 1 // 清除完成标志低料位信号I0.4和热继电器故障信号I0.5任何一个动作M0.1都会被置位。M0.1得电后程序会立刻关掉皮带和闸门同时接通Q0.3报警器提醒值班人员处理。把故障做成锁存是非常必要的。因为I0.4和I0.5是瞬时信号比如皮带过载只是一瞬间的事热继电器动作后自己又复位了如果不锁存PLC的扫描周期极短很可能错过这个信号设备继续运行非常危险。锁存之后不管故障信号在不在报警都会保持直到人工确认排除后按停止按钮才会把M0.1复位重新开始下一轮装车。这里顺便说一句M0.2装车完成标志也用同一个停止按钮复位这样逻辑就闭环了流程跑完一台车操作工按一下停止设备回到初始待机状态迎接下一辆货车进场。3.5 批次计数与装车完成指示Network 9 装车批次计数 LD M0.2 // 装车完成标志 EU // 上升沿 LD SM0.1 // 首次扫描清零 O I0.1 // 停止按钮复位 CTU C0, 9999 // 增计数器 Network 10 装车完成指示 LD T38 // 皮带延时停机的瞬时信号 S Q0.2, 1 // 点亮完成指示灯批次计数是我单独加的功能。C0计数器每个装车完成标志的上升沿加1值班室可以在组态王画面上直接看到今天装了多少车配合后续的数据统计非常方便。SM0.1是PLC首次扫描脉冲程序上电时清零一次计数器I0.1复位是在人工复位流程时也让批次计数清零想要保留累计数据的话可以去掉这行看个人需求。4. 组态王监控画面把PLC内部逻辑搬到屏幕上梯形图写得再好也只是电控柜里的事。值班室的操作人员不可能天天看梯形图他们需要的是一个直观的画面料仓里还有多少料、皮带转没转、闸门开没开、今天装了几车。组态王这部分要做的就是这件事它就像给PLC装了一块“远程仪表盘”。4.1 设备配置与通信参数组态王和PLC通信的方式取决于现场硬件连接。最常见的两种一种是用PC/PPI电缆把PLC的通信口和电脑串口连起来走PPI协议另一种是给S7-200扩展以太网模块走TCP方式连接。后者布线方便、传输速度快而且可以和梯形图在线监控同时使用我推荐优先用这种。组态王里新建设备时驱动类型一定要选对S7-200对应的驱动是“S7-200 TCP”。通信参数包括PLC的IP地址、端口号、机架号和槽号。端口默认102机架槽号如果只有一个PLC一般是0和0这些参数在STEP 7-Micro/WIN的系统块里能查得到两边必须逐一对应。稍有偏差就会出现“设备初始化失败”的提示这也是新手最常见的问题。4.2 变量定义I/O变量是怎么和PLC点位对应的组态王画面上的每一个动态元素背后都对应一个变量。变量分内存变量和I/O变量内存变量只在组态王内部使用I/O变量才是和PLC实时交换数据的通道。定义I/O变量时需要指定连接设备、寄存器类型、寄存器地址和数据类型。比如要把PLC的Q0.0皮带电机显示在画面上就要定义一个I/O离散变量连接设备选S7-200寄存器类型选Q寄存器地址写0.0数据类型选Bit。同理I0.2货车到位、I0.3满车信号、M0.1故障锁存都按这个规则定义成I/O离散变量。计数器C0的当前值需要显示的话寄存器类型选C数据类型可以选整数组态王就会周期性地从PLC读取计数器数值。这里有个细节组态王里寄存器地址的写法S7-200的C区可以直接写0或者1代表计数器编号具体语法以驱动说明为准配好之后在“测试”按钮里能看到实时数据变化。4.3 画面设计与动画连接画面设计的原则就一条让值班人员一眼看懂现场状态。我的做法是画一个侧视流程图从左到右依次是料仓、闸门、皮带、落料口、货车车斗。料仓部分用一个矩形表示仓体中间画一条料位线料位高度可以用内存变量模拟或者如果有模拟量料位计就用I/O实数变量驱动一个填充动作看起来就是仓里的料在减少。闸门部分用两个小矩形表示插板阀的阀板通过水平移动或可见性动画连接Q0.1变量闸门打开时显示开启状态关闭时恢复。皮带部分画一个滚筒加一条输送带输送带的填充图案可以设置成沿水平方向移动连接Q0.0变量皮带运行时画面动起来特别有现场感。货车车斗用一个矩形表示车斗满车信号I0.3动作时车斗内填充颜色变化直观提示“装满了”。指示灯启动、停止、装车完成、故障报警分别用不同颜色的圆形控件连接对应的Q、I变量颜色变化能扫一眼就抓住。动画连接是组态王里比较有趣的部分填充、旋转、移动、闪烁、颜色变化都可以和变量绑定。调试的时候用模拟运行功能可以在没有PLC的情况下先看画面效果这一步对新手非常友好多试几次就熟了。4.4 报警事件配置报警配置很容易被忽略但生产现场非常依赖它。组态王里可以把低料位I0.4、热继电器I0.5、故障锁存M0.1这些变量配置成报警变量设置报警优先级和文本描述比如“1号料仓低料位请及时补料”“皮带电机过载请检查设备”。报警发生后组态王会自动记录报警时间、报警变量、恢复时间形成报警记录。值班人员可以通过声音报警、画面上红色的报警条第一时间发现问题事后还可以查历史报警记录排查故障原因。这块配置不难重点在于变量定义时勾选“允许报警”报警文本写得明确具体别写“故障1”这种让人猜的说明。5. 模拟调试与现场联调我踩过的那些坑程序写完之后不等于万事大吉从编程软件到PLC、再到组态王画面中间每一步都可能出问题。这里把我实际调试中遇到的高频坑整理一遍希望能帮大家少走弯路。5.1 用Micro/WIN仿真验证逻辑如果手头没有PLC实体可以用STEP 7-Micro/WIN自带的仿真功能先跑一遍程序逻辑。把梯形图编译下载到仿真器里手动强制I0.0、I0.2、I0.3这些输入信号观察Q0.0、Q0.1输出和T37、T38的计时过程逻辑跑通了再去现场能省去大量硬碰硬的时间。仿真时特别注意TON定时器的时间基准。S7-200的T37号定时器是100毫秒时基所以30代表3秒不是0.3秒。很多初学者在这里翻车延时时间算错现场动作节奏全乱。不同编号的定时器时基不同用之前查一下手册或者干脆用带“定时器号时基”注释的方式写清楚。5.2 组态王连不上PLC的常见原因这个坑出现的频率最高。常见原因无非这么几类第一PLC的IP地址和组态王设备配置里的IP不一致或者电脑网卡和PLC不在同一个网段Ping不通第二驱动选错比如S7-200的驱动和S7-300的驱动混用看着都是西门子协议完全不一样第三S7-200本体上电后要在系统块里确认远程访问是开放的否则上位机读不到数据第四组态王工程运行前要先进入“运行系统”工程浏览器里配置好的设备连接在开发状态下不生效这个细节我见过不止一个人卡住。还有一种情况是Micro/WIN在线监控和组态王同时连同一个PLC的通信口两个软件抢占通讯地址导致组态王时断时续。解决方式是尽量用以太网模块单独给组态王一路通讯把串口留给编程调试用。5.3 现场干扰与接地问题料场的环境比办公室恶劣得多变频器、大功率电机一开PLC通信偶尔会乱输入信号偶尔会误触发。我在现场处理过类情况最终方案基本是这几点通讯电缆用屏蔽双绞线屏蔽层单端接地PLC和变频器分开放置控制柜内动力线和信号线分槽走线输入传感器电缆远离动力电缆必要的时候给传感器供电加隔离变压器。干扰问题看起来玄学其实本质就是信号完整性问题。现场联调时带上万用表碰到信号异常先量一下传感器供电是否稳定、触点是否真的断开再怀疑干扰。有时候传感器镜片脏了、接线端子松了也会造成相同症状不要一上来就怪电磁干扰。5.4 调速与余料控制的现场验证程序里T37的3秒和T38的2秒是我在牧场测试下来比较稳的参数但不同现场要微调。皮带长的皮带启动到稳定的时间就要长一些T37适当加大皮带短且下料快的T38可以缩短到1.5秒。最稳的验证方式是现场放一车空车试装观察闸门关闭到皮带停止这段时间里皮带上的余料是否刚好全部落入车斗不要差太多。另外闸门动作有个机械延迟电磁阀得电到插板阀完全打开需要零点几秒甚至更久梯形图里如果对时序要求高可以再增加一个“闸门开到位”的限位开关输入作为下料开始的真实条件。我这套程序用延时来规避机械延迟成本低精度也够用但如果是大口径闸门、物料流动性又强建议还是加开到位检测。6. 从一车一料到多仓调度这套系统的扩展空间这个项目虽然是以单料仓、单货车通道为原型做的但它的逻辑框架完全可以往上扩展。我见过不少用户做完了这套基础控制又开始琢磨提高产能的事。6.1 多料仓出料与优先级仲裁如果一个装车位要对应多个料仓比如砂石料场不同粒径的骨料分仓存放每次装车还需要根据订单切换料种控制逻辑就要增加一个“料仓选择”环节。可以在组态王上做一个料仓选择下拉框把选择结果写到PLC的V区寄存器里梯形图里通过比较指令判断当前选中的是几号仓再决定开启哪个闸门。多个料仓同时请求出料时要让PLC按优先级顺序处理避免两个闸门同时开造成皮带超载。优先级用顺序比较指令实现一条装车流程结束后再释放下一个请求逻辑不复杂但能显著提升系统稳定性和灵活性。6.2 地磅定量装车与Modbus仪表接入如果客户对装车重量有严格要求光靠料位开关是不够的。现在很多料场升级为“定量装车”货车在地磅上PLC通过Modbus通讯定时读取地磅仪表重量值当重量达到设定上限时就触发满车停机。这样料位开关可以作为辅助参考定量才是主判据。S7-200通过自由口通讯或者扩展通讯模块可以和大多数市售称重仪表通讯程序里无非是把连续读取的重量值存到V区寄存器再和预设值比较。组态王那一边把设定值和当前重量都做成画面元素司机或操作工可以直接看着屏幕输入目标重量比在现场盯着料位更直观。6.3 数据报表与生产统计组态王的报表功能可以把每天的装车批次、累计重量、设备运行时间自动写入数据表。配合前面C0计数器甚至不需要另外配置数据库组态王自带的历史趋势曲线和数据报表就能满足基本需求。车间主任想了解这周一共装了多吨料、哪台设备停机时间最长点开报表就能查不需要人工抄表。这类延伸一开始不用做得太满先把基础装车控制跑稳再根据现场反馈逐步增加功能。我做这类项目的习惯是先保证设备开得起来、停得下来、出了问题喊得响再考虑效率和数据底层逻辑扎实了上层功能只是锦上添花。最后分享一个我自己用过很多次的小技巧设计梯形图时每一条输出指令旁边都要用注释写清楚“为什么是这个条件”比如“A Q0.1 // 闸门确实在打开状态防止误触发”。等过两三个月回头维护程序你会感谢当时的自己。这套系统的PLC程序我后来又重构了几个版本但核心的“先启皮带、延时开闸满车先关闸、延时停皮带”这个顺序逻辑一直没变过它在现场真的扛得住考验。

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

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

免费获取报价 →
↑