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

    文章

    1398

    浏览量

    31477
  • 数据类型
    +关注

    关注

    0

    文章

    228

    浏览量

    13499
  • SCL
    SCL
    +关注

    关注

    1

    文章

    239

    浏览量

    16884

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

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

收藏 人收藏

    评论

    相关推荐

    ​PLC左移指令和右移指令

    在PLC(可编程逻辑控制器)中,左移(Shift Left)指令和右移(Shift Right)指令通常用于位级操作,对位寄存器中的位进行移位操作。这些指令可以用于实现数据的移位和位操作功能。
    发表于 03-15 14:12 746次阅读
    ​PLC左移<b class='flag-5'>指令</b>和右移<b class='flag-5'>指令</b>

    如何在PLC中使用左移指令和右移指令

     PLC(可编程逻辑控制器)中的左移指令和右移指令是数据处理中常用的指令,用于将数据中的位向左或向右移动指定的位数。
    的头像 发表于 03-07 17:11 828次阅读
    如何在PLC中使用左移<b class='flag-5'>指令</b>和右移<b class='flag-5'>指令</b>呢

    一文详解PLC转换指令

    PLC的主要数据类型有字节型、整数型、双整数型和实数型,数据的编码类型主要有二进制、十进制、十六进制、BCD码和ASCII码等。在编程时,指令对操作数类型有一定的要求,如字节型与字型数据不能直接进行
    的头像 发表于 12-12 13:48 3157次阅读

    PLC逻辑运算指令

    指令的功能是将IN1、IN2端指定单元的数据按位相与,结果存入OUT端指定的单元中。与指令可分为字节与指令、字与指令和双字与指令
    的头像 发表于 12-08 16:12 678次阅读
    PLC逻辑运算<b class='flag-5'>指令</b>

    SR与RS指令的区别

    SR和RS指令是计算机中常见的两种指令,它们分别是存储器读取(SR)指令和寄存器设置(RS)指令。这两种指令在计算机操作过程中扮演着不可替代
    的头像 发表于 11-17 16:09 1822次阅读

    讲讲ARM指令集格式以及常用的ARM汇编指令

    对于搞嵌入式驱动或者操作系统的人来说,掌握汇编语言的使用还是比较重要的,毕竟有时候在分析定位问题的时候,多多少少都会有汇编的身影。本文主要讲讲ARM指令集格式以及常用的ARM汇编指令(主要包括LDR
    的头像 发表于 11-08 12:34 1059次阅读
    讲讲ARM<b class='flag-5'>指令</b>集格式以及常用的ARM汇编<b class='flag-5'>指令</b>

    什么是AT指令?进入AT指令的方法 发送AT指令的方法

    什么是AT指令?进入AT指令的方法 发送AT指令的方法 AT指令(AT Command)是一种用于无线通信设备进行控制、调制解调器和其他串口设备进行通信的
    的头像 发表于 10-25 15:14 2955次阅读

    ARM汇编指令:异常产生指令和伪代码

    异常产生指令 1、【SWI指令】 SWI 24 位的立即数 SWI指令用于产生软件中断,以便用户程序能调用操作系统的系统例程。 SWI 0 x 02 ;该指令调用操作系统编号位 02
    的头像 发表于 10-07 14:29 531次阅读

    用机器指令和汇编指令编程

    了解: Debug的 T 命令再执行修改寄存器 SS 的指令时, 紧接着的下一条指令会被自动执行.
    的头像 发表于 09-20 14:43 382次阅读
    用机器<b class='flag-5'>指令</b>和汇编<b class='flag-5'>指令</b>编程

    电路块ANB指令与ORB指令操作

    一、ANB.ORB指令 在梯形图中,可能会出现电路块与电路块串联或者电路块与电路块并联的情况,这时就要使用ANB指令或ORB指令。ANB指令称为“电路块与
    的头像 发表于 09-18 09:59 2949次阅读

    欧姆龙比较指令的用法 欧姆龙cmp指令用法

    首先我们了解一下欧姆龙CMP指令,CMP指令是一种用于比较两个数值的指令,常用于控制系统中的逻辑判断和决策。该指令可以比较两个16位的数据,如果它们相等,则将零标志位设置为1,否则将其
    发表于 08-23 11:12 2774次阅读
    欧姆龙比较<b class='flag-5'>指令</b>的用法 欧姆龙cmp<b class='flag-5'>指令</b>用法

    PLC指令大全详解 PLC26个基本指令

    PLC指令是可编程逻辑控制器(PLC)使用的机器指令
    的头像 发表于 07-14 11:08 1w次阅读
    PLC<b class='flag-5'>指令</b>大全详解 PLC26个基本<b class='flag-5'>指令</b>

    基于CW32L083的AT指令框架

    创建一个AT指令框架,用于解析AT指令
    的头像 发表于 07-13 08:57 801次阅读
    基于CW32L083的AT<b class='flag-5'>指令</b>框架

    PLC表格指令说明

      表格指令包括填表指令、查表指令、先进先出提令、后进先出指令和存储区填充指令。 填表指令 1.
    的头像 发表于 05-29 10:16 2245次阅读
    PLC表格<b class='flag-5'>指令</b>说明

    PLC指令的应用方面到什么程度

    两个或两个以上的接点串联连接的电路叫串联电路块。串联电路块并联连接时, 分支开始用 LD、LDN指令,分支结束用 OLD指令。OLD指令与后述的 ALD指令均为无目标元件
    的头像 发表于 05-19 16:56 367次阅读
    PLC<b class='flag-5'>指令</b>的应用方面到什么程度