当前位置: 首页 > article >正文

Codesys扩展数据类型Any的探索

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

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 的使用

http://www.kler.cn/a/136957.html

相关文章:

  • B树的实现
  • USDZ格式轻松转OBJ
  • leetcode hot100 将有序数组转化为二叉搜索树
  • vulnhub靶场-matrix-breakout-2-morpheus攻略(截止至获取shell)
  • NI GPIB通讯错误码含义
  • Kubernetes、Docker 和 Docker Registry 关系是是什么?
  • Java WebSocket 获取客户端 IP 地址
  • SAP的一些当说不说的常识
  • KT142C语音芯片搭配HAA2018功放,两个板子,一个声音正常一个没有声音
  • 力扣刷题第二十六天--二叉树
  • seleninum 基础及简单实践
  • Unity 中 TextMesh Pro 认识学习
  • 每天分享五款工具,让大家工作生活更顺心
  • xpath
  • 音视频项目—基于FFmpeg和SDL的音视频播放器解析(十五)
  • ISP概念入门
  • java中的接口
  • 如何提⾼webpack的打包速度?
  • 键鼠自动化2.0树形结构讲解
  • [hive] posexplode函数
  • 外贸ERP系统是什么?推荐的外贸管理软件?
  • Keithley2420吉时利2420数字源表
  • Axios七大特性
  • C++: int转换成LPCSTR
  • JVM入门
  • 一份全面「梳理LLM幻觉问题」的综述