IEC611313PLC学习笔记.docx
《IEC611313PLC学习笔记.docx》由会员分享,可在线阅读,更多相关《IEC611313PLC学习笔记.docx(58页珍藏版)》请在冰豆网上搜索。
IEC611313PLC学习笔记
IEC611313PLC学习笔记
IEC61131-3规定了可编程控制器编程语言的 语法 和 语义 。
这一套统一的编程语言分如下两类:
1.两种文本语言。
IL(InstructionList) 和 ST(StructuredText)
2.两种图形语言。
LD(LadderDiagram) 和 FBD(FunctionBlockDiagram)
顺序功能图(SFC)元素 用来结构化描述可编程控制器程序和功能块的内部组织。
配置元素 用来支持将可编程控制器程序安装到可编程控制器系统中。
符合 IEC61131-3的可编程控制器程序应满足如下要求:
1.对于特定的语言,只使用该标准规定的特性。
2.不使用语言的扩展特性。
3.不依赖于对 实现相关 的任何特别解释。
概述
定义
聚集 :
数据对象结构化的收集所形成的数据类型。
赋值 :
给定变量或 聚集 值的机制。
数据类型 :
取值的集合以及允许的操作集合。
声明 :
建立 语言元素 定义的机制。
分隔符 :
用来分隔程序语言元素的字符或字符的组合。
求值 :
在程序执行期间,为表达式、功能、网络或功能块的输出确定值的过程。
直接量 :
直接表示一个值的词法单元。
保持的数据 :
以某种方式存储,在经过断电/通电序列后,能保持值不变的数据。
语义 :
编程语言的符号元素之间的关系,它们的含义、解释以及使用。
软件模型
在可编程控制器软件模型中, 配置 是对应于可编程控制器系统的语言元素, 资源 则对应于信号处理功能及其人机接口、传感器-执行器接口(如果有的话)。
一个 配置 包含一个或更多的 资源 ,每个 资源 包含一个或更多的 程序 。
而程序的运行受零个或更多 任务 的控制, 程序 可能包含零个或更多 功能块 或其他语言元素。
通信模型
1.在同一程序内,通过直接将一个程序元素的输出连接到另一个程序元素的输入,完成变量间的通信。
2.在同一配置中的程序之间,变量的值可以通过全局变量来通信。
3.使用通信功能块,变量的值可以在同一程序的不同部分之间、同一或不同配置的不同程序之间、可编程控制器程序和非可编程控制器系统之间进行通信。
4.此外,可编程控制器或非可编程控制器系统间通过 访问路径 传输数据。
程序设计模型
可编程控制器编程语言元素有如下的分类:
∙数据类型和变量
∙程序组织单元:
功能、功能块、程序
∙顺序功能图(SFC)元素
∙配置元素:
全局变量、资源、任务、访问路径
这些元素的组合应遵守下列规则:
1.导出数据类型的声明可以使用标准数据类型(包括基本数据类型和一般数据类型)、先前导出的任何数据类型。
2.导出功能的声明可以使用标准或导出数据类型、标准功能、先前导出的任何功能。
该声明可以使用IL,ST,LD,FBD语言。
3.导出功能块的声明可以使用标准或导出数据类型和功能、标准功能块、先前导出的任何功能块。
该声明可以使用IL,ST,LD,FBD语言和SFC元素。
4.程序声明可以使用标准或导出数据类型、功能和功能块。
该声明可以使用IL,ST,LD,FBD语言和SFC元素。
5.通过配置元素,可以将程序组合形成配置。
共同元素
字符的使用
文本/图形语言 字符集 定义在ISO-646IRV中,同时有其他字符集的扩展,如ISO10646-1定义的“拉丁-1补充”。
标识符 是由字母、数字、下划线组成的字符串,并且由字母或下划线开始。
∙可编程控制器编程语言是大小写不敏感的。
∙标识符中的下划线是有意义的,然而多个连续的下划线是不允许的。
∙标识符至少应支持6个字符。
注释 是在程序中引入文本的语言构造,并且对程序的执行没有影响。
在可编程控制器语言中,注释的分隔符为(* 和 *)。
嵌套的注释将被当做 错误 。
编译指示 是在程序组织单元中引入文本的语言构造,并且可能会对程序执行前的准备产生影响。
在可编程控制器语言中,编译指示的分隔符为{ 和 }。
数据的外部表示
数字直接量
有两种数字直接量:
整数和实数。
数字直接量定义为十进制数或其他基底的数。
在数字直接量中,插在数字间的单个 _ 是没有意义的,其他下划线的使用都是不允许的。
示例:
-120123_456+986
-12.00.00.45603.14159_26
-1.34E-12or-1.34e-12
16#FFor16#ff(十进制255)
FALSETRUE
UINT#16#9AFDINT#5
字符串直接量
字符串直接量包括单字节和双字节编码的字符。
单字符 字符串以'分隔,$与随后的两位16进制数表示8位字符码。
双字节 字符串以"分隔,$与随后的4四位16进制数表示16位字符码。
$与随后的一个字符表示转移。
示例:
'''A''$'''ÄË'=='$C4$CB'
"""A""$"""ÄË"=="$00C4$00CB"
STRING#'OK'==WSTRING#'OK'
转义列表
组合
解释
$$
美元符号
$'/$"
引号
$L/$l
换行
$N/$n
新行
$P/$p
换页
$R/$r
回车
$T/$t
制表符
时间直接量
有两类的时间直接量:
1.持续时间 来度量或控制一个控制事件消耗的时间。
2.时间点 (可以包括日期)来同步控制事件的开始或结束。
o可选的单个_可以用来分隔不同的时间单位。
o持续时间的最大单位允许“溢出。
o最小单位可以是不含指数的实数。
关键字
持续时间
时间点
全拼
TIME
DATE TIME_OF_DAY DATE_AND_TIME
简写
T
D TOD DT
示例:
T#14.7ht#5d14h12m18s3.5msTIME#-14ms
DATE#1984-06-25tod#15:
36:
55.36
date_and_time#1984-06-25-15:
36:
55.36
数据类型
基本数据类型
编号
关键字
数据类型
长度
1
BOOL
布尔
1
2
SINT
短整数
8
3
INT
整数
16
4
DINT
双精度整数
32
5
LINT
长整数
64
6
USINT
无符号短整数
8
7
UINT
无符号整数
16
8
UDINT
无符号双精度整数
32
9
ULINT
无符号长整数
64
10
REAL
实数
32
11
LREAL
长实数
64
12
TIME
持续时间
–
13
DATE
如期
–
14
TIME_OF_DAY/TOD
时间(当日)
–
15
DATE_AND_TIME/DT
时间与日期
–
16
STRING
可变长度单字节字符串
8
17
WSTRING
可变长度双字节字符串
16
18
BYTE
长为8的位串
8
19
WORD
长为16的位串
16
20
DWORD
长为32的位串
32
21
LWORD
长为64的位串
64
一般数据类型
在功能和功能块的输入/输出说明中,除 基本数据类型 外,还可以使用 一般数据类型层级 。
一般数据类型用前缀ANY标识。
其层级关系如下:
ANY
ANY_DERIVED
ANY_ELEMENTARY
ANY_MAGNITUDE
ANY_NUM
ANY_REAL
LREAL
REAL
ANY_INT
LINT,DINT,INT,SINT
ULINT,UDINT,UINT,USINT
TIME
ANY_BIT
LWORD,DWORD,WORD,BYTE,BOOL
ANY_STRING
STRING
WSTRING
ANY_DATE
DATE_AND_TIME
DATE,TIME_OF_DAY
导出数据类型
导出数据类型 使用TYPE...END_TYPE声明。
例如,从基本数据类型直接导出的数据类型:
TYPERU_REAL:
REAL;END_TYPE.
枚举
TYPEANALOG_SIGNAL_TYPE:
(SINGLE_ENDED,DIFFERENTIAL):
=SINGLE_ENDED;
END_TYPE
在 枚举 中,可以使用类型前缀(如ANALOG_SIGNAL_TYPE#)可用来避免歧义。
如果没有提供足够的类型信息,将被视为 错误 。
枚举 类型的默认初始值为第一个标识符,或用户在类型声明中使用:
=指定的值。
子域
TYPEANALOG_DATA:
INT(-4095..4095);END_TYPE
子域 声明指定了数据取值的上限和下限。
如果子范围类型的值超出了其规定的范围,将被视为 错误 。
子域 数据类型的初始值为取值的下限。
结构
TYPE
ANALOG_CHANNEL_CONFIGURATION:
STRUCT
RANGE:
ANALOG_SIGNAL_RANGE;
MIN_SCALE:
ANALOG_DATA;
MAX_SCALE:
ANALOG_DATA;
END_STRUCT;
ANALOG_16_INPUT_CONFIGURATION:
STRUCT
SIGNAL_TYPE:
ANALOG_SIGNAL_TYPE;
FILTER_PARAMETER:
SINT(0..99);
CHANNEL:
ARRAY[1..16]OFANALOG_CHANNEL_CONFIGURATION;
END_STRUCT;
END_TYPE
对于 结构 和 数组 ,初始值对应基本数据类型的初始值,除非用户使用:
=指定。
基本数据类型的初始值均为0,日期除外:
0000-00-01。
数组
TYPEANALOG_16_INPUT_DATA:
ARRAY[1..16]OFANALOG_DATA;
END_TYPE
STRING 和 WSTRING 的默认长度是 实现相关 的,但用户可以指定,例如:
TYPESTR10:
STRING[10]:
='ABCDEF';END_TYPE。
变量
表示
单元素变量
单元素变量 定义为表示单个基本数据类型数据元素的变量。
这部分定义了变量的 符号表示 和 直接表示 (数据元素与可编程控制器输入/输出/存储器结构的物理/逻辑地址的关联)。
单元素变量 的 直接表示 由一个%,一个 地址前缀 ,一个 大小前缀 ,和一个或更多由.分隔的无符号整数组成。
*可用于地址前缀,表示 直接表示 还没有完全指定。
变量地址应在 配置 的VAR_CONFIG...END_VAR 构造内完全指定,否则将产生 错误 。
位置前缀
含义
地址前缀
含义
I
输入
X/None
单个位
Q
输出
B
字节(8位)
M
存储器
W
字(16位)
*
未指定
D
双字(32位)
L
长字(64位)
示例
%QX75or%Q75(*输出的75位*)
%IW2.5.7.1(*在输入的物理/逻辑层级2.5.7.1的字*)
一个可编程控制器通过分级寻址访问另一个控制器的数据应被视为 语言扩展 。
最大级数是 实现相关 的。
多元素变量
在本标准中定义的 多元素变量 包括 数组 和 结构 。
数组 是包含有着同样属性的数据对象的 聚集 ,每个数据对象可通过下标来引用。
结构 是命名数据元素收集而成的数据类型。
示例
OUTARY[%MB6,SYM]:
=INARY[0]+INARY[7]-INARY[%MB6]*%IW62;
MODULE_5_CONFIG.SIGNAL_TYPE:
=SINGLE_ENDED;
MODULE_5_CONFIG.CHANNEL[5].RANGE:
=BIPOLAR_10V;
初始化
当配置元素(资源、配置)启动时,每个与该元素关联的变量可以取如下的初始值:
∙上次停机时该变量的值(保持的值)。
∙用户指定的初始值。
∙该变量关联的数据类型的默认初始值。
用户可通过RETAIN限定符来指定变量是保持的。
声明
文本形式的变量声明使用关键字VAR(或其他VAR关键字),接着一个可选的限定符,接着一个或更多的用;分隔的声明,以关键字END_VAR结束。
变量声明涉及的关键字
关键字
变量使用
VAR
内部变量,组织单元内使用
VAR_INPUT
外部提供,组织单元内只读
VAR_OUTPUT
组织单元提供,外部实体使用
VAR_IN_OUT
外部实体提供,组织单元内可读写
VAR_EXTERNAL
配置通过VAR_GLOBAL提供,组织单元内可读写
VAR_GLOBAL
全局变量声明
VAR_ACCESS
访问路径声明
VAR_TEMP
功能块和程序内的临时存储
VAR_CONFIG
实例初始化和地址赋值
RETAIN
保持的变量
NON_RETAIN
非保持的变量
CONSTANT
常数(只读变量)
AT
地址赋值
在 功能块 和 程序 里,以VAR_TEMP...END_VAR构造声明的变量在每次 实例调用 都会初始化。
变量声明的作用域对于所在的程序组织单元是 局部的 。
VAR_GLOBAL...END_VAR变量只有通过VAR_EXTERNAL声明后才是可访问的,且VAR_EXTERNAL中的类型声明与对应的VAR_GLOBAL应保持一致,否则将产生 错误 。
类型赋值
物理/逻辑地址到符号表示变量的赋值应使用AT关键字。
如果没有这样的赋值,变量将被自动分配到可编程控制器存储器中合适的地址。
示例
VARRETAIN
AT%IW6.2:
WORD;
LIM_SW_S5AT%IX27:
BOOL;
INARYAT%IW6:
ARRAY[0..9]OFINT;
THREE:
ARRAY[1..5,1..10,1..8]OFINT;
END_VAR
赋初始值
初始值可以通过使用VAR_CONFIG...END_VAR构造提供的实例初始化特性来完成。
实例初始化提供的初始值总是应当覆盖类型提供的初始值。
在VAR_EXTERNAL声明中不允许给定初始值。
示例
变量初始化
VAR
VALVE_POSAT%QW28:
INT:
=100;
OUTARYAT%QW6:
ARRAY[0..9]OFINT:
=[10
(1)];
OKAY:
STRING[10]:
='OK';
TBT:
ARRAY[1..2,1..3]OFINT:
=[1,2,3(4),6];
END_VAR
结构
(*结构声明*)
TYPE
ANALOG_CHANNEL_CONFIGURATION:
STRUCT
RANGE:
ANALOG_SIGNAL_RANGE;
MIN_SCALE:
ANALOG_DATA;
MAX_SCALE:
ANALOG_DATA;
END_STRUCT;
ANALOG_16_INPUT_CONFIGURATION:
STRUCT
SIGNAL_TYPE:
ANALOG_SIGNAL_TYPE;
FILTER_PARAMETER:
SINT(0..99);
CHANNEL:
ARRAY[1..16]OFANALOG_CHANNEL_CONFIGURATION;
END_STRUCT;
END_TYPE
(*结构初始化*)
VARMODULE_8_CONFIG:
ANALOG_16_INPUT_CONFIGURATION:
=(
SIGNAL_TYPE:
=DIFFERENTIAL,
CHANNEL:
=[
4(
(RANGE:
=UNIPOLAR_1_5V)
),
(
RANGE:
=BIPOLAR_10_V,
MIN_SCALE:
=0,
MAX_SCALE:
=500
)
]
);
END_VAR
功能块初始化
VARTempLoop:
PID:
=(
PropBand:
=2.5,
Integral:
=T#5s
);
END_VAR
程序组织单元
IEC61131-3定义的 程序组织单元 包括:
功能、功能块、程序。
这些程序组织单元不应是 递归的,即对一个程序组织单元的调用不会再次引发对该类型程序组织单元的调用。
功能
功能 :
执行后产生一个结果数据元素,和任意数量的输出元素的程序组织单元。
功能结果可以是多值的,即数组或结构。
功能不能包含状态信息,即每次同样参数的调用应得到同样的结果。
已声明的功能可以在其他程序组织单元中调用。
功能使用示例-ST语言:
VARX,Y,Z,RES1,RES2:
REAL;EN1,V:
BOOL;END_VAR
RES1:
=DIV(IN1:
=COS(X),IN2:
=SIN(Y),ENO=>EN1);
RES2:
=MUL(SIN(X),COS(Y));
Z:
=ADD(EN:
=EN1,IN1:
=RES1,IN2:
=RES2,ENO=>V);
功能使用示例-FBD语言:
+-----++------++------+
X---+-|COS|--+-|ENENO|-----|ENENO|---V
||||||||
|+-----++---|DIV|-----|ADD|---Z
|||||
|+-----+||+-||
Y-+---|SIN|------|||+------+
||||+------+|
||+-----+|
|||
||+-----++------+|
|+-|SIN|--+-|ENENO|-|
|||||||
|+-----++--|MUL|---+
|||
|+-----+||
+---|COS|------||
||+------+
+-----+
表示法
∙对 VAR_OUTPUT 的赋值可以空白,也可以用变量。
∙对 VAR_IN_OUT 参数的赋值应该是变量。
∙对 VAR_INPUT 的赋值可以为空白、常量、变量和功能调用。
对于后者,功能的结果将被作为实参。
∙在图形语言中,功能应表示为矩形块,大小取决于输入参数等信息的多少。
功能名应卸载矩形块内部。
每个输入输出都用一根线来表示。
∙对于输入输出变量名的规定:
o没有指定输入变量名时,默认名为:
IN1, IN2(从上到下顺序)
o只有一个未命名输入时,默认名为:
IN
o上述默认名可以出现在功能表示的左边,也可以不出现。
∙还可以使用附加输入 EN 和附加输出 ENO,它们分别位于左右的最上方。
∙应使用信号线进行参数的连接(包括功能结果)。
∙布尔类型的输入输出可用 O 进行翻转。
∙VAR_IN_OUT 应被适当地连接。
∙参数列表是一系列实参到形参的赋值组成的集合。
oVAR_IN VAR_IN_OUT 赋值使用 :
=
oVAR_OUT 赋值使用 =>
∙除EN ENO外,参数列表中参数的数目、类型和顺序都应与功能定义相符。
执行控制
附加的 EN(Enable)输入、ENO(EnableOut)输出可用于控制功能的执行,规则如下:
1.如果 EN 值为 FALSE,功能被调用时不应执行,且 ENO 应被PC系统重置为 FALSE。
否则功能应被执行,且 ENO 应被PC系统置为 TRUE,功能操作中也可以对ENO进行赋值。
2.当功能执行中发生错误时,ENO 应被PC系统置为 FALSE,否则制造商应提供的其他的错误处理方式。
3.当ENO值为FALSE时,功能所有输出的值均 实现相关 。
EN ENO 使用示例:
(*LD语言*)
+-------+|
|ADD_EN|+|ADD_OK|
+---||---|ENENO|---()---+
||||
|A---||---C|
|B---|||
+-------+|
(*FBD语言*)
+-----+
ADD_EN---|EN|
A---|+|---C
B---||
+-----+
声明
文本语言中,功能声明由以下几部分组成:
1.关键字 FUNCTION;
2.VAR_INPUT...END_VAR 构造,规定输入变量;
3.VAR_IN_OUT...END_VAR构造和VAR_OUTPUT...END_VAR构造,分别规定输入-输出和输出变量。
4.VAR...END_VAR 构造,规定内部变量;
5.功能体。
规定功能对这些变量的操作,通过对与功能同名的变量赋值来设置返回值。
6.终止关键字 END_FUNCTION
图形语言中,功能声明由以下几部分组成:
1.关键字 FUNCTION END_FUNCTION,或等效的图形元素;
2.功能名,功能结果和功能变量的名称、类型、初始值的图形说明;
3.内部变量的名称、类型、初始值的图形说明。
4.功能体,同上。
每个 资源 中的功能声明数目是一个 实现相关 的参数。
功能声明示例-ST语言:
FUNCTIONSIMPLE_FUN:
REAL
(*Externalinterfacespecification*)
VAR_INPUT
A,B:
REAL;
C:
REAL:
=1.0;
END_VAR
VAR_IN_OUTCOUNT:
INT;END_VAR
VARCOUNTP1:
INT;END_VAR
(*Functionbodyspecification*)
COUNTP1:
=ADD(COUNT,1);
COUNT:
=COUNTP1;
SIMPLE_FUN:
=A*B/C;
END_FUNCTION
功能声明示例-FBD语言:
FUNCTION
+-------------+(*Externalinterfacespecification*)
|SIMPLE_FUN|
REAL----|A|----REAL
REAL----|B|
REAL----|C|
INT-----|COUNT---COUNT|----INT
+-------------+
(*Functionbodyspecification*)
+-