清楚的了解数据类型是编程必备技能
数据类型分三类:(本篇范扩展数据类型)

规范扩展数据类型
基于IEC 61131-3的标准化扩展
UNION(可以在用户定义类型声明单元)
例子:
      TYPE name: UNION
      a : LREAL;
      b : LINT;
      END_UNION
      END_TYPE
      ANY_TYPE
可以用数据类型ANY_TYPE声明函数的输入。
LTIME
LTIME支持高分辨率定时器的时基。 LTIME大小为64位分辨率纳秒。
句法: 
LTIME#<时间声明>
时间的声明中包含的时间单位用的时间常数:
  "us" : microseconds
  "ns" : nanoseconds
例子: 
   LTIME1 := LTIME#1000d15h23m12s34ms2us44ns
与TIME 相比,它为32 位 ,分辨率毫秒。
WSTRING
标准的字符串类型(ASCII)不同,在于在万国码格式下的获得解读以及每个字符需要两个字节以及2个字节的外加存储空间(一个字符串只需要一个)
例子: 
       wstr:WSTRING:="This is a WString"; 
引用
一个REFERENCE是一个对象的别名 。别名可通过标识符被写或读。指针的差别在于指向的值是直接影响并且引用的分配以及值是固定的。引用的地址必须是通过单独的分配操作设置的。不论一个引用指向一个有效的值(不平等的0)能被通过一个特殊的标识符检查,见以下:“检查引用有效性”
一个引用根据下述语法被声明:
句法: 
      <identifier> : REFERENCE TO <data ty>
声明例子: 
     ref_int : REFERENCE TO INT; 
     a : INT; 
     b : INT; 
ref_int现已被用作INT类型的变量的别名。 
使用例子: 
     ref_int REF= a;   (* ref_int now points to a *) 
     ref_int := 12;    (* a now has value 12 *) 
     b := ref_int * 2; (* b now has value 24 *) 
     ref_int REF= b;   (* ref_int now points to b *) 
     ref_int := a / 2; (* b now has value 6 *) 
     ref_int REF= 0;    (* explicit initialization of the reference *) 
 检查引用有效性 
运算符 "__ISVALIDREF" 能被用于检查一个引用是否指向有效值,这个值是不等于0的。
句法: 
<boolsche Variable> := __ISVALIDREF(identifier, declared with type <mit REFERENCE TO <datatype>);
<boolean variable>如果引用指向一个有效值,其为真否则为假。
例子: 
声明:
       ivar : INT; 
       ref_int : REFERENCE TO INT; 
       ref_int0: REFERENCE TO INT; 
       testref: BOOL := FALSE; 
执行:
       ivar := ivar +1; 
       ref_int REF= hugo; 
       ref_int0 REF= 0; 
       testref := __ISVALIDREF(ref_int);  (* will be TRUE, because ref_int points to ivar, which is unequal 0 *) 
       testref0 := __ISVALIDREF(ref_int0);   (* will be FALSE, because ref_int is set to 0 *) 
指针
当一个应用程序运行的时候,指针可以保存变量、程 序、功能块、方法和函数的地址。指针可以指向上述 罗列的任何对象或者任何数据类型的变量。 ( 数据类型, 一般) 指针甚至可以 指向用户定义的数据类型 用户定义的数据类型。
指针申明的语法: 
<identifier>: POINTER TO <data type | function block | program | method | function>; 
指针的实现意味着获得存储在指针所指向的地址中的当前值。指针被定义以后,通过 内部操作符 "^"指针可以实现 ; 参见下述事例“pt^”的例子。地址操作符 ADR 可 以用来分配指针变量的地址。 
示例 
VAR
       pt:POINTER TO INT;  (* Declaration of pointer pt *)
       var_int1:INT := 5;  (* Declaration of the variables var_int1 and var_int2 *)
       var_int2:INT;
       END_VAR
       pt := ADR(var_int1); (* Address of varint1 is assigned to pointer pt *)
       var_int2:= pt^;      (* Value 5 of var_int1 is assigned to var_int2 by dereferencing the pointer pt *)
 函数指针 
