Click here to load reader

Manual for PLC programming - gongkongftp.gongkong.com/UploadFile/Datum/2011-5/... · Web viewtWinCAT PLC 编 程 手 册 2.7 版 本 IEC 61131-3 PLC 编程语言 德国倍福电气有限公司

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Manual for PLC programming

ECKHOFF TWinCAT PLC

BECKHOFF TWinCAT PLCC

INDUSTRIE ELEKTRONIK Eiserstraße 5 / D-33415 Verl / Telefon 05246/963-0 / Telefax 05246/963-149

4

德国倍福电气有限公司北京代表处

地址:北京市西城区金融大街27号投资广场B座1608室

网址:http://www.beckhoff.com

电话:(010) 66210991 66213553 传真:(010) 66210992

tWinCAT PLC 编 程 手 册

2.7 版 本

IEC 61131-3 PLC 编程语言

德国倍福电气有限公司

北京代表处

31.TWinCAT PLC 概 述

2.TWinCAT PLC 要 点5

2.1. 程 序 的 组 成 部 分5

2.3.调试,在线功能17

2.4.标准18

3.让我们写一段小程序19

4.TWinCAT PLC 的详细组成部分30

4.1.操作项目30

4.2.操作目标42

4.3.常用编辑命令45

4.4.常用在线命令46

4.5.关于视图53

4.6.编排窗口54

4.7.求助信息 !55

5.TWinCAT PLC编辑器57

5.1.说明语句编辑器57

5.2.文本编辑器〔常用功能〕60

5.3.指令表编辑器64

5.4.结构化文本编辑器66

5.5.图形编辑器76

5.6.功能块图编辑器77

5.7. 梯形图编辑器81

5.8. 用LD编写的一个POU:81

5.9.  顺序功能流程图编辑器85

5.10.  用SFC编写的一个POU:85

5.11. PLC组态91

5.12. 全局变量91

5.13. 库管理器93

5.14. 变量观测窗口94

5.15. 采样跟综95

5.16. 任务编辑器99

6.可视化101

7. DDE接口104

8.附录105

A.键盘操作105

B.IEC运算105

B.1.算术运算105

B.2.位串运算107

B.3.选择函数108

B.4.比较函数110

B.5.地址函数113

B.6.调用操作符CAL113

C.标准的库函数113

C.1.类型转换函数113

C.2.数值函数114

C.3.位移函数116

C.4.字符串功能117

C.5.双稳态功能块120

C.6.边沿检测121

C.7.计数器122

C.8.计时器123

D.TWinCAT PLC中的操作数126

E. 错误信息参考130

1.TWinCAT PLC 概 述

TWinCAT PLC是什么?

TWinCAT PLC 是 一 个 完 整 的 用 于 逻 辑 控 制 器 的 开 发 系 统。

TWinCAT PLC 具 有 功 能 强 的 语 言 结 构, 符 合IEC 国 际 标 准。这 些 使 你 易 于 进 行 程 序 的 开 发。 就 像Visual C++ 一 样,具有高 级 语 言 编 程 系 统的开发 环 境 ,可为编 辑器 的 操 作 和 调 试 功 能设 置 模式。

程序的结构是什么?

