将“运动控制功能块”移植到OOP中示例

今天继续推进《将“运动控制功能块”移植到OOP中》的学习,反复学习了6,7,8三个示例。三个示例本身很简单,通过状态机实现轴多轴的时序配合,通过itfAxis和itfCommand接口实现功能调用。但是在状态机中,对于运动控制相关的Method并没有循环调用,只在状态转移时调用一次,这是如何实现真正的运动控制过程控制的还很迷糊。为了一探究竟,我突然萌生了一共奇特的想法:我计划在接下来的几天把经典的Codesys的PLCopen库重新在西门子的1500上实现,且采用AX的面向对象的设计思想。让自动化行业最具有代表性的2个平台在AX的作用下融合在一起,想想都刺激!

下面是今天学习的一些笔记,供日后参阅。

6、仓库示例

6.1 应用说明

该应用的目的是自动从货架的储藏柜中取出货物。货物存放在托盘中,可以用叉子系统取出。
仓储实例概述
图4:仓储实例概述

仓库的任务是用三个轴移动叉子来放置或取走托盘:

  • X 轴沿地面移动;
  • Y 轴移动到所需高度;
  • Z 轴将叉子移动到货架上,取走托盘。

顺序是将X轴和Y轴移动到所需位置。两个轴到达该位置后,Z轴立即移动到托盘下方的货架上,在本例中是移动1000毫米。然后,Y轴将托盘再提升100毫米,将托盘从货架上抬起,这样托盘就可以从货架上移出,并移动到所需位置进行交付。

这个示例可以用不同的方法实现。一种直接的方法是使用PLCopen第1部分功能块。另外,也可以在支持PLCopen第4部分(协调运动)的控制器中定义XYZ组,这样可以简化和优化运动

6.2 第一个编程示例(使用第1部分中的FB)

只需使用第1部分中的功能块,就可以通过以下方式实现。

 仓储示例的第一个程序*
图5: 仓储示例的第一个程序

6.3 时序图

下图显示了从仓储系统提取托盘的顺序。

仓储示例的时间图

图6:仓储示例的时间图

6.4 OOP实现

本示例用于展示ST语言的OO编程。对于PLC程序员来说,编程非常简单,后台使用的是标准PLCopen运动控制库第1部分(v2)。通常,这些FB是以循环方式调用的,这与OOP理念不太相符。如果不需要反馈(完成、错误…),那么不循环调用FB,也是可以的。通过GetCommandStatus方法,可以调用底层FB(如 MC_MoveAbsolute),并通过GetCommandStatus(通过内部调用MC_MoveAbsolute和其他实例)返回运动的状态信息(完成、错误等)。在此基础上,可以开始下一条指令。当然,这些方法的实现取决于具体的供应商。

程序使用了状态机,不同的状态反映了整个轨迹的不同阶段。通过使用变量lastCommandX、lastCommandY和lastCommandZ,程序变得非常透明(见图7:上部为变量声明部分,下部为以CASE指令形式实现的状态机)。由此产生的时序图如图8所示。

PROGRAM WarehosingExample
VAR
    AxisX:itfAxis;
    AxisY:itfAxis;
    AxisZ:itfAxis;
    stateOOP:INT;
    lastCommandX:itfCommand;
    lastCommandY:itfCommand;
    lastCommandZ:itfCommnad;
    stepOn:BOOL:= FALSE;
    targetPosX:REAL:= 400;
    targetPosY:REAL:= 600;
END_VAR

