抖音粉丝群1
『7x24小时有问必答』

一、通信概述
PROFINET IO是西门子伺服系统与PLC通信的主流方式,S7-1200作为IO控制器,V90 PN伺服驱动器作为IO设备,实现高速实时的运动控制。

通信架构

1.png

三种位置控制方法

方法
控制方式
报文类型
功能块
适用场景
方法一
中央控制(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;

完整控制程序示例

// 主程序OB1

IF "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统一组态,工艺对象标准化
诊断完善
支持伺服级诊断和故障定位
扩展灵活
支持多轴同步、电子齿轮/凸轮
成本优化
减少布线,降低安装成本
功能丰富
支持位置/速度/转矩多种控制模式

配置流程简图

2.png

三种控制方法选择建议

应用场景
推荐方法
理由
高精度定位
方法一(工艺对象)
PLC计算位置,精度高,功能全
简单定位
方法二(FB284)
配置简单,驱动器计算位置
连续运转
方法三(直接I/O)
速度控制,编程灵活

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码