所 有 的 项 目 数 据 存 在 一 个 有 项 目 名 称 的 文 件 中。 一 个 新 项 目 的 第 一 个POU, 系 统 会 自 动 地 给 定 名 称MAIN, 这 是 程 序 的 起 点。( 在 C 程 序 中, 这 是 一 个 主 函数。〕 从 这 里 开 始, 你 可 以 调 用 其 它 的POUs( 程 序, 功 能 块 和 函数〕。

TWinCAT PLC 区 分 一 个 项 目 中 的 三 种 不 同 目 标 :POUs, 结 构 和 可 视 化 元 素。 利 用 这 些 目 标, 你 可 以 创 建 你 的 项 目。 在 目 标 表 中, 你 可 以 看 到 你 的 项 目 目 标 。

怎样写程序?

首 先, 当 你 开 始 开 发 一 个 新 程 序 时, 你 必 须 对 你 的 硬 件 系 统 进 行 组 态。 这 对 于 检 查 使 用 的 地 址 是 否 正 确 是 必 要 的。

现在 你 可 以 对 你 的 问 题 组 态 必 要 的POUs。 然 后, 你 开 始 用 你 选 择 的 语 言 对 你 的POUs 进 行 编 程。

在 编 辑 完 项 目 的 所 有 目 标 后, 编 译 你 写 的 程 序 并 去 掉 语 法 错 误。

怎样测试程序 ?

当 修 正 了 程 序 中 的 所 有 语 法 错 误 后, 你 可 以 转 换 到 仿真模 式, 登 录 到 仿真控 制 器 中, 并 把 你 的 项 目 装 入 到 控 制 器 里, 现 在,TWinCAT PCL 以 在 线 方 式 运 行。

你 可 以 打 开 图 形 硬 件 组 态 窗 口, 强 制 给 定 输 入, 然 后 观 察 输 出。 在 每 个POU 的 说 明 语 句 部 分 以 及 全 局 变 量 表 中, 你 能 够 看 到 项 目 数 据 的 当前值, 你 也 可 以 去 写, 强 制 给 定 数 值。 在 另 一 个 观 察 窗 口 中, 你 可 以 组 态 你 想 要 检 查 的 数 据 单 元。

用TWinCAT PLC进行调试

在 发 生 程 序 错 误 的 地 方, 你 可 以 设 置 中 断 点。 程 序 停 止 执 行 后, 你 可 以 在 这 个 中 断 点 上 检 查 所 有 的 程 序 数 据。 单 步 功 能 允 许 你 一 步 一 步 地 检 查 程 序 的 逻 辑 是 否 正 确。

进一步的在线功能

TWinCAT PLC 支 持 进 一 步 的 调 试 功 能。 允 许 按 照 一 定 数 值 强 制 改 变 程 序 变 量 和 输 入/ 输 出 值。 流 程 控 制 使 你 能 够 检 查 哪 一 行 程 序 被 执 行, 并 且 当 运行 编 码 时, 向 你 显 示 该 行 所用 的 每 个 变 量 的 数 值。

采 样 跟 综 用 于 跟 综 变 量 并 以 曲 线 方 式 显 示 数 值。

在 编 写 和 测 试 程 序 后, 你 可 以 把 程 序 下 装 到 你 的 硬 件 系 统 中, 并 继 续 测 试。 这 时, 像 用 模 拟 方 式 调 试 一 样,你可用 同 样 的 调 试 方 法。

TWinCAT PLC的其它功能

在 任 何 时 候, 可 以 将 整 个 项 目 存 档 或 输 出 到 一 个 文 本 文 件 中。

总 结

TWinCAT PLC 是 一 个 完 整 的 用 于 逻 辑 控 制 器 的 开 发 系 统。 使 用TWinCAT PLC, 使 你 大 大减 少 开 发 应 用 软 件 所 需 要 的 时 间。

2.TWinCAT PLC 要 点

为了便于你掌握TWinCAT PLC, 请阅读下面的基本TWinCAT PLC术语表:

2.1. 程 序 的 组 成 部 分

项 目(Project)

一个项目包括控制器程序的所有目标,保存在有项目名称的文件中。一个文件由以下目标组成:PLC-Configuration, Tasks, POUS, 结构,全局变量表,库,观测 变量,可视化元素。

编 程 组 织 单 元 (POUs)XE "POU"

POUs由函数,功能块和程序构成。

每个POU 由说明语句部分和语体组成。语体用IEC 编 程 语 言 编 写:

指令表Instruction List (IL), 结构化文本Structured Text(ST), 功能块图Function Block Diagram (FBD), 梯形图Ladder Diagram (LD) 或顺序功能流程 图Sequential Function Chart (SFC).

TWinCAT PLC 支持所有的IEC 标 准POUs。

POUs 可以调用其它POUs. 然而,被调用的POUs 不允许再 调用其它的POUs.

函数 (Function)XE "Function"

一 种函数是一个POU,当执行这种函数时,它精确地提供一个数 据元素( 也 可以像数列或结构数据那样由多个数据元素组成〕。

一种函数总是用一定的形式来说明。 即: 在 功 能名称的后面是一个冒号和类型符。

一个正确的函数说明语句如下:

FUNCTION Fct:INT

另外,一个数值被分配给函数。即,函数名称可以像一个输出变量那样使用。函数数值必须与它的说明类型相一致。

下图举例说明函数FBD-Example。该函数用FBD语言编写,有三个BOOL输入和一个BOOL输出:

图2.1.1功能

在ST语言中,调用一个函数,如同使用一个表达式中的操作数。

函数不含有内部的状态信息。这就是说,调用具有相同自变量(输入参数〕的一个函数,总是产生相同的数值(输出〕。

举例调用上面所描述的函数:

用 IL 语言编写XE "IL"

XE "Instruction List":

LD

7

FBD_Example2,4

ST

Result

用 ST语言编写XE "ST"

XE "Structured Text":

Result := FBD_Example(7, 2, 4);

用 FBDXE "FBD"

XE "Function Block Diagram" 语言,可这样调用功能 :

在SFC语言中,一个功能公可以在一步或一个转换内调用。

功能块(Function Block)

一个功能块是一个POU,当执行该功能时,它产生一个或多个数值。

功能块没有类型说明。

XE "function block"

功能块的例程(Instances of Function Blocks〕XE "function block, Instance"

XE "instance"

一个功能块可以产生多个以不同名称命名的例程。每一例程都有一个相关的标识符(例程名称〕,还有一个数据结构,该数据结构包含有输出,输入和内部变量。

像变量一样,功能块例程可被定义在局部变量表中。其方法是用标识符表示,用功能块名称作为类型。

下面是功能块FUB,例程名称为INSTANCER :

INSTANCE: FUB;

一个功能块的所有数值保持到下一次功能块执行之前。因此,调用同样的功能块,尽管它们有相同的自变量〔输入变量〕,但是,功能块的输出值并不总是相同。

下图是一个名称为IL_EXAMPLE的功能块,用IL语言编写,有一个输入变量,二个输出变量。

图 2.1.2. 功能块

调用功能块的方法,是使用功能块的例程名称。

访问功能块变量的方法,是输入功能块的例程名称,其后是一个点和变量名。

下面举例说明怎样调用上图描述的功能块IL-EXAMPLE。

用 IL语言编写XE "IL"

XE "Instruction List":

图 2.1.3. 用IL语言调用一个功能块

用ST语言调用同样的功能块XE "ST":

图 2.1.4. 用ST语言调用一个功能块

用 FBD语言调用功能块:XE "FBD"

图2.1.5. 用FBD语言调用一个功能块

在SFC语言中,仅可以在步骤或传送内调用功能块。

有关功能块用法的举例见第三章。

程序XE "Program"

一个程序就是一个POU。当执行该程序时,它产生一个或多个数值。不允许像功能块那样产生一个程序的例程〔见功能块)。一个程序的所有数值保持到下一次执行程序之前。

一个简单程序举例:

图 2.1.6. 程序

在程序和功能块内,可以调用程序。在一个函数内不允许调用程序。不存在程序例程。

如果一个POU调用一个程序并且改变了程序的数值,这些变化将保持到下一次调用程序之前,即使是一个不同的POU调用该程序。

这与调用功能块是不同的。调用功能块的POU仅可以改变功能块的某一例程的数值(局部或全局数值〕

举例说明上面所描述的调用程序:

用 IL语言编写程序:

CALPRGexample

用 ST语言编写程序:

PRGexample;

用 FBD语言编写程序:

MAIN

名称为MAIN的POU是一个特殊的程序。它是一个新项目中产生的第一个POU。在每个控制器运行周期中,这个POU被调用一次。如果你不使用任务(看5.14节),那么就决不能删除这个POU,也不能给它重新命名!!!

PLC 组态(PLC Configuration) XE "PLC Configuration" XE "library"

你可以使用PLC Configuration组态你的控制器。为了检查一个程序,有必要知道哪些地址是有效的。一个项目的有效地址在PLC Configuration中定义。

库(Libraries)

你可以把一些库与你的项目连接起来。像使用项目中所定义的POUs那样来使用被连接库中的POUs.库”Standard.Lib” 包括所有IEC标准函数和功能块,它是TWinCAT PLC的一个组成部分。

结构(Structure)XE "Structure"

一个结构总是由多个基本的数据元素组成。一个结构的组成部分可以是任何类型的数组,其中包括结构。

结构定义举例:

多边形

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

任务XE "Task"

一个任务控制一些程序或功能块状态的运行。按照IEC1121-3国际标准的划分,有周期任务,事件触发任务和时间触发任务。当使用任务时,不需要使用MAIN程序。

2.2.编程语言

指令表 Instruction List (IL)XE "IL"

XE "Instruction List"

指令表(IL〕由一系列的指令组成。每条指令从新的一行开始,并根据操作指令,由操作符,一个或多个操作数组成 ,这些操作数用逗号分开。

一条指令可用一个标号引导。该标号由标号名和一个冒号组成。

一条注释必须是在一行的最后,两条指令之间可以插入空行。

举例:

LD17

STlint

(* Comment *)

GE5

JMPCnext

LDidword

EQistruct.sdword

STNtest

next:

结构化文本 Structured Text (ST)XE "ST"

XE "Structured Text"

结构化文本由一系列语句组成。这些语句可以有条件地(“

IF…THEN…ELSE”)或者重复地(WHILE…DO)执行。

举例:

IF value < 7 THEN

WHILE value < 8 DO

value := value + 1;

END_WHILE;END_IF;

顺序功能流程图 Sequential Function Chart (SFC)XE "SFC"

XE "Sequential Function Chart"

顺序功能流程图是一种图形语言。这种语言能使编程者按时间顺序描述一个项目内的不同动作。

用SFC语言编写,用TWinCAT PLC SFC编辑器进行编辑的例子:

图2.2.1: 用SFC编写的网络

步和动作 (StepsXE "Step" and Actions〕XE "Action"

用SFC编写的POU由一个步的序列组成(如图2.21中的permanent,Init),这些步直接连接。这里所说的动作可附着在每一步上,Action意味着与动作有关的编码。

传送(Transition〕XE "Transition"

步与步之间存在着传送(如图2.21中的TRUE,sin_test),一种条件被附着在转换上,这种条件或是一个布尔变量,一个地址,或是一个有布尔结果的表达式,也可能是一个布尔常量(TRUE,FALSE).

激活步(Active Step〕XE "active step"

当执行一个SFC-POU程序时,首先执行的动作是初始步(双边框〕。当一个步的动作被执行时,称该步为激活步。

每个步有一个标记。这个标记存储步的状态.当步处于激活状态时,标记为TRUE,否则为FALSE。标记的标识符就是步的名称。它在SFC-POU程序中被说明。

执行完一步后,接着执行下面的传送。如果结果值是TRUE,则激活下面的步,并在下一个处理器周期中执行。

功能块图 (FBD)

功能块图是一种图形编程语言。它由一个网络序列组成。每个网络含有一种结构,这种结构代表了一个逻辑或一个算术表达式,一个功能块的调用,一个跳转或一个返回语句(图2.2.2).

用FBD编写的典型的网络例子:

图 2.2.2.:用FBD编写的网络

梯形图 Ladder Diagram (LD)XE "LD"

XE "Ladder Diagram"

梯形图是一种图形编程语言,类似于电路原理图。一方面,你可以用LD语言去设计逻辑电路,另一方面,你可以用LD语言设计FBD所编写的网络。因此,你可以使用LD语言去控制调用其它的POUs.

触点〔Contacts〕XE "Contact"

梯形图由一个网络序列组成,在网络的左侧是触点〔用二条并行的重线||表示〕,从左向右传递“ON”或“OFF”状态。这些状态与布尔值1或0相对应。与每个触点相联的是一个布尔变量。如果这个布尔变量是TRUE,那么触点把左边连接线的状态传递到右边连接线上。否则,右边连接线的状态是OFF。

触点可并联连接。在这种情况下,并行支路中的任一分支传送数值ON就能使并行网络传送ON状态。触点也可以串行连接。在这种情况下,所有触点必须传送数值ON,才能使最后的触点传送ON状态。这一点和电路图中的并联或串联连接原理相一致。

线圈〔CoilsXE “Coil”〕

在梯形图的右侧是一个线圈网络。这些线圈不能用水平线连接在一起。一个线圈能不加修改地考贝从线圈左侧到右侧的状态,并把这一状态值存入相联的布尔变量中。

当一个线圈为“非”运算时,它把这一“非”运算值存入一个相联的布尔变量中。当一个触点为“非”运算时,只有与之相联的布尔变量值为FALSE时,这个“非”运算触点才能传送数值。

用LD语言编写的网络例子.

图2.2.3用LD语言编写由触点和线圈组成的网络

梯形图中的连接XE "Links in LD"

网络中的连接可以是水平的或垂直的。

水平连接用水平线表示,水平连线将它左边的元件状态传送到它右边的元件。

垂直连接用垂直线表示。垂直连线传送如下状态:

-OFF, 位于垂线左侧的所有水平连线的状态是OFF。

-ON, 位于垂线左侧的一条或多条水平连线的状态是ON。

梯形图中的功能块

在梯形图中,除了使用线圈和触点外,你还可以插入功能块和程序。被插入功能块的第一个输入和第一个输出与梯形网络相连接。因此,第一个输入变量和第一个输出变量必须是布尔型变量。

功能块可用在与触点相同的位置上。这就是说,功能块 梯形网络的左侧。

置位/复位线圈

线圈可定义为置位或复位线圈。一个置位线圈不能改变相关的布尔变量的TRUE值。这样,一旦把变量设置为TRUE,则置位线圈保持TRUE不变

同样地,复位线圈不能改变相关的布尔变量的FALSE值。这样,一旦把变量设置为FALSE,则复位线圈 保持FALSE不变。

把LD用作FBD XE "EN-Input"

XE "EN-Input"

当使用LD语言工作时,你常希望用触点网络去控制调用其它的POUs程序。在这种情况下,你可以把一个线圈的结果值存入一个全局变量中,并在其它地方使用这个变量。你也可以使用这个结果值去直接调用一个FBD网络。

为此,你插入一个带EN-INPUT输入端的元件。这种元件可以是一般运算,函数,功能块或程序,它们带有一个附加的输入标记”EN”。这个EN-INPUT数值总是布尔型,并且只有EN端为TRUE时型,并且只有EN端为TRUE时,才能调用该元件。

一个EN元件与线圈并联连接。EN-INPUT端连接到触点与线圈之间的连线上。当这条连线传送ON状态时, 才能调用EN-component元件。

从这样一个EN-component元件开始,你可以像用FBD语言那样去开发你的网络。

图 2.2.4. 使用EN-operator运算元件的局部LD网络。

2.3.调试,在线功能

采样跟综〔Sampling Trace〕XE "Sampling Trace"

采样跟综使你有可能跟综程序的数值变化过程,采样跟综依赖于所谓的触发器事件。这就是事先定义的布尔变量(触发变量〕的下降或上升边缘。

TWinCAT PLC 使你能够跟综20个变量的500个数值。

调试(Debugging)XE "Debugging"

TWinCAT PLC的调试功能'帮助你找出程序中的逻辑错误。

为了选择调试功能,执行命令“Project''Build Options',并在对话框中选择 'Debugging' 选项、

断点(Breakpoint〕XE "Breakpoint"

TWinCATPLC支持中断点的设置。当程序遇到中断点时,停止执行。这时你可以查看中断点处所有的程序数据〔即变量值〕。

在所有的TWinCAT PLC编辑器中可以设置断点。在文本编辑器中,可以在行号上 设置断点。在FBD和LD中,中断点设置在网络号上。在SFC中,中断点设置在步上。

单步〔Single step〕XE "single step"

单步的含义:

在 IL中: 程序一直执行,直到遇到下一个CAL,LD 或JMP指令。

在 ST中: 执行下一个指令。

在FBD, LD中:执行下一个网络。

在SFC中:执行下一步的动作。

通过步进方式,你可 以检查程序的逻辑是否正确。

单循环〔Single cycle〕

如果选择‘ Single Cycle’选项,则每次循环之后,程序停止执行。

监视〔Monitoring)

采用在线方式,在可视变量说明语句的后面,对控制器中的现行值进行监视。

为了能够监视可视变量,执行命令 'Project''Build Options', 并在对话框中选择‘Monitoring’选项。

流程控制(Flow Control〕 XE "Snap shot"

采用快照的方法,通过定义快照区并产生快照,你可以显示一个循环周期内的变量值。这样,在不停止执行程序的情况下,快照区中的一行内的任一变量都可采用现行值来进行监视。

仿真〔Simulation〕XE "Simulation"

采用仿真方式,用户程序可以在PC机上运行,而代替PLC。在这种方式下,所有在线功能都在工作,不用任何硬件你就能够对你的程序进行逻辑校验。

2.4.标准

IEC1131-3XE "IEC1131-3"

IEC 1131-3 是PLC编程语言的国际标准。

TWinCAT PLC 提供了国际标准中所描述的所有编程语言。

3.让我们写一段小程序

现在我们来写一段小程序。该程序用于控制交叉路口的两盏交通灯。这两盏交通灯将交替出现红,绿阶段。为了避免事故,我们将插入黄和黄/红转换阶段。红色和绿色阶段要比黄色和黄/红转换阶段持续的时间长。

这个例子将告诉你怎样用IEC1131-3语言编写时间控制的程序,以及怎样用TWinCAT PLC编辑不同的语言。

首先,起动TWinCAT PLC并选择 'File''New' 选项.

建立POUsXE "POU"

通过执行'Project' 'Add Object' 命令来建立一个POU。 TWinCAT PLC 自动地把这个POU定名为MAIN,你不能改变这个名称,也不能改变这个POU(PRG〕的类型,因为每个项目需要一个名称为MAIN的程序。

我们选择顺序功能流程图〔SFC〕来编写这个POU。

现在我们建立另外两个目标。用功能块图(FBD〕语言编写的块PHASES和用指令表(IL)编写的功能块POU WAIT。XE "IL"

XE "Instruction List".

功能块PHASES的用途 ?

在PHASES中,交通灯的每个阶段将变换为正确的颜色。这就是说,在红色阶段和黄/红阶段中,红灯一直亮着,在绿色阶段中,绿灯一直亮着,等等。

功能块WAIT的用途?

WAIT功能块是一个简单的记时器。它有一个输入,用微秒为单位记忆某一阶段持续的时间,当时间到时,记时器变为TRUE。

PLC_PRG 的用途?

PLC_PRG用适当的参数调用上述的两个POUs,以便使交通杰在准确的时间点亮,并满足所要求的时间间隔。

"PHASES” 说明语句

现在让我们写PHASE。在说明语句部分,你必须说明一个输入变量STATE,其类型为INT〔在关键词VAR-INPUT和END-VAR之间〕。STATE将有5个可能的状态,也就是每一个阶段有一个状态〔绿,黄,黄/红,红和断开〕。

相应地,交通灯有四个输出变量,名称为RED,YELLOW,GREEN和断开。请你按照图3.1中所看到的那样来说明这四个变量。

PHASES的说明语句部分如图所示:

图 3.1: 功能块PHASES的说明语句部分

"PHASES” 文本

现在我们根据输入变量的状态来确定输出变量.为此,你用鼠标器在第一个网络的网络号上击一下〔左边的灰色区域,包括号码0001〕。现在你已选择了第一个网络。

选择命令'Insert''Operator' 在网络中,将插入一个方块,它的运算符为AND,有二个输入.

用你的鼠标器选择AND,将其文本改为EQ。现在把上面的TRUE改为STATE,下面的TRUE改为1。这样你就建好了下面的网络:

在方块右边的任一位置击一下。现在就选择了运算的输出。选择'Insert' 'Assign'.命令,把‘ result’文本改为GREEN。现在你就编好了下面的网络:

STATE与1进行比较,其结果。赋值GREEN:如果STATE值为1,则网络将使GREEN接通.

我们需要别处三个网络,用于其它的交通灯颜色和断开状态。使用'Insert''Network (after)'命令建立网络。你应按图3.2所示的方法组态这些网络。现在一个完整的POU如下图所示:

图3.2:功能块 PHASES 的文本

为了把一个运算器插到另一个运算器的左边〔在网络2和3中是必要的〕,你必须在某个位置上击一下,使新的运算器输出与后面运算器的方块相连接。现在你可以执行 'Insert''Operator' ,命令接下来的工作就是像 个网络那样进行编辑..

这样就完成了第一个POU。根据输入值STATE,PHASES控制交通 要求的颜色。

"WAIT" 说明语句

现在让我们开始对WAIT进行编码.这个POU是一个记时器,用于控制交通灯阶段持续的时间。这个POU有一个输入变量TIME1,类型为TIME,并产生一个布尔变量,名称为OK。如果记时器记到了所期望的时间,则这个布 尔变量值为TRUE。

这个变量的初始值是FALSE,它的设置方法是在说明语句后面〔分号前面〕插入":= FALSE".

连接标准库

为了对记时器进行编程,你必须使用标准库中的一个POU。执行'Window''Library Manager'命令,打开库管理器。你将看到与你的项目连接的所有库。标准库也被连 接。

根据我们的用途,我们需要POU TP,一个脉冲记时器,这个POU有两个输入(IN, PT) 和两个输出(Q, ET). TP有如下功能:

只要IN是TRUE,则ET为0,Q为FALSE,ET设有从TRUE到FALSE所持续的时间值,单位为微秒。当ET达到PT值时,则ET保持它的值不变。只要ET比PT小,则Q值就为TRUE。当ET达到PT值以后,Q值再次变为FALSE。

注意:在附录B节中,你可以找到标准库中所有元素的简要描述。

为了在POUWAIT中使用TP,我们必须对TP的局部变量进行说明。因此,我们要说明一个TP型局部变量TEL〔在关键词VAR与END-VAR之间〕该变量代表持续的时间.

WAIT的说明语句部分如下图所示:

图3.3.: 功能块WAIT的说明语句部分

为了实现所期望的记时器,POU的文体必须按下面的方法编程:

"WAIT" 的文体

图3.4.: 功能块WAIT文体

首先装入Q值。如果Q为TRUE〔记时器正在运行〕,则我们跳转到标号Lable和cal TEL语句,检查时间是否已到。

否则,我们复位记时器,并且用所期望的时间(time1)来启动记时器.

最后,Q的负值存在OK中。因此,time1达到记时时间以后,OK在一个周期中其值为TRUE。

现在记时器已编写完。主程序PLC-PRG将把前面的两个功能块WAIT和PHASES连在一起.

"MAIN"XE "PLC_PRG"

XE "main program" 程序的第一步开发

首先我们要说明所需要的变量表。这些变量包括功能块PHASES的二个状态 (LIGHT1, LIGHT2),以及功能块 WAIT状态 (DELAY)我们得到下面的说明语句:

图3.5.: 程序PLC_PRG的第一层,说明语句

怎样用SFC语言建立一个图形

用SFC编写的一个POU的初始化程序,由下面几部分组成:一个“Init”步,接在其后的转换“trans0”以及回到Init的一个跳转〔图3.5〕。我们打算稍微扩展这个结构。

首先我们确定图形的结构。然后我们可以对不同的动作和转换进行编码。

对交通灯的每一阶段都需要一个步。你可以通过选择TransO来插入一个步,并执行 'Insert' 'Step-Transition (after)'XE "Step"

XE "Transition"命令。连续三次重复以上的过程。

直接在一个转换或一个步的名称上击一下,这样就选择了这个名称,并可以改变名 称。用"TRUE" 代替Trans0,用“ DELAY.OK”代替其它的转换。

意义是:如果"DELAY.OK"的值〔功能块状态DELAY的输出变量〕是TRUE,这就是说,当time1达到记时时间时,控制总是通过第一个转换和其它的转换。

这些步〔从上到下〕的名称 是:Switch1,Green2,Switch2,Green1.Init的名称不变。“Switch”总是一个黄色阶段。在激活Green1期间,LIGHT1将是绿色。在激活Green2期间,LIGHT2将是绿色。

最后,把跳转目标Init改为Switch1.如图所示:

图3.6.: 程序MAIN的语体,第一次开发

现在我们必须填写步骤的动作。如果你双击一个步,那么你得到一个打开新动作的对话框。在我们的例子中,总是选择IL(指令表)编写程序。

动作和传送条件XE "Action"

XE "Transitionsbedingung"

Init步的动作是使变量初始化。LIGHT1的变量STATE被赋值为1(绿色〕。LIGHT2的变量STATE被赋值为3〔红色〕。

图3.7.Action Init

在Switch1步, LIGHT1 的变量STATE变为2〔黄色〕, LIGHT2 的变量STATE变为4 (黄色和红色).延时时间设置为2秒。

图3.8. Action Switch1

在Green2, LIGHT1 是红色(STATUS:=3), LIGHT2 是绿色(STATUS:=1),

延时时间设置为5000毫秒。

图3.9. Action Green2

在Switch2步,LIGHT1的变量STATE变为4〔黄色和红色〕, LIGHT2的变量STATE变为2〔黄色〕,延时时间为2000毫秒

图3.10. Action Switch2

在Green1步,LIGHT1是绿色(STATUS:=1),LIGHT2是红色(STATUS:=3), 延时时间设置 为5000毫秒.

´

图3.11. Action Green1

现在,已经编写完程序的第一层。你可以编译程序,并用模拟方式测试程序.

MAIN 程序的第二步开发

现在所要考虑的问题是,在经过若干周期以后,即在夜里,你想要关断交通灯。为此,在程序中我们插入一个记数器,该记数器向上记忆交通灯的运行周期数,并且当记数器达到一定的数值时,交通灯断电。

首先,我们需要一个变量类型为INT的新变量COUNTER。在程序PLC-PRG的说明语句中说明这处变量,并在动作Init中,使它的初始值为0。

LD

0

ST

COUNTER

现在选择Switch1后面的转换,并在这个转换后面插入一个步/转换。

选择新的转换,按

给新增加的部分定名如下:

在新增的二个步中,上面的一个定名为"Counting".另一个定名为"Off".

新的转换(从上到下,从左向右)分别被称为“FINISH”, "TRUE" and "DELAY.OK".

现在,修改后的结构图如下所示:

图3.12. 交通灯MAIN程序

如同你所看到的,另外两个新增加的动作和一个传送条件已经编写完。.

在Counting步中,记数器每次增加1.

图3.13. Action Counting

在传送FINISH中,检查记数器是否比某一数值 在,比如说与数值7比较:

图3.14. Transition FINISH

在步OFF中,两盏灯的STATE值设置为5(OFF),COUNTER值设置为0, 延时时间设定为10秒 (10,000 微秒):

图3.15. Action Off

结果

在交通灯运行了七个周期以后,天黑下来。在黑暗持续了10秒钟以后,交通灯再次被点亮,等等。

交通灯的仿真XE "Simulation"

现在用仿真方式测试编好的程序。通过选择菜单项‘Online’ ‘Simulation mode’ 来选择仿真方式。

用'Online''Start'命令执行用户程序。打开PLC-PRG程序,观看激活步〔蓝色〕的变化。打开步骤和传送,监视各个变量。

4.TWinCAT PLC 的详细组成部分

在下面的章节中,你将找到对TWinCAT PLCXE "CoDeSys"特性的详细说明。我们将仔细研究每个 菜单项以及它们的用途。

两个菜单项Insert’和‘Extras’取决于激活的子窗口〔通常是带有光标的窗口〕。因此,在编辑器一章中,对它们进行说明。

4.1.操作项目XE "Project"

用于操作整个项目的菜单命令放置在菜单项'File'和'Project'的下面。在菜单项 'Project'下面的某些命令仅用于操作目标(the...Objectitems).在下一章中,对它们进行描述.

'File''New'XE "File"

用这个命令打开一个名称为‘Untitled’的新项目。当存这个项目时,必须更改这个名称.

'File''Open'

用这个命令打开已有的项目。如果一个项目已被打开并修改,那么,TWinCAT PLC询问是否存这个项目。

标准窗口FileOpenDialog出现.从文件表中选出一个扩展名为”*.pro”的项目文件。这个文件必须存在,否则,用open命令来建立一个项目是不可能的。要使用NEW命令建立项目。

为了打开最近使用的一个项目,使用File菜单中Exit命令后面的菜单项。

'File''Close'

这个命令用于关闭正打开的当前项目。如果当前项目被修改,那么TWinCAT PLC询问是否存这个项目。

如果要存的项目名称为‘Untitled’,那么必须按照下面‘File’‘Saveas’中所描述的方法确定项目的名称。

'File''Save'

如果项目已被修改,那么用这个命令存当前项目.

快婕键: +.

如果要存的项目名称为"Untitled",那么必须按照下面File’‘Save as’中所描述的方法确定项目的名称.

'File''Save as'

这个命令用于把当前的项目存到一个不同的文件中,原有的项目文件不被改变.

选择这个命令以后,标准窗口SaveDialog打开。选择已有的文件各或输入 一个新的文件 。灰后击一下OK按钮。当前的项目就被存到指定的文件中。

如果文件名已经存在,TWinCAT PLC提示你是否覆盖这个文件。

'File''Save as library'XE "Library"

这个命令用于把当前项目作为库文件存起来,以便在其它的项目中使用.

首先,标准窗口Save Dialog出现。 选择一个已有的文件名或输入任何一个文件名。 然后击一下OK按钮。

重新建立整个项目。如果出现任何错误,则TWinCATPLC显示一个有关的信息。含有错误的项目是不能作为库文件 存入的。

如果没有错误发生,那么 当前项目作为库文件存入指定的文件中.

如果文件名已存在,那么 TWinCAT PLC提示你是否覆盖这个文件。

一个 用途在库管理器一章中描述。

'File''Print'XE "Print"

这个命令用于打印激活窗口的内容.

快捷键: +

.

选择这个命令后,标准窗口PrintDialog出现。选择你需要的选项或组态打印机,然后击一下OK按钮。

打印激活窗口中所显示的目标。

打印项目的部分资料或整个项目资料,使用菜单项‘Project’ ‘Documentation’.

把一个外部文件的注释插到一个目标资料中是可能的。具体做法在全局变量一章中描述.

为了确定打印的标题和脚文,使用命令‘File’ ‘Printer Setup’.

'File''Printer Setup'XE "Documentation"

这个菜单选项允许你设置打印的脚文和标题,以及确定打印机的选项,如使用主象或风景画式的格式等等.

选择这个命令后,printer Setup 话框出现.

图4.1.1 Printer Setup对话框

对每一页输入脚文和标题。可插入下面的文本符号:

(Page)打印当前页

(Date)当前日期

(FileName)项目文件的路径

(POUName)当前打印的目标名

按和键输入标记.

在第一个'TAB'标记前的任一个文本左对齐打印。在第一个与第二个TAB标记之间的文本对中打印.其余的文本将右对齐打印。

你可以选择是否每一页有一个边框,是否每一个新目标另起一页,并且你可以调整左边框 的宽度。缺省值 是10 mm.

最下面的Printer Setup按钮是用于打开标准的Windows Printer Setup 对话框, 这个对 话框的内容取决于你的打印机类型.

'File''Exit'

这个命令用于退出TWinCAT PLC.

快捷键: +.

如果一个项目已经打开 并被修改,则TWinCAT PLC询问是否存这个项目

'Project''CheckXE "Check"'

这个命令用于检查你的程序是否有语法错误.发生的每一错误显示在另一个窗口上,该窗口称为信息窗口。

与命令'Rebuild all'比较,没有编码产生.

'Project''Build'XE "Build"

对所有更改的POUs和结构产生编码.

打开信息窗口,显示编译的过程和发生的错误.

注意:

如果PLC支持online change功能,那么,Build功能才能被支持.

Onlinechange功能的含义是,在PLC运行期间可以改变PLC中程序的某些部分,而不用中断执行程序,所有的数据尽可能保留。

'Project''Rebuild all'

对所有更改的POUs和结构产生编码.

打开信息窗口,显示编译的过程和发生的错误.

信息窗口:

信息窗口显示编译的过程。显示错误所在的POU行和类型。在信息窗口中,选择显示错误的那一行, 并敲键(或双击鼠标).POU的一个窗口打开。选择网络,现 在你可 以容易地修改错误.

使用 (+)键,你可以得到下一个(或前一个〕错误。

图4.1.2.信息窗口:编译10个POUs,产生4个错误.

在附录中,你可找到所有的错误信息表。

'Project' 'Options'

这个菜单包括所有的项目选项。可被设定的选项在下一页中描述:

'Project''Building options'XE "Building options"

这个命令允许对产生编码的选项进行设置.

选择这个命令后,出现一个对话框.

图4.1.3. Build Options 对话框

Enable Debugging

选择这一选项,使得产生附加的调试编码。

当有C-Code编码产生时,才选择这一选项.

Enable Monitoring

选择这一选项 ,使得产生附加的监视编码

当有C-Code编码产生时,才选择这一选项.

Enable Online Changes

你可以选择是否在线更改你的程序。当有C-Code编码产生并且PLC允许在线更改程序时,选择这一选项才是恰当的.

Number of Data segments

这个号码决定控制器为你的项目所留出存储空间。一个数据存储区等于32Kb。当有可能在线更改程序时,选择这一选项才是恰当的.

编译前自动存储 Autosave before compilation

如果选择了这一选项,那么在做任何编译之前,你的程序被自动存储.

询问项目信息 Ask for Projectinfo

如果选择了这一选项,那么当一个项目第一次被存储或者用新的名称存项目时,项目信息对话框便自动打开。

这一选项对工作区来说是特殊的。它不能存在项目文件中,而存在TWinCATPLC.ini 信息文件中。

用户信息 User Info

用这个命令打开一个窗口,该窗口中有项目的用户信息.

图4.1.4. User Information窗口

用户信息由用户名,名称的开头字母和公司名称组成。这些选项对一个工作 来说是特殊的。它们不能存在项目文件中,而存在 TWinCAT PLC.ini 信息文件中.

目录 Directories

用这个命令打开一个对话框,你可以插入目录路径,在这里有TWinCAT PLC的库文件和编译文件.

图4.1.5. 目录路径

这些路径对一个工作区来说是特殊的。它们不能存在项目文件中,而存在TWinCAT PLC.ini 信息文件中.

存储选项 Save options

图4.1.6. Save Options对话框

你可以选择TWinCATPLC是否在下次存储项目时,建立项目的备份版本。如果选择了这一选项,那么TWinCATPLC将把实际项目存到扩展名为。bak的文件中。这样,你可以在最后的安全期之前,恢复这个版本文件。已有的备份文件不能重写。为了得到一个新的备份文件,就要删除或移走已有的备份文件。

如果选择了AutoSave这一选项后,那么当时间插入到AutoSaveInterval自动存时间间隔之后,TWinCATPLC将把项目存到扩展名为 .asd 的一个临时文件中。当TWinCAT PLC正常结束时,这个文件被删除。否则,不能删除这个文件。当再次打开文件时, TWinCAT PLC检测这个安全文件,并打开下面的信息框:

图4.1.7. 打开一个用项目的对话框

你可以选择是打开自动存储的备份文件还是最后一 次存储的项目文件。.

要知道,当你选择自动存选项时,‘Extras’PreviousVersion’命令可以把一个目标复位到上次的存储状态,无论上次是手动存储还是自动存储。.

自动存选项是非常受欢迎的。因为当你的计算机出现故障(不是由TWinCAT PLC引起)或是当电源出现故障时,自动存选项存储你所做的工作.

TWinCAT PLC 提供数据保护

为了保护你的项目免于未授权使用,TWinCATPLC提供了定义口令的方法。为此,用命令project’‘options’password’打开口令对话框。口令对话框如下所示:

图4.1.8. 回令Password对话框

在passward栏中输入你的口令,该口令用于打开你的项目。每输入一个字母,屏幕上出现一个星号。在ConfirmPassword一栏中确认你的口令。用OK按钮关闭对话框。如果出现下面的信息:

„The password and its confirmation are not equal“,

这是因为你的口令和确认的口令不一致。你要重新输入口令并确认。.

现在,如果你正存文件并且要再次打开它,那么TWinCAT PLC提示你输入口令,在输入了正确的口令后,项目才能被打开.

除了这个一般的口令外,你还可以定义写保护口令。因此,在上面对话框〔图4.1.8〕的有关栏目中输入写保护口令,并确认你的口令.

不知道写保护口令,也可以打开一个有写保护的项目。因此,当TWinCAT PLC要求你 输入写保护口令时,在Cancel按钮上击一下。现在你可以编译项目,装入项目,仿真项目等等。但是,你不能存项目.

要小心不要忘记不的口令!否则你要去找系统管理员。

自动格式化 Autoformat

如果选择这一选项,该菜单命令前显示(()。用IEC 1131-3指令表(IL)语言所写 的程序将被自动格式化。空格被插入并且关键字被大写。这将有助你写出更为可读的程序。试试看。

自动装入Autoload

如果选择这一选项,该菜单命令前显示(()。那么每次你启动TWinCATPLC时,上次工作的项目被打开〔显示上次存项目时所占有的工作空间〕.通常这是很有用的。

自动说明Autodeclare

如果选择这一选项,那么当你输入一个还没有进行说明的变量时,一个用于说明变量的对话框打开。

现在已经解释了所有的选项,接着我们继续研究Projict菜单。

'Project''Document'XE "Dokumentieren"

这个命令允许你打印整个项目的资料或部分项目资料.

一个完整的项目资料由以下部分组成:

-POUs

-Structures 结构

-Task configuration 任务组态

-Sampling Trace 采样跟综

-Cross References 交叉参考

-The call trees of POUs and Structures POUs和结构的调用

-The Global Variable List 全局变量表

-The PLC Configuration PLC组态

-A table of contents 目录表

选择这个命令后,出现一个对话框,你可以在对话框中选择你想要打印的资料:

图4.1.6 Document Project 对话框

项目的输出和输入XE "Export"

XE "Import"

TWinCAT PLC提供了输出或输入项目的可能性。因此,你有机会在不同的IEC编程系统之间进行项目的交换。到目前为止,只有IL和ST语言有标准的交换格式。由于这个原因,TWinCAT PLC使用自己的图形语言格式.

'Project''Export'

所有的POUs,PLC组态和一个程序的结构都保存在一个ASCIIFile文件中,这些元素的格式有IEC 1131-3的通用元素格式.

PLC组态和用FBD或LD编写的POUs有TWinCAT PLC 的特殊格式。

'Project''Import'

一个输出文件被输入到一个项目中

如果被输入的POU与已有的POU名称相同,那么它的名称有一个引导线。

'Project''Merge'XE "Merge"

Merge命令允许你把其它项目的目标拷贝出来。

标准窗口文件对话框打开,你必须从中选择想要的项目。然后打开另一个对话框,这个对话框允许你选择你想要拷贝的目标:

图4.1.7. Merge Project 对话框

从POU表中,你可以选择想要的POUs;从结构表中,你可以选择想要的结构。此 外,你可以选择是否拷贝SamplingTrace采样跟综,GlobalVariables全局变量或PLC Configuration PLC组态

用OK按钮.确认,这样选择的目标从被选的项目拷贝到当前的项目中。

如果一个合并的POU与已有的POU名称相同,那么它的名称有一个引导线。

‘Project’ ‘Project Info’

用这个命令,你可以把信息存到你的项目中。选择这一命令,出现下面的对话框:

图4.1.8. 项目信息对话框

一个完整的项目信息包括以下内容:

-文件名 File

-目录 Directory

-最后更改的日期 The date of the last change

这些内容由TWinCAT PLC给出. 你不能改变信息对话框中的这些内容。

你可以增加下面的内容:

-项目的标题 title ,

-作者的姓名 author,

-版本号 version

-项目的描述 description.

每一内容都是可选项。按‘Statistics’按钮,你可以得到有关实际装入项目的统计记录。

'Project''Global Search'XE "Search"

全局检索允许寻找整个项目或部分项目中的某一字符.

'Project''Global Replace'XE "Replace"

全局替代允许代替整个项目或部分项目中的某一字符.

4.2.操作目标

目标/目标表XE "Object"

XE "Objectlist"

一个目标"Object"表示一个POU,一个结构或一个可视化元素。目标表Objectlist〔在屏幕左侧的小窗口〕包括一个项目的所有目标。目标的类型可在目标表上方的组合箱中选择。

要想把POUs改变为Structures, 则在‘POUs’ 文本上击一下,然后选择Structures.

'Project''Delete Object'

这个命令删除目标表中当前选择的目标 (POU, Structure 或可视化元素) 快捷键 .

选择这个命令后,系统提示你确认。命令按’yes’按钮,则目标被删除.

如果目标的编辑窗口是打开的,那么在删除目标以后,编辑窗口将自动关闭.

'Project''Add Object'

建立一个新目标〔快捷键). 新目标的类型取决于在 Object 类选择 窗 口 表中 的 当前选项。.

选择这个命令后,出现一个对话框,该对话框 取决于新的目标类型.

如果新目标是一个POU,那么必须选择新目标的类型〔函数,功能块或程序〕以及想要的编程语言。

图4.2.1. 建立 POU的对话框

'Project''Rename Object'

这个命令是给目标表中当前选择的目标 (POU, Structure或可视化元素) 重新定名.

‘Project’ ‘Convert XE "converting objects" Object’

用这个命令,你可以把一个用ST,FBD,LD或SFC语言编写的程序转换成用IL和FBD语言编写的程序。在下一个版本中,可以转换成梯形图语言

在转换目标之前,必须要编辑项目,选择了这个命令以后,下面的对话框对开:

图4.2.2. 转换POUs对话框

选择要将POU转换成的目标语言,给新的POU起一个新名〔或者新的POU代替原有的POU〕。按OK按钮,一个新的POU就加到你的项目中.

注意:转换一个POU要丢失一些注释。把一个用IL语言编写的POU转换成用FBD语言编写的POU,然后再把它转换回用IL编写的POU,结果,看上去这个POU与原来的POU是不同的,其实它们所做的工作却是相同的.

'Project' 'Open Object'

这个命令把目标表中当前选择的目标(POU, Structure或可视化元素) 装入编辑器中。

'Project''Show Call Tree'XE "Call Tree"

这个命令打开一个窗口,该窗口是目标表中当前所选目标(POU,Structure)的调用 树形图

注意:必须要编译项目!

调用树形图包括对POUs的调用以及结构的来源.

图4.2.2. 调用树形图举例

'Project''Show Cross Reference'XE "Cross Reference"

这个命令打开一个对话窗口,用于找使用变量的地点。当编译项目时,产生一个参考来源。因此,首先要编译你的项目.

图4.2.3. 符号In1的Cross References 参考来源,内容有POU行号,Read/Write 读/写的使用

你若想要知道一个变量使用的地点,则输入变量名或地址,并按’Get References’按钮,如果你想要进入某一地点,那么选择该地点并按’Go to ‘按钮〔或(enter)键 或双击鼠标键。).

'Project''Show Unused variables'XE "Cross Reference"

用这个命令你得到一张所有初始定义 而未被使用的变量表.

‘Extras’ ‘Previous Version’

用这个命令,编辑的目标〔被装到激活窗口中〕复位到上次存储的状态。这个状态可以是手动存也可以是自动存。因此,如果你选择了自动存,那么使用这个命令时,则有可能改变了不想要改变的目标状态.

4.3.常用编辑命令

下面的命令在所有的TWinCAT PLC编辑器中是相同的。这些命令设置在菜单 'Edit'中.

'Edit''Undo'XE "Undo"

该命令表示,在当前打开的编辑窗口中,不做最后一次所做的操作。

快捷键: +.

注意:不是所有的编辑 器都支持undo功能,undo功能不可以用于整个项目的插入,删除或重新给一个POU或一个结构定名。

如果使用两次undo,那么第一次使用undo之前的状态被存储。.

'Edit''Cut'XE "Cut"

把编辑窗口中的当前选项移到剪贴板〔Clipboard)上 .选项 在编辑窗口中 被 删 除。

快捷键: +.

'Edit''Copy'XE "Copy"

把编辑窗口中的当前选项拷贝到剪贴板上。编辑窗口的内容不被修改。

快捷键: +.

'Edit''Paste'XE "Paste"

把剪贴板上的内容插到编辑窗口中当前光标位置上。在图形编辑器中,如果图形结构句法正确,才能执行该项命令

快捷键: +.

'Edit''Delete'XE "Delete"

删除编辑窗口中的当前选项,不改变剪贴板上的内容

快捷键: .

'Edit''Search'XE "Search"

该命令允许检索当前编辑窗口中的某一字符串。选择这一命令后,标准Windows Find对话框出现。该对话框一直打开,当按‘Cancel/close’按钮时,对话框关闭。

对话框选项:

Find What

在这个框中输入你想要寻找的文本.

Match Whole Word only

如果选择这一项,则查找命令按照整个单词来查找文本而不是按照单词的一部分来查找文本。

Match Case 严格大小写

如果选择这一项,则必须注意字符串的大小定。比如说,若输入大写的字符串'Case'就不能查找到小写的字符串‘ case’.

Direction

如果选择'Up',则从编辑 器的当前位置向上查找。否则,从当前位置向下查找.

Find next

按照选择的方向,从选择的位置开始村寻。如果找到文本,就做出标记,如果没有查到文本,那么文本信息栏中出现如下信息 text ' not found.'注意,没有找到的文 本可能被查找对话框遮盖。检索停在编辑窗口内容的始端或末尾。

Cancel/Close

退出查找命令。.

注意:说明语句和文体具有不同的查找区。如果你要在一个字符串上检索不同的目标,就使用 ‘Project’ ‘Global find’命令.

'Edit''Find next'

输入参数〔查找的文本,检索的方向等等〕,重复查查找操作.

快捷键: .

'Edit''Replace'XE "Replace"

这个命令用于检索一个文本并用不同的文本业替代.

选择这个命令后,出现标准的查找和替代对话框。这个对话框一直打开,按'Cancel'/'Close'按钮关闭对话框。在另一个检索对话框中,你找到一栏,并输入文本,那么这一文本将替代被检索的文本。.

注意:说明语句部分和文体有不同的替代区。如果你想要根据一个字符串检索不同的目标,那么使用 ‘Project’ ‘Global replace’命令.

4.4.常用在线命令XE "Online"

当写完你的程序之后,你很可能想要在你的硬件上去运行该程序或在PC中对它进行模拟。要想与PLC连接,则把你的下装在PLC上,察看其运行情况,对它进行调试并必要的修改。所有与这些操作有关的指令被装在’online’菜单项下。因为如果不做模拟,则需要一个从PC至你的PLC (RS232, 以太网,CAN总线等 .)之间的在线连接.

输入某一指令时,将给PLC输送一次服务,对此,PC机也会获得一个响应。

所有可供选用的在线指令均位于菜单项‘Online’名下。某些指令的作用取决于所选择的编辑器。

在仿真状态下,你的程序是在PC机内执行。因为所有在线功能都具备,你不需 要 特殊硬件即可对你的项目进行调试。这是一个非常有用的功能,该功能不仅仅适合于你刚开始的一些小项目。

'Online''Login'XE "Login"

这个命令把系统与PLC连接起来。如果项目没有建立,则自动建立。如果编译产生错误,则TWinCAT PLC不处于在线 方式.

当登录到系统时,TWinCAT PLC检查是否有一个 用户程序装入到PLC中。如果有一个 用户程序,则检查该程序是否与实际被装入TWinCAT PLC的项目相一致。如果相一致,则编程系统由编辑方式转为在线方式。否则,TWinCAT PLC询问你是否要下装新的程序。

在线方式意为:

· 不能编辑项目.

· 可使用所有的在线功能.

· 显示〔监视〕所有的可视化变量.

注意:当登录到你的硬件系统时,TWinCAT PLC进行在线连接。由于各种原因, 有 可 能 发生故障。如果发生故障,有如下信息显示:

"Communication Error: Logout Performed"

通讯故障:退出系统.

在'Online''Communication Parameters' 一栏中,检查设置的参数是否与你的控制器的参数相一致。特别值得注意的是,接口号码是否正确〔COM1:电缆与COM1连接了吗?〕控制器中的波特率与编程系统中的波特率是相同的。(在 TWinCAT PLC 中,缺省值为9600).

注意:当登录成功时,TWinCAT PLC把最后装入PLC的项目与实际装入TWinCAT PLC中的项目进行比较,如果它们不一致,则出现下面的信息:

“ Program has changed! Download the new program?”

程序已改变!下装新的程序码?

现在你可以选择’NO’,并处于在线方式,或者你输入‘YES’,把当前被装入 TWinCAT PLC 中的项目下装到PLC中。

'Online''Logout'XE "Logout"

用这个命令,则由在线方式回到编辑方式。关闭与控制器的连接,退出 仿 真.

'Online''Download'XE "Download"

用这个命令,把一个已编译的项目装入PLC中。当登录到PLC系统时,该命令才被执行。

'Online''Run'

这个命令用于运行你用TWinCAT PLC编写好的程序。

快捷键: .

当你装入一个新程序后,PLC通常仍是 ‘Stop’,状态〔取决于固件〕。这就是说被装入的程序没有执行。 选 择‘run’命令,则程 序将被执行。当遇到一个断点,一个‘stop’命令或一个单循环命令时,程序停止执行。

'Online''Stop'

停止执行装入PLC中的程序.

‘Online’ ‘Reset’

把PLC中的数据初始化。这些数据或者是POUs说明语句中赋给的数值或者为0.为安全起见,在PLC复位前,你必须确认这个命令。

复位后,不执行〔stop〕用户程序。

'Online'

'Toggle BreakpointXE "Breakpoint"'

这个命令的作用取决于当前光标的位置。如果光标在一个有效的中断点位置上,那么在这个位置设置或 清 除一个断点.

有效的中断点位置:

· FBD或梯形图中的每个网络

· SFC中的每一步

· IL和ST中黑灰色的行号

快捷键: or and并双击鼠标.

中断点用青蓝色表示.

程序执行到中断点停止。中断点变为红色。为了继续执行程序,使用Run,Single Cycle, Step In或者Step Over命令〔所有这些命令在Online菜单中〕.

'Online'

'Breakpoint DialogXE "Breakpoint"'

有这个命令打开一个对话框,设置 和 清 除整个项目中断点。 这个对话 框显示 所 有 的 断点并允许找查断点设置的位置.

图4.4.1: 中断点对话框

POU的下拉表包括项目的所有POUs,Location下拉表包括你选择的POU的所有有效断点的位置.

Add是把一个中断点加到所选POU的某一行上〔网络或步〕.该中断点加到中断点列表中。

Delete是删除在中断点列表中所选择的中断点.

Delete all是删除所有的中断点.

Goto是打开某个POU,并在某个中断行上设置光标。该中断行在中断点列表中选择.

'Online'

'Step Over'XE "Single Step"

该命令是执行一个单步。一个POUs的调用 被 看 成一步〔在执行这个POU以后, 停 止执行〕。在SFC中,该命令是执行一个完整的动作.

快捷键: .

'Online'

'Step In'

步进到下一个语句。即使这一语句是在一个不同的POU。如果下一个语句是调用另一个POU,那么在所调用的POU第一个语句之前,程序停止执行

快捷键: .

'Online''Single Cycle'XE "Single Cycle"

开始执行程序,然后停在一个PLC循环周期的末端〔或者停在下一个中断点上〕.

'Online'

'Write Values to PLC'

and

'Online'

'Force Values to PLC' XE "Forcen"

为了改变一个变量的值,在变量的说明语句上双击鼠标键或者选择这个变量,然后按键.

你将得到一个对话框,可用来改变所选变量的值.

图4.4.2. 用于写新的变量值对话框

你按OK按钮以后,该数值被标记做出更改。实际上,在控制器中并未更改。所有被标记的变量数值用红色显示。这就使你有可能一次更改几个变量〔在二个控制器周期之间〕。

用'Write values’命令,所有被标记的变量新值写入PLC中〔然后再次被监视〕。 它 们 通过用户程序写入并立即被更改。'Forcevalues’命令与Writevalues’命令功能相同,但 在每个控制器周期后写数值,直到执行’ Release Force’命令。只要数值被强行设置, 则这些数值用红色显示.

'Online'

'Release Force'

PLC中的Force表被释放。数值不再强行设置.

'Online'

'Show Call Stack'XE "Call Stack"

当程序停在中断点上时,你可以执行这一命令,这时,打开一个对话框,该对话框有一个调用堆栈中当前POUs的列表和行〔网络〕号,以及下一个被调用的POU.

图4.4.3. 调用堆栈举例

第一个POU总是PLC_PRG,因为程序从这里开始执行.

最后的POU总是某个POU,在这里程序停止执行.

从POUs列表中选出某个POU之后,按‘GoTo’按钮,被选POU的一个窗口打开,显示相应的行,网络,和下一个被调用的POU.

'Online' 'Display Flow Control XE "Flow Control" '

流程控制帮助你调试你的项目,而不用使程序停止执行。

当检查到菜单项为(()时,流程控制被激活。

流程控制在所选择的激活编辑窗口上工作。并取决于编写POU所使用的语言。如果激活窗口 不 是用IL,ST或FBD编写的一个POU,则不能显示流程控制。

用IL编写POU的流程控制:

图4.4.4: 用IL编写POU的流程控制

在每行的左侧显示了另一个区域。当控制器正在运行以及某行被执行时,该行的号码区被标记〔绿色〕,并且显示累加器的内容。

用FBD编写POU的流程控制:

图4.4.5: 用FBD编写POU的流程控制

在FBD中,程序通过的每一行,其网络号区被标记〔绿色〕.

对于每一行,你得到通过‘passed’这一行的实际数值。对于布尔数值,当TRUE通过 时,这一行加亮显示〔蓝色〕,否则为一般显示。对于不是布尔数值来说,插入一个文本区,该文区含有通过这一行的实际数值.

'Online''Simulation'XE "Simulation"

如果选择 仿 真方式,则在线服务不在PLC上工作,而是在 仿 真程序上工作。 仿真 程 序如同编程系统一样,在相同的PC下 运行.

'Online''Communication parameters'XE "Communication parameters"

这条命令允许你设置串行接口的参数。

当通过串行接口进行通讯时,有下面的对话框出现:

图4.4.6. 通讯参数对话框

PLC中的通讯参数和控制器中的通讯参数要一致,这一点很重要。

所选择的参数与项目一起保存起来.

4.5.关于视图XE "View"

TWinCAT PLC 提供了一些组态TWinCAT PLC窗口图象的可能。为此,使用'Options' 菜单项下的命令。所有的组态保存在‘TWinCATPLC。ini’文件中,并在下一次起动 TWinCAT PLC时重新被保存。

'Options''Toolbar'XE "Toolbar"

使用这条命令,TWinCATPLC工作区上方的工具条出现或移走。当检查到菜单命令后面的标记(()时,工具条就出现。

图 4.5.1.带画像的工具条

'Options''Statusbar'XE "Statusbar"

使用这条命令,下方的状态条出现或移走。当检查到菜单命令后面的标记(SYMBOL 252 \f "Wingdings")时, 状态条就出现。

图4.5.2. 表示当前项目和在线状态的状态条

通常,状态条显示当前项目的文件,如果选择一个菜单命令中要按一下鼠村键,则状态条就给出这条命令的主要功能描述。如果不选择这条命令,你可以移动鼠标,按放弃键.

'Options’’Declarations as Tables'

所有的说明语句可以用通常的文本方式显示或者用表格表示。使用这条命令,你可以在文本和表格方式之间进行转换.

'Options''Font'XE "Font"

用这条命令,你可以选择TWinCATPLC编辑器的所有字型。且字型的尺寸可增大显示 并加大TWinCAT PLC编辑器的打印输出。

'Options’‘Colors’

用这条命令,你可以编辑TWinCAT PLC的颜色设置。你可以设置行号区〔The Line Number〕的颜色,中断点 〔Breakpoint Positions〕位置的颜色, 一个激活 的中断点 〔Active Breakpoint〕颜色,布尔值监视, 〔The Monitoring of BOOL Values〕的当 前位置颜色,或通过位置〔the Passed Position〕的颜色.

选择上面的某一菜单项,则用于编辑颜色的标准对话框打开.

‘Options’ ‘Position Mark’

在这条菜单命令的下面,你可以选择想要的当前选项是用虚线框显示,还是用实线框显示或者是用填充框显示.

‘Options’ ‘Monitoring’

BYTE,WORD或DWORD类型的变量值可用十进制,十六进制或二进制显示.

4.6.编排窗口XE "window"

为了编排你的TWinCATPLC窗口,有四个不同的命令可供选择,这些命令位于 'Window' 标题的下面.

'Window''Tile vertical'

用这条命令,所有打开的窗口并排摆放。这样就使打开的窗口不重迭,并覆盖整个工作区.

'Window''Tile horizontal'

用这条命令,所有打开的窗口上下摆放,这样就使打开的窗口不重迭,并覆盖整个工作区.

'Window''cascade'

所有打开的窗口以阶形连接方式排列.

'Window''Arrange Symbols'

所有显示记号的窗口在主窗口工作区的底部排成一行.

'Window'‘Messages’

选择这条命令后,会有上一次编译信息的窗口打开。在一条信息上单击一下,你可以打开某个POU的窗口用于查阅信息。如果你在一个错误信息上单击一下,产生错误的某行 为蓝色显示.

'Window'‘Compare Projects’

用这条命令,你可以把一个打开的项目与另一个项目进行比较。例如,如果你要存一个目标,而你不能确信自从上次保存以来,你在哪个地方做了更改,这时,你可以把项目与它自身进行比较。

选择这条命令后,用于打开项目的标准对话框出现。选择你要与当前项目进行比较的项目,按OK按钮,一个窗口打开,在这个窗口里显示比较的结果。被选项目的所有 POUs 排列成表,在每个POU的后面,你可以在括号中找到这个POU的更改信息、

有五个不同的信息:

· “Unchanged“:

· 这个POU与当前的POU相同.

-“Deleted“:

在当前的POU中,这个POU不存在.

· “Implementation changed“:

· 当前POU的实施部分与被比较的POU不同。

-“Interface changed“:

当前POU的说明语句部分与被比较的POU不同。

-“Interface and Implementation changed“:

当前POU的说明语句部分以及实施部分与被比较的POU不同。

'Window' ‘PLC Configuration’

选择这一命令后,用于组态控制器的编辑器打开〔见5。9节〕。.

'Window’‘Global Variables’

选择这一命令后,编辑 全局变量的窗口打开(见5.10节〕.

'Window'‘Library Manager’

选择这一命令后,库管理器窗口打开〔见 5.11节〕.

'Window'‘Task Configuration’

选择这一命令后,任务组态编辑 器窗口打开(见5.12节).

'Window'‘Watch Variables’

选择这一命令后,观 测变量窗口打开(见5.13节).

'Window'‘Sampling Trace’

选择这一命令后,定义采样跟综的窗口打开〔见5.14节〕.

4.7.求助信息 !XE "Help"

如果你对怎样使用TWinCAT PLC以及IEC 1131-3语言元素有什么问题,可以请求, TWinCATPLC在线帮助。在这里你将找到这本手册的所有信息。你可以用两种不同方式使用Help.

用键打开 帮助对话框,该对话框向你提供实际所选标题〔关键词,菜单项,对话框等等〕的帮助。

TWinCATPLC的在线帮助 (onlinehelp)与大多数Windows操作系统的在线帮助是一样 的。所以,如果你有使用Windows操作系统的经验,那么可以跳过下面的内容.

'Help''Contents'

使用这条命令,你进入TWinCAT PLC在线帮助的首页。用鼠标器在一个绿色的有下划 线的标题上单击一下,那么一个新的求助框打开,在这里有对这个标题的解释。仅仅用你的鼠标器击几下,你就将得到任何想要的信息.

'Help''Search'XE "Searching in Help"

你也可以检索一个特殊的标题。如果你已经进入Help中,你可以使用‘Search’按钮打开检索对话框.

在检索对话框的上部,有一个所有Help标题的列表。选择想要的标题,〔或在列表的上方线里输入标题〕。然后按‘listsubject’按钮。在下方的区域中,出现一个列表,表中有所有的题目,选择其中 一个,并按‘Go to’按钮,就进入到Help帮助页中.

5.TWinCAT PLC编辑器XE "Editor"

5.1.说明语句编辑器XE "declaration editor"

TWinCATPLC的所有语言编辑器都由一个说明语句部分和一个语体部分组成。它们之 间用一条分隔线分开。为了移动分隔线,用鼠标器在分隔线上单击按下,然后拖动 , 在移动时,你要始终按着鼠标键 .

关键词 KEY WORDS XE "Key Words"

在所有的TWinCAT PLC编辑器中,关键词都要大写。

说明语句部分XE "Declaration"

在说明语句中,说明所有的变量。这些变量仅在这个POU中使用。说明语句的句法符合IEC1131-3的标准句法

举例说明TWinCAT PLC编辑器中变量说明:

图5.1.1. 说明语句编辑器

输入变量XE "Input variables"

在关键词VAR_INPUT和END_VAR之间说明所有的变量,它们作为输入变量使用。这就是说,在起动程序时,设置这些变量的数值.

输出变量XE "Output variables"

在关键词VAR_OUTPUT和END_VAR之间说明所有输出变量。在正调用的POU内,这些变量易受影响.

局部变量XE "Local variables"

在关键词VAR-END_VAR之间,说明所有局部变量。这些变量不能在POU以外使用。在POU内它们被说明.

'Insert' 'Declaration Keyword', 'Insert' 'Type'XE "Keywords "

XE "Types"

在'Insert'菜单标题下面,你可找到 'Declaration Keywords...' 和'Type...'的命令, 如果你使用其中一个命令,你得到所有允许的关键词列表和所有允许的数据类型列表。如果你在一个关键词上单击一下,则关键词自动地插到光标位置上.

TWinCAT PLC支持下面基本的数据类型:

BOOL (8 Bit), SINT (8 Bit), USINT (8 Bit), INT (16 Bit), UINT (16 Bit), DINT (32 Bit), UDINT (32 Bit), REAL (32 Bit), STRING (variable length), BYTE (8 Bit), WORD (16 Bit), DWORD (32 Bit), TIME (32 Bit), DATE (32 Bit), DATE_AND_TIME (32 Bit), TIME_OF_DAY (32 Bit).

除此以外,TWinCAT PLC支持一维,二维和三维数组。使用下面的句法说明一个二 维数组:

<数组名 >:ARRAY [..,..] OF <元素类型 >.

lb1, lb2代表数组的下边界, ub1, ub2代表数组的上边界.

例如:

pack_of_cards:ARRAY [1..13, 1..4] OF INT;

快捷键的扩展性能XE "short cut expansion feature"

在离线方式下,用+键退出一行,激活说明语句编辑器快捷键的扩展性能。

当输入说明语句时,使用下面的快捷键。

几乎一行的最后一个标识符是说明语句的变量名,说明语句 的类型由一行的最后一个标识符来确定。

Fehler! Textmarke nicht definiert.B or BOOLBOOL

Fehler! Textmarke nicht definiert.I or INTINT

Fehler! Textmarke nicht definiert.R or REALREAL

Fehler! Textmarke nicht definiert.S or STRINGSTRING

如果不能通过最后的标识符确定数据类型的话,则数据的类型为BOOL.最后的标识符有作为类型使用〔见下面的第一个例子〕。

Fehler! Textmarke nicht definiert.任何一个整数作为一个初始值或是一个字符串的字长。该字长取决于说明语句的类型〔第二和第三个例子〕.

Fehler! Textmarke nicht definiert.一个地址 (%IX0.3) 增加一个AT ...修改量〔第四个例子〕.

-后面带一个分号 (;)的文本是一个注释〔第三和第四个例子〕.

Fehler! Textmarke nicht definiert.在一行内的所有其他字符可被忽略〔例如:最后一个例子中的感叹号〕。

例子:

A

A: BOOL;

A B I 2

A, B: INT := 2;

ST S 2; This is a string

ST: STRING(2);(* This is a string *)

X %MD12 R 5; real value

X AT %MD12: REAL := 5.0;(* real value *)

B !

B: BOOL;

说明语句编辑器中的行号

用离线方式,在某一行号上单击一 下就标明整个一行。

用在线方式,假如变量是一个结构变量,则在某一行号上单击一下就扩大或压缩 这一行的变量 〔你可以用变量前面的菱形来辨别结构变量〕.

'View''Declarations as Tables'XE "Declaration table"

用这个命令,你得到用表格显示的说明语句编辑器,好像你在一个卡片索引箱中,可以选择输入变量,输出变量,局部变量和输入以及输出变量各自的卡片。

对每一变量,你可在下面的区域中输入如下内容:

Name:插入变量名

Address:插入变量地址 (AT-说明语句)

Type:

插入变量类型〔如果变量是一个功能块的状态,那么插入功能块〕。

Initial: 插入变量的初始值〔类似于赋值运算符":="〕.

Comment:在这个区域里插入一个注释.

在说明语句中输入新变量

为了在表格中输入一个新变量的说明语句,你必须执行'Insert' 'New Declaration' 命 令。使用这个命令,在说明语句编辑显示新的一行。在这行中Name一栏的缺省内容是‘Name’,Type一栏是‘Bool’,Initial一栏是‘TRUE’。你要改变这些值为想要的值。

举例:

图5.1.2. 表格式说明语句

地址〔Address〕,初始值〔Initial〕和注释〔Comment〕为可选项。一个正确的变量说明语句仅仅需要变量名和类型。在任何时候,你可以毫无问题地在变量的表格式和文本式之间进行转换。在线方式时,两种表达方式是相同的。

表格和文本方式之间的转换用Options’ ‘Declarations as tables’命令.

在线方式的说明语句编辑器

在在线方式时,说明语句编辑器成为一个监视窗口。每行有一个变量,后面是等号 (=) 和变量当前值。如果这个变量没有被定义,则显示三个问号(???).

每个多元素变量的前面是一个菱形,例如:

在菱形上双击鼠标扩展变量,在下面的例子中,结构变量BAND3和子结构变量 TIMER 被扩展如下:

如果一个变量被扩展,那么所有它的组成成分列表于下。变量前的变成单线菱形。在这个菱形上再双击键,则变量被压缩,菱形再次为填充菱形.

在单元素变量上双击鼠标,一个写变量对话框打开。在对话框中,可以改变变量值。

新输入的值用红色显示并保持不变。当执行'Online''WriteValuestoPLC'命令时,所有更改的数值写入PLC中,这 些数值再次用黑色显示.

用'Online''ForceValues to PLC'命令,所有更改的变量强行变为新值, 直到给出 'Online''Release Force'命令.

5.2.文本编辑器〔常用功能〕XE "Text editor"

XE "IL"

XE "Instruction List"

XE "ST"

XE "Structured Text"

TWinCAT PLC文本编辑器具有Windows文本编辑器中的常用功能。

下面的菜单命令专用于文本编辑:

图5.2.1: 两个POUs文本〔Instruction List和Structured Text)的打开窗口.

'Insert''Operator'XE "Operator"

显示在这个语言中可使用的运算符列表。如果选择其中一个运算符并用OK按钮关闭列表,则所选 的运算符插在当前光标位置上。

'Insert''Operand'XE "Operand"

用这条命令,你打开一个操作数帮助对话框,上面包含所有被定义的变量 〔快捷键:〕.

有IL和ST中,为了得到操作数帮助 对话框,使用Insert’ ‘Operand’命令.

图5.2.2:插入操作数帮助对话框。最后一行显示变量的注释.

'Insert''Function'

显示所有可使用函数列表. 你可以在其中选择标准的或用户定义的函数。如果选择其 中一个函数,并用OK按钮关闭对话框,则被选择的函数插入到当前光标位置上。

'Insert''Function Block'

显示所有可使用功能块列表.你可以在其中选择标准的或用户定义的功能块。如果选择了其中一个功能块,并用OK按钮关闭对话框,则被选择的功能块插入到当前光标位置上。

在线方式的文本编辑 器XE "Online"

编辑器的在线功能是设置中断点和程序步。与监视相结合,用户就有了现代化的高级语言调试功能。

采用在线方式,文本编辑器窗口用一条垂线分成两部分。窗口的左侧是常用程序文 本。另一侧是显示左侧所使用的变量以及它们的当前值。在每个多元素变量的前面是一个菱形。在菱形上双击鼠标键,则菱形被扩展或压缩。〔见监视窗口,5.12节〕.

‘Extras’ ‘Monitoring Options’

使用这条命令,你可以用在线方式组态你的文本编辑窗口,你可以调整文本窗口的哪一部分留作监视变量,以及一行中两个监视变量之间的距离。距离1个单位等于所选 字型的行高.

图5.2.3. Monitoring Options对话框

中断点可被插在哪里?

在IL中不是每一行都是中断点的位置. 中断点的位置是在这样的行里。即在这些行的 后 面数值被改变或者程序的执行在这里出现分支。这些行是插入中断点的位置。

在IL中,我们有如下的中断点位置:

-一个POU的开头

-在每个LD, LDN上

-在每个JMP, JMPC, JMPCN上

· 在每个标号上

-在每个 CAL, CALC, CALCN上

-在每个 RET, RETC, RETCN上

-在POU的结尾上

在ST中,我们有如下的中断点位置:

-在每个赋值语句上 (:=)

-在每个RETURN和EXIT语句 上

-

在WHILE, IF ELSEIF, UNTIL语句中被赋值的条件句上

-在POU的结尾上

你可以用行号区的颜色来识别中断点的位置。它的颜色比其它行的颜色深,为黑灰色。〔见图3.2.2.〕.

怎样设置一个中断点XE "Breakpoint"?

在一个行号区上单击鼠标来设置一个中断点。如果这一行是中断点位置,那么它的颜色由黑灰色变为青蓝色. 在PLC中,中断点立即被激活。

删除中断点

在设置中断点的行号区上单击一下,则中断点删除。

设置和删除中断点的操作也可以通过使用菜单命令('Online''Toggle Breakpoint'), 和功 能键F9来完成.

当程序执行到中断点时,将发生什么?

当用户程序执行到中断点上停止时,TWinCATPLC显示停止执行程序的POU和POU的中断行。

你可以通过输入命令'Online''Run'(快捷键F5).来继续执行用户程序。除此以外,你可以使用命令'Online' 'Step over' (快捷键F10) and 'Step in' (快捷键F8)步进到下一 个中断点位置.

如果在当前行〔程序在这一行停止执行〕与下一个中断点位置之间的某一行调用一个POU, 那么使用 'Online' 'Step in' 命令将步进到这个POU内,用'Online' 'Step over' 命令,有调用POU之后,程序停止执行.

图5.2.4. 有中断位置〔较黑的网络号区〕的IL编辑器

5.3.指令表编辑器XE "IL-Editor"

指令表IL是PLC的汇编程序语言。它易于理解,但属于低 级语言。

IL编辑器是文本式编辑器。在IL中,使用下面的运算符和修改量:

修改量是:

Cwith JMP, CAL, RET: 如果前一个表达式的结果是TRUE,则执行指令.

Nwith JMPC, CALC, RETC: 如果前面的表达式结果是FALSE,则执行这条指令 .

Nwith AND, OR, XOR:最后操作数的非运算〔不是堆栈内容的非运算〕。

左括号修改量"(" 表明运算符的赋值推迟,直到遇到右括号")" 。例如,指令的顺序

AND(%IX1

OR%IX2

)

被看作为:

result := result AND (%IX1 OR %IX2)

IL运算符的完整内容列表如下:

运算符〔operator〕

修改量〔Modifiers〕

语义〔Semantics〕

LD

N

设置当前结果等于操作数

ST

N

把当前结果存到操作数位置上

S

如果并且只有当前结果为TRUE时,设置布尔 操作数为TRUE

R

如果并且只有当前结果为TRUE时,设置布尔操作数为FALSE

AND

N,(

以位为单位“ 与”运算

OR

N,(

以位为单位“ 或”运算

XOR

N,(

以位为单位“ 与非”运算

ADD

(

加法

SUB

(

减法

MUL

(

乘法运算

DIV

(

除法运算

GT

(

>大于号

GE

(

>=大于等于号

EQ

(

=等于号

NE

(

<>不等于号

LE

(

<=小于等于号

LT

(

<小于号

JMP

C,N

跳向标号

CAL

C,N

调用功能块

RET

C,N

从被调用的功能块返回

)

推迟求值运算符

IEC的所有运算 符列表可在附录中找到.

使用某些修改量的IL程序举例:

LDTRUE(* Load TRUE into the accu *)

把TRUE装入累加器中

ANDNBOOL1(* execute AND with the negated value *)

(* of the variable BOOL1 *)

与BOOL1变量的“ 非”值进行“ 与”运算

JMPCend(* if the result was TRUE, jump *)

(* to the label "end" *)

如果结果是TRUE,则跳到‘ END’标号

LDNBOOL2(* Store the negated value of *)

STERG(* BOOL2 to ERG *)

把BOOL2的“ 非”值存入ERG中

end:

LDBOOL2(* Store the value of *)

STERG(* BOOL2 to ERG *)

把BOOL2的值存入ERG

流程控制: XE "Flow Control"

在IL中,流程控制显示被执行程序行中 累 加 器的值。

用命令’Online’‘DisplayFlowControl’,一个附加区插在窗口的左侧,与行号区相邻.这个区含有上一次执行完该行以后累加器的值。你可以通过中断点位置行号区的颜色来区别在上一次PLC周期哪些行被执行。哪些行未被执行。〔被执行行的缺省颜色:绿色〕

注意:只有激活窗口才能显示一个流程控制。在你的IL编辑窗口任一地方单一下,使窗口被激活。

5.4.结构化文本编辑器XE "ST"

XE "Structured Text"

XE "ST-Editor"

结构化文本是IEC11313的一种高级语言。在某些方面类似于PASCAL语言,但是了解C语言的人对于理解这种语言也是没有问题的。

下面的定义来自IEC11313标准。如果你司惯于使用高级编程语言,那么只是看一看 例子就行了。

结构化文本语言是一种结构式编程语言。这就是说,ST提供的某些结构应用于常用结构的编程,像循环或条件表达式。这种语言的优点是,程序出错率低,可读性高。

让我们看一个例子,比较两个程序,一个程序用ST编写,一个程序用IL编写,两个程序的作用相同。

用IL语言编写计算2的乘方的循环语句:

loop:

LD Counter

EQ 0

JMPC end

LD Var1

MUL 2

ST Var1

LD Counter

SUB 1

ST Counter

JMP loop

end:

LD Var1

ST Result

用ST语言编写计算2的乘方的循环语句:

WHILE Counter<>0 DO

Var1:=Var1*2;

Counter:=Counter-1;

END_WHILE

Result:=Var1;

显而易见,用ST语言编写的循环语句比较短,易于理解。当你必须写一个需要许多执行控制(if..then,while,for)的程序时,则用ST语言编写,因为和其他语言相比,ST有很大的优点.

表达式XE "Expressions"

一个表达式是一个结构,在执行表达式以后,产生一个数值。

表达式由操作符和操作数组成。一个操作数可以是一个直接量,一个变量,一个功能的调用或者其它的表达式。

表达式的计算值

一个表达式的计算是由一序列操作符组成。操作符的计算顺序是由操作符的优先级确定。在一个表达式中,首先使用有最高优先级的操作符,接下来是使用有较低优先级的操作符。。。等等,直至完成整个表达式的计算。

具有相同优先级的操作符,其计算顺序是从左到右。

例如:

如果 A,B,C,D是INT型变量,其值分别为1,2,3,4,那么,

A+B-C*ABS(D)

计算值为 -9

(A+B-C)*ABS(D)

计算值为 0

ST运算符列表如下:

Operation〔操作〕

Symbol〔符号〕

Precedence〔优先级〕

Parenthesis〔括号〕

( Expression )〔表达式〕

HIGHEST〔最高〕

Function evaluation〔函数计算〕

Function name ( argument list)函数名〔自变量表〕

Exponentation指数运算

**

Negation“ 非”运算Complement 补码运算

-

NOT

Multiply 乘法

Divide 除法

Modulo 模数计算

*

/

MOD

Add 加法

Subtract 减法

+-

Comparison 比较

<,>,<=,>=

Equality 等于Inequality 不等式

=<>

Boolean AND 布尔“ 与”

AND

Boolean XOR 布尔“ 与非”

XOR

Boolean OR 布尔“ 或”

OR

LOWEST 最低

ST语句表:

语句的类型

举例

赋值语句

A:=B; CV := CV + 1; C:=SIN(X);

功能块的调用和FB的输出

CMD_TMR(IN := %IX5, PT := 300);

A:=CMD_TMR.Q

RETURN语句

RETURN;

IF语句

D:=B*B;

IF D<0.0 THEN

C:=A;

ELSEIF 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语句

J:=101;

FOR I:=1 TO 100 BY 2 DO

IF ARR[I] = 70 THEN

J:=I; EXIT;

END_IF;

END_FOR;

WHILE语句

J:=1;

WHILE J<= 100 AND ARR[J] <> 70 DO

J:=J+2;END_WHILE;

REPEAT语句

J:=-1;

REPEAT

J:=J+2;

UNTIL J= 101 OR ARR[J] = 70

END_REPEAT;

EXIT语句

EXIT;

空语句

;

赋值运算

在一个赋值语句的左边是一个操作数〔变量,地址〕,在右边是一个表达式的值,赋值给 操作数。

语法:

<操作数> := <表达式 >;

含义:

把表达式的结果赋值给操作数。

举例:

Var1 := Var2 * 10;

调用的功能块:XE "invocation of a function block in ST"调用功能块只是简单地写功能块的名称。你可以给功能块的输入参数写赋值语句并用括号括起来。输入参数赋值语句的顺序是可选择的。

语法:

(Input1 := , ... ,Inputn := );

含义:

调用名称为‘Instance_Name’的功能块,在调用之前,将操作数赋值给输入变量.

举例:

在下面的例子中,调用一个记时器,并给参数IN和PT赋值。然后将结果值Q赋值给变量A.

访问功能块结果值的方法是:写出功能块的名称,然后写一个点。再写变量名。

CMD_TMR(IN := %IX5, PT := 300);

A:=CMD_TMR.Q

The RETURNXE "RETURN"语句t

当程序执行到"RETURN"语句时,事实上,被执行的POU被放在一边。

语法:

RETURN;

含义:

把POU放在一边,然后回到调用它的地方。

举例:

下面的例子表示一个功能的第一条语句,该功能需要一个正的输入变量var1。

func:=FALSE;

IF var1<0 THEN

RETURN;

END_IF;

The IF语句tXE "IF-Anweisung"

IF语句允许在一定的条件下执行某些表达式。.

语法:

IF <条件> THEN

<语句1>;

ELSE_IF <条件2> THEN

<语句2> ;

.

.

ELSE_IF <条件n> THEN

<语句 n>;

ELSE

<语句 n+1>;

END_IF;

The ELSE_IF分支是可选择的,ELSE分支也是可选择的.

含义:

如果〔条件〕是TRUE,那么执