0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是“AT”指令,如何使用?

机器人及PLC自动化应用 ? 来源:机器人及PLC自动化应用 ? 作者:机器人及PLC自动化 ? 2021-04-09 15:25 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

什么是“AT”指令,如何使用?

AT指令是S7-SCL中特有的一个指令,初学者可能会忽略此指令,或者对其理解不够深刻。AT指令在S7-SCL中有着非常重要的地位,很多应用程序都必须使用此指令。下面将对此指令进行详细讲解。

AT指令可以使用户能够以不同的数据类型来访问一个已经声明的变量。此指令类似于高级编程语言中的“继承”概念。此指令有如下特点:

· 特点一:定义仅在块内有效,在接口参数中不出现

· 特点二:在块中可以使用其它数据类型的视图

· 特点三:它只是让另外一些变量继承了某个变量的特性,仅仅数据类型是新的,其它特性相同。

下面将通过具体程序对以上三个特点进行说明,首先定义UDT100,UDT200,大小都为12个字节,但结构不同。UDT100包括一个DATE_AND_TIME数据类型(8个字节),还包括一个实数(4个字节);UDT200包括6个字(12个字节);在FC2定义输入参数Buffer, Frame1,Frame2:

特点一:定义仅在块内有效,在接口参数中不出现。块内定以的输入参数有3个,但仅在块内有效,在接口参数仅出现Buffer输入参数

c2e3e0ee-9417-11eb-8b86-12bb97331649.png

特点三:它只是让Frame1继承了Buffer的特性,仅仅数据类型是新的,其它特性相同。此处的UDT100长度应小于等于所继承的Buffer大小,否则编译错误

c2ec9734-9417-11eb-8b86-12bb97331649.png

注意:此处的UDT200长度应小于等于所继承的Buffer大小,否则编译错误

c306c46a-9417-11eb-8b86-12bb97331649.png

注意:UDT100,UDT200继承了Buffer特性

在OB1中调用FC2,并将一个数组赋值给Buffer输入参数

c31efbfc-9417-11eb-8b86-12bb97331649.png

特点一:块内定以的输入参数有3个,但仅在块内有效,在接口参数仅出现Buffer输入参数

c347a6f6-9417-11eb-8b86-12bb97331649.png

特点二:对于输入参数Buffer得到的数据,可以按照Frame1,或Frame2的格式来寻址。例如可以将 Buffer 的前8 个字节认为是DATA_AND_TIME,送至临时变量TEST_DT中

AT指令应用例子1:在STL中,用户如果希望取得MB0的某一位的数值是非常容易的,例如第3位,直接寻址M0.2就可以了。而在S7-SCL中,由于其具备高级语言的特点,所以定义的变量的绝对地址一般是不显现的。因此在STL中简单的操作,在S7-SCL中却复杂起来。但是通过使用AT指令即可解决这个问题。下图中的例子中,当输入的某个字节,其输出依次为此字节的8个位。

c366d79c-9417-11eb-8b86-12bb97331649.png

AT指令应用例子2:在S7-SCL中,ANY数据类型的使用,经常会伴随着AT指令的使用,下面的例子演示了如何拆分改写ANY数据类型中的内容。程序执行结果相当于:

c3abf2c8-9417-11eb-8b86-12bb97331649.png

c3c3b3f4-9417-11eb-8b86-12bb97331649.png

AT指令在使用当中,还有如下注意事项:

· AT指令用于对某个变量进行其它数据类型的声明时,必须放在此变量的声明语句后面

· AT指令生成的变量不可以初始化

· AT指令用于对某个变量其它数据类型的声明时,占用内存大小要小于等于此变量的长度

· AT指令用于对某个变量其它数据类型的声明时,如下的组合是允许的:

c3f58ba4-9417-11eb-8b86-12bb97331649.png

(1)AT指令用于ANY类型在VAR_OUT中是不允许的

Elementary (基本数据类型包括) :BOOL, BYTE, WORD, DWORD, INT, DINT, DATE, TIME,

S5TIME, CHAR Complex (复杂数据类型包括) :ARRAY, STRUCT, DATE_AND_TIME, STRING

在VASS标准中的应用实例:

pMeldFeldAT TempPointerMsys: STRUCT 变量格式是结构

BYTE0:BYTE; // Byte 0

TYP :BYTE; //Byte 1 Daten/Parametertyp

ANZ :WORD; //Byte 2+3 Laenge der Variablen

DBNR :WORD; //Byte 4+5 DB-Nummer

BZ :DWORD;// Byte 6 故障信息号

END_STRUCT;

程序中

TempPointerMsys := Msys; 故障信息号给入变量

故障报警信息

c41efb56-9417-11eb-8b86-12bb97331649.png

MeldSend(AufrufNr := 1

,Anz_Meld:= 27

,pMeldFeld:= pMeldFeld.BZ 故障信息号被用来发出

,pMeldAbb := pMeldAbb.BZ

,MeldDB:= WORD_TO_INT(pMeldDBNR.DBNR)

,AenderungsID := AenderungsID

,Integritaet:= Integritaet

,Neustart:= Neustart

); // VOID

