登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:[分享]什么是IEC 61131?-- 已降低阅读标准

点击:66079 回复:335

[replyview]下表显示了可供使用的日期和时间(Date and time of day)直接量:
类型 例子
日期 DATE#1996-01-24
date#1996-01-24
D#1996-01-24
d#1996-01-24
时间 TIME_OF_DAY#15:36:55.36
time_of_day#15:36:55.36
TOD#15:36:55.36
tod#15:36:55.36
日期和时间 DATE_AND_TIME#1996-01-24-15:36:55.36
date_and_time#1996-01-24-15:36:55.36
DT#1996-01-24-15:36:55.36
dt#1996-01-24-15:36:55.36
[/replyview]
05-02-04 11:33
IEC 61131-3中的变量
根据IEC 61131-3,将变量用于编程,取代直接地址的输入、输出或标志。IEC 61131-3中描述了变量的不同类型:
符号变量
直接表示的变量
定位了的变量
必须使用关键字,在POU变量工作单中声明变量。
05-02-04 11:34
[Post=45]在变量声明中,必须使用变量声明关键字。下表中描述了这些关键字:
关键字 描述
VAR 用于只能在POU内部使用的内部变量
用于声明功能块的实例
可用于直接表示、定位和符号变量的声明
可以与‘RETAIN’关键字一起,用于声明保持型变量

VAR_INPUT 用于函数、功能块和程序的输入变量
赋给POU一个诸如来自另一个POU的值
其值只在该POU内被读取
可以仅用于符号变量的声明

VAR_OUTPUT 用于函数、功能块和程序的输出变量
为诸如其它POU提供一个输出值
其值在该POU内被写入
也允许读取此值
可以与‘RETAIN’关键字一起,用于声明保持型变量

VAR_IN_OUT 该变量的地址由引用来传递
可以读取或写入该变量
典型地用于复杂的数据类型,例如字符串、数组和结构

VAR_EXTERNAL 用于该POU内的全局变量
其值由VAR_GLOBAL的声明来提供
可以在此POU内部修改其值
可以仅用于符号变量的声明

VAR_EXTERNAL_PG 用于该程序内的全局变量
其值由VAR_GLOBAL_PG的声明来提供
无法被初始化
可以在此程序内部修改其值
可以仅用于符号变量的声明

VAR_EXTERNAL_FB 用于该功能块内的全局变量
其值由VAR_GLOBAL_FB的声明来提供
无法被初始化
可以在此功能块内部修改其值
可以仅用于符号变量的声明

VAR_GLOBAL 用于可用于该工程的所有程序和功能块中的全局变量
可用于直接表示、定位和符号变量的声明
可以与‘RETAIN’关键字一起,用于声明保持型变量

VAR_GLOBAL_PG 用于可用于该工程的所有程序中的全局变量
可用于直接表示、定位和符号变量的声明
可以与‘RETAIN’关键字一起,用于声明保持型变量

VAR_GLOBAL_FB 用于可用于该工程的所有功能块中的全局变量
可用于直接表示、定位和符号变量的声明
可以与‘RETAIN’关键字一起,用于声明保持型变量

END_VAR 完成一个变量声明块