对比 CODESYS V2.3 ,取代INDEXOF操作符的函数指针 t也是可行的。这些指针可以被传递给外部的函数库, 但 不可能调用编程系统中应用程序的函数指针 !注册回调函数(系统库函数)的运行函数与函数指针相关 ,并且取决于为 其请求注册的回调函数,各自的功能将由运行时系统 隐性地调用。(见STOP处示例) 为了 确保有这样的系统调用 (运行系统) ,相应的 函数对象property (category "Build") 必须进行设置。 
ADR操作符可以用在函数名、程序名、功能块名和方法名。 见 ADR。 由于函数 可以在实时改动后移动,所得的结果不是函数的地址, 而是指向函数的指针的地址。只要函数存在于目标系 统中,那么该地址就是有效的。
指针的索引访问 
基于 IEC 61131-3 标准化扩展 索引访问 "[]" 可 以是指针型变量、字符串型变量或者WSTRING型变量。 见 字符串 or WSTRING。
    pint[i] 返回基本的数据类型 
    指针的索引访问是数学形式的:如果索引访问被用于 POINTER TO型的变量,偏移量可以这样计算: pint[i] = (pint + i * SIZEOF(base type))^索引访问也可以通过指针隐式实现。结果的类型是该指针的基本类型。注意 pint[7] != (pint + 7)^! 
    如果索引访问用于字符串类型的变量,字符是通过偏 移索引表达式获得的。该结果的类型是字节类型的。str[i]将会以有符号整型(ASCII)返回字符串的第i 个字符。 
    如果索引访问是用于WSTRING类型的变量,字符是 通过偏移索引表达式获得的。该结果的类型是字类型的。wstr[i]将会以整型(Unicode)返回字符串的第i 个字符。 
检查指针功能 
为反映运行期间指针的访问情况,你可以在每次访问 指针的地址前使用隐式监控功能也称 CheckPointer 。 在帮助对话框下,此功能已经作为 POUs 的隐式检查的对象被整合到应用中 添加对象。当你标记复选框的类型为CheckPointer后, 选择一 种执行语言并确认你的设置为选择一 种执行语言并确认你的设置为 Open,检查功能将 在相应的编辑器中打开。声明部分预设为所有语言, 不得进行修改!只有一个例外情况是允许的:增加本 地变量。然而与其它的检查功能进行对比, CheckPointer没有默认的执行;执行是留给用户做的! 
CheckPointer 的功能是检查传递的指针是否指向一个 有效的地址,即保留在有效的存储范围内,并且所引 用的存储器区域的取向是否与指针所指向的变量的数 据类型相符合。如果满足所有的条件 ,CheckPointer 返回没有变化的输入指针。否则,其其应该 执行一个适当的错误处理程序。 
声明部分: 
// Automatically generated code : DO NOT EDIT
FUNCTION CheckPointer : POINTER TO BYTE 
VAR_INPUT
    ptToTest : POINTER TO BYTE;
    iSize : DINT;
    iGran : DINT;
    bWrite: BOOL;
END_VAR
实现部分: (不完全!): 
// No standard implementationFill in your own code here
CheckPointer := ptToTest;

当被调用时,函数接收下面的输入参数: 
    ptToTest:指针的目标地址 
    iSize:参考变量的长度:其数据类型一定是兼容整数 的, 并且必须包含储存在指针地址中最大可能的数据 长度。 
     iGran: 访问的粒度,也就是用于参考变量中最大的非 标准数据类型;其数据类型一定是兼容整数的。 
    bWrite:访问的类型(真=写访问,假=读访问);其 数据类型一定是布尔类型。 
如果是一个肯定的检查结果,未修改的输入指针将返 回 (ptToTest)。
BIT
BIT 数据类型只能用于在 结构中的特殊变量。可能的值是TRUE (1)和FALSE (0)。一个 BIT 元素消耗 1 位内存,并且允许处理名称结构的单独位,参见 结构中的Bit 访问。Bit 元素为一个接着一个的声明,将被合并在字节中。所有与 布尔类型相比,在任何情况下都保留 8 位,内存的使用将得到优化。需注意另一方面,方位位将需要更多时间! 所以他只在你想要在一个特定的格式下定义数据时建议使用BIT数据类型。

