
各位做包装自动化、运动控制的朋友今天分享的这套包膜机项目配置是西门子1512做主站5台1214C做从站维纶触摸屏做界面博图V15 SP2开发整线一共20个伺服轴。这个配置放在包装设备里不算顶配但它把“一台主站带多台从站通讯控制”的典型架构完整走了一遍踩坑和调试经验都很值得记录。这类系统做久了你会发现真正难的不是单个PLC程序而是怎么让6台PLC像一个整体一样干活同时还要让维纶屏把各站的运行状态、报警、配方统一管理起来。下面我把这套项目的设计思路、通讯架构、运动控制实现、HMI开发以及现场调试中遇到的问题按我自己的实际操作顺序一条条捋清楚。1. 项目概述与整体方案选型1.1 包膜机工艺和20个轴是怎么算出来的包膜机在食品、日化、医药行业里太常见了我们常说的枕式包装机就是其中一种。工艺流程大致是卷膜经过送膜辊进入成型器产品被推进薄膜袋内横封器和纵封器分别完成两端和中间的封口最后旋转切刀切断单个包装掉落到出料输送带上。这套系统要控制20个伺服轴看着多其实是把整条线按工位拆开算的。我按实际配置列一下轴位PLC工位段轴数量轴名称举例1512C 主站整线同步与协调2主轴牵引、送膜速度主令1214C #1理料/分料4理料盘、分料拨叉、推料、进料输送1214C #2送膜/成型4送膜辊、张力辊、成型牵引、预牵引1214C #3横封4横封上辊、横封下辊、横封接料、辅助牵引1214C #4纵封/切断4纵封上辊、纵封下辊、旋转切刀、排废1214C #5出料/输送31备用出料输送、分流、尾品剔除、备用扩展这样合计下来就是20个轴左右。主轴牵引放在主站直接管理是因为整线速度基准必须由主站统一发出从站轴只能跟随主令速度做比例或相位同步这是多轴协同的关键点。1.2 为什么用一台1512加五台1214C而不是一台大PLC全搞定很多同行会问既然博图那么强大1512C也能挂不少轴为什么不直接带20个轴这个问题我调试时回答过很多次核心原因有三条。一是CPU负载和扫描周期。20个轴全部压在一台CPU上博图的运动控制任务、轴工艺对象、中断循环会占掉相当多的CPU资源扫描周期很容易被拖到几十毫秒。横封和旋切这种对同步精度要求极高的工位几十毫秒的抖动足以导致封口偏位、切刀切到膜上。分散以后主站只跑整线协调单站各跑各的工位轴每台CPU的负载都很健康。二是布线成本和维护性。包装线通常是分段生产和分段安装的每段有自己的电柜和气路。从站放现场传感器、电磁阀、伺服就近接入主柜到各工位只走一根PROFINET网线。要是把所有IO和伺服线都拉回主柜几百根线穿过整条产线施工难度成倍增加查线都能查到怀疑人生。三是调试边界。5台从站分别对应5个工位单段调试时打开博图单独下载一台单独给伺服使能、回原点、点动试动作互不干扰。全部塞进一台PLC调试任何一个工位都要整线停机主站逻辑一动所有轴跟着乱工程效率极低。当然多PLC方案也有代价跨站数据交换、轴联动逻辑、统一报警这些都变复杂了。正因为这样做这套系统的通讯设计和数据规划才比写单机程序更考验功夫。1.3 触摸屏为什么选了维纶而不是西门子HMI维纶屏在这个项目里的选择非常现实成本低、供货稳、工程师上手快。维纶和西门子PLC没有血缘关系完全靠以太网上的S7协议通讯实际跑下来完全够用。我需要强调一点维纶屏接西门子S7-1500前提条件是把1512C CPU属性里的“允许来自远程对象的PUT/GET通讯访问”打开否则屏幕连接会不稳定甚至建立不了。我用的是一块15寸的MT8150iP挂在主站同一个网段IP固定为192.168.1.20直接访问1512C主站。还有一个经验维纶屏不要直连5台1214C。虽然技术上可以建多连接但屏幕不断在多个PLC连接之间切换刷新操作响应会卡顿变量管理也乱。我把从站关键数据全部汇总到主站的共享DB里屏幕只连主站只读主站DB简单稳定页面切换非常跟手。2. 硬件组态与通讯控制架构设计2.1 博图组态主从站的搭建细节博图V15 SP2里建项目添加一台CPU 1512C-1 PN和五台CPU 1214C这个步骤本身不难但有几个细节会直接影响后面通讯和运动控制能不能跑起来。首先是固件版本。1214C我选的固件V4.41512C选的V2.5主站和从站的版本跨度不能太大否则从站固件太新或太旧博图下载硬件配置时会报兼容性错误。项目一开始就应该确认好每台PLC的固件版本不要到现场才发现下载不了。其次是设备名称。PROFINET通讯里设备名称比IP地址更重要。5台1214C必须有不同的设备名称我用的是BZ-PLC01到BZ-PLC05这种有规律的命名配合IO设备组态时引用的名称主站才能准确识别每一台从站。设备名称重复或者被误改是现场通讯中断最常见的隐藏原因。然后是IP规划。我习惯在一个固定网段内做整线通讯1512C主站192.168.1.101214C从站1到5分别是192.168.1.11到.15维纶屏192.168.1.20调试电脑192.168.1.30。这样规划的好处是任何人看到IP就能判断设备角色查故障时效率高。网关默认192.168.1.1实际设备在同一个二层网络里有没有网关都能通但为了后续远程维护网关地址还是统一写上。2.2 主从通讯方案智能从站和S7通讯双通道开头就说了这套系统最核心的是“通讯控制”我用了两条通道来承载不同的数据。第一条通道是PROFINET智能从站。每台1214C在博图里被组态为1512C的IO设备也就是智能从站。这种模式下从站输入输出映像区的数据会由主站周期性读写主站读从站数据就像读自己的IO一样实时性非常好而且从站侧不需要写任何通讯程序。我把每台从站的控制字、状态字、轴状态、产品计数都放在这个固定长度的数据区里刷新周期设成5毫秒。第二条通道是S7通讯用TSEND_C和TRCV_C指令来传输非实时数据。为什么还要第二条通道因为智能从站的IO数据区适合短小且固定的周期交换而配方参数、温度设定、报警详细信息这类数据长度不固定、更新不频繁硬塞进IO区会浪费带宽而且修改数据区长度必须重新组态下载。S7通讯就灵活多了我建了四个大的数据块分别放参数、配方、报警、诊断按需读写。双通道还有个实际好处调试时如果智能从站数据区不通还能用S7通道看从站是否为在线状态很快能定位到底是硬件断了还是软件权限问题。有一次现场通讯全部中断我靠S7通道的诊断信息判断出是设备名称被改掉而不是网线问题省了大半天排查时间。2.3 数据区规划控制字、状态字、心跳和一致性问题多PLC系统最怕数据乱所以数据规划是所有编程工作的前提。我为每台从站定义了一套标准化的接口区放在主站全局DB里结构大致如下数据项位定义方向周期ControlWord_ST01 Bit0从站启动/停止主站-从站5msControlWord_ST01 Bit1急停复位主站-从站5msControlWord_ST01 Bit2~3运行模式0~3主站-从站5msStatusWord_ST01 Bit0从站运行中从站-主站5msStatusWord_ST01 Bit1从站有报警从站-主站5msStatusWord_ST01 Bit2所有轴已回原点从站-主站5msHeartbeat_0132位心跳计数从站-主站5ms每个从站都占16位控制字和16位状态字外加一个32位心跳。主站每周期把心跳值加1从站同样加1主站检测到某个从站的心跳差值超过阈值就判定该站通讯异常对应的工位段立即减速停机。这个心跳判断是我强烈建议加的它能在通讯还没完全断开、只是数据偶发丢失时就给出预警。数据一致性也要注意。比如主站下发一组配方参数到从站参数有几十个从站不能一个变量一个变量地收到就用那样前后数据可能是“半个新配方”。我在从站侧用了“整包接收”机制先收完所有参数校验和一致后才把参数一次性写入当前配方区。这个细节不做好换产时经常会出现尺寸对了温度不对、温度对了切刀相位不对的诡异故障。3. 20轴运动控制程序实现3.1 轴任务分类和伺服驱动器选型20个轴不能一把抓必须按工作特性分类。我把它分成三类。第一类是同步轴比如主轴牵引、横封、旋切刀。这些轴必须跟随整线速度基准连续运转并且相互之间要保持精确的相位关系。第二类是定位轴比如理料盘、分料拨叉、推料这类轴做的是单次动作每次运行到指定位置精度要求高但对连续同步没有要求。第三类是张力轴送膜辊有时候需要做速度闭环加张力反馈用来保持膜材张紧不能简单当定位轴处理。驱动器选型我全部走PROFINET通讯的伺服驱动器博图里通过标准报文和轴工艺对象绑定。这里特别提一下汇川SV600F这类国产伺服支持111报文可以直接接入博图运动控制体系做20轴项目时性价比非常高。用111报文后轴工艺对象能直接读写驱动器的实际位置、实际速度、跟随误差不需要再自己写通讯代码。当然西门子V90用标准报文也能实现同样效果只是整线成本会高一些。3.2 主轴同步和横封跟随的实现方式20个轴里最考验程序功底的是横封轴跟随牵引轴。工业现场的要求是横封刀在接触薄膜的瞬间刀口的线速度要和膜速完全一致否则膜会被拉断或者封口皱巴巴。我在主站用MC_MoveVelocity控制主轴牵引发出整线速度主令。从站横封轴的PLC收到主站发来的主令速度后再叠加自己的MC_GearIn指令让横封轴按固定齿比跟随主轴。但光有固定齿比还不够封口切刀是圆周运动膜是直线运动刀在上下切换时会自然产生速度差所以我又加了MC_Phasing来做相位修正根据横封辊角度实时调整同步相位。这里有个最重要的经验参与同步的所有PLC运动控制任务的中断周期必须设成一样的值。我全部统一为4毫秒。如果主站是4毫秒、从站是8毫秒横封轴收到的速度主令就会出现明显台阶封出来的袋子间隔忽长忽短你怎么调参数都没用因为问题出在时间基准不统一。3.3 通用轴控制FB和程序结构化设计20个轴如果每个轴复制粘贴一段程序调试时改一个参数要改20处这种代码留着就是给自己挖坑。我用SCL写了一个通用轴控制FB接口里把使能、模式、目标速度、目标位置、加减速时间、回原点命令全都做成输入输出参数实例化20次每个轴一个背景DB。FB内部的逻辑顺序固定为先处理使能和急停再判断轴状态接着执行命令最后输出状态字。保证每个轴的控制逻辑高度一致哪里动作不对先从轴背景DB追数据很快就能定位到是驱动问题还是逻辑问题。程序块加密方面博图提供的保护等级分为无保护、写保护、机密保护。对外交付程序时我给客户的是“写保护”级别逻辑可以监控但不能修改关键的轴控制FB用“机密保护”。网络上有人说什么“有损加密”其实是误传程序块加密本身不会损坏程序。真正会出问题的是加密以后又改了块接口重新编译失败或者跨博图版本转换导致块不可用。所以我有个习惯给客户加密程序前先在本地用相同版本解开验证一次完整编译确认无误再交付。3.4 运动控制指令的几个容易踩的坑MC_Power使能时序。直接给Enable置位然后立刻发MC_MoveAbsolute经常报“轴未就绪”。一定要等轴状态里的“Ready”位为真之后再发运动指令。回原点方式。我统一用“主动限位加零脉冲”的方式每个轴必须有硬限位和原点开关。不要图省事用“当前位置设为原点”一旦伺服断电重上电位置全乱产线上的产品全得报废。飞剪切断轴。用MC_GearIn加MC_Phasing来做不要在PLC里自己算触发角再叠加修正量。博图的同步功能已经有完整的位置补偿机制自己写数学函数反而容易在加减速段产生累积误差。轴状态反馈不要全扔给触摸屏。20个轴每轴十几个状态变量维纶屏根本刷不过来。我采用状态汇总法屏幕只看关键状态使能、报警、原点、实际速度。详细波形和跟随误差留在PLC诊断画面里只有工程师维护时需要看。4. 维纶触摸屏HMI程序开发4.1 跨品牌通讯连接的几个前提条件维纶屏和西门子PLC通讯不是插上网线就能通博图侧有三个坑必须提前排掉。第一1512C和1214C都要开启PUT/GET访问许可。在博图CPU属性里的“防护与安全-连接机制”中勾选“允许来自远程对象的PUT/GET通讯访问”。不做这一步维纶屏的变量会大量报错要么读不到要么写不进去。第二维纶EBPro里的连接类型要选对。新版EBPro里可以直接选Siemens S7-1500把IP填成主站地址即可。端口默认102不用改。如果EBPro列表里找不到S7-1500驱动选S7-1200/1500通用驱动也是一样的底层都是S7协议。第三HMI变量地址要和PLC侧数据类型严格一致。我踩过最惨的一次是把DB里的DINT变量在屏上映射成了INT导致速度显示跳变到几万最后发现是格式错位。跨品牌通讯没有符号表直接导入那种便利我都是先在CPU侧把所有跨站数据整理成结构性DB再在EBPro里手动映射变量一次映射好后面就不会乱。4.2 画面结构和操作按钮的交互安全维纶屏的画面我分了四层主画面、手动操作、参数配方、报警记录。主画面放整线布局图用指示灯显示5台从站是否在线数字显示当前产量、班产、设备综合效率。手动操作页按工位分开每台从站对应一个子页面。手动操作页的按钮我特别注意了安全逻辑。所有手动动作按钮必须同时满足“当前PLC在线”“站内无报警”“允许手动”三个条件才会生效。按钮在屏上只是发一个命令位真正的使能判断和互锁逻辑全部放在PLC程序里屏幕端不做任何“看起来能按”的信任判断。这个原则我建议任何做设备的人都别妥协否则操作员误触一个“回原点”整条线的轴可能同时动起来。4.3 配方管理和换产参数下发包膜机最频繁的操作就是换产品。不同产品的膜宽、袋长、横封温度、切断相位都不一样。配方我放在主站1512C的保持性DB里而不是放在维纶屏内部。为什么放PLC不放屏因为维纶屏的配方在掉电后要依赖内部存储大配方切换时屏幕要等几秒才能刷出来而且操作记录没法统一。PLC侧配方不仅断电保持还能通过主站一次下发到5台从站从站校验一致后再生效换产时间可以控制在3秒以内。具体操作是屏幕上选配方号点击“下载配方”主站先把配方数据写入当前配方区然后把“配方下发完成”标志位置1从站看到标志后拉取新参数等从站回传“参数更新完成”主站才允许整线重新启动。5. 博图开发中的实用技巧与常见坑5.1 版本选择不要盲目追新我用的是博图V15 SP2当时考虑的就是1214C固件V4.4和1512C固件V2.5兼容性最好。现在网上已经能看到V17、V18、V19甚至V20的安装教程和下载资源但我的建议仍然是新建项目前先确认现场PLC固件版本再决定博图版本。高版本博图打开旧项目需要做项目转换转换过程中工艺对象、轴参数、HMI画面偶尔会有丢失或变化遇到过不止一次。V17完全卸载重装的问题也是被问烂的。博图卸载不干净是出了名的典型症状是重装后启动提示找不到Step 7 basic组件或者授权管理器和主程序版本错位。我的处理顺序是先备份授权在控制面板正常卸载然后手动删除安装目录残留文件清理注册表最后按“先授权管理器后主程序”的顺序重装。切记不要用系统还原或强行删博图文件那样会把系统搞得更乱。5.2 HMI仿真按钮无反应的排查思路博图集成的HMI仿真功能我几乎每天用但“按钮点了没反应”是我见过最多的求助帖。实际排查起来就三步。第一步检查PLC仿真是否已启动。博图的HMI仿真不会自动启动PLC仿真你先要下载并启动PLC仿真让程序真实运行HMI画面里的变量才有值。第二步检查HMI变量连接的目标是不是仿真PLC。新建项目时HMI默认连接原来的离线CPU仿真时没有激活连接所有变量都是石头。第三步找仿真工具条上的“启用输入”按钮V15之后某些版本仿真运行时默认禁止鼠标键盘输入交互按钮看起来正常但点了根本不会触发事件。按这个顺序排查99%的仿真无反应问题都能解决。我平时用HMI仿真配合PLC仿真把逻辑跑通一遍再上真机至少省掉一半现场调试时间。5.3 AT指令和指针在20轴程序里的实际用法20个轴程序要写得干净博图的AT指令是个好工具。我们做轴控制FB的时候可以把一个具体数据块的区域映射到FB局部变量里。以SCL示例为例FUNCTION_BLOCK FB_AxeControl VAR_INPUT ENABLE : BOOL; SP : REAL; END_VAR VAR LocalDB AT HMI_Interface.Axe1 : AxeDataType; END_VAR用AT把全局DB的某个结构体映射到局部变量后FB内部可以直接操作这个结构体的每个字段不再需要每个参数都从外部传进来接口干净程序量大幅减少。AT变量的使用有几个限制只能声明在局部变量区不能嵌套使用不能用于全局块这个踩过坑的人才知道。如果不喜欢AT还可以用ANY指针配合PEEK指令读取数据区内容。但说实话在博图SCL环境下AT的直观性和编译检查效率都优于指针我首选AT。6. 现场调试实录与问题排查速查6.1 通讯时断时续的最终原因整套系统最折磨人的一次问题是5台从站运行十几分钟后通讯随机中断有时一台掉有时全掉。我一开始怀疑博图组态、怀疑智能从站配置、怀疑数据长度不对反复下载了好几次程序都没解决。最后查出来的原因有两个。一个是某台1214C的设备名称被人在现场改掉了和另一台重复PROFINET通讯直接错乱。另一个是现场走线把PN网线插在了一台普通交换机上交换机缓存被其他广播占满通讯实时性得不到保证导致周期丢包。解决办法是把设备名称按图纸重新核对全部改回核心PN网络全部改接工业管理型交换机并为PROFINET流量划分独立VLAN。这里我特别想提醒PROFINET的实时通讯看着像普通以太网但底层有QoS优先级和数据调度要求。普通家用交换机虽然能亮灯能传数据但出现偶发数据丢失时你根本不知道是PLC程序问题还是网络底层问题排查成本极高。做多从站系统网络核心设备一定不能省。6.2 轴飞车和定位异常的现场处理调试时出现过一次轴飞车印象非常深。现象是理料盘轴在启动瞬间突然高速旋转人差点被料盘打到。查到最后根因是MC_Power的Enable信号在程序输出里置位了但伺服驱动器的“使能完成”反馈还没到位逻辑判断有漏洞程序已经往轴里下了运动指令轴在未完全接管的情况下来了一顿乱跑。从那以后我坚持两个原则第一MC_Power的Enable必须等驱动器Ready信号为真后再置位绝不容许“盲下发”。第二急停回路里断轴使能必须走硬线到伺服主回路和抱闸控制不能只靠软件位。软件位是给操作员用的硬线回路是给安全用的两者不能互相替代。6.3 横封温度与速度的补偿曲线包膜机另一个高频调试点是横封温度。固定一个温度值低速时膜被烫穿高速时封口强度又不够。原因是温度系统存在热惯性和热传递滞后而膜在封口区的停留时间随速度变化。我在程序里加了一条“速度-温度补偿曲线”从站读取当前横封辊实际速度经过线性插值计算出一个补偿量叠加到操作员的基准温度设定值上。实测数据是速度从20包/分钟升到60包/分钟时横封温度设定值要提高8到12度具体数值取决于膜材厚度和封口宽度。这个补偿曲线从PLC里做比让操作员凭感觉调温度靠谱得多调试完以后换规格时基本不用动温度。6.4 常见问题速查表现象可能原因检查/解决动作主站读不到某台从站数据设备名称重复/IP冲突/组态未下载核对设备名称和IP重新下载硬件组态运行中轴突然报错停机轴使能丢失、急停被触发、指令冲突查MC_Power使能状态查硬线急停查轴组互锁触摸屏按钮点了没反应HMI未启动PLC仿真/连接目标未激活先启动PLC仿真检查HMI连接目标通讯周期抖动导致封口位置不稳交换机不支持QoS/网线压接不良核心网络换管理型交换机重做网线水晶头换产品后参数混乱配方未完整下发/从站数据半新半旧检查整包接收和校验机制确认下发完成再启动横封温度一直波动PID参数不合适/热电偶松动/功率不足用温度PID自整定检查热电偶和加热器这套问题的排查逻辑有一个共同点先硬件后软件先通讯后逻辑先单站后整线。严格按照这个顺序走大多数疑难杂症都能在两小时内定位。做完整套包膜机项目我个人最深的体会是多PLC分布式系统的成败往往在动手写程序之前就已经决定了。通讯数据规划、设备名称管理、网络结构设计这些看起来不起眼的准备工作才是真正决定现场调试是三天还是三周的关键。如果你现在正要开始类似的多站多轴项目我建议你先花两天时间把数据接口表定义清楚把所有跨站变量、控制字、状态字的位定义写成文档再打开博图编码。等你调试到凌晨三点被通讯问题折磨的时候一定会感谢当初做这个决定的自己。