引言
Simotion作为西门子高端运动控制器在网上的资料比较少,大部分的资料也是英文的。自从从事C#后端开发之后,有项目的时候修改一下Simotion,调试Simotion的机会越来越少了,但是我无法忘记Simotion ST结构化语言的优雅。要是把Simotion全部的功能介绍完,估计没有个四五十篇文章下不来。我也不知道自己能不能坚持写完😂。本期就先不讲解理论,先快速的搭建一个Simotion项目,并通过仿真运行起来。(先货真价实的看见一个轴能动起来,至于什么是工艺包,什么是工艺对象,齿轮比配置等等理论之后的文章讲解。)
目录
3.EXECUTION SYSTEM中添加FaultTask
5.EXECUTION SYSTEM中添加BackgroundTask
一、Simotion简介
Simotion是由西门子(Siemens)公司开发的一个高级运动控制系统,它结合了工业自动化领域的运动控制和工艺控制功能,旨在为复杂的运动控制应用提供全面的解决方案。Simotion系统集成了先进的硬件和软件技术,适用于各种需要精确控制和高性能的工业自动化应用,如机床、包装机械、印刷设备等。本文将深入探讨Simotion系统的核心特性、应用领域、技术架构以及与竞争产品的比较,以帮助读者更全面地了解这一先进的运动控制平台。
Simotion系统概述
Simotion系统是西门子公司专门为复杂运动控制应用而设计的,它融合了PLC(可编程逻辑控制器)的功能与CNC(计算机数控)系统的特点,形成了一种高度灵活、功能强大的解决方案。Simotion系统的核心特点包括:
-
集成的运动控制和工艺控制:Simotion系统不仅能够精确控制运动轨迹、速度和加速度,还可以同时管理复杂的工艺参数,如温度、压力等,以满足多种工业应用的需求。
-
开放的软件架构:Simotion系统基于西门子的TIA(Totally Integrated Automation)平台,支持多种编程语言和开发环境,如STEP 7、TIA Portal等,使得开发人员可以根据具体需求进行定制开发和集成。
-
高性能的硬件平台:Simotion系统采用先进的多核处理器和专用的运动控制芯片,具备强大的实时计算能力和高速通信接口,能够处理复杂的运动算法和大规模数据交换。
-
灵活的配置和扩展性:Simotion系统支持模块化设计,用户可以根据需要选择不同的模块(如运动控制、I/O接口、通信模块等)进行灵活组合和扩展,以满足不同规模和复杂度的应用场景。
-
全面的诊断和监控功能:Simotion系统集成了先进的诊断工具和监控功能,能够实时检测设备状态和运行参数,帮助用户快速定位和解决问题,提高生产效率和设备可用性。
Simotion的应用领域
Simotion系统广泛应用于需要高精度和高性能运动控制的行业和应用领域,包括但不限于:
-
机床制造:用于数控机床和复合加工中心,能够实现高速、高精度的轨迹控制和加工过程优化。
-
包装和填充设备:用于食品和饮料行业的包装机械,能够精确控制包装材料的输送、填充量和封口过程。
-
印刷设备:用于印刷机械的卷取、定位和印刷控制,支持复杂的多轴同步运动和图像定位功能。
-
材料处理和装配:用于各种材料处理设备和自动装配线,如焊接机器人、涂覆设备等,能够精确控制操作过程和产品质量。
-
测试和检测设备:用于自动化测试和检测系统,能够实现精确的测量和数据采集,支持复杂的测试程序和数据分析。
Simotion系统架构
Simotion系统的核心架构包括硬件和软件两个方面,它们共同构成了这一高级运动控制平台的基础。
-
硬件架构:
-
主控制单元(CPU):Simotion系统的核心控制单元,通常由多核处理器组成,负责执行运动控制算法和数据处理任务。
-
运动控制模块(Motion Control Unit):专用的运动控制芯片或模块,负责实时控制运动轨迹、速度和加速度,保证高精度的运动控制。
-
I/O模块:用于与外部设备和传感器进行数据交换和信号处理,支持多种数字和模拟接口。
-
通信接口:支持各种工业通信协议和网络,如PROFIBUS、PROFINET等,实现Simotion系统与其他设备和上位系统的数据交换和集成。
-
电源模块和冷却系统:确保Simotion系统稳定运行的电源供应和散热管理。
-
-
软件架构:
-
工程开发环境:Simotion系统通常使用TIA Portal或SCOUT作为工程开发环境,集成了运动控制编程、图形化编程语言(如STL、SCL)、参数配置和在线监控等功能。
-
运动控制软件:包括运动控制算法、插补算法、轨迹规划和同步控制等软件模块,用于实现复杂的多轴同步运动控制。
-
诊断和监控工具:提供实时的设备状态监控、诊断报告和事件记录功能,帮助用户快速定位和解决问题。
-
Simotion与竞争产品的比较
Simotion系统作为一个高级运动控制平台,在市场上与其他类似产品进行竞争。以下是Simotion系统相对于竞争产品的优势和特点:
-
集成度高:Simotion系统集成了运动控制、工艺控制和诊断功能,能够满足复杂应用的多重需求,减少系统集成和维护成本。
-
灵活的软件架构:Simotion系统支持多种编程语言和开发环境,使得开发人员能够根据具体需求进行定制开发和集成,提高系统的灵活性和可扩展性。
-
高性能的硬件平台:Simotion系统采用先进的多核处理器和专用的运动控制芯片,具备出色的实时计算能力和高速数据交换能力,能够处理复杂的运动算法和大规模数据处理。
-
全面的支持和服务:作为西门子公司的产品,Simotion系统拥有全球范围内的技术支持和服务网络,能够及时响应用户需求并提供定制化的解决方案。
二、如何快速的搭建一个Simotion项目
1.打开SIMOTION SCOUT软件
2.添加一个Simotion站点
3.打开HardWare进行组态
添加站点之后HardWare会自动打开,或右键D4x5 选择Open HW Configuration进入HardWare界面。因为我们是要进行仿真测试,所以设置127编程口的网络。
4.打开NetWork进行网络配置
添加一个pg/pc
设置 pg/pc的ip
设置 pg/pc的接口
5.编译保存
NetWork编译保存
HardWare编译保存
6. 添加一个电源模块
7.添加一个驱动模块
8.添加一个AXES
9.修改报文
三、仿真Simotion
1.打开仿真,项目下载
2.添加一个ST_Fault的ST空程序
INTERFACE
PROGRAM Falut;
END_INTERFACE
IMPLEMENTATION
PROGRAM Falut
//未调用故障处理任务,导致SIMOTION D4x5 CPU无法进入RUN状态。
//在EXCUTION SYSTEM中的
//SystemInterruptTasks内的所有FaultTask中调用空程序。
//必须调用,否侧CPU无法run。
;
END_PROGRAM
END_IMPLEMENTATION
3.EXECUTION SYSTEM中添加FaultTask
添加之后再次下载。
4.Control panel测试运行轴
点动测试
四、使用点动程序的Simotion仿真
刚才我们已经通过Control panel进行了点动,现在我们开始通过程序进行点动测试。
1.添加一个ST_Axis_Control的ST程序
INTERFACE
USEPACKAGE cam_ext;
FUNCTION_BLOCK FB_JOG;
FUNCTION_BLOCK FB_Axis_Enable;
END_INTERFACE
IMPLEMENTATION
FUNCTION_BLOCK FB_JOG
VAR_INPUT
axisName : posaxis;
jogForward : BOOL;
jogBackward : BOOL;
speedsetpoint : LREAL;
Axis_AutoAccel : LREAL:=3000;
Axis_AutoDecel : LREAL:=3000;
mymovingmode : EnumMovingMode;
END_VAR
VAR
myDINT : DINT;
forwardton : TON;
backwardton : TON;
END_VAR
VAR_OUTPUT
ActualSpeed : REAL;
ActualPosition : REAL;
END_VAR
IF axisname.control=ACTIVE THEN
forwardton(in:=jogForward AND NOT jogBackward, pt:=t#3000ms);
backwardton(in:=NOT jogForward AND jogBackward, pt:=t#3000ms);
END_IF;
ActualSpeed:=LREAL_TO_REAL(axisName.motionStateData.actualVelocity);
ActualPosition:=LREAL_TO_REAL(axisName.positioningState.actualPosition);
IF forwardton.q THEN
myDINT :=_move(
axis:= axisName,
direction:= POSITIVE,
velocitytype:= DIRECT,
velocity:= speedsetpoint,
positiveacceltype:=Direct ,
positiveaccel:=Axis_AutoAccel,
negativeacceltype:=Direct ,
negativeaccel:=Axis_AutoDecel,
velocityprofile:=SMOOTH,
mergemode:=IMMEDIATELY,
nextcommand:=IMMEDIATELY,
movingmode:=mymovingmode
);
END_IF;
IF backwardton.q THEN
myDINT :=_move(
axis:= axisName,
direction:= NEGATIVE,
velocitytype:= DIRECT,
velocity:= speedsetpoint,
positiveacceltype:=Direct ,
positiveaccel:=Axis_AutoAccel,
negativeacceltype:=Direct ,
negativeaccel:=Axis_AutoDecel,
velocityprofile:=SMOOTH,
mergemode:=IMMEDIATELY,
nextcommand:=IMMEDIATELY,
movingmode:=mymovingmode
);
END_IF;
IF forwardton.q = FALSE AND backwardton.q = FALSE THEN
myDINT :=_stop(
axis:=axisName,
stopmode:=STOP_WITHOUT_ABORT,
stopspecification:=ALL_AXIS_MOTION,
positiveacceltype:=Direct ,
positiveaccel:=Axis_AutoAccel,
negativeacceltype:=Direct ,
negativeaccel:=Axis_AutoDecel,
velocityprofile:=SMOOTH,
mergemode:=IMMEDIATELY,
nextcommand:=IMMEDIATELY,
movingmode:=CURRENT_MODE
);
END_IF;
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB_Axis_Enable
VAR_INPUT
axisName : driveaxis;
axis_enable : BOOL;
END_VAR
VAR
myDINT : DINT;
END_VAR
VAR_OUTPUT
axis_enabled : BOOL;
END_VAR
IF axis_enable THEN
myDINT :=_enableAxis(axis :=axisName);
ELSE
myDINT :=_disableAxis(axis :=axisName);
END_IF;
IF axisName.control=inactive THEN
axis_enabled:=FALSE;
ELSE
axis_enabled:=TRUE;
END_IF;
END_FUNCTION_BLOCK
END_IMPLEMENTATION
2.添加一个ST_Global的ST程序
INTERFACE
USES ST_Axis_Control;
VAR_GLOBAL
myfbaxisen : FB_Axis_Enable;
myfbaxisjog : FB_JOG;
END_VAR
END_INTERFACE
IMPLEMENTATION
END_IMPLEMENTATION
3.添加一个ST_Axis_Test的ST程序
INTERFACE
USES ST_Global;
PROGRAM Axis_Test;
END_INTERFACE
IMPLEMENTATION
PROGRAM Axis_Test
VAR
axisen : BOOL;
END_VAR
myfbaxisen(
axisName := Axis_1
,axis_enable := TRUE
,axis_enabled => axisen);
myfbaxisjog(
axisName := Axis_1
,jogForward := TRUE
,jogBackward := FALSE
,speedsetpoint := 10
,Axis_AutoAccel := 3000
,Axis_AutoDecel := 3000
,mymovingmode := POSITION_CONTROLLED);
END_PROGRAM
END_IMPLEMENTATION
4.ST程序设置可以监控
5.EXECUTION SYSTEM中添加BackgroundTask
添加之后下载至仿真cpu中
6.监控程序
此时我们可以看到轴已经运行起来。