Codesys数据结构:扩展数据类型Any的探索

ANY 定义

Any内部是一个数据结构体,在定义一个Any变量时,内部会转成其结构体,定义如下

TYPE Any : 
STRUCT
        // 实际参数的类型
    typeclass : __SYSTEM.TYPE_CLASS ;
        // 指向实际参数的指针
    pvalue : POINTER TO BYTE;
        // 指针指向的数据大小
    diSize : DINT;
END_STRUCT
END_TYPE
(1) __SYSTEM.TYPE_CLASS的定义

TYPE_CLASS是变量的数据类类型,对于用户自定义的数据类型或者功能块实例,其值是 TYPE_USERDEF;

(2) TYPE_CLASS的获取运算符 ‘_VARINFO’

‘_VARINFO’ 运算符是符合IEC61131-3标准的扩展,该运算符返回变量的信息 __SYSTEM.VAR_INFO

(3) __SYSTEM.VAR_INFO的定义

__SYSTEM.VAR_INFO 是一个结构体类型,其定义说明如下

名字数据类型描述
ByteAddressDWORD字节地址
ByteOffseDWORD地址偏移量: 如果是全局变量,其值是相对于该区域的起始地址 ;如果是函数或方法的局部变量,其值是相对于当前堆栈,如果是功能块中的局部变量,其值是相对于功能块的起始地址
AreaDINT内存区域编号: -1 表示实例或者堆栈中变量
BitNrINT位数;如果不是正数数据类型,其值我-1(16#FFFF)
BitSizeINT变量内存的大小 (以位为单位)
BitAddressUDINT变量的位地址;该变量位必须位于输入、输出,中间存储区
TypeClassType_Class变量的数据类型
TypeNamestring变量的数据类型(字符串显示)
NumElementsUDINT数组元素的个数,变量数据类型必须是ARRAY
BaseTypeClassType_Class数组元素变量的基本数据类型,变量数据类型必须是ARRAY
ElemBitSizeUDINT数组元素变量的基本数据类型大小(以位为单位),变量数据类型必须是ARRAY
内存区域MEMORY_AREA有关存储区的信息:MEM_GLOBAL: 全局内存区域;MEM_LOCAL: 本地内;MEM_MEMORY: 标记存储区%M;MEM_INPUT: 输入存储区%I ;MEM_OUTPUT: 输出存储区%Q;MEM_RETAIN: 保持存储区
SymbolSTRING(39)变量名:例如‘iValue’
CommentSTRING(79)变量注释:例如‘this is nums of array’
ANY 的使用

请添加图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值