Codesys扩展数据类型Any的探索

Codesys代码代写,程序开发,软件定制,bug修改,问题咨询: TAO宝搜索店铺【林磊教育】

ANY 定义

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

c 复制代码
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 是一个结构体类型,其定义说明如下

名字 数据类型 描述
ByteAddress DWORD 字节地址
ByteOffse DWORD 地址偏移量: 如果是全局变量,其值是相对于该区域的起始地址 ;如果是函数或方法的局部变量,其值是相对于当前堆栈,如果是功能块中的局部变量,其值是相对于功能块的起始地址
Area DINT 内存区域编号: -1 表示实例或者堆栈中变量
BitNr INT 位数;如果不是正数数据类型,其值我-1(16#FFFF)
BitSize INT 变量内存的大小 (以位为单位)
BitAddress UDINT 变量的位地址;该变量位必须位于输入、输出,中间存储区
TypeClass Type_Class 变量的数据类型
TypeName string 变量的数据类型(字符串显示)
NumElements UDINT 数组元素的个数,变量数据类型必须是ARRAY
BaseTypeClass Type_Class 数组元素变量的基本数据类型,变量数据类型必须是ARRAY
ElemBitSize UDINT 数组元素变量的基本数据类型大小(以位为单位),变量数据类型必须是ARRAY
内存区域 MEMORY_AREA 有关存储区的信息:MEM_GLOBAL: 全局内存区域;MEM_LOCAL: 本地内;MEM_MEMORY: 标记存储区%M;MEM_INPUT: 输入存储区%I ;MEM_OUTPUT: 输出存储区%Q;MEM_RETAIN: 保持存储区
Symbol STRING(39) 变量名:例如'iValue'
Comment STRING(79) 变量注释:例如'this is nums of array'
ANY 的使用
相关推荐
绝知此事3 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
LuminousCPP5 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
AI算法沐枫5 小时前
深度学习python代码处理科研测序数据
数据结构·人工智能·python·深度学习·决策树·机器学习·线性回归
m0_629494737 小时前
LeetCode 热题 100-----26.环形链表 II
数据结构·算法·leetcode·链表
壹号用户7 小时前
用队列实现栈
数据结构·算法
欧米欧9 小时前
C++进阶数据结构之搜索二叉树
开发语言·数据结构·c++
小江的记录本9 小时前
【Java基础】反射与注解:核心原理、自定义注解、注解解析方式(附《思维导图》+《面试高频考点清单》)
java·数据结构·python·mysql·spring·面试·maven
Trouvaille ~9 小时前
【Redis篇】初识 Redis:特性、应用场景与版本演进
数据结构·数据库·redis·分布式·缓存·中间件·持久化
向日的葵00611 小时前
从IO视角深度对比:BST、红黑树、B树、B+树
数据结构·b树
小羊在睡觉12 小时前
力扣239. 滑动窗口最大值
数据结构·后端·算法·leetcode·go