
简介这份资源围绕西门子S7-1200 PLC与禾川FB284伺服驱动器的Profinet通讯展开面向工业自动化领域的电气工程师、PLC编程人员及自动化专业学习者帮助解决两者组网配置、参数设定与通讯调试中的实际问题。压缩包为rar格式整体约253.36MB包内以docx参数设置文档与通讯测试程序为主前者用于禾川EOP模式下的控制模式、速度限制、位置精度等参数设定后者用于验证PLC与伺服之间的通讯链路与数据读写是否正常。资源涉及网络参数配置、Step 7编程、SCL或LAD/FBD程序编写、伺服参数设定及通讯测试等知识点读者可据此搭建实验环境、对照调试流程并排查通讯中断、数据同步等常见故障。目前已有373人学习下载适合需要快速上手PN通讯配置与伺服调试的初、中级自动化从业者参考。1. 西门子1200与禾川伺服FB284 PN通讯一条报文打通运控链路产线改造里最常见的组合就是一台西门子 S7-1200 做主站下面挂几台禾川伺服驱动器走 PROFINET。很多人第一次上手会卡在同一个地方PLC 侧组态完了程序里也调了 FB284但伺服就是不转或者一转就报 F07452、F07453 这类跟随误差故障。问题往往不在参数本身而在于没搞清楚 FB284 到底在管什么、报文里哪几个字是控制字、哪几个字是状态字。这篇笔记讲的就是西门子1200与禾川伺服通过 FB284 做 PROFINET 通讯这件事。FB284 是西门子给 S7-1200/1500 提供的运动控制功能块配合西门子报文 3、报文 5、报文 102 这类标准报文可以直接控制支持 PROFIdrive 协议的第三方伺服。禾川的 SV660、SV670 系列驱动器支持 PROFINET 从站只要把报文选对、GSD 文件装对、FB284 的管脚接对就能跑起来。适合正在做产线电控、想把西门子 PLC 和国产伺服搭在一起、又不想额外买运动控制模块的工程师。2. 报文、GSD 与 FB284先把通讯链路的三层关系理清2.1 PROFIdrive 报文决定了你能控制什么西门子 PLC 和伺服之间跑的是 PROFINET但 PROFINET 只负责把数据搬过去真正决定「这些数据代表什么」的是 PROFIdrive 报文。报文 3 是 5 个字2 个控制字 2 个设定值 1 个状态字适合速度控制。报文 5 是 9 个字多了位置反馈和更完整的状态字适合基本定位。报文 102 是 6 个字专门给西门子自己的 SINAMICS 用第三方伺服不一定支持。禾川伺服在 PROFINET 从站配置里能选的报文常见的是标准报文 1、标准报文 3、标准报文 5。如果你要做位置控制选报文 5只做速度控制报文 3 就够。选错报文的后果是 FB284 的管脚对不上比如你选了报文 3但 FB284 的 ConfigEPos 里期望有位置使能位那就会一直报错。提示报文号不是越大越好要看伺服手册里明确列出的支持列表。禾川不同固件版本支持的报文可能不一样选之前先翻对应型号的 PROFINET 通讯手册。2.2 GSD 文件装不对后面全白搭S7-1200 的 TIA Portal 里要先把禾川伺服的 GSDML 文件装进去才能在硬件目录里找到这个从站。GSD 文件一般从禾川官网下载对应具体型号和固件版本。装完之后在「其他现场设备」→「PROFINET IO」→「Drives」下面能找到。装 GSD 的步骤TIA Portal 菜单「选项」→「管理通用站描述文件 (GSD)」选择 GSDML 文件所在目录勾选要安装的文件点「安装」等待完成重启 TIA Portal在硬件目录里确认能搜到这里有个血泪经验GSD 文件版本和伺服固件版本不匹配时组态能编过但下载后从站起不来PLC 侧报「模块存在但不可用」。遇到这种情况先核对伺服面板上显示的固件版本号再去下对应版本的 GSD。2.3 FB284 的管脚不是随便接的FB284 的全称是「SINA_SPEED」的升级版运动控制块在 TIA Portal 的「工艺」→「运动控制」→「S7-1200 Motion Control」里能找到。它的核心管脚分几类管脚类别典型管脚作用使能类EnableAxis、MC_Power 等效控制轴的使能与禁用模式类ModePos选择 jog、绝对定位、相对定位位置类Position、Velocity目标位置和速度设定状态类AxisEnabled、Status反馈轴状态和故障配置类ConfigEPos配置报文里的控制位映射ConfigEPos 是最容易翻车的地方。它是一个 DWORD每一位对应报文里的一个控制位。比如 bit0 对应「使能运行」bit1 对应「停止」bit2 对应「急停」。如果你没把 ConfigEPos 的位和报文里的控制字对齐FB284 发出去的控制字就是错的伺服收到后要么不动要么直接报故障。3. 从零组态到点动一套可复现的配置流程3.1 硬件组态与报文选择假设你手上是一台 S7-1200 CPU 1214C DC/DC/DC一台禾川 SV660N 驱动器一台三相异步伺服电机。第一步是在 TIA Portal 里建项目添加 PLC然后在「设备与网络」里把禾川伺服的 GSD 从站拖到 PROFINET 网络上。拖上去之后双击从站在「设备概览」里会看到插槽列表。禾川的从站一般有两个插槽一个用于报文一个用于参数。在报文插槽里选择「标准报文 5」然后记下它的 I/O 地址。TIA Portal 会自动分配输入地址和输出地址比如输出地址从 Q64.0 开始输入地址从 I64.0 开始。这里要注意报文 5 的输出是 9 个字也就是 18 个字节输入也是 9 个字。地址分配完之后在 PLC 变量表里建两个数组变量一个对应输出一个对应输入方便后面 FB284 调用。# 在 TIA Portal 的 PLC 变量表里建两个变量 # 输出变量QW64 开始的 9 个字 Axis1_Output : Array[0..8] of Word; # 输入变量IW64 开始的 9 个字 Axis1_Input : Array[0..8] of Word;逻辑说明FB284 的 Output 管脚需要接一个指向输出区域的指针Input 管脚接输入区域。用数组变量是为了方便观察每一位的变化调试时可以直接在监控表里看。参数说明数组长度必须和报文长度一致。报文 5 是 9 个字所以数组是 0..8。如果你选的是报文 3那就是 5 个字数组改成 0..4。3.2 FB284 的调用与管脚接线在 OB1 里调用 FB284它会自动生成一个背景数据块。然后按下面的方式接线# FB284 调用示例梯形图转成文字描述 # 背景数据块FB284_DB1 # EnableAxis 接一个常开触点比如 M10.0 # ModePos 接一个整数0 jog1 绝对定位2 相对定位 # Position 接一个 REAL 变量单位是用户单位 # Velocity 接一个 REAL 变量单位是 rpm 或 mm/s # ConfigEPos 接一个 DWORD 常量或变量 # Output 接 Axis1_Output 的地址 # Input 接 Axis1_Input 的地址 # AxisEnabled 接一个输出线圈比如 Q0.0 # Status 接一个 MW 变量比如 MW20逻辑说明EnableAxis 是轴的总使能必须为 1 才能让伺服上使能。ModePos 决定运动模式jog 模式下 Velocity 管脚决定点动速度。ConfigEPos 的每一位要对照禾川手册里的控制字定义来设。参数说明ConfigEPos 的典型值是 16#00000003表示 bit0 和 bit1 置位对应「使能运行」和「允许定位」。但不同固件的定义可能不同一定要以禾川手册为准。Position 和 Velocity 的单位取决于你在伺服里设置的电子齿轮比和用户单位。3.3 点动测试与状态监控配置完之后先不要急着做定位先用 jog 模式点动一下确认通讯和使能都正常。步骤在监控表里把 M10.0 置 1观察伺服面板是否显示「RUN」或「使能」把 ModePos 设为 0Velocity 设为 100rpm在监控表里触发 jog 正转位观察电机是否转动同时监控 Axis1_Input 数组看状态字的变化如果电机不转先看 Axis1_Input[0] 的值。状态字 bit0 是「准备好」bit1 是「运行使能」bit2 是「故障」。如果 bit2 为 1说明伺服有故障去看伺服面板的故障代码。# 状态字解析示例在监控表里用位监控 # Axis1_Input[0].0 准备好 # Axis1_Input[0].1 运行使能 # Axis1_Input[0].2 故障 # Axis1_Input[0].3 位置到达 # Axis1_Input[0].4 速度到达逻辑说明状态字是伺服反馈给 PLC 的每一位的含义在 PROFIdrive 协议里有标准定义但禾川可能会在标准基础上做一些扩展。调试时先把标准位搞清楚再看扩展位。参数说明如果 Axis1_Input[0].2 为 1先清除故障再重新使能。清除故障的方式可以是给控制字的 bit7 一个上升沿或者直接在伺服面板上复位。4. 避坑指南FB284 调不通的 5 个典型场景4.1 现象FB284 报错 16#8001轴无法使能原因ConfigEPos 的位定义和报文里的控制字不匹配。比如你把 bit0 设成了「停止」但实际报文里 bit0 是「使能」那 FB284 发出去的控制字就是矛盾的。解决对照禾川手册里的「PROFIdrive 控制字定义」表逐位核对 ConfigEPos。常见做法是先把 ConfigEPos 设为 16#00000000只给 EnableAxis 使能看伺服是否能上使能。如果能再逐位加。4.2 现象伺服使能后电机嗡嗡响但不转原因速度设定值太小或者电子齿轮比设错了。禾川伺服的默认电子齿轮比可能是 1:1但你的 PLC 里 Velocity 给的是 rpm而伺服期望的是内部单位。解决先确认伺服参数 P0-01 或对应参数里的电子齿轮比。如果 PLC 给 100 rpm伺服实际只收到 0.1 rpm那电机就会嗡嗡响但不转。把 Velocity 调大或者改电子齿轮比。4.3 现象定位模式下电机冲过头报跟随误差故障原因位置环增益太低或者加减速时间设得太短。FB284 的位置设定值是直接给到伺服的伺服内部的位置环响应跟不上就会报跟随误差。解决先降低 Velocity把加减速时间拉长。然后在禾川伺服里调位置环增益一般先调 P 参数再调 I 参数。如果还是不行检查机械部分是否有卡阻。4.4 现象PLC 重启后伺服报通讯故障原因GSD 文件里的看门狗时间设得太短或者 PROFINET 网络的刷新周期和伺服不匹配。解决在 TIA Portal 的从站属性里把「看门狗时间」从默认的 3 倍刷新周期改成 6 倍或更长。同时检查网络拓扑确保没有交换机导致的额外延迟。4.5 现象FB284 的 Status 一直显示 16#0000但轴已经动了原因Status 管脚接错了变量或者输入地址映射错了。FB284 的 Status 输出的是轴的状态字不是伺服的原始状态字。解决先确认 Input 管脚接的是正确的输入地址。然后在监控表里直接看 Axis1_Input 数组的值和 Status 管脚的值对比。如果 Status 一直是 0说明 FB284 没有正确读取输入数据。5. 进阶技巧用 FB284 做多轴同步与动态切换5.1 多轴同步的报文分配与地址规划一条产线上往往不止一台伺服。用 S7-1200 带 3 台禾川伺服时每台伺服占一个 PROFINET 从站报文 5 的输入输出各 9 个字。3 台就是 27 个字的输入和 27 个字的输出。S7-1200 的 I/O 地址空间有限要提前规划好地址段。常见做法是轴号输出地址输入地址FB284 背景块轴1Q64~Q81I64~I81FB284_DB1轴2Q82~Q99I82~I99FB284_DB2轴3Q100~Q117I100~I117FB284_DB3地址规划好之后在 PLC 变量表里建三个数组分别对应三个轴的输入输出。然后在 OB1 里依次调用三个 FB284 实例每个实例的 Output 和 Input 接对应的数组地址。5.2 动态切换运动模式时的状态机设计FB284 的 ModePos 可以在运行时切换但不能直接跳变。比如从 jog 模式切到绝对定位要先停止当前运动等轴停止后再切模式。直接切会导致 FB284 内部状态机混乱报 16#8005 错误。我一般会写一个简单的状态机# 状态机伪代码 # Step 0: 等待使能 # Step 1: jog 模式等待启动信号 # Step 2: 切换到定位模式等待轴停止 # Step 3: 绝对定位等待位置到达 # Step 4: 完成回到 Step 1逻辑说明每个 Step 之间要有明确的转换条件。比如 Step 1 到 Step 2 的条件是「jog 停止信号触发」且「轴实际速度为 0」。Step 2 到 Step 3 的条件是「模式切换完成」且「轴使能正常」。参数说明轴实际速度可以从 Axis1_Input 数组里读报文 5 的输入字里有速度反馈。具体是第几个字要看禾川的报文定义。5.3 用 Trace 功能抓 FB284 的管脚波形TIA Portal 的 Trace 功能可以同时抓多个变量的波形调试 FB284 时特别有用。把 EnableAxis、ModePos、Position、Velocity、AxisEnabled、Status 这几个变量加到 Trace 里触发条件设为 Status 变化。抓一次完整的定位过程就能看出EnableAxis 和 AxisEnabled 之间的延迟是多少Position 设定值和实际位置反馈的跟随误差有多大Status 在哪个时刻从「运行」变成「位置到达」这个波形比任何手册都直观。我第一次调禾川伺服时就是靠 Trace 发现 ConfigEPos 的 bit2 设反了导致每次使能都触发急停。5.4 一个我踩过的坑报文 5 的输入字顺序禾川的报文 5 输入字里状态字和实际位置的顺序和西门子标准报文 5 不完全一样。我一开始按西门子的顺序去解析结果位置反馈一直读的是状态字导致定位永远到不了位。后来翻了禾川的通讯手册才发现它的实际位置在输入字的第 3、4 个字而不是第 1、2 个字。这件事之后我养成了一个习惯不管用哪家的伺服先把报文定义表打印出来贴在工位上每接一个管脚就核对一遍。希望帮到你。本文还有配套的精品资源点击获取