
一、通信概述 PROFINET IO是西门子伺服系统与PLC通信的主流方式,S7-1200作为IO控制器,V90 PN伺服驱动器作为IO设备,实现高速实时的运动控制。 通信架构 三种位置控制方法 方法 | 控制方式 | 报文类型 | 功能块 | 适用场景 | | 方法一 | 中央控制(PLC计算位置) | 标准报文3 | MC_Power/MC_MoveAbsolute | 高精度定位 | | 方法二 | 分布控制(驱动器计算位置) | 西门子111报文 | FB284(SINA_POS) | 简单定位 | | 方法三 | 速度控制 | 标准报文1 | 直接I/O编程 | 连续运转 |
通信特点 特性 | 说明 | 通信类型 | PROFINET IO RT(实时) | 数据交换 | 控制字/状态字 + 位置/速度/转矩给定与反馈 | 传输距离 | 标准100米(可扩展) | 通信周期 | 4ms ~ 512ms可调 | 报文类型 | 标准报文1/2/3/111等 |
--- 二、硬件与软件要求 1. 软件要求 软件 | 最低版本 | 推荐版本 | TIA Portal(博途) | V15.1 | V17/V18/V19 | V-ASSISTANT | V1.07及以上 | 用于伺服调试 |
2. 硬件要求 设备 | 型号/版本 | 说明 | | S7-1200 | CPU 1215C/1217C V4.0及以上 | 支持运动控制功能 | | V90 PN | SINAMICS V90 PN 固件≥V1.07 | 伺服驱动器 | | 伺服电机 | SIMOTICS S-1FL5/1FL6 | 配套伺服电机 | | 网线 | CAT5e及以上 | 标准工业以太网线 | | 交换机 | 可选 | 多设备连接时使用 |
3. GSD文件 文件类型 | 说明 | 获取方式 | GSDML | PROFINET设备描述文件 | TIA Portal内置或官网下载 | 版本 | GSDML V2.3 | 支持最新功能 |
--- 三、配置步骤(TIA Portal) 第一步:创建TIA Portal项目 打开TIA Portal软件 点击「创建新项目」,输入项目名称 选择「添加新设备」 第二步:添加S7-1200 CPU(IO控制器) 添加PLC: 选择「控制器」→「SIMATIC S7-1200」→「CPU」 选择支持运动控制的型号(如CPU 1215C DC/DC/DC) 选择固件版本(V4.0及以上) 配置PROFINET接口: 进入「设备视图」→ 点击CPU上的PROFINET接口 在「属性」→「以太网地址」中设置: IP地址:如 192.168.0.1 子网掩码:255.255.255.0 勾选「自动生成PROFINET设备名称」 启用运动控制功能: 在CPU属性→「工艺对象」中 启用「运动控制」功能 配置脉冲输出资源(如使用PTO) 第三步:添加V90 PN伺服(IO设备) 添加V90: 进入「网络视图」 在右侧「硬件目录」→「驱动器」→「SINAMICS」→「V90」 选择对应功率和型号 拖拽到网络视图中配置PROFINET接口: 双击网络视图中的V90 在「属性」→「以太网地址」中设置: IP地址:如 192.168.0.2(与PLC同一网段) 子网掩码:255.255.255.0 取消勾选「自动生成PROFINET设备名称」 手动设置设备名称(如:"v90_servo1") 分配IO控制器: 在网络视图中选中V90 点击「未分配」 选择S7-1200作为Controller 第四步:配置报文类型(关键步骤) 这是最关键的配置,决定控制方式和数据交换格式: 报文类型选择 报文类型 | 控制方式 | 输出字节 | 输入字节 | 适用场景 | | 标准报文1 | 速度控制 | 4字节 | 4字节 | 连续运转 | | 标准报文2 | 速度+附加 | 8字节 | 8字节 | 速度+监控 | | 标准报文3 | 位置控制 | 8字节 | 8字节 | 高精度定位(推荐) | | 西门子111报文 | 位置控制 | 12字节 | 12字节 | 分布控制(FB284) |
配置步骤 进入「设备视图」→ 点击V90 在「参数」→「PROFINET」→「报文类型」中选择 推荐选择标准报文3(位置控制最常用)确认子模块配置和地址分配 第五步:建立网络连接 进入「网络视图」 选中S7-1200的PROFINET接口(绿色方块) 拖拽连线到V90的PROFINET接口连接成功后显示绿色实线 第六步:分配设备名称(关键步骤) 这是最关键的步骤,伺服需要正确的设备名称才能通信: 连接PLC: 使用网线连接PC与S7-1200 确保PC与PLC在同一网段 在线访问: 点击「在线」→「访问PG/PC」 选择连接的网卡 点击「更新」搜索网络设备 分配名称: 找到未分配名称的V90(显示MAC地址) 输入配置的设备名称(如:"v90_servo1") 点击「分配名称」 验证: 点击「显示」确认名称已分配 设备名称必须与TIA Portal组态完全一致 第七步:伺服参数设置 使用V-ASSISTANT软件设置伺服参数: 参数号 | 参数名称 | 推荐值 | 说明 | | P29000 | 控制模式选择 | 3 | PROFINET位置控制 | | P29001 | PROFINET报文类型 | 3 | 标准报文3 | | P29002 | PROFINET设备名称 | v90_servo1 | 与TIA组态一致 | | P29010 | 位置环增益 | 根据负载调整 | 影响定位精度 | | P29011 | 速度环增益 | 根据负载调整 | 影响响应速度 | | P29012 | 电流环增益 | 默认值 | 一般不需调整 | | P29020 | 电子齿轮比分子 | 根据机械设定 | 脉冲当量设置 | | P29021 | 电子齿轮比分母 | 根据机械设定 | 脉冲当量设置 | | P29030 | 正向限位 | 根据机械设定 | 软限位保护 | | P29031 | 负向限位 | 根据机械设定 | 软限位保护 | | P29040 | 回零模式 | 根据需求设定 | 自动回零配置 |
第八步:配置工艺对象(方法一专用) 如果使用方法一(中央控制),需要配置工艺对象: 添加工艺对象: 在项目树中右键「工艺对象」→「添加新对象」 选择「Motion_Control」→「TO_PositioningAxis」 命名为「Axis1」 配置轴参数: 进入「轴组态」→ 选择V90作为驱动器 设置机械参数(丝杠螺距、减速比等) 设置限位、速度、加速度等参数 配置驱动器接口: 选择「PROFINET」作为接口类型 关联V90的硬件标识符(HWID) 确认报文类型为「标准报文3」 第九步:编译并下载 编译项目: 点击「编译」→「编译全部」 检查是否有错误 下载组态: 连接S7-1200 PLC 下载组态到PLC 将PLC切换到RUN模式 V90上电: 伺服会自动从PLC获取组态 无需单独下载 --- 四、控制字/状态字详解 1. 控制字1(STW1)- PLC发送给伺服 位 | 名称 | 功能 | 0 | 1 | 0 | ON/OFF1 | 启动/停止 | 停止 | 启动 | 1 | OFF2 | 自由停车 | 有效 | 禁止 | 2 | OFF3 | 快速停车 | 有效 | 禁止 | 3 | 脉冲使能 | 使能驱动器 | 禁止 | 使能 | 4 | 斜坡函数发生器使能 | 斜坡启动 | 禁止 | 使能 | 5 | 斜坡函数发生器保持 | 保持位置 | 禁止 | 保持 | 6 | 设定值使能 | 使能给定 | 禁止 | 使能 | 7 | 确认故障 | 故障复位 | - | 确认 | 8 | 点动 | 点动运行 | 禁止 | 使能 | 9 | 由PLC控制 | 控制权 | 面板 | PLC | 10 | 反转 | 反向运行 | 禁止 | 使能 | 11 | - | 保留 | - | - | 12 | - | 保留 | - | - | 13 | - | 保留 | - | - | 14 | - | 保留 | - | - | 15 | - | 保留 | - | - |
2. 状态字1(ZSW1)- 伺服发送给PLC 位 | 名称 | 功能 | 0 | 1 | 0 | 准备就绪 | 伺服就绪 | 未就绪 | 就绪 | 1 | 运行准备就绪 | 可启动 | 未就绪 | 就绪 | 2 | 运行使能 | 运行中 | 禁止 | 使能 | 3 | 故障 | 故障状态 | 无故障 | 故障 | 4 | OFF2 | 停车状态 | 有效 | 禁止 | 5 | OFF3 | 停车状态 | 有效 | 禁止 | 6 | 禁止合闸 | 禁止上电 | 禁止 | 允许 | 7 | 报警 | 报警状态 | 无报警 | 报警 | 8 | 设定值/实际值 | 数据有效性 | 无效 | 有效 | 9 | 偏差 | 位置偏差 | 无偏差 | 有偏差 | 10 | 主回路接触器 | 接触器状态 | 断开 | 闭合 | 11 | 正向运行 | 运行方向 | 反向 | 正向 | 12 | 反向运行 | 运行方向 | 正向 | 反向 | 13 | 过电流 | 电流状态 | 正常 | 过流 | 14 | 达到目标位置 | 位置状态 | 未达到 | 已达到 | 15 | - | 保留 | - | - |
3. 位置给定/实际值(标准报文3) 数据类型 | 范围 | 说明 | | 位置给定 | -2147483648~2147483647 | 脉冲数或工程单位 | | 位置实际值 | -2147483648~2147483647 | 脉冲数或工程单位 | | 速度给定 | -32768~32767 | 额定速度百分比 | | 速度实际值 | -32768~32767 | 额定速度百分比 |
--- 五、编程示例 方法一:工艺对象+PLC Open标准块(推荐) // 1. 使能伺服轴"MC_Power_1"( Axis := "Axis1", Enable := TRUE, Status => "Axis_Enabled", Busy => "Power_Busy", Error => "Power_Error", ErrorID => "Power_ErrorID");// 2. 绝对定位"MC_MoveAbsolute_1"( Axis := "Axis1", Execute := "Move_Trigger", Position := 100000.0, // 目标位置(工程单位) Velocity := 500.0, // 运行速度 Acceleration := 1000.0, // 加速度 Deceleration := 1000.0, // 减速度 Direction := 0, // 0=最短路径 BufferMode := FALSE, Done => "Move_Done", Busy => "Move_Busy", Error => "Move_Error", ErrorID => "Move_ErrorID");// 3. 相对定位"MC_MoveRelative_1"( Axis := "Axis1", Execute := "MoveRel_Trigger", Distance := 50000.0, // 相对距离 Velocity := 500.0, Acceleration := 1000.0, Deceleration := 1000.0, BufferMode := FALSE, Done => "MoveRel_Done", Busy => "MoveRel_Busy", Error => "MoveRel_Error");// 4. 回零"MC_Home_1"( Axis := "Axis1", Execute := "Home_Trigger", Mode := 3, // 回零模式 Position := 0.0, // 零点位置 Velocity := 200.0, Acceleration := 500.0, Deceleration := 500.0, Done => "Home_Done", Busy => "Home_Busy", Error => "Home_Error");// 5. 停止"MC_Halt_1"( Axis := "Axis1", Execute := "Stop_Trigger", Done => "Halt_Done", Busy => "Halt_Busy", Error => "Halt_Error");方法二:FB284(SINA_POS)功能块 // 调用FB284进行位置控制"SINA_POS_1"( Axis := "Axis1", HWID := 256, // 硬件标识符 Mode := 3, // 报文类型 Execute := "Move_Trigger", Pos := 100000, // 目标位置 Vel := 500, // 运行速度 Acc := 1000, // 加速度 Dec := 1000, // 减速度 Dir := 0, // 方向 Done => "Move_Done", Busy => "Move_Busy", Error => "Move_Error", ErrorID => "Move_ErrorID");方法三:直接I/O编程(速度控制) // 控制字1 - 启动伺服"STW1" := 16047F; // 启动命令// 控制字1 - 停止伺服"STW1" := 16047E; // 停止命令// 控制字1 - 故障复位"STW1" := 1604FF; // 位7=1确认故障// 速度给定(标准报文1)"NSOLL_A" := INT(50.0 / 100.0 * 16384); // 50%额定速度// 读取状态字1"ZSW1" := %IW0;// 读取实际速度"NSOLL_B" := %IW2;"Actual_Speed" := REAL("NSOLL_B") / 16384.0 * 100.0;// 运行状态判断IF ("ZSW1" AND 160004) <> 0 THEN "Motor_Running" := TRUE; // 运行中ELSE "Motor_Running" := FALSE; // 停止END_IF;// 故障判断IF ("ZSW1" AND 160008) <> 0 THEN "Drive_Fault" := TRUE; // 故障ELSE "Drive_Fault" := FALSE; // 正常END_IF;// 到达目标位置判断IF ("ZSW1" AND 164000) <> 0 THEN "Position_Reached" := TRUE; // 已到达ELSE "Position_Reached" := FALSE; // 未到达END_IF;完整控制程序示例 // 主程序OB1IF "System_Start" AND NOT "System_Stop" AND NOT "Drive_Fault" THEN // 使能伺服 "MC_Power_1"(Axis := "Axis1", Enable := TRUE); // 回零(首次运行) IF NOT "Homing_Done" THEN "MC_Home_1"(Axis := "Axis1", Execute := TRUE, Mode := 3); IF "MC_Home_1".Done THEN "Homing_Done" := TRUE; END_IF; END_IF; // 定位运行 IF "Homing_Done" AND "Move_Command" THEN "MC_MoveAbsolute_1"( Axis := "Axis1", Execute := TRUE, Position := "Target_Position", Velocity := "Run_Speed" ); END_IF;END_IF;// 停止处理IF "System_Stop" OR "Drive_Fault" OR "Emergency_Stop" THEN "MC_Halt_1"(Axis := "Axis1", Execute := TRUE); "MC_Power_1"(Axis := "Axis1", Enable := FALSE);END_IF;// 故障复位IF "Reset_Button" AND "Drive_Fault" THEN "STW1" := 1604FF; // 故障复位END_IF;--- 六、通信状态监控与诊断 1. LED状态指示(V90) LED | 颜色/状态 | 含义 | | RUN | 绿色常亮 | 运行正常 | | RUN | 黄色闪烁 | 启动中/待机 | | RUN | 红色 | 故障 | | LINK | 绿色 | 网络连接正常 | | LINK | 熄灭 | 网络连接断开 |
2. TIA Portal在线监控 状态指示 | 颜色 | 含义 | 通信正常 | 绿色 | PROFINET连接建立成功 | 通信故障 | 红色 | 连接中断或配置错误 | 正在连接 | 黄色 | 设备正在建立连接 |
3. 诊断缓冲区 在TIA Portal中查看CPU的「诊断缓冲区」 可获取详细的通信错误信息 常见错误:设备名称不匹配、IP冲突、网线故障等 4. 伺服故障代码 故障代码 | 含义 | 解决方案 | F07801 | PROFINET通信超时 | 检查网络连接 | F07802 | PROFINET配置错误 | 检查报文类型配置 | F07803 | 设备名称不匹配 | 重新分配设备名称 | F01001 | 过电流 | 检查电机和负载 | F01002 | 过电压 | 检查电源电压 | F01003 | 欠电压 | 检查电源电压 | F01010 | 编码器故障 | 检查编码器接线 | F01020 | 过载 | 减小负载或检查机械 | F01030 | 位置偏差过大 | 调整增益或检查负载 |
--- 七、常见问题与解决方案 问题现象 | 可能原因 | 解决方案 | 伺服无法识别 | GSD文件未导入 | 在TIA Portal中导入GSDML文件 | 设备名称分配失败 | 未在线操作 | 点击「在线」→「访问PG/PC」分配名称 | 通信超时 | IP地址不在同一网段 | 检查并统一IP网段 | 控制字无效 | 参数P29000未设置 | 设置P29000=3(PROFINET位置控制) | 位置不移动 | 伺服未使能 | 检查控制字1位3(脉冲使能) | 连接显示红色 | PLC未运行 | 将PLC切换到RUN模式 | 设备名称不匹配 | 名称不一致 | 确保TIA组态与实际分配一致 | 定位精度差 | 电子齿轮比错误 | 重新计算并设置P29020/P29021 | 运行抖动 | 增益参数不当 | 调整P29010/P29011增益参数 | 频繁通信中断 | 网线质量差 | 更换高质量网线 | 报文类型不匹配 | 配置与实际不符 | 确认报文类型与参数一致 | 工艺对象报错 | HWID配置错误 | 检查工艺对象中的硬件标识符 | 回零失败 | 限位开关未触发 | 检查限位开关接线和信号 |
--- 八、配置要点总结 配置项 | 关键要点 | 软件版本 | TIA Portal V15.1及以上 | 固件版本 | V90 PN V1.07及以上 | IP地址 | 同一网段,不能冲突 | 设备名称 | 必须在线分配且与组态一致 | 报文类型 | 标准报文3(位置控制推荐) | 控制模式 | P29000=3(PROFINET位置控制) | 工艺对象 | 方法一需配置TO_PositioningAxis | 硬件标识符 | 工艺对象中HWID需与V90一致 | 电子齿轮比 | 根据机械结构正确设置 | 增益参数 | 根据负载调整位置/速度环增益 | 网络连接 | 使用标准网线,确保连接可靠 | 诊断功能 | 启用诊断便于故障排查 |
--- 九、推荐参考资料 资料名称 | 来源 | 链接 | V90 PN PROFINET通信配置手册 | 西门子工业支持中心 | 下载 | S7-1200与V90位置控制三种方法 | 西门子工业支持中心 | 查看 | V90 GSD文件下载 | 西门子工业支持中心 | 下载 | V90产品手册 | 西门子工业支持中心 | 下载 | V90调试指南 | 西门子工业支持中心 | 下载 | S7-1200运动控制编程指南 | 西门子工业支持中心 | 下载 |
--- 十、总结 S7-1200与V90 PN伺服的PROFINET IO通信是工业自动化中高精度运动控制的经典方案,具有以下优势: 优势 | 说明 | 高速实时 | PROFINET RT通信,周期可达4ms | 高精度定位 | 支持绝对/相对定位,精度可达±1脉冲 | 配置简单 | TIA Portal统一组态,工艺对象标准化 | 诊断完善 | 支持伺服级诊断和故障定位 | 扩展灵活 | 支持多轴同步、电子齿轮/凸轮 | 成本优化 | 减少布线,降低安装成本 | 功能丰富 | 支持位置/速度/转矩多种控制模式 |
配置流程简图 三种控制方法选择建议 应用场景 | 推荐方法 | 理由 | 高精度定位 | 方法一(工艺对象) | PLC计算位置,精度高,功能全 | 简单定位 | 方法二(FB284) | 配置简单,驱动器计算位置 | 连续运转 | 方法三(直接I/O) | 速度控制,编程灵活 | 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |