SIMOTION项目实战— D435 Beginner

n

1概述
本文档通过一个实际项目来介绍SIMOTION项目组态、配置和编程的过程。在SIMOTION SCOUT软件的安装包里提供了一个供初学者学习的项目“D435_BEGINNER”,该项目位于软件光盘路径... Utilities_ApplicationssrcExamplesExampleForBegiers文件夹内,该项目提供了完整的项目文 件和介绍文档,该项目可以在SIMOTION D435 演示设备上模拟运行。
SIMOTION项目实战— D435 Beginner
图1 项目实战图示n

该项目要实现的功能是将生产线上的空盒子吹出生产线,其工作过程如下:按下起动按钮后,盒子在传送带上从上游运输到下游,如果在运输途中被检测出是空的, 那么载有喷嘴的吹出器会跟随空盒子运动,建立同步以后在指定的位置打开喷嘴将空盒子吹出传送带,然后吹出器重新返回等待位置。在运行过程中,如果安全门被 打开,那么生产线立即停止,在安全门关上以后,又自动恢复运行。复位起动按钮后,生产线停止。
该项目中使用的运动控制功能有:
• 齿轮同步Gearing
• 凸轮同步Camming
• 快速点输出Output Camn

2项目中使用的硬件和软件

2.1项目中使用的硬件
项目使用的硬件基于SIMOTION D435(可以转换到其他SIMOTION硬件),具体的产品如下表所示。n

编号 名称 数量 订货号/备注
1 SIMOTION D435 1 6AU1435-0AA00-0AA1
2 CF卡 1 6AU1400-2PA01-0AA0
3 SIMOTION多轴授权包 1 6AU1820-0AA43-0AB0
4 端子板TB30 1 6SL3055-0AA00-2TA0
5 智能型电源模块SLM 5KW 1 6SL3130-6AE15-0AB0
6 双轴电机模块DMM 2×1.6KW 1 6SL3120-2TE13-0AA3
7 传送带电机 1 1FK7022-5AK71-0LG0
8 吹出器电机 1 1FK7022-5AK71-0AG0
9 起动按钮 1 数字量输入,常开点
10 安全门 1 数字量输入,常闭点
11 空盒子传感器 1 数字量输入,常开点
12 吹出器喷嘴阀门 1 数字量输出
13 连接电缆 若干 动力电缆、信号电缆等

表1 本项目所使用的硬件列表n

2.2项目中使用的软件n

编号 名称 版本
1 Windows XP SP3, Professional
2 STEP7 V5.5 SP2 HF1
3 SIMOTION SCOUT V4.3 SP1 HF3
4 WinCC Flexible 2008 SP2 Upd12
5 SIMOTION D435 Firmware V4.3,with SINAMICS V2.6.2

表2 本项目所使用的软件列表n

3项目配置

SIMOTION SCOUT项目的基本配置步骤如下:n

1. 配置驱动器
2. 配置工艺对象TO
3. 编写程序并分配执行系统
4. 连接HMI设备

3.1配置驱动器
本项目中有两台电机,由双轴电机模块驱动,可以参考下载中心应用文档编号A0309(视频教程)来完成驱动器配置文档名称《SIMOTION D435调试入门》,其下载网址如下:http: //www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0309
配置完成以后,可以将驱动重命名为conveyor和eject,项目如下图所示:
SIMOTION项目实战— D435 Beginner
图2 项目配置n

配置完成以后,重新进行对SIMOTION和SINAMICS进行下载并保存数据(Copy RAM to ROM)。此时本项目中SINAMICS_Integrated的基本配置已结束,接下来的工作需要在SIMOTION D435中继续配置。n

