很多人找我聊西门子PLC程序开发怎么入门,我一般不会直接甩教程,而是先反问一句:你见过新能源浆料线吗?去年我接手了一条锂电正极浆料产线的整套PLC程序开发,从需求梳理到带料调试,前后折腾了小半年。说句实话,刚拿到图纸的时候我也觉得“不就是粉料加溶剂、搅拌出料嘛”,真正走进现场、翻完P&ID、跟工艺人员过了三轮需求之后,才发现这条线跟常规输送线完全是两个频道。
这篇漫谈不打算写成教材,就按我实际走过的路径来聊:浆料工艺到底想在PLC里要什么,硬件选型时哪些钱不能省,配方和批次追溯该怎么落地,ABB变频器、安川机器人、DCS三方通讯怎么联调,安全光栅程序怎么编才靠谱,最后再倒一倒调试期踩过的坑。你要是正准备接浆料类项目,或者正在学西门子PLC想找个真实场景练手,这篇应该能帮你把整个框架立起来,少走不少弯路。
1. 浆料线为什么让人“谈PLC色变”:工艺与控制边界的一手认识
1.1 浆料工艺远比“配料搅拌”复杂
锂电正极浆料常见的体系是PVDF/NMP油性体系,负极则多为CMC/SBR水性体系,光伏浆料又有银浆、铝浆的路线区分。不管哪种,基本路径都绕不开:粉料真空上料、胶液配制、捏合、高速分散、低速搅拌消泡、稀释调粘度、过筛除铁、脱泡,最后通过螺杆泵或隔膜泵输送到涂布机。
PLC在这个过程里控制的不是简单的“启动/停止”,而是要把称重计量精度、搅拌转速曲线、真空度、夹套水温、过滤压力、输送流量全部串在一起。举个典型的例子:正极浆料捏合阶段需要“先干混再湿混”,粉料和溶剂的加入时机差几秒,浆料的细度和粘度可能就是两个结果。这种对时间窗口敏感的控制逻辑,普通起保停电路完全撑不起来。
1.2 为什么通用逻辑块解决不了浆料线
有人会觉得,PLC程序不就是“输入-逻辑-输出”吗,搅拌机、水泵、阀门挨个控制不就行了。真这么做,现场一定会被工艺人员骂回来。浆料线有几个硬要求,注定要用更完整的程序架构:
- 多配方多品种切换:一条产线可能同时做不同固含、不同粘度的产品,配方参数必须能动态装填,而不是改一次程序重新下载一次。
- 超差与追料处理:粉料称重一旦超差,是回料、降级还是按实际值记录,需要程序里预设策略,不能等操作工手动决策。
- 批次追溯:每一锅浆料的投料时间、称重实绩、搅拌温度、操作员、配方版本都要留存,出了质量客诉要能倒查。
- 与上位机/MES实时交互:订单下发、配方下发、批次回报、报警上报,数据链路不能断。
- 安全回路联动:机器人上料区域、投料口、高速搅拌机都有安全防护需求,安全PLC和安全光栅是标配。
- 清洗流程穿插:换型时的CIP清洗、空管吹扫,本质上也是程序逻辑的一部分。
1.3 控制对象清单:先盘完IO再谈程序
做程序开发前,我习惯先把控制对象列成表格贴在电脑前,反复跟P&ID核对。这条浆料线涉及的典型IO对象大致是这些:
| 控制对象 | 主要功能 | 典型信号 |
|---|---|---|
| 粉料仓 | 真空上料、破拱、料位检测 | DI/DО、模拟量料位 |
| 胶液罐 | 搅拌、液位、温度 | DI/DO、AI/AO |
| 双行星搅拌机 | 公转/自转、真空、夹套水温、升降 | DI/DO、AI、变频通讯 |
| 浆料中转罐 | 慢搅、液位、温度 | DI/DO、AI |
| 螺杆输送泵 | 定量输送、转速调节 | DI/DO、AI/AO或变频通讯 |
| 气动/调节阀 | 物料通断、流量调节 | DI/DO、AI/AO |
| 现场仪表 | 压力、温度、液位、密度 | AI,视情况走HART |
把这张表拉出来之后,后面做硬件选型和程序框架都会清晰很多。很多人一上来就写代码,最后IO点对不上、工艺动作理不顺,返工成本极高。
2. 硬件选型与IO规划:我在这条产线上踩过的最贵一课
2.1 CPU与远程IO站怎么配
浆料线规模一般不会太小,动辄几百个IO点。我这里用的是S7-1500F系列CPU,既满足安全功能要求,也为后续扩展留余量。实际项目中如果是一条中型浆料线,CPU 1511F-1 PN基本够用;如果还带好几台机器人、多套搅拌机、上位机点数又多,建议直接上1515F,免得后期CPU负载和通讯资源不够再换。
远程IO站优先选ET200SP,通过PROFINET挂到CPU上,贴近设备布置,电缆长度和干扰问题都会好处理。称重信号建议用SIWAREX WP231这类专用称重模块,直接挂在ET200SP上,不要省这个钱用普通模拟量模块硬扛称重传感器信号,否则调试期跳变会让人怀疑人生。变频器、机器人、伺服都通过PROFINET组态为IO设备,一来减少模拟量接线,二来状态字、诊断信息丰富得多。
2.2 称重模块与传感器:这条线的灵魂
浆料配方的核心就是“加多少粉、加多少液”,所以称重计量是整个控制系统的心脏。我强烈建议在方案阶段就把称重方案定清楚:
- 增量式计量:按目标值加料,到量即停。适合大批量投料,但对超调敏感,需要程序里设计“提前量”和“慢速补料”两段式控制。
- 失重式计量:料仓放在秤上,通过重量变化速率控制出料。适合连续补料或小批量精确配料,浆料产线里给螺杆泵连续补粉料时很常用。
传感器选型方面,料罐称重一般选拉压式或剪切梁传感器,千万别只看额定载荷,要按“罐自重+最大物料重量”再乘1.2以上的安全系数。安装时传感器和罐腿之间务必加防倾覆限位装置,浆料搅拌时动态载荷很大,没有限位很容易把传感器拉坏。
程序里要做的处理也不只是读个重量那么简单。毛重、皮重、净重要区分清楚;加料过程要设计“稳定窗口判断”——连续若干扫描周期内重量偏差都在允许范围内,才算称重稳定,才能进入下一步。搅拌开启瞬间称重值波动是必然的,不要拿原始信号直接做逻辑判断,否则每次搅拌启动都会误触发“重量异常”报警。
2.3 公共工程的逻辑最好提前规划
循环水、压缩空气、真空泵这些公用工程,看着跟浆料工艺“主业”无关,但实际调试时最容易扯皮。水压不够导致夹套温度控不住,真空度不够导致搅拌时浆料裹气,压缩空气压力低导致气动阀动作缓慢——这些问题根本不是PLC程序自己能解决的。
建议在程序架构里专门做一个“公用工程状态”数据块,把水、电、气、真空的整体状态汇总,任何关键设备启动前先检查对应公用工程条件。比如双行星搅拌机启动前,要确认真空度达到设定值,否则搅拌时浆料容易飞溅;真空泵启动顺序也要设计,不能和搅拌机同时抢电。
3. 配方管理、批次追溯与清洗逻辑:浆料线的灵魂在程序里
3.1 用ISA-88思路搭配方框架,而不是硬编码
浆料线多品种切换频繁,配方如果写死在功能块里,每换一次产品就要动程序,现场根本受不了。我按ISA-88 Batch的思路来搭:
- 过程单元:一条搅拌线可以看作一个过程单元;
- 设备模块:粉料称量模块、溶剂计量模块、搅拌模块、输送模块;
- 控制模块:每个设备模块内部的阀门、电机、仪表控制;
配方数据块里用结构体数组存参数,比如投料量、加料顺序、搅拌速度曲线、温度设定值、真空度设定值、报警上下限。每个配方配一个版本号,上位机下发配方时PLC要做版本校验和参数范围检查。
顺手放一段我在项目里用过的SCL配方校验逻辑(简化版):
FUNCTION_BLOCK FB_RecipeCheck VAR_INPUT bCheckTrigger : BOOL; iRecipeVersion : INT; iMaterialCode : INT; rTargetWeight : REAL; END_VAR VAR_OUTPUT bRecipeOK : BOOL; iErrorCode : INT; END_VAR IF bCheckTrigger THEN // 版本号必须在允许范围内 IF iRecipeVersion < 1 OR iRecipeVersion > 99 THEN iErrorCode := 1001; // 版本号非法 bRecipeOK := FALSE; // 物料代码不允许为空 ELSIF iMaterialCode = 0 THEN iErrorCode := 1002; // 物料代码为空 bRecipeOK := FALSE; // 投料量上下限检查 ELSIF rTargetWeight < 10.0 OR rTargetWeight > 2000.0 THEN iErrorCode := 1003; // 投料量超范围 bRecipeOK := FALSE; ELSE iErrorCode := 0; bRecipeOK := TRUE; END_IF; END_IF;这套做法的好处是:配方数据只存数据,工艺步骤用SFC或顺控功能块来组织,后续加一个新配方,只要填参数、不碰逻辑。
3.2 批次记录:每步都要有时间戳和实绩
新能源行业对批次追溯的要求越来越高,客户审计时会要求“任意一锅浆料都能说清楚当时加了什么、称了多少、搅拌了多久、谁操作的”。程序里每个工艺步骤都要记录:
- 步骤开始时间、结束时间;
- 每个物料的设定值、实际称重值、偏差;
- 关键过程参数(温度、真空度、搅拌转速)的极值或均值;
- 报警记录和操作员确认记录。
S7-1500本身支持用OPC UA把数据暴露给上位机,但我的建议是PLC本地也要有一套“黑匣子”式的批次记录,断电不丢。用DB块循环存储批次数据,批次结束时统一生成记录,再通过通信上传MES或写入CSV文件。不要过分依赖上位机,上位机一重启,历史数据就断档的情况我见过太多次。
3.3 清洗与空管吹扫千万别放在最后才想
浆料换型最怕什么?上一批黑料残留到下一批白料里,直接客诉。清洗逻辑在程序设计阶段就要预留:
- 排空:把罐体和管道残余浆料排净,配合阀门的开关顺序防止串料;
- 冲洗:溶剂或纯水冲洗,时间、流量、温度按配方参数走;
- 吹扫:空管吹扫干净,避免残留溶剂影响下一锅;
- 预涂/润洗:有些配方要求管道先润洗一遍再正式投料。
清洗程序的本质也是顺序控制,但它有“交叉污染”的敏感性。阀门互锁一定要做严,最忌讳清洗液管路和浆料管路同时打开。程序里每一步都要有完成条件再放行下一步,不要单纯用时间死等,现场流量、液位变化经常导致时间估算不准。
4. ABB变频器、安川机器人、DCS三方通讯的联调实测
4.1 ABB变频器与西门子PLC:Profinet组态与报文对应
浆料产线上搅拌机、螺杆泵、真空泵大量使用ABB变频器,常见的是ACS580、ACS880系列。用Profinet通信时,先装好GSDML文件,在TIA Portal里把变频器组态为IO设备。这里最关键的是报文类型的选择——ABB变频器常用的Profinet报文类型有PPO1、PPO2等,不同报文里控制字、状态字、速度给定值、实际值的位置和量纲各有不同。
以常见的传动手动/自动控制为例:
- 控制字:PLC->变频器,第一位是启停,后面还有正反转、故障复位;
- 状态字:变频器->PLC,对应“准备好”“运行中”“故障”等状态;
- 速度给定:通常以十六位整数形式发送,量纲可能是0.01%或参考频率,具体要查手册换算。
地址对应的本质,其实就是“组态偏移量”。把变频器挂在某个Profinet设备号之后,TIA里自动分配I/O地址,你只要记住:速度给定字在QW地址往后偏移多少,状态字在IW地址往后偏移多少,然后在程序里建好符号名,不要靠裸地址满天飞。实测中我踩过最大的坑是速度量纲没统一,PLC给了5000,变频器以为要跑满速,差点把搅拌轴干飞。启动前先在变频器面板上确认好报文类型和速度标度,再联调PLC侧输出值。
4.2 现场被工艺问住的经典题:安川机器人Profinet地址怎么对应
这也是网上被问爆的问题。西门子PLC和安川机器人走Profinet通讯,核心不是“会不会接”,而是“地址怎么对得上”。安川机器人(常见控制器YRC1000、DX200)通过选配的PROFINET功能参与通讯,机器人作为IO设备,需要先安装对应的GSDML文件,在TIA里组态后分配I/O地址。
地址对应分两头看:
- PLC侧:TIA组态后看到的IW/IQ地址区,比如IW200、QW200,这就是PLC程序里要用的“真实地址”;
- 机器人侧:安川控制器里有全局输入输出映射,比如#20010这类编号,需要把机器人侧的IO编号和PLC侧的字节偏移对起来。
用表说明比较直观(具体编号以现场实际分配为准):
| 数据方向 | PLC地址举例 | 机器人侧信号 | 含义 |
|---|---|---|---|
| 机器人 -> PLC | IW200 | 输入字 #20010 | 机器人状态字 |
| 机器人 -> PLC | IW202 | 输入字 #20011 | 机器人在位/完成 |
| PLC -> 机器人 | QW200 | 输出字 #30010 | PLC控制字 |
| PLC -> 机器人 | QW202 | 输出字 #30011 | 启动/暂停/复位命令 |
联调时我建议用“握手状态机”,不要一上来就发启动字。先做五步验证:
- PLC发“请求启动”,机器人侧能收到该位;
- 机器人回“准备好”,PLC侧能读到置位;
- PLC发“运行允许”;
- 机器人执行动作并回“运行中”;
- 动作完成回“完成”,PLC发“清除”,恢复初始状态。
每一步都先在机器人示教盒上监视IO表,你看到位翻转了,再确认PLC侧有没有映射到正确地址。两边对不上的问题,90%出在“偏移量”而不是“接线”,排查顺序永远是:组态表 -> IO分配表 -> 程序交叉引用。
4.3 与DCS通讯:选Profinet还是OPC UA
浆料车间上面通常还有一套DCS做整线协调和批次管理,PLC和DCS之间的通讯常见三种做法:Profinet IO、OPC UA、Modbus TCP。我个人目前推荐OPC UA,原因很简单:
- S7-1500自带OPC UA服务器,不用额外硬件;
- 跨平台、跨厂商兼容性好,DCS侧接入方便;
- 数据模型清晰,适合结构化传输配方和批次信息。
通讯地址表要提前跟DCS工程师一起定死,比如手自动切换标志、当前运行配方号、批次状态、报警汇总,每个信号都明确由谁主写、谁只读。再强调一点:通讯掉线发生时,PLC必须保持本地自动逻辑继续运行,不能因为上位机掉线就自动跳回手动,否则现场设备突然停机很容易出事。程序里要有通讯状态监视,掉线后置一个报警并在画面显示“上位机通讯中断,本机自动模式保持”。
5. 安全PLC与安全光栅:调试现场最不能糊弄的一环
5.1 安全架构:F-CPU加PROFIsafe远程站
凡是设备周边有人机交互的部位——机器人上料围栏、搅拌机开盖投料口、输送泵检修区——都涉及安全防护。我用的是S7-1500F安全型CPU,配ET200SP的F-DI/F-DQ模块,安全信号通过PROFIsafe协议传输。安全PLC和普通PLC的区别在于:安全程序要经过TIA的Safety Admin认证编译,安全信号字节比普通信号多出CRC校验码,任何一位通道故障,系统都会进入安全状态。
现场安全回路我做的是“串联结构”:急停按钮、安全光栅OSSD输出、安全门开关、拍停按钮全部串联,任何一个触发,整个危险区域设备都断电。这套架构符合行业常规做法,也便于安全评估时提供清晰的逻辑说明。
5.2 安全光栅程序怎么写
安全光栅的OSSD输出一般是双通道PNP信号,接到F-DI模块的双通道输入后,在安全程序里处理。逻辑可以简化成一句话:光栅遮挡时,输出安全关断信号。但实际编写时要注意几点:
- 双通道评估:OSSD+和OSSD-必须做等值检查,两路信号状态不一致要视为故障;
- 初始化复位:光栅被遮挡导致停机后,必须人工确认“光栅区域无人、急停已复位、安全门关闭”,再按复位按钮,程序才能重新输出允许运行信号;
- 屏蔽功能慎用:有些工艺需要在投料时短时屏蔽光栅,这需要额外加装屏蔽传感器并走安全评估流程,不建议在程序里随手做个延时屏蔽就完事,审核时必挂。
举个简化版的安全程序逻辑示意:
A "急停按钮常闭" A "安全门开关常闭" A "安全光栅无遮挡" = "安全运行允许"这段只是示意,实际TIA安全程序里用的是FBD或LADDER配合安全库块,而安全运行允许输出最终控制的是安全接触器,接触器再给机器人/搅拌机主回路供电。安全回路里最后一道不能只靠PLC输出,还要有安全接触器的反馈触点监测,防止接触器触点粘连导致“明明发了停止指令但主电路还是带电”的危险情况。
5.3 安全功能调试:先模拟后实测
安全程序我强烈建议先在实验室把信号短接验证逻辑,再进现场接真实负载。现场测试时不能只测“光栅挡住是不是停了”,还要测:
- 光栅遮挡后,人工移开遮挡物,设备是不是不会自动重启(必须复位后才行);
- 急停触发后,故障复位按钮是否有效;
- 双通道信号人为断开一路,是否报故障而不是误判正常;
- 安全输出继电器是否有反馈监测。
安全这关但凡省一道验证,后面安评和客户验厂都过不去。我在这个项目里吃过亏,觉得安全门开关的安装位置不够,门能点动关上但行程不到位,安全信号时有时无,最后换了带锁扣的铰链式安全门开关才解决。
6. 开机前的联调清单与我在现场反复踩的那几个坑
6.1 模拟量跳变:先分清楚是真信号还是干扰
浆料线调试首周,我最头疼的就是称重和压力模拟量跳变。某一罐的称重值在搅拌启动瞬间狂跳,刚开始以为是传感器坏了,换了传感器还是跳。后来排查链路才理明白:问题出在信号屏蔽层接地和PLC滤波参数上。
排查顺序建议按这个来:
- 看原始值:把模拟量模块原始值在线监视,先用万用表对照传感器毫伏信号是否同步跳变;
- 查接线和屏蔽:称重传感器屏蔽层要单端接地,不能两头都接地形成环流;
- 查干扰源:变频器输出电缆和信号电缆是否同槽走线,间距够不够;
- 查程序滤波:模拟量模块滤波值是否太灵敏,程序里是否加了限幅和稳定窗口。
最终在项目里的解法是双管齐下:硬件上把变频器动力电缆和信号电缆分开桥架,软件上在称重值进入逻辑判断前加“连续N个扫描周期偏差小于容差才算稳定”的窗口判断。程序稳定窗口设多少要结合搅拌周期调,太短等于没设,太长又拖慢节拍。
6.2 通讯地址错位的一个经典案例
有一次机器人联调,现场工艺反馈:机器人能正常启动,但停止指令总是“慢半拍”,有时候明明按了急停,机器人还要多走一小段。排查过程我印象很深:
- 第一步怀疑急停逻辑,检查安全回路,没问题;
- 第二步怀疑机器人程序,把示教盒里梯形图一段段翻,发现机器人侧根本没收到“急停”信号;
- 第三步回头看PLC组态,发现控制字里定义的“急停”位和机器人IO分配表里的“暂停”位对上了,等于PLC发的急停指令被机器人当成暂停指令处理了,停止响应自然慢半拍。
根因就是地址映射时字节偏移和位定义没有逐位核对。事故之后我把所有通讯联调都改成“先逐位验证再整机试跑”的流程,宁可多花半天做全点位测试,也不能让现场信号跑飞。
6.3 失重秤补料超调的教训
失重式补粉料是这个项目里调试最久的闭环。现象是:补料到达目标值后总是超调,多补几十公斤,工艺被迫多次回粉,节拍拖慢。
追查下来,问题出在“补料关断延时”和“PID响应太快”的组合。粉料从螺旋出口到料面还有一段自由落体的时间,关断指令发出后,空中残留的粉料仍然会落入罐内。解决方法是:
- 把补料过程分成“快速补料”和“慢速补料”两段,接近目标值时自动切慢速;
- 关断提前量根据实际落料延时标定,不同粉体粒径和流动性需要单独标定;
- PID参数调钝一点,不要追求瞬间归零,失重控制本身是惰性系统,动作太猛只会加剧振荡。
这个坑花了差不多一周才稳定下来,但稳定之后的效果很明显:粉料称量偏差从最初的正负3公斤左右,压到了正负0.5公斤以内。
6.4 联调清单:开机前逐项过
最后放一个我每次浆料线开机前都会过一遍的清单,算是给同行的速查表:
- P&ID与IO点位表一一核对过,阀门动作方向没有接反;
- 称重传感器已完成标定,量程和滤波参数已设置;
- 所有变频器报文类型和速度标度统一确认过;
- 机器人、DCS通讯点位逐位测试过,状态字与控制字语义完全对齐;
- 安全回路(急停、光栅、安全门)逐一实测过,复位逻辑有效;
- 配方版本号和上位机下发逻辑验证过,非法参数会被拦截;
- CIP清洗流程的阀门互锁验证过,不存在交叉污染路径;
- 停电、掉线、通讯故障模拟测试做过,PLC能保持安全状态或按预定义策略恢复。
浆料线这类项目,真正考验人的地方不在于“会不会写梯形图”,而在于懂不懂工艺边界、敢不敢在选型时坚持原则、能不能在联调现场冷静地逐级排查问题。很多时候程序本身只占30%的工作量,剩下70%是跟设备、工艺、通讯、安全较劲。
最后再分享一个小技巧:项目启动初期,一定要拉着工艺工程师把P&ID上每个控制阀、每台泵、每个仪表的作用逐行过一遍,多花两天时间不要紧,后面省下的调试时间会是这好几倍。程序写得再漂亮,不符合工艺操作习惯,到了现场一样会被推翻重来。