编程语言SCL中ANY数据类型

描述

ANY数据类型

在编程语言 SCL 和 STL 中,如果在块参数中设定了一个 ANY 指针,则任意类型的存储器都可以在块调用时传递。

但是,ANY 指针不能存储有关存储器结构的任何信息。例如,ANY 指针不能保存指向 PLC数据类型变量的信息。ANY 指针将其作为 BYTE 类型的 ARRAY。

ANY 数据类型的参数可以被传递到系统函数块 (SFB) 或系统函数 (SFC)。

下图给出了 ANY 指针的结构:

SCL

在SCL中,能够声明ANY数据类型的变量如下:

作为块的形式参数;当块被调用时,这些参数能用任意数据类型的实际参数提供。

作为临时变量;能够指定任意数据类型的值给这些变量。

能够用下列数据作为实际参数或作为赋值语句的右边部分:

本地和共享变量

在DB中的变量(绝对地址或称号地址)

在本地实例中的变量(绝对地址或称号地址)

NIL常量

指定一个空指针。

ANY数据类型

定时器、计数器和块

指定标识符(如:T1, C20或FB6)。

限制(Restrictions)

ANY数据类型允许用作FB和FC的形式输入参数、输入/输出参数,及FC的输出参数。常量不允许用作其实际参数或用在其赋值语句的右边,除NIL常量外。

当调用FB或FC时,如果将临时变量用作ANY类型的形式参数,不能传递参数到远程块,传递他们时临时变量将失效。

这种类型变量不能用作结构类型的组件类型或作为数组的元素类型。

当调用FC或FB时,如果形式参数作为输入参数声明,只能指定过程输入(%PEW)给ANY类型的形式参数。

当调用FB时,如果形式参数作为输出参数声明,只能指定过程输出(%PAW)给ANY类型的形式参数。

B#16#80 P I/O

B#16#81 I 输入存储区

B#16#82 Q 输出存储区

B#16#83 M 位存储的存储区

B#16#84 DBX 数据块

B#16#85 DIX 背景数据块

B#16#86 L 本地数据

B#16#87 V 先前的本地数据

ANY数据类型举例

Example of the ANY Data Type

VAR_INPUT

iANY : ANY;

END_VAR

VAR_TEMP

pANY : ANY;

END_VAR

CASE ii OF

1:

pANY := MW4; // pANY包含MW4的地址

3..5:

pANY := aINT[ii]; // pANY包含aINT中的第ii个元素的地址;

100:

pANY := iANY; // pANY contains the value of the iANY input variable

ELSE

pANY := NIL; // pANY包含NIL指针的值

END_CASE;

SFCxxx(IN := pANY);

在VASS标准中的应用:

AnyRob_A :ANY;// ANY变量获得机器的发出给PLC的输出地址

pRob_A AT AnyRob_A: STRUCT 扩展分解建立结构体

SyntaxId :BYTE; // Byte 0

DataType :BYTE; // Byte 1 数据/参数类型

DataCount:WORD; // Byte 2+3 变量长度

DBNR :WORD; // Byte 4+5 数据库编号

BZ :DWORD; // Byte 6 bis 10 区域指针

END_STRUCT;

原文标题:西门子SCL -ANY数据类型

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

责任编辑:haq

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分