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

    浏览量

    33752
  • 数据类型
    +关注

    关注

    0

    文章

    237

    浏览量

    14107
  • SCL
    SCL
    +关注

    关注

    1

    文章

    244

    浏览量

    17931

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    欧盟CE-RED指令介绍

    欧盟CE-RED指令,全称是RadioEquipmentDirective(无线电设备指令),指令编号为2014/53/EU,是欧盟针对所有带无线发射功能设备制定的一项强制性法规。它是欧盟CE认证
    的头像 发表于 11-05 14:01 285次阅读
    欧盟CE-RED<b class='flag-5'>指令</b>介绍

    对浮点指令扩展中部分问题的解决与分享

    经过数周的前期准备与研读代码,我们组终于正式开始对浮点指令进行扩展并不出意外地遇到了一些小问题,本篇文章针对这些问题作出解决方法的分享。 一. 在e203_exu_decode中,发现变量
    发表于 10-24 08:14

    浮点数指令的添加——长指令写回仲裁

    =在增加浮点数指令时,我们会遇到一些需要写回寄存器的指令,此时就需要对原先的写回功能模块做更改。 写回功能主要集中在这两个模块中 e203_exu_longpwbck.v长指令写回仲裁
    发表于 10-24 07:09

    浮点数指令添加——长指令写回仲裁

    浮点数指令添加——长指令写回仲裁 在增加浮点数指令时,我们会遇到一些需要写回寄存器的指令,此时就需要对原先的写回功能模块做更改。 写回功能主要集中在这两个模块中
    发表于 10-24 06:07

    NICE指令的完整执行过程

    NICE指令的完整执行过程如下: 1、主处理器的译码单元提供EXU级译码得到指令的操作码,以判断其是否属于默认的自定义指令组。 如果该指令属于自定义
    发表于 10-23 07:25

    RISC-V指令集手册中F指令部分

    本文主要讲解RISC-V指令集手册中F指令部分 RISC-V标准中采用了符合IEEE 754-2008算术标准的单精度浮点计算指令,对于浮点运算来说,RV32F指令扩展中增加了32个3
    发表于 10-22 08:18

    浮点指令扩展中16位指令的处理

    RISC-V支持16位压缩格式,压缩格式立即数位数更少,能使用的寄存器也比较少,有些指令只能用常用8个整数寄存器(x8-x15)或者(f8-f15)。16 位指令只对汇编器和链接器可见,并且是否以短
    发表于 10-20 11:02

    Linux环境下div指令、divu指令测试异常怎么解决?

    由于团队修改了muldiv指令,需要测试div指令、divu指令是否功能正常: rv32um-p-div: 意外的,程序会产生自检报错(实际上这个报错在原工程中也会出现),通过info我们可以看到
    发表于 10-20 06:07

    西门子SMART200脉冲指令资料

    西门子SMART200脉冲指令
    发表于 07-29 17:29 0次下载

    通用MCU语音芯片支持串口+AT指令485通讯

    文档简单介绍AD24N的性能参数、串口通讯指令、应用方向、等内容
    的头像 发表于 07-24 11:35 483次阅读
    通用MCU语音芯片支持串口+AT<b class='flag-5'>指令</b>485通讯

    步进电机控制指令详解

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

    NVME控制器设计之指令控制

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

    普源示波器远程控制SCPI指令的应用

    Commands for Programmable Instruments)指令作为标准化的控制语言,为普源示波器的远程控制提供了强有力的支持。本文将深入探讨普源示波器远程控制SCPI指令的应用,包括其基本概念、常用指令、应用
    的头像 发表于 04-22 15:55 887次阅读
    普源示波器远程控制SCPI<b class='flag-5'>指令</b>的应用

    CPU的各种指令和执行流程

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

    RISC-V基础指令详解

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