☰
西门子PLC输送带控制系统实战指南:从选型到联调
2026/10/5 4:46:42 网站建设 项目流程

做了这么多年西门子PLC的输送带控制系统,我最大的感受是:最怕的不是工艺复杂,而是选型阶段就把后面的路堵死了。这篇文章不聊教科书上的抽象原理,就聊我怎么从一条真实的输送带项目里把控制系统搭起来——从PLC选型、变频器通讯、触摸屏跨网段访问,到梯形图编程和现场联调踩过的坑,整个过程尽量还原。如果你正在准备西门子PLC相关的毕业设计、非标设备调试,或者刚接手输送线项目,这篇文章可以直接当参考。我会尽量说人话,把为什么这么做也讲清楚。

先交代一下项目背景:现场有三段输送带,分别负责上料、中转、卸料,电机全部走变频器驱动,控制柜里一台西门子S7-200 SMART PLC,触摸屏用MCGS,后来改造时又把数据并入了S7-1500做集中监控。这套配置不算豪华,但非常典型,小到单条皮带,大到几十米的输送线,核心逻辑都是同一套。

1. 先搭框架:一条输送带控制系统的组成与选型逻辑

1.1 输送带控制到底控制什么

很多人以为输送带控制就是"一个启动按钮、一个停止按钮、一个接触器",真到现场就发现不是这么回事。输送带最基础的控制对象是电机,但电机背后还有变频器、减速机、光电传感器、限位开关、跑偏开关、急停拉绳,以及和上下工序联锁的信号。控制逻辑至少包括这几层:

  • 启停控制:本地按钮、触摸屏远程启停、中控室指令启停。
  • 调速控制:根据生产节拍调整带速,或者根据物料流量自动调速。
  • 保护联锁:跑偏、打滑、堵料、过载、急停,任何一个信号触发都要让相关皮带按正确顺序停机。
  • 顺序控制:多段输送带必须按"启动时先下游后上游、停止时先上游后下游"的规则动作,否则物料会在中间堆积。
  • 状态监视:变频器电流、运行频率、累计运行时间、故障代码,这些不仅要显示在触摸屏上,还要传给MES或上位监控系统。

早些年我见过一个项目,只用继电器回路做启停,结果物料堆了两米高,操作工拿着铁锹铲了半天。后来所有皮带都改成PLC控制,逻辑写清楚之后,再没出现过堆料问题。控制系统的价值不是"把按钮换成触摸屏",而是把工艺逻辑固化成稳定可靠的程序,这才是输送带控制的核心。

1.2 200 SMART、1200、1500怎么挑

西门子PLC这个大家族里,输送带项目最常见的就三个系列:S7-200 SMART、S7-1200、S7-1500。选型不是越贵越好,而是看通讯需求、I/O点数和后期扩展空间。

项目S7-200 SMARTS7-1200S7-1500
定位小型经济型中型通用型大中型高端型
编程软件STEP 7 Micro/WIN SMART博途TIA Portal博途TIA Portal
集成以太网口有有有
扩展能力有限,适合几十点中等,最多数百点强,适合复杂系统
通讯协议Modbus RTU/TCP、以太网Modbus、PROFINET、OPC UA(部分)Modbus、PROFINET、OPC UA、更多
典型场景单机设备、小型皮带线中型输送线、多站控制大型生产线、需连接机器人/MES/SCADA

我当时的选型逻辑很简单:三段输送带,本地触摸屏,加一台变频器通讯,用200 SMART就够了,博途授权都不用折腾。后来要接S7-1500做集中监控,本质是数据采集需求,不是控制需求,所以仍然保留200 SMART做现场控制,1500只做数据汇聚。

如果你是新做项目,我的建议是:I/O点数五十个以内、通讯对象只有变频器和触摸屏,直接上S7-200 SMART,便宜、好上手、资料多;如果有几十个I/O且后续可能要接机器人、视觉系统,上S7-1200比较稳;如果是整条产线集中控制,还要和库卡机器人交互、给MES提供OPC UA数据,那就一步到位选S7-1500,别在选型上省这个钱。

2. 变频器通讯那些事:森兰SB200与S7-200 SMART的Modbus RTU实战

2.1 为什么我不用模拟量而用Modbus

控制变频器有两种常见方式:一是模拟量给定,PLC输出0-10V或4-20mA信号控制频率,用继电器触点控制启停;二是通讯给定,PLC通过RS485总线向变频器写频率和启停命令,同时读取运行状态。