3.2配置工艺对象TO
SIMOTION运行系统摒弃了传统的面向各种功能的执行方式,采用了更为先进的面向对象的方式,而每一个对象即为各种不同类型的TO (Technology Object,工艺对象)。这些TO被用于工艺和运动控制,每个TO都集成了特定的功能,例如,一个轴TO包含了与驱动的通讯功能、测量值的处理功能、位 置控制功能。在组态的时候这些TO被创建并进行参数化之后,便可以在SIMOTION系统的内核中运行了,在用户程序中编写合适的命令就能够使用TO的各 种功能。除了轴TO以外,外部编码器、同步操作、CAM曲线等等都可以配置成一个TO。每个TO都独立地处理各自的任务,同时输出相应的状态信息,如下图 所示。n

SIMOTION项目实战— D435 Beginner
图3 SIMOTION中TO示意图n

本项目中有两个实轴Conveyorbelt和Ejector,分别对应SINAMICS_Integrated中的两个驱动conveyor和 eject。另外,为了提高系统可靠性,我们引入一个虚轴作为整个系统的主轴MasterAxis,Conveyorbelt轴与MasterAxis轴 作齿轮同步,Ejector轴与Conveyorbelt轴作凸轮同步,凸轮曲线需要根据工艺绘制。快速点输出(CamOutput TO)根据Ejector轴的位置控制吹出器的喷嘴。所以本项目中使用的TO有:
• 轴TO:MasterAxis、Conveyorbelt、Ejector
• 齿轮同步TO:Conveyorbelt与MasterAxis之间的齿轮同步
• 凸轮TO:Ejctor与Conveyorbelt之间的位置凸轮曲线
• 凸轮同步TO:Ejector与Conveyorbelt之间的凸轮同步
• 快速点输出TO:Valve,由Ejector的位置决定喷嘴的通断n

3.2.1轴TO的配置
在创建轴TO的过程中,需要指定轴的名称、类型、工艺、单位、连接的驱动、编码器等信息。根据工艺要求,需要配置的三个轴的属性如下表所示。n

名称Name 类型Type 工艺Technology 连接的驱动Drive
MasterAxis 虚轴,旋转轴 位置轴
Conveyorbelt 实轴,旋转轴 跟随轴 Conveyor
Ejector 实轴,直线轴 跟随轴 Eject

表3 本项目中轴TO的属性n

1. 创建虚主轴MasterAxis,步骤如下。
在离线情况下,在SCOUT软件中依次打开D435AXES,双击insert axis可以插入一个轴。在弹出的窗口中配置轴的名称为MasterAxis,工艺为Positioning(即为位置轴)。
SIMOTION项目实战— D435 Beginner
图4 插入轴n

点击OK进入下一步,选择轴的类型为旋转轴Rotary、虚轴Virtual,单位采用默认值。
SIMOTION项目实战— D435 Beginner
图5 选择轴类型n

点击Next进入最后一步,这里可以看到所有配置的摘要信息,点击Finish结束配置。n

SIMOTION项目实战— D435 Beginner
图6 轴配置完成n

2.创建实轴Conveyorbelt,步骤如下。
在离线情况下,在SCOUT软件中依次打开D435AXES,双击insert axis可以插入一个轴。在弹出的窗口中配置轴的名称为Conveyorbelt,工艺为Synchronous operation(即为跟随轴)。
SIMOTION项目实战— D435 Beginner
图7 插入同步轴n

点击OK进入下一步,选择轴的类型为旋转轴Rotary,电气轴Electrical,模式为标准轴Standard,单位采用默认单位。
SIMOTION项目实战— D435 Beginner
图8 选择轴类型n

点击Next进入下一步,选择需要连接的驱动为SINAMICS_Integrated中的conveyor。n

SIMOTION项目实战— D435 Beginner
图9 选择轴的驱动n

点击Next进入下一步,编码器的数据会自动识别出来,默认选择使用的编码器为驱动器的Encoder_1,该编码器为绝对值编码器。
SIMOTION项目实战— D435 Beginner
图10 选择轴的编码器n

点击Next进入最后一步,这里可以看到所有配置的摘要信息,点击Finish结束配置。n

SIMOTION项目实战— D435 Beginner
图11 结束轴配置n

打开ConveyorBelt轴得机械配置部分进行模态轴的组态:n

