为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

ABBcodesys软件编程基础编程手册

2012-10-05 22页 pdf 995KB 132阅读

用户头像

is_598835

暂无简介

举报
ABBcodesys软件编程基础编程手册 ABB CoDeSys 软件编程 用户指令手册 V1.0 ABB 共 21 页 第 2 页 目录 1. 标准数据类型.........................................................................................................................
ABBcodesys软件编程基础编程手册
ABB CoDeSys 软件编程 用户指令手册 V1.0 ABB 共 21 页 第 2 页 目录 1. 数据类型..............................................................................................................................3 1.1 BOOL..................................................................................................................................3 1.2 整型数据类型....................................................................................................................3 1.3 REAL / LREAL ..................................................................................................................3 1.4 STRING ..............................................................................................................................3 1.5 时间、日期类型................................................................................................................4 1.6 常数....................................................................................................................................4 1.6.1 BOOL – 常数 ..........................................................................................................4 1.6.2 TIME – 常数 ...........................................................................................................4 1.6.3 DATE – 常数...........................................................................................................4 1.6.4 TIME_OF_DAY 常数 .............................................................................................4 1.6.5 DATE_AND_TIME – 常数 ....................................................................................5 1.6.6 数值常数.................................................................................................................5 1.6.7 REAL / LREAL – 常数...........................................................................................5 1.6.8 STRING – 常数 ......................................................................................................5 2. 变量类型转换功能......................................................................................................................6 2.1 BOOL_TO_变换.................................................................................................................6 2.2 TO_BOOL – 变换..............................................................................................................6 2.3 整型数类型之间的转换....................................................................................................6 2.4 REAL_TO - / LREAL_TO – 转换.....................................................................................7 2.5 TIME_TO - / TIME_OF_DAY – 转换...............................................................................7 2.6 DATE_TO - / DT_TO – 转换 ............................................................................................7 2.7 STRING_TO – 转换 ..........................................................................................................7 2.8 TRUNC (取整)....................................................................................................................8 3. 用户定义的数据类型..................................................................................................................8 3.1 数组....................................................................................................................................8 3.2 指针..................................................................................................................................10 3.3 牧举..................................................................................................................................10 3.4 结构..................................................................................................................................10 3.5 参考 (别名类型) .............................................................................................................11 3.6 替代范围类型..................................................................................................................11 4. 编程方式....................................................................................................................................14 4.1 指令 IL........................................................................................................................14 4.2 结构化文本 ST ...............................................................................................................16 4.3 功能块图 FBD................................................................................................................17 4.4 梯形图 LD ......................................................................................................................18 5. CoDeSys 中全部运算符及功能名............................................................................................19 ABB 共 21 页 第 3 页 1. 标准数据类型 1.1 BOOL BOOL 类型变量可取值 TRUE 和 FALSE。保留 8 位内存空间。 1.2 整型数据类型 所有的整型数据类型为: z BYTE 字节 z WORD 字 z DWORD 双字 z SINT 短整型 z USINT 无符号短整型 z INT 整型 z UINT 无符号整型 z DINT 双精度整型 z UDINT 无符号双精度整型 各个不同的数据类型有不同的值范围。下表为整型数据的值范围和占用的内存空间 类型 下限 上限 内存空间 BYTE 0 255 8 位 WORD 0 65535 16 位 DWORD 0 4294967295 32 位 SINT -128 127 8 位 USINT 0 255 8 位 INT -32768 32767 16 位 UINT 0 65535 16 位 DINT -2147483648 2147483647 32 位 UDINT 0 4294967295 32 位 当用大类型转换为小类型时,将导致丢失信息。 1.3 REAL / LREAL REAL 和 LREAL 被称为浮点数类型。用于有理数表示。REAL 占用 32 位内存空间,LREAL 占用 64 位。 1.4 STRING STRING 类型变量可以是包含任何字符的字符串。其容量大小在声明变量时说明,如果不 对容量大小进行说明,其缺省值为 80 个字符。 字符串变量声明示例: str : STRING(35) := ‘This is a String’; ABB 共 21 页 第 4 页 1.5 时间、日期类型 TIME、TIME_OF_DAY (缩写 TOD)、DATE 和 DATE_AND_TIME (缩写 DT) 数据类型在 内部作为 DWORD 处理。TIME 和 TOD 中的时间用毫秒表示,TOD 中的时间从 12:00 AM 开始。 DATE 和 DT 中的时间用秒表示,并从 1970 年 1 月 1 日 12:00 AM 开始。时 间数据的格式在常数一节中说明。 1.6 常数 1.6.1 BOOL – 常数 BOOL – 常数为逻辑值 TRUE 和 FALSE。 1.6.2 TIME – 常数 TIME 常数可以在 TwinCAT PLC 控制中声明。主要用于标准库中定时器的操作,格式如下: T# xx d xx h xx m xx s xx ms 其中:T 表示时间常数起始,# 数值符号,d 天,h 小时,m 分,s 秒,ms 毫秒。 下面是 ST 中分配的正确的 TIME 常数示例: TIME1 := T#14ms; TIME1 := T#100s12ms; (* 单位最大的成员允许超过其极限 *) TIME1 := t#12h34m15s; 不正确的 TIME 常数示例: TIME1 := t#5m68s; (*单位较小的成员超过其极限 *) TIME1 := 15ms; (* 遗漏 T# *) TIME1 := t#4ms13d; (* 单位顺序错 *) 1.6.3 DATE – 常数 该常数用于输入日期。DATE 常数的声明用 d、D、DATE 或 date,后接 # 构成,可以输 入格式为 年-月-日的任何日期。 示例: DATE#1996-05-06 d#1972-03-29 1.6.4 TIME_OF_DAY 常数 该常数主要用于存储一天中的时间。TIME_OF_DAY 声明用 tod#,TOD#,TIME_OF_DAY# 或 time_of_day# 后接一个时间格式:小时:分:秒。秒可以用实数表示。 示例: TIME_OF_DAY#15:36:30.123 tod#00:00:00 ABB 共 21 页 第 5 页 1.6.5 DATE_AND_TIME – 常数 日期常数和时间常数可以组合成所谓的 DATE_AND_TIME 常数。DATE_AND_TIME 常数 用 dt#, DT#, DATE_AND_TIME# 或 date_and_time# 开始,后接日期和时间,日期和时间 之间用 – 连接。 示例: DATE_AND_TIME#1996-05-06-15:36:30 dt#1972-03-29-00:00:00 1.6.6 数值常数 数值可以用二进制、八进制、十进制和十六进制数表示。 示例: 14 (十进制数) 2#1001_0011 (二进制数) 8#67 (八进制数) 16#A (十六进制数) 这些数值可以是 BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL 或 LREAL 类型,不允许直接从“大类型”向“小类型”转换。例如,DINT 变量不能简单 地以 INT 型变量使用。可以用标准库中的转换功能实现其转换。 1.6.7 REAL / LREAL – 常数 REAL 和 LREAL 常数可以用尾数和指数表示,并使用美国标准。 示例: 7.4 取代 7,4 1.64e+009 取代 1,64e+009 1.6.8 STRING – 常数 字符串是由字符组成的序列。STRING 常数使用单引号对区分。一些特殊的符号可用下表 表示: 字符 说明 $$ 美元符号 $L 或 $l 行给进 $N 或 $n 新行 $P 或 $p 页给进 $R 或 $r 行结束 $T 或 $t 制表 $’ 单引号 示例: ABB 共 21 页 第 6 页 ‘Your Name’ ‘Susi and Claus’ ‘:- ) $’’ 2. 变量类型转换功能 不能直接从“大类型”向“小类型”变量转换。(例如:从 INT 到 BYTE,或从 DINT 到 WORD)。要完成此功能,可以使用特殊功能块实现。作为一种规则,你可以用此功能将一 种类型的变量转换成任何需要的类型变量。 句法: _TO_ 2.1 BOOL_TO_变换 BOOL 类型变量到不同类型的变换:对于数值类型变量,操作数为 TRUE 时,结果为 1;操 作数为 FALSE 时,结果为 0。对字符串类型变量,其结果分别为 ‘TRUE’ 和 ‘FALSE’。 ST 中的示例: i:= BOOL_TO_INT(TRUE); (*结果为 1 *) str:= BOOL_TO_STRING(TRUE); (*结果为 'TRUE' *) t:= BOOL_TO_TIME(TRUE); (*结果为 T#1ms *) tof:= BOOL_TO_TOD(TRUE); (*结果为 TOD#00:00:00.001 *) dat:= BOOL_TO_DATE(FALSE); (*结果为 D#1970-01-01 *) dandt:= BOOL_TO_DT(TRUE); (*结果为 DT#1970-01-01-00:00:01 *) 2.2 TO_BOOL – 变换 其它类型变量到 BOOL 的转换:当操作数不为零时,结果为 TRUE,当操作数为零时,结 果为 FALSE;当字符串变量的操作数为’TRUE’时,结果为真,否则,结果为假。 ST 中的示例: b := BYTE_TO_BOOL(2#11010101); (*结果为 TRUE *) b := INT_TO_BOOL(0); (*结果为 FALSE *) b := TIME_TO_BOOL(T#5ms); (*结果为 TRUE *) b := STRING_TO_BOOL('TRUE'); (*结果为 TRUE *) 2.3 整型数类型之间的转换 整型数值类型到其它数值类型的转换:当从大类型向小类型转换时,存在丢失信息的危险。 如果转换的数值超过其极限;则该数的第一个字节将被忽略。 ST 中的示例: si := INT_TO_SINT(4223); (* 结果为 127 *) 如果你将整数 4223 (十六进制为 16#107f) 作为 SINT 变量保存,其结果为 127 (十六进制 为 16#7f)。 IL 中的示例: LD 2 INT_TO_REAL ABB 共 21 页 第 7 页 MUL 3.5 2.4 REAL_TO - / LREAL_TO – 转换 REAL 或 LREAL 类型到其它数值类型的转换:数值将向上或向下取整并转换成新的数据类 型。但变量类型 STRING,BOOL,REAL 和 LREAL 除外。当从大类型向小类型转换时,存 在丢失信息的危险。 请注意:当向字符串变量转换时,保留 16 个数据,如果(L)REAL 数据有更多的数,则第十 六个数将被取整。如果字符串的长度定义为短型,则从右端开始截取。 ST 中的示例: i := REAL_TO_INT(1.5); (* 结果为 2 *) j := REAL_TO_INT(1.4); (* 结果为 1 *) IL 中的示例: LD 2.7 REAL_TO_INT GE %MW8 2.5 TIME_TO - / TIME_OF_DAY – 转换 TIME 或 TIME_OF_DAY 类型到其它类型的转换:时间在内部以毫秒单位及 DWORD 方式 处理(对于 TIME_OF_DAY 变量,用 12:00 AM 起始)。该值将被转换。当从大类型向小类型 转换时,存在丢失信息的危险。对于字符串类型变量,其结果为时间常数。 ST 中的示例: str :=TIME_TO_STRING(T#12ms); (*结果为 'T#12ms' *) dw:=TIME_TO_DWORD(T#5m); (*结果为 300000 *) si:=TOD_TO_SINT(TOD#00:00:00.012); (*结果为 12 *) 2.6 DATE_TO - / DT_TO – 转换 DATE 或 DATE_AND_TIME 类型到其它类型的转换:时间在内部以 1970.01.01 开始所经过 的时间,并以秒为单位及 DWORD 方式处理。该值将被转换。当从大类型向小类型转换时, 存在丢失信息的危险。对于字符串类型变量,其结果为日期常数。 ST 中的示例: b :=DATE_TO_BOOL(D#1970-01-01); (*结果为 FALSE *) i :=DATE_TO_INT(D#1970-01-15); (*结果为 29952 *) byt :=DT_TO_BYTE(DT#1970-01-15-05:05:05); (*结果为 129 *) str:=DT_TO_STRING(DT#1998-02-13-14:20); (*结果为 'DT#1998-02-13-14:20' *) 2.7 STRING_TO – 转换 STRING 类型到其它类型的转换:字符串类型变量中必须包含有效的目标变量类型值,否 则其转换结果为零。 ST 中的示例: b :=STRING_TO_BOOL('TRUE'); (* 结果为 TRUE *) ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 共 21 页 第 8 页 w :=STRING_TO_WORD('abc34'); (* 结果为 0 *) t :=STRING_TO_TIME('T#127ms'); (* 结果为 T#127ms *) 2.8 TRUNC (取整) 从 REAL 到 INT 类型转换。数值的所有部分都将被使用。当从大类型向小类型转换时, 存在丢失信息的危险。 ST 中的示例: i:=TRUNC(1.9); (* 结果为 1 *). i:=TRUNC(-1.4); (* 结果为 1 *). IL 中的示例: LD 2.7 TRUNC GE %MW8 3. 用户定义的数据类型 3.1 数组 支持一维、二维和三维数组的成员数据类型。数组可在 POU 的声明部分和全局变量表中定 义。 语法: <数组名> : ARRAY [..,..] OF ll1,ll2 为数组维数的下限标识,ul1 和 ul2 为数组维数的上限标识。数值范围必须为整数。 示例: Card_game: ARRAY [1..13, 1..4] OF INT; 数组的初始化: 可以对数组中的所有元素进行初始化,或不进行初始化。 数组初始化示例: arr1 : ARRAY [1..5] OF INT := 1,2,3,4,5; arr2 : ARRAY [1..2,3..4] OF INT := 1,3(7); (* 等同 1,7,7,7 *) arr3 : ARRAY [1..2,2..3,3..4] OF INT := 2(0),4(4),2,3; (* 等同 0,0,4,4,4,4,2,3 *) 结构化中的数组初始化示例: TYPE STRUCT1 STRUCT p1:int; p2:int; p3:dword; END_STRUCT ARRAY[1..3] OF STRUCT1:= (p1:=1;p2:=10;p3:=4723),(p1:=2;p2:=0;p3:=299), ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 (p1:=14;p2:=5;p3:=112); 数组部分元素初始化示例: arr1 : ARRAY [1..10] OF INT := 1,2; 数组中的元素如果没有初始化值,则用基本类型的缺省值初始化其值。在上例中,元素 arr1[3] 到元素 arr1[10] 均被初始化为 0。 二维数组的元素存取,使用下列语法: <数组名>[Index1,Index2] 示例 Card_game[9,2] 注: 如果你在项目中定义了一个名为 CheckBounds 的功能,则可以自动检查数组的上下限超限 错误!下图中给出了如何实现该功能的示例。 下面的示例用 CheckBounds 功能测试数组的超限问题。CheckBounds 功能允许 A[0] 到 A[7] 元素分配值 TRUE,而不会给 A[10] 分配值,这样可以避免对数组元素的错误操作。 共 21 页 第 9 页 ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 共 21 页 第 10 页 3.2 指针 当程序运行时,变量或功能块地址保存在指针中。指针声明为如下句法形式: <指针名> : POINTER TO <数据类型 / 功能块>; 指针可指向任何数据类型、功能块和用户定义的数据类型。对地址操作的 ADR 功能,可 将变量或功能块的地址指向指针。指针后加内容操作符”^”可取出指针中的数据。 示例: pt:POINTER TO INT; var_int1:INT := 5; var_int2:INT; pt := ADR(var_int1); var_int2:= pt^; (* var_int2 的值为 5 *) 3.3 牧举 牧举为用户定义的数据类型,并由一组字符串常数组成。这些常数被视为牧举值。牧举值在 项目中为全局使用的变量,即使它们在 POU 中为本地声明的变量。创建牧举变量的最好方 法是在数据类型对象组织下创建。用关键字 TYPE 开始,END_TYPE 结束。 句法: TYPE <牧举变量>:( ,, ...,);END_TYPE 牧举变量可以取牧举值中的任何一个值。缺省情况下,第一个牧举值为零,其后依次递增。 示例: TRAFFIC_SIGNAL: (Red, Yellow, Green:=10); (*每个颜色的初始值为 red 0, yellow 1, green 10 *) TRAFFIC_SIGNAL:=0; (* 交通信号值为 red*) FOR i:= Red TO Green DO i := i + 1; END_FOR; 不能对同一个牧举值多次使用。 示例: TRAFFIC_SIGNAL: (red, yellow, green); COLOR: (blue, white, red); 错误:red 不能对 TRAFFIC_SIGNAL 和 COLOR 变量同时使用。 3.4 结构 结构作为对象在数据类型页中创建。使用 TYPE 关键字开始,END_TYPE 关键字结束。结 构声明的句法如下: TYPE <结构名>: STRUCT <声明变量 1> . ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 共 21 页 第 11 页 . <声明变量 n> END_STRUCT END_TYPE <结构名>是一种类型,在项目中为全程识别,并且可作为标准数据类型使用。允许内嵌结 构。唯一的限制是变量不能带地址(不允许用 AT 声明!)。 下例为多边形的结构示例: TYPE Polygonline: STRUCT Start: ARRAY [1..2] OF INT; Point1: ARRAY [1..2] OF INT; Point2: ARRAY [1..2] OF INT; Point3: ARRAY [1..2] OF INT; Point4: ARRAY [1..2] OF INT; End: ARRAY [1..2] OF INT; END_STRUCT END_TYPE 可以使用下面的句法存取结构中的成员。 <结构_名>.<成员名> 例如:结构名为 “Week”,其中包含一个成员 “Monday”,可以用 Week.Monday 获取该值。 3.5 参考 (别名类型) 可以使用用户定义的参考数据类型,创建已经更名的变量、常数或功能块。在数据类型页中 创建参考对象。使用 TYPE 关键字开始,END_TYPE 关键字结束。 句法: TYPE <标识符>: <分配 项>; END_TYPE 示例: TYPE message:STRING[50]; END_TYPE; 3.6 替代范围类型 替代范围类型,是对其基本数据类型重新设置范围的一种数据类型。声明可以在数据类型页 中进行,但变量也可直接用子范围类型声明: 在数据类型页中声明的句法如下: TYPE : (..) END_TYPE; 类型 说明 必须为有效的 IEC 标识符 数据类型中的一种。如 SINT,USINT,INT,DINT,UDINT,BYTE,WORD, DWORD(LINT,UINT,LWORD). ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 共 21 页 第 12 页 常数,必须为基本类型,设定的下边界在其类型范围之内。 常数,必须为基本类型,设定的上边界在其类型范围之内。 示例: TYPE SubInt : INT (-4095..4095); END_TYPE 用子范围类型直接声明的变量: VAR i1 : INT (-4095..4095); i2 : INT (5...10):=5; ui : UINT (0..10000); END_VAR 如果常数被分配为一个子范围类型(在声明或实现段中),但其值没有落在该范围之内(例如 i := 5000),系统将会发出错误信息。 为了在运行期间检查边界范围,推荐使用功能 CheckRangeSigned 或 CheckRangeUnsigned。 这样,边界有效性验证可通过合适的方法和手段捕获(例:数值可以截取或设置错误标志)。 示例: 当变量属于有符号子范围类型时(如上例中的 i),则功能 CheckRangeSigned 被调用;可以 通过编程的方法使其值在允许范围之内。 FUNCTION CheckRangeSigned : DINT VAR_INPUT value, lower, upper: DINT; END_VAR IF (value < lower) THEN CheckRangeSigned := lower; ELSIF(value > upper) THEN CheckRangeSigned := upper; ELSE CheckRangeSigned := value; END_IF 为了自动调用功能,功能名 CheckRangeSigned 被指定,并且接口也被指定:返回值和三个 DINT 类型的参数。 当调用时,功能参数如下: 值 分配给范围类型的值 下限 下限边界范围 上限 上限边界范围 返回值 实际分配给范围类型的值 ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 共 21 页 第 13 页 对 i := 10 * y 进行边界有效性验证的示例: i := CheckRangeSigned(10 * y, -4095, 4095); 示例中,y 即使是 1000,i 经过上例赋值后其值仍然为 4095。 同样,功能 CheckRangeUnsigned 过程同上:功能名和接口必须正确。 FUNCTION CheckRangeUnsigned : UDINT VAR_INPUT value, lower, upper: UDINT; END_VAR 注意: 如果没有 CheckRangeSigned 和 CheckRangeUnsigned,则运行时,没有子类型的类型检验发 生,变量 i 可以在 –32768 和 32767 之间取任何值。 注意: 如果功能 CheckRangeSigned 和 CheckRangeUnsigned 按照上例实现,则在 FOR 循环中可 对子范围类型连续使用循环。 示例: VAR ui : UINT (0..10000); END_VAR FOR ui:=0 TO 10000 DO ... END_FOR FOR 循环不会剩余,因为 ui 不会大于 10000。 象 CheckRange 功能内容一样,当在 FOR 循环中使用增量值时,也应考虑这些问题。 ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 共 21 页 第 14 页 4. 编程方式 4.1 指令表 IL 指令表(IL)由一系列指令组成。每条指令都由一个新行开始,包含一个操作符以及和操 作符类型相关的一个或多个操作数,并用逗号分开。在指令前可以有标号,后接一个冒号。 注解必须在一行的最后,指令之间可以插入空行。 示例 标号 操作符 操作数 注解 LD 17 ST lint (* comment *) GE 5 JMPC next LD idword EQ istruct.sdword STN test next: 在 IL 语言中,可以使用下面的操作符和修饰符。 修饰符: z JMP、CAL、RET 中带 C: 指令在预置表达式结果为 TRUE 时执行。 z JMPC、CALC、RETC 中带 N:指令在预置表达式结果为 FALSE 时执行。 z 其它指令中带 N: 操作数取反 (不是累加器)。 下表为 IL 中全部的操作符及可能的修饰符和相关的意义: 操作符 修饰符 意义 LD N 使当前结果等于操作数 ST N 在操作数位置保存当前结果 S 如果当前结果为 TRUE,置位布尔操作数为 TRUE R 如果当前结果为 TRUE,复位布尔操作数为 FALSE AND N, ( 位与 OR N, ( 位或 XOR ( 位异或 ADD ( 加 SUB ( 减 MUL ( 乘 DIV ( 除 GT ( > EQ ( = NE ( <> LE ( <= LT ( < JMP CN 跳转到标号 CAL CN 调用功能块 RET CN 从调用的功能块返回 ) 评估括号操作 ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 共 21 页 第 15 页 IL 是一种面向行的语言。 标号 : 操作符/功能 操作数(表) 注释 跳转标号 分隔符 IL 操作符或功能名 用于操作符的零个,一个或 多个常数、变量,或用于功 能的输入参数,由逗号分隔。 在 (*…*)中的注 释,可选 通过不同的操作符组修改 CR 影响 CR 数据类型的操作符组 缩写 操作符示例 Create (建立) C LD Process (处理) P GT Leave unchanged (保持不变) U ST: JMPC Set to undefined (设置为未定义的) - CAL = 功能块的无条件调 用, 带布尔操作数(BOOL 类型)的操作符 操作符 操作符组 描述 LD LDN C 装入操作数(操作数的反值)到 CR AND AND( ANDN ANDN( P 操作数(操作数的反值)和 CR 的布尔 AND (“与”运算) OR OR( ORN ORN( P 操作数(操作数的反值)和 CR 的布尔 OR (“或”运算) XOR XOR( XORN XORN( P 操作数(操作数的反值)和 CR 的布尔 XOR (“异或”运算) ST STN U 将 CR 存到操作数 S U 若 CR = 1,则将操作数设置为 TRUE R U 若 CR = 1,则将操作数设置为 FALSE ) U 结束括号:对递延操作求值 用于类属数据类型(类型 ANY) 操作数的操作符 操作符 操作符组 描述 LD C 操作数装入 CR ST U 将 CR 存储到操作数 ADD ADD( P 加操作数,结果存入 CR SUB SUB( P 从 CR 减去操作数,结果存入 CR MUL MUL( P 操作数乘以 CR DIV DIV( P CR 除以操作数 GT GT( P CR > 操作数 (大于) GE GE( P CR >= 操作数 (大于或等于) EQ EQ( P CR = 操作数 (等于) NE NE( P CR <> 操作数 (不等于) LE LE( P CR <= 操作数 (小于或等于) LT LT( P CR < 操作数 (小于) ) U 结束括号级 ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 共 21 页 第 16 页 跳转或调用 操作符 操作符组 描述 JMP - 或 U JMPC JMPCN U (无)/有条件跳转到一个跳转标号 CAL - 或 U CALC CALCN U (无)/有条件调用一个功能块 RET - 或 U RETC RETCN U (无)/有条件从一个功能或功能块返回 功能名 P 功能调用 使用功能和功能块 A. 调用一个功能 在 IL 语言中,调用一个功能只是简单地写入该功能名即可。随后的实际参数用逗号分 隔。这种语法和带有几个操作数的操作符的语法相同。 功能的第一个参数是当前结果(CR)。因此必须正好在功能调用之前将该值装入 CR 中。 用于功能调用的第一个操作数实际上是功能的第二个参数,并依次类推。 B. 调用一个功能块 操作符 CAL (或条件调用 CALC 和条件取反调用 CALCN)可以激活一个功能块。 IEC61131-3 描述 IL 语言中给一个 FB 传送参数的三种方法: 1). 使用一个调用,它包括在括号内的实际输入和输出参数的一个列表 2). 在调用 FB 前,装载和保存输入参数 3). 用输入参数作为操作符“隐性地”调用 第三种方法只对标准 FB 有效,不适合用户定义的 FB。 4.2 结构化文本 ST ST 语言的优点 (与 IL 语言相比较): z 编程任务高度压缩化的表达格式, z 在语句块中清晰的程序结构, z 控制命令流的强有力结构 这些优点亦带来其本身的缺陷: z 由于它借助于编译程序自动地执行程序,因此用户不能直接影响其翻译成机器码。 z 高度抽象导致效率降低(通常,编译程序的时间更长且执行速度更慢) ST 语句 关键字 说明 示例 说明 := 赋值 d := 10 将右边的一个供计算的数值赋值给 左边的标识符 调用 FB FB Name( Par1 := 10, Par2 := 20); 调用另一个类型为 FB 的 POU, 包括其参数 RETURN 返回 RETURN 脱离当前的 POU 和返回到调用 ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 共 21 页 第 17 页 POU IF 选择 IF d < e THEN f :=1; ELSEIF d = e THEN f := 2; ELSE f := 3; END_IF 通过布尔表达式选择替代值 CASE 多重选择 CASE f OF 1: g := 11; 2: g := 12; ELSE g := FunName(); END_CASE 根据表达式”f”的值选择一个语句 块 FOR 跌代 (1) FOR h:=1 TO 10 BY 2 DO F[h/2] := h; END_FOR 一个多循环语句块,带有起始和结 束条件以及一个增量值 WHILE 跌代 (2) WHILE m > 1 DO N := n / 2; END_WHILE 一个多循环语句块,具有在开始端 的结束条件 REPEAT 跌代 (3) 一个多循环语句块,具有在结束端 的结束条件 EXIT 循环的结束 EXIT; 一个跌代语句的结束条件。 ; 空白语句 ;; ST 语言不包括跳转指令 (GOTO)。 4.3 功能块图 FBD 功能块图(FBD)语言起源于信号处理领域,对信号处理而言,整数与/或浮点数是很重要 的。 使用图形化语言 FBD 或 LD 的 POU 表达式包括的部分与文本化语言相同。 1). POU 的引导部分和结束部分 2). 说明部分 3). 代码部分 代码部分 分为若干个网络。网络有助于构造 POU 的控制流。 一个网络包括 1). 网络标号 2). 网络注释 3). 网络图形 ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 共 21 页 第 18 页 4.4 梯形图 LD 梯形图语言 (LD) 源自机电一体化的继电器系统的应用领域,它描述一个 POU 的网络自左 至右的能量流。编程语言主要是用于处理布尔信号。 梯形图 LD 接点分类: 常开接点 常闭接点 上升沿接点 下降沿接点 梯形图 LD 线圈分类: 线圈 --( )-- 线圈的取反 --( / )-- 置位 (锁存) 线圈 --( S )-- 复位(解除锁存)线圈 --( R )-- 保持 (记忆) 线圈 --( M )-- 置位保持(记忆)线圈 --( SM )-- 复位保持(记忆)线圈 --( RM )-- 上升沿线圈 --( P )-- 下降沿线圈 --( N )-- 梯形图 LD 执行控制分类: 无条件返回 条件返回 无条件跳转 条件跳转 调用功能和功能块 ABB(中国)有限公司 武汉分公司 ABB 地址:中国湖北省武汉市武昌中南路 7号 3408 室 电话:(027)87259222 传真:(027)87259233 手机:15927508200 直拨:(027)87259230 共 21 页 第 19 页 5. CoDeSys 中全部运算符及功能名 ST 中操作符 IL 中操
/
本文档为【ABBcodesys软件编程基础编程手册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索