收藏 分享(赏)

倍福beckoff编程手册.pdf

上传人:weiwoduzun 文档编号:3291012 上传时间:2018-10-10 格式:PDF 页数:256 大小:1.70MB
下载 相关 举报
倍福beckoff编程手册.pdf_第1页
第1页 / 共256页
倍福beckoff编程手册.pdf_第2页
第2页 / 共256页
倍福beckoff编程手册.pdf_第3页
第3页 / 共256页
倍福beckoff编程手册.pdf_第4页
第4页 / 共256页
倍福beckoff编程手册.pdf_第5页
第5页 / 共256页
点击查看更多>>
资源描述

1、 自动化新技术 TwinCAT PLC 编程手册 德国倍福电气有限公司 2005 年 5 月 目录 第 1 页 目录 1 TwinCAT PLC Control 简介 .1 1.1 引言 1 1.2 项目组件 .3 1.3 语言 10 1.3.1 编程语言 10 1.3.2 指令表 (IL)10 1.3.3 结构化文本( ST) 12 1.3.4 顺序功能图( SFC) 17 1.3.5 功能块图( FBD) .21 1.3.6 连续功能图编辑器( CFC) .21 1.3.6 梯形图( LD) .22 1.4 调试,联机功能 24 1.5 IEC 61131-3 .26 2 样例程序 27

2、2.1 样例程序 .27 3 子项组件 36 3.1 主窗口 36 3.2 选项 38 3.3 项目管理 .53 3.4 对象 74 3.5 编辑功能 .87 3.6 联机功能 .92 3.7 窗口 101 3.8 帮助系统 .102 3.9 日志 103 4 编辑器 .105 4.1 概述 105 4.2 声明编辑器 .107 4.3 文本编辑器 .118 4.4 指令表编辑器 122 4.5 结构化文本编辑器 124 4.6 图形编辑器 .125 4.7 功能块图编辑器 127 目录 第 2 页 4.8 梯形图编辑器 132 4.9 连续功能图编辑器 137 4.10 顺序功能图编辑器 .

3、150 5 资源 .159 5.1 概述 159 5.2 全局变量 .160 5.3 PLC 配置 .163 5.4 任务配置 .164 5.5 抽样跟踪 .167 5.6 监视和接收管理器 172 6 库管理 .175 6.1 库管理器 .175 7 工程接口( ENI) .177 7.1 概述 177 8 附录 .180 8.1 数据类型 .180 8.1.1 概述 .180 8.1.2 标准数据类型 181 8.1.2.1 BOOL 181 8.1.2.2 BYTE.181 8.1.2.3 WORD.182 8.1.2.4 DWORD 182 8.1.2.5 SINT 182 8.1.2

4、.6 USINT182 8.1.2.7 INT 182 8.1.2.8 UINT182 8.1.2.9 DINT183 8.1.2.10 UDINT .183 8.1.2.11 REAL.183 8.1.2.12 LREAL.183 8.1.2.13 STRING.183 8.1.2.14 TIME184 8.1.2.15 TIME_OF_DAY .184 8.1.2.16 DATE.184 8.1.2.17 DATE_AND_TIME.184 8.1.3. 用户数据类型 185 8.1.3.1 数组 .185 8.1.3.2 指针 .186 8.1.3.3 枚举( ENUM) .186 目录

5、 第 3 页 8.1.3.4 结构( STRUCT) .187 8.1.3.5 参考类型(别名) .188 8.1.3.6 子范围类型 189 8.2 操作符 190 8.2.1 概述 .190 8.2.2 IEC 操作符概述 190 8.2.3 数值操作符 193 8.2.3.1 ABS.193 8.2.3.2 ACOS193 8.2.3.3 ASIN .194 8.2.3.4 ATAN.194 8.2.3.5 COS194 8.2.3.6 EXP.194 8.2.3.7 EXPT 194 8.2.3.8 LN .195 8.2.3.9 LOG 195 8.2.3.10 SIN 195 8.

