ARTICLE DETAIL

资讯详情

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

S7-200 SMART步进电机包络控制:多段运动与加减速整定实战指南

S7-200 SMART步进电机包络控制:多段运动与加减速整定实战指南 写第四篇之前先交代一下背景这个系列写到现在已经把 S7-200 SMART 控制步进电机的基础链路讲完了——从驱动器接线、PTO 高速脉冲输出到运动控制向导的组态、手动回原点、单段定位。按理说大部分设备到这一步已经能转起来了。但一进到真实产线就会发现单段定位根本不够用客户要的是快速接近工件慢速压到位再快速退回或者左右来回送料不停顿。这种多段变速、连续换向的需求靠之前那套单段 GOTO 写法也能憋出来但是程序又臭又长停位还不准。第四篇就专门解决这个问题核心是 S7-200 SMART 运动控制向导里的包络Motion Envelope功能外加加减速整定、失步排查和低成本位置校验这些实战里绕不开的坑。这篇适合已经跑通过基础定位、想在运动控制上再进一步的朋友。如果你还停留在脉冲输出能转就完事的阶段看完这篇应该能把设备动作做得更有层次也更稳。1. 被工艺逼出来的多段运动为什么单段定位在第四篇不够用了1.1 单段定位的动作缺陷单段定位的底层逻辑很简单给一个目标位置和一个运行速度PLC 自己计算加减速到位置停下来。这在从 A 点移动到 B 点这种简单动作里没问题。但实际工艺往往不是匀速移动而是分阶段走的。举个我做过的例子一台小型压装设备要求滑台从原点出发以 80mm/s 快速接近工件距离工件 10mm 的位置降到 20mm/s然后匀速压装到位压装完成后以 100mm/s 快速退回原点。如果全用单段定位指令要么只能按最低速度走全程节拍慢得被生产吐槽要么拆成三段每段之间都有一个减速到零、再重新加速的过程启动停止次数多丝杠和联轴器承受的冲击也大最关键的是三段定位的终点误差会累积因为每段重新启动时的机械回差不一样。包络就是为这种场景设计的。它把运动过程拆成多个段Segment每个段可以单独定义目标速度、移动距离或目标位置段与段之间可以选择平滑过渡还是停下来换向。运动控制向导会把包络编译成一张参数表运行时由 PLC 后台自动调度不占用扫描周期去逐段计算。1.2 独立包络和连续包络的差别用向导建包络的时候会看到一个选项独立包络还是连续包络。这个决定必须一开始就想清楚否则后面返工。独立包络从当前位置开始执行跑完最后一个段就停整个包络结束。适合快速接近→慢速工进→停这种有明确终点、不需要自动接着跑下一个动作的场景。连续包络多个包络之间可以不间断衔接前一个包络的末尾速度直接作为后一个包络的起始速度中间不停止。适合往复送料圆周分度后连续走多个工位这类需要不停顿的循环。这里有新手容易犯的理解错误以为连续包络是同一个包络里段数很多所以自动连续。实际上连续包络的连续指的是多个包络之间的连接关系不是段之间的关系。单个包络内部的段与段之间如果设置成不减速过渡那是不停顿的但如果段与段之间要求停下来改变方向那就需要连续包络配合多个包络来做。1.3 什么情况下别用包络包络不是万能的有些场景用了反而添乱。我的判断标准是三个问题运动过程是否有两个以上不同的目标速度段是否要求段与段之间不停顿是否需要在同一个自动循环里反复执行同一套轨迹如果三个答案都是否就直接用单段定位别上包络。比如只是一个简单的按按钮走到固定位置停用 AXISx_GOTO 就够了。包络的本质是把轨迹规划提前到组态阶段换来的是运行时的自动调度代价是灵活性下降——运行时不能随便改某个段的速度要改就得重新下载组态。这一点在项目交付后尤其麻烦客户明天说速度再快一点你总不能动不动就拿电脑过去改。所以我的习惯是工艺轨迹稳定、批量生产用的设备大胆用包络还在调试阶段、轨迹天天变的设备先用单段定位把动作跑通最后再固化成交给现场的包络版本。2. 在 Micro/WIN SMART 里组态一个可用的包络向导参数逐项拆解2.1 进入运动控制向导后的第一步打开 STEP 7-Micro/WIN SMART在左侧项目树里找到向导双击运动控制向导会看到轴配置界面。S7-200 SMART 的晶体管输出型 CPU 最多能配置 3 个运动轴分别对应 Q0.0、Q0.1、Q0.3 这三个高速脉冲输出点。继电器输出型不支持高速脉冲这个在选型时就要确认别等设备做完了才发现输出点带不动。进入轴配置后第一件事是设定测量系统。这里可以选择脉冲或工程单位。我的建议是只做简单位置控制、不关心实际距离的项目用脉冲就行省得换算。涉及丝杠导程、同步带传动比、需要以 mm 为单位写程序的项目务必选工程单位。选工程单位后向导会问你电机转一圈需要多少脉冲和电机转一圈负载移动多少距离。这两个参数算错了后面的位置全是错的。举例步进驱动器设 8 细分两相步进电机步距角 1.8°200 个整步转一圈细分后每圈需要 1600 个脉冲如果丝杠导程是 5mm那就是1600 脉冲/圈配5mm/圈也就是 320 脉冲/mm。注意这里要按驱动器实际拨码开关设的细分来算不同厂家细分的表示方式可能不一样有的写每转脉冲数有的写细分倍数看手册核对。2.2 加减速参数的默认值怎么定向导里要求设置最大速度、启动/停止速度、加减速时间。很多人直接填默认值然后现场一跑就失步。这三个参数不是随便填的它们的物理意义是启动/停止速度PLC 输出脉冲的第一个频率和最后一个频率。步进电机在极低频率下扭矩很小所以启动速度不能设太接近 0一般 42 步进设 10~20 Hz 对应的速度57 步进设 20~50 Hz 对应速度工程单位下就看向导对应的 mm/s。设太低了电机反而容易在启动瞬间抖一下。最大速度工艺需要的最高运行速度但必须小于步进电机在当前负载下的最大不失步转速。后面第五节专门讲怎么测这个值。加减速时间从启动速度加速到最大速度、再从最大速度减速到停止速度所需的时间。轻载取 0.2~0.4s重载取 0.5~1s 起后面根据实测再缩。这三个参数在整个向导里是全局默认值建包络时每个段还可以单独覆盖速度但加减速时间一般沿用全局值除非某个段特别短比如只有 5mm 的移动距离如果加减速时间太长可能刚加速完就要减速实际跑不出目标速度。2.3 创建包络的完整操作顺序在向导里选好轴之后进入包络配置页。操作顺序我拆得很细点击新建包络给包络起个名字比如压装_快进-工进-退。选择包络类型独立包络或连续包络。添加段。每个段需要定义目标速度和目标位置。如果是第一段目标位置一般是相对当前点的移动量。如果后面接着走向导会默认累加位置你要看清当前位置是相对本段起点还是从原点起的绝对位置。每段可以设置结束动作。这里决定段与段之间是直接过渡到下一段还是停下来。需要停下来换向时段结束动作要选择停止并等待下一个命令或类似选项具体表述看软件版本。全部段定义完检查一下向导生成的轨迹预览确认每段速度、位置没有逻辑冲突。分配 V 存储区。向导会自动建议一个起始地址原则是避开程序中已经使用的 V 区。我一般直接按建议地址但会在程序里加注释防止后期别人在 V 区乱放数据把这个存储区覆盖否则会出现程序看着没问题跑起来位置偶尔乱跳的诡异故障。2.4 一个容易忽略的组态陷阱方向信号的极性包络组态里有一个方向相关设置很多人跳过了结果上电后电机往反方向跑。这个问题的根子在步进驱动器的方向信号逻辑和向导里定义的正方向不一致。比如向导里定义位置增加是正方向对应驱动器的 DIR 信号是某个电平但你的机械安装恰好让这个方向的运动是反的。解决方法是固定一个原则先用手动点动测试确认方向再在向导里把正方向设置成和机械实际一致不要让程序里去搞反向补偿那套。因为包络一旦涉及多个段方向不一致会让你排查到怀疑人生。3. 让包络按你的节奏运行AXISx_RUN、CTRL 和完成位判断逻辑3.1 向导生成的子程序各管什么组态完成后向导会在程序中生成一组轴子程序名称类似 AXIS0_CTRL、AXIS0_RUN、AXIS0_GOTO、AXIS0_SEEK、AXIS0_LDPOS。这组子程序不调用是不生效的很多人忘了在主程序里调用 AXIS0_CTRL结果轴完全没有输出。AXISx_CTRL轴使能和状态监控。它必须每个扫描周期都调用一次不能只在某个条件满足时调用。MOD_EN 输入为 1 时使能轴为 0 时禁止一切运动。这里注意CTRL 子程序的 EN 端要一直导通掉电或断开会导致轴状态丢失。AXISx_RUN运行包络的子程序。RUN 输入一个上升沿启动指定的包络启动后 Done 输出会在包络执行完成时置位。这是包络控制的核心。AXISx_GOTO单段定位指令用于不需要包络的简单移动。AXISx_SEEK回原点查找指令。AXISx_LDPOS修改当前位置值。比如换模后想把当前位置重新定义为 0用它。3.2 AXISx_RUN 的触发方式上升沿而不是长信号这条非常重要我见过太多人在这里栽跟头。AXISx_RUN 的 RUN 输入端应该用上升沿触发不是一直给 1。如果你把启动按钮直接接到 RUN 上按钮按下的整个扫描周期内 RUN 都是 1向导内部会被重复触发轻则包络不启动重则轴动作错乱。正确的做法是建一个运行请求标志位。按钮按下的上升沿把标志位置 1把这个标志位接到 RUN 上等 Done 置位后在 Done 的上升沿里把标志位复位。这样保证每次包络运行之间RUN 信号都能完整地经历0→1→0的过程。我给一个典型的逻辑描述用梯形图写出来大致是网络1: 启动按钮I0.1上升沿, 且包络未在运行(M10.00), 置位运行标志M10.1 网络2: M10.1 - 调用AXIS0_RUN, Envelope输入写0(包络0), RUN输入接M10.1 网络3: AXIS0_RUN的Done输出M11.0上升沿 - 复位M10.1, 置位包络完成M11.1这里用 M10.0 作为包络正在运行的互锁位防止在运行中再次触发用 M11.1 作为完成标志去触发下一步动作比如启动气缸、切换工位、报警提示。反正记住一个原则包络启动靠边沿完成判断靠 Done 的上升沿运行中要互锁。3.3 多个包络连续执行的调度写法实际项目经常要按顺序跑包络 0、包络 1、包络 2。比如送料机构包络 0 从原点高速前进到位包络 1 慢速退回取料位包络 2 再高速回原点。这种顺序执行如果写成Done 之后立刻触发下一个包络会遇到一个时序问题Done 在包络完成后的某一个扫描周期内为 1如果下一个包络的 RUN 输入端恰好也在这个周期内检测到边沿可能因为向导内部状态还没转换完而漏触发。我的做法是在 Done 的上升沿里先切换下一步标志位隔一个扫描周期再触发下一个包络。具体就是用两块逻辑第一块在 Done 上升沿把当前包络号加 1并复位当前运行标志第二块在下一个扫描周期检测到包络号变化后置位新的 RUN 标志。虽然多写了两个中间位但时序上绝对可靠尤其是在在线监控时能看到动作一步一步执行调试体验好很多。3.4 急停和中止不要一停了之包络运行到一半按下急停按钮这时候最稳妥的做法是通过 CTRL 子程序里的中止功能具体输入端口名称在向导生成的子程序里可以看到停止当前运动。中止后会有一个错误状态需要先复位错误再考虑是回原点还是从当前位置重新开始。千万别在包络运行中直接断开 MOD_EN。MOD_EN 掉 0 等于告诉向导轴一个人都没有了位置值不会保留重新使能后当前位置可能变成 0但机械实际位置并不是 0再跑绝对定位包络就直接撞机。我处理的习惯是急停按钮接入硬回路直接切断驱动器使能信号同时 PLC 程序里检测到急停后调用中止功能并置一个急停已触发需重新回原点的报警位等人工复位后强制走一遍回原点流程再做后续动作。4. 原点、限位和绝对位置回零与包络的配合细节4.1 绝对定位的前提是原点可靠包络里如果用了绝对位置那所有位置都是相对某个原点的。原点丢了后面全乱。S7-200 SMART 的典型回原点流程是轴以设定速度向原点开关方向移动碰到原点输入后减速停止然后反方向脱离原点开关再以爬行速度回到原点位置。这中间涉及原点输入常开/常闭选择、回原点方向、脱离距离等参数都在向导里设置。硬件上原点开关建议用常开触点接到 PLC 输入点。为什么不用常闭因为常闭在断线时会误判一直在原点非常危险常开断线只会导致找不到原点至少是安全侧的失效。限位开关则建议用常闭触点串联到急停回路里这样限位被撞断线时设备能停下来这是硬安全回路的事不能只靠程序软限位。4.2 回原点完成之前包络不允许启动程序里要做一个原点OK的互锁位。上电后先执行回原点回原点成功才算 OK原点是 1 的情况下才允许启动任何绝对定位包络。这样能防止一种很常见的事故设备断电后被人手动推过机构位置乱了下次上电如果直接跑包络会按错误的位置往下走。我还习惯在触摸屏上做一个原点丢失/需回零的报警状态。一旦出现驱动器报警、急停复位、掉电重启这个状态就要提示操作工先回原点。很多项目是客户现场操作工在开机不会去看 PLC 程序光靠注释没用界面上必须明显。4.3 循环包络的往复逻辑往复送料这类动作建议拆成两个包络包络 0 负责正向走完整个行程包络 1 负责反向走回整个行程然后用连续包络或程序顺序触发的方式循环。为什么不用一个包络里的多段直接做往复因为一个包络执行完会停在终点你要让它自动回来还得再触发另一个动作本质上还是要两个包络交替。程序里的循环调度可以这样想包络 0 的 Done 之后置位反方向运行请求同时复位正方向运行请求包络 1 的 Done 之后反过来。这样每个包络都遵循边沿触发、完成判断、互锁的规则。为了防止切换瞬间出现两个包络同时请求可以在置位下一个方向之前先把另一个方向的请求复位掉。5. 加减速不是拍脑袋几个真实丢步案例与参数整定方法5.1 丢步到底是怎么发生的步进电机丢步本质是转子没跟上定子磁场旋转的速度。常见原因有三类启动频率太高电机从静止直接收到一个很高的脉冲频率转子惯性大一步都走不动直接原地抖动报警或丢步。加速时间太短频率上升斜率超过电机的最大同步加速度转子跟不上丢步发生在加速段中后段。负载扭矩超出电机输出高速段电机扭矩随转速升高而下降如果负载阻力大超过当前转速下的输出扭矩就丢步。搞清楚原因再调参数不是上来就把速度降一半。我见过有人把最大速度从 60mm/s 降到 20mm/s还是丢步结果是因为加速时间只有 0.05s频率变化太陡。把加速时间加到 0.3s 后60mm/s 完全不丢。5.2 参数整定的顺序和判断标准我给一个通用的整定流程适合大多数丝杠滑台项目先把最大速度设成目标值的 30%加减速时间设成较保守的 0.5s跑一遍看是否有异响、抖动、丢步。没问题就逐步提高最大速度每次提高 10%同时跑完整轨迹验证。一旦出现丢步或啸叫回退一档。在最大速度确定后再逐步缩短加减速时间每次缩短 0.05s直到出现启动瞬间抖动或到位过冲再回退一档。最后记录下三个参数最大速度、加速时间、减速时间。这个过程必须实际带着负载测空载测出来的参数到带载工况可能直接失效因为惯量和阻力完全不一样。5.3 异常现象对照表调试时遇到以下现象优先按对应方向查现象根因方向处理手法启动瞬间哒哒响或原地抖动启动频率过高 / 加速时间过短降低启动/停止速度或延长加速时间高速运行中突然丢步低速正常加速段太陡或最大速度超出矩频特性延长加速时间或降低最大速度到位后有明显过冲、机械回弹减速时间过短延长减速时间检查机械间隙正方向不丢反方向丢机械阻力不对称 / 反向间隙检查导轨润滑、丝杠螺母预紧必要时单独做反向补偿电机静止时温度过高电流设置过大或使能一直通电降低驱动电流或设置静态电流半流工艺允许时切断使能这里说一个容易忽略的点驱动器电流不是越大越好。很多新手觉得电流大扭矩就大于是把电流拨到最高档结果电机起步没丢步但温度烫得能摊鸡蛋热保护频繁动作设备只能干一会儿停一会儿。正确的做法是参考电机铭牌额定电流驱动器输出电流设置为电机额定电流的 80%~100%先按 80% 试扭矩不够再往上调。5.4 怎么验证到底有没有丢步如果怀疑某段轨迹丢步最直接的办法是让轴反复走同一个往返行程最后回到原点观察回原点信号触发时坐标是否每次都一致。如果每次偏差都在几个脉冲以内基本没丢步如果偏差越积越大说明过程中有丢步。也可以用高速计数器配合编码器来做定量验证这就是下一节要说的内容。在没有编码器的情况下我习惯在程序中记录每次回原点的当前位置值如果连续 10 次偏差都在允许范围内才认为参数达标。6. 低成本位置校验方案编码器反馈怎么和步进开环互补6.1 步进控制最大的短板是没有反馈步进电机本质是开环控制PLC 发出多少个脉冲默认认为电机就走多少步但实际有没有丢步、有没有被卡住PLC 是不知道的。伺服电机因为带编码器闭环丢步会被自动纠正所以不会累积误差。步进要想获得类似能力最经济的方案是加编码器把反馈送给 PLC 的高速计数器做一个位置校验。这个方案不能算真正的闭环因为 PLC 只做检测偏差并报警不会自动反向修正脉冲数所以它更像带位置监控的开环控制。对大多数要求不高的小型设备已经够用了——毕竟步进本身精度不差丢步是偶发故障只要能在发生丢步后及时报警停机就避免了批量废品。6.2 硬件上的接法和高速计数器组态编码器建议选增量式 AB 相正交输出A、B 两相分别接到 PLC 的两个高速输入点。S7-200 SMART 的高速计数器输入点通常是 I0.0、I0.1、I0.2、I0.3 这几个具体哪个高速计数器能用哪个模式要看手册。以 HSC0 为例可以选择正交计数模式PLC 内部自动根据 A、B 相相位差判断正反转并计数。接线时注意编码器是 NPN 开路输出还是差分输出要和 PLC 输入类型匹配。S7-200 SMART 输入是漏型/源型可切换但编码器如果是集电极开路输出需要确认上拉电阻和电平是否匹配否则计数值会乱跳。这块我是吃过亏的买了一个 5V 差分输出的编码器没加转换板直接接到 24V 输入点上信号完全读不到后来换了 24V 集电极开路输出的编码器才解决。组态时在向导里启用高速计数器设定计数模式把计数值映射到一个 V 存储区。程序里每个扫描周期读取当前计数值和 PLC 发出的目标位置做差值。6.3 位置校验的软件逻辑位置校验的思路很简单每次包络运行到 Done 后读一次高速计数器的当前值减去包络开始前的初始值得到实际移动的脉冲数再和 PLC 设定的目标脉冲数做差如果偏差超过阈值就报警停机。举例丝杠每毫米 320 个脉冲目标移动 100mm理论脉冲数是 32000。如果编码器反馈的实测脉冲数在 31900~32100 之间可以认为正常误差范围 0.3mm 左右如果偏差超过这个范围说明中途丢步或机械卡滞程序置报警把轴停下来。这里的核心是区分PLC 发出的脉冲数和电机实际走的脉冲数。PLC 发出的脉冲数存在向导的内部变量里编码器反馈的是实际位置。如果编码器装在电机尾部它测得的就是电机转过的角度如果装在丝杠末端测得的是工作台的实际位移后者还包括了丝杠间隙和弹性变形能反映更多的机械问题但数据噪声也更大。6.4 各种闭环方案怎么选把步进控制做成带位置校验只是其中一种做法。实际项目里还有几种选择纯开环最便宜适合负载轻、速度低、丢步概率极低的小设备。缺点是出问题没有反馈。开环 编码器校验成本增加一个编码器和一个高速计数器点能报警停机但不能自动修正。适合丢步概率低但一旦发生后果严重的设备。闭环步进驱动器驱动器内部自己处理编码器反馈并实时修正PLC 这边完全无感。省事成本比普通步进驱动器高一些。伺服电机真正的全闭环速度快精度高响应快。成本最高调试最复杂。我的建议是除非工艺对扭矩和动态响应有很高要求否则中小型定位设备优先考虑闭环步进驱动器性价比和调试难度最均衡。S7-200 SMART 加编码器校验这个方案更适合现有设备改造——不用换电机和驱动器只加一个编码器就能获得报警能力。6.5 高速计数器和 PTO 会冲突吗这是不少人担心的问题。S7-200 SMART 的高速脉冲输出在 Q 点高速计数器输入在 I 点物理上不冲突。但要注意某些 CPU 型号的高速计数器输入会占用普通输入点如果这些点已经用在限位、按钮上就要重新规划。还有一个容易踩的坑编码器分辨率太高时高频计数可能超过 PLC 高速输入的最大计数频率。比如编码器 1000 线、4 倍频后是 4000 个脉冲/转如果电机转速是 1500 转/分钟每秒就有 100kHz 的计数频率CPU 的硬件高速计数器一般能应对但选型时要留余量。真到了频率上限附近只能降低编码器线数或选用更高频率的计数模块。结合一个完整的项目验收经验上电先回原点原点 OK 后才能跑包络包络完成后再做位置校验校验通过才放行下一工位任何一个环节异常触摸屏上都给出明确的报警文字和原因代码。这套流程做下来设备运行半年多基本没出过运动相关的故障。包络这件事表面上是给 PLC 加一条指令、给向导加一张表本质上是把机械工艺翻译成运动曲线。你在组态时花十分钟把段数、速度、加减速想清楚现场调试就能少掉一大半的头发。如果你正在做的设备涉及多段变速或往复循环不妨按这篇的思路先去向导里建一个包络跑通了再谈优化。
返回列表