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

    文章

    202

    浏览量

    66828
  • S7-SCL
    +关注

    关注

    0

    文章

    13

    浏览量

    7949

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    西门子S7-1200和S7-1500 PLC系列模拟量传感器怎么接线

    西门子S7-1200和S7-1500PLC系列模拟量传感器怎么接线,现场看到的4线制,3线制,2线制模拟量传感器接线。
    的头像 发表于 03-06 13:57 1138次阅读
    西门子<b class='flag-5'>S7</b>-1200和<b class='flag-5'>S7</b>-1500 PLC系列模拟量传感器怎么接线

    工业网络跨网段互联:S7/TCP 转 Profinet 实施案例

    项目背景与核心需求 某机械加工企业在智能化产线升级过程,遭遇工控网络 跨网段、跨协议 的通讯壁垒问题,成为制约产线高效运行的核心痛点。该企业控制层采用西门子 S7-1200/1500 系列 PLC
    的头像 发表于 03-04 09:08 1031次阅读
    工业网络跨网段互联:<b class='flag-5'>S7</b>/TCP 转 Profinet 实施案例

    在TIA Portal V21基于S7-1200 G2使用SCL语言设计Modbus RTU轮询程序

    本文介绍在 TIA Portal V21 基于 S7-1200 G2 使用 SCL 语言设计一个 Modbus RTU 轮询程序,完成对 2 个从站的读数据和对 1 个从站写数据的轮询通信任务,用 MThings 软件模拟 3
    的头像 发表于 03-03 15:13 2192次阅读
    在TIA Portal V21<b class='flag-5'>中</b>基于<b class='flag-5'>S7</b>-1200 G2使用<b class='flag-5'>SCL</b>语言设计Modbus RTU轮询程序

    电子工程师必备:TPD7S019 7通道集成ESD解决方案深度剖析

    电子工程师必备:TPD7S019 7通道集成ESD解决方案深度剖析 在电子设备设计,静电放电(ESD)保护一直是一个关键问题,特别是对于VGA和DVI - I接口这类易受ESD影响的端口。今天
    的头像 发表于 12-24 15:50 457次阅读

    西门子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 2235次阅读
    西门子<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扩展浮点指令设计(2)

    写回通用浮点寄存器rd。 实现较为简单,需要注意读出的rs1的值的寄存器来源和写回的寄存器,可单周期实现 2.8 浮点数比大小指令 指令格式 flt.s rd , rs1, rs2
    发表于 10-24 11:56

    蜂鸟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

    天拓四方分享:什么事S7-1200 G2++?

    SIMATIC S7-1200 G2++ 已重磅发布,现已全面开放订货渠道!天拓四方作为西门子紧密合作伙伴,库存储备丰富,能快速响应您的需求。 什么是 S7-1200 G2++? 西门子始终关注
    的头像 发表于 09-05 17:17 1579次阅读

    plc以太网通讯模块实现:S7-200与S7-1200借PPI助力农业自动化发展

    一:S7-200与S71200 在某大型食品加工厂的生产线升级项目中,西门子S7-200与S7-1200的通讯难题一度成为制约生产效率提升的瓶颈。S
    的头像 发表于 08-14 09:41 765次阅读
    plc以太网通讯模块实现:<b class='flag-5'>S7</b>-200与<b class='flag-5'>S7</b>-1200借PPI助力农业自动化发展

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

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