ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

S7-1200控制五轴伺服装配机:四轴PLC运动控制加第五轴内置定位实战

S7-1200控制五轴伺服装配机:四轴PLC运动控制加第五轴内置定位实战 1. 设备是干什么的五轴自动装配机的动作流程先交代个背景别一看到“五轴伺服”就以为是五轴联动加工中心。咱们这种自动化装配项目里说的五轴绝大多数是五个轴各干各的凑在一起把动作节拍拼出来。这台设备是给一条小家电产线做的自动装配机整机不大占地不到三个平方但五脏俱全上料、搬运、压装、旋转、出料一步不缺。设备的机械结构大体这样一个双工位转盘在中间周围分布着几个功能模组。五个轴的活分得很清楚轴运动形式控制方式实际负责的动作X轴伺服电机丝杠PLC运动控制取料横移把上料位的工件搬到转盘Y轴伺服电机丝杠PLC运动控制前后推料配合压装工位定位Z轴伺服电机丝杠PLC运动控制升降压装也兼带吸取动作U轴伺服电机行星减速机PLC运动控制转盘分度每次旋转180度W轴伺服电机齿轮齿条伺服内置定位模式载具角度微调产品装配时需要转个特定角度这套流程跑下来节拍大概7秒一件。X、Y、Z、U这四个轴都是典型的定位控制走的是信号流程传感器给出工件到位信号PLC算好目标位置发脉冲给伺服伺服电机转动编码器反馈位置到位后刹车抱住然后下一个机构接手。这套逻辑在自动化行业里太常规了难就难在四个轴之间的节拍配合还有其中一个轴就是后面要讲的“骚操作”怎么跟整体流程咬合。W轴是这个项目里最特别的一个。它不追求高速也不追求复杂的轨迹只要求一个可靠的角度定位能力而且它要跟U轴转盘上的几个工位联动把载具转到指定角度后还要保持住力矩。刚开始甲方给的方案是用步进电机加感应开关做挡块定位但实际装配的产品有角度公差要求步进丢步一次就废一件料。后来我直接给换成伺服但控制方式没走PLC运动控制而是让伺服驱动器自己管内部定位——这一点后面专门展开讲。开发这套设备用的核心部件很简单PLC是西门子S7-1200 CPU 1215C DC/DC/DC触摸屏是维纶通Weinview的10.1寸屏伺服用了某国产品牌的750W和400W两种规格通信走的是工业现场最常用的以太网和Modbus。这套组合在中小型自动化设备里非常常见成本可控供货周期短售后也好找。我为什么对这个项目印象深刻因为它是典型的“看着不难做起来碎”的活儿机械那边一个星期把架子搭起来了电气控制却折腾了小一个月。中间有两天我差点因为第5轴的调试问题想把伺服退回去换步进但最后咬咬牙把伺服内置定位玩明白了现在想想那两天踩的坑反而是整台设备最值钱的经验。下面从硬件选型开始把完整的实施过程捋一遍。2. 硬件选型逻辑S7-1200带五个伺服到底合适不合适很多接触过西门子S7-1200的朋友第一反应是“这PLC能带5个伺服吗”这个问题得拆开看。S7-1200本体CPU的运动控制能力是有限制的以常用的1214C和1215C为例本体高速输出PTO通道一般就几个固化在特定几个数字量输出点上。如果非要让它直接发5路高速脉冲给5台伺服做全闭环定位那硬件上确实不够用要么加扩展模块要么就得换方案。我这边的情况是第5轴走了伺服内置定位模式不占用PLC的高速脉冲输出。换句话说这台设备的五轴伺服里面有四轴是PLC在做运动控制另外一轴是PLC给伺服驱动器下发“目标位置号”由驱动器内部的定位程序自己完成运动和停止。所以真正的硬件约束是四个PTO通道够不够、输出点够不够、通信口够不够。选1215C有几个实际考虑第一它本体带14个数字量输入和10个数字量输出四轴定位加上气缸、传感器、报警灯这些外围信号点数刚好卡在临界线上。如果选了更小的1212C或者1214C点数不够就得加扩展模块柜子里的空间和成本都上去了。第二1215C有两个以太网口一个口接维纶触摸屏做HMI通信另一个口接伺服驱动器的Modbus TCP通信。两个网口互不干扰调试的时候我电脑还能单独插上去在线监控非常方便。如果只有一个网口触摸屏和电脑就得来回切换IP那会非常烦躁。第三1215C的供电是DC 24V跟工业现场普遍的开关电源电压一致不像有些型号是AC供电还得单独加一路220V控制电。我这整个控制柜就一个总空开进来分成主回路和控制回路控制回路统一24V清爽得很。伺服驱动器的选型也有讲究。因为我要让W轴走内置定位模式这个伺服驱动器必须支持“位置模式下的内部寄存器目标位置”功能而且最好通信功能完善一些。国产主流伺服基本都支持我选的那款支持Modbus RTU和Modbus TCP内部可以预设最多64组定位参数每组包括目标位置、运行速度、加减速时间、停留时间。这个功能以前主要用在简单单轴设备上我把它用到多轴设备里效果意外地好。脉冲接线这块要专门提一句S7-1200的高速脉冲输出是晶体管型的必须接PNP型输入源型的伺服驱动器脉冲接口。我见过有人拿继电器输出的PLC或者PNP/NPN搞混了接线结果脉冲根本不响。接线时脉冲方向用双绞屏蔽线屏蔽层单端接地这条线绝对不能跟动力线走同一个线槽。有条件的话脉冲信号用单独的24V电源供电别跟伺服使能、抱闸继电器混在一起不然后面就等着被“丢脉冲”折磨吧。电气架构定下来之后整个系统的信号链路是这样的操作人员按触摸屏上的“启动”按钮威纶通屏通过以太网写S7-1200的M区启动位M0.0之类的PLC程序顺序执行判断安全互锁条件 → 触发各轴的定位指令 → 伺服驱动电机转动 → 到位反馈 → 控制气缸动作触摸屏实时读取PLC的数据块或M区变量显示位置、速度、报警信息W轴的特殊链路PLC通过Modbus TCP向伺服驱动器写“目标位置号”和“运行触发位”伺服驱动器自己执行定位并反馈到位信号给PLC这套架构的好处是把实时性要求高的运动控制放在PLC里把逻辑相对独立、实时性要求不高的驱动控制交给伺服自身兼顾了性能和简化编程。实际跑下来的结果也很理想第5轴每次定位角度误差在正负0.02度以内比原来步进加挡块的方案不知道高到哪里去了。3. 四轴走运动控制第五轴用伺服内置定位轴控方案的取舍现在重点说下轴控方案是怎么定的为什么四个轴用常规PLC运动控制而第五个轴偏偏“不走寻常路”。X、Y、Z、U这四个轴用PLC运动控制核心原因有三个。一是它们需要跟其他机构的动作做复杂的时序配合比如Z轴压装的时候X轴必须在安全位置等待U轴转盘必须锁紧这种逻辑只有放在PLC程序里才好编排。二是它们要处理原点回归、软限位、硬限位、报警复位等一大堆状态用西门子S7-1200的运动控制功能块MC_Home、MC_MoveAbsolute等可以统一管理。三是这四个轴的动作轨迹相对固定、负载变化不大脉冲控制完全够用没必要在伺服驱动器里本地写程序否则改一次动作逻辑就要去伺服那边改参数维护成本太高。W轴用伺服内置定位最直接的原因是PLC的高速输出通道不够了。四个PTO通道刚好占满又要强加一个W轴的话要么换更高级的PLC要么扩展一个高速输出模块。我评估了一下成本和时间都不划算。换更高级的PLC程序迁移工作量不小而且甲方预算摆在那里加扩展模块订货周期不确定柜内还要增加安装空间。后来我翻了一下伺服驱动器的说明书发现它内置的定位功能其实很灵活心里就有底了。具体操作是这样实现的我通过Modbus TCP让PLC往伺服驱动器里写三样东西目标位置号比如1号、2号、3号、每次定位的目标位置值、运行速度。写完之后再往一个“定位启动”寄存器写1伺服就会自动按预设参数运动到目标位置运动完成后回一个“到位”信号给PLC。W轴在这台设备上一共就用到5个目标位置对应5种产品角度用伺服内置位置表简直完美PLC程序里连加减速曲线都不用管。这个方案在调试阶段帮了大忙。试产当天甲方突然说某款产品要加一个45度角的定位动作我连PLC程序都没改直接在触摸屏的“W轴参数”页里把6号位置的目标值填上45度把触发条件接到某个M区完事。要是全走PLC运动控制我得改程序、编译、下载、重新调试没个把小时下不来。这种“改数据不改逻辑”的便利在设备交付后尤其值钱因为甲方自己的设备维护人员也能通过触摸屏修改位置值只要不误触发几个关键互锁安全性完全没问题。当然这种混搭方案也有代价。最明显的问题是PLC对这个轴的状态监控变弱了。PLC运动控制可以随时读取轴的实际位置、速度、跟随误差而伺服内置定位模式下PLC只能通过Modbus轮询读取伺服驱动器反馈的位置和状态字实时性差一些。我在这个项目里用的轮询周期是50毫秒对W轴这种速度不快、逻辑简单的应用来说完全够用但如果将来要做高速高精的插补运动那这套方案就不合适了。另外一个坑是通信的可靠性。第5轴完全依赖Modbus TCP通信一旦通信断掉PLC会误以为伺服“没反应”或者“没到位”轻则报警停机重则在自动运行中出安全事故。所以我做了一个基本的看门狗逻辑PLC每200毫秒往伺服驱动器的“心跳寄存器”写一个累加数伺服驱动器如果连续几次没收到心跳就把轴停下来并给出通信中断报警。这个逻辑很简单但能杜绝大部分通信异常导致的隐性风险。这套轴控方案对于“四轴定位为主加一个动作辅助轴”的设备来说基本上是最优解保留了PLC对整个系统的集中控制能力又规避了硬件通道不足的瓶颈。如果你的项目也是类似的轴数结构可以参考这个思路不一定非得把每个轴都做成PLC运动控制有时候把运动逻辑放一部分到驱动器内部反而更省事。4. 定位控制里的几个关键参数与脉冲当量换算做定位控制脉冲当量的换算永远是第一个绕不过去的坎。我见过不少新入行的同事程序功能块调用得挺熟练但一到参数计算就翻车。X、Y、Z这三个直线轴的参数相对好算因为机械传动链就是“伺服电机—联轴器—丝杠”中间没有太多绕弯的地方而U轴是转盘分度轴W轴带齿轮齿条计算逻辑又不一样。这里把我在项目里实际用的计算方法完整写出来大家拿去套就行。脉冲当量的本质含义是PLC发一个脉冲机械末端移动多少毫米或者旋转多少度。计算这个值需要三个要素伺服电机编码器分辨率、驱动器电子齿轮比、机械传动链的减速比和丝杠导程。我先说X轴的例子。X轴用的是750W伺服电机编码器是2500线的增量式编码器。伺服驱动器内部经过4倍频处理所以电机旋转一圈对应的反馈脉冲数是 2500×4 10000。X轴电机到丝杠之间装了一个行星减速机减速比是1:5也就是电机转5圈丝杠才转1圈。丝杠导程是10mm即丝杠转一圈滑台移动10mm。那么整个传动链的换算关系就出来了电机转5圈 → 丝杠转1圈 → 滑台移动10mm。同时电机转5圈对应的PLC需要发的脉冲数是 5×10000 50000。所以PLC发50000个脉冲机械末端移动10mm换算下来每个脉冲对应的位移量是 10 ÷ 50000 0.0002mm也就是0.2微米。这个数值在S7-1200的运动控制组态里怎么用西门子博途软件的运动控制轴组态中需要设置“每转脉冲数”和“负载每转的距离”这两个参数。对于X轴电机侧的“每转脉冲数”填10000编码器4倍频后“负载每转的距离”不是10还必须考虑减速比也就是丝杠转一圈移动10mm而电机要转5圈才能让丝杠转一圈所以负载每转电机5圈对应距离10mm。填参数的时候可以把“减速比”也输进去或者直接把负载每转的距离等效为 10÷52mm。这里一定要搞清楚单位口径我见过有人直接填了10结果位置偏差5倍半天找不到原因。U轴转盘分度的参数计算跟直线轴不一样。U轴电机带一个1:20的行星减速机转盘直接装在减速机输出端电机每旋转一圈转盘旋转 360÷2018度。电机一圈10000脉冲所以每个脉冲对应 18÷100000.0018度。如果要求转盘每次精确转180度那么需要的脉冲数就是 180÷0.0018100000个脉冲。这组数字在PLC里直接用绝对定位指令的“位置”参数填写时要统一成用户单位S7-1200的运动控制指令中用户单位是可以自定义的我这边用的“度”直接在组态里设好换算关系程序里写180.0PLC自动换算成脉冲数。还有一个关键点是伺服驱动器的电子齿轮比设置。很多人在脉冲模式下会遇到“命令位置走不准”或者“速度不对”的问题多半是电子齿轮比设错了。电子齿轮比描述的是上位机发送的脉冲数与电机实际转动的脉冲数之间的比例关系。举个例子如果PLC发10000个脉冲希望电机转一圈而伺服编码器反馈一圈是10000脉冲那么电子齿轮比就是1:1。如果PLC发5000个脉冲希望电机转一圈则电子齿轮比要设为1:2也就是分子1、分母2。这个值千万不要拍脑门填一定要根据你希望在PLC端看到的“指令脉冲数”来反推。在实际调试中我习惯用一个简单办法验证参数是否正确把轴的手动速度设成10mm/s按下点动按钮用百分表或者卡尺实测滑台移动速度如果显示值跟实测值偏差在2%以内说明脉冲当量换算基本没问题如果偏差很大优先检查电子齿轮比和“负载每转距离”两个参数。另外在触摸屏上显示的实际位置务必做单位换算显示别直接把PLC内部的脉冲数显示给操作工看不是每个人都有耐心去换算0.0002mm等于多少的。5. 触摸屏界面设计维纶通屏和S7-1200组态细节都说电气这块“PLC是大脑触摸屏是脸面”这话一点不假。设备交付后甲方最先接触的就是触摸屏。界面好不好用很大程度上决定了他们对这套设备的第一印象也决定了后续售后电话多不多。我在这台设备上用维纶通10.1寸屏型号是MT8102iE主要看中它支持原生西门子S7-1200以太网驱动不需要中间加任何协议转换模块直连就能读写S7-1200的数据块、M区、I/Q区。先说通信组态。维纶通屏通过以太网连S7-1200在EasyBuilder Pro软件里新建一个PLC设备选“Siemens S7-1200”驱动填上PLC的IP地址必须跟触摸屏在同一个网段再配上机架号和槽号。S7-1200的默认机架号是0槽号通常填1。这一串如果填错了常见的表现是触摸屏所有元件都显示“####”或者“通信超时”。别问我怎么知道的我第一次配置的时候就因为槽号填了0整屏数据全变成星号。数据地址这块有个坑必须拿出来单独讲。S7-1200编程的时候默认启用“优化块访问”这样PLC里定义的数据块变量没有固定的绝对地址只能通过符号寻址。维纶通屏早期版本对S7-1200的符号寻址支持并不完善容易出现找不到变量或者地址偏移的问题。稳妥的做法是在博途里把要传给触摸屏的数据块取消“优化块访问”勾选这样每个变量就有了固定的绝对偏移地址比如DB4.DBD0、DB4.DBD4这种维纶屏直接按绝对地址读取非常稳。我在这个项目里专门建了一个“HMI通信数据块”里面把所有需要在触摸屏上显示和控制的数据全部集中起来包括当前模式、各轴当前位置、各轴目标位置、速度、报警代码、按钮触发位等。这样做的最大好处是PLC程序里访问数据块统一触摸屏上也只需要配置一个设备的地址范围维护起来一目了然。界面布局上我分了几个页面主监控页显示整机运行状态、当前正在执行的步骤、节拍计数、报警灯状态一个大大的“启动/急停”按钮放在右下角符合右手操作习惯。手动操作页五个轴各有“点动正向/反向”按钮、点动速度设定框、当前位置显示。手动模式下所有安全门锁条件照常生效防止误操作伤到调试人员。自动参数页存放每个轴的目标位置、运行速度、加减速时间等参数。本来这些参数可以写死在PLC程序里但设备要兼容多种产品型号我给每个工位都做成了配方形式。配方管理页这个页面特别实用。我在维纶通里建了配方数据库每一行代表一种产品型号下面挂着该型号对应的X/Y/Z/U/W各轴位置参数。生产要换型号的时候操作工在触摸屏上选一个配方点“下载”数据就整组写入PLC的数据块里。以前换型要工程师拿着电脑到现场改现在操作工点两下就完成。报警页面S7-1200的程序里把所有报警条件汇总到一个整型变量里每个bit代表一种报警。维纶通屏通过读取这个整型变量配合“报警显示”元件把bit状态翻译成中文文字同时记录报警发生时间和复位时间。调试后期这套报警系统帮了我大忙因为有些偶发问题不是每次都能复现有了报警履历才能事后排查。还有一个小技巧是关于按钮安全互锁的。维纶通屏有“安全等级”功能可以给不同操作员设置不同权限。我把“修改配方参数”和“执行手动原点回归”这些有风险的操作设成需要输入密码的操作员等级普通的“启动/停止”则任何操作工都能按。这样做不是防君子是防误触——实际产线上操作工戴着手套一不小心碰到触摸屏如果误改了伺服参数那可不是闹着玩的。触摸屏跟PLC之间的变量刷新周期也要注意。维纶通屏默认的刷新周期是100毫秒对按钮和数值显示来说够用但有些场合需要更快响应比如“急停”这种信号必须走硬接线到PLC数字量输入不能只靠触摸屏的按钮。我在这个项目里明确跟甲方交代过触摸屏上的急停按钮只是软停机真正可靠的急停必须按控制柜上的物理急停钮两者的逻辑相互独立。这一点甲方后来在验收报告里特别写了句“做法专业”可见用户对安全逻辑的重视程度比我预想的还高。6. 回原点、抖动、丢脉冲调试点最值得说的几个问题最后这部分全是干货都是调试过程中真实踩过、花了大半天才爬出来的坑。如果你也是刚接触S7-1200运动控制的工程师这一章值得先收藏。第一个问题回原点不一致位置积累误差越来越大。设备刚组装好联调的时候我发现Z轴每次回原点后第一件产品的压装深度都不一样用百分表量了一下最大偏差到了0.3毫米。这个精度对普通装配来说可能也勉强能用但客户那边有公差要求不能这么糊弄。我开始排查。先检查了原点开关一个光电传感器安装位置没问题再确认Z轴每次回原点的速度是不是恒定发现问题确实出现在回原点的“停车点”上——Z轴向下找原点开关时速度太快30mm/s光电传感器从检测到信号到PLC真正停止脉冲输出之间有延迟再加上Z轴自身重力和丝杠间隙导致每次实际停止位置差出一两毫米。而且因为是单方向重复回原点误差只往一个方向累积越跑越偏。解决的办法分两步。第一步把回原点分成两个阶段先用较快的速度去寻找原点开关的下降沿找到之后立刻反向低速5mm/s退出原点开关再反向低速找一次上升沿这次找到的上升沿才作为真正的原点位置。这个思路的本质是消除“快速逼近机械惯性”带来的重复性误差代价是回原点时间会多个一两秒。第二步如果对原点位置精度要求更高可以利用伺服的编码器Z相脉冲做“零脉冲锁定”即光电开关粗定位后继续低速移动到编码器Z相脉冲的精确位置。我这次因为Z轴回原点重复精度只需要控制在0.05mm以内两步法已经满足了就没有硬上Z相锁定省了点接线和组态时间。第二个问题U轴转盘在高速分度时出现“冲过头”再反向回拉的抖动。转盘分度的时候明明定位指令只写了180度但实际转盘在到位前总要先冲过头两三度然后大幅度抖一下才停在180度上。这个现象如果是在数控机床或者高精度设备上直接就是废品。分析下来原因有两个一是伺服驱动器的位置环增益设置偏高系统刚性太强到位瞬间的减速过程控制不住二是机械减速机存在齿隙转盘在反向回拉的时候正好把齿隙吃掉了表现出来就是“咯噔”一下。我的处理方法是先降伺服驱动器的位置环增益和速度前馈增益让轴的响应变“软”一点然后再在PLC的运动控制指令里把加减速时间拉长尤其把定位结束前的“减速距离”留足。说白了就是别让轴跑得太猛在到达目标位置之前提前进入匀速慢爬状态。改完以后转盘虽然快停的那一瞬间看着没有之前凌厉但定位稳定性和重复精度反而高了。有时候电机的“果断”不等于设备的“稳定”这个度需要调试时根据机械实际情况反复试探。第三个问题X轴运行过程中偶尔丢脉冲位置越走越偏。这个问题最诡异因为不是每次都发生而是那种“三天来一次、一来丢一截”的偶发故障。我一开始怀疑程序问题把定位指令反复检查了几遍没毛病。后来怀疑伺服编码器换了一个排查故障依旧。最后发现是脉冲信号线跟伺服电机的动力线走了同一个线槽动力线在加减速时产生的电磁干扰直接耦合到脉冲信号线上导致PLC发出去的脉冲被伺服驱动器漏掉了几个。处理办法也很直接把脉冲线单独拉出来换成双绞屏蔽线屏蔽层在PLC这一端单点接地同时把伺服驱动器的脉冲输入滤波时间调小让它对窄脉冲的响应更灵敏减少被干扰淹没的概率。改完之后跑了整整两天再没出现位置偏移。这件事给我一个教训步进或者伺服系统的干扰问题优先查布线不要一上来就怀疑硬件坏了。很多设备小厂把强电弱电挤在一个线槽里省了事后面调试能把自己折腾死。第四个问题急停之后触摸屏上的运行状态“卡死”。按下急停设备停了但触摸屏上的“运行中”指示灯还亮着自动流程也没有退出再按复位按钮没反应。查了程序发现问题出在急停只断了伺服使能输出PLC程序的自动流程状态机没有被强制复位导致流程停在一个中间状态IO输出乱掉。后来我在急停处理程序里加了强制逻辑一旦急停信号触发所有运动控制指令立即取消所有伺服使能清零自动流程的状态字归零同时给伺服驱动器发送“急停”命令字。这套处理必须放在一个独立的中断程序里不能放在普通扫描的任务里不然CPU忙于处理运动控制指令时可能来不及响应急停。调试运动控制类项目本质就是“机械、电气、软件”三个维度的交叉排查任何一个环节有问题最终都会反应在轴的异常运动或者位置误差上。可能有些读者会说这些问题看起来都不难啊怎么就要花一整天去排查实际到了现场光是把可能的因素一个个排除掉就需要大量时间这就是经验和熟练度的价值所在。
返回列表