ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

基于博途1200PLC与HMI的自动剪板机控制系统仿真实践

基于博途1200PLC与HMI的自动剪板机控制系统仿真实践 做自动剪板机控制系统的仿真对我来说并不是一个从零开始的项目而是把一条真实产线的控制逻辑搬进博途TIA Portal的一次完整实践。用博途1200PLC和HMI仿真把“剪切—进给—计数—复位”这个循环跑通看似简单真正做起来却有很多值得抠的细节。这篇记录我就按项目推进的顺序来写——方案选型、程序架构、HMI组态、联调排错一步步还原整个仿真过程。内容偏实操适合正在学PLC、准备做毕设或者想在真实设备落地前先用仿真验证逻辑的同行参考。1. 项目拆解自动剪板机控制系统要解决的核心问题1.1 剪板机工艺流程与控制需求自动剪板机的任务听起来很简单把一卷连续的板材按设定的长度切断。但实际把控制需求拆开看设计到多个动作的时序配合。一个典型工作循环大致是这样的送料机构启动把板材向前送到达设定长度后停下压料机构下降压住板材刀架下落完成剪切然后压料机构和刀架复位送料机构继续送下一段同时剪切计数器累加一次。当剪切数量达到目标数时系统自动停机或提示操作员换批次。这个循环看似不复杂但难点在于每一个动作的先后顺序都不能乱而且动作之间必须通过到位信号来确认比如压料机构必须收到“下到位”信号之后刀架才允许下降剪切。PLC在这个系统里管理的核心不是“按下启动”这一个信号而是整个节拍的时序关系。压料机构和刀架如果同时动作或者刀架还没复位送料就继续都会导致严重的机械事故。所以控制程序必须有严密的顺序互锁前一个动作没完成后一个动作坚决不允许触发。这一点在仿真里容易被忽略因为虚拟设备不会真的撞坏但它恰恰是现场程序最值钱的地方。写程序的时候我会把所有的互锁条件单独拉出来检查宁可在仿真里多花点时间也不愿意到现场去处理撞刀的麻烦。另一个重要需求是双模式操作。自动模式用于正常生产手动模式用于调试、维护和单步试车。两种模式之间要考虑互锁比如手动模式下手动按钮直接控制输出自动模式下的启动命令就不能同时有效。操作模式的切换通常用一个旋钮开关或者HMI上的切换按钮来实现程序里要用一个标志位记住当前模式并在自动流程里频繁检查避免在自动运行过程中乱切模式导致动作错乱。1.2 控制系统的功能划分把系统按功能拆分是写程序之前必须做的一步。我习惯把整套控制分成三个部分逻辑控制包括送料电机启停和正反转控制、刀架和压料机构的动作时序、剪切计数与批次管理、故障检测与报警处理。参数管理包括板材长度、目标剪切数、进给速度、启动延时等参数这些都要能在HMI上直接修改并且掉电保存。人机交互包括运行状态显示当前模式、当前批次、已剪切数、参数设定界面、手动操作按钮、报警显示与确认。这三块看起来独立但其实互相牵连。逻辑控制负责执行参数管理为逻辑提供设定值人机交互负责把状态和参数呈现给操作员。如果一开始没有把功能边界划清楚后面写程序时容易出现“这个变量到底该放哪”的混乱感。我第一次做类似项目时觉得逻辑不复杂直接打开博途就开写结果做到一半发现没考虑“最后一刀送料后要清余料”的问题程序架构推倒重来了一次。吃一堑长一智现在无论项目多小我都会先花半小时画一画流程和功能清单再动软件。2. 方案选型为什么选博途1200PLC加HMI做仿真2.1 硬件平台选型的考量仿真项目虽然不直接上设备但选型逻辑要尽量贴近真实落地场景。我最后选择了西门子S7-1200系列原因有三点。第一1200PLC在中小型单机设备里用得非常广剪板机这类设备在市场上很多就是1200或者200 SMART在驱动选1200仿真出来的控制思路可以无缝迁移到实际项目中。第二1200的运算能力和通信接口对于这种规模的逻辑控制绰绰有余成本也合理。第三博途TIA Portal平台同时集成了PLC编程、HMI组态和仿真环境一套软件全搞定比起用第三方软件拼凑要省心太多。CPU型号上我选的是1214C DC/DC/DC。这个型号自带14路数字输入和10路数字输出对这种规模的控制任务足够用而且自带以太网口做HMI仿真通信非常方便。如果你手上的剪板机系统有模拟量检测比如板厚检测、伺服定位可以换成1215C或者扩展模拟量模块逻辑思路是一样的。控制器在博途里组态的时候要注意订货号和固件版本必须和你手头实际的CPU或者PLCSIM支持的范围匹配否则后面下载程序会报“固件版本不支持”的错误。2.2 博途版本选择与安装经验版本问题值得单独拿出来说因为这里面坑不少。目前我手头装了V17和V20两个版本V17用来跑一些老项目的维护V20用来做新项目。选题时需要注意博途项目文件并不是完全向下兼容的高版本能打开低版本低版本打不开高版本。如果你下载到的例程是V18的用V16是打不开的。我建议新学的人直接装V20甚至V21省得之后又要迁移。我刚入行的时候不懂这个在网上找了一个V15.1的例程结果自己装的V14死活打不开折腾一下午才搞清楚是版本兼容性的问题。安装方面最常被问到的就是能不能装在D盘。博途安装路径确实可以改但要注意它不只是装一个主程序还包含若干运行库和许可证管理器部分组件仍然会写入C盘系统目录。所以C盘空间一定要留足建议至少预留50GB有条件的话整个安装过程关闭杀毒软件、断网安装能避开不少莫名其妙的报错。卸载博途也是个大工程很多初学者装坏了想重装结果发现控制面板里卸载完重新装又说检测到已安装。这种情况需要手动清理注册表和服务项的残留最省心的办法是下载西门子官方的卸载清理工具把许可证服务彻底停掉再删注册表项。我在V17和V20并存时也遇到过安装顺序导致的兼容性问题V20装完以后V17的许可证服务偶尔起不来。后来我学乖了先装低版本再装高版本并且保证两套版本共用同一个许可证管理器到目前为止没再出过问题。2.3 为什么先做仿真再上设备我一直强调在真实设备上调试之前先通过仿真把程序逻辑跑顺。原因很简单仿真阶段发现问题改程序成本只有几分钟设备调试阶段发现问题可能涉及拆线、改机械结构、甚至等配件。自动剪板机这类设备机械动作一旦出错后果比电气问题严重得多。通过PLCSIM仿真和HMI仿真能提前验证时序互锁是否正确、故障报警是否触发、计数逻辑是否累积准确。虽然仿真不能完全替代现场调试但可以把80%的逻辑问题提前消灭掉真正到现场就只需要处理传感器信号、机械响应这些仿真模拟不了的问题了。3. PLC程序架构与核心控制逻辑实现3.1 I/O分配与变量规划在博途里建好项目后第一步是规划I/O和变量表。我建议按照设备实际位置来命名这样后续查起来省力。剪板机这个项目我做的I/O规划大概是这样的数字量输入方面I0.0是启动按钮、I0.1是停止按钮、I0.2是手动自动模式切换、I0.3是送料前限位、I0.4是送料后限位、I0.5是压料机构上到位、I0.6是压料机构下到位、I0.7是刀架上到位、I1.0是刀架下到位、I1.1是急停。数字量输出方面Q0.0是送料电机正转、Q0.1是送料电机反转、Q0.2是压料电磁阀、Q0.3是剪切电磁阀、Q0.4是运行指示灯、Q0.5是报警指示灯。这里有一个值得提醒的地方限位开关的接线方式决定了程序里的逻辑极性。如果设备用的是常闭触点串入回路那信号状态为1时反而是“未到位”写程序时要取反。我在变量注释里会明确标注每个输入是常开接法还是常闭接法不然过两个月自己回头看程序都会犯迷糊。I/O分配完成后再到PLC变量表里把符号名写清楚并且统一数据类型。所有的状态字我习惯用Bool参数用Int或Real计数器用Int或DInt这样在HMI绑定时不用来回转换类型。3.2 程序块设计博途里PLC程序通常用组织块OB、函数FC、函数块FB和数据块DB来组织。我这个项目用了这样的结构OB1主循环负责调度各功能块FC1是自动剪切流程控制FC2是手动模式控制FC3是报警与故障处理FB1是剪切计数与批次管理DB1是全局数据块存放设备参数和运行数据DB2是FB1的背景数据块。把程序拆成多个FC和FB最大的好处是逻辑清晰。比如自动流程和手动流程分别放在FC1和FC2里两者之间只需要在OB1里做互锁调用比把所有逻辑全塞在OB1里要容易排查得多。另外OB1里调用FC和FB时要注意调用顺序。我习惯按“模式判断→自动流程→手动流程→报警处理”的顺序排列这样程序扫描时先判断当前是什么模式再执行对应流程最后处理报警。如果报警处理排在前面遇到急停信号时可能还没执行到就被后面的逻辑覆盖了状态显示会不正确。3.3 自动剪切循环实现自动循环是整个程序的核心。我用SCL写了主流程比梯形图阅读起来直观一些。核心逻辑片段大致是这样// 自动模式启动条件 IF 手动_自动模式 FALSE AND 启动按钮 AND NOT 批次完成 THEN 自动运行中 : TRUE; END_IF; // 送料阶段板材进给到设定长度 IF 自动运行中 AND NOT 送料完成 AND NOT 压料中 AND NOT 剪切中 THEN 送料电机正转 : TRUE; END_IF; // 压料阶段送料到位后压紧板材 IF 送料完成 AND NOT 压料中 AND NOT 剪切中 THEN 送料电机正转 : FALSE; 压料电磁阀 : TRUE; 压料中 : TRUE; END_IF; // 剪切阶段压料到位后剪切 IF 压料到位 AND 压料中 AND NOT 剪切中 THEN 剪切电磁阀 : TRUE; 剪切中 : TRUE; END_IF;这里的关键点是每个阶段都要带上“前一个阶段是否已经完成”的条件确保不会跳步。我用“压料中”“剪切中”这种内部标志位来记录当前处于哪个阶段而不是直接用输出线圈状态来判断。因为输出线圈在程序扫描周期内可能因为其他条件被复位而内部标志位更稳定逻辑更可靠。这个SCL片段通过博途的SCL编辑器输入后编译下载到PLCSIM中验证行为跟实际PLC基本一致。3.4 计数与批次管理剪切计数用FB1来做。每次剪切完成信号从1变成0的下降沿触发计数加一。可能有人觉得计数这种功能用计数器指令就行了但用FB来做的好处是可以把目标数、当前数、批次完成标志、剩余数这些数据全部封装在一个块里方便HMI读取和处理。FB1的核心逻辑如下// 下降沿检测剪切完成 #剪切完成沿 : #剪切完成信号 AND NOT #剪切完成信号_上次; #剪切完成信号_上次 : #剪切完成信号; IF #剪切完成沿 THEN #实际剪切数 : #实际剪切数 1; END_IF; // 达到目标数量 IF #目标剪切数 0 AND #实际剪切数 #目标剪切数 THEN #批次完成 : TRUE; END_IF;这段逻辑里有个细节当批次完成后实际剪切数保持当前值不清零HMI上显示的就是这一批总共剪了多少块。操作员在HMI上按下“批次复位”按钮后再把实际剪切数清零、批次完成标志复位。另外我还加了一个判断条件目标剪切数必须大于0才触发批次完成防止操作员误把目标数设成0导致系统一直报警停机。4. HMI画面设计与仿真实战4.1 画面布局与控件选择HMI是整个系统的“脸面”操作员每天对着它干活画面布局直接影响使用体验和误操作率。我用的是博途集成的WinCC HMI组态功能画面按功能分成几个页面主画面、参数设置画面、报警画面。主画面放设备运行状态的核心信息包括当前模式、启动停止按钮、剪切计数显示、批次完成指示灯、送料压料剪切的状态指示。参数设置画面放板材长度、目标剪切数、启动延时等参数输入框。报警画面显示当前报警和报警历史。控件选择上我建议用按钮加“按下时置位”和“释放时复位”的组合来实现点动控制特别是手动模式下的送料点动、压料点动、剪切点动。不要用“切换”功能的按钮去控制电磁阀因为操作员容易忘记松开一直带电比较危险。比如手动模式下的压料点动按钮按下时Q0.2为1释放时Q0.2为0这样松开按钮电磁阀就断电压料机构立即复位安全性高很多。HMI里这种事件绑定方式在按钮属性窗口里面通过添加“按下”和“释放”两个事件来完成。4.2 变量连接与动画效果HMI画面上的每个元素都要绑定对应的PLC变量。在HMI变量表里我建立了和PLC全局数据块变量一一对应的连接注意数据类型必须一致。比如PLC里的“实际剪切数”是Int类型HMI里的IO域就要选Int类型否则显示会出现乱码或者根本无法连接。还有一个小细节HMI变量表里可以直接引用PLC的DB变量但引用路径一定要对不然下载HMI项目时会提示变量找不到。动画效果方面我习惯让设备的示意图形根据状态变色。比如送料电机运行时电机图形变成绿色压料机构下降到位后压料图形变成红色。这种效果通过给图形对象的“颜色”属性关联变量来实现变量值发生变化时颜色自动切换。比如一个圆形的颜色属性关联到“压料到位”这个Bool变量值为1时显示红色值为0时显示灰色。这一步做完以后仿真运行的观感会好很多也更容易判断各个状态是否正确。4.3 HMI仿真联调流程HMI仿真和PLC仿真是联动的。具体操作流程如下先在博途里启动PLCSIM把编译好的PLC程序下载到虚拟PLC中然后启动WinCC仿真选择需要仿真的HMI设备我这里用的是精致面板或者Comfort Panel型号PLC仿真和HMI仿真同时运行后HMI画面就能跟虚拟PLC通信了。这里有一个很重要的操作顺序必须先启动PLC仿真并且把程序跑到RUN状态再启动HMI仿真。如果顺序反了HMI仿真可能搜索不到PLC导致画面上的变量都是空白的或者显示“###”。我第一次搞的时候不知道这个顺序折腾了半小时后来才反应过来是启动顺序的问题。另外HMI仿真软件在启动时会问你选择要运行的设备类型如果你组态的是某个具体面板型号仿真窗口会模拟那个面板的尺寸和外观。这个阶段不要怕界面丑重点是功能验证。我先用最简单的KTP700型号做仿真跑通逻辑以后再换精致面板这样可以省去反复编译下载的时间。5. 联调排错与常见问题实录5.1 HMI仿真按钮无反应的排查思路这是网上问得最多的问题之一。HMI仿真启动后画面显示正常但点按钮没有任何反应。我遇到这种情况时排查顺序是这样的第一确认PLCSIM里的PLC是否处于RUN状态。如果PLC停了按钮点了没反应非常正常输入输出都不会刷新。第二确认按钮连接的是不是正确的变量。双击按钮打开属性看事件里绑定的“按下”和“释放”动作是不是指向了PLC变量。第三确认PLC程序里变量地址有没有被覆盖使用。我在一次调试中遇到过按钮对应的变量在程序里被多个位置写值导致HMI写入值被立即覆盖表现出来就是按钮点了没反应或者状态一闪而过。还有一个容易被忽略的地方HMI仿真有时会弹出一个安全提示窗口询问是否允许写入操作如果你没注意到直接忽略了按钮的写入动作就不会生效。所以点了按钮先提醒自己看看界面上有没有隐藏的弹窗。如果以上都检查了还是没反应可以试试在HMI画面里放一个文本域直接绑定变量正常的话能实时显示不正常就说明变量连接断了这个排查思路比盲猜高效得多。5.2 字符串变量显示异常的真实原因有同行遇到过这样一个问题在PLC里给字符串变量赋了空值但HMI触摸屏上还是显示原来的字符串。我排查了很久最后发现是字符串长度的坑。博途里的String类型有默认长度限制比如String[10]最大长度是10个字节。当你赋了一个空字符串如果这个字符串在DB里的地址和HMI连接不一致HMI读取的可能是旧的缓存数据。另一个常见原因是WinCC的画面对象没有正确刷新快捷键F5或重新传送一次HMI项目就能解决。更隐蔽的一个问题是PLC侧字符串内容已经修改但HMI运行的客户端缓存里仍保留旧值。解决方法是把HMI画面上的该对象删掉重新添加或者将HMI项目重新完整下载一次而不是增量下载。实测下来完整下载基本能解决这类显示异常问题。还有一点字符串变量在DB里占用的字节数跟HMI组态时的设置必须一致特别是在中文字符场景下一个中文字符占多个字节长度设置不对就会出现乱码或者显示不全。5.3 网络通信与实际连接问题仿真环境下因为用的是本地回环网络通信问题不明显但一旦切到真实设备就容易踩坑。比如有朋友问网络交换机POE供电和1200PLC怎么连接。如果交换机是POE供电的那么网线可以同时传输数据和电力但要注意1200PLC的以太网口是否支持POE受电。绝大多数标准型1200PLC的以太网口不支持POE受电它们仍然需要独立的24V电源。POE交换机最多起到普通交换机的通信作用不能替代PLC供电。如果你想减少布线可以用POE供电的交换机给HMI面板之类的受电设备供电PLC最好还是老老实实接24V电源不要省这一步。另外真实设备调试时如果PLC和HMI通信不上第一件事就是ping一下对端IP确认物理链路通。然后再检查博途硬件组态里的IP地址和实际设备是否一致。仿真阶段因为都是虚拟的往往跳过了这一步到了现场反而容易忘记。还有一个常见的错误是把PLC的IP地址和电脑设成了同一段但子网掩码不一致这种问题用ping都不一定能查出来需要手动确认网卡参数。5.4 博途安装与许可证避坑最后聊一下博途安装本身的问题。前面提到过博途能装在D盘但会有组件写入C盘所以装之前C盘必须留足空间。装完以后偶尔会碰到许可证失效HMI仿真启动时提示找不到许可证。这种情况我通常先打开Automation License Manager看许可证状态是否正常。如果显示“未激活”说明许可证服务没有起来。这时用管理员身份重启一下许可证服务或者重新激活许可证。还有一个高频坑是博途版本V16、V17、V18并存。如果之前装过V16再装V18可能会遇到“卸载不干净”的提示。卸载的时候要注意除了控制面板卸载主程序还要打开服务管理器把Siemens相关的服务全部停止再删除遗留的许可证文件。很多朋友直接强删文件夹结果注册表残留导致重装失败。其实西门子官方提供了清理工具按文档操作下来基本能清干净。我个人的体会是这个仿真项目虽然规模不大但把“PLC逻辑设计—程序架构—HMI人机交互—联调排错”这条全链路走通之后后续上手更复杂的产线控制会顺畅很多。最后再分享一个小技巧仿真调试时不要只盯着HMI画面看多用博途里的变量监控表和PLCSIM的在线诊断功能程序卡在哪一步、哪个变量没满足条件一眼就能看出来。这种“先仿真验证、再落地调试”的习惯能帮你省下大量现场改程序的时间。
返回列表