大家好,欢迎来到IT知识分享网。
引言
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; //axis_enabled:=axisName.control=active; //这里可以这样写,其实 ":= " 是赋值的意思,符号右侧可以是值或者是一个表达式,不管是什么必须与右侧的类型相同。下面是使用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.监控程序
此时我们可以看到轴已经运行起来。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/133829.html