ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于S7-200和组态王的载人索道控制系统设计与安全联锁实践

基于S7-200和组态王的载人索道控制系统设计与安全联锁实践 载人索道的控制系统是个非常典型的“看起来简单、抠细节要命”的项目一条钢索、几十个吊厢几个按钮一按电机带着钢索跑起来就行——但真正开始做的时候才会发现安全触点、张紧机构、风速联锁、抱闸时序这些东西全部纠缠在一起。这篇文章基于我用S7-200 PLC和组态王完成的一套循环式固定抱索器索道控制系统把架构选型、硬件配置、核心逻辑和上位机搭建过程完整拆开讲一遍。如果你正准备接手类似的存量项目改造或者想了解老一代工控组合在这种高安全等级设备上怎么做这篇文章应该能给你一份可以直接对照的底稿。先说清楚我下面写的具体流程是按常见的循环式固定抱索器索道来设计的。你手里如果遇到的是脱挂式、往复式索道部分逻辑需要调整但整体的控制框架——安全回路为主、PLC逻辑为辅、上位机监控——是通用的怎么变都跳不出去。1. 这套控制系统到底要解决什么问题1.1 载人索道的工艺和控制需求索道本身的机械结构不复杂驱动站一端装驱动轮和电机减速机迂回站一端装迂回轮钢丝绳在两端之间形成一个闭环。吊厢通过抱索器夹在钢索上钢索一走吊厢就跟着走。真正麻烦的是它的运行条件。载人索道的运行速度不是恒定的。站内上下客区域速度必须压得很低一般是0.3m/s左右防止乘客上下吊厢时出危险出了站之后可以提到高速常见的大概在5~6m/s具体要按线路长度、支架数量、抱索器结构来定。而且速度变化不能太突兀加速平缓程度直接关系到吊厢在钢索上的稳定性加速太猛会造成吊厢摆动、抱索器异常磨损。除了速度还有一堆现场条件必须参与控制。风速高了要降速、再高要停车张紧系统出问题要停车钢丝绳脱索、断绳、超速这些极端故障要有独立的保护手段。这些都是“有人坐在上面”的设备才有的要求比普通物料输送线严格得多。所以索道控制系统拆开来看其实就四块驱动控制启停、高低速切换、加减速斜坡。安全监控安全回路巡检、风速、张紧、超速、脱索。站内联锁站内上下客区域的状态确认、车库门、推车机构等。上位监控状态显示、故障记录、运行曲线、报警查询。这四块里面最核心的不是驱动控制而是安全监控。这一点贯穿整个设计。1.2 为什么选S7-200而不是更“新”的PLC这里要先说清楚一个背景S7-200西门子官方早就停产了现在新项目一般默认S7-1200或者S7-200 SMART。但这套系统我仍然选了S7-200核心原因是存量设备场景不是新装设备。我做这类项目时经常遇到的情况是现场原本就是S7-200配组态王机械部分还能用很多年业主的要求是改造电控而不是把机械全部换掉。这时候如果强行上S7-1200意味着PLC程序全部重写、接线全部重来、组态王驱动要换成本和时间都翻倍。而继续用S7-200工艺逻辑我可以完全复用甚至旧的I/O表都还能对得上施工周期能压到很短。另外从控制需求本身来看S7-200也完全够用。载人索道的控制本质上是一个顺序逻辑加联锁逻辑的系统I/O点数一般就在三四十点上下CPU224 XP自带14路数字量输入、10路数字量输出、2路模拟量输入加上一两个扩展模块就覆盖了。它的扫描周期是按毫秒计的但真正的安全保护本来就不靠PLC扫描周期来保证那是硬线安全回路干的事。所以在这个场景里S7-200的性能不是瓶颈稳定性和维护便利性才是重点。一句话总结能选S7-200不是因为它在技术上有优势而是它在存量项目里成本最低、风险最小、运维最熟悉。1.3 组态王在这里扮演什么角色组态王在工控圈子里是个老面孔了尤其6.60这个版本很多存量系统到现在还在跑。它在索道控制里的定位就是上位机监控层负责所有“给人看”和“帮人记”的活。具体来说它干三件事。第一把PLC里的状态变量实时显示在画面上运行速度、风速、张紧压力、当前状态一屏看全。第二把故障报警做成事件记录哪次急停、哪次超速、哪次风速高什么时间触发的都存下来。第三把主要参数做成趋势曲线方便运维人员判断设备健康状态。为什么选组态王而不是WinCC或者别的老实说这个项目里选它主要因为成熟。组态王和S7-200的PPI通信驱动是十几年的老组合稳定得不能再稳定。国内用这套组合的存量项目太多业主的维修电工基本都见过出了问题也好找人问。而且组态王的画面组态效率很高图库和控件能省掉大量画图时间。有一点要给新人提个醒现在网上搜“组态王6.60sp4下载”能出来一堆链接但很多都是带捆绑的旧包安装包和授权一定要走正规渠道。装的时候也要注意老版本的组态王在Win7以上的系统里跑经常会因为权限和兼容性问题出现无法打开工程、加密锁不识别这类毛病最好用兼容模式加管理员权限运行。2. 总体架构与硬件配置2.1 三级控制架构与安全回路设计整个控制系统我习惯分成三级来看而不是简单地“PLC加触摸屏”。第一级是现场层包括操作按钮、急停按钮、限位开关、接近开关、风速仪、压力变送器、编码器这些东西。它们负责把现场物理状态变成电信号。第二级是逻辑控制层就是S7-200 PLC。它负责运行逻辑、联锁判断、状态管理、故障记录以及和上位机通信。所有“正常情况下的动作顺序”都由它管。第三级是执行层包括变频器、制动器、润滑泵、蜂鸣器、指示灯。PLC输出信号驱动这些设备动作形成闭环。在这个三级架构之外还耸立着一条完全独立于PLC的“安全回路”。这条回路把所有急停按钮、超速继电器、断绳保护、张紧异常、脱索开关这些安全触点的常闭点串在一起直接控制安全继电器。安全继电器的触点再直接串进变频器使能和制动器释放回路。为什么要单独搞一条不经过PLC的回路因为PLC再可靠它也是程序在跑程序跑飞了、模块坏了、通信断了都有可能发生。载人设备的安全链路不能依赖一个可能故障的控制器。安全回路是纯硬线任何一个触点断开立刻切断执行机构的电源响应时间就是继电器动作时间毫秒级不需要等PLC扫描。PLC在安全回路里的角色是“监测”。通过安全继电器的辅助触点PLC能知道回路现在是通还是断从而记录故障、锁定复位条件、在画面上显示状态。但它永远不能绕过或者强制恢复这条回路。这个设计思路是整个项目的灵魂。2.2 PLC选型与I/O分配硬件选型这一步我反复算过点数之后定了一套很常规的配置CPU单元CPU224 XP DC/DC/DC。自带14DI/10DO关键它还集成2路模拟量输入和1路模拟量输出这样风速仪和张力变送器就不用额外加模拟量扩展模块了。数字量扩展EM223 16DI/16DO。主要给现场逻辑点预留余量。通信方案S7-200自带的PPI口走串口接上位机组态王用PPI驱动直接读写。如果距离远或者要上以太网可以加CP243-1模块但很多存量项目其实一直用串口稳定得很。实际的I/O分配表我列一个简表方便直观感受点数规模信号类型地址说明数字量输入I0.0高速运行按钮数字量输入I0.1低速运行按钮数字量输入I0.2停止按钮数字量输入I0.3紧急停止按钮数字量输入I0.4安全回路反馈数字量输入I0.5变频器运行中数字量输入I0.6变频器故障数字量输入I0.7工作制动器打开反馈数字量输入I1.0安全制动器闭合反馈数字量输入I1.1张紧配重上限数字量输入I1.2张紧配重下限数字量输入I1.3风速高报警数字量输入I1.4风速极高报警数字量输入I1.5超速开关数字量输入I1.6防脱索开关数字量输出Q0.0变频器运行使能数字量输出Q0.1高速选通数字量输出Q0.2低速选通数字量输出Q0.3工作制动器释放数字量输出Q0.4安全制动器释放数字量输出Q0.5预告响铃数字量输出Q0.6故障蜂鸣器数字量输出Q0.7运行指示灯模拟量输入AIW0风速仪4-20mA模拟量输入AIW2张紧压力4-20mA注意CPU224 XP自带的模拟量输入地址是AIW0和AIW2中间隔了一个字的偏移这个跟扩展模块的编址规则不一样编程的时候特别容易看错。2.3 关键传感器和执行机构选型传感器这块有几个关键点值得单独说。测速和超速检测是载人索道最敏感的部分。常规做法是在驱动轮和迂回轮上分别装接近开关检测轮子转过的齿数或者挡片次数PLC用高速计数器算转速。这属于软超速保护。真正切断安全回路的超速保护我习惯用独立的转速继电器常见品牌有泰和、PF这些设定在额定速度的110%到115%动作动作后直接断开安全回路。设计原则上始终是硬件保护优先PLC辅助确认。风速仪用的是带加热功能的机械式风速仪输出4-20mA安装在站房顶部无遮挡的位置。选型时一定要考虑当地气候低温地区不带加热的风速仪一旦结冰数据全废。张紧力检测用液压张紧油缸上的压力变送器同样是4-20mA。张紧配重的位置用两个限位开关配重到上限说明张紧力不足到下限说明异常伸长都参与联锁。执行机构里最重要的是制动器。索道一般配两套制动器工作制动器是正常停车用的靠液力或者电磁释放失电制动安全制动器是弹簧力制动纯机械保持一般动作在驱动轮上。我的控制策略是正常停车先工作制动器制动紧急情况两套一起上。这个顺序在程序里要写得非常清楚不能含糊。变频器选型必须用重载型索道启动是大惯量负载普通轻载型变频器在启动瞬间就可能过流跳闸。我用的是带S型斜坡功能、支持端子控制的变频器启动和停止的加减速曲线完全交给变频器内部的斜坡生成器处理PLC只负责给“启动”“高速”“低速”这些开关量命令。3. 核心控制逻辑设计3.1 启动停车时序与加减速控制PLC程序结构我分成三块主程序、初始化子程序、模拟量处理中断。初始化用SM0.1首次扫描标志触发把所有输出清零、状态字复位、定时器复位。主程序里是一个典型的状态机用变量MW0保存当前状态待机、低速运行、高速运行、故障停车、检修模式。启动流程看上去简单但实际上每一步都要等反馈不能光发命令就完事。以低速启动为例完整顺序是检查启动允许条件安全回路闭合、无故障、制动器在制动位、张紧正常、风速低于停车值。启动润滑泵同时响预告铃3到5秒提醒站内人员设备要动了。变频器解除封锁给低速选通信号。等变频器反馈“运行中”再延时0.5秒释放工作制动器。索道进入低速运行。这里有一个关键点必须先让变频器建立力矩再放制动器。如果制动器先打开变频器还没来得及建立力矩索道会在重力作用下溜车尤其是线路有坡段的时候后果不堪设想。这个时序问题是我在调试时反复被现实教育过的。低速转高速的条件更严格。首先风速必须低于降速值张紧正常安全回路闭合其次索道必须已经处于稳定低速运行状态不能刚启动就立刻切高速。切换时把高速选通信号给出去变频器按照预设的S型斜坡升速。所谓S型斜坡就是加速过程开始和结束比较缓、中间稍快这种曲线最适合吊厢这种悬吊负载冲击小。停车顺序反过来。正常停车先退出高速索道降到低速等速度稳定后工作制动器先闭合然后变频器才停止。制动器闭合后还要确认“已闭合反馈”到位如果反馈不到位程序要报制动器故障不能直接断电走人。紧急停车不按正常流程走安全回路直接切断变频器使能和制动器回路工作制动器和安全制动器同时动作PLC在程序里只负责记录故障状态和触发蜂鸣器。3.2 安全联锁哪些该做进程序哪些必须留在硬线这是载人设备项目和普通项目最大的分水岭。普通设备出了故障顶多停产索道出了故障是安全事故所以我在设计安全逻辑时有一条铁律凡是涉及人身安全的保护必须有独立于PLC的硬线回路PLC只能监测、记录、限制复位不能承担保护动作本身。硬线安全回路串联的触点包括紧急停止按钮、超速继电器、断绳保护、防脱索、张紧配重极限、安全制动器状态。任何一个触点断开安全继电器失电其触点直接切断变频器使能和制动器释放回路。注意这里用的是常闭逻辑——断线、断电、触点坏都按故障处理不会误进入“安全”状态。PLC程序里的联锁分成可复位和不可复位两类。可复位故障包括风速高、张紧轻度异常这类条件恢复后允许自动或手动复位。不可复位故障包括急停、超速、断绳、制动器反馈异常这些故障在程序里必须用“故障锁存”标志位记住只有人工到现场确认、按下复位按钮并且故障触点已经完全恢复才能清除。高速和低速输出是典型的恶作剧陷阱。如果程序里只做软件互锁万一某个输出继电器触点粘连高速和低速信号同时到了变频器端子上轻则逻辑混乱重则设备异常动作。所以我不仅程序里互锁输出端子的继电器也做硬件互锁变频器侧再把这两个端子设为互斥输入。三层保险缺一不可。还有一个必须提的检修模式。索道检修时线路有人作业这时候操作人员想的是让吊厢以极低速度移动。很多人第一反应是“检修模式是不是要绕过安全回路”这个想法非常危险。检修模式永远不能绕过安全回路它只是把速度限制在更低的值所有急停、超速、张紧保护依然全部在线。我见过有人调试时图省事用一根短接线把某个安全触点短接这种做法在任何设备上都是大忌载人设备上更是零容忍。3.3 模拟量采集与超速辅助保护模拟量在S7-200里的处理要特别注意量程转换。S7-200的模拟量输入模块在4-20mA模式下的原始数据范围是6400到320000-20mA对应0到32000。如果用4-20mA的传感器不扣掉6400这个偏置算出来的工程值全是偏大的。我在程序里用浮点指令做转换核心公式很简单实际值 ((原始浮点值 - 6400.0) / (32000.0 - 6400.0)) × 量程上限以风速仪0到60m/s为例20mA满量程对应原始值320004mA对应6400。计算时先把AIW0转成浮点数减去6400除以25600再乘以60得到的就是当前风速。张紧压力和这个完全一样只是量程上限改一下。实时性要求高的模拟量我会放在定时中断里处理。S7-200里可以用SMB34定时中断每100毫秒执行一次中断程序把模拟量采样值累加取最近五次平均值作为有效值。这样既滤掉了大部分高频干扰又不会让响应速度慢到影响联锁判断。风速判断做两段式。达到降速值例如15m/s时索道自动从高速切回低速风速回落到一定回滞区间后可以恢复正常。达到停车值例如20m/s时PLC请求停车。注意风速停车后不能自动重启必须等风速明显回落后人工确认防止风口阵风导致反复启停。超速辅助保护用高速计数器实现。接近开关接到CPU的高速计数输入端定时中断里读取计数值换算成转速。当转速超过额定速度的115%时程序里置超速故障位同时发出紧急停车指令。不过这里必须强调这只是辅助手段真正断开安全回路的还是前面说的独立转速继电器。PLC的超速判断和硬件超速保护是两套独立系统任何一套动作都应该能停车但硬件那一路才是最终兜底。4. 组态王监控系统的搭建4.1 工程规划与设备通信配置组态王这边的工作我从一开始就把它当成一个独立的小工程来管理而不是等PLC调试完了才临时补做。新建工程时我习惯用“索道监控_站名_日期”这种方式命名工程存储在专门的目录下别往C盘系统盘塞老版本组态王工程文件多、体积大放系统盘容易出现权限问题。建立通信的第一步是在组态王里配置设备。选择“COM1”或者实际使用的串口然后在设备驱动列表里找到“西门子S7-200”的串口驱动。配置时要填PLC站号S7-200默认站号是2波特率一般用9600也可以设成187.5kbps但前提是PLC侧的通信端口参数必须和这里完全一致。这个一致性检查是通信调试永远的第一个排查点。很多人在这一步容易翻车的原因在于USB转串口线。组态王老版本对USB转串口的兼容性一般经常出现设备管理器里看着是COM3组态王里也选了COM3就是通信失败。这种情况先确认USB转串口的驱动是不是正常再把波特率调低到9600试很多时候是USB转串口线在高波特率下丢包。组态王6.60在Win7/10上跑还有一个老问题安装完后打开工程报错或者加密锁不识别。常规处理办法是右键组态王图标兼容性选“Windows XP SP3”同时勾选“以管理员身份运行此程序”。加密锁驱动要单独装装完重启一次再打开基本就稳定了。4.2 变量定义与数据字典要点组态王的数据字典是整个监控系统最容易乱的地方变量一多命名不统一后面做画面时全靠记忆找变量那是灾难现场。我的习惯是给变量统一加前缀HMI_开头的表示组态王内存变量PLC_开头的表示I/O变量。I/O变量的地址映射必须严格对着PLC的寄存器表填。离散变量填I0.0、M0.0这种点地址整型变量填VW地址实型变量填VD地址。这里有一个很重要的经验模拟量换算不要放在组态王里做而是让PLC先算好把工程量结果存到VD区组态王直接读VD。好处是两边数据一致组态王这边就不需要配线性转换、不需要考虑6400偏置画面上的显示值就是工程值排查问题的时候少操很多心。数据字典里对每个变量要设置好初始值和最小值最大值。实型变量的最大值最小值会影响组态王的显示范围如果设得不对画面上的数据可能显示成乱码或者负的巨大值。报警变量还要单独设报警死区防止变量在报警临界值附近抖动导致报警频繁触发。4.3 画面组态与图库使用技巧组态王的画面做出来不好看是公认的但它在中小型监控项目里胜在效率。索道监控画面我通常做四张总貌画面、驱动控制画面、系统参数画面、报警查询画面。总貌画面是核心。我一开始是从图库管理器里找现成图形拖出来的——电机图、泵图、指示灯、按钮这些都有。但索道这种专用设备钢索、支架、吊厢图库里几乎没有现成的得自己在画面上画。画法也不难钢索用直线加粗支架用几个矩形组合吊厢用圆角矩形加一个抱索器线段表示。关键是给吊厢做“水平移动”动画连接让它沿着钢索方向平移看起来就像索道在跑现场值班人员看得很有感觉。用图库有一个坑必须提醒图库里的图元往往自带动画连接或者脚本直接修改它的变量时容易出怪问题比如整个图形乱跑、隐藏内容莫名显示。我的做法是从图库里拖出图形后右键查看它的动画连接把不需要的属性全部删掉重新绑定自己的变量。别嫌麻烦这个步骤能省后面大量调试时间。操作画面上放启动、停止、高速运行、低速运行、复位按钮。启动和高速这类关键操作我在组态王里做二次确认点一下按钮弹出一个确认窗口再点一次才真正把命令发给PLC。这种“人为制造麻烦”的操作方式是载人设备的标配能挡住相当一部分误操作。按钮的命令语言可以关联到画面自身的命令语言里也可以直接写到按钮的“弹起时”动作中。组态王的命令语言是类C语法给按钮绑定PLC变量时直接赋R/W即可比如把“高速运行”按钮弹起动作写成PLC_StartHi 1;然后PLC侧检测到这个位上升沿后执行启动逻辑。4.4 报警、趋势曲线和历史记录报警这块我在组态王里单独建了报警组把急停、超速、断绳、风速高报、变频器故障、制动器反馈异常这些事件都归到一个组里。报警优先级也分了一下安全类报警最高一般提示性报警最低。画面里放一个报警窗口控件实时显示当前活动的报警值班人员一眼就能看到现在是什么故障。历史趋势曲线我主要记录三个变量当前速度、风速、张紧压力。组态王里要先创建历史库指定要记录的变量和采样间隔。采样间隔我习惯设1秒太密了文件增长太快运行一年几十个G普通硬盘扛不住太疏了故障瞬态又抓不到。1秒对于索道监控是够用的真要分析更快的瞬态可以查报警记录的时间戳来定位。运行记录也很重要。组态王的数据改变事件可以触发命令语言把变量值和时间写到文本文件里。我在项目里给主要故障事件做了这样的文本记录相当于一个简单的黑匣子。出故障的时候先看组态王报警记录再对PLC里的故障记忆寄存器基本能把原因和时间捋清楚。5. 调试实录与常见问题排查5.1 PPI通信连不上的排查流程这个项目调通信的时候我吃过好几次亏整理成一份排查流程照着走基本能定位第一步看硬件。USB转串口线驱动装了没有、设备管理器里识别成哪个COM口、PC/PPI电缆的DIP开关位置是否正确。S7-200用的是PPI协议PC/PPI电缆上有的带5V供电开关用电缆给PLC端口供电的时候要拨对。第二步看PLC侧参数。用Micro/WIN软件连接PLC双击左侧“通讯”图标确认PLC地址和波特率。PLC默认站号是2波特率默认9.6kbps。如果有人改过组态王里必须跟着改。第三步看组态王设备配置。设备地址是不是2波特率是不是和PLC一致COM口有没有被别的软件占用。第四步用组态王的设备测试功能。随便填一个变量地址比如VW0执行一次读写测试。如果能读写成功说明通信路径没问题再回头看数据字典里的变量地址是不是填错了。还有一个很常见的现象Micro/WIN在线监控着PLC的时候组态王这边通信经常超时。这是因为PPI是多主站轮询机制两个软件同时在线上会抢通信机会。调试的时候不要开着Micro/WIN监控还指着组态王实时刷新那不是软件坏了是协议特性决定的。5.2 现场干扰导致的模拟量漂移现场调试时机房环境是很恶劣的变频器、接触器都是干扰源模拟量信号最容易遭殃。我遇到最典型的现象是变频器一启动风速仪的AIW值上下跳几十个字张紧压力偶尔直接跳成0。排查下来原因有三个。第一个是信号线和动力电缆走了同一个桥架变频器输出侧的谐波直接耦合进模拟量信号。第二个是屏蔽层多点接地形成地环路变频器工作时地线上有电流噪声全进信号里了。第三个是PLC和变频器共用一个电源变频器负载变化时电源波动传导到模拟量通道。处理办法按优先级来先把屏蔽层改成单端接地在PLC柜侧接地信号线从动力电缆桥架里挪出来单独走线槽和动力电缆保持至少300毫米距离再不行就加信号隔离器比如菲尼克斯的MCR系列把4-20mA信号隔离一遍再进PLC变频器那边把载波频率从默认值降低比如降到2kHz也能明显减少高频干扰输出。除了硬件措施程序里也要做软件滤波。我在定时中断里除了取平均还加了一道限幅滤波如果当前采样值和上一次有效值的偏差超过500个字就认为这个样本是干扰直接丢弃。两个措施叠加后实际运行中模拟量显示基本稳定联锁判断也没有再误动作过。5.3 联锁测试清单和验收要点载人设备的调试不能只测功能更重要的是测“故障发生时的行为”。我整理了一份联锁测试清单每一条都要实际模拟一遍故障不能走查程序就算完事。测试项目测试方法通过标准全速运行时急停高速运行中按下急停按钮主回路断电两套制动器闭合0.5秒内索道停止加速张紧配重上限短接张紧配重上限触点索道自动切换到低速运行风速极高停车给风速仪模拟超停车值信号索道停车且不能自动复位必须人工确认变频器故障强制变频器故障输出索道按紧急停车流程制动PLC记录变频器故障高速低速互锁同时触发高速和低速选通输出侧只有一路有效另一路被硬件互锁阻断超速保护模拟转速继电器动作安全回路断开PLC记录超速故障无法直接复位安全回路断开启动断开安全回路后按启动按钮索道不允许启动启动条件被锁定测试时还要关注一个细节每次测试用的故障模拟方法要对设备没有破坏性。短接触点和强制输出这些手段做完之后必须恢复原状并且逐点核对。我每次测试完会在I/O表上打钩确认所有临时短接线全部拆除才允许进入下一步试运行。试运行阶段我建议再加一道保险白班按正常运营工况跑夜班做故障模拟测试连续三天无异常才提交验收。索道这种设备试运行期跑出来的数据比任何理论计算都有说服力。最后说点个人的体会。做载人设备控制和做普通输送线完全是两种心态。普通产线一个误动作最多报废几个工件索道一个误动作背后就是几十个乘客。所以在联锁测试阶段我宁愿把每个故障都模拟一遍把每一版程序的位置都记录下来。调试那阵子我电脑里光程序存档就有七八个版本每个版本改动说明都写在文件名后缀里。这套S7-200加组态王的老组合技术上谈不上新奇但胜在稳定、透明、可维护。只要安全回路设计得扎实PLC程序写得规矩它就能给你多年不间断的稳定运行。做载人设备的同行我真心建议把“安全回路优先、程序逻辑为辅”这句话刻在脑海里多一道硬线保护就是多一层对乘客的交代。
返回列表