SIMOTION项目实战— D435 Beginner
图12 组态轴参数n

设置该轴为模态轴:n

SIMOTION项目实战— D435 Beginner
图13 配置模态轴n

3.创建实轴Ejector,注意修改轴的类型为直线轴,回零方式修改为编码器零脉冲(Encoder zero mark only),Conveyorbelt使用的是绝对值编码器,所以无需设定回零模式。
SIMOTION项目实战— D435 Beginner
图14 配置Ejector轴的回零n

步骤与Conveyorbelt基本相同,这里不再赘述。保存并且编译下载后,可以使用控制面板对实轴进行测试。n

3.2.2齿轮同步TO的配置
在轴TO配置完成以后,需要配置跟随轴Conveyorbelt与主轴MasterAxis的互联,在SCOUT软件中,依次打开D435® AXES®Conveyorbelt®Conveyorbelt_SYNCHRONOUS_OPERATION(Conveyorbelt_GLEICHLAUF),双击其中的Intercoections,在右侧窗口选择使用虚主轴MasterAxis的设定值Setpoint。
SIMOTION项目实战— D435 Beginner
图15 同步配置n

3.2.3凸轮TO的配置
在配置Ejector轴与Conveyorbelt轴之间的凸轮同步操作之前,需要先定义凸轮曲线。根据工艺要求,如果检测到有空盒子,那么 Ejector轴开始跟随传送带移动,在1mm处建立同步以后,喷嘴打开吹出吹盒子,然后在4mm处关闭喷嘴,同时Ejector轴开始返回初始位置。这 个操作过程中,Ejector轴与Conveyorbelt轴的位置关系可以用下面的曲线(横纵坐标显示为位置)来描述。
SIMOTION项目实战— D435 Beginner
图16 凸轮曲线n

• 第1段:建立同步过程中
• 第2段:已建立同步
• 第3段:返回初始位置n

可以使用凸轮绘制工具CamTool来绘制这条曲线,CamTool软件需要预先安装好。在SCOUT软件中,依次打开D435®CAMS,双击Insert cam with CamTool即可打开编辑器,输入CAM曲线的名称为CAM_Ejector。如果没有安装CamTool软件,也可以通过描点法插入这条CAM曲线,本文档以CamTool为例进行说明。
SIMOTION项目实战— D435 Beginner
图17 创建CAM曲线n

在编辑窗口插入两个插补点和一个线段。点击工具栏上的插补点工具 ,在起点和终点附近插入两个插补点,使用直线工具 在两个插补点之间插入一条直线。
SIMOTION项目实战— D435 Beginner
图18 创建CAM曲线n

在画出雏形以后,使用工具栏上的箭头工具 ,设定插入的各个对象的参数。双击第一个插补点,在弹出的属性窗口中指定其参数为x=0,y=0。同理可以设定直线段和第二个插补点的参数,如下图所示。n

SIMOTION项目实战— D435 Beginner
图19 设定插入各个对象的参数n

在参数修改完成以后,曲线如图20所示:
SIMOTION项目实战— D435 Beginner
图20 完成后的CAM曲线n

最后指定坐标的范围,在工作区的右键菜单中选择Target Device Parameters,在Scaling选项卡中设置主轴范围为360,从轴范围为10,如下图所示。这样,就将Ejector轴与 Conveyorbelt轴的位置对应了起来,在Conveyor轴到36º(0.1)时,Ejector轴到达1mm(0.1)位置,此时即已建立同 步,同理在4mm(0.4)位置处开始解除同步,并返回初始位置。
SIMOTION项目实战— D435 Beginner
图21 指定坐标的范围n

3.2.4凸轮同步TO的配置
在凸轮曲线配置完成以后,可以配置轴Ejector与Conveyorbelt的互联,在SCOUT软件中依次打开D435®AXES®Ejector®Ejector_SYNCHRONOUS_OPERATION(Ejector_GLEICHLAUF),双击其中的Intercoections,在右侧窗口选择使用Conveyorbelt轴的设定值,并选择互联的CAM曲线为Cam_Ejector。
SIMOTION项目实战— D435 Beginner
图22 配置轴的CAM互联n