6、2.3.11 SQRT 195 8.2.3.12 TAN .195 8.2.4 算术操作符 197 8.2.4.1 ADD 197 8.2.4.2 MUL 197 8.2.4.3 SUB 197 8.2.4.4 DIV198 8.2.4.5 MOD .198 8.2.5 位串操作符 199 8.2.5.1 AND 199 8.2.5.2 OR 199 8.2.5.3 XOR199 8.2.5.4 NOT 200 8.2.6 位移操作符 200 8.2.6.1 SHL.200 8.2.6.2 SHR 201 8.2.6.3 ROL 202 8.2.6.4 ROR202 8.2.7 选择操作符 2

7、04 8.2.7.1 SEL.204 8.2.7.2 MAX204 8.2.7.3 MIN .205 8.2.7.4 LIMIT.205 8.2.7.5 MUX205 8.2.8 比较操作符 207 8.2.8.1 GT.207 8.2.8.2 LT207 目录 第 4 页 8.2.8.3 LE .207 8.2.8.4 GE.208 8.2.8.5 EQ.208 8.2.8.6 NE.209 8.2.9 选择不同的操作符 .210 8.2.9.1 INDEXOF210 8.2.9.2 SIZEOF.210 8.2.9.3 ADR(地址操作符) ) .210 8.2.9.4 (内容操作符) .

8、210 8.2.9.5 CAL(调用操作符) 210 8.2.9.6 BITADR.211 8.2.10 类型转换操作符 .212 8.2.10.1 BOOL_TO 转换 212 8.2.10.2 TO_BOOL 转换 212 8.2.10.3 STRING_TO 转换 212 8.2.10.4 TO_STRING 转换 212 8.2.10.5 TIME_TO 转换 .213 8.2.10.6 DATE_TO 转换 .213 8.2.10.7 TOD_TO 转换 213 8.2.10.8 “DT_TO 转换 213 8.2.10.9 REAL_TO-/LREAL_TO 转换 214 8.2.

9、10.10 整型数类型之间的转换 214 8.2.10.11 TRUNC .214 8.3 操作数 215 8.3.1 常数 .215 8.3.1.1 BOOL 常数 .215 8.3.1.2 TIME 常数 215 8.3.1.3 DATE 常数 .215 8.3.1.4 TIME_OF_DAY 常数 215 8.3.1.5 DATE_AND_TIME 常数 .216 8.3.1.6 数值常数 216 8.3.1.7 REAL/LREAL 常数 .216 8.3.1.8 STRING 常数 .216 8.3.1.9 类型符 .217 8.3.2 变量 .218 8.3.2.1 变量 .218

10、 8.3.2.2 地址 .218 8.3.2.3 存取数组、结构和 POU 变量 .219 8.3.2.4 变量的位寻址 219 8.3.2.5 功能 .219 8.3.2.6 系统标志 .219 8.3.2.6.1 概述 219 8.3.2.6.2 SYSTEMINFO220 8.3.2.6.3 SYSTEMTASKINFOARR .220 目录 第 5 页 8.4 系统功能 .221 8.4.1 CheckBounds 功能 221 8.4.2 CheckDivByte 功能 222 8.4.3 CheckDivReal 功能 222 8.4.4 CheckDivWord 功能 223 8

11、.4.5 CheckDivDWord 功能 223 8.4.6 CheckRangeSigned 功能 224 8.4.7 CheckRangeUnsigned 功能 .225 8.5 使用键盘 .227 8.6 创建错误表 .231 8.7 命令行命令 .246 TwinCAT PLC Control: 简介 第 1 页 共 249 页 1 TwinCAT PLC Control 简介 1.1 引言 什么是 TwinCAT PLC Control? TwinCAT PLC Control 是为 PLC 设计的一种完整的开发环境。 TwinCAT PLC Control 为 PLC 编程提供了

