TIA Portal伺服电机编程入门
伺服电机是一种受控电机,能够执行高精度定位,并由驱动器控制。在本教程中,我们将了解如何在西门子TIA Portal环境中执行简单的定位应用。
博途PLC工程智能体 | 梯形图转SCL | 自然语言生成梯形图 | 自然语言生成SCL | 逆向生成程序块文档 | 梯形图在线查看 | 博途编程文档MCP | AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI
如今,您很少有机会遇到没有伺服电机的自动工业装置。这些是现代工业的重要组成部分,可以在大多数应用中找到。
伺服电机是一种受控电机(通常是与增量编码器耦合的无刷电机),能够执行高精度定位,并由驱动器控制。
在本教程中,我们将了解如何在西门子TIA Portal环境中执行简单的定位应用。得益于西门子的技术对象,配置和编程伺服驱动器从未如此简单。PLC通过PROFINET连接到伺服驱动器,我们假设驱动器的电气参数已正确设置。
0、先决条件
要跟随本教程,您需要安装TIA Portal和Startdrive。
我们将使用TIA Portal和Startdrive v17;其他版本的软件包也可能与本教程兼容。
1、在TIA Portal中配置伺服驱动器
让我们首先创建一个TIA Portal项目。您可以选择任何支持PROFINET的CPU。在本例中,我们将使用一个简单的S7-1200C,其IP地址保持默认值{192.168.0.1/255.255.255.0}。
然后,我们必须将伺服驱动器添加到项目中。在项目树中单击"添加新设备"。

图1.1:带有1200C CPU的TIA Portal项目。
一个包含软件中所有可用设备目录的小窗口将出现。
打开SIMATIC S210文件夹,选择适合您需求的型号。在本教程中,我们将使用S210的最简单型号(1 AC 240V,0.1kW)。

图1.2:添加新设备目录。
现在在设备属性视图中,单击"添加新子网"以创建我们将链接到CPU的新网络。

图1.3:添加新子网。
之后,编辑驱动器的IP地址,使其不会与CPU地址冲突。

图1.4:更改驱动器的IP地址。
接下来,我们需要定义要与驱动器通信的消息类型。这些是称为电报的标准化消息(或数据块)。每种类型包含一定数量的不同长度的数据。
根据官方文档,要访问编码器位置值,我们必须使用电报3或更高版本。

图1.5:PROFIdrive标准电报。
在参数屏幕的左侧,单击"电报配置"。您会发现默认电报设置为"SIEMENS电报105",这是Simatic驱动器专用的。要访问任何伺服驱动器,我们必须使用"标准电报"。

图1.6:驱动器的电报配置
单击电报部分的滚动条,选择"标准电报3"。这将允许我们访问控制字、设定速度、实际速度和编码器值。

图1.7:将驱动器的电报设置为标准电报3。
您可以在网络配置中找到电报在CPU中影响的数据地址。您可以将地址编辑为任何想要的内存区域。这些值已保持为其默认值。

图1.8:电报的本地内存地址。
对于本示例,数据寻址如下:
- IW256:ZSW 1
- ID258:NIST
- IW262:ZSW 2
- IW264:G1 ZSW
- ID266:G1 XIST1
- ID270:G1 WIST2
- QW256:STW 1
- QD258:NSOLL
- QW262:STW 2
- QW264:G1 STW
在绝对寻址中,您可以通过直接在程序中读写地址来完美控制伺服驱动器。但正如您将在本教程后面看到的,有一种更有效的工具,可以让我们更轻松、更清晰地控制伺服电机。
接下来,我们必须正确配置驱动器和CPU之间的通信。在项目树中单击"设备和网络"。

图1.9:项目树中的设备和网络按钮。
您会注意到CPU未连接到PN/IE_1网络。单击CPU上的绿色端口,将其拖到PN/IE_1线上。

图1.10:CPU和驱动器未连接到同一子网。

图1.11:将PLC_1分配给驱动器。
现在我们必须告诉驱动器它必须与该CPU通信。单击CPU的绿色端口PLC_1作为主要合作伙伴。

图1.12:CPU和驱动器已连接并相互分配。
对于下一部分,我们需要指定使用的实际物理端口。单击"拓扑视图"。

图1.13:拓扑网络视图。
如您所见,两个设备未物理连接。单击CPU上的端口,将其拖到驱动器的其中一个端口。