输送带项目我强烈建议用通讯,原因有三个。第一,模拟量给定需要模拟量输出模块,成本比RS485通讯高,而且长距离传输容易受干扰,现场变频器一启动,模拟量信号就可能飘。第二,模拟量只能"给指令",收不回变频器的真实输出频率、电流和故障码。输送带卡料时变频器会报过载或堵转故障,你要是收不到故障码,整个联锁逻辑就是瞎的。第三,Modbus RTU在RS485总线上可以挂多台变频器,一台PLC带五台变频器用通讯完全没问题,模拟量带五台就得加一堆模块。

森兰SB200系列是输送带现场特别常见的高性能通用型变频器,本身支持Modbus协议,物理接口就是RS485端子。S7-200 SMART本体上有集成RS485口,两个设备天生就是一对。连接方式:变频器RS485端子A接PLC的RS485信号正,B接负,注意A/B不要接反,屏蔽层一端接地。

2.2 参数匹配与通讯指令的落地细节

通讯的前提是两边参数完全对得上,变频器和PLC任何一边的波特率、数据位、校验位、停止位不一致,结果就是通讯失败。我调试时习惯先把变频器这边的参数设定好,再写PLC程序,这样排查问题更容易。

森兰SB200需要重点确认的几组参数:

  • 控制方式:设为通讯控制,启停命令由RS485给定。
  • 频率来源:设为通讯给定,而不是面板电位器或模拟量端子。
  • 从站地址:每台变频器必须唯一,比如1号、2号、3号。
  • 通讯参数:波特率9600或19200,数据格式8-N-1(8数据位、无校验、1停止位),这是Modbus RTU最常见的配置。
  • 恢复出厂默认后要重新设电机铭牌参数,否则变频器会按默认电机参数运行。

S7-200 SMART侧,编程时主要用两个指令:MBUS_CTRL负责初始化串口,MBUS_MSG负责读写数据。MBUS_CTRL有一个关键参数,就是波特率和校验方式,必须和变频器侧完全一致。每次扫描周期MBUS_MSG只能激活一个读写请求,所以我习惯用一个定时脉冲触发,比如间隔200ms触发一次读请求,间隔200ms再触发一次写请求,错开时间,避免读写冲突。

写频率时,数据要写进变频器对应的通讯地址;读电流、读频率、读故障码时,从对应地址读出来。注意很多变频器的Modbus寄存器地址在PLC侧要映射成"40001"这种地址格式,而且有些手册里地址从0开始,有些从1开始,差一个数整个数据就是乱的。我踩过一次:频率写进去了,但变频器显示频率和设定值差一个量级,查了半天发现是数据格式问题,16位数据和带小数点的比例因子没对上,后来按说明书把数据转换关系写好才正常。

2.3 读写没反应:一次典型的排查链路

有一次第3段输送带变频器突然不给指令了,触摸屏上显示"通讯故障"。我当时的排查顺序是这样的,你可以直接拿去用。

第一步,先确认物理链路。用Modscan这类串口调试工具接到同一根RS485线上,如果能读出变频器的运行状态寄存器,说明链路和变频器都没问题;如果Modscan能读而组态软件不能读,问题基本不在硬件,而在软件配置。

第二步,检查PLC侧MBUS_CTRL的初始化参数。波特率、校验方式、从站地址哪怕只差一个,MSG指令就会报错误代码。把错误代码对照手册翻译出来,往往能直接定位到问题。

第三步,检查MBUS_MSG的读写地址。先读一个已知值的寄存器,比如额定电压、额定电流,如果读回来的数据能对上,再读运行参数,这样能分清是地址错还是数据转换错。

第四步,查A/B线是否接反。RS485是A对应正、B对应负,但很多变频器端子标注是"+"和"-",接反后偶尔也能通,但极其不稳定,经常时通时断。我当时把A/B对调后马上稳定了。

那次最终找到的原因有点狗血:第3段变频器被人按过面板操作,控制方式从通讯改回了面板控制。这种事在现场太常见了,所以我在程序里加了一个"运行模式监测",一旦变频器控制方式被改掉,立刻报警提示,而不是等操作工发现设备不受控。

3. 上位机互联:MCGS触摸屏和S7-1500的跨网段通讯技巧

3.1 跨网段到底卡在哪

很多输送带项目到后期都会遇到一个问题:现场控制柜里的PLC用192.168.1.x网段,办公室上位机或MES用192.168.2.x网段,两边都想互相访问。MCGS触摸屏和S7-1500之间也一样,触摸屏在192.168.1.10,PLC在192.168.2.1,直接PING不通,通讯自然建立不起来。

跨网段这个问题,本质是子网和路由的问题。IP地址由网络部分和主机部分组成,子网掩码决定了哪些设备算同一个网段。192.168.1.10和192.168.2.1如果掩码是255.255.255.0,那就是两个网段,普通二层交换机只能转发同网段流量,跨网段必须经过三层设备做路由。