3.2.5快速点输出TO的配置n

OUTPUT CAM是SIMOTION中用于快速点输出的TO。本项目中吹出器喷嘴的控制可以使用OUTPUT CAM功能实现,喷嘴的通断由Ejector轴的位置决定,所以需要为Ejector轴配置一个OUTPUT CAM TO。该TO通过SIMOTION D435集成的CU320上的DO点输出。n

本项目中使用DI/DO8作为该OUTPUT CAM的输出通道,所以首先要将该通道配置为数字量输出。在SCOUT软件中,依次打开 D435SINAMICS_IntegratedControl_Unit,双击其中的Inputs/outputs,在右侧窗口中 Bidirectional digital inputs/outputs选项卡下,设置P0728.8为输出点,如下图所示。
SIMOTION项目实战— D435 Beginner
图23 设置P0728.8为输出点n

然后插入快速点输出TO。在SCOUT软件中,依次打开D435®AXES®Ejector®OUTPUT CAM,双击其中的Insert output cam,创建一个名称为Valve的OUTPUT CAM TO。
SIMOTION项目实战— D435 Beginner
图24 插入快速点输出TOn

然后配置该TO的通过SINAMICS_Integrated中的DO8输出。在SCOUT软件中,依次打开D435®AXESEjector®OUTPUT CAM®Valve,双击其中的Configuration,在右侧窗口中,选择激活输出SIMOTION项目实战— D435 Beginner,选择 Fast digital output(DO) (D4xx,C240) ,然后点击Output中的SIMOTION项目实战— D435 Beginner按钮,可以浏览到SINAMICS_Integrated中配置的DO8。
SIMOTION项目实战— D435 Beginner
图25 配置TOn

在OUTPUT CAM TO配置完毕以后,如下图所示。
SIMOTION项目实战— D435 Beginner
图26 TO配置完毕n

这样,本项目中所使用的TO就都配置完成了,此时的项目导航栏如下图所示。

SIMOTION项目实战— D435 Beginner

图27 本项目TO配置完毕n

3.3编写程序并分配执行系统
SIMOTION提供的编程环境方便而灵活,可以使用不同的编程语言实现相同的功能,这完全取决于个人的编程习惯。SIMOTION程序的执行系统清晰而 全面,不管是周期性执行,还是单次执行,不管是时间触发,还是事件触发,都可以按照优先级高低顺序进行程序的分配。通过程序在执行系统中的合理分配,可以 方便的实现各种运动控制功能,SIMOTION的执行系统的示意图如下图所示。
SIMOTION项目实战— D435 Beginner
图28 SIMOTION的执行系统示意图n

SIMOTION项目实战— D435 Beginner
图29 项目功能分解n

在使用SIMOTION创建项目时,首先需要对程序结构进行规划,根据工艺要求,将所需的功能分解,编写成多个独立的程序,再将程序分门别类地分配到执行 系统当中。在本项目中,根据工艺的要求,可以将程序分成几部分,再将程序分配到相应的执行系统中,如图29所示。
SIMOTION设备支持的程序语言有ST、MCC、LAD/FBD、DCC等,这些编程语言各有特点,其中使用MCC语言可以方便地编写运动控制程序, 使用LAD/FBD语言可以方便地实现逻辑控制功能,使用DCC可以方便地实现工艺控制功能,使用ST语言可以方便地实现复杂的运动、逻辑和工艺控制功 能。在SCOUT软件中,依次打开D435PROGRAMS即可插入程序。n

SIMOTION项目实战— D435 Beginner
图30 插入程序n

