ARTICLE DETAIL

资讯详情

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

S7-200 PLC与MCGS组态实现交通灯控制系统:从梯形图到HMI联调全解析

S7-200 PLC与MCGS组态实现交通灯控制系统:从梯形图到HMI联调全解析 做PLC交通灯项目的朋友应该不少这几乎是每个学自动化、电气工程的人都绕不开的经典课题。最近我整理了手上这套S7-200 MCGS交通灯系统把梯形图、接线图、IO分配和组态画面整个串起来补一补自己在HMI与PLC联调上的疏忽也希望能给正在做毕业设计或者刚接触工控的朋友一个完整参考。这套系统不是单纯让红绿灯闪起来它涉及硬件接线、PLC程序逻辑、HMI画面通信整个流程走完能把PLC基础、MCGS组态、现场调试这串技能挨个练一遍。我先说个大概控制核心选西门子S7-200系列触摸屏用MCGS嵌入版交通灯时序按城市十字路口常用方案来做包含东西方向、南北方向的红、黄、绿三色灯外加启动、急停、夜间黄闪这几个功能。梯形图部分用自锁回路加定时器顺序切换组态画面里做十字路口示意图通过变量连接实现实时状态显示和一键控制。下面我按设计思路、硬件接线、梯形图、组态画面、现场调试这几个方向逐一讲透。1. 项目整体设计与思路拆解1.1 系统需求与功能分析交通灯控制的核心是时序。一个标准的十字路口东西方向和南北方向不能同时放行必须按照固定时间循环切换。一般来说有四个主状态状态一南北绿灯亮东西红灯亮持续20秒状态二南北黄灯亮东西红灯亮持续3秒状态三东西绿灯亮南北红灯亮持续20秒状态四东西黄灯亮南北红灯亮持续3秒。四个状态加起来的周期是46秒。这是最基本的配时方案实际工程里会根据车流量调整有的路口还会加全红过渡时间防止上一个方向的车还没清空下一个方向就放行。这个全红时间通常放在黄灯结束之后比如1到2秒。做毕设或者练习时建议先以四状态循环为主全红过渡可以当作扩展功能加进去写程序时也更好理解。除了正常时序系统还要考虑几个现实场景。第一必须有启动和停止控制不能一上电就跑否则调试时非常被动。第二要设计急停按钮遇到异常能立刻让所有红灯亮或者所有灯灭掉保证安全。第三最好加一个夜间模式深夜车少的时候切换成黄闪也就是四个方向黄灯同时闪烁提醒车辆观察通行。这些功能在梯形图里实现起来不麻烦但能显著提升系统的完整度。1.2 为什么选择S7-200与MCGS组合S7-200虽然是老型号西门子官方已经宣布停产多年但在国内工控圈子里存量非常大很多高校、职业院校的实训室还在用二手设备也便宜。对初学者来说S7-200的指令体系比S7-1200/1500简单没有复杂的数据块和调用机制入门门槛低而且网上能找到的资料非常丰富。MCGS嵌入版是国内工控领域用得很多的组态软件它和S7-200通过PPI协议通信非常稳定开发环境是“所见即所得”画一个指示灯、一个按钮绑好变量就能用。相比WinCC、InTouch这些重型组态软件MCGS安装包小、授权方便对个人学习和毕业设计很友好。把S7-200和MCGS搭配在一起花最少的钱就能搭出一套完整的小型控制系统这也是很多非标设备厂家做简单单机自动化时的惯用组合。1.3 整体方案与设计步骤先画系统框图PLC作为控制核心接收启动按钮、急停按钮、模式选择开关等输入信号内部通过梯形图逻辑运算输出信号驱动信号灯同时通过串口和MCGS触摸屏交换数据触摸屏负责显示状态和下发控制指令。设计步骤我建议按这个顺序来先把IO分配表写清楚根据IO表画电气接线图和原理图画程序流程图或者状态转移图在STEP 7-Micro/WIN里编写梯形图并仿真在MCGS里做组态画面配置通信参数最后把PLC和触摸屏联起来调试。为什么第一步一定是IO分配因为PLC接线、组态变量、梯形图地址都依赖这个表。如果IO表不统一后面全乱套。我自己吃过亏写着写着把一个灯接在Q0.2组态里却绑定Q0.4最后排查了半天才发现是变量表对不上。2. 硬件接线图与原理图解析2.1 IO分配表及选型这台系统用的S7-200具体型号可以是CPU224或者CPU226。CPU224有14个输入和10个输出本系统需求大概6个输入、6个输出如果考虑扩展CPU224足够。实际选型时还要确认输出类型常见封装有继电器输出和晶体管输出。带交通灯这种交流或直流负载用继电器输出更省心可以直接驱动小功率灯组但要注意触点电流不能超过规格。下面是我推荐的IO分配表信号类型地址功能说明输入I0.0启动按钮常开输入I0.1急停按钮常闭输入I0.2夜间模式选择开关输入I0.3手动单步切换按钮可选输出Q0.0东西方向红灯输出Q0.1东西方向黄灯输出Q0.2东西方向绿灯输出Q0.3南北方向红灯输出Q0.4南北方向黄灯输出Q0.5南北方向绿灯这里说明一下为什么东西方向只需要一组红黄绿输出。虽然在真实路口同一个方向会有左转灯、直行灯、右转灯但基础项目为了简化把东西两个进口道的同色信号灯并联到同一个PLC输出点只要负载总电流没超过输出点容量这种接法是没问题的。南北方向同样处理。2.2 接线原理图说明先说PLC供电。S7-200 CPU224一般是AC220V供电L和N接220VPE做保护接地。输出端公共端1L会输出到24V DC这是传感器或中间继电器常用的电源也可以直接用这个24V驱动LED信号灯省去外接开关电源。输入回路的接线方式S7-200的输入可以支持源型或漏型接法。常用做法是DC24V正极经过按钮接到输入端子输入公共端1M接到DC24V负极。也就是按钮一端接24V另一端接I0.0I0.1急停按钮因为用的是常闭触点一端接24V另一端接I0.1。这个接法在PLC端看来按钮闭合时输入点有24V高电平信号。输出回路如果是继电器输出公共端1L接电源相线每个Q点输出控制对应的灯。比如Q0.0接东西红灯一端红灯另一端接公共端1L所接电源的零线。MCGS触摸屏和PLC通信一般走RS485触摸屏的COM口A、B分别接S7-200 PORT0的3号脚和8号脚注意A接A、B接B别交叉。通信线用屏蔽双绞线屏蔽层单端接地。原理图里还要在所有输出公共线上画保护措施。负载如果是感性元件比如中间继电器线圈必须在感性负载两端并联续流二极管或RC吸收电路否则断开瞬间会产生很高的反向电动势轻则干扰PLC运行重则烧输出触点。交通灯如果是LED灯不会产生感性冲击但如果用白炽灯或者接中间继电器这步不能省。2.3 硬件注意事项有几个硬件细节经常被忽略我单独拎出来讲。第一个是输出点容量。CPU224继电器输出每点允许的最大电流一般是2A驱动额定功率几十瓦的白炽灯没太大问题但如果你用的大型LED信号灯一组的电流可能达到几百毫安问题不大。不过千万不能在输出端并多个大功率灯总电流超了会发热熔断。稳妥做法是每路灯用一个中间继电器过渡PLC只驱动继电器线圈继电器触点再驱动大功率灯。第二个是输入端的公共端接法。S7-200不同版本对源型、漏型的支持比较灵活如果接反了输入指示灯不亮程序怎么按都没反应。接线前一定要看CPU面板上的接线示意图确认1M端子接多少伏。第三个是接地。PLC的PE端一定要接好地否则现场变频器、伺服电机一启动交通灯程序就可能乱跳。MCGS触摸屏的电源和通信线也要避免与动力线扎在一起特别是长距离走线时必须分槽铺设。第四个是急停逻辑。急停按钮建议用常闭触点串在或者通过输入信号接入程序一旦松手或线路断了PLC能立刻识别。如果用常开触点断线时急停就失效了这是安全回路设计的大忌。3. 梯形图程序设计与解释3.1 时序分析与定时器规划梯形图程序的骨架是状态切换。在S7-200里最常用的实现方式有两种一种是用定时器配合置位复位指令一种是用步进指令SCR。对于初学者我推荐先用定时器加状态位的方式逻辑直观排查问题容易。状态位可以用M0.1到M0.4分别代表四个主状态M0.1南北绿灯东西红灯M0.2南北黄灯东西红灯M0.3东西绿灯南北红灯M0.4东西黄灯南北红灯。每个状态对应一个定时器。S7-200的TON定时器精度有1ms、10ms、100msT37到T63是100ms精度。20秒就是200个100ms所以TON T37, 2003秒就是TON T38, 30。为什么用100ms精度而不用1ms因为20秒和3秒这类秒级定时100ms精度足够而且精度更高的1ms定时器在扫描周期影响下反而容易产生计时误差。S7-200的扫描周期一般几毫秒到几十毫秒1ms定时器因为分辨率小于扫描周期可能出现当次扫描重复触发或漏计的问题所以能用100ms就不用1ms。3.2 核心梯形图程序逐段解释我先放一个简化的STL程序片段展示核心逻辑再逐段解释。// 网络1初始化脉冲复位所有状态和输出 LD SM0.1 R M0.0, 4 R Q0.0, 6 // 网络2运行标志自锁急停复位 LD I0.0 O M0.0 AN I0.1 M0.0 // 网络3状态1南北绿东西红20秒 LD M0.0 A M0.1 TON T37, 200 Q0.5 Q0.0 // 网络4状态1结束后切换到状态2 LD T37 A M0.1 R M0.1, 1 S M0.2, 1 // 网络5状态2南北黄东西红3秒 LD M0.0 A M0.2 TON T38, 30 Q0.4 Q0.0 // 网络6状态2结束后切换到状态3 LD T38 A M0.2 R M0.2, 1 S M0.3, 1上面只是前几个网络的示意读者在自己的编程软件里写的时候还要加上状态3、状态4以及输出互锁逻辑。下面按网络拆开讲。网络1是初始化。SM0.1是S7-200在CPU切换到RUN状态时第一个扫描周期接通的特殊继电器用它复位M0.0到M0.4这5个状态位同时复位Q0.0到Q0.5这6个输出点。这个网络保证PLC运行时所有状态都是干净的不会因为上次断电前的残留数据导致程序乱跑。网络2是运行标志。启动按钮I0.0接通后M0.0置位并且通过自己的常开触点保持形成自锁。急停按钮I0.1用常闭触点串在回路中如果急停被按下I0.1常闭触点断开M0.0失电复位。这个急停逻辑是硬回路比单纯在程序里用置位复位更直接。网络3和网络5分别是两个主状态。状态1里M0.1为1定时器T37开始计时同时南北绿灯Q0.5和东西红灯Q0.0被置为输出。这里把某个输出直接等于状态位是梯形图里常见的“组合逻辑”写法比较简洁。状态2里M0.2为1T38计时南北黄灯Q0.4和东西红灯Q0.0输出。网络4和网络6是状态切换。当T37计时到把M0.1复位同时置位M0.2让系统从状态1切到状态2。切到状态2之后因为T37的常开触点会随着T37逻辑结束而断开为了避免重复触发必须把M0.1复位。实际编程里还要在所有状态之间加互锁防止因为干扰或变量扫描顺序问题导致两个状态位同时为1。状态3和状态4的写法完全对称。状态3是东西绿灯Q0.2、南北红灯Q0.3由T39计时20秒状态4是东西黄灯Q0.1、南北红灯Q0.3由T40计时3秒。状态4结束后再由T40把M0.4复位置位M0.1回到状态1完成循环。3.3 安全互锁与手动控制交通灯最怕出现两个方向同时绿灯的“冲突”所以程序里必须做输出互锁。在输出网络中让东西绿灯Q0.2的线圈回路里串入南北绿灯Q0.5的常闭触点同时也让南北绿灯Q0.5的线圈回路串入东西绿灯Q0.2的常闭触点。这样即使状态位逻辑出错硬件逻辑层也不会同时让两个绿灯亮。同理同方向的红灯和绿灯也绝对不能同时亮。东西红灯Q0.0和东西绿灯Q0.2互锁南北红灯Q0.3和南北绿灯Q0.5互锁。黄灯可以例外因为它只作为过渡灯和红灯同时亮在真实路口也是允许的。夜间模式实现起来不复杂。用I0.2作为夜间模式输入当它接通时把M0.0以外的所有状态位全部复位然后激活一个独立的黄闪输出网络。黄闪用SM0.5这是S7-200自带的0.5秒周期方波信号也就是亮0.5秒灭0.5秒。让东西黄灯Q0.1和南北黄灯Q0.4同时跟随SM0.5输出就能实现全方向黄闪。手动单步调试也建议保留。用一个输入I0.3每按下一次程序自动从当前状态切到下一个状态。这个功能做出来后现场接线时可以直接手动验证每一组灯不需要干等20秒才切换排查速度能快很多。具体逻辑里把状态切换条件从“定时器到达”扩展成“定时器到达或者手动按钮上升沿”用一个中间变量统一管理即可。3.4 程序下载与仿真验证S7-200编程软件是STEP 7-Micro/WIN 4.0 SP9虽然老但很好用。写完程序后先编译在软件里用“仿真”菜单调用S7-200 Simulator 2.0模拟器。模拟器支持大部分常用指令能模拟输入点、输出点、定时器、计数器连位状态都能监视。仿真时把启动按钮对应的I0.0强制置1观察M状态位是否按20秒和3秒周期循环。如果发现定时器始终不触发先看T37定时器是否被复位逻辑反复清零。常见错误是有人用定时器自身的常闭触点做自复位结果一个扫描周期内又马上被清零永远计时不到目标值。仿真通过后再下载到真机。下载前检查通信设置编程软件里选择PC/PPI cableCOM口号要和电脑设备管理器里一致波特率设为9600PLC站号设为2。下载完成后一定要把PLC切到RUN状态然后用软件里的状态监控图表查看T37当前值变化这一步能让你确定是程序问题还是外部接线问题。4. MCGS组态画面设计与应用4.1 组态画面设计MCGS嵌入版开发环境分成“设备窗口”、“用户窗口”、“实时数据库”三个主要区域。我们打开MCGS组态环境新建工程后第一件事不是急着画图而是把PLC变量建好。变量表里要包括I0.0启动按钮类型是开关型I0.1急停按钮I0.2夜间模式Q0.0到Q0.5六个输出点类型都是开关型M0.1到M0.4四个状态位类型也是开关型。实时数据库就是PLC与界面之间沟通的桥梁。界面上的指示灯连接Q0.0变量按钮连接I0.0变量状态文本连接M0.1变量。这样MCGS才能通过通信驱动获得实时数据。用户窗口里画十字路口示意图两条马路交叉每条马路画三个圆形指示灯红黄绿从上到下排列。MCGS里可以用基本图元画圆也可以使用工具箱里的“指示灯”构件。指示灯构件的“动画连接”选择对应的开关型变量值为1时显示绿色图片值为0时显示灰色图片这样PLC输出一通画面上的灯就会变颜色。4.2 MCGS与PLC通信配置通信是整个系统能不能跑起来的关键。MCGS嵌入版7.7软件里需要先在“设备窗口”中添加“通用串口父设备”再添加子设备“西门子S7-200”。子设备的通信参数要跟PLC一致波特率选9600数据位8位停止位1位无校验PLC站号设为2。硬件连接上MCGS触摸屏通常带一个COM口和两个以太网口。如果用COM口使用RS485接线触摸屏的A/B分别连S7-200 PORT0的3号脚和8号脚。注意S7-200 PORT0是男头DB93号脚是B8号脚是A不同厂家的触摸屏可能标注正好相反所以不能只看触点编号要实测通信报文或者用两个屏交叉验证。最稳妥的做法是先查触摸屏COM口的RS485定义再对照PLC PORT0定义A接A、B接B。配置完成后在“设备调试”窗口里可以看到通信状态。成功的话设备状态会从“未连接”变成“运行”变量值也会跟着变化。如果通信不上优先排查三件事COM口号选没选对、站号是不是2、波特率是不是一致。这三个问题占了80%的通信故障原因。4.3 组态画面功能扩展除了显示和按钮MCGS还能做报警、趋势图、配方、用户权限管理等高级功能。交通灯项目里可以做“运行状态报警”比如当PLC长时间停留在某个状态超过30秒说明程序异常触摸屏弹出报警框。这个功能利用MCGS的报警属性把M0.1到M0.4这4个状态位关联成报警变量设置报警条件为全为0并配置报警信息文本。配方功能可以做配时切换。比如把早高峰配时南北绿30秒、东西绿30秒、平峰配时20秒、晚高峰配时25秒存放在配方里触摸屏上放一个“时段选择”下拉框切换时把配方数据写入PLC的数据寄存器。这种方式比直接改程序灵活得多也符合真实工程习惯。用户权限管理也值得加上。MCGS里可以设置多个操作员账号普通操作员只能看到状态不能修改配时参数工程师账号才能进入参数设置窗口。这个虽然只是毕设里的一个加分项但会让人觉得你对工业工程的完整规范有概念。4.4 画面调试与下载组态画面调试时可以先用“模拟运行”模式不连接PLC在屏幕上点击按钮看变量值变化是否正常。然后再切换到真实设备联调模式。下载到触摸屏时用USB方口线连接电脑和触摸屏在MCGS菜单里选择“下载工程”选择“模拟运行并下载”。下载完成后触摸屏会自动重启并进入运行环境。第一次下载可能会遇到驱动缺失的问题安装MCGS附带的多设备驱动包就能解决。联调时的建议顺序先把PLC程序跑起来用编程软件强制某个输出点比如强制Q0.2为1观察触摸屏上的东西绿灯是否变绿。如果不变查实时数据库变量地址绑定是否错误。强制输出正常后再按正常时序运行观察画面状态切换是否和梯形图一致。5. 常见问题与调试技巧实录5.1 常见问题速查表问题可能原因解决方案PLC与MCGS通信不上COM口号配置错误、站号不一致、波特率不匹配、RS485线序接反按顺序逐一排查先用串口调试助手测试通信报文触摸屏画面无变化变量类型不匹配、变量地址绑定错位、设备窗口未启动核对实时数据库变量强制PLC输出点观察画面输出灯不亮公共端未接、触点损坏、输出被互锁逻辑断开、电源容量不够先用编程软件强制Q点再检查接线和中间继电器程序状态循环不正常定时器网络逻辑冲突、状态位未复位、使用定时器自复位将所有状态切换逻辑用“置位复位”实现不要用线圈直接驱动状态位急停按下仍运行急停按钮用了常开触点、程序逻辑未串入常闭改用常闭触点并在程序中使用“AN I0.1”夜间黄闪不亮SM0.5信号未接线、输出被正常时序占用确保进入夜间模式时复位所有状态位并且黄闪输出网络要放在其他输出网络之后5.2 排查方法与实战技巧现场调试交通灯最忌讳一上来就改程序。第一件事看PLC的RUN指示灯是不是亮如果SF灯亮说明程序有编译错误或者硬件故障。第二件事看输入输出指示灯按启动按钮时I0.0有没有对应亮起如果按钮按了灯不亮说明输入回路接线有问题。使用编程软件的状态监控图是一个好习惯。把I0.0、I0.1、M0.1到M0.4、Q0.0到Q0.5全部拖进去实时监控。发现状态卡住不动就看当前定时器的当前值有没有增加如果当前值不变说明定时器使能条件没满足返回去检查状态位。还有个小技巧调试时把定时器时间临时改短比如20秒改成2秒3秒改成1秒这样整个循环只需几秒就能观察一圈。等逻辑验证没问题了再改回真实时长。这个办法看似简单但确实能大幅提升调试效率。如果是MCGS组态画面显示与实际灯状态相反可能是输出点接反了也可能是组态里“取反”属性被勾选。检查实时数据库连接和动画连接的取值条件不要想当然认为硬件接错了。5.3 基于这套系统的扩展方向交通灯系统只是一个起点。把基本功能做顺之后可以往三个方向扩展第一个方向是智能交通加入红外对射传感器或地磁线圈车多方向自动延长绿灯时间这时候梯形图会用到比较指令和加减法运算。第二个方向是多路口协调用两台PLC通过485总线通信或者一台PLC带多个路口实现主干道绿波带控制。第三个方向是加倒计时显示通过PLC的BCD码指令把剩余秒数送给MCGS画面上的数字显示或者外接数码管。如果换个思路这套系统的“信号灯控制”逻辑实际上是一种典型的状态机把灯换成电机、气缸、水泵程序骨架也能复用。所以学PLC不能只看单一案例要把项目背后的时序控制方法吃透以后遇到传送带分拣、机械手动作流程用的都是同一套状态切换思想。我在实际做这套系统的时候最后反而花在整理线缆和固定接头上的时间比写程序还多。这里真心建议后来者每一个端子都压好线鼻子每根线都套上号码管不要在“差不多能用”的心态下糊弄过去。PLC程序出问题有仿真器帮你兜底但接线乱了是真的会炸。把基础做扎实后面加传感器、加通信模块都会顺畅很多。
返回列表