标签:
无标签
IEC 61131标准数据类型
IEC 61131字符串数据类型
用户自定义的字符串数据类型是具有可变数目的字符的字符串。声明一个用户自定义的字符串时,其长度被放在该数据类型后面的括号内。 字串7
字串3
用户定义字符串数据类型声明的例子。 字串3
TYPE
STRING10 :STRING(10)
END_TYPE
字串7
在这个例子中,字符串的长度是10个字符。
限制:最短的合理字符串长度为1,最长的合理字符串长度为32766。 字串6
IEC 61131结构数据类型
字串9
声明结构 字串5
字串1
结构数据类型包括了同一数据类型或不同数据类型的多个元素。 字串7
TYPE
machine:
STRUCT
x_pos :INT;
y-pos :INT;
depth :INT;
rpm :UINT;
END_STRUCT;
END_TYPE
字串5
在该例子中,结构数据类型‘machine’由x_pos、y_pos、depth和rpm等组分组成。所有的组分都描述了机器的特性。
字串7
编程举例
字串1
在必须要声明描述同一对象的多个数据的情况下,就应该使用结构。例如,一个钻孔机在一个工件上钻多个孔。所有的孔都具有工件上的x和y坐标位置、钻孔深度以及钻孔用的每分钟转数。对各个孔的具体值是不同的,但是所需的变量总是同样的。这种情况下,声明一个由分别用于位置、钻孔深度和每分钟转数的三个组分组成的结构会很有用。对于每个孔,可以给各组分赋不同的值。用于钻孔过程的功能块只需使用作为结构的同一个变量。
字串8
结构数组 字串7
可以在数组内使用结构,如下面的例子所示:
字串5
TYPE
machine:
STRUCT
x_pos :REAL;
y_pos :REAL;
depth :INT;
rpm :INT;
END_STRUCT;
my array :ARRAY[1..10] OF machine;
END_TYPE
一个结构数组的应用例子可能是具有多个钻孔机的转移线。通过数组下标,可以访问具体的钻孔机,并且通过各结构组分,可以分配用于钻孔的不同值。 字串3
带有数组的结构 字串7
可以在结构内使用数组,如下面的例子所示:
字串2
TYPE
graph :ARRAY[1..10] of INT;
drive:
STRUCT
rpm :INT;
inputs :IN_BOOL;
performance :graph;
END_STRUCT;
END_TYPE
初始化结构
字串7
在编辑代码本体声明时,可以通过给各组分赋值的方式,来初始化结构。下图显示了一个例子: 字串1
变量声明:
VAR
var1 :machine;
first :BOOL :=TRUE;
END_VAR
使用ST语言的代码本体声明:
IF first THEN
var1.x-pos := REAL#1.3E+2
var1.rpm := 3000;
...
first := FALSE;
END_IF
...
字串4
IEC 61131数组编程举例 字串4
一个数组应该被典型地用于描述同一主题的数据。让我们想象一个每隔3秒钟就改变一个输入值的过程。有必要保存这些输入值中的每一个,以便将其与所设定点相比较。所有的输入值都具有相同的数据类型。这种情况下,声明一个数组很有用,因为在代码本体声明中,可以用一个循环语句(如FOR循环),容易地比较这两个值。数组的单个组分可以用数组下标来访问。 字串4
字串7
类型声明:
字串7
TYPE
graph :ARRAY[1..23] OF INT;
set_point :ARRAY[1..23] OF INT;
END_TYPE
变量声明:
字串3
VAR
input :graph; (* 机器的输入值 *)
values :set_point; (* 相比较的值 *)
i :INT :=1; (* 用于数组下标的变量 *)
run :BOOL :=TRUE;
ERROR :BOOL;
timer :FB_TIMER; (* 声明FB实例 *)
END_VAR
使用ST语言的代码本体声明: 字串4
timer (pt:=t#3s;in:=run);
IF timer.Q THEN (* 向数组''graph''提供输入值 *)
input[i] := %IW0; (* 给数组赋输入值 *)
run := 0; (* 边沿检测,以便再次启动定时器 *)
i := i+1; (* 更高的数组下标 *)
ELSE
run :=1; (* 递增记数 *)
END_IF;
IF i = 23
FOR i:=1 TO 23 BY 1 DO
IF input[i] <> values[i] THEN (* 比较数组
''graph''和''set point'' *)
ERROR := TRUE;
END_IF;
END_FOR;
i := 1;
END_IF;
字串5
IEC 61131数组数据类型
字串5
声明数组
字串2
字串6
数组数据类型包括同一个数据类型的几个元素。一个数组中的特定元素是通过一个数组下标来定义和访问的。一个数组可用于仅仅在类型声明的一行之内,声明同一类型的几个元素。 字串4
数组数据类型声明的例子:
字串7
TYPE
graph :ARRAY[1..23] OF INT;
END_TYPE 字串6
在本例子中,数据类型‘图形’包括了23个‘INT’数据类型的元素。数组的所有元素都被一个接一个地连续存储在PLC存储器里。 字串9
要想声明一个数组,您首先要在数据类型工作单的类型声明中声明该数组。然后,您就可以在POU的变量工作单中声明变量了(请参考下面的编程示例)。
字串6
多维数组 字串9
如果需要多维数组,则可以使用数组的数组。下图展示了一个数组的数组:
字串9
TYPE
graph :ARRAY[1..10] OF INT;
my array :ARRAY [1..3] OF graph;
END_TYPE
在一个数组的数组中,单个元素是用两个下标来访问的,如下图所示:
字串2
变量声明:
字串1
VAR
var1 :my_array;
var2 :INT;
END_VAR
使用ST语言的代码本体声明:
字串6
var2 := var1[1] [3];
初始化数组 字串2
数组可以被初始化,即:可以对数组中的每个元素赋一个初值。正如上面所描述的那样,每一个元素都是通过其下标来访问的。一个数组的初始化可以在编辑代码本体声明时进行。
字串2
变量声明: 字串6
VAR
graph :ARRAY[1..10] OF INT;
END_VAR
使用ST语言的代码本体声明: 字串2
graph[1]:=7;
graph[2]:=1092;
.
.
.
graph[10]:=13;
不必初始化一个数组的所有元素。如果未使用任何初始值,则数组元素是在启动程序的执行时用默认初值来初始化的。
字串5
字串8
IEC 61131用户自定义数据类型 字串1
用户自定义数据类型,是由应用程序员,利用文本编辑器,通过使用一个TYPE...END_TYPE声明来编辑的。导出数据类型可以是枚举数据类型、结构或数组。
字串7
字串5
数组数据类型包括了一个数据类型的几个元素。一个数组可用于仅仅在类型声明的一行之内,声明同一类型的几个元素。
字串7
结构数据类型包括了不同的数据类型的几个元素。 字串1
用户定义字符串,是具有可变数目的字符的STRING数据类型。声明一个用户自定义的字符串时,其长度在数据类型后面的括号内。 字串1
枚举数据类型将可能值限制在所枚举的元素范围内。使用了该数据类型的变量,只能具有所枚举的值。
字串7
IEC 61131-3中的类属数据类型
字串7
类属数据类型
类属数据类型是包括了基本数据类型的分级组的数据类型。ANY_INT包括DINT、INT、SINT、UDINT、UINT和USINT等基本数据类型。如果一个函数可以与ANY_INT相连,则意味着可以处理DINT、INT、SINT、UDINT、UINT和USINT等数据类型的变量。 字串6
字串3
在下表中显示了类属数据类型:
字串9
ANY
ANY_NUM
ANY_REAL
REAL
ANY_INT
DINT, INT, SINT
UDINT, UINT, USINT
ANY_BIT
DWORD, WORD, BYTE, BOOL
STRING
TIME 字串7
系统分类:
PLC/PAC | 用户分类:
无分类 | 来源:
整理