本项目中使用了ST、MCC和LAD/FBD三种编程语言。在使用MCC和LAD/FBD时,需要先插入程序单元(Unit),再在单元中插入程序 (Program)。本项目中,使用ST编写了pInit()和pHMIout()程序,使用MCC编写了pAuto(),pEject(), pHoming(),pProtDoor(),pTecFault()程序,使用LAD/FBD编写了pLADFBD(),pPLCopenProg() 程序,如图31所示。

SIMOTION项目实战— D435 Beginner
图31 项目中的程序n

在程序编写并编译完成以后,再分门别类地分配到执行系统中。在SCOUT软件中,依次打开D435Execution System即可以打开分配执行系统的画面,分配结果详见本文档3.4.3节。然后在线连接设备,编译并下载项目后,系统就可以正常运行了。
与SIMATIC PLC的程序不同的是,SIMOTION中没有数据块DB的概念,所有程序都对变量进行操作,所在在缩写SIMOTION程序时,需要按照以下步骤进行:
1. 声明变量
2. 编写程序
3. 分配执行系统n

3.3.1声明变量
在编写程序之前,需要声明变量。SIMOTION设备中的变量分为系统变量、全局变量和局部变量。其中系统变量在TO创建完成后,就已经由系统自动生成, 比如轴TO的运行状态等。全局变量包括IO变量、设备全局变量和程序单元变量三类,其中IO变量可以通过SCOUT软件中的ADDRESS LIST来创建,设备全局变量可以通过GLOBAL DEVICE VARIABLES来创建(本项目中没有使用),而程序单元变量需要在程序单元中创建,可以在程序单元内使用。一个程序单元中的全局变量通过互联,也可以 用于其他程序单元。局部变量在单个程序中创建,只可以在本程序中使用。

SIMOTION项目实战— D435 Beginner
图32 变量说明n

3.3.1.1创建IO变量
在SCOUT软件中,双击D435下的ADDRESS LIST,即可在软件下半窗口中配置全局的IO变量。在Name列输入变量名称,在I/O address一列指定输入输出类型以后,就可以直接在Assignment列点击 按钮浏览到系统中的IO变量。本项目中的IO变量配置如下图所示。其中iboEject为空盒子传感器的DI信号,iboProtDoor为安全门的DI 信号,iboStartBelt为生产线起动的DI信号。
SIMOTION项目实战— D435 Beginner
图33 创建IO变量n

3.3.1.2创建程序单元变量和局部变量
根据编程语言的不同,程序单元变量的创建方式也不同。n

(1)在ST语言中的声明变量
使用ST语言时,可以在INTERFACE段声明全局变量,其格式如下:n

变量名:数据类型(: =初始值);

比如pDefInit程序单元中一个名称为gboProgEnd的布尔型变量,需要按以下格式声明:n

INTERFACE
VAR_GLOBAL
gboProgEnd : BOOL := FALSE;
END_VAR
END_INTERFACE

这里声明的全局变量只能在本程序单元中使用。如果需要在其他程序单元中访问这些变量,那么需要在其他程序的INTERFACE段内添加USES语句,比如 在pHMIout程序单元中就有这样的语句,其格式如下:n

INTERFACE
USES pDefInit;
END_INTERFACE

另外,在程序中IMPLEMENTATION段也可以声明全局变量,这里声明的变量只能在本程序单元中使用,无法被其他程序单元访问,在本项目中并没有在 IMPLEMENTATION段中声明全局变量。
局部变量在程序内部的PROGRAM段内声明,仅供本程序使用,无法被其他程序或程序单元访问,其声明格式与全局变量相同。本项目中也没有在PROGRAM段声明局部变量。n

(2)在MCC程序单元中声明变量
在SCOUT软件中,依次打开D435PROGRAM,双击其中的Insert MCC Unit即可插入一个程序单元,此时在右侧的窗口中可以定义本程序单元的全局变量。
MCC程序单元中的全局变量在数据表格中声明,变量声明的位置与ST语言是一致的。如果是全局变量,并希望被其他程序单元访问,那么变量在 INTERFACE段声明,如果不希望被其他程序单元访问,那么变量在IMPLEMENTATION段声明。比如在pProtDoor程序单元中定义了下 面的全局变量。

