1、 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLC前 言 前 言 随着计算机技术和信息技术的飞速发展,PC 机(工业 IPC 或普通 PC)已被越来越多地应用于自动化控制领域。PC 机在工业控制中的应用,已经从完成上位机监控、可视化人机界面,发展到用 PC 机直接取代 PLC 和 NC/CNC 控制设备,通过一个硬件平台同时完成实时控制、可视化、通信和网络等多种功能,即所谓的 PC 控制技术。采用 PC 控制,开放性好,速度快,运算能力强,具有传统的 PLC 系统无法比拟的强大功能。 德国倍福电气有限公司 (BECKHOFF) 自上个
2、世纪 80 年代以来, 紧跟 IT 技术的发展步伐, 始终致力于推广基于 PC 控制平台的新技术,从高速机械加工,生产流水线到楼宇自动化,通过大量的应用实例积累了丰富的经验。 德国倍福电气有限公司推出的 TwinCAT 软件是遵循 IEC61131- 3 标准的编程开发软件,支持指令表(IL)、结构文本(ST)、梯形图(LD)、功能块图(FBD)、顺序流程图(SFC)和连续功能块图(CFC)编程语言;其特点是功能强大、编程方便、系统开放,可以轻松缩短开发周期,极大地提高工作效率。TwinCAT PLC 软件和系统管理器相结合,可以支持目前市面上流行的现场总线, 包括:EtherNet、Prof
3、ibus、CANopen、DeviceNet、Modbus、SERCOS、RS232/485、Lightbus 等。最新版本的 TwinCAT PLC 软件还支持德国倍福新推出的超高速 I/O 实时以太网 EtherCAT,并集成了 HMI 的功能,真正实现了 PLC、NC/CNC 和 HMI 三者的完美统一,是一款不可多得的开放式 PC 平台的编程开发软件和软逻辑运行软件,代表了当今新自动化技术时代的发展潮流。 TwinCAT 软件是运行于 Windows NT/2000/XP 平台下的实时控制软件,安装 TwinCAT 软件之后,可以将配备 Windows NT/2000/XP 操作系统的
4、 PC 机提升为具备实时处理能力的控制器,使 PC 机的性价比显著提高;另外,TwinCAT 软件是支持本公司全部硬件产品的开发平台,全面支持 BC/BK 系列、BX 系列、CX 系列和 PC 平台产品。TwinCAT 软件拥有四套独立运行的实时 PLC 控制器,每套 PLC 都可配置四个独立运行的任务。TwinCAT 软件的最小运行周期可达 50 微秒。TwinCAT 全面支持本地编程和远程编程,包括 Internet 的编程;设备之间使用自动化规范的 ADS 通讯,可以轻松实现数据交换。 另外,TwinCAT 软件也支持具备上述现场总线协议的第三方产品,并按照用户的不同需求提供 ADS D
5、LL 动态库、ADS OCX 控件和 OPC 服务器接口,方便用户顺利实现可视化的 HMI 功能。 为适应中国自动化技术的发展, 便于广大用户尽快学习和掌握 TwinCAT PLC 软件的编程方法, 德国倍福电气有限公司驻中国代表处的工程师们在短时间内翻译、编写了这本 TwinCAT PLC 编程手册,并以此向德国倍福公司成立二十五周年献礼。 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLC本技术手册共分八章 第一章重点介绍了 TwinCAT PLC 软件的五种编程方法, 即: 指令表(IL)、 结构文本(ST)、 梯形图(LD)、
6、功能块图(FBD)和顺序流程图(SFC),并对连续功能块图(CFC)的编程方法也作了讲解。目的是帮助用户从总体上对 TwinCAT PLC 软件有一个全面的感性认识。 第二章详细讲解了使用 TwinCAT PLC 软件创建一个具体示例的编程和操作过程,目的是帮助用户快速使用TwinCAT PLC 软件进行编程。 第三章对 TwinCAT PLC 软件的各个子项组件功能进行了详细的说明,包括:主窗口、选项、项目管理、对象、编辑功能、联机功能、消息窗口、帮助系统和日志等,目的是帮助用户掌握如何创建对象和高效率的管理对象,以及如何正确使用 TwinCAT PLC 软件的不同功能。 第四章对 IEC6
7、1131- 3 标准支持的五种编程语言和 TwinCAT PLC 软件支持的 CFC 编程语言编辑器进行了详细的阐述,目的是帮助用户正确地声明变量和实现用户所需要的各种功能。 第五章详细阐述了 TwinCAT PLC 软件中的各种资源,包括全局变量、PLC 配置、任务配置、抽样跟踪以及监视和接收管理器。 第六章对库管理器进行了详细的说明,TwinCAT PLC 软件中的库是由完成各种任务的程序、功能、功能块和数据结构组成的,很多商用的软件库都是采用这种软件库的形式进行封装的,因此,如何定制软件库对很多软件设计者和开发者以及 OEM 供应商而言是非常重要的。 第七章对工程接口 ENI 进行了详细
8、的说明。ENI 接口可以使 TwinCAT PLC 软件具备网络共享程序代码的各种资源,提高效率,从而缩短软件工程开发周期。 第八章阐述了各种数据类型、操作符、 操作数、 系统功能、键盘使用、错误表和命令行命令等, 可作为 TwinCAT PLC 软件的技术词典。 以上八章内容相对独立,并且前后呼应,形成了一个系统的技术手册。由于时间比较仓促,且手头的资料有限,在翻译和编写过程中难免有错误和疏漏之处, 欢迎大家在使用过程中提出宝贵意见, 更希望各位在使用 TwinCAT PLC 编程手册之后能向我们提供产品应用方面的经验和体会, 以便对本技术手册不断更新和完善, 同时也为推动我国自动化技术的创
9、新作出自己的一份努力。 德国倍福电气有限公司北京代表处 技术主管:刘卫列 2005 年 5 月 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control:目录 第 4 页 共 256 页 目录 1 TwinCAT PLC Control 简介 .9 1.1 引言.9 1.2 项目组件. 11 1.3 语言.18 1.3.1 编程语言.18 1.3.2 指令表 (IL).18 1.3.3 结构化文本(ST).20 1.3.4 顺序功能图(SFC) .25 1.3.5 功能块图(FBD).29 1.3.6 连
10、续功能图编辑器(CFC).29 1.3.6 梯形图(LD).30 1.4 调试,联机功能.32 1.5 IEC 61131- 3 .34 2 样例程序.35 2.1 样例程序.35 3 子项组件.44 3.1 主窗口.44 3.2 选项.46 3.3 项目管理.61 3.4 对象.82 3.5 编辑功能.95 3.6 联机功能.100 3.7 窗口.109 3.8 帮助系统. 110 3.9 日志.111 4 编辑器. 113 4.1 概述. 113 4.2 声明编辑器. 115 4.3 文本编辑器.126 4.4 指令表编辑器.130 4.5 结构化文本编辑器 .132 4.6 图形编辑器.
11、133 4.7 功能块图编辑器.135 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control:目录 第 5 页 共 256 页 4.8 梯形图编辑器.140 4.9 连续功能图编辑器 .145 4.10 顺序功能图编辑器.158 5 资源.167 5.1 概述.167 5.2 全局变量.168 5.3 PLC 配置 .171 5.4 任务配置.172 5.5 抽样跟踪.175 5.6 监视和接收管理器 .180 6 库管理.183 6.1 库管理器.183 7 工程接口(ENI).185 7.1 概述
12、.185 8 附录.188 8.1 数据类型.188 8.1.1 概述.188 8.1.2 标准数据类型 .189 8.1.2.1 BOOL.189 8.1.2.2 BYTE .189 8.1.2.3 WORD .190 8.1.2.4 DWORD.190 8.1.2.5 SINT.190 8.1.2.6 USINT.190 8.1.2.7 INT.190 8.1.2.8 UINT .190 8.1.2.9 DINT .191 8.1.2.10 UDINT.191 8.1.2.11 REAL.191 8.1.2.12 LREAL .191 8.1.2.13 STRING.191 8.1.2.1
13、4 TIME .192 8.1.2.15 TIME_OF_DAY.192 8.1.2.16 DATE.192 8.1.2.17 DATE_AND_TIME.192 8.1.3. 用户数据类型 .193 8.1.3.1 数组.193 8.1.3.2 指针.194 8.1.3.3 枚举(ENUM).194 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control:目录 第 6 页 共 256 页 8.1.3.4 结构(STRUCT).195 8.1.3.5 参考类型(别名).196 8.1.3.6 子范围类型
14、.197 8.2 操作符.198 8.2.1 概述.198 8.2.2 IEC 操作符概述.198 8.2.3 数值操作符.201 8.2.3.1 ABS.201 8.2.3.2 ACOS.201 8.2.3.3 ASIN .201 8.2.3.4 ATAN.201 8.2.3.5 COS.202 8.2.3.6 EXP.202 8.2.3.7 EXPT .202 8.2.3.8 LN .202 8.2.3.9 LOG.203 8.2.3.10 SIN .203 8.2.3.11 SQRT.203 8.2.3.12 TAN .203 8.2.4 算术操作符.204 8.2.4.1 ADD.20
15、4 8.2.4.2 MUL.204 8.2.4.3 SUB .204 8.2.4.4 DIV.205 8.2.4.5 MOD .205 8.2.5 位串操作符.206 8.2.5.1 AND.206 8.2.5.2 OR .206 8.2.5.3 XOR.206 8.2.5.4 NOT.207 8.2.6 位移操作符.207 8.2.6.1 SHL.207 8.2.6.2 SHR.208 8.2.6.3 ROL .209 8.2.6.4 ROR.209 8.2.7 选择操作符. 211 8.2.7.1 SEL. 211 8.2.7.2 MAX. 211 8.2.7.3 MIN.212 8.2.
16、7.4 LIMIT.212 8.2.7.5 MUX.212 8.2.8 比较操作符.214 8.2.8.1 GT.214 8.2.8.2 LT.214 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control:目录 第 7 页 共 256 页 8.2.8.3 LE .214 8.2.8.4 GE.215 8.2.8.5 EQ.215 8.2.8.6 NE.216 8.2.9 选择不同的操作符.217 8.2.9.1 INDEXOF.217 8.2.9.2 SIZEOF.217 8.2.9.3 ADR(地址
17、操作符) ).217 8.2.9.4 (内容操作符).217 8.2.9.5 CAL(调用操作符) .217 8.2.9.6 BITADR.218 8.2.10 类型转换操作符.219 8.2.10.1 BOOL_TO 转换.219 8.2.10.2 TO_BOOL 转换.219 8.2.10.3 STRING_TO 转换.219 8.2.10.4 TO_STRING 转换.219 8.2.10.5 TIME_TO 转换.220 8.2.10.6 DATE_TO 转换 .220 8.2.10.7 TOD_TO 转换.220 8.2.10.8 “DT_TO 转换.220 8.2.10.9 REA
18、L_TO- /LREAL_TO 转换 .221 8.2.10.10 整型数类型之间的转换.221 8.2.10.11 TRUNC.221 8.3 操作数.222 8.3.1 常数.222 8.3.1.1 BOOL 常数.222 8.3.1.2 TIME 常数.222 8.3.1.3 DATE 常数 .222 8.3.1.4 TIME_OF_DAY 常数.222 8.3.1.5 DATE_AND_TIME 常数.223 8.3.1.6 数值常数.223 8.3.1.7 REAL/LREAL 常数.223 8.3.1.8 STRING 常数.223 8.3.1.9 类型符 .224 8.3.2 变
19、量.225 8.3.2.1 变量.225 8.3.2.2 地址.225 8.3.2.3 存取数组、结构和 POU 变量.226 8.3.2.4 变量的位寻址.226 8.3.2.5 功能.226 8.3.2.6 系统标志 .226 8.3.2.6.1 概述 .226 8.3.2.6.2 SYSTEMINFO .227 8.3.2.6.3 SYSTEMTASKINFOARR .227 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control:目录 第 8 页 共 256 页 8.4 系统功能.228 8.4
20、.1 CheckBounds 功能.228 8.4.2 CheckDivByte 功能 .229 8.4.3 CheckDivReal 功能.229 8.4.4 CheckDivWord 功能.230 8.4.5 CheckDivDWord 功能.230 8.4.6 CheckRangeSigned 功能.231 8.4.7 CheckRangeUnsigned 功能.232 8.5 使用键盘.234 8.6 创建错误表.238 8.7 命令行命令.253 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Con
21、trol:简介 第 9 页 共 256 页 1 TwinCAT PLC Control 简介 1.1 引言 什么是什么是 TwinCAT PLC Control? TwinCAT PLC Control 是为 PLC 设计的一种完整的开发环境。TwinCAT PLC Control 为 PLC 编程提供了一种简便的方法,可以自由地处理功能强大的 IEC 语言。编辑器和调试功能的使用则基于先进编程语言和已验证的程序开发环境。 TwinCAT PLC Control 概述 一个项目是如何构成的?一个项目是如何构成的? 一个项目置于一个在项目后期命名的文件内。首先打开一个默认的“Task Confi
22、guration(任务配置)”。任务的名字是“Standard(标准)”。在一个新项目中建立的第一个 POU(程序组织单元)将自动地命名为“MAIN(主程序)”。你可以在任务配置中重新命名这个 POU。TwinCAT PLC Control 能够区分一个项目中不同类型的对象:POU,数据类型和资源。对象管理器(Object Organizer)包括一个表,该表列出了项目中所有的对象。 怎样建立项目?怎样建立项目? 首先,你应该选择目标系统。然后配置任务。你可以建立解决你的问题所需要的 POU。现在你可以应用所期望的编程语言对你所需要的 POU 进行编程。一旦编程完成,你就可以编译该项目,并修改
23、可能存在的任何错误。 如何测试项目?如何测试项目? 一旦已经修改完成所有的错误, 联机 PLC 并将你的项目 “下载” 到 PLC 内。 现在, TwinCAT PLC Control 处于“联机”模式。测试你的项目是否为正确顺序。为此,手动设置输入变量并观察输出是否为期望值。你还可以观察 POU 中本地变量的数值顺序。在“Watch and Receipt Manager(监视和接收管理器)”中,你可以配置你想要检查的数据记录。 当程序出现错误时,你可以设置断点。如果程序在该断点处停止,你可以及时在该断点处检查项目所有的变量值。并按照顺序操作(单步),检查程序的逻辑正确性。 TwinCAT
24、PLC Control 还有另外一种调试功能:你可以设置程序变量以及输入和输出为某些值。你可以使用流控制来检查哪些程序行已经运行。使用“Sampling Trace(抽样跟踪)”,可以在扩展的时间范围内跟踪和显示变量的实际变化过程。 “Log(日志)”则按时间顺序记录在联机对话期间的操作、用户采取的动作和各种内部过程。 整个项目可随时进行文档化或输出到一个文本文件。 其它功能其它功能 整个项目可随时进行文档化或输出到一个文本文件。也可将它翻译成其它语言。 ENI:通过 ENI 接口(“工程接口”),可以将编程系统连接到一个外部数据库。在那里可以存储创建一个自动化项目过程中所需要的各种数据。外部
25、数据库的使用保证了数据的一致性,这些数据以后可以被多个用户、项目和程序所共享。 小结小结 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control:简介 第 10 页 共 256 页 TwinCAT PLC Control 是一个完整的开发工具,用来对你的 PLC 进行编程,它能大量节省建立应用程序所需要的时间。 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control: 简介 第 11 页 共 256 页 1.2
26、项目组件 一个项目包含一个 PLC 程序中的所有对象。项目保存在项目后期命名的一个文件内。一个项目包括以下对象: POU(程序组织单元),数据类型,资源和软件库。 POU(程序组织单元) 功能、功能块和程序都是 POU,它们可以使用动作(Action)加以补充。 每个 POU 都由一个声明部分和一个程序本体组成。程序由 IEC 编程语言中的一种语言编写(这些语言包括 IL、ST、SFC、FBD、LD 或 CFC)。TwinCAT PLC Control 支持所有 IEC 的标准 POU。如果你需要在项目中使用这些标准 POU,则必须在你的项目中包括标准库(standard.lib)。 一个 P
27、OU 可调用其它 POU。然而不允许进行递归调用。 功能功能 一个功能即是一个 POU,当对它进行处理时,它可准确地生成数据元素(诸如由几个字段或结构等元素组成),并在文本语言调用时作为表达式内的一个操作符出现。 当声明一个功能时,不要忘记功能必须返回一个类型。这意味着,在功能名后,你必须输入一个冒号,后跟一个类型。 一个正确的功能声明有如下示例那样的形式: FUNCTION Fct:INT 此外,必须对功能分配一个结果。这意味着,功能名作为一种输出变量使用。 以下为使用 IL(指令表)编写的一个功能例子,它有三个输入变量,并返回由前二个变量乘积除以第三个变量的结果: 由 ST(结构化文本)编
28、写的一个功能调用可作为表达式中的一个操作数。功能没有任何内部条件。这意味着,由相同变元(输入参数)调用的一个功能总是产生相同的值(输出)。 注意:如果你在一个功能内声明一个保持型的本地变量,这是没有意义的。变量不会保存到保留区! 调用上述功能的示例: 使用 IL: LD 7 Fct 2,4 ST Result www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control: 简介 第 12 页 共 256 页 使用 ST 语言: Result := Fct(7, 2, 4); 使用 FBD: 使用 SFC 时,
29、一个功能调用只出现在一个步或一个转换内。 注意:注意: 如果在项目中应用名称“CheckBounds”来定义一个功能,你可以使用这个名字来检查项目中是否有范围溢出!该功能名是系统预定义的,而且系统只识别这个标识符。 下面的典型程序是使用 CheckBounds 功能测试超出一个定义数组的边界。CheckBounds 功能可以确认 TRUE 值没有分配给 A10,而是分配给上边界 A7,在这一位置,A7 仍然有效。因此,Check Bounds 功能可以用来检查是否超出数值边界。 注意:注意: 如果在你的项目中,使用了 CheckDivByte、CheckDivWord、CheckDivDWor
30、d 和 CheckDivReal 定义的功能,并且使用了操作符 DIV,则它们可以用于检查除数的有效性,例如用来避免出现被 0 除。该功能名是系统预定义的,而且系统只识别这个标识符。 如果你使用 CheckRangeSigned 和 CheckRangeUnsigned 来定义功能,则超出由子范围类型声明的变量范围可以被截断。 所有这些检查的功能名都被系统作为应用程序的保留名。 功能块功能块 一个功能块即是一个 POU ,它提供程序运行过程中的一个或多个值。与功能相比,功能块不提供返回值。 以下是有二个输入变量和二个输出变量的一个功能块的例子,使用 IL 语言编写。其中一个输出是二个输入的乘积
31、,另一个输出则比较它们是否相等: www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control: 简介 第 13 页 共 256 页 功能块实例功能块实例 可以创建一个功能块的拷贝或实例(复制)。每个实例都具有其自身的标识符(实例名),以及包含有输入、输出和内部变量的数据结构。实例可以作为本地或全局变量加以声明,而功能块名是作为标识符类型予以指示的。 示例,名称为“INSTANCE”的 FUB 功能块的实例: INSTANCE:FUB; 功能块总是通过上述实例调用的。 只能从一个功能块实例的外部存取输入和输出
32、参数,而不能从其内部变量存取这些参数。 存取一个输入变量的示例: 功能块 FB 有一个类型 INT 的输入变量 in1。 PROGRAM prog VAR inst1:fb; END_VAR LD 17 ST inst1.in1 CAL inst1 END_PROGRAM 功能块和程序的声明部分可包含实例声明。在功能内不允许有实例声明。 对一个功能块实例的访问除非它们是全局声明的, 否则只限于声明它们的 POU。 一个功能块实例的实例名可用作一个功能或一个功能块的输入。 注意:注意: 处理一个功能块后,所有的值直到下一次处理之前都加以保留。因此,通过相同变元的功能块调用并不总是返回相同的输出值
33、! 提示:提示: www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control: 简介 第 14 页 共 256 页 如果至少有一个功能块变量是一个保留变量,则全部实例都存储在保留区。 调用一个功能块调用一个功能块 通过建立一个功能块实例,并用以下语法规定所期望的变量,则可以从其它 POU 存取一个功能块的输入和输出变量。 . 当你打开功能块时,如果要设置输入参数(输入变量的值),你可以使用文本语言 IL 和 ST,通过对括号(位于功能块实例名后)内的参数赋值来设置输入参数(使用“:=”进行赋值,如同在声明位
34、置的变量初始化)。 请注意,POU 的输入/输出变量 (VAR_IN_OUT) 将转变成为一个指针。因此,在调用时不能对它们赋值常数,而且不能进行外部的读或写操作。 应用 ST 语言编写的调用 POU fubo 的 VAR_IN_OUT 变量 inout1 示例: VAR inst:fubo; var1:int; END_VAR var1:=2; inst(inout1:=var1); 不允许:inst(inout1:=2); 或 inst.inout1:=2; 调用上述功能块 FUB 的例子。乘法结果保存在变量 ERG 内,比较结果保存在 QUAD 内。并声明功能块 FUB 的实例名为 IN
35、STANCE: 使用 IL 语言,按以下程序调用功能块: www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control: 简介 第 15 页 共 256 页 在以下例子中,使用 ST 语言表示的调用。声明部分同 IL 语言: 使用 FBD 语言,屏幕显示如下(声明部分同 IL 语言): 使用 SFC 语言,只能按步调用功能块。 程序程序 一个程序即是一个 POU,它在运行过程中返回若干个值。并全局识别整个项目的程序。从上一次运行程序直到下一次运行程序,一直保留所有的值。 程序可以被调用。不允许在一个功能内调用
36、一个程序。也不存在程序的实例。如果一个 POU 调用一个程序,而且如果程序的值随之改变,那么,这些改变将被保留到下一次调用程序(即使从其它 POU 内已调用了该程序)。这不同于调用一个功能块。那里只改变功能块给定实例中的值。因此仅当调用相同实例时,这些改变才起作用。一个程序声明以关键字 PROGRAM 开始,以 END_PROGRAM 结束。 上述程序调用的示例: 使用 IL 语言: www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control: 简介 第 16 页 共 256 页 CAL PRG Examp
37、le LD PRGexample.PAR ST ERG 使用 ST 语言: PRGExample; Erg := PRGexample.PAR; 使用 FBD 语言: 如果从程序 PRGexample 来的变量 PAR 是通过一个带有 0 的主程序初始化, 然后以上述命名的程序调用逐一调用其它程序,那么,程序中的 ERG 结果将有值 1、2 和 3。如果交换调用顺序,那么,给定结果参数的值也应相应的改变。 动作动作 作为功能块和程序的附加特性,你可以定义各种动作(Action)。一个动作是使用步实现的。它可以使用与“normal(常规)”实现体不同的语言编写。每个动作有一个名字。 一个动作是与
38、关联的功能块或程序的数据一起工作的。它与“常规”实现体一样,使用相同的输入/输出变量和局部变量。 参见上图中的示例: 当调用功能块 Counter 时,输出变量随输入变量 in 增加或减小。当调用附属于功能块的动作 Reset 时,输出变量设置为 0。在这两种情况下,编写相同的输出变量 Out。 相应于 .,通过 . 调用一个动作。如果必须在主模块内调用动作,则在文本编辑器中,只使用动作名,在图形编辑器中,功能块的调用不需要实例名。 示例 对所有示例的声明: PROGRAM PLC_PRG VAR Inst : Counter; END_VAR www.PLCwww.91HMI.comwww.
39、PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control: 简介 第 17 页 共 256 页 使用 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 的动作。 资源资源 为了配置和组织项目以及跟踪变量值,你需要使用资源: ? “全局变量(Glob
40、al Variable)”,它可以在整个项目中使用。 ? 用来配置硬件的“PLC 配置(PLC Configuration)”。 ? 引导程序执行各种任务的“任务配置(Task Configuration)”。 ? 用于变量图形化显示的“抽样跟踪(Sampling Trace)”。 ? 用来显示变量和设置默认变量的“监视和接收管理器(Watch and Receipt Manager)”。 参见“资源”章节。 软件库软件库 你可以在项目中包括一系列的软件库。你可以像用户定义变量那样使用这些库的 POU、数据类型以及全局变量。standard.lib 库是程序的一个标准部分,供你随时使用。 参见
41、章节“库管理器”。 数据类型数据类型 除标准数据类型之外,用户还可以定义自己的数据类型。并可以建立结构、枚举类型和子类型。 参见附录中的“标准数据类型”和“用户定义的数据类型”。 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control:简介 第 18 页 共 256 页 1.3 语言 1.3.1 编程语言编程语言 TwinCAT PLC Control 支持所有的 IEC61131- 3 编程语言。有两种文本编程语言和三种图形编程语言。 文本编程语言 ? 指令表 (IL) ? 结构化文本(ST) 图形编
42、程语言 ? 功能块图(FBD) ? 梯形图 (LD) ? 连续功能图(CFC) ? 顺序功能图(SFC) 1.3.2 指令表指令表 (IL) 指令表(IL)由一系列指令组成。每个指令在一个新行的开始,包含有一个操作符以及取决于操作符类型的一个或几个以逗号分隔的操作数。在指令前面可以有标识符号(标记),后跟一个冒号(:)。 注释必须是一行的最后元素。指令之间可以插入空行。 例: LD 17 ST lint (* 注释 *) GE 5 JMPC next LD idword EQ istruct.sdword STN test next: 使用使用 IL 语言的修饰符和操作符语言的修饰符和操作符
43、在 IL 语言中,可以使用以下操作符和修饰符。 修饰符: ? JMP、CAL、RET 带有 C:仅当前面的表达式结果是 TRUE(真)时,才执行指令。 ? JMPC、CALC、RETC 带有 N:仅当前面的表达式结果是 FALSE(假)时,才执行指令。 ? 其它情况的 N:操作数的求反运算(不是累加器) 以下列出所有用于 IL 语言的操作符以及可能的修饰符和操作符相应的含义: 操作符 修改符 含义 LD N 使当前的结果等于操作数 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control:简介 第 19
44、页 共 256 页 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 从功能块调用返回 ) 后期评估操作 你可以在附录表中找到所有的 IEC 操作符。 使用修饰符的一个 IL 程序示例: LD TRUE (*
45、在累加器中装载 TRUE*) ANDN BOOL1 (*BOOL1 变量取反进行“与”运算*) JMPC label (*如果结果是“TRUE”,则跳转到标号“Label”*) LDN BOOL2 (*装载 BOOL2 取反值*) ST ERG (*在 ERG 中存储 BOOL2*) label: LD BOOL2 (*存储 BOOL2 的值*) ST ERG (*在 ERG 中存储 BOOL2*) 使用 IL 语言还可以在操作符后放置括号。从而,括号内的值被认为是一个操作数。 例: LD 2 MUL 2 ADD 3 ST Erg 这里,Erg 值是 7。然而,如果加上括号: LD 2 MUL
46、( 2 ADD 3 ) ST Erg www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control:简介 第 20 页 共 256 页 这里,Erg(结果)的最终值为 10,从而,只有到达“)”,才能求值操作 MUL;这是因为操作 MUL5 是以后计算出来的。 1.3.3 结构化文本(结构化文本(ST) 结构化文本由一系列指令组成。可以执行如同高级语言所确定的 (IF.THEN.ELSE) 或循环 (WHILE.DO) 语句。 例: IF value 7 THEN WHILE value 8 DO value
47、 := value + 1; END_WHILE; END_IF; 表达式表达式 表达式是一种结构,它返回计算后的值。表达式由操作符和操作数组成。操作数可以是常数、变量、功能调用,或其它表达式。 表达式的求值表达式的求值 按照优先级规则,通过对操作符的处理可执行表达式的求值。首先处理最高优先级的操作符,然后处理次优先级的操作符,依次类推,直至处理完所有的操作符为止。有相同优先级的操作符是从左到右处理的。 以下按操作符的优先级大小列出以下按操作符的优先级大小列出 ST 操作符表:操作符表: 操作 符号 优先级 置于括号内 (表达式) 最高优先级 功能调用 功能名(参数表) 冪运算 * 负值 -
48、取反 NOT 乘 * 除 / 取模 MOD 加 + 减 - 比较 ,= 等于 = 不等于 布尔“与” AND 布尔“异或” XOR 布尔“或” OR 最低优先级 以下是使用 ST 语言的指令,表中同时给出示例: 指令 示例 www.PLCwww.91HMI.comwww.PLCwww.91HMI.comwww.PLCwww.PLCTwinCAT PLC Control:简介 第 21 页 共 256 页 赋值 A:=B; CV := CV + 1; C:=SIN(X); 调用功能块并使用 FB 形式 CMD_TMR(IN := %IX5, PT := 300);A:=CMD_TMR.Q; RE
49、TURN RETURN; IF IF D0.0 THEN C:=A; ELSIF D=0.0 THEN C:=B; ELSE C:=D; END_IF; CASE CASE INT1 OF 1: BOOL1 := TRUE; 2: BOOL2 := TRUE; ELSE BOOL1 := FALSE; BOOL2 := FALSE; END_CASE; FOR FOR I:=1 TO 100 BY 2 DO IF ARRI = 70 THEN J:=I; EXIT; END_IF; END_FOR; WHILE WHILE J= 100 AND ARRJ 70 DO J:=J+2; END_W
50、HILE; REPEAT REPEAT J:=J+2; UNTIL J= 101 OR ARRJ = 70 END_REPEAT; EXIT EXIT; 空指令 ; 结构化文本中的指令结构化文本中的指令 前面提到,结构化文本(ST)用于结构化的编程,亦即 ST 为诸如编程循环等这些常用的结构提供预先规定的结构。这样做的好处是可以降低出现差错的可能性,并提高程序的可读性。 例如,让我们比较使用 IL 和使用 ST 编写的二个相同功能的程序: 使用 IL 语言编写的计算二次方冪的一个循环: Loop : LD Counter EQ 0 JMPC end LD Var1 MUL 2 ST Var1