最简单的做法是统一网段——把触摸屏和PLC的IP都改成192.168.1.x或192.168.2.x,然后用一个交换机连起来。大部分现场网络除了这两台设备没别的东西,统一网段是最省事的方案。但如果现场网络比较复杂,不能随便动IP,那就得靠网关或者路由设备。

S7-1500的PROFINET接口支持多个IP地址,你可以在接口属性里给PLC配置第二个IP,让它同时存在于两个网段。这样MCGS触摸屏通过192.168.1.x访问PLC,上位机通过192.168.2.x访问同一台PLC,互不干扰。这个做法很实用,但要注意:两个网段不能在同一个广播域内造成地址冲突,而且防火墙规则要放行对应端口。

3.2 MCGS连S7-1500的通道配置

MCGS触摸屏通过以太网驱动访问S7-1500时,最容易错的就是驱动设置里的几个参数。首先是PLC的IP地址,这个必须准确无误;其次是端口号,S7协议默认用102,不能乱改;然后是机架号和插槽号,S7-1500在博途里的默认Rack=0、Slot=1,很多人习惯用S7-300的Rack=0、Slot=2,填错就连接不上。

跨网段时,还要在MCGS的本机设置里正确配置网关地址。触摸屏作为客户端,它要访问192.168.2.1,就必须让触摸屏的默认网关指向一个能转发到192.168.2.0网段的三层设备。如果只是把两个设备接在同一个普通交换机上,而没有网关设备,怎么填都没用,因为二层交换机根本不会做路由转发。

给S7-1500启用第二个IP地址时,我一般这样操作:打开博途的以太网接口属性,在IP地址列表里添加一个191.168.1.x的地址,掩码255.255.255.0,同时保留原始的192.168.2.1。下载后在线检查一下两块网卡状态,确定两个地址都生效。这样MCGS就可以用192.168.1.x访问PLC,不影响原有的PROFINET设备通讯。现场实测下来很稳,没有出现掉线。

3.3 OPC UA与Modbus TCP:往上位机送数据的两条路

输送带的数据如果只给触摸屏看,那组态软件就够了。但现在很多项目要上MES、SCADA,或者要让机器人、数控机床、传感器设备的数据统一汇总,这时候就绕不开OPC UA和Modbus TCP这两个协议。

Modbus TCP简单直接,很多第三方系统都支持,把PLC当Modbus服务器用就行。它在读寄存器地址时需要你自己维护数据映射表,好处是兼容性好,坏处是信息模型太弱,数据类型和含义全靠约定,别人接手时看地址表能看晕。

OPC UA的优势在于信息模型强,数据可以带结构、带描述、带报警、带历史。S7-1500本身集成了OPC UA服务器,在博途里勾选启用之后,上位机或者第三方软件(比如KepServer或直接走OPC UA客户端)就能按标签读取数据。对输送带项目来说,运行状态、变频器电流、皮带速度、故障代码这些值都可以用结构化方式暴露出来,MES查询任意一台设备的状态都清清楚楚。

我还碰到过用OPC UA读数控机床和传感器运行数据的场景,和读PLC数据是同一个套路:客户端配置好服务器地址和证书,浏览到对应节点,订阅变化数据。S7-1500做服务器时性能还不错,几十个节点实时刷新没什么压力。和库卡机器人交互也是类似,要么用PROFINET,要么用OPC UA,看机器人那边支持哪种。

4. 梯形图的核心积木:启停、联锁和输送时序的编程套路

4.1 启停逻辑的安全底线

输送带程序里最基础的一段就是启停逻辑,但这段逻辑也是安全风险最高的一段。最简单的自锁回路长这样:启动按钮I0.0按下,输出Q0.0得电并保持;停止按钮I0.1断开,Q0.0复位。这个逻辑在纸上一点问题没有,可是在现场,变频器控制的皮带并不需要一直通电,而是需要"允许运行"信号。

我一般会把启停逻辑分成两层:第一层是"允许运行"标志,由启动按钮、停止按钮、急停信号、跑偏信号、堵料信号共同决定;第二层才是实际输出给变频器的运行信号,由允许运行标志和联锁状态一起控制。这样做的好处是,任何联锁条件触发时,你不会只断掉一台变频器,而是可以根据工艺需要按顺序停掉相关皮带。