-------------------------------END--------------------------

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 参数
    +关注

    关注

    11

    文章

    1868

    浏览量

    33265
  • 数据类型
    +关注

    关注

    0

    文章

    237

    浏览量

    13935
  • SCL
    SCL
    +关注

    关注

    1

    文章

    243

    浏览量

    17609

原文标题:SCL_什么是“AT”指令,如何使用?及其在VASS标准中的应用

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    步进电机控制指令详解

    这些指令主要是针对用 PLC 直接联动伺服放大器,目的是可以不借助其他扩展设备(例如1GM 模块)来进行简单的点位控制, 使用这些指令时最好配合三菱的伺服放大器 (如 MR-J2)。然而,我们也可以用这些指令来控制步进电机的运行
    的头像 发表于 06-12 10:33 ?894次阅读
    步进电机控制<b class='flag-5'>指令</b>详解

    NVME控制器设计之指令控制

    指令控制模块由一个指令信息缓存, 一个指令组装状态机和一个 ID 池组成。 指令信息缓存中存放着由系统控制模块写入的待处理指令信息;
    的头像 发表于 04-24 10:22 ?362次阅读
    NVME控制器设计之<b class='flag-5'>指令</b>控制

    CPU的各种指令和执行流程

    在集成电路设计中,CPU的指令是指计算机中央处理单元(CPU)用来执行计算任务的基本操作指令集。这些指令是CPU能够理解并执行的二进制代码,它们在计算机内部由硬件控制并按顺序执行,从而实现计算、控制
    的头像 发表于 04-18 11:24 ?1037次阅读

    RISC-V基础指令详解

    RISC-V中定义了六种指令类型,其中包括 R型指令 : 用于寄存器与寄存器之间算数运算的指令 I型指令 : 用于寄存器和立即数算术运算和读存储器操作的
    发表于 12-29 18:47

    Erp指令能效

    ErP指令EC244/2009、EC245/2009、EU1194/2012和能效标签指令EU874/2012已经实行多年,欧盟委员会在近3年通过参照不断改进的照明产品技术、环境和经济因素以及实际
    的头像 发表于 11-20 23:57 ?645次阅读
    Erp<b class='flag-5'>指令</b>能效

    汇川INOVANCE 中型PLC指令手册

    汇川INOVANCE 中型PLC指令手册
    发表于 11-19 13:45 ?6次下载

    RISC-V基本整数指令

    RISC-V提供了丰富的整数指令集,以满足各种计算需求。以下是六种基本整数指令的详细介绍: LOAD(加载):LOAD指令用于从内存中读取数据到寄存器中。例如,LW(Load Word)指令
    发表于 10-31 16:15

    plc基本指令的应用有哪些

    PLC(可编程逻辑控制器)的基本指令是PLC编程语言的基本元素,用于描述PLC如何根据输入信号的状态控制输出信号的变化,从而实现对机械设备的控制。PLC的基本指令涵盖了逻辑运算、定时控制、计数
    的头像 发表于 10-21 17:16 ?2962次阅读

    DSP指令缓存性能OMAP5912

    电子发烧友网站提供《DSP指令缓存性能OMAP5912.pdf》资料免费下载
    发表于 10-16 10:16 ?0次下载
    DSP<b class='flag-5'>指令</b>缓存性能OMAP5912

    处理器指令的获取过程

    微处理器指令的获取是计算机执行程序过程中的关键环节,它决定了微处理器如何对数据和指令进行处理。以下将详细阐述微处理器指令的获取过程,包括指令的来源、存储位置、读取方式以及相关的硬件和软
    的头像 发表于 10-05 15:16 ?1129次阅读

    微处理器执行指令的基本过程

    微处理器,作为现代计算机的核心部件,负责执行存储在内存中的指令,完成各种计算和控制任务。指令的执行过程不仅体现了微处理器的设计思想和架构特点,还直接影响到计算机的性能和效率。
    的头像 发表于 10-05 15:07 ?2088次阅读

    微处理器的指令集和指令系统有什么不同

    微处理器的指令集和指令系统是两个紧密相关但又有所区别的概念,它们在微处理器的设计和运行中扮演着不同的角色。以下是对这两个概念的详细解析,旨在深入探讨它们之间的不同点。
    的头像 发表于 10-05 14:57 ?1214次阅读

    PLC指令的简要说明

    PLC(可编程逻辑控制器)的指令虽然因不同的制造商和型号而有所差异,但有一些指令是相对比较通用的。
    的头像 发表于 09-18 14:15 ?1622次阅读

    复杂指令集和精简指令集有什么区别

    复杂指令集(CISC,Complex Instruction Set Computer)和精简指令集(RISC,Reduced Instruction Set Computer)是微处理器设计中
    的头像 发表于 08-22 11:00 ?6128次阅读

    微处理器的指令集架构介绍

    微处理器的指令集架构(Instruction Set Architecture,ISA)是计算机体系结构中至关重要的部分,它定义了微处理器能够执行的操作和指令的集合,以及这些指令如何被组织、存储
    的头像 发表于 08-22 10:53 ?2614次阅读