CODOSYS之结构化文本(ST)—— 初级篇(四)基础-数据类型相关推荐

  1. CODOSYS之结构化文本(ST)—— 初级篇(三)基础-数据类型

    清楚的了解数据类型是编程必备技能 数据类型分三类:(这篇文章只讲标准数据类型,下篇文章会讲规范扩展数据类型与自定义数据类型) 标准数据类型 所有被标准 IEC61131-3描述的 数据类型, 一般 都 ...

  2. st语言 数组的常用方法_欧姆龙cp1h常用指令学习(九)结构化语言ST

    结构化语言ST是作用于功能块编程中. 这门语言对于梯形图中不善于处理的数值运算等逻辑算法,采用类似于高级语言的语法,使其变得简单. 下面先从功能块的相关知识说起: CP1H的功能块规格: 功能块定义数 ...

  3. Rockwell 罗克韦尔AB Logix 5000控制器 结构化文本语言(ST) 梯形图(LD)顺序功能图(SFC)功能块图(FBD) IEC 61131-3 手册

    Logix 5000 Controllers IEC 61131-3 Compliance 1756 ControlLogix, 1756 GuardLogix, 1769 CompactLogix, ...

  4. st计算机编程语言,ST(结构化文本语言(ST))_百度百科

    ST (结构化文本语言(ST)) 语音 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 结构化文本/结构式文件编程语言(英语:Structured ...

  5. 三菱FX3U PLC使用ST结构化文本与梯形图编写的4个仓位配方程序

    三菱FX3U PLC使用ST结构化文本与梯形图编写的4个仓位配方程序 程序功能简介: 1.可以随意在触摸屏中设置添加,删除,更改配方,最多可以设置10000种不同配方, 2.通过设置配方编号,和设置生 ...

  6. PLC结构化文本设计模式和算法

    前言 . 目前PLC应用学科并没有设计模式方面的教程,导致学员解题都得从零开始设计.梯形图无法发挥出PLC的真正功能,所以我们需要以结构化文本来实现设计模式.本文以普及结构化文本为目的,将教大家结构化 ...

  7. python文本结构化处理_在Python中标记非结构化文本数据

    python文本结构化处理 Labelled data has been a crucial demand for supervised machine learning leading to a n ...

  8. 使用爬虫爬取两种数据:结构化/非结构化文本

    一.非结构化文本的爬取 微博上有一篇关于"#学校里的男生有多温柔#"的话题,点进去一看感觉评论很真实,于是想把评论给爬下来看一看,并生成词云.刚开始思路是通过网页端微博爬取,通过开 ...

  9. access“idno”字段改为文本型_结构化文本计算示例(一)

    结构化文本是很常见的文件格式,对结构化文本的计算也是很常见的需求.在实现这种计算时,一种很容易想到的办法是将文件导入数据库后再计算,但这会消耗大量时间以及昂贵的数据库资源,而且有的场合下并没有合适的数 ...

最新文章

  1. 写一个函数,2 个参数,1 个字符串,1 个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码
  2. 通过XmlDocument读写Xml文档(转)
  3. silverlight, 双击事件
  4. Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()的使用
  5. codeforces MUH and Cube Walls
  6. 7-10 逆波兰表达式求值 (20 分)(c语言)(数据结构)
  7. 如何部署Zabbix服务端
  8. 前端基础_认识前端.md
  9. 在Ubuntu上安装Git
  10. 不拘一格!清华将致力于培养顶尖数学家
  11. Jeff Dean谈2020年机器学习趋势:多任务和多模态会有大进展
  12. 为什么h5上传服务器只显示图片,【Web前端问题】怎么把图片从前端上传到服务器?...
  13. RabbitMQ-理解消息通信-虚拟主机和隔离
  14. 安装deb软件包时出现Unknown media type in type **/** 的解决办法
  15. 不要STUPID,坚持GRASP和SOLID
  16. 见证边缘的力量!全球边缘计算大会•上海站顺利召开!
  17. Python中super()函数简介及用法分享
  18. python: 七段数码管
  19. uva 12325(宝箱, 枚举问题);
  20. 快速修复IE浏览器方案

热门文章

  1. matlab在能量守恒中的应用,MATLAB在《大学物理》课程实践教学中的应用分析
  2. 鸿蒙合香丸是治胃的吗,何任大师治胃病的三个独家良方
  3. 【UnityShader】光线追踪体积光
  4. 2022-2027年中国气体灭火设备市场规模现状及投资规划建议报告
  5. 几个有用的谷歌Chrome插件
  6. ERNIE1.0 与 ERNIE2.0 论文解读
  7. layui 弹出层回调获取弹出层数据
  8. 异常值 识别与处理方法
  9. 使用 MoveIt 控制自己的真实机械臂【2】——编写 action server 端代码
  10. OllyDbg使用方法