安全底线有三条,必须写死:

  • 急停回路必须在PLC之外用硬线直接切断变频器主回路或控制回路,不能完全依赖PLC程序,因为程序可能跑飞,CPU可能停机。
  • 跑偏、拉绳、堵料信号要用常闭触点接入PLC,如果线断了、传感器掉了,系统会按报警处理,而不是误认为正常。
  • 启动前必须检查所有联锁条件,任何一条不满足都禁止输出。

很多初学者喜欢用置位/复位指令做启停,这没问题,但要注意复位顺序和急停优先权。急停信号触发时,所有输出必须无条件复位,这个判断要放在程序最前面。

4.2 多点输送带的顺启逆停

多段输送带最讲究的就是顺序。三分钟讲清楚逻辑:启动时,先启动下游皮带(卸料端),再启动上游皮带(给料端),因为前面的物料要有一条已经转起来的皮带接着,才不会被堵在溜槽里;停止时正好反过来,先停上游皮带,让还在皮带上的物料全部送到下游,等皮带空了再停下游。

实现方法没有想象中复杂,用定时器做级联延时就行。比如三段皮带,启动信号一到来,先把第3段带起来,延时3秒后启动第2段,再延时3秒启动第1段。停止信号来时,先把第1段停下,延时几秒等皮带上的物料走完,再停第2段,再延时几秒停第3段。

延时时间怎么定?看皮带速度和长度。比如皮带长度30米,带速1.5米/秒,物料从上游走到下游大约20秒,那停止时每段之间的延时至少要取一个大于物料走完时间的值。这个用定时器T37(TON)很容易实现,S7-200 SMART里定时器数量也够。我之前给三菱FX3U写类似逻辑时还专门确认过断电保持问题——FX3U的D0-D8默认断电不保持,要通过PLC参数设置保持区;西门子200 SMART的V区大多数可以断电保持,但定时器当前值断电后还是清零的,这一点要记住,别指望定时器状态来恢复现场。

你还可以拿十字路口红绿灯程序来练手:红灯、绿灯、黄灯的时序切换和多段皮带顺启逆停本质一样,都是定时器级的循环状态转移。8人抢答程序也是练位逻辑的好东西,抢答本质是"多输入互斥优先"——和多个启动按钮同时按下时只认先到的一个,逻辑模型一样。

4.3 程序结构从OB到FC怎么分

S7-200 SMART的程序结构简单,主程序写到底也能跑。但换到S7-1200/1500,用博途编程时如果不按OB、FC、DB组织程序,调试起来会非常痛苦。

我通常这样分:

  • OB1:主循环,只负责调用各个功能,不在OB1里堆逻辑。
  • FC_Safety:集中处理急停、跑偏、拉绳、堵料等安全信号。
  • FC_Sequence:处理启停顺序和联锁状态机。
  • FC_VFD_Comm:处理Modbus通讯读写指令,把频率、电流、状态数据写到共享DB。
  • DB_VFD:放所有变频器运行数据,每个变频器一个数据结构。
  • DB_IO_Mapping:把物理I/O点映射成符号变量,程序里只用符号,不直接写I0.3这种地址。

这样做的好处是:哪天某个传感器换点位了,我只需要改I/O映射,不用在几百段程序里找地址。输送带这种项目,传感器点位经常被现场改来改去,有了映射层能省大量时间。另外,程序块加注释也很重要,特别是别人接手时,一个没有备注的联锁段能让调试工程师崩溃。我现在写程序的标准是:每个FC开头必须写清"功能说明、输入条件、输出结果、修改记录",这也是我们做非标项目交付的基本要求。

5. 联调阶段最折磨人的几个坑:搜索不到CPU、EN/ENO和程序保护细节

5.1 搜索不到CPU的完整排查过程

输送带项目到现场最尴尬的一幕就是:打开STEP 7 Micro/WIN SMART,点搜索,结果找不到CPU;但是直接输入IP地址又能连上。这个情况我碰到不止一次,排查链路值得完整记录一下。

当时情况是:电脑直连PLC网口,IP设成了192.168.1.100,PLC默认地址是192.168.1.10,掩码255.255.255.0。理论上同一个网段应该搜得到,但Micro/WIN SMART的搜索功能就是空转半天。后来我发现问题出在搜索设置上——软件默认搜索IP范围不对,或者电脑防火墙拦截了广播包。解决办法很直接:在"查找CPU"对话框里不要只点搜索,而是手动填写目标PLC的IP地址,让软件直接按IP访问;同时把Micro/WIN SMART加入防火墙例外。还有一种情况是CPU被设置了访问密码,搜索能看到但连不上,需要先确认密码。