12、一种简便的方法,可以自由地处理功能强大的 IEC 语言。编辑器和调试功能的使用则基于先进编程语言和已验证的程序开发环境。 TwinCAT PLC Control 概述 一个项目是如何构成的? 一个项目置于一个在项目后期命名的文件内。首先打开一个默认的“ Task Configuration(任务配置)”。任务的名字是“ Standard(标准)”。在一个新项目中建立的第一个 POU(程序组织单元)将自动地命名为“ MAIN(主程序 )”。你可以在任务配置中重新命名这个 POU。 TwinCAT PLC Control 能够区分一个项目中不同类型的对象: POU,数据类型和资源。对象管理器( O

13、bject Organizer)包括一个表,该表列出了项目中所有的对象。 怎样建立项目? 首先,你应该选择目标系统。然后配置任务。你可以建立解决你的问题所需要的 POU。现在你可以应用所期望的编程语言对你所需要的 POU 进行编程。一旦编程完成,你就可以编译该项目,并修改可能存在的任何错误。 如何测试项目? 一旦已经修改完成所有的错误, 联机 PLC 并将你的项目 “下载” 到 PLC 内。 现在, TwinCAT PLC Control 处于“联机”模式。测试你的项目是否为正确顺序。为此,手动设置输入变量并观察输出是否为期望值。你还可以观察 POU 中本地变量的数值顺序。在“ Watch a

14、nd Receipt Manager(监视和接收管理器)”中,你可以配置你想要检查的数据记录。 当程序出现错误时,你可以设置断点。如果程序在该断点处停止,你可以及时在该断点处检查项目所有的变量值。并按照顺序操作(单步),检查程序的逻辑正确性。 TwinCAT PLC Control 还有另外一种调试功能:你可以设置程序变量以及输入和输出为某些值。你可以使用流控制来检查哪些程序行已经运行。使用“ Sampling Trace(抽样跟踪)”,可以在扩展的时间范围内跟踪和显示变量的实际变化过程。 “ Log(日志)”则按时间顺序记录在联机对话期间的操作、用户采取的动作和各种内部过程。 整个项目可随时

15、进行文档化或输出到一个文本文件。 其它功能 整个项目可随时进行文档化或输出到一个文本文件。也可将它翻译成其它语言。 ENI:通过 ENI 接口(“工程接口”),可 以将编程系统连接到一个外部数据库。在那里可以存储创建一个自动化项目过程中所需要的各种数据。外部数据库的使用保证了数据的一致性,这些数据以后可以被多个用户、项目和程序所共享。 小结 TwinCAT PLC Control: 简介 第 2 页 共 249 页 TwinCAT PLC Control 是一个完整的开发工具,用来对你的 PLC 进行编程,它能大量节省建立应用程序所需要的时间。 TwinCAT PLC Control:简介 第

16、 3 页 共 249 页 1.2 项目组件 一个项目包含一个 PLC 程序中的所有对象。项目保存在项目后期命名的一个文件内。一个项目包括以下对象: POU(程序组织单元),数据类型,资源和软件库。 POU(程序组织单元) 功能、功能块和程序都是 POU,它们可以使用动作( Action)加以补充。 每个 POU 都由一个声明部分和一个程序本体组成。程序由 IEC 编程语言中的一种语言编写(这些语言包括 IL、 ST、 SFC、 FBD、 LD 或 CFC)。 TwinCAT PLC Control 支持所有 IEC 的标准 POU。如果你需要在项目中使用这些标准 POU,则必须在你的项目中包括

17、标准库( standard.lib)。 一个 POU 可调用其它 POU。然而不允许进行递归调用。 功能 一个功能即是一个 POU,当对它进行处理时,它可准确地生成数据元素(诸如由几个字段或结构等元素组成),并在文本语言调用时作为表达式内的一个操作符出现。 当声明一个功能时,不要忘记功能必须返回一个类型。这意味着,在功能名后,你必须输入一个冒号,后跟一个类型。 一个正确的功能声明有如下示例那样的形式: FUNCTION Fct:INT 此外,必须对功能分配一个结果。这意味着,功能名作为一种输出变量使用。 以下为使用 IL(指令表)编写的一个功能例子,它有三个输入变量,并返回由前二个变量乘积除以

18、第三个变量的结果: 由 ST(结构化文本)编写的一个功能调用可作为表达式中的一个操作数。功能没有任何内部条件。这意味着,由相同变元(输入参数)调用的一个功能总是产生相同的值(输出)。 注意:如果你在一个功能内声明一个保持型的本地变量,这是没有意义的。变量不会保存到保留区! 调用上述功能的示例: 使用 IL: LD 7 Fct 2,4 ST Result TwinCAT PLC Control:简介 第 4 页 共 249 页 使用 ST 语言: Result := Fct(7, 2, 4); 使用 FBD: 使用 SFC 时,一个功能调用只出现在一个步或一个转换内。 注意: 如果在项目中应用名