SIMOTION项目实战— D435 Beginner
图34 MCC程序单元中声明变量n

如果要访问其他程序单元的变量,只需要在INTERFACE段的Coection选项卡下进行连接即可,这与ST语言中使用USES语句的功能相同, 比如在pAuto程序单元中要引用在ST程序pDefInit中定义的全局变量,那么可按下图所示的方法进行访问。

SIMOTION项目实战— D435 Beginner
图35 连接需访问变量的程序单元n

在每个程序单元里都有一个插入程序的选项,比如pAuto程序单元中双击Insert MCC Chart即可以在右侧窗口中打开程序的主编辑界面。在顶部的表格里,可以声明本程序的局部变量,比如在图中SIMOTION项目实战— D435 Beginner选项卡下,将变量名称、数据类型和初始值填入表格即可,本项目中没有定义局部变量。

SIMOTION项目实战— D435 Beginner
图36 本项目无局部变量n

(3)在LAD/FBD程序单元中声明变量
LAD/FBD程序单元中声明变量的操作与MCC类似,这里不再赘述。
另外,在LAD/FBD程序编辑窗口中也可以直接声明不存在的变量。比如在pLADFBD()程序中,将局部变量boResult修改为 boResult1,此时系统会自动弹出一个变量boResult1的声明窗口,在这里可选择数据类型和变量类型等。这种声明变量的方式非常方便。

SIMOTION项目实战— D435 Beginner
图37 在LAD/FBD程序单元中声明变量n

3.3.2编写程序
项目程序需要根据实际工艺编写,本项目中将工艺分解为回零、传送带运行、吹出器动作、安全门控制、错误处理等部分,分别编程进行处理,最后通过程序在执行 系统中的分配,达到各程序协调工作的目的。
由于相同的功能,可以使用不同的编程语言实现,所以编程方式十分自由。本项目中使用ST语言编写了数据初始化pDefInit和与HMI的数据交换pHMIout两段程序,使用MCC语言编写了与运动控制相关的程序,使用LAD/FBD编写了周期性执行的逻辑控制程序。n

3.3.2.1使用ST语言编写程序
在SCOUT软件中,依次打开D435PROGRAMS,双击其中的Insert ST source file即可插入一段ST程序,在右侧窗口会自动打开ST程序编程器。使用ST语言编写的程序需要放在IMPLEMENTATION段中,以 PROGRAM关键字开头,以END_PROGRAM关键字结尾。程序编写完成后,还需要在INTERFACE段进行声明。比如pDefInit()程序 的ST程序如下。n

INTERFACE
VAR_GLOBAL //声明全局变量
gboProgEnd : BOOL := FALSE;
gboProtDoorOpen : BOOL := FALSE;
gr64VMasterAxis : LREAL := 360;
gr64VMasterAxisOld : LREAL := 0;
gi16Mode : INT := 0;
gboDriveActive : BOOL := FALSE;
gboStartConveyor : BOOL := FALSE;
gboStartEjector : BOOL := FALSE;
END_VAR
PROGRAM pInit; // 声明程序pInit
END_INTERFACEn

IMPLEMENTATION
PROGRAM pInit; //程序pInit开始
gboProgEnd := FALSE; // 赋值语句,初始化变量,下同
gboProtDoorOpen := FALSE;
gr64VMasterAxis := 360;
gr64VMasterAxisOld := 0;
gi16Mode := 0;
gboDriveActive := FALSE;
END_PROGRAM //程序pInit结束
END_IMPLEMENTATION

用相同方法编写pHMIout()程序,这里不再赘述。n