如果连手动填IP都连不上,就要查网卡了。西门子的PG/PC接口设置里如果选错网卡,比如选了无线网卡而不是有线网卡,肯定连不上。我后来还在工控机上拆开过一条USB-PPI电缆研究过,那种老式的PPI电缆本质是USB转RS485加电平转换,电脑端驱动没装好、或线内部芯片虚焊,都会出现设备管理器能看到但不通讯。遇到这种情况别急着怀疑PLC坏了,先换根线试试最省时间。

S7-1500用博途在线连接也有类似的坑:电脑IP和PLC不在同网段、PROFINET设备名冲突、博途版本太低导致无法识别新固件。我用的原则是:现场调试前先花五分钟把电脑IP、掩码、网关确认一遍,再打开在线诊断看设备状态,比反复搜索靠谱得多。

5.2 EN/ENO、时间锁、程序块解锁这几个细节值得认真对待

EN/ENO是西门子PLC图形化编程里一个让新人很懵的概念。简单来说,EN是指令/功能块的使能输入,只有EN为1时指令才执行;ENO是使能输出,指令执行正确时ENO为1,出错时变0。ENO可以串联,你可以让一条指令的ENO驱动下一条指令的EN,这样形成指令链,其中任何一条出错,后面的都不会执行。

在输送带程序里,EN/ENO最典型的应用就是通讯指令。MBUS_MSG执行完,如果ENO为0,说明通讯请求没发送成功,我会在程序里把ENO接到一个报警用的中间变量上,同步记录错误代码。这个比不看ENO直接闷头执行下一轮读写要稳重得多。

时间锁这个“功能”也经常有人问。有些项目甲方会要求设备试用期到了自动锁定,或者采购要求程序带使用期限。实现思路很简单:读取PLC系统时钟,和预设的截止日期比较,超期后把某个允许运行标志置0。但这里有个坑:CPU断电后如果时钟没有后备电池,时间可能会复位,导致锁机逻辑时序错乱。所以做时间锁之前必须确认CPU的时钟保持能力,或者把时间写进保持性存储区,我见过太多因为这个翻车的案例,甚至闹到要和客户对线的地步。

还有程序块解锁。STEP7或博途里的程序块可以被加密或设为只读,如果拿到一个加了密码的项目,想改逻辑就必须输入正确口令。网上常常流传什么“解锁工具”,我劝你别乱用,因为很多来源不明的解锁程序可能带捆绑内容,职业道德上也说不过去。正确做法是找项目原开发者要口令,或者走正规授权流程,别为了省事把整条线的源代码都搭进去。

5.3 调试验收的清单化套路

输送带项目最容易出现的问题不是某个功能做不出来,而是功能都做出来了,联调时才发现互相矛盾。我调试时习惯按这个顺序一步步来:

  1. 单体调试:逐个检查I/O点,确认每个按钮、传感器、接触器、变频器端子都对应正确的PLC点位。用强制功能把每个输出点单独驱动一遍,确认接线无误。
  2. 通讯调试:先确认PLC和每台变频器的Modbus通讯全部通,再确认触摸屏和PLC的变量读写正常,最后确认OPC UA数据能被上位机订阅。
  3. 空载联调:不挂负载,让输送带按正常启停顺序跑一遍,观察各段皮带的启停间隔是否合理,顺启逆停是否按预期动作。
  4. 带载试运行:放物料跑起来,看变频器电流、带速、堵料传感器动作是否正常,调整延时间隔和过载保护参数。
  5. 验收存档:把程序归档、导出变量表、记录所有设备型号和参数设置。这一步往往被人忽略,但设备运行三个月后哪怕换一个变频器,你都需要这些存档来恢复现场。

值得一提的经验是,调试存档这个想法我是从数控系统那边学来的,西门子828D数控系统载入调试存档的思路,放在PLC项目里同样适用:所有参数、程序、网络配置都归档成一份完整文件,方便日后还原和复制。WinCC和PLC仿真也是省时间的好办法,博途里的PLCSIM可以在没有硬件的情况下跑通整个逻辑,触摸屏画面用WinCC做仿真联动,很多变量地址的错误在办公室就能发现,不用到场站上蹲半天。

写在最后

这条输送带系统做下来,我最大的感受是:控制逻辑本身并不难,难的是想清楚整个系统的边界。开始选型时多想一想通讯对象和网段划分,编程时把程序结构搭得干净一点,联调时按链路一层层排查,这三点做到位,项目就不会出现大的失控。最后分享一个我自己的习惯:每次下载完程序,我都会把CPU在线诊断、模块信息和变频器参数表截图存档,等到半年后客户打电话说“设备突然不转了”,翻出这些存档往往能少跑很多冤枉路。你如果刚开始接触西门子PLC输送带项目,也可以从这个习惯做起,它会让你在调试这条路上越走越稳。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询