ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

西门子S7-1200输送带控制系统:从硬件选型到通讯调试全解析

西门子S7-1200输送带控制系统:从硬件选型到通讯调试全解析 做工业自动化这些年跟输送带打的交道实在不少。从最初懵懂地照着图纸接线到后来独立负责整套控制系统的设计、编程与调试这中间踩过的坑和悟出来的道道远比书本上来得深刻。今天不谈空泛的理论就结合我近期负责的一个真实项目——基于西门子PLC的输送带控制系统把这个从零到一的过程完整拆解给你看。无论你是刚入行的电气小白、正在做课程设计的在校生还是需要带项目的现场工程师这篇文章里关于硬件选型、程序架构、通讯实战和调试排障的经验应该都能让你少走几个月的弯路。这个项目本质上解决的是一个非常朴素的工业需求用PLC作为大脑让多条输送带按照预设的逻辑顺序启停、调速、联锁保护同时与变频器、触摸屏等设备顺畅通讯最终形成一套既能手动单动调试、又能全自动稳定运行的控制系统。它不复杂但足够典型几乎涵盖了中小型自动化产线控制的所有核心要素。1. 内容整体设计与思路拆解1.1 控制需求到底该怎么解读敲定技术方案之前我习惯先把用户那些零散的口头需求翻译成量化的控制逻辑。比方说用户只讲了一句物料从A点运到B点中间不能堆料这句话落到纸面上就变成了至少三条硬性逻辑顺启逻辑下游皮带必须先启动上游皮带延时启动防止物料堆积在转运点。逆停逻辑上游皮带先停止下游皮带延时停止保证皮带上残留的物料能被运送干净。联锁保护逻辑急停按钮拍下后全线设备立即停止若是某条皮带重载过载报警其上游设备必须同步停机。这个需求翻译的过程是整个项目的地基。我见过不少同行为了追求所谓的高端功能一上来就惦记着用数组、用工艺对象、用PID结果忽略了最根本的电机起停控制最后在现场被最基本的逻辑问题折腾得焦头烂额。做输送带控制核心思路永远是先保证设备的启停时序正确、保护逻辑可靠再去考虑调速精度、能耗优化等加分项。这个主次关系一旦颠倒项目大概率要出问题。1.2 为什么选定这套硬件组合这次项目中CPU我选择的是西门子S7-1200系列具体型号为CPU 1214C DC/DC/DC配合一台森兰SB200系列变频器触摸屏则选用MCGS的10寸昆仑通态。这套组合绝非随意拼凑背后有几个很实在的考量性价比与功能平衡S7-1200定位在小型PLC但功能极其能打板载高速计数、PID自整定、以太网通讯全都有对于输送带这种数字量为主、少量模拟量调速的场景算力绰绰有余没必要上到S7-1500增加成本。通讯的开放性S7-1200自带以太网口支持Profinet和Modbus TCP和变频器、触摸屏的通讯都非常方便。特别是Modbus TCP几乎成了工业底层设备互联的普通话。后期可扩展性CPU 1214C板载14DI/10DO如果现场点位超出了可以直接扩展SM 1223模块无需更换CPU给后续改造留足余地。至于触摸屏选MCGS而不是西门子WinCC或者精简面板原因也很现实MCGS在中小项目里组态效率高、价格更低而且它支持跨网段通讯这个特性在分站距离较远、不在同一网段的现场环境里简直是救命的稻草。后面第五部分我会专门展开讲述这个跨网段通讯的配置过程那是这个项目里一个极其典型的隐蔽难点。2. 硬件选型与电气设计要点2.1 I/O点位统计与模块选型逻辑电气设计的第一步不是画图而是先把I/O点位数清楚这直接决定了硬件配置单长什么样。这次项目控制的是两条输送带1号主皮带与2号从动皮带外加一个振动给料机。梳理出来的IO表如下信号类型注释数量数字量输入DI启动按钮、停止按钮、急停按钮、1#皮带运行反馈、2#皮带运行反馈、1#皮带过载、2#皮带过载、给料机运行反馈8数字量输出DO1#皮带接触器、2#皮带接触器、给料机接触器、故障指示灯、运行指示灯5模拟量输出AO变频器频率给定0-10V或4-20mA1CPU 1214C板载14DI/10DO不需要扩展任何模块数字量点位用起来绰绰有余。但这里要特别提醒板载IO的点位排布和PLC内部字节地址映射并不是一一对应用户就能瞎接的。接线前务必查阅S7-1200系统手册确认输入映像区I0.0-I0.7、I1.0-I1.5的对应端子位置否则程序写好了、线接错了找问题能让你怀疑人生。2.2 主回路与控制回路的细节设计电气图纸设计里我最想强调的其实是控制回路中常闭触点的用法。急停按钮务必使用常闭触点串联进控制回路这样一旦急停线路断线设备默认就是停机状态符合失效安全原则。而启动按钮则使用常开触点按下时接通松手后靠接触器自锁保持。主回路方面变频器驱动1#主皮带电机2#皮带电机和振动给料机则由接触器直接启停。为什么这样分配核心原因是主皮带是系统瓶颈需要进行软启动和调速来匹配给料速度而2号皮带和给料机只要转速恒定没必要为它们增加变频器成本。这种关键设备变频驱动非关键设备工频驱动的搭配是输送线设计中很常见且经济的组合方式。接线有几处细节值得记录下来电机动力线采用3×2.5mm²屏蔽电缆屏蔽层单端接地防止变频器高频谐波干扰PLC模拟量信号。编码器反馈线如果项目需要精准测速必须与动力线分开走桥架间距至少20cm否则码盘信号会被干扰得乱七八糟。PLC的24V DC电源由独立开关电源供给切忌和变频器的控制端子共用电源。2.3 MCGS与S7-1200跨网段通讯的配置方案这是项目中最容易出问题的环节我单独拿出来讲。现场的情况是PLC控制柜在配电室IP地址是192.168.0.10而触摸屏安装在操作台所处网段是192.168.1.5。两个不同网段的设备要通讯MCGS触摸屏在这里要承担起网关的重任。MCGS软件里配置S7-1200驱动时不能直接在本地IP中填写与PLC相同网段的地址而是要巧妙利用其跨网段特性。具体操作路径是在MCGS设备组态里选择西门子S7-1200远程IP填写PLC的实际IP地址192.168.0.10本地IP则填写触摸屏所在网段的一个空闲地址192.168.1.6。同时必须在MCGS运行环境的系统参数里找到网关或路由设置填入能够连通两个网段的路由器地址。这套方案的本质逻辑是MCGS触摸屏本身就是一台嵌入式工控机具备路由转发能力它既可以作为HMI设备也能充当你这个小型控制网络中的软路由。但这样做的前提是两个网段之间必须物理上已经打通也就是有一台路由器或三层交换机同时连接了这两个VLAN否则触摸屏再智能也是巧妇难为无米之炊。如果现场没有现成的路由器还有一种更笨但绝对稳妥的办法把触摸屏和PLC设置在同一个网段内通过VLAN子接口做隔离然后把触摸屏配成管理口的IP这样虽然多了一个配置步骤但可靠性反而更高。3. 程序架构与核心逻辑实现3.1 程序块规划OB、FC、FB的分工思维很多初学者打开博途TIA Portal后习惯把所有的逻辑都堆在OB1主组织块里这样搞500行以内还行一旦程序上了千行排查问题简直是一场噩梦。这次项目我严格执行了模块化编程思想程序结构如下OB1主循环仅负责调用各个功能FC块本身不写具体控制逻辑。FC1模式选择处理手动/自动模式的切换逻辑。FC2皮带控制封装两条皮带和给料机的顺启逆停控制逻辑。FC3故障处理集中处理过载、急停、通讯超时等故障信号输出报警和停机指令。FB1电机控制用一个多功能FB来封装单台电机的启停、自锁、反馈检测和保护逻辑通过多重背景数据块DB来分别控制两台皮带和一台给料机大幅减少重复编程。这种架构的好处是显而易见的新增一台设备时不需要新增任何代码只需要在DB块里新增一个多重背景实例并把对应的IO点位绑定到FB1的输入输出参数上就行。这就是标准化编程带来的复利效应。3.2 顺启逆停时序的梯形图实现细节输送带控制最核心的顺启逆停逻辑我用了最简单的定时器TON来实现但在两个细节上做了不同于教科书的处理。第一个细节是启动预报警。在皮带电机实际启动前先驱动一个蜂鸣器或警示灯闪烁3秒TON延时3秒提醒现场人员设备即将启动然后才真正接通接触器。这个功能在书本例题里几乎不会出现但在真实工厂里这是安全操作规程的硬性要求。第二个细节是停止时序的旁路条件。正常停机流程是逆停给料机立即停、2#皮带延时5秒停、1#皮带延时15秒停。但如果在停机过程中触发了急停或过载故障就必须立即切断所有输出跳过延时过程。这里我用了一个中间变量M_FAULT来区分正常停车和故障停车两条路径逻辑清晰也避免了因为故障信号被延时继电器误屏蔽导致设备无法快速停机的严重问题。下面是1#主皮带自动模式下的梯形图逻辑要点我用文字描述关键网络网络1自动模式允许条件判断。只有当FC1输出的模式标志M_AUTO为TRUE且没有急停信号且没有过载故障时才允许启动逻辑继续执行。网络21#皮带启动。启动按钮I0.0的上升沿或者是给料机反馈信号异常需要联动启动时置位Q0.01#皮带接触器同时启动T1启动预警定时器。注意这里使用的是置位指令而不是保持型输出原因是置位/复位结构在联动逻辑里更稳定不会因为扫描周期内的中间变量翻转而导致输出抖动。网络3T1定时时间到且M_AUTO为TRUE时Q1.0变频器启动信号输出TRUE。如果M_AUTO为FALSE则强制复位Q1.0。这种写法让我在调试时节省了大量时间因为每一台设备的启停动作都可以在程序监控表里一目了然地看到是由哪个条件触发的逻辑追踪路径非常清晰。3.3 变频器频率给定的Modbus通讯方案前面提到1#皮带电机由森兰SB200变频器驱动频率给定信号我用的是Modbus RTU通讯方式而不是传统的模拟量端子。原因很简单模拟量端子给定容易受到干扰而且接线复杂Modbus通讯只需要两根屏蔽双绞线RS485 A/B就能搞定现场调试尤为方便。S7-1200做Modbus RTU主站需要调用两个系统功能块MB_COMM_LOAD用于配置串口通信模块或板载RS485口的通讯参数和MB_MASTER用于发送读写请求。在OB100初始化中调用MB_COMM_LOAD将板载串口配置为波特率9600、无校验、8数据位、1停止位的标准格式。然后在FC2里循环调用MB_MASTER向变频器写入频率设定值。森兰SB200变频器的Modbus通讯参数需要提前在变频器面板上设置好通讯协议Modbus RTU站号01从站地址波特率9600数据格式8N1运行指令来源通讯控制需要将F0.01设置为与通讯控制相关具体看该型号手册频率给定寄存器的地址通常是40001也就是4x区域的第一个保持寄存器不同批次可能有差异我调试时用Modscan工具先扫描确认了一遍地址确认后才正式写入程序。这项先确认地址再写程序的习惯在通讯类项目里极其重要因为绝大多数通讯问题都出在地址不对应而非硬件故障。4. 实操过程与核心环节实现4.1 博途软件配置与PLC程序的下载全流程在博途TIA Portal中新建项目后选项S7-1200 CPU型号第一次连接PLC时最容易出问题的环节是无法搜索到CPU。针对这个问题我总结了一套非常高效的排查顺序检查电脑网口与PLC的物理连接确认网线插在CPU的PROFINET口上而不是插在了其他无用端口。在博途的在线访问窗口中查看电脑网卡是否识别到了设备。检查电脑本地连接的IP地址必须与PLC在同一个网段。例如PLC默认地址是192.168.0.1那电脑就要设置成192.168.0.10之类的同网段地址。如果物理连接和IP都对还是搜不到把电脑的防火墙关掉尤其是Windows防火墙对博途发现的拦截是导致明明连着却搜不到的头号元凶。最后再用可访问的设备功能重新搜索一次这时候通常都能看到PLC。搜到PLC后博途会提示在线与离线状态不一致强行下载前建议先做一次一致性检查。很多初学者在这里直接点下载结果把程序覆盖了才发现下载的是空程序那可就彻底凉了。正确做法是先执行一次上载Upload将PLC里现有的程序备份到电脑上哪怕你觉得里面的程序没用了也建议先备份再做覆盖操作这能为你避免一次级的灾难性失误。4.2 MCGS触摸屏画面的组态与变量连接触摸屏画面组态这里核心工作是创建一个皮带监控画面包含两组关键元素状态指示灯和操作按钮。状态指示灯的数据源连接PLC的Q0.0和Q0.1地址用来反馈两台皮带电机的运行状态操作按钮则对应M0.0和M0.1手动模式下的启动脉冲。MCGS里新建变量时需要指定变量类型这里必须选择开关型或数值型并正确填入对应的PLC地址。要注意MCGS的地址格式和博途的地址格式不一样博途里用Q0.0MCGS里要写成Q0.0还是I0.0需要根据所选驱动而定。我之前因为这里没有仔细核对导致画面上按钮点下去没有反应排查了很久才发现是驱动里地址偏移了一位。这真是一个极其蠢但极其常见的错误。为了避免这个问题推荐在MCGS设备组态里添加变量时先用设备调试功能逐一测试每个地址的读写是否正常确认无误后再绑定到画面上。磨刀不误砍柴工这个调试步骤能省下后续大把的现场试错时间。4.3 利用OPC UA实现PLC数据与上位机交互项目中我还用到了OPC UA协议将PLC中关键设备状态比如电机电流、运行状态、故障报警采集到上位机数据看板系统中。S7-1200从固件版本V4.0开始原生支持OPC UA服务器功能不需要额外硬件模块。在博途里启用OPC UA服务器需要以下几个步骤在CPU属性的OPC UA选项卡中勾选激活OPC UA服务器。设置安全策略通常选择Basic256Sha256或None测试环境。创建一个OPC UA 服务器接口的DB块将需要对外共享的数据比如DB1里的电机状态字、故障字节都映射到这个接口块中。在外部系统如KEPServerEX、Node-RED或自研Python客户端中填写PLC的IP地址和端口号4840即可读取到共享的数据。需要注意的是西门子OPC UA服务器默认暴露的数据结构是平面化的如果你希望外部系统读取到的是层次化的设备信息如Device1/Status这样的路径需要精确设计这个接口DB块的嵌套结构。我一开始贪图省事把所有的数据塞进了一个扁平数组里外部系统解析起来极其痛苦后来优化成结构体嵌套才顺畅起来。5. 常见问题与排查技巧实录5.1 变频器通讯异常从通讯超时到正常读写的排查过程这是我在这个项目中最深刻的一段经历。PLC与森兰SB200通过RS485通讯程序下载完成后变频器始终报通讯超时。我起初怀疑是通讯线接反了重新核对A/B端后依然无效。这里我犯了自动化调试的大忌——没有前置确认就直接修改程序。后来冷静下来用Modscan工具一款Modbus调试软件直接连接变频器在电脑上尝试读取变频器的运行频率寄存器居然也是超时。这让我确定问题出在硬件层或者变频器设置层而不是PLC侧。检查后发现变频器的通讯协议参数里数据格式被设置成了8E1偶校验而PLC侧配置的是8N1无校验。把两边统一为8N1后Modscan立即就能读取到参数了。为了以防万一我还顺手检查了通信超时时间和重试次数将MB_MASTER的重试次数设置为3次超时时间设置为500ms即便在干扰较大的环境下也能靠重试机制保证通讯不中断。这事的教训非常清晰遇到通讯问题先用第三方工具在同一物理链路上去验证从站是否正常应答可以迅速区分出故障出在主站配置、从站配置还是线路本身。5.2 顺启逆停程序出现变频器启动滞后现象带载调试时发现一个隐蔽问题按下启动按钮后1#皮带变频器启动指令大概延迟了接近3秒才真正输出。我一开始怀疑是程序扫描周期太长但博途监控显示扫描周期只有5ms显然不是这个原因。排查梯形图后发现问题出在启动预警定时器的逻辑上。我的程序里启动按钮按下后置位了Q0.0接触器吸合同时启动了启动预警定时器T1。而变频器的启动指令Q1.0则是在T1延时3秒后才输出。设计初衷是在接触器吸合后、电机得电前给现场3秒预警时间。但现场接线中变频器输出的启动指令和接触器吸合是同时生效的接触器吸合后电机已经得电了再等3秒才有驱动指令导致电机处于有电但不转的状态这既危险又不合理。修正方案将启动预警定时器移到接触器和变频器指令之前。也就是说按下启动按钮后先鸣笛预警3秒预警结束后同时输出接触器吸合指令和变频器启动指令。这样既保留了现场安全预警的效果又避免了电机通电不转的尴尬状态。软件逻辑的时序和现场真实设备的动作时序必须严格对齐程序仿真通过不代表现场就能正常工作这个道理在这件事上体现得淋漓尽致。5.3 触摸屏画面卡死与IP地址冲突的解法有一次在现场调试中MCGS触摸屏在运行两三个小时后突然画面卡死、触摸完全没反应。重启触摸屏后恢复正常但运行一段时间后又复现。第一次出现时我以为是触摸屏硬件散热问题就加了风扇结果问题依旧。后来在触摸屏的系统日志里发现大量IP地址冲突的报警信息。排查网络后发现调试期间为了方便测试我的笔记本电脑也临时设置成了192.168.1.5正好和触摸屏的IP冲突。触摸屏和笔电抢同一个IP网络风暴频繁导致触摸屏通讯堵塞。把笔记本改为自动获取IP地址后连续运行48小时问题彻底消失。这块的经验延伸一下在多设备联调的现场务必做好IP地址规划表。PLC、触摸屏、变频器、上位机、临时调试电脑IP地址必须一一对应严禁随便设置。哪怕现场只有你一个人在调试也要建立这个台账否则就会遇到这种灵异的卡死问题。6. 调试感悟与实用技巧总结关于输送带控制系统的搭建纸上谈兵永远赶不上在现场摸爬滚打。这个项目做下来我有几个非常深刻的体会想分享出来。第一模块化编程带来的安全感远超任何代码技巧。当你在现场盯着几百行乱成一团的梯形图而客户的产线正在停着等你处理故障时那种无从下手的压力会彻底摧毁你。而功能块封装合理的话只需要监控DB块里的变量就能迅速定位问题。建议所有搞PLC的同仁从第一个正式项目起就养成模块化的习惯。第二通讯规划一定要做在最前面。这个项目里PLC、变频器、触摸屏、上位机四种设备要互相通讯光是IP地址规划、通讯参数我就写了两页纸的表格。凡是能提前验证的比如用Modscan先测变频器绝不拖到现场再解决。第三程序里一定要预留足够的调试接口。我在项目里额外做了几个万能模拟测试点比如M100.0作为模拟启动信号M100.1作为模拟过载信号。在无设备环境下做程序验证时直接强制这些点就能把整个逻辑流程跑通大大缩短现场调试周期。如果你正准备入手一套小型的输送带PLC控制系统可以按这个配置起步西门子S7-1200或S7-200 SMART预算更紧张的话 一台支持Modbus的变频器 MCGS触摸屏 若干继电器和接触器。这套配置的总成本可以控制在一个相当友好的范围内但覆盖的知识点几乎囊括了工业自动化控制的所有入门精髓IO控制、时序逻辑、通讯协议、HMI交互。把这套系统吃透其他更复杂的自动化设备对你来说也只是一层窗户纸的事了。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进