
接手这个项目的时候我最初也以为是个常规的位置控制场景——S7-1200带伺服十有八九都是发脉冲做定位。但客户需求是给一条改装的输送线做平稳调速要的是连续运转、速度可调、启停干脆利落对定位精度没有硬性要求。这种工况下继续用位置模式反而是给自己找麻烦速度模式才是更对路的方案。这篇文章把我从硬件选型、端子接线、驱动参数设置到博途编程、上电调试的完整过程捋一遍顺便把我在现场踩过的几个坑也写出来给正在做类似项目的朋友做个参考。1. 选型思路为什么S7-1200和SV660P用速度模式更合适1.1 项目需求拆解这条输送线原来的驱动是老式异步电机加变频器客户反映低速段扭矩不够、启动冲击大而且电机响应慢启停时机很难和前端设备同步。改造目标很明确用伺服替换异步电机实现0-1500rpm范围内平滑调速启动停止要快但不能有冲击绞进设备或者急停时能快速切断力矩。拆解下来真正需要的不是位置闭环而是速度闭环。伺服驱动器的速度环可以帮助设定转速稳定运行不依赖上位机做复杂的运动规划S7-1200只负责给出速度指令和启停逻辑整个系统的实时性压力可控编程量也小很多。这个场景如果硬要做成位置模式加电子齿轮反而要处理回零、限位、加减速曲线等一系列问题属于杀鸡用了牛刀。1.2 硬件清单与选型理由实际配置如下设备型号规格用途说明PLC西门子S7-1200 CPU 1214C DC/DC/DC主控制器处理启停逻辑、速度给定、故障复位模拟量输出模块西门子SM1232 AQ 1x14bit输出0-10V电压信号作为伺服速度给定伺服驱动器汇川SV660P驱动伺服电机工作在速度模式伺服电机汇川ISMH系列配套电机替换原异步电机带增量编码器开关电源明纬24V/5A给PLC输出侧、伺服控制端子供电断路器、接触器、滤波器施耐德/正泰主回路保护与滤波调试软件博途TIA V15.1、汇川InoDriverShopPLC编程与伺服参数配置S7-1200标准型CPU本身不带模拟量输出通道所以单独加了一块SM1232。这里有个细节如果选CPU 1212C或者1214C时板载只有数字量输入输出确实没有模拟量但新版的S7-1200系列有些型号带AQ选型时要注意看订货号后缀。我们为了稳妥直接用SM1232 1x14bit一路通道足够用分辨率14位对应0-27648数字量。1.3 为什么用模拟量给速而不是通信给速伺服给速度指令的方式有几种通过Modbus通信写入速度寄存器、通过内部多段速端子切换、通过模拟量输入给定。我见过不少工程师一上来就选Modbus RTU觉得接线少、抗干扰。但Modbus通信在S7-1200上要通过CM1241 RS485模块或者第三方网关还要在PLC里写轮询逻辑实时性和稳定性依赖通信周期现场偶尔出现一帧超时伺服就会抖一下排查起来非常痛苦。模拟量给速的好处是实时、直观、不依赖通信协议。PLC把速度值线性换算成0-10V电压SV660P的AI1端子直接接收驱动器内部做AD转换后作为速度给定值。这个链路简单可靠即使PLC程序扫描周期有几十毫秒的波动模拟量信号本身是连续的不会出现跳变。而且用万用表或者示波器一量就知道给没给上对现场调试特别友好。2. 接线全解主回路、控制回路与屏蔽地线处理2.1 主回路接线相序和电源一个都不能错伺服驱动器对主回路接线比变频器敏感得多上电前必须反复核对。SV660P主回路有L1、L2、L3三个电源端子支持单相220V和三相220V两种供电方式。我们现场配的是三相220V通过隔离变压器从380V转下来所以L1、L2、L3都要接入。电机动力线是U、V、W三个端子接伺服电机对应的UVW绝对不能错相。伺服电机的UVW相序错误通电后电机会剧烈抖动或者直接报警过流。另外编码器线要用原装屏蔽线插头必须插到位、锁紧螺丝拧紧很多现场故障就是编码器插头松动导致的。主回路还有一个容易忽略的点直流母线的P和DCL之间要接制动电阻。输送线带着负载突然停机时电机从运行状态切换到停止动能会通过逆变器回馈到母线电容上如果没有制动电阻吸收母线电压会飙升触发过压报警。2.2 控制回路使能、运行、故障反馈与模拟量输入SV660P的CN1控制端子定义要在手册里查清楚不同功率段端子号有差异但常用功能是固定的。速度模式下必须接的几路信号DI1伺服使能也叫SON信号。这一路是高电平有效给上去之后驱动器才允许输出力矩。DI2运行信号我们把它定义为正向运行。要和使能分开防止一上电就跑。DI3故障复位信号清除驱动器报警用。DO1报警输出接到PLC输入点。SV660P报警时DO1继电器会断开PLC通过常闭触点的状态变化捕获报警。AI1/AI1-模拟量速度给定输入接PLC模拟量输出模块的正负端。SV660P的AI1支持0-10V也可以设置成-10V到10V我们只用正向调速所以选0-10V。控制端子需要用开关电源单独供电不要和主回路共用一个电源。我一般习惯24V接COMCOM-接0V所有DI端子的公共端都回到同一个源。这里特别提醒若PLC和驱动器没有共地模拟量信号在AI1-和PLC侧M端之间会有电位差导致速度漂移所以要在PLC模拟量输出模块的M端和SV660P的GND之间做等电位连接。2.3 屏蔽与接地的三个要点伺服系统调试中很多莫名其妙的问题其实都是接地和屏蔽没做好。我总结了三个必须遵守的原则第一模拟量信号线必须用双绞屏蔽电缆。SM1232到SV660P之间的模拟量线虽然距离只有一两米但伺服动力线在旁边动力线里的高频PWM分量很容易耦合进来。第二屏蔽层采用单端接地。把靠近PLC这一端的屏蔽层剥出来接到机柜接地排靠近伺服那一端悬空不接。两端都接地容易形成地环路反而引入共模干扰。第三伺服驱动器的PE端子必须独立接地接地电阻小于4欧姆。不要和变频器、大功率电机的PE串在一个接地线上否则伺服逆变时的高频漏电流会通过地线干扰编码器信号。3. SV660P参数设置让驱动器进入速度模式并正确响应外部指令3.1 恢复出厂设置从头配置新拿到的SV660P我建议先做一次恢复出厂把历史配置清干净。通过面板操作或者InoDriverShop软件都行在软件里连接驱动器读取当前参数执行“恢复出厂设置”或者“参数初始化”等待驱动器自动重启。这个动作能避免上一手调试留下的修改项干扰判断。恢复出厂后先确认驱动器固件版本同时给电机设对功率、额定电流这些基本参数。正常情况下SV660P自动识别配套电机但如果电机和驱动器不是一套买的就要手动核对参数这里出错的概率不小。3.2 速度模式核心参数SV660P的参数很多但速度模式真正要动的核心参数就那么几个。我把自己用的关键项列出来参数名称设置值功能说明控制模式选择速度模式让驱动器工作在速度闭环速度指令源外部模拟量(AI1)速度给定来自AI1端子电压最大速度限制3000r/min防止异常指令导致飞车加速时间常数0.5-2s根据负载调整限制速度阶跃时的冲击减速时间常数0.5-2s限制停机时的冲击DI1端子功能伺服使能使能信号输入端DI2端子功能正向运行运行允许信号DI3端子功能故障复位报警清除信号DO1端子功能报警输出报警反馈信号速度环增益先留默认调试时微调影响响应速度速度环积分时间先留默认调试时微调影响稳态精度参数编号在不同固件版本里会有细微变化所以我更建议在InoDriverShop里直接搜索参数中文名而不是死记编号。设置完参数后要执行“参数保存”很多初学者改完参数直接断电结果参数没写入掉电保存区白忙一场。3.3 DI/DO端子功能分配SV660P的DI端子默认功能不一定就是我们要的必须手动分配。InoDriverShop里有专门的“输入输出配置”界面通道列表对应CN1端子的DI1到DI5每个端子可以下拉选择功能码。我把DI1设为“伺服使能”DI2设为“正向运行”DI3设为“故障复位”。注意有些固件版本里“正向运行”和“负向运行”是分开的不支持双向反转的设备只选正向就行。DO端子我选了DO1作为报警输出输出逻辑设成“报警时常闭断开”。这样接线即使断线PLC也能检测到异常因为断线和报警表现一致都是信号丢失。3.4 用InoDriverShop验证电机运转参数配置完成后不要急着接PLC先单独验证SV660P自身能不能正常转。InoDriverShop里有“试运行”功能选择速度模式手动给定一个转速比如300rpm点使能和运行电机应该平稳转起来电流正常、无异响。这个步骤等于把系统拆成两半单测先证明伺服部分没问题再接PLC联调。我在现场见过无数人跳过单测直接联调出了问题一会儿怀疑PLC程序、一会儿怀疑参数浪费时间。单独验证大概五分钟就能做完性价比极高。4. TIA Portal编程S7-1200的速度给定与启停控制逻辑4.1 硬件组态与I/O地址规划博途里新建项目添加CPU 1214C DC/DC/DC再添加SM1232模拟量输出模块。SM1232的通道地址由系统自动分配正常情况第一路模拟量输出地址是QW64。但地址不是绝对的要打开PLC变量表确认SM1232实际分配的起始地址。我们这个项目因为CPU后面还挂了一个数字量模块模拟量输出地址被挤到了QW80如果直接用默认地址就会写错通道。I/O地址规划表地址信号名称方向说明I0.0急停按钮输入常闭触点断开即急停I0.1启动按钮输入常开触点上升沿启动I0.2停止按钮输入常开触点按下停止I0.3伺服报警反馈输入接SV660P DO1Q0.0伺服使能输出输出接SV660P DI1Q0.1伺服运行输出输出接SV660P DI2Q0.2故障复位输出输出接SV660P DI3QW80模拟量速度给定输出接SV660P AI1Q0.3运行指示灯输出面板指示4.2 速度给定值的换算与模拟量输出处理SM1232的输出范围是0-10V对应数字量0-27648。而SV660P的模拟量输入0-10V对应转速0-3000rpm默认最大速度。所以要把界面上的设定转速转换为QW80的整数值公式就是QW80 设定转速 / 3000 × 27648举个例子需要电机跑到1200rpm那么QW80 1200 / 3000 × 27648 ≈ 11059。用LReal浮点数计算最后转成Int写到QW80。这里有个关键细节直接把浮点数转INT时要注意四舍五入和上限限制防止出现超过27648的值。如果只用到1500rpm也要在程序里做限幅防止调试时输入一个大值导致模拟量输出超量程。SCL换算代码片段#SpeedRaw : REAL_TO_INT((#SetRPM / 3000.0) * 27648.0); IF #SpeedRaw 27648 THEN #SpeedRaw : 27648; ELSIF #SpeedRaw 0 THEN #SpeedRaw : 0; END_IF; QW80 : #SpeedRaw;4.3 使能、运行、故障复位逻辑控制逻辑看起来简单但要在细节上做好互锁。我的思路是启停和报警分成多个状态量最终输出Q0.0和Q0.1之前做条件与判断。关键逻辑点急停必须使用常闭触点。I0.0没有按下时为TRUE程序继续执行一旦急停断开立即断开使能和运行。这个必须在硬件层和程序层双重保护不能只靠软件。伺服使能要先于运行信号。启停逻辑里启动按钮按下后先置位Q0.0延时100-200ms之后再置位Q0.1。为什么SV660P使能瞬间要建立励磁和速度环如果同时给运行信号电机可能因为给定突变产生冲击。反过来停止时先断运行、再断使能也要有间隔。故障复位需要延时保持。SV660P复位信号最少要保持几十毫秒才能被识别PLC输出脉宽太短会导致复位无效。我习惯的做法是报警上升沿触发复位输出用TON定时器保持500ms然后自动复位Q0.2。速度给定和使能信号的时序最好让模拟量先输出一个较小值再给使能和运行。我调试时遇到过一种情况模拟量模块上电瞬间输出一个随机值如果这时候伺服正好使能电机会猛地窜一下。解决方法是程序启动后先把QW80清零等PLC扫描几个周期后再允许正常输出。更保险的方案是在模拟量输出硬件组态里把初始化行为设置为输出0。核心程序用SCL写在一个FB里接口变量清晰// 输入 #Start : BOOL; #Stop : BOOL; #EStop : BOOL; #AlarmFB : BOOL; #SetRPM : REAL; // HMI设定值 #FaultReset : BOOL; // 输出 #EnableOut : BOOL; #RunOut : BOOL; #FaultOut : BOOL; IF NOT #EStop THEN // 急停触发全部断开 #EnableOut : FALSE; #RunOut : FALSE; ELSIF #FaultReset THEN // 故障复位动作 ; ELSE IF #Start AND NOT #AlarmFB THEN #EnableOut : TRUE; ELSIF #Stop THEN #EnableOut : FALSE; #RunOut : FALSE; END_IF; IF #EnableOut AND #StartDelayOut THEN #RunOut : TRUE; END_IF; END_IF;实际项目中建议把每段逻辑拆成独立的Network方便后续维护和监控。不要在一个Network里写一长串现场排查问题时会很痛苦。4.4 HMI辅助调试建议如果项目配了西门子HMI我会在画面上放几个调试用的元素设定转速输入框、实际转速显示、伺服报警状态灯、使能和运行的按钮。实际转速可以通过SV660P的Modbus寄存器读回来也可以先用InoDriverShop的监控代替。没有HMI也没关系在博途里用“监控表”直接强制QW80的值就可以测试只是不太直观。我个人还是推荐临时挂一个KTP400触摸屏调试效率能高很多。5. 上电调试流程与联动验证5.1 上电前的静态检查清单这一步花十分钟能省下半天找故障的时间。我的检查顺序万用表测主回路L1/L2/L3之间是否短路测U/V/W对地是否短路确认动力线没有破皮。确认编码器线插头已经锁紧屏蔽层接好。确认控制端子接线和图纸一致用万用表通断档逐一量DI1、DI2、DI3对应到PLC输出点的连续性。测量SM1232的输出端子上电后应为0V禁止在通电状态下插拔模拟量线。确认24V开关电源电压正常负载端没有短路。5.2 无负载状态下的速度闭环验证先把电机和负载脱开确认机械侧没有卡阻和干涉。此时可以进行无负载试运行伺服断电手动盘电机确认转动顺畅伺服上电确认面板无报警InoDriverShop设置为试运行手动给定300 rpm确认方向正确、运行平稳切到PLC控制HMI设定500 rpm按下启动观察速度是否稳定、Q0.0/Q0.1指示灯是否正确缓慢上调速度到1500 rpm确认整个线性段都平稳。无负载调试的关键是确认速度给定换算正确。我习惯用万用表量SM1232输出电压500rpm对应约1.67V如果量出来电压不对优先检查QW80值是不是被程序改过、SM1232组态输出范围是否正确。5.3 带负载后的加减速与稳定性调整无负载跑通了不代表带上负载还能如此。输送带和减速机联上之后负载惯量可能是电机转子惯量的好几倍这时速度环增益如果太高电机会发出嗡嗡声太低则速度跟踪慢、加减速抖动。带负载后主要观察两个指标启动时是否有冲击、停车时是否有过冲。如果有冲击把加速时间常数和减速时间常数加大如果速度波动大微调速度环增益和积分时间。SV660P的自动增益功能对新手比较友好可以先执行一遍“在线自整定”看看效果再手动精调会加快收敛速度。6. 实际调试中踩过的五个坑与解决办法6.1 模拟量共地与信号漂移第一次联调时我发现设定800rpm电机实际却慢慢从800涨到850rpm速度就是稳不住。起初怀疑伺服参数后来用万用表量AI1端子的电压发现电压在3.2V到3.4V之间跳动说明干扰进来了。原因是我把SM1232的M端和SV660P的GND之间隔了好几十厘米地电位有差异杂散电流在模拟量回路里形成了压降。解决方法是把SM1232模块的MANA端子和SV660P的GND用一根较粗的线直接连接让模拟量信号的参考地完全一致。接完后再量电压稳定在2.67V左右对应800rpm问题消失。这个坑非常隐蔽因为干扰不一定会导致大故障但会表现为“速度走动”“停不准”。6.2 伺服报警编码器断线、过压与过流调试中遇到最多的报警是编码器断线和母线过压各有各的原因。编码器断线通常不是线真的断了而是插头接触不良或者编码器线受弯折导致信号偶发丢失。检查时先拔插编码器插头清理针脚氧化层再检查线缆有没有被机架压住。母线过压常出现在高速急停时确认制动电阻接线、阻值和功率匹配。SV660P面板会直接显示报警代码比如A01、A05、A12等。遇到报警不要慌第一步查手册确认代码含义第二步看报警时刻的母线电压、电流、温度等记录第三步结合现场工况判断是外部原因还是伺服本身问题。切忌一上来就改参数乱试。6.3 电机爬行或震荡低速段爬行和高速段震荡是速度环没调好的典型表现。低速爬行时速度环增益偏低或摩擦力矩影响较大SV660P的“摩擦补偿”可以缓解但更根本的是看机械装配有没有拖死、联轴器有没有偏心。高速震荡则多半是速度环增益过高或者编码器信号受干扰先降增益再看波形。6.4 急停后伺服使能残留引起的误动作这个坑是我在客户现场踩的急停按下后程序逻辑上断开使能但SV660P的使能端子还维持着高电平因为PLC输出点Q0.0的状态是线圈输出没有在硬件回路里串急停触点。结果就是按下急停后电机虽然停了但伺服并没有真正掉使能一旦故障复位或者程序复位电机立刻再次上电运行非常危险。正确的做法是在伺服使能回路里串联急停继电器的常闭触点硬件上直接切断使能信号不依赖PLC程序。PLC中断使能只是软件层的第二道保护。这个改动之后急停的响应时间从PLC扫描周期级别缩短到继电器释放时间级别安全冗余提高了一个量级。6.5 转速达不到设定值调到最后发现1500rpm的设定值电机只能跑到1460rpm左右而且随着负载增加偏差还会变大。首先排查是不是速度上限参数被设低了SV660P里最大转速限制如果只有1500rpm对应的电压是满量程的90%多当然跑不到。再者确认模拟量满量程校准是否准确10V对应的是不是3000rpm。如果前面都没问题就要看电机侧供电能力尤其是电源容量不足导致母线电压跌落伺服会限制输出扭矩表现为高速区转速上不去。排查的顺序是从参数校准到硬件容量不要先怀疑电机坏了。我用InoDriverShop里速度环误差监控看到转速误差值和给定电压的关系很快就锁定是速度上限参数的问题改掉参数后转速立刻到位。7. 个人经验小结这套S7-1200加SV660P的速度模式方案从接线到跑通整个流程最核心的收获不是某个参数怎么设而是调试顺序不能乱先接完线单独验证伺服再用InoDriverShop确认参数最后才进PLC联调。每一步都有明确的验证手段不要跳步。模拟量给速虽然看起来不如通信给速“高级”但在速度模式下它反而是最稳、最直观的方案。PLC程序里把速度换算写清楚接线时做好共地和屏蔽整个系统运行时几乎不需要额外维护。如果后续要扩展可以在SV660P上加Modbus通信读取实际转速和电流在PLC里做趋势记录和预警这样输送线的运行状态就能远程监控了。不过这些都是锦上添花先把基本的启停、调速、报警捋顺了这套系统已经能稳稳扛住绝大部分调速场景。