
1. 搞懂V90 EPOS模式到底在干什么1.1 为什么偏偏选EPOS而不是速度模式很多人第一次接触V90伺服脑子里第一反应是“我用速度模式让电机转起来不就行了”。速度模式确实简单给个模拟量或者通信给定转速电机就转。但问题在于速度模式只管转多快不管停在哪儿。你要做定位就得自己在外围加编码器、做位置闭环PLC里还得写一堆计数和比较逻辑麻烦不说精度还受扫描周期影响。EPOS基本定位器模式就不一样了。它把位置环直接做进了驱动器内部PLC只需要告诉驱动器“走到哪个位置”“以什么速度走”“什么时候加速减速”剩下的插补、位置闭环、到位判断全部由V90自己完成。这样做的好处是响应快、精度高而且PLC的负担大大减轻。我个人的经验是只要你的应用涉及“走到某个固定位置停下来”这种需求比如丝杆滑台、旋转分度盘、送料轴优先考虑EPOS模式。速度模式适合的是连续旋转、不需要精确停位的场合比如风机、泵类负载。1.2 EPOS模式的核心控制逻辑EPOS模式的控制逻辑可以用一句话概括PLC通过工艺对象或者FB块把位置指令发给驱动器驱动器自己完成定位然后把状态反馈给PLC。这里面有几个关键角色PLC负责发指令、收状态、做逻辑判断V90驱动器负责执行定位、闭环控制FB284西门子官方提供的一个功能块专门用来控制V90的EPOS模式工艺对象在博途里组态的一个“虚拟轴”用来映射驱动器的位置和速度FB284这个块说白了就是一个“翻译官”。你把控制字、位置、速度这些参数喂给它它帮你打包成驱动器能看懂的报文通过PROFINET发过去。驱动器执行完了状态字和实际位置又通过它反馈回来。1.3 适合哪些人看这篇内容这篇内容适合以下几类人已经用过V90速度模式想升级到定位控制的工程师第一次接触西门子伺服被报文、工艺对象、FB284绕晕的新手做过其他品牌伺服想快速上手西门子V90的从业者对位置换算、速度给定这些参数怎么算搞不清楚的调试人员如果你连PLC的基本编程都不会那建议先补一下梯形图和博途的基本操作。这篇内容不会教你PLC怎么新建项目但会把V90 EPOS模式从组态到调试的完整链路讲清楚。2. 硬件组态与报文选择的关键细节2.1 报文到底选哪个111还是105V90支持多种报文类型EPOS模式下最常用的是111报文和105报文。这两个报文有什么区别选哪个是很多人第一个卡住的地方。111报文是西门子专门为EPOS模式设计的标准报文包含了控制字、状态字、位置给定、速度给定、实际位置、实际速度等所有EPOS需要的信息。它的结构是固定的你不需要自己去拼字节。105报文是通用报文通常用于速度模式或者扭矩模式。如果你要用EPOS选105报文还得自己映射PDO麻烦得很。所以结论很明确用EPOS模式直接选111报文。在博途里组态V90的时候在“报文”选项里选“SIEMENS telegram 111”然后你就会看到下面自动出现了控制字、位置、速度这些信号。注意111报文里有一个“STW1”控制字这个控制字的每一位都有特定含义比如使能、停止、急停、复位。搞不清楚这些位的含义后面FB284就没法用。2.2 工艺对象的组态要点在博途里你需要添加一个“工艺对象”类型选“定位轴”或者“同步轴”。对于大多数单轴定位应用选“定位轴”就够了。组态工艺对象的时候有几个参数必须和驱动器侧保持一致每转脉冲数这个参数决定了编码器分辨率V90默认是2500线但实际分辨率可能更高每转位移量丝杆导程、减速比这些机械参数要算进去软限位建议设上防止机械撞死最大速度不要超过机械允许的极限我见过有人组态工艺对象的时候每转位移量填错了结果PLC发100mm实际走了200mm。这种问题排查起来很费时间因为电气上一切正常就是机械参数不对。2.3 驱动器侧的参数设置V90驱动器本身也需要设置一些参数才能和PLC配合工作。这些参数可以通过V-ASSISTANT软件或者博途里的在线访问来设置。关键参数包括参数号含义建议值P29003控制模式选择EPOSP29010报文类型111P29011使能信号源PROFINETP29100位置环增益根据机械刚性调整P29110速度前馈通常设为100%P29120加速度前馈根据负载惯量比调整这些参数里P29100位置环增益是最需要现场调试的。增益太低定位慢、有滞后增益太高电机啸叫、甚至振荡。一般从默认值开始慢慢往上加直到电机声音变尖就退回来一点。3. FB284速度给定与位置换算的完整解析3.1 FB284的引脚定义与功能FB284是西门子官方库里的一个功能块全称是“SINA_POS”。它的引脚很多但常用的就那么几个。我先把关键引脚列出来输入引脚ModePos运行模式0是绝对定位1是相对定位2是速度模式Position目标位置单位是LU长度单位Velocity运行速度单位是1000 LU/minOverV速度倍率0-199%OverAcc加速度倍率OverDec减速度倍率ExecuteMode触发定位的上升沿CancelTraversing取消当前定位IntermediateStop暂停HWLimitSwitch硬件限位输出引脚Done定位完成Busy正在运行Error故障Status状态字ActPosition实际位置ActVelocity实际速度这些引脚里Position和Velocity是最容易搞错的。很多人不知道单位是什么随便填个数结果电机要么不动要么飞车。3.2 速度给定的单位换算FB284的Velocity引脚单位是1000 LU/min。什么意思呢如果你填100就是100000 LU/min。LU是“长度单位”是驱动器内部的位置单位。它和实际物理距离的关系取决于你的机械参数。举个例子假设丝杆导程是10mm编码器分辨率是10000 LU/转。那么1转 10mm 10000 LU所以 1mm 1000 LU如果你想让滑台以300mm/min的速度运行换算成LU/min就是300mm/min × 1000 LU/mm 300000 LU/min再换算成FB284的Velocity引脚值300000 ÷ 1000 300所以Velocity填300滑台就是以300mm/min运行。这个换算过程看起来简单但实际调试的时候很多人会忘记除以1000结果速度差了三个数量级。3.3 位置换算的实操步骤位置换算比速度换算更容易出错因为涉及到工艺对象的组态参数。假设你的机械参数如下丝杆导程10mm减速比1:1编码器分辨率10000 LU/转那么电机转1圈 丝杆走10mm 10000 LU所以 1mm 1000 LU如果你想让滑台从当前位置走到100mm处Position引脚应该填100mm × 1000 LU/mm 100000但是这里有一个坑工艺对象里的“每转位移量”如果填的是10mm那么PLC侧的位置单位就是mmFB284的Position引脚填100就是100mm。如果你在工艺对象里填的是LU那就要填100000。我个人的建议是在工艺对象里把单位设成mm这样PLC程序里所有位置都是mm直观好理解。FB284的Position引脚直接填mm值就行不需要额外换算。3.4 速度前馈与加速度前馈的调整V90 EPOS模式下速度前馈和加速度前馈对定位性能影响很大。速度前馈的作用是在位置环输出速度指令的同时直接把速度给定加到速度环上减少位置环的滞后。通常设为100%就能获得很好的效果。加速度前馈的作用是在加减速阶段提前给出扭矩补偿减少速度跟随误差。这个参数需要根据负载惯量比来调。惯量比越大加速度前馈越重要。调试的时候可以先设速度前馈100%加速度前馈0%然后观察定位曲线。如果加减速阶段跟随误差大再慢慢加加速度前馈。4. 实操过程与核心环节实现4.1 博途项目创建的完整流程第一步新建项目添加PLC设备。以S7-1200为例选好CPU型号。第二步添加V90驱动器。在“分布式设备”里选“V90 PN”然后设置设备名称和IP地址。设备名称要和V-ASSISTANT里设置的一致否则PROFINET通信建立不起来。第三步组态报文。在V90的设备视图里找到“报文”选项选“SIEMENS telegram 111”。第四步添加工艺对象。在PLC的“工艺对象”里添加“定位轴”然后组态机械参数。第五步编写FB284程序。在OB1或者FC里调用FB284连接好引脚。第六步下载程序在线调试。这个流程看起来简单但每一步都有细节。比如设备名称如果V90里设的是“v90-1”博途里设的是“V90_1”大小写或者横杠不一样通信就建不起来。这种问题新手很容易踩坑。4.2 FB284的调用与参数配置在博途里调用FB284需要先安装“SINA_POS”库。这个库可以在西门子官网下载也可以在博途的“库”里找到。调用的时候背景数据块会自动生成。然后你需要把工艺对象的接口和FB284连接起来。关键连接Axis连接到工艺对象的“定位轴”Position目标位置Velocity运行速度ExecuteMode触发信号这里有一个细节ExecuteMode需要上升沿触发。如果你用一个常开触点定位会一直触发电机就会反复走。正确的做法是用一个上升沿检测比如P_TRIG。4.3 位置换算的现场计算实例假设现场情况如下丝杆导程5mm减速比2:1电机转2圈丝杆转1圈编码器分辨率2500线4倍频后是10000 LU/转计算电机转2圈 丝杆转1圈 滑台走5mm电机转2圈 20000 LU所以 5mm 20000 LU1mm 4000 LU如果工艺对象里设的是mm单位那么每转位移量 5mm ÷ 2 2.5mm每转脉冲数 10000这样组态之后FB284的Position引脚填100滑台就走100mm。如果工艺对象里设的是LU单位那么每转位移量 20000 LU每转脉冲数 10000FB284的Position引脚填400000滑台才走100mm。两种方式都可以但mm单位更直观。我建议新手用mm单位不容易算错。4.4 调试步骤与在线监控下载程序后先不要急着让电机跑。按以下步骤来在线监控FB284的状态字确认驱动器使能了手动触发一个很小的位置比如1mm观察电机是否动作如果电机不动检查控制字、使能信号、报文通信如果电机飞车立即急停检查位置换算和速度限制小位置正常后再逐步加大位置和速度在线监控的时候可以打开工艺对象的“调试”面板里面有位置、速度、跟随误差的实时曲线。这个曲线对分析定位性能非常有用。提示第一次调试一定要把速度设低比如100mm/min。等确认方向、位置都对了再提速。5. 常见问题与排查技巧实录5.1 电机不动的几种原因电机不动是最常见的问题原因可能有很多。我按排查顺序列一下现象可能原因排查方法电机完全没反应驱动器未使能检查STW1控制字的使能位电机有嗡嗡声但不转位置环增益太低适当提高P29100电机转一下就停定位完成信号误触发检查Done信号和触发逻辑电机方向反了位置换算符号错误检查Position符号或机械参数电机飞车速度给定过大立即急停检查Velocity换算我遇到过一次电机不动的情况排查了半天最后发现是PROFINET的设备名称不一致。博途里设的是“v90”V-ASSISTANT里设的是“V90”大小写不一样通信根本没建立。这种问题在在线诊断里能看到但新手容易忽略。5.2 位置偏差大的排查思路位置偏差大通常有以下几个原因第一机械参数填错。比如丝杆导程填成了5mm实际是10mm那走100mm实际只走了50mm。这种偏差是成比例的比较好判断。第二编码器分辨率不对。V90的编码器分辨率可以在V-ASSISTANT里查看要和工艺对象里填的一致。第三减速比搞反了。减速比是电机转速除以丝杆转速不是反过来。搞反了位置会差一个减速比的平方。第四反向间隙。丝杆有反向间隙换向的时候会有偏差。这个可以通过反向间隙补偿来修正。排查的时候先走一个固定距离比如100mm用卡尺量实际走了多少。如果偏差是固定的比例那就是参数问题如果偏差不固定那就是机械问题。5.3 通信中断与报文丢失的处理PROFINET通信中断V90会报故障电机停止。常见原因网线接触不良交换机带宽不够设备名称冲突IP地址冲突处理办法检查网线水晶头是否压好用博途的“在线诊断”查看通信质量确认所有设备的名称和IP唯一如果多个V90建议用独立的交换机我见过一个项目8个V90挂在同一个交换机上通信频繁中断。后来换了一个工业级交换机问题就解决了。普通商用交换机在工业环境下抗干扰能力还是差一些。5.4 定位完成信号不稳定的处理Done信号不稳定时有时无通常是以下几个原因定位窗口设得太小电机在目标位置附近振荡位置环增益太高超调后反复调整机械刚性不足电机停了但机械还在晃解决办法适当放大定位窗口降低位置环增益增加机械刚性或者降低加速度定位窗口这个参数在工艺对象里可以设默认是0.1mm左右。如果机械晃动大可以放到0.5mm甚至1mm。6. 速度给定与位置换算的进阶技巧6.1 用变量表快速验证换算调试的时候不要每次都改程序下载。可以建一个变量表把FB284的Position和Velocity引脚关联到MD或者DB变量然后在变量表里直接改值。具体做法在DB块里建两个变量TargetPos和RunSpeedFB284的Position引脚填DB.TargetPosVelocity引脚填DB.RunSpeed下载后在变量表里监控这两个变量直接修改数值触发ExecuteMode观察电机动作这样调试效率高很多不用反复下载程序。6.2 多位置切换的程序结构实际项目里往往需要走多个位置。比如一个滑台要在0mm、100mm、200mm、300mm之间切换。程序结构可以这样设计建一个位置数组PosArray[0..3]分别存0、100、200、300建一个索引变量PosIndex每次触发定位TargetPos PosArray[PosIndex]定位完成后PosIndex加1这种结构清晰、易扩展。如果要加位置只需要改数组大小和初始值。6.3 速度倍率的动态调整FB284的OverV引脚可以动态调整速度倍率范围0-199%。这个功能在调试的时候很有用。比如你可以设OverV 50让电机以一半速度运行观察定位过程。确认没问题后再改成100%。OverAcc和OverDec同理可以调整加减速倍率。调试的时候先把加减速倍率设低一点比如50%等机械运行平稳了再逐步提高。6.4 位置换算的自动化计算如果你经常做不同机械参数的项目可以写一个FC块自动计算位置和速度。FC块的输入丝杆导程mm减速比编码器分辨率LU/转目标位置mm目标速度mm/minFC块的输出FB284的Position值FB284的Velocity值计算逻辑LU_per_mm 编码器分辨率 / (丝杆导程 / 减速比) Position_LU 目标位置 × LU_per_mm Velocity_LU_min 目标速度 × LU_per_mm Velocity_FB284 Velocity_LU_min / 1000这个FC块可以重复使用减少每次手动计算的麻烦。7. 我踩过的坑与实操心得7.1 第一次调试差点撞机我第一次调V90 EPOS的时候位置换算算错了把100mm算成了100000mm。触发定位后电机直接全速冲出去幸好行程短撞到了机械限位才停下来。从那以后我养成了一个习惯第一次调试位置先给1mm速度先给50mm/min。确认方向、距离都对了再逐步加大。7.2 设备名称大小写引发的通信故障前面提过设备名称大小写不一致导致通信建不起来。这个坑我踩过两次后来每次组态完都会用V-ASSISTANT和博途各看一遍设备名称确认完全一致。7.3 位置环增益调太高导致电机啸叫位置环增益P29100默认值通常能用。但有些机械刚性特别好默认值偏低定位慢。这时候可以往上加。但加太多电机会啸叫甚至振荡。我的经验是每次加10%听电机声音声音变尖就退回去5%。这样调出来的增益既快又稳。7.4 忘记使能信号导致电机不动FB284的控制字里使能位必须为1电机才会动。有时候程序逻辑写错了使能位没给电机就不动。排查的时候先看状态字确认驱动器使能了再看其他。7.5 速度前馈设太高导致过冲速度前馈设100%通常没问题但如果机械惯量比很大100%可能会导致过冲。这时候可以降到80%试试。加速度前馈同理不要一上来就设很高。8. 后续可以扩展的方向8.1 多轴同步控制单轴调通了可以试试多轴同步。V90支持EPOS模式下的齿轮同步和凸轮同步。用工艺对象里的“同步轴”功能可以让两个轴按一定比例运行。8.2 与上位机的数据交互FB284的实际位置和速度可以传给上位机做数据记录和曲线显示。用OPC UA或者Modbus TCP都可以。这样可以在电脑上看到定位曲线分析定位性能。8.3 故障诊断与预测性维护V90驱动器内部有一些诊断参数比如电流、温度、跟随误差。这些参数可以定期读取做趋势分析。如果发现跟随误差逐渐变大可能是机械磨损了可以提前维护。8.4 用SCL写更灵活的控制逻辑FB284是梯形图风格的块但如果你用SCL可以写更灵活的控制逻辑。比如根据位置自动计算速度、根据负载自动调整增益。SCL的数学运算能力比梯形图强很多。我个人在实际操作中的体会是V90 EPOS模式不难难的是细节。报文选对、设备名称一致、位置换算准确、增益调好基本就能稳定运行。剩下的就是多调、多试、多总结。每次踩坑都是经验下次遇到类似问题排查起来就快了。