CASE stateOOP OF
    0:;
    10: //init
        AxisX.Power(Enable := TRUE,EnablePositive := TRUE,EnableNegative := TRUE);
        AxisY.Power(Enable := TRUE,EnablePositive := TRUE,EnableNegative := TRUE);
        AxisZ.Power(Enable := TRUE,EnablePositive := TRUE,EnableNegative := TRUE);
        
        IF stepOn THEN
            stateOOP := stateOOP + 10;
        END_IF
    20: // start movement in XY
        lastCommnadX := AxisX.MoveAbsolute(Positio
<think>好的,用户想了解博图V18的指令列表、使用说明和教程。首先我需要确认用户的需求。他们可能是在使用西门子的TIA Portal软件,特别是V18版本,需要相关的指令文档和教程来编程或优化PLC程序。 首先,我应该回顾已有的引用内容。引用[1]提到了PLCSIM的仿真功能,从V14开始可以在不同视图下使用仿真,这可能和V18的仿真设置有关联。引用[2]涉及定义跳转列表的指令,指出输出的编号方式和标签的使用限制,这可能是指令列表的一部分。 用户需要的是V18的指令列表和使用说明,可能需要包括常用指令、新增功能、使用教程等。我应该分步骤回答,先介绍获取指令列表的途径,然后说明使用注意事项,再推荐教程资源。 需要注意系统级指令中的要求,比如正确使用LaTeX格式,生成相关问题。同时,引用已有的参考资料,但用户提供的引用只有两个,可能需要补充其他相关信息,但根据规则只能使用提供的引用。 接下来,我需要组织回答结构: 1. 指令列表获取方式:在软件内查看帮助文档,或访问西门子官网。 2. 使用说明要点:比如指令分类、参数设置、仿真测试(引用[1]提到的仿真器使用)。 3. 教程资源:官方文档、在线培训(可能没有直接引用,但可以提到引用中的仿真教程)。 4. 注意事项:如跳转列表的输出编号规则(引用[2]的内容)。 生成的问题要围绕V18指令,比如新增指令、常见错误、仿真连接等,结合已有的引用内容。 需要确保回答准确,并且引用正确的位置。例如,在提到仿真时引用[1],在跳转列表时引用[2]。同时,用户可能想知道如何查找特定指令或使用新功能,这些都需要涵盖。 最后,检查是否符合所有格式要求,如中文回答、LaTeX正确使用(如果有数学表达式的话,但这里可能不需要),生成的相关问题是否相关。</think>### 博图(TIA Portal)V18 指令列表与使用说明 #### 1. 指令列表获取方式 博图V18的指令列表集成在软件中,可通过以下方式访问: - **软件内查看**:在项目视图下,打开PLC设备配置,选择“指令”选项卡,可浏览所有支持的指令分类,包括基本指令、扩展指令、工艺功能(如运动控制、PID控制)等。 - **官方文档**:西门子官网提供《TIA Portal V18 系统手册》和《指令参考手册》,包含详细指令说明、参数定义及示例[^1]。 #### 2. 使用说明要点 - **指令分类**: - **基本逻辑指令**:如位逻辑操作($AND$、$OR$)、定时器(TON/TOF)、计数器(CTU/CTD)。 - **数据处理指令**:移动指令(MOVE)、比较指令(CMP)、数学运算(ADD/SUB/MUL/DIV)。 - **高级功能指令**:如跳转列表(参考引用[^2])、数据块操作、通信指令(TSEND/TRCV)。 - **参数配置**:每个指令的输入/输出参数需根据数据类型(BOOL、INT、REAL等)正确设置,避免类型冲突。 - **仿真测试**:使用PLCSIM V18进行指令逻辑验证,支持在项目视图直接启动仿真(引用[^1])。 #### 3. 教程资源推荐 - **官方教程**:西门子官网提供《TIA Portal V18 入门指南》,涵盖指令调用、程序调试步骤。 - **在线培训**:访问西门子工业支持学院,搜索“博图V18指令实战”系列课程。 - **社区案例**:西门子技术支持论坛中用户分享的指令应用实例,如跳转列表的标签定义(引用[^2])。 #### 4. 注意事项 - **跳转列表指令**:输出编号需从0开始按升序排列,且只能指定跳转标签(如`Label_1`),不可直接关联操作数(引用)。 - **兼容性**:V18新增指令(如增强型PID控制器)可能需特定固件版本支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值