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

    文章

    199

    浏览量

    66553
  • S7-SCL
    +关注

    关注

    0

    文章

    13

    浏览量

    7904

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    西门子S7-1500 PLC和S7-300 PLC Profibus-DP通讯的组态实例

    本文就以改造一套以西门子S7-300 317-2DP PLC(6ES7 317-2AJ10-0AB0 V2.1)为控制核心的电气控制系统为例,介绍使用S7-1500 1513-1PN PLC带
    的头像 发表于 11-25 14:27 575次阅读
    西门子<b class='flag-5'>S7</b>-1500 PLC和<b class='flag-5'>S7</b>-300 PLC Profibus-DP通讯的组态实例

    浮点指令(三)

    浮点指令以及简单解释 fcvt.s.d fcvt.s.d rd, rs1, rs2//f[rd] = f32f64(f[rs1]) 双精度向单精度浮点转换(Floating-point
    发表于 10-24 13:38

    蜂鸟E203扩展浮点指令设计(1)

    , rs2 fdiv.s rd, rs1, rs2 fsqrt.s rd, rs1 • fadd.s指令将操作数寄存器rs1和rs2的单精
    发表于 10-24 10:00

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

    单独访问,frrm/fsrm伪指令用于单独访问fcsr的frm域,frflags/fsflags伪指令可以单独访问fcsr的fflags域。fcsr31-8位进行保留,以便后续扩展,7
    发表于 10-22 08:18

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

    指令取代对应的宽指令由它们决定。 为了能在一系列的程序上得到良好的代码压缩效果, RISC-V 架构师精心挑选了 RVC扩展指令。同时,基于以下的三点观察,架构师们成功地将
    发表于 10-20 11:02

    模拟I2C通信失败,出现SCL、SDA line low错误怎么解决?

    使用模拟I2C读写电量芯片时出现SCL SDA Line low err.7位从设备地址确定没有设置错
    发表于 09-26 07:58

    MPI 转以太网模块案例:西门子 S7-300PLC 借此与 S7-1200、触摸屏及 ModbusRTU 变频器通讯

    一、项目背景与痛点 在新能源储能系统集成场景,某锂电池生产线采用西门子S7-300PLC作为本地控制器,通过MPI/DP接口连接西门子TP1200Comfort触摸屏实现本地操作。随着智能化升级
    的头像 发表于 07-30 10:02 543次阅读
    MPI 转以太网模块案例:西门子 <b class='flag-5'>S7</b>-300PLC 借此与 <b class='flag-5'>S7</b>-1200、触摸屏及 ModbusRTU 变频器通讯

    S7-300借MPI转以太网联控S7-1200、HMI及Modbus变频器方案

    在新能源储能系统集成场景,某锂电池生产线采用西门子S7-300PLC作为本地控制器,通过MPI/DP接口连接西门子TP1200Comfort触摸屏实现本地操作。随着智能化升级需求,需将S7
    的头像 发表于 07-26 16:20 500次阅读
    <b class='flag-5'>S7</b>-300借MPI转以太网联控<b class='flag-5'>S7</b>-1200、HMI及Modbus变频器方案

    NVME控制器设计之指令控制

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

    S7-1200与欧姆龙智能仪表Modbus通信案例

    从站为例,使用SCL编程语言编写S7-1200实现对欧姆龙智能温控仪表的当前温度值的读取和修改设定温度值。
    的头像 发表于 03-27 17:25 1764次阅读
    <b class='flag-5'>S7</b>-1200与欧姆龙智能仪表Modbus通信案例

    东风本田S7正式下线

    2月25日,东风本田S7下线活动在东风本田新能源工厂新能源总装科举行。
    的头像 发表于 02-26 10:19 772次阅读

    使用SCL编写FIFO功能块

    一、 导读    前几天一位搞电气的朋友问S7-1200如何做个先入先出的功能,说原来用S7-200SMART的时候有填表指令和FIFO指令
    的头像 发表于 02-09 10:27 1157次阅读
    使用<b class='flag-5'>SCL</b>编写FIFO功能块

    RISC-V基础指令详解

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

    西门子S7-300 PLC的详细介绍

    S7-300是德国西门子公司生产的PLC系列产品之一,以下是关于S7-300 PLC的详细介绍: 一、产品特性 模块化结构:西门子S7-300 PLC采用模块化设计,用户可以根据实际需求选择
    的头像 发表于 12-10 18:18 3078次阅读
    西门子<b class='flag-5'>S7</b>-300 PLC的详细介绍

    西门子PLC S7-1500系列介绍

    西门子PLCS7-1500系列是西门子自动化领域中的一款重要产品,它以其卓越的性能、强大的功能和高度的灵活性,在工业自动化控制系统占据了一席之地。本文将详细介绍西门子PLC S7-1500系列
    的头像 发表于 12-09 18:23 4361次阅读
    西门子PLC <b class='flag-5'>S7</b>-1500系列介绍