图1.14:CPU和驱动器已物理连接。
现在所有设备都已正确配置。我们可以跳到下一步,即为伺服电机编程定位指令。
2、使用TO_PositioningAxis进行编程
同一个系统中存在许多冗余应用程序,例如多个运动控制或PID调节。为了简化此类应用程序的编程,西门子开发了技术对象(TO)。这些是基于开放库(主要是PLC Open)的接口,允许用户在管理多个复杂操作(如在同一程序中控制多个伺服电机)时统一其程序。
您不必手动处理与每个驱动器交换的数据,并根据您的机械系统计算正确的速度设定点以实现所需的行为。您可以简单地为每个驱动器创建一个技术对象。每个对象将包含其系统的所有机械参数,并将根据您指定的位置设定点自动计算并向驱动器发送正确的命令。使编程方式更简单、更清晰。
让我们首先创建技术对象。在项目树中,打开"技术对象"树,然后单击"添加新对象"。

图2.1:项目树中的添加新对象按钮。
将打开"添加新对象"窗口。在运动控制选项卡中,选择对象"TO_PositioningAxis",为其命名,然后单击"确定"。

图2.2:创建TO_PositioningAxis对象。
TO_PositioningAxis是模拟机械轴的对象。使用适当的机械参数配置它后,您只需提供位置设定点即可执行定位操作。
创建对象后,TO的参数窗口将自动打开。在基本参数中,选择"Profidrive"作为通信方式。

图2.3:将通信设置为PROFIdrive。
接下来,单击"驱动器"选项卡。在"选择Profidrive驱动器"部分,单击带有"..."的按钮,选择"Drive unit_1",然后选择"Drive control"。单击下面的绿色标记进行确认。

图2.4:将驱动器链接到技术对象。
下一步,单击"编码器"选项卡,在编码器部分,单击"..."按钮,选择"编码器电报",然后选择"Drive control"。用绿色标记确认。这告诉伺服的编码器连接到驱动器,其数据将通过PROFINET发送。

图2.5:在技术对象中配置编码器。
在扩展参数中,您可以设置轴的所有其他参数:
运动类型(旋转或线性)、运动方向、模数、位置限制(包括使用传感器的软件和物理限制)、归位等。
值已保持为其默认值。即具有1对1耦合的简单旋转轴。

图2.6:技术对象的扩展参数。
现在,开始编程。打开"程序块",然后单击"Main [OB1]"。

图2.7:打开主程序OB1。
在右侧的"指令"部分,打开"技术"文件夹,然后打开"运动控制"文件夹,将"MC_Power"指令拖放到网络1中。

图2.8:MC_Power指令位置。
将打开"调用选项"。为块命名,然后单击"确定"。

图2.9:MC_Power调用选项窗口。
注意:每次创建新的运动控制指令时,此窗口都会显示。
- MC_Power是指令,用于启用链接到它的驱动器。此指令必须始终存在于您的程序中。否则,您将无法操作驱动器。
按照以下方式编辑指令的参数。

图2.10:MC_Power参数。
- 轴参数必须包含我们创建的技术对象(Axis_1)。
- 使能参数必须包含一个布尔值。它可以是任何内存位或设置为TRUE或FALSE。在我们的例子中,它设置为TRUE,因此驱动器将始终启用。
- StartMode和StopMode是定义指令在某些条件下(如报警或故障)行为的参数。您可以保持其默认值。
为了控制伺服电机,我们将使用两个最常用的指令:
- MC_MoveAbsolute:命令伺服移动到轴上的绝对位置。伺服的原点是位置0。
- MC_MoveRelative:命令伺服移动到相对于其实际位置的位置。

图2.11:MC_MoveAbsolute和MC_MoveRelative指令位置。
将MC_MoveAbsolute拖放到网络2中,并按照以下方式填写参数。

图2.12:MC_MoveAbsolute参数。
- 轴参数必须包含TO(Axis_1)。
- 执行参数必须包含将触发指令的位存储器(例如HMI按钮)。
- 位置和速度参数是设定点整数(例如,可以在HMI中设置)。
接下来,将MC_MoveRelative拖放到网络3中,并按照以下方式填写参数。

图2.13:MC_MoveRelative参数。
该指令的参数遵循与前一个相同的逻辑。唯一的区别是MC_MoveAbsolute移动到某个固定位置,而MC_MoveRelative从其实际点开始移动一定距离。
3、结束语
在本教程中,您学习了如何配置PLC和伺服驱动器之间的PROFINET配置,如何创建运动控制技术对象,以及如何简单地执行基本定位指令。
如您所见,西门子提供了许多强大的工具,如TO,允许用户大幅减少开发时间、复杂性和难度。使其成为最好的工业环境之一。
原文链接:An Introduction to Servo Motor Programming in Siemens TIA Portal
汇智网翻译整理,转载请标明出处