3.3.2.2使用MCC语言编写程序
在SCOUT软件中,依次打开D435PROGRAMS,双击其中的Insert MCC Unit,即可创建一个MCC程序单元,然后双击其中的Insert MCC Chart即可插入一段MCC程序,在右侧窗口中会自动打开MCC编辑器,此时在工具栏上会出现MCC编程工具条 SIMOTION项目实战— D435 Beginner,所有的MCC指令都可以通过点击工具条上的按钮插入。
下面以pAuto()程序为例,介绍MCC编辑器的操作。pAuto()是用于控制生产线自动运行的程序,在所有轴都回零以后,即开始执行pAuto() 中的程序。按照工艺要求,需要先将虚主轴MasterAxis使能,在接到起动信号iboStartBelt以后,传送带轴Conveyorbelt开始 跟随主轴做齿轮同步,同时将喷嘴阀门的OUTPUT CAM功能使能。由于此时轴Ejector仍处于停止状态,所以喷嘴阀门一直关闭。然后起动虚主轴,如果虚主轴的速度设定值发生变化,那么要立即生效,要 循环判断设定值是否有变化。这样在虚主轴起动以后,传送带轴也开始运动。当检测到有停止信号gboProgEnd时,程序结束。n

首先插入一个新程序,鼠标点击编程窗口中的SIMOTION项目实战— D435 Beginner,然后选择工具栏上的轴使能命令SIMOTION项目实战— D435 Beginner即可插入该功能块,如图38所示:

SIMOTION项目实战— D435 Beginner

图38 轴使能命令n

双击Switch axis enable命令,在弹出窗口中设置其属性,如图39所示:

SIMOTION项目实战— D435 Beginner
图39 设置轴使能命令属性n

插入SIMOTION项目实战— D435 BeginnerWaiting for signal命令,并设置其属性如下图所示。
SIMOTION项目实战— D435 Beginner
图40 Waiting for signal命令n

然后插入SIMOTION项目实战— D435 BeginnerGearing On命令,并设置其Parameter和Synchronization选项卡内参数如下图所示。n

SIMOTION项目实战— D435 Beginner
图41 Gearing On命令n

SIMOTION项目实战— D435 Beginner
图42 Gearing On命令n

然后插入SIMOTION项目实战— D435 BeginnerSwitch output cam On命令,并设置其参数如图43所示:n

SIMOTION项目实战— D435 Beginner
图43 Switch output cam On命令n

同理插入其他命令块并设置其属性,程序编写完毕后,如图44所示:n

SIMOTION项目实战— D435 Beginner
图44 程序编写完毕n

点击工具栏上的编译按钮SIMOTION项目实战— D435 Beginner完成编译。在SCOUT软件底部Compile/check output信息栏可以查看编译状态。

SIMOTION项目实战— D435 Beginner
图45 查看编译状态n

同理完成其他MCC程序的编写和编译。n

3.3.2.3使用LAD/FBD语言编写程序
在SCOUT软件中,依次打开D435®PROGRAMS,双击其中的Insert LAD/FBD Unit,即可创建一个LAD/FBD程序单元,然后双击其中的Insert LAD/FBD Program即可插入一段LAD/FBD程序,在右侧窗口中会自动打开LAD/FBD编辑器。通过工具栏上的按钮SIMOTION项目实战— D435 BeginnerSIMOTION项目实战— D435 Beginner可以方便地在LAD和FBD两种语言之间切换。在使用LAD时,工具栏上会出现编程工具条SIMOTION项目实战— D435 Beginner ,在使用FBD时,工具栏上会出现编程工具条SIMOTION项目实战— D435 Beginner,所有的指令都可以通过点击工具条上的按钮插入。
下面以pLADFBD()程序为例,介绍LAD编辑器的操作。本项目中,在安全门打开时,所有设备停止运行,在安全门关闭以后,所以设备重新自动运行。 pLADFBD()就是用于各MotionTask重新自动运行的程序。本程序中,自动判断当前系统状态并重新起动运动控制任务MotionTask_2 和MotionTask_3。
首先插入第一行网络,实现如下功能:如果驱动系统未准备好,就跳转到end结束。点击工具栏上的SIMOTION项目实战— D435 Beginner按钮插入一个网络,选中该网络后点击工具条上的SIMOTION项目实战— D435 Beginner按钮插入一个常闭触点,并在其顶部输入变量名称gboDriveActive,再点击SIMOTION项目实战— D435 Beginner按钮插入一个线圈,在其下拉菜单中选择JMPN(Jump not),并在其顶部输入变量名称end,如图46所示。