19、称“ CheckBounds”来定义一个功能,你可以使用这个名字来检查项目中是否有范围溢出!该功能名是系统预定义的,而且系统只识别这个标识符。 下面的典型程序是使用 CheckBounds 功能测试超出一个定义数组的边界。 CheckBounds 功能可以确认 TRUE 值没有分配给 A10,而是分配给上边界 A7,在这一位置, A7 仍然有效。因此, Check Bounds 功能可以用来检查是否超出数值边界。 注意: 如果在你的项目中,使用了 CheckDivByte、 CheckDivWord、 CheckDivDWord 和 CheckDivReal 定义的功能,并且使用了操作符 DI

20、V,则它们可以用于检查除数的有效性,例如用来避免出现被 0 除。该功能名是系统预定义的,而且系统只识别这个标识符。 如果你使用 CheckRangeSigned 和 CheckRangeUnsigned 来定义功能,则超出由子范围类型声明的变量范围可以被截断。 所有这些检查的功能名都被系统作为应用程序的保留名。 功能块 一个功能块即是一个 POU ,它提供程序运行过程中的一个或多个值。与功能相比,功能块不提供返回值。 以下是有二个输入变量和二个输出变量的一个功能块的例子,使用 IL 语言编写。其中一个输出是二个输入的乘积,另一个输出则比较它们是否相等: TwinCAT PLC Control:

21、简介 第 5 页 共 249 页 功能块实例 可以创建一个功能块的拷贝或实例(复制)。每个实例都具有其自身的标识符(实例名),以及包含有输入、输出和内部变量的数据结构。实例可以作为本地或全局变量加以声明,而功能块名是作为标识符类型予以指示的。 示例,名称为“ INSTANCE”的 FUB 功能块的实例: INSTANCE:FUB; 功能块总是通过上述实例调用的。 只能从一个功能块实例的外部存取输入和输出参数,而不能从其内部变量存取这些参数。 存取一个输入变量的示例: 功能块 FB 有一个类型 INT 的输入变量 in1。 PROGRAM prog VAR inst1:fb; END_VAR L

22、D 17 ST inst1.in1 CAL inst1 END_PROGRAM 功能块和程序的声明部分可包含实例声明。在功能内不允许有实例声明。 对一个功能块实例的访问除非它们是全局声明的,否则只限于声明它们的 POU。一个功能块实例的实例名可用作一个功能或一个功能块的输入。 注意: 处理一个功能块后,所有的值直到下一次处理之前都加以保留。因此,通过相同变元的功能块调用并不总是返回相同的输出值! 提示: TwinCAT PLC Control:简介 第 6 页 共 249 页 如果至少有一个功能块变量是一个保留变量,则全部实例都存储在保留区。 调用一个功能块 通过建立一个功能块实例,并用以下语

23、法规定所期望的变量,则可以从其它 POU 存取一个功能块的输入和输出变量。 . 当你打开功能块时,如果要设置输入参数(输入变量的值),你可以使用文本语言 IL 和 ST,通过对括号(位于功能块实例名后)内的参数赋值来设置输入参数(使用“ :=”进行赋值,如同在声明位置的变量初始化)。 请注意, POU 的输入 /输出变量 (VAR_IN_OUT) 将转变成为一个指针。因此,在调用时不能对它们赋值常数,而且不能进行外部的读或写操作。 应用 ST 语言编写的调用 POU fubo 的 VAR_IN_OUT 变量 inout1 示例: VAR inst:fubo; var1:int; END_VAR

24、 var1:=2; inst(inout1:=var1); 不允许: inst(inout1:=2); 或 inst.inout1:=2; 调用上述功能块 FUB 的例子。乘法结果保存在变量 ERG 内,比较结果保存在 QUAD 内。并声明功能块 FUB 的实例名为 INSTANCE: 使用 IL 语言,按以下程序调用功能块: TwinCAT PLC Control:简介 第 7 页 共 249 页 在以下例子中,使用 ST 语言表示的调用。声明部分同 IL 语言: 使用 FBD 语言,屏幕显示如下(声明部分同 IL 语言): 使用 SFC 语言,只能按步调用功能块。 程序 一个程序即是一个