除了这些关键字,还有另外两个关键字,可用于变量声明:用于保持型变量的RETAIN,和用于直接表示的和定位的变量的AT关键字。
根据不同的变量类型,各变量声明在其结构上也各不相同。变量声明既可以在每个POU的变量工作单内完成,也可以在全局变量工作单内完成。
在资源的全局变量声明中,全局变量必须要用VAR_GLOBAL来声明,而在POU的变量声明中,必须要用VAR_EXTERNAL来声明。
VAR_GLOBAL_PG、VAR_GLOBAL_FB、VAR_EXTERNAL_PG和VAR_EXTERNAL_FB等关键字是对IEC的扩充。
[/Post]
最后修改:2005-11-8 22:34:08
05-02-04 11:35
[Post=60]每个变量的范围都取决于对变量关键字的使用,既可以局限于一个POU,也可以适用于整个工程。因此可以区分两种类型:
局部变量
全局变量
如果一个变量仅能用于某个POU内部,则它被称为局部变量。这种情形下,必须使用VAR、VAR_INPUT和VAR_OUTPUT等变量关键字。
如果某个变量可用于整个工程,则它被称为全局变量。必须要在全局变量声明中,用VAR_GLOBAL来声明它,并且在每个使用它的POU中,用VAR_EXTERNAL来声明它。
将所有的I/O都声明为全局变量可能会很有用。在全局变量声明中,它们应该被声明为定位变量,而在POU的VAR_EXTERNAL声明中它们应该被声明为符号变量。这样做会使得改变了地址的情况下,只有较少的键盘录入工作。
[/Post]
最后修改:2005-11-8 22:35:01
05-02-04 11:36
[Post=65]符号变量是用一个符号名字和一个数据类型来声明的。其初始值是可选的。
编程系统将变量保存到对用户是未知的PLC存储器的空闲存储区域内。
下面的例子显示了两种符号变量的变量声明:
VAR
var1   :BOOL;
var2   :INT (-22..12);
END_VAR
可以用‘RETAIN’关键字,将符号变量初始化并且/或者声明为保持型变量。
[/Post]
最后修改:2005-11-8 22:35:29
05-02-04 11:37
[Post=300]直接表示的变量是用逻辑地址而不用符号名称来声明的。
定位的变量是用一个符号名称和一个逻辑地址来声明的。
直接表示的变量和定位的变量都被存储在所声明的逻辑地址,并且由应用程序员来检查没有内存地址被使用了两次。
定位声明由关键字AT、百分号"%"、位置前缀、尺寸前缀和逻辑地址名称组成。
可以在全局变量工作单内使用VAR_GLOBAL,或者在程序中,来声明直接表示的和定位的变量。
下表显示了用于直接表示的和定位的变量的位置和尺寸前缀:
位置前缀 描述
I 物理输入
Q 物理输出
M PLC存储器内的物理地址
尺寸前缀 描述
X 单个二进制位尺寸(仅用于BOOL数据类型)
无 单个二进制位尺寸
B 字节尺寸(8位)
W 字尺寸(16位)
D 双字尺寸(32位)
L 长字尺寸(64位)
下面的例子显示了直接表示的和定位的变量声明:
VAR
var1    AT %QX 2.4    :BOOL;
var2    AT %IW4    :WORD;
AT %QB 7    :BYTE;
END_VAR
[/Post]
05-02-04 11:39
[replyview]保持型变量是即使关掉电源仍能保存其值的变量。在暖启动的情况下,将使用该变量的最新值。
保持型变量是用RETAIN关键字来声明的,如下面的例子所示:
VAR RETAIN
var1   :BOOL    :=TRUE;
END_VAR
在这个例子中,变量拥有初始值‘TRUE’,这是用于冷启动的初始值。在暖启动情况下,使用变量的当前值。
RETAIN关键字可以与VAR、VAR_OUTPUT、和VAR_GLOBAL等关键字组合使用。不能用VAR_INPUT和VAR_EXTERNAL等关键字来声明保持型变量。
请注意观察那些关于途径的信息,编程系统在下装或修补工程并执行一个PLC暖启动时,将处理变化了的或者新插入的保持型变量。
[/replyview]
05-02-04 11:40
[replyview]根据IEC 61131-3,可以给变量赋初值。这意味着,在PLC程序中,第一次使用某个变量时,会使用其初始值。除了在VAR_EXTERNAL声明内部,可以给各种变量赋初值。
初始值必须用‘:=’插入到变量声明行的末尾,如下面的例子所示:
VAR
var1   :INT := 28;
var2   :TIME := T#1s;
var3   :AT%QX0.0 := TRUE;
END_VAR
不能初始化那些定位于物理输入的变量。
初始值必须符合数据类型。例如,不能对BOOL数据类型使用初始值‘5’。在这种情形下,系统会显示一条出错信息。
初始值是可选的。如果没有使用初始值,则用该数据类型的默认初值初始化该变量,或者在保持型变量情况下,用所保持的值来初始化该变量。
[/replyview]
05-02-04 11:41
[Post=80]IEC 61131-3定义了5种编程语言的语法,定义了确定的表示法,并描述了可用于各语言中的不同元素。
编程语言可以由实际外观而分为2种文本语言和3种图形语言。
文本语言包括指令表(IL)和结构化文本(ST)。
图形语言包括功能块图(FBD)、梯形图(LD)和顺序功能图(SFC)。
[/Post]
最后修改:2005-11-8 22:36:17
05-02-04 11:42
[Post=800]指令表 - IL
一个用文本语言IL编程的代码本体包括了一个指令序列。每条指令都从一个新行开始。每一行的前面显示了一个行号。
下图显示了一个简单的IL指令序列的例子:
LD        var1    (* 将操作数加载到累加器中 *)
AND        var2    (* 用操作数处理累加器 *)
ST        var3    (* 将累加器的值存入存储器 *)
每一行从一个操作符开始,后面跟着一个操作数。而且,可以用修饰符:
IL中的操作数可以是变量、直接量或功能块实例名称。操作数是与指令中的操作符或函数一起来使用的。
语法加亮是指用颜色来表示不同元素:操作符及其修饰符为蓝色;变量和操作数为黑色;注释为绿色。
在IL代码本体中,可以使用跳转。下图显示了一个跳转及其标号的使用方面的一个例子:
LD   var1
EQ    INT#100
JMPC    label
LD    var2
ADD    var3
ST   var4
label:LD    %IX2.2
一个标号标记了在您使用了一个跳转的情况下所要处理的行。它在行的开始处表示,并由一个冒号与指令分开。
在IL代码本体中,可以用星号和括号来插入注释。您可以在各行末尾或在一个新行中添加注释。注释在星号和括号内表示,如下面例子所示:
(* 这是一条注释 *)
注释对您的程序本身没有任何意义。它们仅仅是为了便于您更好地理解而添加注解的一种可能性。
[/Post]
05-02-04 11:43

上一页 下一页

工控新闻

更多新闻资讯