SIMOTION项目实战— D435 Beginner

图46 LAD编程n

同理完成第二行网络,如果安全门被打开,那么也跳转到end结束。
接下来的网络3到网络9是对MotionTask的操作。在SIMOTION中MotionTask的状态模型如图47所示:
SIMOTION项目实战— D435 Beginner

图47 MotionTask的状态模型n

图中各任务状态的意义如下:n

• TS_INVALID
任务不存在于执行系统中,在执行系统的参数设置中未使用。
• TS_STOP_PENDIING
任务已经收到一个停止信号,但仍然处于RUNNING 和STOPPED状态之间。任务仍然可以执行动作直到被停止。
• TS_STOPPED
任务因下列动作已经被停止:
• 调用功能 _resetTask()
• SIMOTION SCOUT执行了停止
• TS_RUNNING
任务因下列功能而运行:
• 调用功能 _startTask() (MotionTasks)
• 激活循环任务 (BackgroundTask 等)
• 相关事件已发生 (UserInterruptTask 等)
• TS_WAITING
任务因下列功能之一而处于等待状态:
• _waitTime()
• WAITFORCONDITION...
• TS_SUSPENDED
任务通过功能 _suspendTask()被暂停
• TS_WAIT_NEXT_CYCLE
TimerInterruptTask 正在等待其触发信号
• TS_WAIT_NEXT_INTERRUPT
SystemInterruptTask 正在等待触发报警,或者
UserInterruptTask 正在等待触发事件
• TS_LOCKED
任务通过功能 _disableScheduler() 被锁定。

通过系统功能_getStateOfTaskId可以读取指定任务的当前状态,该功能可以在命令库中找到,如图48所示:

SIMOTION项目实战— D435 Beginner
图48 命令库n

该功能的返回值为DWORD,返回值指示下列状态:
16#0000: 指定的任务不存在 (TASK_STATE_INVALID)
16#0001: 从 RUN 变换到 STOP (TASK_STATE_STOP_PENDING)
16#0002: 任务被停止 (TASK_STATE_STOPPED)
16#0004: 任务正在运行 (TASK_STATE_RUNNING)
16#0010: 任务正在等待 (TASK_STATE_WAITING)
16#0020: 任务被暂停 (TASK_STATE_SUSPENDED)
16#0040: 定时中断任务等待下一个周期 (TASK_STATE_WAIT_NEXT_CYCLE)
16#0080: 用户中断任务或者系统中断任务等待下一个事件(TASK_STATE_WAIT_NEXT_INTERRUPT)
16#0100 任务被 _disablescheduler 禁止 (TASK_STATE_LOCKED)n

本程序中,判断当前任务的状态,如果任务处于被停止(16#0002)或暂停(16#0020)状态,那么就使用系统功能_RestartTaskId ()重新起动任务。在完成本段程序编写后,程序如下:

SIMOTION项目实战— D435 Beginner
图49 任务控制编程n

在编写完成后,点击工具栏上的按钮 完成编译,在SCOUT软件底部Compile/check output信息栏可以查看编译状态。n

SIMOTION项目实战— D435 Beginner
图50 编译无误n

同理完成其他LAD程序的编写和编译。n

3.3.3 分配执行系统
在所有程序编写并编译完成后,再分配执行系统。在SCOUT软件中,双击D435Execution System即可打开执行系统的配置画面。在右侧窗口中为不同的任务添加程序即可,配置完成后,重新编译项目。可以参考下载中心应用文档编号A0471来 获得更多与执行系统相关的信息。文档名称《SIMOTION 的任务执行机制及系统时钟 》,下载网址:ExampleForBegiers.zip ( 6810 KB )

关键词
SIMOTION, 项目实战

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc327225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论