25、POU,它在运行过程中返回若干个值。并全局识别整个项目的程序。从上一次运行程序直到下一次运行程序,一直保留所有的值。 程序可以被调用。不允许在一个功能内调用一个程序。也不存在程序的实例。如果一个 POU 调用一个程序,而且如果程序的值随之改变,那么,这些改变将被保留到下一次调用程序(即使从其它 POU 内已调用了该程序)。这不同于调用一个功能块。那里只改变功能块给定实例中的值。因此仅当调用相同实例时,这些改变才起作用。一个程序声明以关键字 PROGRAM 开始,以 END_PROGRAM 结束。 上述程序调用的示例: 使用 IL 语言: TwinCAT PLC Control:简介 第 8 页

26、 共 249 页 CAL PRG Example LD PRGexample.PAR ST ERG 使用 ST 语言: PRGExample; Erg := PRGexample.PAR; 使用 FBD 语言: 如果从程序 PRGexample 来的变量 PAR 是通过一个带有 0 的主程序初始化, 然后以上述命名的程序调用逐一调用其它程序,那么,程序中的 ERG 结果将有值 1、 2 和 3。如果交换调用顺序,那么,给定结果参数的值也应相应的改变。 动作 作为功能块和程序的附加特性,你可以定义各种动作( Action)。一个动作是使用步实现的。它可以使用与“ normal(常规)”实现体不同

27、的语言编写。每个动作有一个名字。 一个动作是与关联的功能块或程序的数据一起工作的。它与“常规”实现体一样,使用相同的输入 /输出变量和局部变量。 参见上图中的示例: 当调用功能块 Counter 时,输出变量随输入变量 in 增加或减小。当调用附属于功能块的动作 Reset 时,输出变量设置为 0。在这两种情况下,编写相同的输出变量 Out。 相应于 .,通过 . 调用一个动作。如果必须在主模块内调用动作,则在文本编辑器中,只使用动作名,在图形编辑器中,功能块的调用不需要实例名。 示例 对所有示例的声明: PROGRAM PLC_PRG VAR Inst : Counter; END_VAR

28、TwinCAT PLC Control:简介 第 9 页 共 249 页 使用 IL 语言: CAL Inst.Reset(In := FALSE) LD Inst.out ST ERG 使用 ST 语言: Inst.Reset(In := FALSE); Erg := Inst.out; 使用 FBD 语言: 注意: 有关 SFC 动作的详细信息,请参见“ SFC”章节。 在 IEC 61131-3 标准中,只描述用于 SFC 的动作。 资源 为了配置和组织项目以及跟踪变量值,你需要使用资源: null “全局变量( Global Variable)”,它可以在整个项目中使用。 null 用

29、来配置硬件的“ PLC 配置( PLC Configuration)”。 null 引导程序执行各种任务的“任务配置( Task Configuration)”。 null 用于变量图形化显示的“抽样跟踪( Sampling Trace)”。 null 用来显示变量和设置默认变量的“监视和接收管理器( Watch and Receipt Manager)”。 参见“资源”章节。 软件库 你可以在项目中包括一系列的软件库。你可以像用户定义变量那样使用这些库的 POU、数据类型以及全局变量。 “standard.lib“ 库是程序的一个标准部分,供你随时使用。 参见章节“库管理器”。 数据类型 除

30、标准数据类型之外,用户还可以定义自己的数据类型。并可以建立结构、枚举类型和子类型。 参见附录中的“标准数据类型”和“用户定义的数据类型”。 TwinCAT PLC Control: 简介 第 10 页 共 249 页 1.3 语言 1.3.1 编程语言 TwinCAT PLC Control 支持所有的 IEC61131-3 编程语言。有两种文本编程语言和三种图形编程语言。 文本编程语言 null 指令表 (IL) null 结构化文本( ST) 图形编程语言 null 功能块图( FBD) null 梯形图 (LD) null 连续功能图( CFC) null 顺序功能图( SFC) 1.3

