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

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

3天内不再提示

如何使用S7-SCL中的“AT”指令?

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2021-04-04 18:14 次阅读

什么是“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输入参数

50447f60-8cfd-11eb-8b86-12bb97331649.png

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

5069ff6a-8cfd-11eb-8b86-12bb97331649.png

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

50d71c6c-8cfd-11eb-8b86-12bb97331649.png

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

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

5112442c-8cfd-11eb-8b86-12bb97331649.png

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

515d409e-8cfd-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个位。

519a1d5c-8cfd-11eb-8b86-12bb97331649.png

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

51cef2e8-8cfd-11eb-8b86-12bb97331649.png

523e2302-8cfd-11eb-8b86-12bb97331649.png

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

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

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

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

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

52c50796-8cfd-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标准中的应用实例:

pMeldFeld AT 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; 故障信息号给入变量

故障报警信息

530c0c22-8cfd-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

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

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

责任编辑:haq

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

    关注

    2

    文章

    180

    浏览量

    64700
  • S7-SCL
    +关注

    关注

    0

    文章

    13

    浏览量

    7682

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

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

收藏 人收藏

    评论

    相关推荐

    SIMATIC S7-1500 PLC S7-SCL SCL块及应用

    函数和函数块在西门子的大中型PLC编程中,应用十分广泛,前介绍过函数和函数块
    的头像 发表于 12-15 16:18 603次阅读
    SIMATIC S7-1500 PLC <b class='flag-5'>S7-SCL</b> <b class='flag-5'>SCL</b>块及应用

    SIMATIC S7-1500 PLC S7-SCL应用举例

    函数和函数块在西门子的大中型PLC编程中,应用十分广泛,前介绍过函数和函数块,其编程采用的是LAD语言,而本节采用SCL语言编程,以下仅用一个例子介绍函数,函数块使用方法也类似。
    的头像 发表于 12-11 09:17 350次阅读
    SIMATIC S7-1500 PLC <b class='flag-5'>S7-SCL</b>应用举例

    SIMATIC S7-1500 PLC S7-SCL SCL块详解

    函数和函数块在西门子的大中型PLC编程中,应用十分广泛,前介绍过函数和函数块,其编程采用的是LAD语言,而本节采用SCL语言编程,以下仅用一个例子介绍函数,函数块使用方法也类似。
    的头像 发表于 12-06 09:17 445次阅读
    SIMATIC S7-1500 PLC <b class='flag-5'>S7-SCL</b> <b class='flag-5'>SCL</b>块详解

    SIMATIC S7-1500 PLC S7-SCL简介

    S7-SCL(Structured Control Language)结构化控制语言是一种类似于计算机高级语言的编程方式,它的语法规范接近计算机中的PASCAL语言。
    的头像 发表于 11-20 09:17 630次阅读

    SCL函数块的结构介绍 创建SCL函数块的步骤说明

    下图显示了 SCL 函数块的结构。
    的头像 发表于 10-30 10:16 378次阅读
    <b class='flag-5'>SCL</b>函数块的结构介绍 创建<b class='flag-5'>SCL</b>函数块的步骤说明

    调用SCL函数块-事例

    在以下部分中,将在组织块“Main” 中调用 SCL 函数块“SCL_Best_before_date” 并互连输入和输出参数。
    的头像 发表于 08-10 09:51 562次阅读
    调用<b class='flag-5'>SCL</b>函数块-事例

    西门子博途SCL:REGION:构建程序代码的步骤

    可以使用指令“构建程序代码”,在 SCL 块中构建程序代码并将其分为几个不同区域。
    的头像 发表于 07-31 09:09 4169次阅读

    使用SCL语言开发上升沿或下降沿指令

    沿指令即在程序中用于检测信号的上升沿或下降沿的指令
    的头像 发表于 07-20 14:20 2750次阅读
    使用<b class='flag-5'>SCL</b>语言开发上升沿或下降沿<b class='flag-5'>指令</b>

    西门子博途SCL的GOTO跳转指令

    跳转标签和“跳转”指令必须在同一个块中。在一个块中,跳转标签的名称只能指定一次。每个跳转标签可以是多个跳转指令的目标
    发表于 07-03 14:53 5032次阅读

    博图SCL语言FOR循环的用法及典型案例

    SCL
    YS YYDS
    发布于 :2023年06月25日 00:06:13

    SCL语言for指令的用法

    小文老师说在最前面: 今天来给大家讲一下for这个指令用法,在PLC编程中,能用好for指令,会让我们的开发效率更高,想要更好的调用for指令,我们今天通过这篇文章,几分钟的时间带你严谨的认识一下它!
    的头像 发表于 06-19 14:51 1627次阅读
    <b class='flag-5'>SCL</b>语言for<b class='flag-5'>指令</b>的用法

    新人学习SCL语言,常见的几大误区

    SCL
    YS YYDS
    发布于 :2023年06月18日 23:21:02

    011跟我学:S7-200 SMART 时钟指令概述及应用举例#硬声创作季

    plcSMARTS7-200
    或许
    发布于 :2023年06月07日 11:51:46

    S7-1200跟我学56-7:CPU扩展能力#硬声创作季

    S7-1200
    也许吧
    发布于 :2023年06月01日 09:44:32

    s32k1SIC如何使用浮点指令

    我们有代码在 s32k1SIC 评估板上运行,它使用 s32k146 处理器。代码在浮点数学陷入困境,查看反汇编代码,我发现它没有使用浮点指令。查看处理器手册,我看到
    发表于 05-29 06:53