1. 为什么S7-200 SMART控制伺服是个值得深挖的活
伺服电机在小型自动化设备里的地位,这几年变化特别明显。以前大家做点位控制,第一反应是步进电机,便宜、简单、够用。但现在设备精度要求上来了,步进电机丢步、低速振动、高速扭矩衰减这些问题越来越难忍,很多场合不得不换伺服。而S7-200 SMART作为西门子在国内小型PLC市场的主力机型,存量巨大,大量包装机、贴标机、切割机、送料机构上跑的都是它。用SMART去带伺服,就成了一个绕不开的实际需求。
这个组合的核心价值在于:用一台千元级的PLC,通过高速脉冲输出控制伺服驱动器,实现精确的位置、速度和扭矩控制。它解决的是中小型设备在成本可控的前提下提升运动控制精度的问题。适合谁看?一是刚接触运动控制的PLC编程人员,二是手上正好有SMART和伺服需要调试的电气工程师,三是做非标设备想评估这套方案可行性的技术人员。
我前后用SMART带过台达ASDA-B2、汇川IS620P、松下A5这几款伺服,走的基本都是脉冲+方向的控制方式。下面把整套东西拆开讲,从选型到接线到编程到调试,尽量把踩过的坑都说清楚。
2. 方案选型与控制方式的核心考量
2.1 为什么SMART带伺服首选脉冲控制
S7-200 SMART本体自带高速脉冲输出点,CPU ST20/ST30/ST40/ST60这几款晶体管输出的型号,Q0.0、Q0.1、Q0.2、Q0.3可以输出高速脉冲。其中Q0.0和Q0.1支持最高100kHz,Q0.2和Q0.3支持最高20kHz。这个频率决定了你能跑多快。
伺服驱动器一般支持三种指令输入方式:脉冲序列、模拟量、总线通信。SMART本体没有EtherCAT、没有Profinet IRT,走总线控制伺服基本不现实(PROFINET只能做普通IO通信,做不了运动控制同步)。模拟量方式精度差、抗干扰弱,速度控制还行,位置控制就力不从心。所以脉冲+方向是SMART带伺服最务实的选择。
脉冲控制又分两种输出模式:PTO(Pulse Train Output,脉冲串输出)和PWM(Pulse Width Modulation,脉宽调制)。控制伺服位置必须用PTO,因为PTO能精确控制发出的脉冲数量,而PWM只控制占空比,发多少个脉冲不确定。这一点新手特别容易搞混,我见过有人用PWM去控伺服位置,结果电机转多少全看运气。
2.2 伺服驱动器的接收方式要匹配
伺服驱动器接收脉冲的电路形式有两种:差分接收和单端接收。差分接收抗干扰能力强,适合长距离和高速场合,一般用5V差分信号;单端接收就是集电极开路,通常接24V,距离短、频率低。
SMART的脉冲输出是24V单端(源型输出,PNP特性)。如果你选的伺服驱动器只支持5V差分输入,那就需要加一块差分转换板,把24V单端转成5V差分。台达ASDA-B2和汇川IS620P都支持24V单端直接接,松下A5部分型号需要转换。选型时一定要先翻驱动器的硬件手册,确认输入信号规格,别等货到了才发现接不上。
提示:SMART的Q0.0~Q0.3是源型输出(输出高电平),接线时伺服驱动器的脉冲输入端要接成共阴极接法,即驱动器的脉冲负端接0V,正端接PLC的Q点。如果接反了,脉冲根本发不出去。
2.3 电子齿轮比的计算逻辑
伺服电机收到脉冲后转多少,取决于电子齿轮比。这个参数设不对,要么定位不准,要么速度上不去。
电子齿轮比的本质是:驱动器接收到的脉冲数 × 电子齿轮比 = 电机编码器反馈脉冲数。公式是:
电子齿轮比 = (电机每转编码器脉冲数 × 电机每转所需指令脉冲数) / (电机每转实际移动量对应的脉冲数)
说人话就是:你希望PLC发10000个脉冲电机转一圈,但电机编码器是131072脉冲一圈,那电子齿轮比就要设成131072/10000=13.1072。很多驱动器支持直接设分子分母,比如汇川IS620P的P0-12和P0-13就是分子和分母。
我一般习惯把电子齿轮比设成整数比,比如1:1或者2:1,然后在PLC程序里算脉冲数。这样好处是计算简单,不容易出错。比如电机转一圈需要10000个脉冲,丝杆导程10mm,那走1mm就是1000个脉冲,程序里直接乘就行。
3. 硬件接线与参数设置的实操细节
3.1 硬件接线清单与注意事项
先列一下我最近一次用SMART ST40带汇川IS620P的接线清单:
| 信号 | PLC侧 | 驱动器侧 | 说明 |
|---|---|---|---|
| 脉冲+ | Q0.0 | PUL+ (CN1-43) | 24V脉冲信号 |
| 脉冲- | 0V | PUL- (CN1-44) | 共阴极 |
| 方向+ | Q0.1 | DIR+ (CN1-45) | 方向信号 |
| 方向- | 0V | DIR- (CN1-46) | 共阴极 |
| 使能+ | Q0.2 | SON+ (CN1-15) | 伺服使能 |
| 使能- | 0V | SON- (CN1-16) | 共阴极 |
| 报警输出 | I0.0 | ALM+ (CN1-31) | 驱动器报警输入PLC |
| 定位完成 | I0.1 | COIN+ (CN1-33) | 到位信号 |
接线时有几个坑我踩过:
第一,0V必须共地。PLC的0V和驱动器的0V要接在一起,否则脉冲信号没有参考电平,电机要么不动要么乱转。我见过有人只接了脉冲+和方向+,没接0V,结果电机嗡嗡响但不转。
第二,屏蔽线要接地。脉冲信号线一定要用屏蔽双绞线,屏蔽层单端接地(接在PLC柜的接地排上)。不屏蔽的话,变频器一启动伺服就丢步,这个干扰问题在现场特别常见。
第三,使能信号别省。有人图省事把伺服使能设成内部使能,上电就使能。这样虽然少接两根线,但调试时电机一直锁死,想手动转一下轴都费劲。建议还是用PLC的Q点控制使能,调试方便。
3.2 伺服驱动器关键参数设置
以汇川IS620P为例,需要设置的参数如下:
| 参数号 | 名称 | 设定值 | 说明 |
|---|---|---|---|
| P0-01 | 控制模式 | 1 | 位置模式 |
| P0-02 | 使能方式 | 1 | 外部使能 |
| P0-12 | 电子齿轮比分子 | 131072 | 编码器分辨率 |
| P0-13 | 电子齿轮比分母 | 10000 | 上位机指令脉冲数 |
| P0-15 | 脉冲输入形式 | 0 | 脉冲+方向 |
| P0-16 | 脉冲逻辑 | 0 | 正逻辑 |
| P0-17 | 脉冲滤波 | 3 | 根据频率调整 |
| P0-25 | 到位范围 | 50 | 定位完成窗口 |
这里重点说P0-12和P0-13。IS620P的编码器是23位,即8388608脉冲一圈。但我上面写的是131072,这是为什么?因为驱动器内部做了4倍频,实际等效脉冲是131072。这个细节手册上写得很清楚,但很多人不看,直接填8388608,结果电机转得慢得离谱。
P0-17脉冲滤波这个参数很关键。设小了干扰脉冲会进来,电机抖动;设大了高速脉冲会被滤掉,电机丢步。我一般先设3,然后根据实际运行情况调整。如果电机低速抖动,就加大滤波;如果高速丢步,就减小滤波。
注意:参数改完后一定要断电重启,很多驱动器参数是上电时读取的,在线改了不生效。我因为这个原因浪费过一整个下午。
3.3 PLC高速脉冲输出的配置
SMART的PTO输出需要用STEP 7-Micro/WIN SMART软件里的运动控制向导来配置。步骤如下:
- 打开软件,在左侧项目树里找到“运动控制”文件夹,双击“运动控制向导”。
- 选择要配置的轴,比如Axis0对应Q0.0脉冲和Q0.1方向。
- 设置最大速度和启动/停止速度。最大速度根据伺服电机额定转速和机械结构算,启动/停止速度一般设100~200脉冲/秒。
- 设置点动参数,包括点动速度和增量。
- 设置加减速时间,一般设100~500ms。
- 配置限位开关,如果机械上有硬限位,把对应的输入点选上。
- 生成代码,向导会自动生成子程序。
向导生成的子程序包括AXIS0_CTRL、AXIS0_MAN、AXIS0_GOTO、AXIS0_RUN等。AXIS0_CTRL用于使能和初始化轴,AXIS0_GOTO用于绝对定位,AXIS0_RUN用于速度模式运行。
这里有个细节:AXIS0_CTRL的EN端要一直给1,否则轴会掉使能。我习惯用SM0.0常闭点给它,保证每个扫描周期都调用。
4. 程序框架与核心逻辑实现
4.1 主程序框架设计
我的程序框架一般分三块:初始化、手动模式、自动模式。
初始化部分在第一个扫描周期执行,调用AXIS0_CTRL使能轴,设置初始速度参数。手动模式用AXIS0_MAN做点动,配合触摸屏上的点动按钮。自动模式用AXIS0_GOTO做绝对定位,每个工位一个位置值。
主程序里用一个整数寄存器记录当前工位号,比如VW100。每个工位对应一个目标位置,存在VW200开始的连续寄存器里。自动运行时,根据VW100的值去查表取目标位置,然后触发AXIS0_GOTO。
// 主程序框架(梯形图转STL示意) Network 1: 首次扫描初始化 LD SM0.1 CALL AXIS0_CTRL, EN=1, MOD_EN=1, ... Network 2: 手动点动 LD M0.0 // 点动正转按钮 CALL AXIS0_MAN, EN=1, JOG_P=1, ... Network 3: 自动定位 LD M1.0 // 自动启动 MOVW VW100, VW200 // 查表取目标位置 CALL AXIS0_GOTO, EN=1, GO=1, POS=VW200, ...4.2 绝对定位与相对定位的选择
AXIS0_GOTO支持绝对定位和相对定位两种模式。绝对定位是走到一个坐标值,相对定位是走一段距离。
什么时候用绝对?比如一台贴标机,标签位置固定在X=500mm处,那就用绝对定位,每次走到500mm。什么时候用相对?比如一台送料机,每次送100mm,那就用相对定位,每次走100mm。
我一般优先用绝对定位,因为绝对定位不会累积误差。相对定位如果丢步了,误差会一直累积下去,跑几十个循环后位置就偏了。绝对定位每次都以原点为参考,丢步了下一个循环自动纠正。
但绝对定位有个前提:每次上电必须回原点。回原点的方式有几种,可以用原点开关加Z相信号,也可以用硬限位加编码器Z相。SMART的运动控制向导支持主动回零和被动回零,我一般用主动回零,找原点开关的上升沿,然后找Z相信号。
4.3 多轴控制的资源分配
SMART最多支持4个轴(Q0.0~Q0.3),但Q0.2和Q0.3最高只有20kHz,带伺服的话速度上不去。如果设备需要3轴或4轴联动,建议用ST60,它有3个100kHz的高速输出点(Q0.0、Q0.1、Q0.2),Q0.3是20kHz。
多轴控制时要注意:每个轴的运动控制子程序要独立调用,不能互相干扰。AXIS0_GOTO和AXIS1_GOTO可以同时执行,但PLC的扫描周期会变长。如果两个轴同时高速运行,扫描周期可能超过10ms,这时候要用中断或者高速计数器来处理位置比较。
我做过一个三轴设备,X轴和Y轴插补,Z轴单独动作。X轴和Y轴用两个PTO输出,通过程序算好每个轴的脉冲数和频率,让它们同时启动。但SMART不支持真正的插补,只能做直线近似,精度要求高的场合还是得上1200或1500。
5. 调试过程中最常见的坑与排查方法
5.1 电机不转或乱转的排查流程
电机不转是最常见的问题,排查顺序如下:
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 电机完全不动 | 使能没给 | 检查SON信号,驱动器面板显示是否使能 |
| 电机嗡嗡响不转 | 脉冲频率太高 | 降低最大速度,检查P0-17滤波 |
| 电机转但方向反 | 方向信号逻辑反 | 改P0-16或调换DIR+/- |
| 电机转但位置不准 | 电子齿轮比错 | 重新计算P0-12/P0-13 |
| 电机高速丢步 | 脉冲频率超限 | 检查PLC脉冲频率是否超100kHz |
| 电机低速抖动 | 滤波太小 | 加大P0-17 |
| 电机偶尔乱转 | 干扰 | 检查屏蔽线接地,加磁环 |
我遇到过一次电机偶尔乱转的情况,查了半天发现是变频器干扰。那台设备上有一台2.2kW变频器,和伺服驱动器装在同一个柜子里。变频器一启动,伺服就偶尔丢步。后来把伺服脉冲线换成双绞屏蔽线,屏蔽层接柜体接地排,问题就解决了。如果还不行,可以在脉冲线上加一个磁环,或者把变频器载波频率调低。
5.2 定位精度不稳定的原因分析
定位精度不稳定,时好时坏,一般有这几个原因:
第一,机械间隙。联轴器松动、丝杆螺母间隙大、同步带太松,这些机械问题会让定位精度忽高忽低。我一般先用百分表打一下重复定位精度,如果机械本身就有0.05mm的间隙,电气怎么调都没用。
第二,电子齿轮比不是整数比。比如设成131072/10000=13.1072,这个小数在驱动器内部是近似计算的,跑多了会有累积误差。建议把分子分母约分成整数比,比如131072/10000约分成8192/625,或者干脆设成1:1,在PLC里算脉冲。
第三,加减速时间太短。伺服电机响应快,但机械有惯性。加减速时间设太短,电机会过冲,然后反向修正,来回振荡。我一般把加减速时间设成200~500ms,根据负载惯量调整。
第四,到位范围设太大。P0-25到位范围如果设成100,那电机停在目标位置±100脉冲内就认为到位了,精度自然差。我一般设10~50,根据实际需求调整。
5.3 高速运行时丢步的解决方案
高速丢步是脉冲控制的通病。SMART的Q0.0最高100kHz,如果伺服需要200kHz才能跑到额定转速,那就只能降速运行。
计算一下:假设伺服电机额定转速3000rpm,编码器131072脉冲/圈,电子齿轮比1:1,那需要的脉冲频率是3000/60×131072=6.55MHz。这远超SMART的100kHz。所以必须设电子齿轮比,把指令脉冲降下来。
如果设电子齿轮比为131072/10000,那3000rpm需要的脉冲频率是3000/60×10000=500kHz,还是超了。继续降,设成131072/1000,那频率是50kHz,在SMART的能力范围内。但这样每个脉冲对应的移动量就大了,精度会下降。
所以高速和精度是一对矛盾。我的经验是:先确定精度要求,再反推最大速度。比如精度要求0.01mm,丝杆导程10mm,那每个脉冲对应0.01mm,电机转一圈需要1000个脉冲。3000rpm时脉冲频率是50kHz,SMART完全能带。如果精度要求0.001mm,那脉冲频率就是500kHz,SMART带不了,只能换1200或1500。
提示:如果速度实在上不去,可以考虑用伺服的速度模式,PLC只给模拟量或通信给速度指令,位置闭环由驱动器自己完成。但这样PLC就失去了位置控制能力,适合只需要调速不需要定位的场合。
6. 从实际项目里攒出来的经验
6.1 程序结构要清晰,别堆在一起
我见过很多人的程序,手动、自动、报警、参数设置全堆在主程序里,几百个网络连在一起,找个点都费劲。我的习惯是分块写:主程序只负责调用子程序,手动模式一个子程序,自动模式一个子程序,报警处理一个子程序,参数初始化一个子程序。每个子程序不超过50个网络,这样查问题的时候直接定位到对应子程序,效率高很多。
运动控制的子程序单独放一块,AXIS0_CTRL、AXIS0_GOTO、AXIS0_MAN这些调用集中在一起,方便统一管理。轴的使能、复位、急停这些逻辑也放在这里,不要散落在各个地方。
6.2 触摸屏上要留调试接口
调试阶段,触摸屏上一定要留几个关键参数的输入框:电子齿轮比、最大速度、加减速时间、到位范围。这样现场调试时不用连电脑改程序,直接在触摸屏上改参数就行。我一般还会留一个“点动速度”的输入框,调试机械的时候用低速点动,安全又方便。
另外,触摸屏上要显示当前脉冲数、当前速度、轴状态这些信息。AXIS0_GOTO执行时,可以通过读取运动控制向导生成的变量来获取当前状态。比如AXIS0_GOTO的Done位、Error位、当前速度等,这些都可以在触摸屏上显示出来,方便判断问题。
6.3 急停和限位保护不能省
急停按钮一定要接在PLC的输入点上,程序里检测到急停信号后立即停止所有轴的运动。AXIS0_GOTO有停止功能,调用AXIS0_GOTO时把STOP端置1就能停止。但急停要求响应快,最好用中断来处理,或者直接把使能断掉。
限位开关也是必须的。正限位和负限位分别接两个输入点,程序里检测到限位信号后禁止对应方向的运动。运动控制向导里可以配置限位开关,配置后向导会自动处理限位逻辑。但向导的限位逻辑是软件限位,响应有延迟,硬限位还是要接,作为最后一道保护。
我做过一个项目,客户为了省成本没装硬限位,结果程序出bug电机一直往一个方向跑,把丝杆撞弯了。后来加了硬限位,再也没出过这种事。硬限位开关几十块钱,撞坏一次机械就是几千块,这笔账要算清楚。
6.4 伺服电机的选型要留余量
选伺服电机的时候,扭矩要留30%以上的余量。我见过有人算出来需要1.5N·m,就选了个1.5N·m的电机,结果一加速就过载报警。因为计算的时候没考虑加速扭矩,只算了匀速扭矩。加速扭矩=负载惯量×角加速度,这个值有时候比匀速扭矩还大。
惯量匹配也很重要。负载惯量和电机转子惯量的比值,一般控制在5:1以内,动态响应要求高的场合控制在3:1以内。比值太大,电机会振荡,调不好。如果负载惯量确实大,可以加减速机,减速比的平方能降低等效惯量。
6.5 接地和屏蔽是玄学也是科学
伺服系统对接地和屏蔽特别敏感。我总结了几条:
- PLC柜和伺服驱动器柜最好分开接地,如果共用一个接地排,接地线要够粗,至少6平方。
- 脉冲信号线、编码器线、动力线要分开走线槽,间距至少20cm。实在分不开,交叉走,不要平行走。
- 屏蔽层单端接地,接在PLC侧的接地排上。两端接地会形成地环路,反而引入干扰。
- 伺服电机的动力线用屏蔽线,屏蔽层接在驱动器侧的接地端子上。
有一次客户反映伺服偶尔报警过流,我去现场看,发现编码器线和动力线绑在一起走线。把编码器线分开后,问题就消失了。这种干扰问题,说它是玄学也行,但背后都是电磁兼容的基本原理。
7. 这套方案还能怎么扩展
SMART带伺服做单轴点位控制是最基础的用法。如果设备需要两轴联动,可以用两个PTO输出做直线插补,虽然精度不如真正的插补,但很多场合够用。我做过一个XY平台,用两个轴分别走X和Y,程序里算好两个轴的速度比,让它们同时到达目标点,走出来的轨迹是折线,但在允许误差范围内。
如果要用到模拟量控制伺服速度,SMART本体有模拟量输出吗?没有,需要加模拟量扩展模块,比如EM AM03。但模拟量控制速度精度差,不如脉冲控制。
再往上走,如果设备需要多轴同步、电子凸轮、追剪这些功能,SMART就力不从心了。这时候要考虑S7-1200或1500,它们支持PROFINET IRT,可以带V90伺服做真正的运动控制。但成本也上去了,一套1200+V90比SMART+第三方伺服贵不少。选型的时候要根据设备精度要求和预算来权衡,别盲目上高端。
我个人在实际操作中的体会是,SMART带伺服这套方案,在精度要求0.01mm、速度要求50kHz以下的场合,性价比非常高。关键是把电子齿轮比算对、把屏蔽接地做好、把程序结构理清楚。这三件事做好了,系统跑起来很稳。