31、.2 指令表 (IL) 指令表( IL)由一系列指令组成。每个指令在一个新行的开始,包含有一个操作符以及取决于操作符类型的一个或几个以逗号分隔的操作数。在指令前面可以有标识符号(标记),后跟一个冒号(:)。 注释必须是一行的最后元素。指令之间可以插入空行。 例: LD 17 ST lint (* 注释 *) GE 5 JMPC next LD idword EQ istruct.sdword STN test next: 使用IL语言的修饰符和操作符 在 IL 语言中,可以使用以下操作符和修饰符。 修饰符: null JMP、 CAL、 RET 带有 C:仅当前面的表达式结果是 TRUE(真)

32、时,才执行指令。 null JMPC、 CALC、 RETC 带有 N:仅当前面的表达式结果是 FALSE(假)时,才执行指令。 null 其它情况的 N:操作数的求反运算(不是累加器) 以下列出所有用于 IL 语言的操作符以及可能的修饰符和操作符相应的含义: 操作符 修改符 含义 LD N 使当前的结果等于操作数 TwinCAT PLC Control: 简介 第 11 页 共 249 页 ST N 在操作数位置保存当前结果 S 如当前结果是 TRUE,将布尔操作数设置为 TRUE R 如当前结果是 TRUE,将布尔操作数设置为 FALSE AND N, ( 按位逻辑“与” OR N, (

33、按位逻辑“或” XOR ( 按位“异或” ADD ( 加法 SUB ( 减法 MUL ( 乘法 DIV ( 除法 GT ( EQ ( = NE ( TwinCAT PLC Control: 简介 第 13 页 共 249 页 布尔“与” AND 布尔“异或” XOR 布尔“或” OR 最低优先级 以下是使用 ST 语言的指令,表中同时给出示例: 指令 示例 赋值 A:=B; CV := CV + 1; C:=SIN(X); 调用功能块并使用 FB 形式 CMD_TMR(IN := %IX5, PT := 300);A:=CMD_TMR.Q; RETURN RETURN; IF IF D 70

34、DO J:=J+2; END_WHILE; REPEAT REPEAT J:=J+2; UNTIL J= 101 OR ARRJ = 70 END_REPEAT; EXIT EXIT; 空指令 ; 结构化文本中的指令 前面提到,结构化文本( ST)用于结构化的编程,亦即 ST 为诸如编程循环等这些常用的结构提供预先规定的结构。这样做的好处是可以降低出现差错的可能性,并提高程序的可读性。 例如,让我们比较使用 IL 和使用 ST 编写的二个相同功能的程序: 使用 IL 语言编写的计算二次方冪的一个循环: TwinCAT PLC Control: 简介 第 14 页 共 249 页 Loop :

35、LD Counter EQ 0 JMPC end LD Var1 MUL 2 ST Var1 LD Counter SUB 1 ST Counter JMP Loop End: LD Var1 ST ERG 使用 ST 语言编写同样的循环程序为: WHILE Counter0 DO Var1 := Var1*2; counter := counter-1; END_WHILE WHILE 和 REPEAT 循环在某种意义上要比 FOR 循环的功能更强,这是因为在执行循环之前,我们不需要知道循环次数。 因而在某些场合, 我们运用这二种循环类型。 然而, 如果循环次数是明确的, 则使用 FOR 循

36、环,这是因为采用这种循环不会出现无休止的循环。 REPEAT 循环 REPEAT 循环与 WHILE 循环不同,这是因为前者只在循环已完成后才检查终止条件。这意味着,与终止条件的运行无关,这种循环至少运行一次。 语法: REPEAT UNTIL END_REPEAT; 直到 返回 TRUE 为止,一直执行 。如果在第一个 TRUE 求值时已经生成 ,则只执行一次 。若 从不出现值 TRUE,则 将无休止地重复,并导致一个相应的死循环。 注意:编程员必须确认,不会形成无休止地循环。可通过改变循环语句指令部分中的条件来检查是否会出现这种情况(例如通过一个计数器的加计数或减计数)。 示例: REPE

37、AT Var1 := Var1*2; Counter := Counter-1; UNTIL Counter=0 END_REPEAT EXIT 指令 若在 FOR、 WHILE 或 REPEAT 循环中出现 EXIT 指令,则与终止条件无关,结束最内层的循环。 1.3.4 顺序功能图(SFC) 顺序功能图是一种面向图形表示的语言,使用顺序功能图,可以按时间顺序描述程序内的不同动作( Action)。 使用顺序功能图语言的一个网络示例: TwinCAT PLC Control: 简介 第 18 页 共 249 页 步 使用顺序功能图语言编写出的 POU 是由一系列的步组成的,通过定向连接(转换

38、)将这些步彼此连接。 步有二种类型。 null 简化类型由一个动作和一个表示该步是否有效的标记组成。若要实施一个步的动作,则在该步的右上角出现一个小三角形。 null 一个 IEC 步由一个标记和一个或几个分配的动作组成。相应的动作出现在步的右边。 动作 一个动作可以包含一系列由 IL 或由 ST 编写的指令,由 FBD 或由 LD 编制的若干网络,或再次以顺序功能图( SFC)表示的网络。对于简化步,一个动作总是连接到一个步。为了编辑一个动作,在动作所属的步上双击鼠标。或选择步并选择菜单命令“ Extras”(附加)“ Zoom Action/Transition”(缩放动作 /转换)。此外

39、,步可以有输入或输出动作。 IEC 步的动作位于“ Object Organizer(对象管理器)”中,并直接处于其 SFC-POU 下。通过双击或通过按压其编辑程序中的 键进行装载。使用“ Project(项目)”“ Add Action(添加动作)”可建立新的动作。 进入或退出动作 除了步的动作外,你还可对一个步附加一个进入动作和一个退出动作。进入动作只执行一次,正好在该步有效之后。退出动作只在该步失效之前执行一次。带有进入动作的步由一个左下角“ E”指示,退出动作由一个右下角“ X”指示。可用任何一种语言来实现进入和退出动作。为了编辑进入或退出动作,在步的相应角双击鼠标。只能对简化步定义

40、一个进入和退出动作,而不能对一个 IEC 步定义进入和退出动作。 带有进入和退出动作的步示例: TwinCAT PLC Control: 简介 第 19 页 共 249 页 转换/转换条件 在各步之间有所谓的转换。一个转换条件必需具有值 TRUE 或 FALSE。从而,它可以由一个布尔变量、一个布尔地址或者是一个布尔常数组成。 它也可包含一系列有布尔结果的指令, 这些指令或是用 ST 语言,(例如, (i.x 的逻辑值来表示步标志(步的有效或失效条件)。若相应的步是有效的,这个布尔变量有值 TRUE,若是失效的,则为值 FALSE。这个变量是隐式地声明的,并可用于 SFC POU 的任何动作和

41、转换。在一个控制周期内,执行属于有效步的所有动作。此后,若后继步的转换条件为 TRUE,则有效步相应动作的后继步成为有效步。当前的有效步将在下一个周期内执行。 注意: 若有效步包含一个输出动作,则这个有效步仅在下个周期内执行(假定后继的转换是 TRUE)。 IEC 步 与简化步一起,也提供使用 SFC 语言编写的标准 IEC 步。为了能使用 IEC 步,你必需将库 TcSystem.Lib 连接到你的项目内。 可将任何数量的动作分配给一个 IEC 步。 IEC 动作并不像简化步那样将输入步或输出动作固定在某些步上,而是独立于步进行存储,并可在一个 POU 内多次地重复使用。为此目的, IEC

42、步必须使用命令 ExtrasAssociate action(附加关联动作)与单个步相关联。 与动作一起,可将布尔变量分配给步。 动作和布尔变量的有效和失效可应用所谓修饰符加以控制。延时是可能的。由于一个动作可以依旧是有效的(若已处理下一步),例如经过修饰符 S (Set),因而可实现并行处理。 每一次用 SFC 块来置位或复位一个关联的布尔变量。这意味着,随着每次调用,更改 TRUE 或 FALSE 的值,或重新回到原值。 与 IEC 步相关联的动作示于步右侧的一个二分框内。左边区域包含修饰符,(可能有时间常数),右边区域包含动作名。 带有二个动作的 IEC 步示例: TwinCAT PLC

43、 Control: 简介 第 20 页 共 249 页 为了方便地跟踪过程,所有联机模式下的有效动作如同有效步那样以蓝色表示。在每个循环后进行一次检查,察看哪一个动作是有效的。 还要注意在动作中使用时间修饰符的一些约束条件,在相同的循环内,这些约束条件是可以被重复使用的。 注意: 若已撤消了一个动作,它还可能再执行一次。这意味着,每个动作至少会执行二次(以及有修饰符 P 的动作)。若出现一个调用首先执行失效的动作,然后每次以字母的次序执行有效的动作。 一个新插入的步是否是一个 IEC 步,取决于是否已选用菜单命令 “Extras“(附加) “Use IEC-Steps“(使用 IEC 步)。

44、在“ Object Organizer(对象管理器)”内,动作直接附加在相应的 SFC POU 下面。 “Project(项目) “ “Add Action(添加动作) “可建立新的动作。为了使用 IEC 步,必需在项目内包括专用的 SFC 库 lecsfc.lib。 为了使动作与 IEC 步相关联,提供以下的修饰符: N 不存储 只要步有效动作就有效 R 复位优先 动作失效 S 置位(存储的) 动作有效并在复位之前一直保持有效。 L 时间“有限制的” 在一定的时间内动作是有效的。 D 时间“延迟的” 只要步始终保持有效,经过一定的时间后,动作有效。 P 脉冲 若步是有效的,动作只执行一次。

45、SD 存储的和时间 延迟的 经过一定的时间后该动作有效,并且保持直到出现一个 复位 。 DS “延迟的”和“存储的” 只要步仍然保持有效,经过一定的时间后该动作有效,并且保持有效,一直到出现一个 复位 。 SL “存储的” 和时间 “有限制的” 在一定时间内该动作是有效的。 注意: 如果在二个直接紧邻的步中采用有修饰符的相同动作(它影响时间流),时间修饰符在第二次使用时不能成为可操作的。为了避免出现这种情况,必须插入一个中间步。这样,当通过附加循环时可以重新使动作状态初始化。 SFC语言内的隐含变量 SFC 语言具有隐含声明的可用变量。每个步都有一个保存该步状态的标志。步标记(步的有效或失效状

46、态)对 IEC 步而言称为 .x,或对简化步而言称为 。当关联的步有效时,这个布尔变量具有值 TRUE,当它失效时,其值为 FALSE。它可用于 SFC 块的每个动作和转换。我们可使用变量 .x 进行一次询问,以了解一个 IEC 动作是有效的还是失效的。 选择分支 TwinCAT PLC Control: 简介 第 21 页 共 249 页 SFC 语言中的两个或多个分支可定义为选择分支( alternative branch)。每个选择分支必需由一个转换来开始和结束。 选择分支可包含并行分支和其它选择分支。 一个选择分支由一条水平线开始 (选择分支开始) ,并由一条水平线或一次跳转结束(选择

47、分支结束)。 如果位于分支开始线之前的步是有效的,则从左向右求值每个选择分支的第一个转换。如果从左边开始的第一个转换其转换条件为值 TRUE,则开放相应的支路,随后的步均为有效。 对于 IEC 步而言,隐含变量 .t 可用来询问各步的有效时间。其它程序也可存取隐含变量。示例:boolvar1:=sfc.step1.x;这里 step1.x 是隐含布尔变量,它表示 POU Sfc1 中的 step1(步 1)的 IEC 步状态。 并行分支 SFC 语言中的两个或多个分支可定义为并行分支( parallel branch)。每个并行分支必需由一个步来开始和结束。并行分支可包含选择分支或其它并行分支。一个并行分支由一条双线开始(并行分支开始),并由一条双线或一次跳转结束(并行分支结束)。 如果并行开始线以前的步是有效的,而且这个步以后的转换条件是值 TRUE,则所有并行分支的第一步都成为有效的(见“有效步”)。至此,这些分支彼此并行地进行处理。如果所有以前的步都有效,而且该步前面的转换条件生成值 TRUE,则并行结束线后的步变为有效。 跳转 跳转( jump)即是到一个步的连接,该

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 产品手册

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报