You are on page 1of 469

用户手册

PLC编程

CoDeSys2.3 版本
版权所有 1994、1997、1999、2001、2002、2003、2004、2005、2006、
2007、2010by3S-SmartSoftwareSolutionsGmbH 保留所有权利。

我们竭尽全力确保本文档的正确性和完整性。但是,由于不可能生成绝对无错误的文本,请
随时向我们发送您的提示和建议以改进它。

商标
Intel 是 Intel Corporation 的 注 册 商 标 , 80286 、 80386 、 80486 、 Pentium 是 Intel
Corporation 的商标。
Microsoft、MS 和 MS-DOS 是 MicrosoftCorporation 的注册商标,Windows 和
Intellisense 是 Corporation 的商标。

发行人
3S - Smart Software Solutions GmbH
Memminger Straße 151 D-87439
Kempten 电话:+4983154031-0
传 真 +49 831 5 40 31 – 50

最后更新日期28.10.2010

文 档 版 本 6.0 , CoDeSys v.2.3.9.24


目录

内容

1 A 简介 1-1
1.1 什么是CoDeSys...............................................................................................1-1
1.2 CoDeSys 函数概述.......................................................................1-1
1.3 CoDeSys 用户文档概述...........................................1-3

2 CoDeSys 中有什么 2-1


2.1 项 目 组 件 ... .......................................................................................2-1
2.2 语言.........................................................................................................2-9
2.2.1 指 令 列 表 ( IL ) ... ..........................................................................................2-9
2.2.2 结 构 化 文 本 ( ST ) ... .......................................................................................2-11
2.2.3 顺序功能图(SFC).......................................................................2-16
2.2.4 功能框图(FBD)..........................................................................2-21
2.2.5 连续功能图编辑器(CFC)....................................................2-21
2.2.6 梯形图(LD).........................................................................................2-22
2.3 调试、在线功能.............................................................................2-23
2.4 标准.....................................................................................................2-26

3 我们写一个小程序 3-1
3.1 控 制 交 通 信 号 单 元 ... ......................................................................3-1
3.2 可 视 化 交 通 信 号 单 元 ... ......................................................................3-11

4 各个组件 4-1
4.1 主窗口..............................................................................................4-1
4.2 项 目 选 项 ... ...............................................................................................4-3
4.3 管理项目.............................................................................................4-22
4.4 管理项目中的对象...........................................................................4-53
4.5 一般编辑功能..................................................................................4-61
4.6 一般在线功能..................................................................................4-67
4.7 窗 口 设 置 ... ................................................................................................4-83
4.8 在 您 需 要 时 提 供 帮 助 ... ....................................................................................4-83

5 CoDeSys 中的编辑器 5-1


5.1 这适用于所有编辑...........................................................................................5-1
5.2 声明编辑器..............................................................................................5-3
5.2.1 在声明编辑器中工作......................................................................5-3
5.2.2 在线模式下的声明编辑器...................................................................5-10
5.2.3 声明编辑器中的编译指示....................................................5-11
5.3 文本编辑器.................................................................................................5-21
5.3.1 在文本编辑器中工作.......................................................................................5-21
5.3.2 指令列表编辑器..................................................................................5-25
5.3.3 结构化文本编辑器............................................................................5-26
5.4 图形编辑器...........................................................................................5-26
5.4.1 在图形编辑器.................................................................................中工作5-26
5.4.2 功能块图编辑器...................................................................5-30
5.4.3 梯形图编辑器..............................................................................................5-35
5.4.4 顺序功能图编辑器................................................................5-41

CoDeSysV2.3版本 i
目录

5.4.5 连续功能图编辑器(CFC)....................................................5-49

6 资源 6-1
6.1 资源概述..............................................................................6-1
6.2 全局变量、变量配置、文档框架.............................6-2
6.2.1 全局变量.................................................................................................6-2
6.2.2 变量配置........................................................................................6-6
6.2.3 文档框架...............................................................................................6-7
6.3 报警配置...........................................................................................6-8
6.3.1 概述............................................................................................................6-8
6.3.2 警报的一般信息,术语...............................................................6-9
6.3.3 报警类别.....................................................................................................6-10
6.3.4 报警组......................................................................................................6-13
6.3.5 报警保存......................................................................................................6-15
6.3.6“附加”菜单:设置.......................................................................................6-16
6.4 库管理器.................................................................................................6-16
6.5 日志.....................................................................................................................6-18
6.6PLC配置..............................................................................................6-20
6.6.1 概述............................................................................................................6-20
6.6.2 在PLC配置中工作......................................................................6-21
6.6.3PLC配置中的常规设置........................................................6-23
6.6.4 自定义特定参数对话框......................................................................6-24
6.6.5I/O模块的配置..........................................................................6-25
6.6.6 通道................................................................................的配置6-28
6.6.7Profibus模块的配置.....................................................................6-29
6.6.8CANopen模块的配置...................................................................6-36
6.6.9CanDevice(CANopen从站)的配置...............................................6-41
6.6.10DeviceNet模块的配置..................................................................6-45
6.6.11 在线模式下的PLC配置.....................................................................6-49
6.6.12PLC的硬件扫描/状态/诊断信息................................6-50
6.7 任务配置.............................................................................................6-51
6.7.1 概述............................................................................................................6-51
6.7.2 在任务配置中工作.....................................................................6-52
6.7.3 系统事件...................................................................................................6-55
6.7.4 在线模式下的任务配置....................................................................6-55
6.8 手表和食谱管理器.............................................................................6-57
6.8.1 概述............................................................................................................6-57
6.8.2 创建监视列表、配方...........................................................................6-59
6.8.3 在线模式下的观察和食谱管理器..............................................6-63
6.9 采样轨迹...........................................................................................6-64
6.9.1 概述和配置...............................................................................6-64
6.9.2 生成跟踪采样............................................................................6-66
6.9.3 查看采样跟踪..........................................................................6-67
6.9.4'Extras''保存跟踪值'.................................................................................6-69
6.9.5'Extras''外部跟踪配置'..............................................................6-69
6.10 工作区.........................................................................................................6-70
6.11 参数管理器...........................................................................................6-70
6.11.1 概述、激活...........................................................................................6-71
6.11.2 参数管理器编辑器,概述.........................................................6-72
6.11.3 参数列表类型和属性..................................................................6-73
6.11.4 管理参数列表...................................................................................6-75
6.11.5 编辑参数列表........................................................................................6-76
6.11.6 在线模式下的参数管理器..................................................................6-78
6.11.7 参数列表的导出/导入.......................................................................6-79

第二 CoDeSysV2.3版本
目录

6.12 目标设置...................................................................................................6-79
6.13PLC浏览器..............................................................................................6-80
6.13.1 关于PLC浏览器操作的一般说明.......................................6-80
6.13.2PLC浏览器中的命令条目.................................................................6-81
6.13.3 在PLC浏览器中输入命令时使用宏...............................6-83
6.13.4 其他PLC浏览器选项............................................................................6-83
6.14 工具..................................................................................................................6-84
6.14.1 可用工具快捷方式的属性(对象属性)................................6-84
6.14.2 管理工具快捷方式...................................................................................6-87
6.14.3 关于工具的常 问题................................................................6-88

7 弹性网卡 7-1
7.1.1 什么是弹性网卡........................................................................................................7-1
7.1.2 使用ENI项目数据库的前提条件..................................7-1
7.1.3 在 CoDeSys 中使用 ENI 项目数据库.........................................7-2
7.1.4 与项目数据库有关的对象类别..........................................7-2

8 DDE 接口 8-1
8.1 CoDeSys编程系统的DDE接口........................................8-1
8.2 DDE 与 GatewayDDE 服务器的通信...........................................8-2

9 CoDeSys 中的许可证管理 9-1


9.1 许可证管理器........................................................................................9-1
9.1.1 在 CoDeSys 中创建许可库.............................................................9-1

10 附录 10-1

附录 A: IEC 运算符和其他规范扩展功能 10-1


10.1 算术运算符..........................................................................................10-1
10.2 位字符串运算符.............................................................................................10-4
10.3 位 移 算 子 ... ..........................................................................................10-6
10.4 选择运算符...........................................................................................10-8
10.5 比较运算符.......................................................................................10-11
10.6 地址运算符.............................................................................................10-13
10.7 呼叫运营商...............................................................................................10-14
10.8 类型转换..............................................................................................10-14
10.9 数字运算符.............................................................................................10-20
10.10 初始化运算符.........................................................................................10-24

附录B: CoDeSys 中的操作数 10-25


10.11
常数。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
10-25

10.12
变量。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10-27

10.13
地址。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10-29

10.14
功能。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
10-30

附录C: CoDeSys 中的数据类型 10-31


10.15 标准数据类型...........................................................................................10-31
10.16 定义的数据类型.............................................................................................10-33

附录D: CoDeSys 库 10-39


10.17 Standard.lib 库......................................................................................10-39
10.17.1 字符串函数..................................................................................................10-39

CoDeSysV2.3版本 第三
目录

10.17.2 双稳态功能块....................................................................................10-42
10.17.3 触发器................................................................................................................10-44
10.17.4 反 ... ...........................................................................................................10-45
10.17.5 计时器..................................................................................................................10-47
10.18 Util.lib 库...............................................................................................10-50
10.18.1BCD转换................................................................................................10-50
10.18.2 位/字节函数.............................................................................................10-50
10.18.3 数学辅助函数.........................................................................10-51
10.18.4 控制器..........................................................................................................10-54
10.18.5 信号发生器..............................................................................................10-57
10.18.6 功能操纵器........................................................................................10-59
10.18.7 模拟值处理...................................................................................10-60
10.19 AnalyzationNew.lib 库...........................................................................10-61
10.20 CoDeSys 系统库................................................................................10-62

附录E: 运算符和库模块概述 10-63


10.21 CoDeSys 中的运算符.......................................................................................10-63
10.22 Standard.lib:............................................................................. 的元素10-66
10.23 Util.lib.......................................................................................的元素10-66

附录F: 命令行-/命令文件 10-69


10.24 命令行命令...............................................................................10-69
10.25 命令文件(cmdfile)命令..................................................................10-70

附录G: 子进口 10-79


10.26 从 SEQ 符号文件导入.........................................................................10-79
10.27 从 S5 项目文件导入.............................................................................10-80
10.28 将 S5 转 换 为 IEC 61131-3...........................................................................10-80

附录H: 目标设置详解 10-85


10.29 类别“目标平台”中的设置.................................................................10-85
10.29.1 目标系统 Intel386 兼容,类别目标平台.........................10-85
10.29.2 目标系统摩托罗拉 68K,类别目标平台....................................10-86
10.29.3 目标系统 InfineonC16x,类别目标平台...................................10-87
10.29.4 目标系统 IntelStrongARM 和 PowerPC,类别目标平台.....10-88
10.29.5 目标系统 MIPS,类别目标平台................................................10-89
10.29.6 目标系统“HitachiSH”,类别目标平台.......................................10-90
10.29.7 目标系统“兼容 8051”,类别目标平台.............................10-91
10.29.8 目标系统“TriCore”,类别目标平台..........................................10-91
10.30 类别内存布局的目标设置....................................................10-92
10.31 “常规”类别中的目标设置..................................................................10-94
10.32 “网络功能”类别中的目标设置..............................................10-96
10.33 类别可视化中的目标设置..........................................................10-97

附录一: 键盘的使用 10-99


10.34 键盘................................................................................................的使用10-99
10.35 组合键..............................................................................................10-99

附录J: 关于标识符命名的建议 10-103


10.36 标识符的命名..........................................................................................10-103
10.37 变量的标识符(变量名称)...........................................................10-103
10.38 用户定义数据类型(DUT)的标识符.....................................................10-105

四 CoDeSysV2.3版本
目录

10.39 功能、功能块、程序(POU)的标识符.................................10-105
10.40 可视化标识符...............................................................................10-106

附录 K:编译器错误和警告10-107
10.41 警告............................................................................................................10-107
10.42 错误.................................................................................................................10-113

11 指数 命令行界面

CoDeSysV2.3版本 v
目录

六 CoDeSysV2.3版本
1 -CoDeSys 简介

1 CoDeSys 简介

1.1 什么是CoDeSys
CoDeSys是 PLC 的完整开发环境。(CoDeSys代表受控开发系统)。

CoDeSys为PLC程序员提供了一种强大的IEC语言的简单方法。编辑器和调试功能的使用基于高级编程语
言(如 VisualC++)的成熟开发程序环境。

1.2 CoDeSys 功能概述...


项目结构如何?
将项目放入以该项目命名的文件中。在新项目中创建的第一个 POU (项目群组织单位)将自动命名为
PLC_PRG。该过程从这里开始(符合 C 程序中的 main 函数),可以从同一点(程序、功能块和函数)
访问其他 POU。

定义任务配置后,不再需要创建名为 PLC_PRG 的程序。您将在“任务配置”一章中找到有关此内容的更


多信息。
项目中有不同类型的对象:POU、数据类型、显示元素(可视化)和资源。

对象管理器包含项目中所有对象的列表。

如何设置我的项目?
首先,您应该配置PLC,以检查项目中使用的地址的准确性。

然后,您可以创建解决问题所需的 POU。
现在,您可以使用所需的语言对所需的 POU 进行编程。
编程完成后,您可以编译项目并删除任何错误(如果有错误)。

如何测试我的项目?
消除所有错误后,激活模拟,登录到模拟的 PLC 并在 PLC 中“加载”您的项目。现在您处于在线模式。

现在打开带有PLC 配置的窗口并测试您的项目是否正确。为此,请手动输入输入变量并观察输出是否符
合预期。您还可以观察 POU 中局部变量的值序列。在监视和配方管理器中

您可以配置要检查其值的数据记录。

调试
如果出现编程错误,您可以设置断点。如果进程在此类断点处停止,则可以在此时间点检查所有项目变量
的值。通过按顺序(单步)工作,您可以检查程序的逻辑正确性。

附加在线功能
进一步的调试功能:
您可以将 程序变量以及输入和输出设置为特定值。您可以使用流控制来检

CoDeSysV2.3版本 1-1
CoDeSys 功能概述...

查哪些程序行已运行。
A日志按时间顺序记录联机会话期间的操作、用户操作和内部进程。

如果在目标设置中激活,采样跟踪允许您在较 时间内跟踪和显示变量的实际过程。

此外,PLC浏览器是目标特定功能,它可以用于从PLC请求某些信息。

一旦项目被设置和测试,就可以将其加载到硬件上并进行测试。将提供与模拟相同的在线功能。

其他 CoDeSys 功能
整个项目可以随时记录或导出到文本文件。
出于通信目的,CoDeSys 具有符号接口和 DDE 接口。网关服务器以及 OPC 服务器和 DDE 服务器是
CoDeSys 标准安装数据包的组件。

使用适当的目标设置,可以借助目标文件(目标支持包)加载,可以将相同的 CoDeSys 项目加载到各种


目标系统。
如果当前目标设置激活了网络全局变量和参数管理器,则可用于控制器网络内的数据交换。

ENI:“工程接口”可用于通过ENI服务器访问任何所需的源代码管理程序,该服务器作为独立进程运行。
CoDeSysPOU 和编译文件可以归档到该数据库中,也可以由 ENI 服务器的其他客户端访问。这允许在
CoDeSys项目工作期间进行多用户操作,它为CoDeSys以外的不同工具提供了一个通用数据池,并使版
本管理成为可能。

工具:此功能还依赖于目标,并允许在CoDeSys项目中启动特定于目标的可执行文件。除此之外,还可
以定义文件,这些文件应该加载到控制器中。与外部工具的连接可以在目标文件中预定义,或/并插入到
项目资源树中。

A CoDeSys可视化可以专 处理为目标,以用作Web 可视化


和/或目标可视化。这允许通过互联网或PLC监视器运行和查看可视化。

1-2 CoDeSysV2.3版本
1 -CoDeSys 简介

1.3CoDeSys 用户文档概述
模块 文档内容 文件名

CoDeSys编程系统 通过编程系统中的帮助菜单提供手动和在线帮 CoDeSys_V23_E.pdfCoDeSys 的


助 CoDeSys 编程系统的第一步(示例) 第一步V23.pdf

网关服务器 概念、安装和用户界面;通过网关菜单提供用户 网关Manual.pdf


界面的在线帮助(可以通过鼠标打开-单击系统
托盘中的网关符号)

OPC服务器 OPC-ServerV2.0,安装和使用 OPC_20_How_to_use_E.pdf


CoDeSys 可视化 CoDeSys 可视化手册,包括。CoDeSys CoDeSys_Visu_V23_E.pdf
HMI、目标和 Web 可视化

软运动 如何使用,主要 SoftMotion 库模块的说明 CoDeSys_SoftMotion_V23_E.pdf

图书馆 Standard.lib 和 Util.lib 在现有手册中进行了介 <SysLib 名 称 >.pdf


绍。 CoDeSys_V23_E.pdf
对于每个 CoDeSys 系统库,都有一个文档<库
名称>.pdfSoftMotion 库:请参阅 SoftMotion
文档。

ENI 服务器 在外部数据库中安装和配置与CoDeSys项目的 EniServerQuickstart_E.pdf


源代码控制有关的ENI服务器。在 CoDeSys 中 CoDeSys_V23_E.pdf
配置弹性网卡:请参阅现有手册。

ENIAdmin、ENIControl 和 ENIExplorer:请
参阅参考在线帮助。

CoDeSysV2.3版本 1-3
CoDeSys 用户文档概述

1-4 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

2CoDeSys 中的内容是什么

2.1 项目组件...
项目
项目包含 PLC 程序中的所有对象。项目保存在以项目命名的文件中。项目中包括以下对象:

POU(程序组织单位)、数据类型、可视化、资源和库。

FOR(组织单位计划)
函数、功能块和程序是 POU,可以通过操作进行补充。
每个 POU 由一个声明部分和一个正文组成。正文是用IEC编程语言之一编写的,包括IL,ST,SFC,
FBD,LD或CFC。
CoDeSys支持所有 IEC 标准 POU。如果要在项目中使用这些 POU,则必须在项目中包含库
standard.lib。
POU 可以调用其他 POU。但是,不允许递归。

功能
函数是一个 POU,它在处理时只生成一个数据元素(可以由多个元素组成,例如字段或结构),并且在
文本语言中可以作为表达式中的运算符进行调用。

声明函数时,不要忘记该函数必须接收类型。这意味着,在函数名称之后,必须输入冒号,后跟类型。关
于附录J:关于命名的建议。

A 确的函数声明可能类似于以下示例:
函数 Fct:INT
此外,必须将结果分配给函数。这意味着函数名称用作输出变量。

A 数声明以关键字 FUNCTION 开头。


在IL中,函数调用只能定位在步骤的操作或转换中。
在ST中,函数调用可以用作表达式中的操作数。
IL 中的函数示例,该函数采用三个输入变量并返回前两个变量除以第三个变量的乘积:

CoDeSysV2.3版本 2-1
项目组件...

IL 中的函数示例

调用函数:
ST 中函数的调用可以在表达式中显示为操作数。
在 SFC 中,函数调用只能在步骤或转换中发生。
注意:CoDeSys 允许在函数中使用全局变量。这有意偏离了 IEC61131-3 标准,该标准规定只有函数的返回值 才会
被输入参数修改。因此,函数和程序之间的区别只是函数只返回一个返回值,并且它们的参数和返回值通过堆栈进行
处理。

调用函数的示例。
在伊利诺伊州:

LD 7 Fct
2,4ST结

在ST中:

结果:=Fct(7, 2, 4);

在 FBD 中:

注意:如果在函数中将局部变量声明为 RETAIN,则没有任何效果!该变量不会写入 Retain 区域!

注意: 以下检查函数名称保留用于描述的用法:
- 如果你在项目中定义了一个名为CheckBounds的函数,你可以用它来检查项目中的范围溢出!函数的
名称已定义,并且可能仅具有此标识符。有关进一步的说明,请参 第 10.1 章算术运算符,DIV。

- 如果您在项目中定义了名为CheckDivByte、CheckDivWord、CheckDivDWord 的 函 数 , 则 resp.
CheckDivReal,如果您使用运算符 DIV,您可以使用它们来检查除数的值,例如避免除以 0。

-如果定义名称为CheckRangeSigned和CheckRangeUnsigned的函数,则可以拦截使用子范围类型声
明的变量的范围(参 第 10.16 章“数据类型”)。

2-2 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

功能块
功能块是在此过程中提供一个或多个值的 POU。与函数相反,功能块不提供返回值。

功能块声明以关键字 FUNCTION_BLOCK 开头。关于附录 J:附录 J:关于命名的建议。

可以创建功能块的复制品或实例(副本)。
IL 中的功能块示例

IL 中具有两个输入变量和两个输出变量的功能块的示例。一个输出是两个输入的乘积,另一个是相等的比较:

功能块实例
可以创建功能块的复制品或实例(副本)。
每个实例都拥有自己的标识符(实例名称)和一个包含其输入、输出和内部变量的数据结构。实例在本地
或全局声明为变量,而功能块的名称则表示为标识符的类型。关于附录 J:附录 J:关于命名的建议。

FUB 功能块中名为 INSTANCE 的实例示例:


fubinstance:FUB;
功能块始终通过上述实例调用。
只能从功能块实例外部访问输入和输出参数,而不能访问其内部变量。

访问输入变量的示例

功能块 FB 有一个 INT 类型的输入变量 in1。


程序程序VAR

fbinst1:fb;
END_VAR LD 17

ST fbinst1.iIn1 CAL fbinst1

END_PROGRAM

CoDeSysV2.3版本 2-3
项目组件...

功能块和程序的声明部分可以包含实例声明。函数中不允许使用实例声明。

对功能块实例的访问仅限于声明该实例的 POU,除非它是全局声明的。

功能块实例的实例名称可以用作函数或功能块的输入。

注意:处理一个功能块后,所有值都会保留,直到下一个功能块被处理。因此,具有相同参数的功能块调用并不总是
返回相同的输出值!
注意:如果功能块变量中至少有一个是保留变量,则整个实例将存储在保留区域中。

调用功能块
通过设置功能块的实例并使用以下语法指定所需的变量,可以从另一个 POU 访问功能块的输入和输出变
量:
<实例名称>.<变量名称>
在调用时分配参数:
如果要在调用功能块时设置输入和/或输出参数,则可以在文本语言 IL 和 ST 中执行此操作,方法是在括
号中将参数赋值给功能块实例名称之后的参数(对于输入参数,此分配使用“:=”进行,就像在声明位置
初始化变量一样,对于输出参数,将使用“=>”)。

如果通过输入助手(<F2>)插入实例,并在 ST 或 ILPOU 的实现窗口中使用选项 With 参数,则将根据


此语法自动显示该实例及其所有参数。但您不一定必须分配这些参数。

例:
FBINST 是功能块类型的局部变量,它包含输入变量 xx 和输出变量 yy。当通过输入助手将 FBINST 插入
ST 程序时,调用将显示如下: FBINST1(xx:= , yy=> );

调用时的 InOutVariables:
请注意,功能块的 InOutVariables (VAR_IN_OUT)是作为指针移交的。因此,在调用功能块时,不能
将常量分配给VAR_IN_OUTs并且没有从外部对它们的读取或写入访问。

在 ST 模块中调用功能块 fubo 的VAR_IN_OUT变量 iInOut1:


VARfuboinst:fubo;iVar1:int;

END_VAR
iVar1:=2;fuboinst(iInOut1:=iVar1);

在这种情况下不允许:“fuboinst(iInOut1:=2);” 或“fuboinst.iInOut1:=2;”

调用功能块 FUB 的示例:

功能块 FUB, 上文“功能块”一章


乘法结果保存在变量 ERG 中,比较结果保存在 QUAD 中。声明名为 INSTANCE 的 FUB 实例。

这是在 IL 中调用功能块实例的方式:

2-4 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

这就是在 ST 中调用功能块实例的方式(声明部分与 IL 相同)

这就是在 FBD 中调用功能块实例的方式(声明部分与 IL 相同)

在 SFC 中,功能块调用只能分步进行。

程序
程序是一个 POU,它在操作过程中返回多个值。在整个项目中,项目在全球范围内得到认可。从上次运
行程序到下一次运行,所有值都将保留。
可以调用程序。不允许在函数中调用程序。也没有程序的实例。

如果 POU 调用一个程序,并且因此更改了该程序的值,则下次调用该程序时将保留这些更改,即使该程
序已从另一个程序中调用
因此。
这与调用功能块不同。在那里,只有功能块的给定实例中的值才会被更改。

CoDeSysV2.3版本 2-5
项目组件...

因此,这些更改仅在调用同一实例时才起作用。
程序示例

程序声明以关键字 PROGRAM 开头,以 END_PROGRAM 结尾。关于附录 J:附录 J:关于命名的建


议。
如果要在调用程序时设置输入和/或输出参数,则可以在文本语言 IL 和 ST 中执行此操作,方法是在括号
中将值分配给程序名称后面的参数(对于输入参数,此赋值使用“:=”进行,就像在声明位置初始化变量
一样,对于输出参数,将使用“=>”)。

如果通过输入助手(<F2>)插入程序,并在 ST 或 ILPOU 的实现窗口中使用选项 With 参数,则将根据


此语法自动显示该程序及其所有参数。但您不一定必须分配这些参数。

程序调用示例:

在伊利诺伊州:
CAL PRG 示 例 2 LD PRGexample2.out_var

STERG 或分配参数(输入助手“带参数”, 上文):CALPRGexample2(in_var:=33, out_var=>erg )

在 ST 中:
PRG示例2;尔格:=PRGexample2.out_var;或分配参数(输入助手“带参数”, 上文): PRGexample2(
in_var:=33, out_var=>erg );

在 FBD 中:

PLC_PRG可能的调用序列示例:

请参阅本章顶部图片中所示的程序 PRGexample:
LD0STPRGexample.PAR(*PAR 的默认设置为 0*) CALIL 调用(
*IL 调用中的 ERG 结果为 1*) CALST 调用(*ST 调用中的 ERG 结果
为 2*) CALFBD 调用(FBD 调用中的 *ERG 结果为 3*)

如果程序 PRGexample 中的变量 PAR 由一个主程序初始化,并且使用上述命名的程序调用一个接一个地调用其


他程序,则程序中的 ERG 结果将具有值 1、2 和 3。如果交换调用的顺序,则给定结果参数的值也会以相应的方
式更改。

2-6 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

PLC_PRG
PLC_PRG是一个特殊的预定义 POU。每个项目都必须包含此特殊程序。此 POU 在每个控制周期中只调
用一次。
创建新项目后首次使用“项目”“对象添加”命令时,POU 对话框中的默认条目将是名为 PLC_PRG 的程
序类型的 POU。您不应更改此默认设置!

如果已定义任务,则项目可能不包含任何PLC_PRG,因为在这种情况下,过程顺序取决于任务分配。

注意:请勿删除或重命名POUPLC_PRG(假设您未使用任务配置)!PLC_PRG通常是单个任务程序中的主程序。

行动
可以定义操作并将其分配给功能块和程序(“项目”、“添加操作”)。该操作代表了进一步的实现,可以
完全用另一种语言创建为“正常”实现。每个操作都有一个名称。

操作处理它所属的功能块或程序中的数据。该操作使用与“正常”实现相同的输入/输出变量和局部变量。

功能块的操作示例

在给出的示例中,调用功能块 Counter 会增加或减少输出变量 “out”,具体取决于输入变量 “in” 的值。


调用功能块的 Reset 操作会将输出变量设置为零。在这两种情况下都写入了相同的变量“out”。

调用操作:
使用 <Program_name>.<Action_name> 或 <Instance_name>.<Action_name> 调用操作。注意 FBD 中
的符号( 以下示例)!如果需要在自己的块中调用操作,则只需在文本编辑器中使用操作的名称,并以
图形形式调用功能块,而不使用实例信息。

从另一个 POU 调用上述操作的示例:

所有示例的声明:
程序PLC_PRG
VARInst :计数器;
END_VAR
在另一个 POU 中调用“重置”,该 POU 在 IL 中编程:
CAL Inst.Reset ( In : = FALSE ) LD Inst.out
STERG(圣ERG)

CoDeSysV2.3版本 2-7
项目组件...

在另一个 POU 中调用“重置”,该 POU 在 ST 中编程:


Inst.Reset ( 在 : = FALSE ) ;Erg : = Inst.out;

在另一个 POU 中调用“重置”,该 POU 在FBD 中编程:

注意:动作在顺序功能图中的块中起着重要作用,请参阅顺序功能图。IEC标准不识别顺序功能图操作以外的操作。

资源
您需要用于配置和组织项目以及跟踪变量值的资源:
全局变量,可在整个项目或网络中使用
库管理器,用于将库添加到项目中
用于记录联机会话期间操作的日志
AlarmConfiguration,用于配置项目中的告警处理
用于配置硬件的 PLC 配置
任务配置,用于指导程序完成任务
监视和配方管理器,用于显示变量值和设置默认变量值
目标设置,用于选择目标系统,并在必要时进行最终配置
工作区作为项目选项的图像
根据目标系统和在 CoDeSys 中进行的目标设置,您的项目中还可能提供以下资源:

用于以图形方式显示变量值的采样跟踪
用于与网络中其他控制器进行数据交换的参数管理器
PLC-Browser作为控制器监视器
工具–可用性取决于目标–用于从 CoDeSys 中调用外部工具程序
带有 CNC 编辑器(CNC 程序列表)和 CAM 编辑器的 SoftMotion 功能(由于许可证)

图书馆
您可以在项目中包括一系列库,您可以像使用用户定义的变量一样使用这些库的 POU、数据类型和全局
变量。standard.lib 和 util.lib 库是程序的标准部分,随时可供您使用。请参 第 6.4 章“库管理器”。

数据类型
除了标准数据类型外,用户还可以定义自己的数据类型。可以创建结构、枚举类型和引用。

请参阅附录 C:“数据类型”。

可视化
CoDeSys提供可视化效果,以便您可以显示项目变量。您可以借助可视化效果离线绘制几何元素。在联
机模式下,它们可以更改其形式/颜色/文本输出以响应指定的变量值。

可视化可以用作带有 CoDeSysHMI 的 PLC 的纯操作界面,也可以用作通过互联网或直接在 PLC 上运行


的 Web 可视化或目标可视化。
有关更多详细信息,请参阅 CoDeSys 可视化的用户手册。

2-8 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

2.2 语言...
CoDeSys 支持标准 IEC-61131 描述的所有语言:
文本语言:
指令列表(IL)
结构化文本(ST)
Grafic 语言:
顺序功能图(SFC)
功能框图(FBD)
梯形图(LD)
此外,还有基于功能块图的图形连续功能图编辑器(CFC)。

2.2.1 指令列表(IL)...
指令列表(IL)由一系列指令组成。每条指令都以新行开头,包含一个运算符,并且根据运算类型,包含
一个或多个用逗号分隔的操作数。

在指令的前面可以有一个识别标记(标签),后跟一个冒号(:)。
注释必须是一行中的最后一个元素。可以在指令之间插入空行。
例:
LD17ST 棉绒(* 注释 *)

GE5JMPC 下一个 LDidwordEQistruct.sdwordSTN 测试 next:

IL 中的修饰符和运算符
在 IL 语言中,可以使用以下运算符和修饰符。
修饰符:

• 带有 JMP、CAL、RET 的 C:仅当前一个表达式的结果为 TRUE 时,才会执行指


令。
• N 与 JMPC、CALC 一起,仅当前一个表达式的结果 RETC:为 FALSE 时,才会执
行该指令。
• N 否则:否定操作数(而不是累加器)

下面是 IL 中所有运算符的表格,以及它们可能的修饰符和相关含义:

运算符修饰符含义

LD的 N 使当前结果等于操作数
圣 N 将当前结果保存在操作数的位置
S 然后,如果当前结果为 TRUE,则将布尔操作数精确地置于TRUE

CoDeSysV2.3版本 2-9
语言。。。

R 然后,如果当前结果为 TRUE,则将布尔操作数精确地置于
FALSE

和 N,(按位AND
或 N,(按位OR
异或 N,(按位异OR
加 ( 加法
子 ( 减法
穆尔 ( 乘法
DIV公司 ( 划分
GT ( >
通用电气( >=
情商( =
东北( <>
LE ( <=
LT ( <
JMPCN 跳转到标签
CALCN 调用程序或功能块或
RETCN 离开 POU 并返回呼叫者。
)评估延迟操作

单击此处获取所有 IEC 运营商的列表。


使用某些修饰符时的 IL 程序示例:

LDTRUE(*在累加器中加载 TRUE*)
ANDNBOOL1 (*使用 BOOL1 变量的否定值执行 AND*)
JMPC 标记(*如果结果为 TRUE,则跳转到标签“mark”*)

土地退化零增 (LD
布尔值2 (*保存 * 的否定值)
圣 尔格 (*ERG 中的 BOOL2*)
标签:
LD的 布尔值2 (*保存 * 的值)
STERG*ERG 中的 BOOL2*)

在 IL 中,也可以在手术后加上括号。然后,将括号的值视为操作数。

例如:
LD2MUL2ADD3 尔格

这是 Erg7 的值。但是,如果加上括号:

2-10 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

LD 2 MUL ( 2 ADD 3 ) ST Erg

Erg 的结果值为 10,只有在您获得“)”时才会计算运算 MUL;作为 MUL5 的操作数,然后计算。

2.2.2 结构化文本(ST)...
结构化文本由一系列指令组成,这些指令以高级语言确定,(“IF..然后。。ELSE“)或循环(
WHILE..DO)可以执行。
例:
IFvalue<7 那么 WHILE 值 <8DOvalue:=value+1;

END_WHILE;END_IF;

表达式
表达式是一种构造,它在计算后返回一个值。
表达式由运算符和操作数组成。操作数可以是常量、变量、函数调用或其他表达式。

表达式的估值
表达式的计算是通过根据某些约束规则处理运算符来实现的。首先处理绑定最强的运算符,然后处理绑定
次强的运算符,依此类推,直到处理完所有运算符。

具有相同结合强度的算子从左到右进行处理。
下面是按结合强度排序的 ST 算子表:

操作 象征 结合强度

放在括号里 (表达式) 最强的结合力


函数调用 函数名称
(参数列表)
幂 经验
否定 -
建立互补品 不
乘 *
分 /
模 国防部
加 +
减去 -

比较 <,>,<=,>=
等于 =
不等于 <>
Boolean AND 和
布尔异或 异或

CoDeSysV2.3版本 2-11
语言。。。

布尔值或 或 最弱的结合

ST中有以下说明,与示例一起排列在表格中:

指令类型示例

作业 A:=B;CV :=CV+1;C:=正弦(X);
调用功能块并CMD_TMR(IN :=%IX5, PT :=300);
使用 FB 输出 答:=CMD_TMR。Q
返回 返回;
如果 D:=B*B;
如果 D<0.0 那么
C:=A;
ELSIFD=0.0 那么
C:=B;

C:=D;
END_IF;
箱 案例 INT1 的
1: BOOL1 := 真;
2: BOOL2 := 真;

BOOL1 := 假;
BOOL2 := 假;
END_CASE;
为 J:=101;
对于 I:=1 到 100 乘以 2 做
如果 ARR[I]=70 那么
J:=我;
退出;
END_IF;
END_FOR;
而 J:=1;
而 J<= 100 和 ARR[J] <> 70
J:=J+2;
END_WHILE;
重复 J:=-1;
重复
J:=J+2;
直 到 J= 101 或 ARR[J] = 70
END_REPEAT;
退出 退出;
空指令 ;

2-12 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

赋值运算符
在赋值的左侧有一个操作数(变量,地址),使用赋值运算符为右侧的表达式值赋值:=

例:
变 量 1 : = 变 量 2 * 10;
完成此行后,Var1 的值是 Var2 的 10 倍。

在 ST 中调用功能块
在ST中,通过写入功能块实例的名称,然后在括号中分配参数值来调用功能块。在以下示例中,调用了
一个计时器,其中包含参数 IN 和 PT 的赋值。然后将结果变量 Q 分配给变量 A。

与 IL 中一样,结果变量使用功能块的名称、以下点和变量的名称进行寻址:

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

RETURN指令
RETURN 指令可用于离开 POU,例如,取决于条件

IF指令
使用 IF 指令,您可以检查条件,并根据该条件执行指令。

语法:
IF <Boolean_expression1> THEN
<IF_instructions>
{ELSIF <Boolean_expression2> THEN
<ELSIF_instructions1>. .

ELSIF <Boolean_expression n> THEN


<ELSIF_instructions N-1>

<ELSE_instructions>}
END_IF;
大括号 {} 中的部分是可选的。
如果<Boolean_expression1>返回 TRUE,则仅执行<IF_Instructions>,而不执行其他指令。

否则,以 <Boolean_expression2> 开头的布尔表达式将依次计算,直到其中一个表达式返回 TRUE。然


后,仅计算此布尔表达式之后和下一个 ELSE 或 ELSIF 之前的指令。

如果所有布尔表达式均不生成 TRUE,则仅计算<ELSE_instructions>。
例:
如 果 TEMP<17 则 heating_on : =
TRUE; 否 则 heating_on : =
FALSE;
END_IF;
当温度降至 17 度以下时,加热就会打开。否则,它将保持关闭状态。

CoDeSysV2.3版本 2-13
语言。。。

CASE指令
使用 CASE 指令,可以将具有相同条件变量的多个条件指令组合在一个结构中。

语法:
案例<Var1>的
<Value1> : < 指 令 1> <Value2> : <Instruction 2>
<Value3 , Value4 , Value5> : <Instruction 3> <Value6
.. 值 10> : < 指 令 4> ...

<Value n>: <Instruction n> ELSE <ELSE instruction> END_CASE;

CASE指令按照以下模型进行处理:
如果 <Var1> 中的变量的值为 <Valuei>,则执行指令 <Instructioni>。
如果 <Var1> 没有指示的值,则执行 <ELSE 指令>。
如果要对变量的多个值执行相同的指令,则可以将这些值一个接一个地写入,并用逗号分隔,从而限制
公共执行。
如果要对变量的取值范围执行相同的指令,则可以将初始值和结束值逐个写入两个点。因此,您可以调节
常 病症。

例:
案例 INT1 的 1, 5: BOOL1 :=TRUE;BOOL3 := 假;2: BOOL2 := 假;BOOL3 := 真;10..20:BOOL1 := 真;BOOL3:
= 真;否则 BOOL1 := 不是 BOOL1;BOOL2 :=BOOL1 或BOOL2;END_CASE;

FOR 循环
通过FOR循环,可以对重复的过程进行编程。
语法:
INT_Var :INT;
FOR <INT_Var> := <INIT_VALUE> TO <END_VALUE> {BY <Step size>} DO
<说明>
END_FOR;
大括号 {} 中的部分是可选的。
只要计数器<INT_Var>不大于<END_VALUE>,就会执行<指令>。在执行 <指令>之前检查这一点,以便
在 <INIT_VALUE>大于 <END_VALUE> 时永远不会执行 <指令>。

执行<指令>时,<INT_Var>始终增加<步 >。步 可以具有任何整数值。如果缺少,则将其设置为 1。


循环也必须结束,因为<INT_Var>只会变得更大。

例:
FOR 计数器:=1TO5BY1DOVar1:=Var1*2;

2-14 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

END_FOR;
Erg:=变量1;
假设 Var1 的默认设置是值 1。然后,它在 FOR 循环之后的值为 32。

注意:<END_VALUE>不得等于计数器<INT_VAR>的极限值。例如:如果变量 Counter 的类型为 SINT,并且


<END_VALUE> 为 127,则将得到一个无限循环。

WHILE 循环
WHILE 循环可以像 FOR 循环一样使用,不同之处在于中断条件可以是任何布尔表达式。这意味着您指
定了一个条件,当满足该条件时,将执行循环。

语法:
WHILE<布尔表达式>
<说明>
END_WHILE;
只要<Boolean_expression>返回 TRUE,就会重复执行<指令>。如果<Boolean_expression>在第一次评
估时已经为 FALSE,则永远不会执行<指令>。如果 <Boolean_expression> 从不假定值为 FALSE,则<
指令>将无休止地重复,从而导致相对时间延迟。

注意:程序员必须确保不会造成无限循环。他通过改变循环指令部分的条件来做到这一点,例如,通过向上或向下倒
数一个计数器。

例:
WHILEcounter<>0DOVar1 :=Var1*2; 计数器:= 计数器1;END_WHILE

从某种意义上说,WHILE 和 REPEAT 循环比 FOR 循环更强大,因为在执行循环之前不需要知道循环


数。因此,在某些情况下,只能使用这两种循环类型。但是,如果循环周期的数量是明确的,那么FOR
循环是可取的,因为它不允许无限循环。

REPEAT 循环
REPEAT循环与WHILE循环不同,因为只有在执行循环后才会检查中断条件。这意味着循环将至少运行
一次,无论中断条件的措辞如何。

语法:
重复
<说明>
UNTIL < 布 尔 表 达 式 > END_REPEAT;

执行<指令>直到<布尔表达式>返回 TRUE。
如果在第一次 TRUE 求值时已经生成了 < 布尔表达式 > ,则 < 指令 > 仅执行一次。如果
<Boolean_expression> 从不假定值为 TRUE,则 <Instructions> 将无休止地重复,从而导致相对时间延
迟。

注意:程序员必须确保不会造成无限循环。他通过改变循环指令部分的条件来做到这一点,例如通过向上或向下倒数
一个计数器。

例:
重复
变量1 := 变量1*2; 计数器:= 计数器1;

CoDeSysV2.3版本 2-15
语言。。。

直到
计数器=0
END_REPEAT;

EXIT指令
如果 EXIT 指令出现在 FOR、WHILE 或 REPEAT 循环中,则无论中断条件如何,最内层循环都将结
束。

2.2.3 顺序功能图(SFC)...
顺序功能图(SFC)是一种面向图形的语言,可以描述程序中不同操作的时间顺序。为此,将操作分配给
步骤元素,处理顺序由过渡元素控制。

顺序功能图中的网络示例

有关证监会编辑器的进一步资料,请参阅第5.4.4章。


在顺序功能图中编写的 POU 由一系列步骤组成,这些步骤通过定向连接(转换)相互连接。

有两种类型的步骤。
简化类型由一个操作和一个标志组成,该标志显示该步骤是否处于活动状态。如果实施了步骤的动作,则
步骤的右上角会出现一个小三角形。
IEC 步骤由一个标志和一个或多个分配的操作或布尔变量组成。关联的操作将显示在步骤的右侧。

行动
一个动作可以包含IL或ST中的一系列指令,FBD或LD中的许多网络,或者顺序功能图(SFC)中的许多
指令。

2-16 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

通过简化的步骤,操作始终与步骤相关联。要编辑操作,请用鼠标在操作所属的步骤上单击两次。或者选
择步骤并选择菜单命令“附加”、“缩放、操作/过渡”。此外,每步可以执行一个输入或输出操作。

IEC 步骤的操作挂起在其 SFC-POU 正下方的对象管理器中,并通过在其编辑器中按 <Enter> 双击加


载。可以使用“Project”“AddAction”创建新操作。您最多可以为一个 IEC 步骤分配 9 个操作。

进入或退出操作
除了步骤操作之外,您还可以向步骤添加进入操作和退出操作。输入操作仅在步骤变为活动状态后执行一
次。在停用该步骤之前,退出操作仅执行一次。

进入动作的步骤用左下角的“E”表示,退出动作用右下角的“X”表示。

进入和退出操作可以用任何语言实现。要编辑进入或退出操作,请用鼠标双击步骤中的相应角。

具有进入和退出操作的步骤示例:

过渡/过渡条件
在这些步骤之间有所谓的过渡。
转换条件的值必须为 TRUE 或 FALSE。因此,它可以由布尔变量、布尔地址或布尔常量组成。它还可以
包含一系列具有布尔结果的指令,可以是 ST 语法(例如(i<=100) ANDb)或任何所需的语言(参
'Extras''ZoomAction/Transition')。但是过渡可能不包含程序、功能块或分配!

在 SFC 编辑器中,可以直接在过渡符号处写入过渡条件,也可以打开自己的编辑器窗口以输入条件(参
第 5.4.4 章“附加功能”“缩放操作/过渡”)。请注意,在编辑器窗口中输入的指令将优先!

注意:除了过渡之外,点动模式还可用于跳到下一步;请参阅 SFCtip 和 SFCtipmode。

活动步骤
调用SFCPOU后,首先执行属于初始步骤的操作(由双边框包围)。正在执行其操作的步骤称为活动步
骤。在联机模式下,活动步骤以蓝色显示。

在控制循环中,执行所有属于活动步骤的动作。此后,如果以下步骤的转换条件为TRUE,则活动步骤的
相应后续步骤将变为活动状态。当前处于活动状态的步骤将在下一个周期中执行。

注意:如果活动步骤包含输出操作,则只有在下一个周期中执行此操作,前提是以下转换为 TRUE。

IEC步骤
除了简化的步骤外,SFC中的标准IEC步骤也可用。
为了能够使用 IEC 步骤,您必须将特殊的 SFC 库lecsfc.lib链接到您的项目中。
一个 IEC 步骤最多只能分配 9 个操作。IEC 操作不像简化步骤那样固定为某个步骤的输入、步骤或输出
操作,而是与步骤分开存储,并且可以在 POU 中多次重复使用。为此,必须使用命令 “Extras” 、
“Associateaction”将它们关联到单个步骤。

CoDeSysV2.3版本 2-17
语言。。。

除了操作,布尔变量还可以分配给步骤。
操作和布尔变量的激活和停用可以使用所谓的限定符进行控制。时间延迟是可能的。由于操作仍然可以处
于活动状态,因此如果已处理下一步,例如通过限定符 S (Set),则可以实现并发进程。

每次调用 SFC 模块时都会设置或重置关联的布尔变量。这意味着,在每次调用时,变量都会重新赋值


TRUE 或 FALSE。
与 IEC 步骤关联的操作显示在步骤右侧的两部分框中。左边的字段包含限定符,可能带有时间常数,右
边的字段分别包含动作名称和布尔变量名称。

包含两个操作的 IEC 步骤示例:

为了更轻松地遵循流程,在线模式下的所有活动操作都以蓝色显示,就像活动步骤一样。在每个周期之
后,都会进行检查以查看哪些操作处于活动状态。
这里还要注意在同一周期内重复使用的操作中使用时间限定符的限制(参 “限定符”)!

注意:如果某个操作已被停用,它将再次执行。这意味着,每个操作至少执行两次(也是带有限定符 P 的操作)。

在调用的情况下,首先执行停用的操作,然后按每次的字鯦顺序执行活动操作。

新插入的步骤是否为 IEC 步骤取决于是否选择了菜单命令“附加”、“使用 IEC-步骤”。

在对象管理器中,操作直接挂在各自的 SFCPOU 下方。可以使用“Project”“AddAction”创建新操作。

为了使用IEC步骤,您必须在项目中包含特殊的SFC库Iecsfc.lib。
SFCPOU 在对象管理器中具有操作

限定符
为了将操作与 IEC 步骤相关联,可以使用以下限定符:

N 未存储 只要步骤,该操作就处于活动状态
R 重写Reset 该操作已停用
S Set(存储) 该操作将被激活并保持活动状态,直到重置

L 时间有限 该操作将激活一段时间,只要该步骤处于活动状态,
则最多
D 时间延迟 如果该步骤仍处于活动状态,则该操作将在一定时间
后变为活动状态,然后只要该步骤处于活动状态,该
操作就会保持活动状态。

2-18 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

P 脉冲如果步骤处于活动状态,则仅执行一次操作

SD存储和时间该操作在一定时间后激活,延迟在重置之前保持活动状态

DS延迟和存储只要该步骤仍处于活动状态,并且在重置之前保持活动状态,该操
作就会在一定时间后激活

SL存储和时间该动作在一定时间内激活

限定符 L、D、SD、DS 和 SL 需要 TIME 常量格式的时间值。该值可以直接输入(例如“T#5s”),也可


以通过数据类型为 TIME 的变量输入(例如“t_var”)。

注意:当一个动作被停用时,它将再次执行。这意味着每个操作至少执行两次(也是带有限定符 P 的操作)。

SFC 中的隐式变量
在 SFC 中,隐式声明的变量(“标志”)可用于扫描步骤和操作的状态以及步骤的时间。这些标志都是在
周期开始时设置的。对于 IEC 步骤和 IEC 操作,它们由库 iecsfc.lib (结构 SFCStepType 和
SFCActionType)提供,该库自动包含在项目中,用于简化步骤,它们在CoDeSys中实现。

通过布尔变量扫描步骤或操作状态:
对于 IEC 步骤: <stepname>.x 或 <stepname>._x : <StepName>.x 显示当前激活状态。
<StepName>._x显示下一个周期的激活状态。如果<StepName>.x=TRUE,则该步骤将在当前循环中执
行。如果 <StepName>._x= TRUE 和 <StepName>.x= FALSE ,则该步骤将在下一个循环中执行,即
<StepName>._x 在循环开始时复制到 <StepName>.x。

对于简化的步骤: <stepname> 或 _<stepname>:如果 <StepName>=TRUE,则该步骤将在当前循环中


执行。如果 _<StepName>=TRUE,则该步骤将在下一个周期中执行,即在循环开始时将 <StepName>
复制到 _<StepName>。
对于 IEC 操作:<actionname>.x 在操作激活后立即变为 TRUE(<actionname>._x仅用于内部目的,不
用于状态扫描)。
通过 TIME 变量的步骤时间:
以下隐式变量给出了自步骤激活以来经过的当前时间跨度;这仅适用于在步骤属性中配置了最短时间的步
骤。

对于IEC步骤:<stepname>.t(<stepname>._t不能用于外部目的)
有关简化步骤:_time<stepname>。但是:如果此隐式变量应用于扫描目的,则还必须将其显式声明为
TIME 变量;例如,“_timeStep1 :TIME;”
对于 IEC 操作:不使用隐式时间变量。
这些状态标志可用于 SFC 模块的每个操作和转换。但它们也可以从其他程序访问:示例:boolvar1:
=sfc.step1.x;此示例中的 step1.x 是一个隐式布尔变量,显示 POU“sfc1”中 IEC 步骤“step1”的状
态。

证监会标志
为了控制 间作业控制的操作,可以使用标志,这些标志是在运行项目期间隐式创建的。要读取此标志,
您必须定义适当的全局或局部变量作为输入或输出。示例:如果在SFCPOU中,某个步骤处于活动状态
的时间比步骤属性中定义的时间 ,则将设置一个标志,该标志可通过使用变量“SFCError”进行访问(
在本例中 SFCError 为 TRUE)。

可以定义以下标志变量:

CoDeSysV2.3版本 2-19
语言。。。

SFCEnableLimit:此变量的类型为 BOOL。当它的值为 TRUE 时,步骤的超时将在 SFCError 中注册。


其他超时将被忽略。
SFCInit:当此布尔变量的值为 TRUE 时,顺序函数图表将设置回 Init 步骤。其他 SFC 标志也会重置(
初始化)。只要变量的值为 TRUE,Init 步骤就会保持活动状态,但不会执行。只有当 SFCInit 再次设置
为 FALSE 时,才能正常处理该块。

SFCReset:此变量的 BOOL 类型与 SFCInit 类似。但是,与后者不同的是,进一步的处理是在初始化


Init 步骤之后进行的。因此,例如,可以在 Init 步骤中将 SFCReset 标志重新设置为 FALSE。

请注意:从编译器版本 2.3.7.0 开始,SFCReset 也可用于重置与 IEC 步骤相关的布尔操作,这在以前是不可能的

SFCQuitError:只要此布尔变量的值为 TRUE,SFC 图的执行就会停止,从而重置变量 SFCError 中可


能出现的超时。当变量再次采用值FALSE时,将重置活动步骤中的所有先前时间。前提条件是还定义了
标志 SFCError,该标志在 SFC 中注册任何超时。

SFCPause:只要此布尔变量的值为 TRUE,SFC 图的执行就会停止。

SFCError:当 SFC 图中发生超时时,此布尔变量为 TRUE。如果程序在第一次超时之后发生另一个超


时,除非首先重置变量 SFCError ,否则不会注册该超时。如果要使用其他时间控制标志(
SFCErrorStep、SFCErrorPOU、SFCQuitError、SFCErrorAnalyzation),则定义 SFCError 是前提条
件。
SFCTrans:当转换被触发时,此布尔变量的值为 TRUE。
SFCErrorStep:此变量的类型为 STRING。如果 SFCError 注册超时,则在此变量中存储导致超时的步
骤的名称。前提条件是还定义了标志 SFCError,该标志在 SFC 中注册任何超时。

SFCErrorPOU : 此 STRING 类型的变量包含发生超时的块的名称。前提条件是还定义了标志


SFCError,该标志在 SFC 中注册任何超时。

SFCCurrentStep:此变量的类型为STRING。步骤的名称存储在此变量中,该变量处于活动状态,与时
间监视无关。在同时序列的情况下,该步骤存储在右外侧的分支中。如果发生超时,并且变量SFCError
不会再次重置,则不会再注册超时。

SFCErrorAnalyzationTable: 此 ARRAY[0..n]OFExpressionResult 类型的变量提供转换表达式的分析


结果。对于表达式的每个组件(这会导致转换的 FALSE,从而导致上一步超时),以下信息将写入结构
ExpressionResult:名称、地址、注释、当前值。

最多可以有 16 个分量(变量),因此数组范围最大为 0..15)。


结构 ExpressionResult 以及隐式使用的分析模块随库 AnalyzationNew.lib 一起提供。分析模块也可以在
其他 POU 中明确使用,这些 POU 未在 SFC 中编程。

分析转换表达式的前提条件是在上一步中注册了超时。因此,必须在那里实现时间监控,并且必须在声明
窗口中定义变量 SFCErlor( 上文)。

SFCTip、SFCTipMode:此 BOOL 类型的变量允许 SFC 的点动模式。当 SFCTipMode=TRUE 打开此


功能时,只有在 SFCTip 设置为 TRUE 时才能跳到下一步。只要 SFCTipMode 设置为 FALSE,甚至可
以跳过转换。

注意:还要考虑可用于扫描步骤或操作的状态和时间的隐式变量。

2-20 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

替代分支
SFC 中的两个或多个分支可以定义为备用分支。每个备用分支都必须以转换开始和结束。备用分支可以
包含平行分支和其他备用分支。替代分支从水平线(替代起点)开始,到水平线(替代结束)或跳跃结
束。

如果替代起始线之前的步骤处于活动状态,则从左到右评估每个替代分支的第一个过渡。从左侧开始的第
一个转换(其转换条件的值为 TRUE)将打开,并激活以下步骤(请参阅活动步骤)。

并行分支
SFC 中的两个或多个分支可以定义为并行分支。每个并行分支都必须以一个步骤开始和结束。并行分支
可以包含备用分支或其他并行分支。平行分支以双线(平行开始)开始,以双线(平行结束)或跳转结
束。它可以提供跳转标签。

如果上一步的并行起始线处于活动状态,并且此步骤之后的转换条件的值为TRUE,则所有并行分支的第
一步都变为活动状态(请参阅活动步骤)。这些分支现在彼此并行处理。当前面的所有步骤都处于活动状
态时,平行结束线之后的步骤将变为活动状态,并且此步骤之前的转换条件将产生值 TRUE。


跳转是与步骤的连接,其名称在跳转符号下指示。跳跃是必需的,因为它不允许创建向上或相互交叉的连
接。

2.2.4 功能块图(FBD)...
功能块图是一种面向图形的编程语言。它适用于网络列表,其中每个网络都包含一个结构,该结构表示逻
辑或算术表达式、功能块的调用、跳转或返回指令。

功能块图中的网络示例

有关 FBD 编辑器的更多信息,请参 第 5.4.2 章。

2.2.5 连续功能图编辑器(CFC)...
连续功能图编辑器的操作方式不像带有网络的功能块图 FBD,而是具有可自由放置的元素。例如,这允
许反馈。
有关 CFC 编辑器的更多信息,请参 第 5.4.5 章
连续函数图编辑器中的网络示例

CoDeSysV2.3版本 2-21
语言。。。

2.2.6 梯形图(LD)...
梯形图也是一种面向图形的编程语言,它接近电路的结构。

一方面,梯形图适用于构建逻辑交换机,另一方面也可以像 FBD 一样创建网络。因此,LD 对于控制其


他 POU 的调用非常有用。

梯形图由一系列网络组成。网络的左右两侧受左右垂直电流线的限制。中间是由触点、线圈和连接线组成
的电路图。

每个网络都位于一系列触点的左侧,这些触点从左到右传递条件“ON”或“OFF”,对应于布尔值 TRUE 和
FALSE 。每个联系人都属于一个布尔变量。如果此变量为 TRUE ,则条件沿连接线从左向右传递。否
则,正确的连接将接收值 OFF。

梯形图中由触点和线圈组成的网络示例

有关 LD 编辑器的更多信息,请参阅第 5.4.3 章。

联系
LD 中的每个网络都位于触点网络的左侧(触点由两条平行线表示:||),从左到右显示条件“开”或“关
”。
这些条件对应于布尔值 TRUE 和 FALSE。布尔变量属于每个联系人。如果此变量为 TRUE,则条件由连
接线从左向右传递,否则右侧连接接收值“Out”。

触点可以并联连接,然后其中一个并联分支必须传输值“On”,以便并联分支传输值“On”;或者触点串联,
则触点必须传输条件“On”,以便最后一个触点传输“On”条件。因此,这对应于电并联或串联电路。

触点也可以被否定,可以通过触点符号中的斜杠来识别:|/|。然后,如果变量为 FALSE,则传输该行的
值。

线圈
在LD中网络的右侧,可以有任意数量的所谓线圈,这些线圈用括号表示:()。它们只能并行。线圈从
左到右传输连接值,并将其复制到适当的布尔变量中。在输入行中,可以存在值 ON (对应于布尔变量
TRUE)或值 OFF(对应于 FALSE)。

触点和线圈也可以被否定(在本例中,触点SWITCH1和线圈%QX3.0被否定)。如果线圈被否定(可通
过线圈符号中的斜杠识别:(/)),则它将否定值复制到相应的布尔变量中。如果联系人被否定,则仅
当相应的布尔值为 FALSE 时,它才会连接。

2-22 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

梯形图中的功能块
除了触点和线圈,您还可以输入功能块和程序在网络中,它们必须具有具有布尔值的输入和输出,并且可
以在与触点相同的位置使用,即LD网络的左侧

设置/复位线圈
线圈也可以定义为设置或复位线圈。可以通过线圈符号中的“S”来识别设置线圈:(S))它永远不会在
适当的布尔变量中写入值 TRUE。也就是说,如果变量曾经设置为 TRUE,则它仍然如此。

可以通过线圈符号中的“R”来识别复位线圈:(R))它永远不会在相应的布尔变量中写入值 FALSE:如
果变量曾经设置为 FALSE,则它仍然如此。

LD 作为FBD
使用 LD 时,您很可能希望使用触点开关的结果来控制其他 POU。一方面,您可以使用线圈将结果放入
全局变量中,然后可以在另一个地方使用。但是,您也可以将可能的呼叫直接插入您的LD网络。为此,
您需要引入一个带有 EN 输入的 POU。

此类 POU 是完全正常的操作数、函数、程序或功能块,具有标有 EN 的附加输入。 EN 输入始终为


BOOL 类型,其含义为:当 EN 的值为 TRUE 时,将评估具有 EN 输入的 POU。

ENPOU 与线圈平行接线,EN 输入连接到触点和线圈之间的连接线。如果通过此线路传输 ON 信息,则


此 POU 将完全正常评估。

从这样的ENPOU开始,您可以创建类似于FBD的网络。
具有 ENPOU 的 LD 网络示例

2.3 调试、在线功能...
采样跟踪
采样跟踪允许您跟踪变量的值序列,具体取决于所谓的触发事件。这是先前定义的布尔变量(触发变量)
的上升沿或下降沿。CoDeSys 允许跟踪多达 20 个变量。每个变量可以跟踪 500 个值。

调试
CoDeSys 的调试功能使您可以更轻松地查找错误。
要 进 行 调 试 , 请 运 行 命 令 “ Project”“Options”,然后在“Buildoptions”下弹出的对话框中,选择“激
活” 选 项 “Debugging。

CoDeSysV2.3版本 2-23
调试、在线功能...

断点
断点是程序中停止处理的位置。因此,可以查看程序中特定位置的变量值。

可以在所有编辑器中设置断点。在文本编辑器中,断点设置在行号处,FBD 和 LD 中的断点设置在网络
号处,CFC 中的断点设置在 POU 处,SFC 中的断点设置在步 处。不能在功能块实例中设置断点。

注意: 一旦程序的当前执行在断点处停止,运行时系统 CoDeSysSP32BitFull 将立即停用相关任务的看 狗功能。

一步
一步意味着:
在 IL 中:执行程序,直到下一个 CAL、LD 或 JMP 命令。
在 ST 中:执行下一条指令。
在 FBD 中,LD:执行下一个网络。
在 SFC 中:继续操作,直到下一步。
通过逐步进行,您可以检查程序的逻辑正确性。

单周期
如果选择了“单周期”,则在每个周期后停止执行。

在线更改值
在操作过程中,变量可以在某个值(写入值)下设置一次,也可以在每个循环后用某个值(力值)再次描
述。在在线模式下,还可以通过双击变量值来更改变量值。通过布尔变量从 TRUE 更改为 FALSE,或者
相反,对于其他类型的变量,人们会获得 WriteVariablexy 对话框,其中可以编辑变量的实际值。

监测
在在线模式下,所有可显示的变量都从控制器中读取并实时显示。您将在声明和程序编辑器中找到此显
示;您还可以在观察和配方管理器以及可视化中读出变量的当前值。如果要监视功能块实例中的变量,则
必须首先打开相应的实例。

在监视VAR_IN_OUT变量时,将输出取消引用的值。
在监视指针中,指针和取消引用的值都输出在声明部分。在程序部分,仅输出指针:

+ --pointervar = '<'pointervalue'>'
取消引用的值中的指针也会相应地显示。只需单击十字或双击线,显示就会展开或截断。

2-24 CoDeSysV2.3版本
2 -CoDeSys 中的内容是什么

指针监控示例

在实现中,将显示指针的值。但是,对于取消引用,将显示取消引用的值。

监视 ARRAY 组件:除了由常量索引的数组组件外,还会显示由变量索引的组件:

5模拟 anarray[1] = anarray[i] = 1

如果索引由表达式(例如 [i+j] 或 [i+1])组成,则无法显示该组件。


请注意: 如果已达到可监控的最大变量数,则对于每个进一步的变量而不是当前值,将显示字符串“监控变量过
多”。

在仿真过程中,创建的 PLC 程序不会在 PLC 中处理,而是在运行CoDeSys的计算器中处理。所有在线


功能都可用。这允许您在没有 PLC 硬件的情况下测试程序的逻辑正确性。

请注意:外部库的 POU 不会在模拟模式下运行。

日志
日志按时间顺序记录联机模式处理期间的用户操作、内部进程、状态更改和异常。它用于监视和错误跟
踪(请参阅联机函数)。

CoDeSysV2.3版本 2-25
标准...

2.4 标准...
IEC61131-3 标准是可编程逻辑控制器编程语言的国际标准。

CoDeSys中提供的编程语言符合标准要求。
根据该标准,程序由以下元素组成:
结构(请参阅数据类型)
POU
全局变量
“标识符”、“地址”、“类型”、“注释”和“常量”部分介绍了常规语言元素。

CoDeSys 程序的处理从特殊的 POUPLC_PRG开始。POUPLC_PRG可以调用其他 POU。

2-26 CoDeSysV2.3版本
3 - 我们编写一个小程序

3 我们写一个小程序

3.1 控制交通信号单元...
现在让我们开始编写一个小示例程序。它适用于一个简单的交通信号单元,它应该控制一个十字路口的两
个交通信号灯。两个交通信号灯的红/绿相交替,为了避免事故,我们将插入黄色或黄/红过渡相。后者将
比前者更 。

在此示例中,您将了解如何使用 IEC1131-3 标准的语言资源显示时间相关程序,如何在 CoDeSys 的帮


助下编辑该标准的不同语言, 以及如何在熟悉

CoDeSys的。

创建POU
始终启动很容易:启动CoDeSys并选择“文件”“新建”。
在出现的对话框中,第一个 POU 已被赋予默认名称 PLC_PRG。保留此名称,POU 的类型绝对应该是
一个程序。每个项目都需要一个具有此名称的程序。在本例中,我们选择连续功能图编辑器(CFC)作为
此 POU 的语言

现在,使用命令“Project”、“ObjectAdd”、菜单栏或上下文菜单(在对象管理器中按鼠标右键)再创建
三个对象。顺序功能图(SFC)语言中名为 SEQUENCE 的程序,功能块图(FBD)语言中的功能块名
为 TRAFFICSIGNAL,以及 POUWAIT,也是功能块类型,我们希望将其编程为指令列表(IL)。

TRAFFICSIGNAL是做什么的?
在POUTRAFFICSIGNAL中,我们将为灯分配各个交通信号灯相位,即我们将确保红灯在红色相位和黄
色/红色相位亮红,黄灯在黄色和黄色/红色相位等。

WAIT是做什么的?
在 WAIT 中,我们将编写一个简单的计时器,作为输入将接收以毫秒为单位的相位 度,而作为输出将
在时间段结束后立即产生 TRUE。

SEQUENCE是做什么的?
在SEQUENCE中,所有东 都组合在一起,以便在所需的时间段内,正确的灯亮起。

PLC_PRG做什么?
在PLC_PRG中,输入启动信号连接到交通信号灯的顺序,并提供每个灯的“颜色指令”作为输出。

TRAFFICSIGNAL仿真
现在在模拟模式下测试您的程序。编译('Project', 'Build')并加载('Online', 'Login')。通过“在线
”“开始”启动程序,然后将变量 ON 设置为 TRUE,例如双击 CFC 编辑器输入框中的“ON”条目。这会
将变量标记为准备设置为 <TRUE> 。然后按 <Ctrl><F7> 或命令 “ 联机 ”“ 写入值 ” 来设置值。现在,
ABLAUF 中的变量 START(我们在程序的第一个扩展级别中手动将其设置为 TRUE)通过变量 ON 获取
此值,该变量在PLC_PRG中使用。这将使运行红绿灯循环。PLC_PRG已更改为监视窗口。在声明编辑
器中的加号上单击两次,变量显示将下拉,您可以看到各个变量的值。

CoDeSysV2.3版本 3-1
控制交通信号单元...

“TRAFFICSIGNAL”声明
现在让我们转向 POUTRAFFICSIGNAL。在声明编辑器中,将一个名为 STATUS 的变量声明为输入变
量(在关键字 VAR_INPUT 和 END_VAR 之间), STATUS 将有四个可能的条件,即
TRAFFICSIGNAL 阶段的绿色、黄色、黄色/红色和红色。

相应地,我们的 TRAFFICSIGNAL 有三个输出,即红色、黄色和绿色。您应该声明这三个变量。然后,


我们的功能块 TRAFFICSIGNAL 的声明部分将如下所示:

功能块 TRAFFICSIGNAL,声明部分

“TRAFFICSIGNAL”主体
现在,我们根据 POU 的输入 STATUS 确定输出变量的值。为此,请进入 POU 的正文。单击第一个网络
旁边左侧的字段(编号为 0001 的灰色字段)。您现在已经选择了第一个网络。选择菜单项“插入”“框”。

在第一个网络中,插入一个带有运算符 AND 和两个输入的框:

单击文本 AND,使其显示为选中状态,并将文本更改为 EQ。然后为两个输入中的每一个选择三个问


号,并分别用“STATUS”覆盖它们“1”。

现在点击EQBox后面的一个地方。现在,EQ操作的输出被选中。选择“插入”、“分配”。将三个问号更改
为???变为绿色。现在,您已经创建了具有以下结构的网络:

将 STATUS 与 1 进行比较,将结果分配给 GREEN。因此,如果预设状态值为 1,则该网络将切换到


GREEN。

3-2 CoDeSysV2.3版本
3 - 我们编写一个小程序

对于其他 TRAFFICSIGNAL 颜色,我们还需要两个网络。要创建第一个,请执行命令“插入”“网络(之


后)”并插入一个EQ-Box,如上所述。然后选择此框的输出引脚并再次使用命令“插入”“框”。在新框
中 , 将“AND”改 为“OR”。 现 在 选 择OR-box 的 第 一 个 输 出 引 脚 , 然 后 使 用 命 令“Insert”“Assign”将其
分配给“GELB”。通过鼠标单击三个问号旁边的水平线来选择 OR 框的第二个输入,使其显示为虚线矩
形。现在使用“插入”“框”添加另一个 EQ 框,如上所述。最后,网络应如下所示:

功能块 TRAFFICSIGNAL,指令部分

为了将一个运算符插入到另一个运算符的前面,必须选择要将运算符附加到的输入馈入框的位置。

然后使用命令“插入”“框”。否则,您可以采用与第一个网络相同的方式设置这些网络。

现在我们的第一个POU已经完成。TRAFFICSIGNAL根据值STATUS的输入,控制我们想要的任何灯光颜
色。

连接standard.lib
对于 POUWAIT 中的计时器,我们需要标准库中的 POU。因此,使用“窗口”“库管理器”打开库管理
器。选择“插入”、“附加库”。此时将显示用于打开文件的对话框。从库列表中选择 standard.lib。

CoDeSysV2.3版本 3-3
控制交通信号单元...

“WAIT”声明
现在让我们转向 POUWAIT 。这个 POU 应该成为一个计时器,我们可以用它来确定每个
TRAFFICSIGNAL 阶段的时间段 度。我们的 POU 接收一个 TIME 类型的变量 TIME 作为输入变量,作
为输出,它生成一个布尔值,我们想要将其称为 OK,并且在所需的时间段结束时该值应为 TRUE。我们
通过在声明的末尾插入(但是在分号之前)“:=FALSE”来设置此值。

出于我们的目的,我们需要 POUTP,一个时钟发生器。它有两个输入(IN、PT)和两个输出(Q、
ET)。TP 执行以下操作:
只要 IN 为 FALSE,ET 为 0,Q 为 FALSE。一旦 IN 提供值 TRUE,就会在输出 ET 处以毫秒为单位计
算时间。当 ET 达到 PT 值时,不再计算 ET。同时,只要 ET 小于 PT,Q 就会产生 TRUE。一旦达到
PT 值,Q 就会再次产生 FALSE。有关所有 POU 的简短说明,请参阅标准库一章。

为了在 POUWAIT 中使用 POUTP,我们必须从 TP 创建一个本地实例。为此,我们声明了一个 TP 类


型的局部变量 ZAB(用于运行时间)(在关键字 VAR、END_VAR 之间)。

因此,WAIT 的声明部分如下所示:
功能块 WAIT,声明部分

“WAIT”身体
为了创建所需的定时器,必须按如下方式对 POU 的主体进行编程:
功能块 WAIT,指令部分

3-4 CoDeSysV2.3版本
3 - 我们编写一个小程序

首先检查 Q 是否已经设置为 TRUE(就好像计数已经执行过一样),在这种情况下,我们对 ZAB 的占用


没有任何更改,但我们在没有输入的情况下调用功能块 ZAB(以检查时间段是否已经结束)。

否则,我们将 ZAB 中的变量 IN 设置为 FALSE,因此同时将 ET 设置为 0,将 Q 设置为 FALSE。这样,


所有变量都设置为所需的初始条件。现在,我们将变量 TIME 中的必要时间分配给变量 PT,并使用 IN:
= TRUE 调用 ZAB 。在功能块 ZAB 中,变量 ET 现在被计算,直到它达到值 TIME ,然后 Q 设置为
FALSE。

每次执行 WAIT 后,Q 的否定值都保存在 OK 中。一旦 Q 为 FALSE,则 OK 将生成 TRUE。

计时器此时完成。现在是时候在主程序PLC_PRG中组合我们的两个功能块 WAIT 和 SEQUENCE。

“SEQUENCE”第一扩展级别
首先,我们声明我们需要的变量。它们是:一个 BOOL 类型的输入变量 START,两个 INT 类型的输出变
量 TRAFFICSIGNAL1 和 TRAFFICSIGNAL2 ,以及一个 WAIT 类型( DELAY 作为延迟)。程序
SEQUENCE 现在如下所示:
程序 SEQUENCE、第一扩展级别、声明部分

创建 间作业控制图
SFC 中 POU 的起始图始终由后续转换“Trans0”的操作“Init”和跳回 Init 组成。我们必须扩大这一点。

在对各个动作和转换进行编程之前,让我们首先确定图表的结构。每个TRAFFICSIGNAL阶段都需要一个步
骤。通过标记 Trans0 并选择“插入”、“步进过渡(之后)”来插入它。再重复此过程三次。

如果直接单击过渡或步骤的名称,则会将其标记,您可以更改它。将 Init 后的第一个转换命名为


“START”,将所有其他转换命名为“DELAY”。好的”。
当 START 为 TRUE 时,第一个转换切换,当 OK 中的 DELAY 产生 TRUE(即设置的时间段结束时),
所有其他转换切换。

CoDeSysV2.3版本 3-5
控制交通信号单元...

这些步骤(从上到下)的名称为 Switch1、Green2、Switch2、Green1,其中 Init 当然保留了其名称。“


开关”应包括黄色相位,在绿色 1 时TRAFFICSIGNAL1为绿色,在绿色 2 时TRAFFICSIGNAL2为绿色。
最后,更改 Switch1 后 Init 的返回地址。如果已正确完成所有操作,则关系图应如下图所示:

程序 SEQUENCE、第一扩展级别、指令部分

现在我们必须完成各个步骤的编程。如果双击步骤的字段,则会出现一个用于打开新操作的对话框。在我
们的例子中,我们将使用 IL(指令列表)。

操作和转换条件
在步骤 Init 的操作中,变量被初始化, TRAFFICSIGNAL1 的 STATUS 应为 1 (绿色)。
TRAFFICSIGNAL2状态应为 3(红色)。然后,操作 Init 如下图所示:

行动 初始化

3-6 CoDeSysV2.3版本
3 - 我们编写一个小程序

Switch1将TRAFFICSIGNAL1的状态更改为2(黄色),将TRAFFICSIGNAL2的状态更改为4(黄红色
)。此外,还设置了 2000 毫秒的时间延迟。操作现在如下所示:
操作开关1

使用Green2时,TRAFFICSIGNAL1为红色(STATUS:=3),TRAFFICSIGNAL2绿色(STATUS:
=1),延迟时间为 5000 毫秒。
绿色行动2

在Switch2上,TRAFFICSIGNAL1 的 STATUS 变为 4(黄-红),TRAFFICSIGNAL2的 STATUS 变为


2(黄)。现在设置了 2000 毫秒的时间延迟。
动作开关2

使用Green1时,TRAFFICSIGNAL1为绿色(STATUS:=1),TRAFFICSIGNAL2为红色(STATUS:
=3),时间延迟设置为 5000 毫秒。
绿色行动1

我们计划的第一阶段扩展阶段已经完成。
如果要在模拟模式下对 POUABLAUF 进行首次测试,请执行以下步骤:
1. 打开 POUPLC_PRG。每个项目都以PLC_PRG开始运行。为了能够临时启动 POUABLAUF,请插入
一个框并将“AND”替换为“ABLAUF”。暂时保持未分配的输入和输出。

2. 通过“Project”“Build”编译项目。在消息窗口中,您应该得到“0 个错误,0 个警告”。现在检查选项“在


线”“模拟”是否被激活,然后使用命令“在线”“登录”进入模拟模式。使用“在线”“开始”启动程序。双击对
象管理器中的条目“ABLAUF”打开 POUABLAUF。程序现在已启动,但要使其运行,变量 START 必须
为 TRUE。稍后,这将由 PLC_PRG 设置,但目前我们必须在 POU 中手动设置它。为此,请双击声明部

CoDeSysV2.3版本 3-7
控制交通信号单元...

分中的行,其中定义了 START (START=FALSE)。这将在绿松石色的变量后面设置选项“<:


=TRUE>”。现在选择命令“在线”“写入值”来设置此值。因此,START将在序列图中以蓝色显示,步骤的
处理将由当前活动步骤的蓝色标记指示。

完成此中间测试后,使用命令“在线”、“注销”退出仿真模式并继续编程。

“SEQUENCE”第二扩展级别
为了确保我们的图表至少有一个备用分支,并且我们可以在夜间关闭交通信号灯单元,我们现在在程序中
包含一个计数器,在一定数量的TRAFFICSIGNAL循环后,该计数器会关闭该单元。

首先,我们需要一个 INT 类型的新变量 COUNTER,像往常一样在 SEQUENCE 的声明部分声明它,并


在 Init 中用 0 初始化它。
ActionInit,第二版

现在选择 Switch1 之后的过渡,然后插入一个步骤,然后插入一个过渡。选择生成的过渡,并在其左侧


插入一个替代分支。在左过渡之后,插入一个步骤和一个过渡。在得到的新转换之后,在 Switch1 之后
插入一个跳转。
按如下方式命名新部件:两个新步骤的上部应称为“计数”,下部应称为“关闭”。转换称为(从上到下,
从左到右)EXIT、TRUE 和 DELAY.OK。新部件应类似于下图中标有黑色边框的部件:

程序 SEQUENCE,第二扩展级别,指令部分

3-8 CoDeSysV2.3版本
3 - 我们编写一个小程序

现在将实施两项新行动和一项新的过渡条件。在步骤 Count 中,变量 COUNTER 增加 1:

操作计数

EXIT 转换检查计数器是否大于某个值,例如 7:
过渡退出

在 Off 时,两个灯的状态都设置为 5(OFF),(或彼此的数字不等于 1、2、3 或 4),COUNTER 重置


为 0,并设置了 10 秒的时间延迟:
操作关闭

结果
在我们的假设情况下,夜幕降临在七个交通信号周期后,交通信号灯自动关闭十秒钟,然后我们再次进入
白昼,交通信号灯单元再次自动打开,整个过程从头开始。如果您愿意,请在模拟模式下对程序的当前版
本进行另一次测试,然后再创建 POUPLC_PRG。

PLC_PRG
我们已经定义并关联了块 SEQUENCE 中两组交通信号灯的相位时间顺序。然而,由于我们将交通信号
灯系统视为总线系统(例如CAN总线)的一个模块,因此我们必须在块PLC_PRG中提供输入和输出变
量。我们想通过 ON 开关启动交通信号灯系统,并且我们希望为 SEQUENCE 的每一步向六个灯(每个
红绿灯、黄灯)发送相应的“信号命令”。现在,在编辑器中创建程序之前,我们正在为这六个输出和一个
输入声明适当的布尔变量,并同时将它们分配给相应的 IEC 地址。

下一步是在声明编辑器中声明 Phases 类型的变量 Light1 和 Light2。


声明 LIGHT1 和LIGHT2

CoDeSysV2.3版本 3-9
控制交通信号单元...

它们将 6 个灯中每个灯的布尔值传递给块 SEQUENCE 的每个步骤的上述 6 个输出。但是,我们不是在


PLC_PRG 块中声明可预测的输出变量,而是在全局变量的资源下声明。布尔输入变量 IN ,用于将块
SEQUENCE 中的变量 START 设置为 TRUE,可以采用相同的方式设置。ON也被分配给IEC地址。

选择“资源”选项卡,然后打开“全局变量”列表。
按如下方式进行声明:
声明CAN配置的输入/输出变量

变量的名称(例如IN)在AT之后后跟一个百分号,该百分号以IEC地址开头。I 代表输入,Q 代表输出,


B(在本例中使用)代表字节,模块的各个位使用 0.0(0.1、0.2 等)寻址。在此示例中,我们不会执行
所需的控制器配置,因为这取决于计算机上可用的目标包。有关详细信息,请参阅 PLC 配置。

我们现在要完成块PLC_PRG。
为此,我们进入编辑器窗口。我们选择了连续功能图编辑器,因此,在菜单栏下,我们得到了一个包含所
有可用元素的 CFC 符号栏(参 连续功能图编辑器)。

在编辑器窗口中单击鼠标右键,然后选择元素Box。单击文本 AND 并改为输入“SEQUENCE”。这将打


开包含所有已定义的输入和输出变量的块 SEQUENCE 。再插入两个块元素,将其命名为 PHASES 。
Phases 是一个功能块,这会导致您在块上获得三个红色问号,并将其替换为已在本地声明的变量
LIGHT1 和 LIGHT2。现在设置一个Input类型的元素,该元素授予标题 ON 和 Output 类型的六个 元
素,如上所述,您将变量名称授予这些元素,即 L1_green 、 L1_yellow 、 L1_red 、 L2_green 、
L2_yellow、L2_red。

程序的所有元素现在都已到位,您可以通过单击元素输入/输出处的短线并将其拖动到所需元素的输入/输
出来连接输入和输出。

您的程序最终应如下所示:

3-10 CoDeSysV2.3版本
3 - 我们编写一个小程序

PLC_PRG,使用连续功能图编辑器进行声明和演示

TRAFFICSIGNAL仿真
现在在模拟模式下测试您的程序。编译('Project', 'Build')并加载('Online', 'Login')。通过“在线
”“开始”启动程序,然后将变量 ON 设置为 TRUE,例如双击 CFC 编辑器输入框中的“ON”条目。这会
将变量标记为准备设置为 <TRUE> 。然后按 <Ctrl><F7> 或命令 “ 联机 ”“ 写入值 ” 来设置值。现在,
ABLAUF 中的变量 START(我们在程序的第一个扩展级别中手动将其设置为 TRUE)通过变量 ON 获取
此值,该变量在PLC_PRG中使用。这将使运行红绿灯循环。PLC_PRG已更改为监视窗口。在声明编辑
器中的加号上单击两次,变量显示将下拉,您可以看到各个变量的值。

3.2 可视化交通信号单元...
借助CoDeSys的可视化功能,您可以快速轻松地将项目变量变为现实。现在,我们将为我们的交通信号
灯单元绘制两个交通信号灯和一个 ON 开关,这将说明切换过程。

创建新的可视化效果
要创建可视化,必须首先 在对象管理器中选择可视化范围。首先单击左侧窗口的下边缘,注册卡上的
POU带有此符号和名称Visualization。如果现在选择命令“项目”“对象添加”,则会打开一个对话框。

在此处输入任何名称。单击“确定”确认对话框后 ,将打开一个窗口,您可以在其中设置新的可视化效
果。

在可视化中插入元素
对于我们的 TRAFFICSIGNAL 可视化,您应该按以下步骤操作:

CoDeSysV2.3版本 3-11
可视化交通信号单元...

• 发出命令“插入”“椭圆”并尝试画一个中等大小的圆(?2cm)。为此,单击编辑器字段,然后用鼠标
左键绘制其 度的圆。
• 现在双击圆圈。将打开用于编辑可视化元素的对话框
• 选择类别变量,然后在更改颜色字段中输入变量名称。 L1_red 或 “L1_red” 。这意味着全局变量
L1_red 一旦设置为 TRUE,它就会导致颜色变化。变量名称前的点表示它是全局变量,但不是必需
的。

• 然后选择类别颜色,然后单击“颜色”区域中的“内部”按钮。选择尽可能中性的颜色,例如黑色。

• 现在单击警报颜色区域内的按钮,然后选择最接近红灯的红色。

生成的圆圈通常为黑色,当 TRAFFICSIGNAL1 中的变量 RED 为 TRUE 时,其颜色将变为红色。因


此,我们创造了第一道光
交通信号!

其他红绿灯
现在输入命令“编辑”、“复制”(<Ctrl>+<C>),然后输入两次“编辑”、“粘贴”(<Ctrl>+<V>)。这样一
来,在第一个圆圈的顶部又有两个大小完全相同的圆圈。您可以通过单击圆圈并用鼠标左键拖动它来移动
圆圈。在我们的例子中,所需的位置应该在编辑器窗口左半部分的垂直行中。双击其他两个圆圈之一,再
次打开配置对话框。在相应圆圈的“更改颜色”字段中输入以下变量:

对于中间圆圈:L1_yellow
对于最低的圆圈:L1_green
现在,在“颜色”类别中为圆圈选择相应的颜色,在“警报颜色”区域中选择相应的颜色(黄色或绿色)。

3-12 CoDeSysV2.3版本
3 - 我们编写一个小程序

TRAFFICSIGNAL案例
现在输入命令“插入”“矩形”,然后以与圆相同的方式插入一个包含三个圆的矩形。再次为矩形选择尽可
能中性的颜色,并发出命令“Extras”“发送到后面”,以便圆圈再次可 。

如果模拟模式尚未打开,您可以使用命令“在线”“模拟”激活它。
如果您现在使用命令“在线”“登录”和“在线”“运行”开始模拟,那么您可以观察第一个交通信号的颜色变
化。

第二个交通信号灯
创建第二个交通信号灯的最简单方法是复制第一个交通信号灯的所有元素。为此,您可以选择第一个交通
信号灯的所有元素,并使用命令“编辑”、“复制”和“编辑”、“粘贴”来复制它们(就像之前使用第一个
交通信号灯一样)。然后,您只需将相应对话框中的文本 “TRAFFICSIGNAL1” 更改为
“TRAFFICSIGNAL2”,即可完成第二个交通信号灯的可视化。

ON开关
插入一个矩形,如上所述,为您选择的交通信号灯授予一种颜色,然后输入。ON 在更改颜色的变量处。
在“文本”类别中“内容”的输入 字段中输入“ON”。

为了通过鼠标单击开关将变量ON设置为TRUE,请在“输入”类别中激活选项“切换变量”并输入变量名称
”。开“在那里。变量键控意味着当鼠标单击可视化元素时,变量 .ON 设置为值 TRUE,但在再次释放鼠
标键时重置为值 FALSE(我们特此为我们的交通信号灯程序创建了一个简单的打开设备)。

CoDeSysV2.3版本 3-13
可视化交通信号单元...

可视化效果中的字体
为了完成可视化,您应该首先插入另外两个矩形,将其放置在交通信号灯下方。

在可视化对话框中,在“框架的颜色 ”类别中设置白色,并在“文本”类别中写入“ 内 容 ” 字 段 “ Light1”


或“Light2”。现在,您的可视化效果如下所示:

3-14 CoDeSysV2.3版本
4 - 单个组件

4 各个组件

4.1 主窗口...
主要窗口组件

在CoDeSys的主窗口中可以找到以下元素(从上到下):
菜单栏
工具栏(可选);带有按钮,可更快地选择菜单命令。
带有 POU、数据类型、可视化和资源的寄存卡的对象管理器
对象管理器和 CoDeSys 工作空间之间的垂直屏幕分隔线
编辑器窗口所在的工作空间
消息窗口(可选)
状态栏(可选);有关项目当前状态的信息
另请参阅:
上下文菜单

菜单栏
菜单栏位于主窗口的上边缘。它包含所有菜单命令。

工具栏
通过用鼠标单击符号,可以更快地选择菜单命令。可用符号的选择会自动适应活动窗口。

仅当鼠标按钮按下符号然后松开时,才会执行该命令。如果将鼠标指针短时间停留在工具栏中的符号上,则该

CoDeSysV2.3版本 4-1
主窗口...

符号的名称将显示在工具提示中。

要在工具栏上查看每个符号的描述,请在“帮助”中选择需要了解的编辑器,然后单击您感兴趣的工具栏符
号。
工具栏的显示是可选的(请参阅“项目”、“选项”类别、桌面)。

对象管理器
对象管理器始终位于CoDeSys的左侧。底部有四张寄存器卡,带有四种对象类型的符号:POU、数据类
型、可视化

和资源。要在相应的对象类型之间切换,请用鼠标单击相应的寄存器卡或使用向左或向右箭头键。

您将在管理项目中的对象一章中学习如何在对象管理器中使用对象。

屏幕分隔器
屏幕分隔线是两个不重叠窗口之间的边界。在CoDeSys中,对象管理器和主窗口的工作空间之间、POU
的接口(声明部分)和实现(指令部分)之间以及工作空间和消息窗口之间都有屏幕分隔线。

您可以使用鼠标指针移动屏幕分隔线。您可以通过在按下鼠标左键的情况下移动鼠标来执行此操作。

确保屏幕分隔线始终保持在其绝对位置,即使窗口大小已更改也是如此。如果屏幕分隔器似乎不再存在,
则只需放大窗口即可。

工作空间
工作空间位于 CoDeSys 中主窗口的右侧。在此区域中打开对象的所有编辑器和库管理器。当前对象名称
将显示在标题栏中;对于 POU,POU 类型和当前使用的编程语言的缩写出现在其后面的括号中。

您可以在“编辑者”一章中找到对编辑的描述
在菜单项“窗口”下,您可以找到用于窗口管理的所有命令。

消息窗口
消息窗口由主窗口中工作空间下方的屏幕分隔线分隔。

它包含来自先前编译、检查或比较的所有消息。搜索结果和交叉引用列表也可以在此处输出。

4-2 CoDeSysV2.3版本
4 - 单个组件

如果在消息窗口中双击消息或按 <Enter> ,编辑器将打开并显示该对象。将选择对象的相关行。使用命


令“编辑”、“下一个错误”和“编辑”、“上一个错误”,您可以在错误消息之间快速跳转。

消息窗口的显示是可选的(参 “窗口”,“消息”)。

状态栏
CoDeSys中主窗口窗口框架底部的状态栏为您提供有关当前项目和菜单命令的信息。

如果某个项目是相关的,则该概念以黑色字体显示在状态栏的右侧,否则以灰色字体显示。

当您在联机模式下工作时,联机概念 以黑色字体显示。如果您在脱机模式下工作,则它以灰色脚本显
示。
在在线模式下,您可以从状态栏中查看您是否处于模拟(SIM)、正在处理程序(RUNS)、是否设置了
断点(BP)或正在强制变量(FORCE)。
使用文本编辑器,会指示当前光标位置的行号和列号(例如,Line:5, Col.:11)。在在线模式下,
“OV”在状态栏中显示为黑色。按 <Ins> 键可在覆盖和插入模式之间切换。

如果鼠标点处于可视化状态, 则给出光标相对于屏幕左上角的当前 X 和 Y 位置(以像素为单位)。如


果鼠标指针位于Element上,或者正在处理某个元素,则会指示其编号。如果你有一个元素要插入,那么
它也会出现(例如矩形)。

如果您已选择菜单命令但尚未确认,则状态栏中会显示简短说明。

状态栏的显示是可选的(参 “项目”、“选项”类别、桌面)。

上下文菜单
快捷键:<Shift>+<F10>
您可以使用鼠标右键,而不是使用菜单栏来执行命令。然后出现的菜单包含选定对象或活动编辑器最常用
的命令。可用命令的选择会自动适应活动窗口。可用命令的选择会自动适应活动窗口。

4.2 项目选项...
'项目''选项'
使用此命令,将打开用于设置选项的对话框。这些选项分为不同的类别。通过单击鼠标或使用箭头键在对
话框左侧选择所需的类别,然后更改右侧的选项。

为当前项目设置的选项的图像将在组件“工作区”的“资源”选项卡中找到。

除其他外,设置还用于配置主窗口的视图。除非另有说明,否则它们将保存在文件“CoDeSys.ini”中,
并在下次CoDeSys启动时恢复。

CoDeSysV2.3版本 4-3
项目选项...

类别: 存储在 存储在


CoDeSys的 项目
加载并保存 X
用户信息 X
编辑器 X
桌面 X
颜色 X
目录 猫。常 猫。项目
日志 X
建 X
密码 X
源码下载 X
符号配置 X
项目源代码管理 X
宏 X

加载和保存选项
如果在“选项”对话框中选择此类别,则会出现以下对话框:
“加载并保存”类别的“选项”对话框

激活选项时,该选项之前会出现一个复选标记( )。
创建备份:CoDeSys 在每次保存时都会创建一个扩展名为“.bak”的备份文件。与 *.asd 文件( 下文,“
自动保存”)相反,此 *.bak 文件在关闭项目后保留。因此,您可以恢复上次保存项目之前的版本。

自动保存: 在工作时,您的项目会根据定义的时间间隔 (自动保存间隔)保存 到项目目录中扩展名为


“.asd”的临时文件中。此文件在正常退出程序时被擦除。如果由于任何原因 CoDeSys 没有“正常”关闭(
例如由于电源故障),则文件将不会被删除。当您再次打开该文件时,将显示以下消息:

4-4 CoDeSysV2.3版本
4 - 单个组件

您现在可以决定是要打开原始文件还是自动保存文件。
如果库 *.lib 作为项目打开,则将创建相应的自动保存文件“*.asl”。
编译前自动保存:每次编译前都会保存项目。在这样做时,将创建一个扩展名为“.asd”或“.asl”的文件,
其行为类似于上面描述的“自动保存”选项。

询问项目信息:保存新项目或以新名称保存项目时,系统会自动调用项目信息。您可以使用命令“项目”“
项目信息”可视化项目信息并对其进行处理。

自动加载:在下次启动 CoDeSys 时,将自动加载最后一个打开的项目。也可以通过在命令行中输入项目


来加载 CoDeSys 开始时的项目。
退出时提醒
启动项目:如果自上次下载启动项目以来,项目已被修改和下载而没有创建新的启动项目,则
在离开项目之前将出现一个对话框,通知用户:“自上次下载以来未创建启动项目。还是退出?

保存 ENI 凭据:用户名和密码(可能插入到 ENI 数据库的登录对话框中)将被保存。关于访问数据,用


户在“从源代码管理器打开项目”(参 第 4.2 章“文件”“打开”)中输入一次,在这种情况下,用户名和
密码将保存在codesys.ini文件中。

用户信息选项
如果在“选项”对话框中选择此类别,则会出现以下对话框:
“用户信息”类别的“选项”对话框

用户信息属于用户的名称、他的姓名首字鴏缩写和 他工作的公司。每个条目都可以修改。这些设置将应
用于将在本地计算机上使用CoDeSys 创建的任何其他项目。

CoDeSysV2.3版本 4-5
项目选项...

编辑器选项
如果在“选项”对话框中选择此类别,则会看到如下所示的对话框。
您可以对编辑器进行以下设置:
自动声明:如果激活此选项,则在输入尚未声明的变量后,所有编辑器中将出现一个对话框,可以使用该
对话框声明此变量。
自动格式化:如果激活此选项,则 CoDeSys 将在 IL 编辑器和声明编辑器中执行自动格式化。当您用一
行结束时,将采用以下格式:1.用小写字鯦书写的运算符以大写字鯦显示; 插入制表符,以均匀划
分列。

列出组件:如果激活此选项,则“智能感知功能”将可用于用作输入助手。这意味着,如果在应插入标识
符的位置插入一个点,则将打开一个选择列表,提供在项目中找到的所有全局变量。如果插入功能块实例
的名称,则将获得实例化功能块的所有输入和输出的选择列表。“Intellisense 函数”在编辑器、Watch- 和
Recipemanager、可视化和 SamplingTrace 中可用。

“编辑器”类别的“选项”对话框

声明为表:
如果激活此选项,则可以编辑表中的变量,而不是使用通常的声明编辑器。此表的排序方式类
似于卡片盒,您可以在其中找到输入变量、输出变量、局部变量和in_out变量的选项卡。对于每个变量,
都有用于插入名称、地址、类型、初始和注释的编辑字段。

Tab-Width: 在“选 项”对 话 框 的“编 辑 器”类 别 的“Tab-Width ”字段中,您可以确定选项卡的宽度,如


编辑器中所示。默认设置为四个字符,其中字符宽度取决于所选的字体。

字体:通过单击“选项”对话框的“编辑器”类别中的“字体”按钮,您可以在所有 CoDeSys 编辑器中选择


字体。字体大小是所有绘图操作的基本单位。因此,选择更大的字体大小会放大打印输出,即使使用
CoDeSys 的每个编辑器也是如此。
输入命令后,将打开字体对话框,用于选择字体、样式和字体大小。

4-6 CoDeSysV2.3版本
4 - 单个组件

用于设置字体的对话框

标记:在“选项”对话框的“编辑器”类别中选择“标记”时,可以选择图形编辑器中的当前选区是用虚线矩
形(Dotted)、带连续线的矩形(Line)还是填充矩形(Filled)表示。在最后一种情况下,选择显示为
倒置。

位值:在“选项”对话框的“编辑器”类别中选择位值时,可以选择在监视期间是否应将二进制数据(类型
BYTE、WORD、DWORD)显示为十进制、十六进制或二进制。

禁止监视复杂类型(数组、指针 VAR_IN_OUT ): 如果激活此选项,则在联机模式下,数组、指针


VAR_IN_OUTs等复杂数据类型将不会显示在监视窗口中。

显示POU 符号:如果激活此选项,则在插入到图形编辑器的模块框中,如果符号在库文件夹中以位图形
式提供,则还会显示这些符号。位图文件的名称必须由模块名称和扩展名“.bmp”组成。示例:对于模块
TON,有一个可用的符号文件TON.bmp。该框将显示如下:

桌面选项
如果在“选项”对话框中选择此类别,则会看到如下所示的对话框。
当一个选项被激活时,它前面会出现一个勾选。
工具栏:带有按钮的工具栏可在菜单栏下方显示,以便更快地选择菜单命令。

状态栏:CoDeSys 主窗口下边缘的状态栏变为可 。
在安全模式下在线:在在线模式下,使用命令“运行”、“停止”、“重置”、“切换断点”、“单周期”、“写入
值”、“强制值”和“释放力”,会出现一个对话框,其中包含确认请求是否应真正执行命令。如果目标系统
支持,当您想将实际项目从编程系统加载到 PLC 时,可能会有一个扩展对话框如果 PLC 上已经有一个项
目,此对话框将显示该项目的项目信息以及当前要加载的项目的信息。当 PLC 上已经有引导项目时,如
果创建引导项目,也可以使用此项目信息。

此选项将与项目一起保存。

CoDeSysV2.3版本 4-7
项目选项...

“桌面”类别的“选项”对话框

登录前查询通信参数: 一旦执行 “Online”“Login” 命令,首先会打开通信参数对话框。若要进入联机模


式,必须先单击“确定”关闭此对话框。

不将通信参数保存在项目中:通信参数对话框的设置(“在线”“通信参数”)不会与项目一起保存。

显示打印区域边距:
在每个编辑器窗口中,当前设置的打印范围的限制都用红色虚线标记。其尺寸取决于
打印机特性(纸张尺寸、方向)和设置打印布局的“内容”字段的大小(菜单:“文件”“文档设置”)。

F4 忽略警告:编译后,当在消息窗口中按下 F4 时,焦点仅跳到包含错误消息的行;警告消息将被忽略。

MDI 表示形式:默认情况下,此选项(多文档界面)处于激活状态,因此可以同时打开多个窗口。如果
禁用该选项(SDI 模式),则只能打开一个窗口,并将以全屏模式显示。例外:即使在 MDI 模式下,程
序的操作和程序本身也可以并排显示。

通信超时[ms]:对于标准通信服务:以毫秒为单位的时间跨度,在此之后,如果未检测到更多活动,则
与目标系统的通信将终止。可能的值:1-10000000 毫秒。

下载通信超时 [ms]:用于持久的通信服务(程序下载、文件上传和下载、启动项目创建和检查):时间
跨度(以毫秒为单位),在此时间跨度之后,如果未检测到更多活动,则与目标系统的通信将终止(下载
等待时间)。可能的值:1-10000000 毫秒。

XML 编码: 可以选择 XML 导出的格式。默认设置为“ISO8859-1”。这涉及通过 ENI、消息接口和 COM


自动化接口的通信,以及从 CoDeSys 导出的每个用户触发的 XML。许可管理器的 XML 导出是一个例
外。

语言:在此处定义菜单和对话框文本应以哪种语言显示。

注意: 请注意,在Windows98T下无法选择语言!

注意:设置将存储在 CoDeSys 中。

4-8 CoDeSysV2.3版本
4 - 单个组件

颜色选项
如果在“选项”对话框中选择此类别,则会出现以下对话框:
“颜色”类别的“选项”对话框

您可以编辑CoDeSys的默认颜色设置。您可以选择是要更改行号(默认预设:浅灰色)、断点位置(深
灰色)、设置断点(浅蓝色)、当前位置(红色)、到达位置(绿色)或监视布尔值(蓝色)的颜色设
置。

如果选择了指示的按钮之一,则将打开用于输入颜色的对话框。
用于设置颜色的对话框

CoDeSysV2.3版本 4-9
项目选项...

目录选项
如果在“选项”对话框中选择此类别,则会出现以下对话框:
“目录”类别的“选项”对话框

可以在“项目”和“公共区域”中输入目录,以便 CoDeSys 用于搜索库、控制器配置和可视化文件,以及


存储编译和源上传文件。 (注意:例如,编译文件是映射文件和列表文件,而不是符号文件!后者将保
存在项目目录中。如果激活字段后面的按钮(...),则会打开目录选择对话框。对于库和配置文件,可以
为每个文件输入多个路径,用分号 “;” 分隔。

请注意:
-库路径可以根据项目文件的路径输入,方法是在前面加上点“.”。例如:如果输入“.\libs”,则如果当前项目位于“C:
\programs\projects”中,则还将在“C:\programs\projects\libs”中搜索库。有关库路径的信息,另请参 :“第 6.4
章”插入“”附加库”。-请勿在目录路径中使用空格和特殊字符,但“_”除外。

“项目”区域中的信息 与项目一起存储。
公共区域中的信息将写入编程系统的 ini 文件,因此适用于所有项目。

目标区域仅显示目标系统中设置的库和配置文件的目录,例如通过目标文件中的条目。这些字段无法编
辑,但可以选择和复制条目(鼠标右键上下文菜单)。

CoDeSys 通常首先在“项目”中输入的目录中进行搜索,然后在“目标”(在目标文件中定义)中的目录中
搜索,最后在“通用”下列出的目录中搜索。如果找到两个名称相同的文件,则将使用最先浏览的目录中的
文件。

日志选项
如果在“选项”对话框中选择此类别,则会看到如下所示的对话框。
在此对话框中,您可以配置文件,该文件充当项目日志,记录联机模式处理期间的所有用户操作和内部进
程(另请参阅:日志)。
如果打开了尚未生成日志的现有项目,则会打开一个对话框,该对话框提醒人们注意现在正在设置日志,
该日志将在下一个登录过程后接收其第一个输入。

保存项目时,日志会自动以二进制文件的形式存储在项目目录中。如果您更喜欢其他目标目录,可以激活
选项 Directoryforprojectlogs:并输入

编辑字段中的相应路径。为此,使用按钮访问“选择目录”对话框。

4-10 CoDeSysV2.3版本
4 - 单个组件

“日志”类别的选项对话框

日志文件会自动分配扩展名为 .log 的项目名称。要记录的最大联机会话数由最大项目日志大小决定。如


果在录制时超过此数字,则会删除最早的条目,以便为最新的条目腾出空间。

日志功能可以在选项字段激活日志记录中打开或关闭。
您可以在“筛选器”区域中选择要记录的操作:用户操作、内部操作、状态更改、异常。只有属于此处选
中的类别的操作才会显示在“日志”窗口中,并写入日志文件。(有关类别的说明,请参阅日志)。

可以使用命令“窗口”“日志”打开日志窗口。

构建选项
如果在“选项”对话框中选择此类别,则会看到如下所示的对话框。
调试:根据目标描述,此选项是否可以由用户激活/停用,即给定的设置。如果激活它,则会创建其他调
试代码,也就是说,代码可能会变得相当大。需要调试代码才能使用CoDeSys提供的调试功能(例如断
点)。关闭此选项后,项目处理速度会变快,代码大小会减小。该选项与项目一起存储。

替换
常量:直接加载标量类型的每个常量的值(因此不适用于字符串、数组和结构),在联机模式下,常
量以绿色显示。这样就不再可能对常量进行强制、写入和监视。如果该选项被停用,则该值将通过变量访
问加载到存储位置(这实际上允许写入变量值,但意味着更 的处理时间)。

嵌套评论: 评论可以放在其他评论中。示例:(*a:=inst.out;(* 待检查 *) b:


=b+1;*)

在这里,以第一个括号开头的注释不会由“checked”后面的括号结束,而只能由最后一个括号结束。

注意:目前必须谨慎使用此选项:如果项目中的设置与在 CoDeSys 中创建的库中选择的设置不匹配,现在使用的是


项目,则会发生编译器错误,用户很难解释,并且通常无法清除!

CoDeSysV2.3版本 4-11
项目选项...

“生成”类别的“选项”对话框

创建应用程序的二进制文件: 在编译过程中,在项目目录中创建生成的代码(启动项目)的二进制映像。
文件名: <project_name>.bin.相比之下,命令“Online”“Createbootproject”在控制器上设置启动项目。

操作隐藏程序:
默认情况下,当创建新项目时,此选项处于激活状态。这意味着:如果局部操作与全局变
量或程序具有相同的名称,则以下层次结构有效:局部变量在局部操作之前,在全局变量之前程序。

注意:如果打开了使用以前的 CoDeSys 版本创建的现有项目,则默认情况下将停用该选项。因此,可以保留先前有


效的层次结构(局部变量在全局变量之前,在程序之前,在局部操作之前)。

将 LREAL 视为 REAL :如果激活此选项(可用性取决于运行时系统 ; 默认值:未激活),编译会将


LREAL 值作为 REAL 值处理。这可用于创建独立于平台的项目。

数据段数:在这里,您可以定义应在 PLC 中为项目数据分配多少个内存段。即使添加了新变量,也需要


此空间才能使在线更改成为可能。如果在编译过程中收到消息“全局数据存储器不足...”,请输入更大的数
字。在这方面,局部程序变量将像全局变量一样处理。

排除对象:此按钮打开对话框从构建中排除对象:在项目组件树中,选择那些在编译过程中不应考虑的
POU,并激活选项排除。 此后,排除的 POU 将在选择树中显示为绿色。按下按钮排除未使用,如果您
只想显示程序中当前使用的那些 POU。请注意,也可以使用上下文菜单中的“从构建中排除”命令从构建
中排除在对象管理器中选择的单个对象。

编译器版本:在这里,您可以定义要使用的编译器版本。V2.3.3 之后的 CoDeSys 版本(版本、服务包、


补丁)除了实际的编译器版本外,还将包括以前的编译器版本(回到 V2.3.3)。如果您总是希望使用最
新的编译器版本编译项目,请激活选项“使用最新版本”。但是,在这种情况下,将检查当前打开的编程
系统是否也是该版本。如果不是这样,将使用与实际使用的编程系统版本相匹配的编译器版本!如果项目
应使用特定版本进行编译,请通过 Fix 中的选择列表进行定义。

为了对编译过程施加控制,您可以设置两个宏:编译前宏字段中的宏在编译过程之

4-12 CoDeSysV2.3版本
4 - 单个组件

前执行;编译后宏字段中的宏在编译过程之后执行。但是,此处不能使用以下宏命令:文件新建、文件打
开、文件关闭、文件另存为、文件退出、联机、项目编译、项目检查、项目生成、项目清理、项目重建、
调试、监视列表。

自动检查:
为了在每次编译项目时检查语义正确性,可以激活以下选项:

未使用的变量
重叠的内存区域
并发访问
输出上的多个写入访问权限
结果将显示在消息窗口中。这些检查也可以通过“项目”菜单中“检查”子菜单的相应命令启动。

如果目标系统支持,则否定的检查结果将产生编译器错误。

注:“生成选项”对话框中的所有条目都与项目一起存储。

密码
为了保护您的文件免受未经授权的访问,CoDeSys 提供了使用密码的选项,以防止您的文件被打开或更
改。
如果在“选项”对话框中选择此类别,则会看到相应的对话框。
在密码字段中输入所需的密码。对于每个键入的字符,字段中会出现一个星号(*)。您必须在“确认密
码”字段中重复相同的单词。单击“确定”关闭对话框。如果您收到以下消息:

“密码与确认不一致”,
然后,您在两个条目之一中犯了键入错误。在这种情况下,重复这两个条目,直到对话框关闭而不显示消
息。
如果您现在保存文件,然后重新打开它,则会出现一个对话框,要求您输入密码。然后,只有在输入正确
的密码时才能打开项目。否则,CoDeSys 会报告:

“密码不正确。”
“密码”类别的“选项”对话框

CoDeSysV2.3版本 4-13
项目选项...

在打开文件的同时,您还可以使用密码来防止文件被更改。为此,您必须在写保护密码字段中输入密码,
并在下面的字段中确认此输入。

可以在没有密码的情况下打开写保护项目。为此,只需按下按钮取消,
如果 CoDeSys 告诉您在打开文件时输入写保护密码。现在您可以编译项目、将其加载到 PLC 中、模拟
等,但您不能更改它。
当然,记住这两个密码很重要。但是,如果您忘记了密码,请联系您的 PLC 制造商。

密码与项目一起保存。
为了创建差异化的访问权限,您可以定义用户组和“用户组的密码”)。

此外,还要考虑通过加密来保护项目的扩展可能性(参 第 4.3 章“文件”“另存为”),例如,这有助于保


护库在未输入密钥的情况下不被使用。

源码下载
选择此类别时,将打开以下对话框:
“源下载”类别的“选项”对话框

您可以选择 将项目加载到控制器系统中的时间和范围。选项 Sourcecodeonly只涉及 CoDeSys 文件(


文件扩展名 .pro)。选项“所有文件”还包括关联的库文件、可视化位图、配置文件等文件。

使用加载时隐式选项,可以在命令“在线”、“下载”上将选定的文件范围自动加载到控制器系统中。

使用选项 Implicitatcreatebootproject 允许在命令 'Online''Createbootproject' 中将选定的文件范围自


动加载到控制器系统中。
当 给 出 命 令 “ 在 线 ”“下载”时,使用“加载时注意”选项会提供一个对话框,并带有问题“是否要将源代码
写入控制器系统?按“是”会自动将所选范围的文件加载到控制器系统中,或者您也可以单击“否”完成。

使用“按需”选项时,必须通过发出命令“在线”、“源代码下载”将所选范围的文件明确加载到控制器系统
中。

4-14 CoDeSysV2.3版本
4 - 单个组件

存储在控制器系统中的项目可以通过使用“文件”“打开”和 PLC 中的“打开项目”来检索。在此过程中,文


件将被解压缩。

“符号配置”选项
此处显示的对话框(在模拟模式下不可用!)用于配置符号文件,该文件将在每次项目编译期间创建。符
号文件在项目目录中分别创建为文本文件<项目名称>.sym)作为二进制文件<项目名称>.sdb(格式取决
于使用的网关版本)。该文件需要通过符号接口与控制器进行数据交换,并将用于此目的,例如由OPC
或GatewayDDE服务器使用。

如果激活了创建符号条目选项,则项目变量的符号条目将自动写入符号文件。否则,仅包含有关文件和项
目的版本信息。

如果另外激活了“转储 XML 符号表”选项,则还将在项目目录中创建一个包含符号信息的 XML 文件。它


将被命名为<项目名称>。SYM_XML。

配置符号条目时,请考虑以下事项:
如果在目标设置中激活了“来自 INI 文件的符号配置”选项,则符号配置将从 codesys.ini 文件或从那里定
义的另一个 ini 文件中读取。(在这种情况下,无法编辑 CoDeSys 中的“设置对象属性”对话框)。

如果未激活选项“来自 INI 文件的符号配置”,则将根据您可以在“设置对象属性”对话框中进行的设置生成


符号条目。可以使用“配置符号文件”按钮访问该位置:

“设置对象属性”对话框(在选项类别“符号配置”中)

使用树状结构选择编辑器标记应在符号文件中输入的变量。为此,您可以选择一个POU条目(例如全局
变量),该条目将自动标记属于此 POU 的所有变量,或者您可以选择在树中找到为每个 POU 列出的单
个变量。然后通过在相应的小框上单击鼠标在对话框的下部设置所需的选项。激活的选项被选中。可以设
置以下选项:

导出对象的变量:所选对象的变量将导出到符号文件中。
仅当激活“导出对象变量”选项时,以下选项才能生效:
导出数据条目:为对象的结构和数组创建用于访问全局变量的条目。

导出结构组件:为对象结构的每个可变组件创建一个单独的条目。

CoDeSysV2.3版本 4-15
项目选项...

导出数组条目:为对象数组的每个变量组件创建一个单独的条目。
写入访问权限:OPC 服务器可能会更改对象的变量。
完成当前所选变量的选项设置后,还可以选择其他 POU(无需关闭对话框),并指定选项配置。可以对
任何所需数量的 POU 选择一个接一个地执行此操作。通过选择“确定”关闭对话框时,将应用自打开对话
框以来执行的所有配置。

注意:考虑在变量声明中使用编译指示的可能性,这可能定义变量被带到具有受限访问权限的符号文件,或者将其从
符号文件中排除。

“项目源代码管理”选项
此对话框用于定义是否应在项目数据库中管理项目,并相应地配置弹性网卡接口。

使用源代码管理( ENI):如果要通过 ENI 服务器访问项目数据库,以便管理此数据库中项目的所有或


部分 POU,请激活此选项。前提条件:必须安装弹性网卡服务器和数据库,并且您必须在数据库中注册
为用户。另请参阅“CoDeSysENI”一章中有关 ENI 服务器和 ENI 服务器的文档。

如果激活该选项,则数据库函数(签入、获取最新版本等)将可用于处理项目 POU。然后,一些数据库
函数将像选项对话框中定义的那样自动运行,在菜单“项目”“数据库链接”中,您将找到用于显式调用函
数的命令。除此之外,还将在“属性”对话框中添加一个“数据库连接”选项卡,您可以在其中将 POU 分配
给特定的数据库类别。

项目源代码管理类别的“选项”对话框

将新对象与以下数据库连接起来:
在这里,您可以设置一个默认值:如果在项目中插入了一个新对象(“项目”“对象”“添加”),则它将自
动分配给此处定义的对象类别。此分配将显示在对象属性对话框(“项目”、“对象”、“属性”)中,以后
可以在那里进行修改。可能的任务:

项目:POU 将存储在该数据库文件夹中,该文件夹在“项目名称”字段中的 ENI 配置/项目对象对话框中定


义。
共享对象:POU 将存储在该数据库文件夹中,该文件夹在“项目名称”字段中的 ENI 配置/共享对象对话框
中定义。
本地:POU 不会在弹性网卡数据库中进行管理,而只会存储在本地项目中。除了“项目对象”和“共享对

4-16 CoDeSysV2.3版本
4 - 单个组件

象”之外,还有第三个数据库类别“编译文件”,用于此类对象,这些对象在项目编译之前不会创建。因
此,此类别与当前设置无关。

询问新对象的类型: 如果激活此选项,则每当将新对象添加到项目中时,都会打开 “ 对象 ”“ 属性 ” 对话
框,您可以在其中选择应将 POU 分配给上述三个对象类别中的哪一个。通过这样做,可以覆盖标准设
置。

配置 ENI:此按钮将打开三个 ENI 配置对话框中的第一个:


确定在 ENI 数据库中管理的项目的每个对象都可以分配给以下数据库类别之一:“项目对象”、“共享对
象”或“编译文件”。对于这些类别中的每一个,都有一个单独的对话框,用于定义它应该存储在哪个数据
库文件夹中,以及哪些预设置应该对某些数据库功能有效:

对话框 ENI 配置/项目对象


对话框 ENI 配置/共享对象
ENI 配置对话框/编译文件

注意:在任何情况下,每个对象也将存储在本地(与项目一起)。

如果您正在执行主要配置,该对话框将一个接一个地打开。在本例中,向导
(按钮下一步)将指导您,在第一个对话框中输入的设置将自动复制到其他对话框中,因此如果您需要不
同的参数值,您只需修改它们即可。
如果要修改现有配置,则将三个对话框合并到一个窗口(三个选项卡)中。

如果您之前尚未成功登录到数据库,则将自动打开“登录”对话框。

有关项目数据库的项目对象和共享对象的选项
这些对话框是项目数据库选项(“项目”、“选项”、“项目源代码管理”)配置的一部分。在这里,您可以
定义数据库类别“项目对象”和“共享对象”的访问参数。两个对话框都包含相同的项目。(第三个对话框
可用于配置对数据库类别“编译文件”的访问,请参阅下一章)

ENI-连接

TCP/IP 地址: ENI-Server运行的计算机地址


港口: 默认值:80;必须与配置参数中设置的相同
弹性网卡服务器
楼盘名称: 此类别的对象应位于的数据库文件夹的名称
数据处理。按下按钮...打开现有数据的文件夹树
基础项目。如果所需的文件夹已存在,则可以在此文件夹中选择它
树及其名称将在“项目名称”编辑字段中输入。如果您有
直到您尝试通过按钮打开文件夹树...,您才登录到ENI服务器,然后您将首先
看到登录对话框,您必须在其中输入
在您的 ENI 用户帐户中定义的“用户名”和“密码”,以访问三个数据库类别。

只读 如果激活此选项,则只能对上述定义的数据库文件夹进行读取访问。

CoDeSysV2.3版本 4-17
项目选项...

选项类别中的“项目对象”对话框项目源代码管理

获取最新版本
数据库函数“获取最新版本”(菜单“项目”“数据库链接”)将最新版本的 POU 从上述定义的数据库
文件夹复制到当前打开的项目,从而覆盖对象的本地版本。一旦满足设置的计时条件之一,就会自
动对所有对象执行此操作,这些对象在数据库中找到的版本与项目中的版本不同。通过设置复选标
记来激活所需的时间选项:

在项目打开时在 CoDeSys 中打开项目后


一旦将较新版本的 POU 签入ENI 数据库中的更改(例如,由其他用户签入)之后,则
POU 将立即在当前项目中更新,并弹出相应的消息。

在CoDeSys 中的任何编译过程之前

退房
数据库函数“检出”意味着 POU 将被标记为“正在工作”,并将对其他用户锁定,直到通过“检入”
或“撤消检出”命令再次取消阻止。

如果激活了“开始编辑时立即”选项,则在开始编辑对象后,将自动检出对象。如果该对象当前已被
其他用户检出(在 CoDeSys 对象管理器中,对象名称前的红叉表示),则会弹出一条消息。

4-18 CoDeSysV2.3版本
4 - 单个组件

登记
数据库函数“签入”意味着将在数据库中创建对象的新版本。无论如何,旧版本都会保留。

您可以激活以下一个或两个选项来定义自动签入的时间:

在项目中保存项目后立即保存
成功编译后,一旦项目编译完毕,就没有错误

对于每个选项“获取最新版本”、“签出”和“签入”,还可以激活带有查询的选项。在这种情况下,在
执行相应操作之前,将打开一个对话框,您仍然可以在其中决定取消操作或以其他方式确认操作。

“共享对象”对话框的项目与上述“项目对象”对话框中的项目相同。这些设置适用于分配给数据库类别“
共享对象”的所有对象。

如果执行主要配置,配置对话框将一个接一个地出现,并且您将由向导引导(按钮“下一步”)。因此,您
还将进入编译文件选项的配置对话框,请参阅下一章。在第一个对话框中所做的设置将自动继承到其他对
话框中。因此,如果需要修改,只需编辑这些内容即可。

“取消”将关闭对话框,而不在当前打开的对话框中保存已完成的修改。返回到主对话框“选项”“项目源代
码管理”。
如果修改了现有配置,则可以通过按OK保存新设置(针对所有三个对话框)。之后,对话框将关闭,您
将返回主对话框“选项”“项目源代码管理”。

有关项目数据库的编译文件选项
此对话框是项目数据库(“项目”、“选项”、“项目源代码管理”)选项设置的一部分。在这里,您可以定
义如何在数据库中处理类别为“编译文件”的对象。(除此之外,还有两个对话框可用于为“项目对象”和“
共享对象”类别的对象定义这一点,请参阅上一章。

“项目源代码管理”类别中的“编译文件”对话框

CoDeSysV2.3版本 4-19
项目选项...

有关输入字段 TCP/IP 地址、端口、项目名称,请参阅“项目对象/共享对象”对话框的说明。

创建 ASCII 符号 如果激活此选项,则每当符号文件 *.sym(文本


信息(.sym) 格式)或 *.sdb(二进制格式),此文件将被
创建二进制符号信息( 自动写入数据库。符号文件中的条目的创建方式与项目选项类别“符号
.sdb) 配置”中的定义相同。

创建启动项目 如果激活此选项,则每当启动项目时
创建时,此文件将自动写入数据库。

如果您正在执行主要配置,则配置对话框将在向导(按钮“下一步”)的指导下一个接一个地出现。在第一
个对话框中所做的设置将自动继承到其他对话框中。因此,如果需要修改,只需编辑这些内容即可。

“取消”将关闭对话框,而不在当前打开的对话框中保存已完成的修改(无论如何,将保留在先前对话框中
所做的设置)。返回到主对话框“选项”“项目源代码管理”。

如果您修改了现有配置,则可以通过按OK保存新设置(针对所有三个对话框)。之后,对话框将关闭,
您将返回主对话框“选项”“项目源代码管理”。

“宏”选项
如果在“选项”对话框中选择此类别,则会打开一个对话框,您可以在其中使用 CoDeSys 批处理机制的命
令定义宏。之后可以在“编辑”“宏”菜单中调用这些宏。

“宏”类别的“选项”对话框

执行以下步骤以定义新宏:
在输入字段“名称”中,输入要创建的宏的名称。按下“新建”按钮后,此名称将传输到“宏列表”字段中,
并在此处标记为选中。宏列表以树结构表示。本地定义的宏位于另一个宏的下方。如果集成了宏库( 下
文),则将列出库名称,通过鼠标单击这些条目前面的加号或减号,您可以打开或关闭库元素列表。

菜单字段用于定义宏将出现在“编辑”“宏”菜单中的菜单项。为了能够使用单个字鯦作为快捷方式,该字
鯦前面必须有符号“&”。示例:名称“ &cro1”生成菜单项“宏 1”。示例:名称“ &cro1”将创建一个菜
单项“宏 1”。

4-20 CoDeSysV2.3版本
4 - 单个组件

在编辑器字段的“命令”中,定义和/或编辑要构成新创建或选定宏的命令。允许使用CoDeSys批处理机制
的所有命令以及所有对这些命令有效的关键字。您可以通过按“帮助”按钮获取列表。按 <Ctrl><Enter>
启动新的命令行。通过按鼠标右键获得具有常用文本编辑器功能的上下文菜单。可以使用引号对属于一起
的命令组件进行分组。

如果要创建更多宏,请再次执行步骤 1-3,然后按 OK 按钮关闭对话框。

如果要删除宏,请在宏列表中选择它,然后按按钮 <Del>。
如果要重命名宏,请在宏列表中选择它,在编辑字段“名称”中插入一个新名称,然后按“重命名”按钮。

要 编辑现有宏,请在宏列表中选择它,然后编辑字段“菜单”和/或“命令”。按下 OK 按钮时,修改将被保
存。
按下 OK 按钮关闭对话框后,所有宏的实际描述都将保存在项目中。

“编辑”“宏”菜单中的宏菜单项现在按定义顺序显示。在进行菜单选择之前,不会检查宏。

宏库:
宏可以保存在外部宏库中。这些库可以包含在其他项目中。
创建包含当前打开的项目宏的宏库:按“创建”按钮。您将看到“合并项目”对话框,其中列出了所有可用
的宏。选择所需的条目,然后单击“确定”进行确认。选择对话框将关闭,并打开“保存宏库”对话框。在
此处插入新库的名称和路径,然后按按钮保存。

将创建名为 <libraryname>.mac的库,对话框将关闭。
在当前打开的项目中包括宏库<库名称>.mac:按下按钮 Include。将打开“打开宏库”对话框,其中显示
扩展名为 *.mac 的文件。选择所需的库,然后按“打开”按钮。对话框将关闭,库将添加到宏列表的树
中。

提示: 项目的宏也可以导出('Project''Export')。

CoDeSysV2.3版本 4-21
管理项目...

4.3 管理项目...
引用整个项目的命令位于菜单项“文件”和“项目”下。

“文件”“新建”

象征:
使用此命令,您可以创建一个名为“Untitled”的空项目。保存时必须更改此名称。

“文件”“从模板新建”
使用此命令将任何所需的 CoDeSys 项目作为“模板”项目打开。打开项目文件的对话框将可用,所选项目
将以项目名称“未知”打开。

“文件”“打开”

象征:
使用此命令,您可以打开一个已经存在的项目。如果项目已经打开并更改,则 CoDeSys 会询问是否应保
存此项目。
将显示用于打开文件的对话框,并且必须选择扩展名为“*.pro”的项目文件或扩展名为“*.lib”的库文件。此
文件必须已存在。无法使用命令“打开”创建项目。

用于打开文件的对话框

从 PLC 打开项目
要从 PLC 上传项目文件,请在从 PLC 打开项目时按 PLC。接下来,您将获得“通信参数”对话框(参
菜单“在线”“通信参数”),用于在与 PLC 尚未连接时设置传输参数。创建联机连接后,系统会检查计算
机硬盘上的目录中是否已存在相同命名的项目文件。在这种情况下,您会收到对话框“从控制器加载项目
”,您可以在其中决定是否应将本地文件替换为控制器正在使用的文件。(此序列与“在线”“加载源代码”
的顺序相反,项目源文件存储在控制器中。不要与“创建启动项目”混淆!

4-22 CoDeSysV2.3版本
4 - 单个组件

注意:请注意,当您将项目从 PLC 加载到本地目录时,在任何情况下都必须为项目命名,否则它是未命名的。如果


目标系统支持,则在项目信息中输入的“标题”将被预定义为新的项目文件名。在这种情况下,从 PLC 加载项目时,
将打开保存文件的对话框,其中会自动输入新文件名,并可以确认或修改。

如果尚未将项目加载到 PLC,则会收到错误消息。参 “项目”、“选项”、“类别、”Sourcedownload”。

从源代码管理器(ENI数据库)打开项目
要打开存储在 ENI 项目数据库中的项目,可以使用激活选项从源代码管理器打开项目。前提是您有权访
问为数据库提供服务的ENI 服务器。按下按钮ENI...,进入一个对话框,您可以在其中连接到有关数据库
类别“项目对象”的服务器。

插入相应的访问数据(TCP/IP地址、端口、用户名、密码、只读)和应从中获取对象的数据库文件夹(
项目名称),然后单击“下一步”进行确认。该对话框将关闭,另一个对话框将打开,您必须在其中插入
数据库类别“共享对象”的访问数据。如果按下“完成”按钮,对话框将关闭,定义的文件夹的对象将自动
检索并显示在 CoDeSys 对象管理器中。如果要继续将项目对象置于数据库控制之下,请打开“项目选项”
对话框以设置所需的参数。

访问数据存储在codesys.ini文件、用户名和密码中,但前提是项目选项“保存 ENI 凭据”(参 第 4.2


章,类别加载和保存)被激活。
最近打开的文件
最近打开的文件列在“文件”命令“退出”下方的“文件”菜单中。如果选择其中之一,则将打开此项目。

如果已为项目定义了“密码”或“用户组”,则会出现一个用于输入密码的对话框。

'文件''关闭'
使用此命令,可以关闭当前打开的项目。如果项目已更改,则 CoDeSys 会询问是否要保存这些更改。

如果要保存的项目的名称为“Untitled”,则必须为其命名(请参阅“文件”“另存为”)。

'文件''保存'

符号:快捷键:<Ctrl>+<S>
使用此命令,可以保存项目中的任何更改。如果要保存的项目名为“Untitled”,则必须为其命名(请参阅“
文件”“另存为”)。

“文件”“另存为”
使用此命令,可以将当前项目保存在另一个文件中或作为库保存。这不会更改原始项目文件。

选择命令后,将显示“保存”对话框。选择现有文件名或输入新文件名并选择所需的文件类型。

如果要以新名称保存项目,请选择文件类型 CoDeSysProject (*.pro)。


如果选择文件类型 ProjectVersion1.5 (*.pro)、2.0 (*.pro)、2.1 (*.pro)或 2.2 (*.pro),则当
前项目将保存为使用 1.5、2.0、2.1 或2.2版本创建的项目。因此,2.3 版的特定数据可能会丢失!但是,
该项目可以使用版本 1.5、2.0、2.1 或
2.2.

CoDeSysV2.3版本 4-23
管理项目...

“另存为”对话框

您还可以将当前项目另存为库,以便在其他项目中使用它。选择文件类型内部库(*.lib)如果您在
CoDeSys 中对 POU 进行了编程。
如果要实现和集成其他语言(例如 C)的 POU,请选择文件类型外部库(*.lib)。这意味着还会保存另
一个文件,该文件接收库的文件名,但扩展名为“*.h”。此文件构造为 C 头文件,其中包含所有 POU、数
据类型和全局变量的声明。如果使用外部库,则在仿真模式下,将执行为 CoDeSys 中的 POU 编写的实
现。使用真实的硬件,将执行用 C 编写的实现。

要将项目另存为加密项目或库,请选择选项 EncryptedCoDeSysProjekt (*.pro)resp。加密的内部


库(*.lib)或加密的外部库(*.lib)。在这种情况下,您将看到“加密”对话框,您可以在其中定义和确认
密钥。项目以后无法打开,特别是没有此键就无法使用库:

用于项目加密的对话框

加密扩展了对项目的保护,到目前为止,只有通过分配密码进行访问和写保护才能实现。这些可能性将进
一步存在,但考虑到它们无法避免库包含在项目中而无需输入库密码(密钥)。

定义密钥后,将与项目的任何进一步节省一起保存。要修改该密钥,您必须再次使用“另存为”对话框。

如果应打开加密项目,或者应在项目中使用加密库,则会出现要求输入密钥的对话框。

用于输入密钥的对话框

4-24 CoDeSysV2.3版本
4 - 单个组件

许可库:
如果要将项目另存为许可库,可以在“编辑许可信息”对话框中添加相应的许可信息。按按钮打开对话框编
辑许可证信息...。
请参阅“CoDeSys 中的许可证管理”中的说明。

完成所有设置后,按OK。当前项目将保存在指定的文件中。如果新文件名已存在,则系统会询问您是否
要覆盖此文件。
另存为库时,将编译整个项目。如果因此发生错误,则会告知您需要正确的项目才能创建库。然后,项目
不会另存为库。

'文件''保存/邮件存档'
此命令用于设置和创建项目存档文件。CoDeSys 项目引用和使用的所有文件都可以打包到压缩的 zip 文
件中。zip文件可以存储,也可以直接通过电子邮件发送。如果要转发一组所有与项目相关的文件,这将
非常有用。

请注意:
存档功能对于恢复项目环境并不实用。它被指定用于轻松打包属于项目的所有文件。解压缩存档时,特定文
件的路径必须适应实际的 CoDeSys 环境!

执行该命令时,将打开“保存存档”对话框:
用于设置存档 ZIP 的对话框

在这里,您可以定义应将哪些文件类别添加到存档 zip 文件中:通过激活/停用相应的复选框来选择或取


消选择类别。只需单击复选框中的鼠标或双击类别名称即可执行此操作。如果某个类别标有,则该类别的

CoDeSysV2.3版本 4-25
管理项目...

所有文件都将添加到 zip 文件中,如果标有,则不会添加任何文件。要选择某个类别的单个文件,请按相


应的按钮详细信息。“详细信息”对话框将打开,其中包含可用文件列表。

用于详细选择存档 ZIP 文件的对话框

该对话框显示可用于该类别的所有文件的列表:自动选择所有文件,例外是类别“目标文件”,其中仅选择
与当前设置的目标系统相关的文件。要修改选择,请激活或停用所需的文件。使用“全选”按钮,将选择
列表中的所有文件,使用“无”选项,则不选择任何文件。可以通过在复选框中单击鼠标来选择/取消选择
单个文件,也可以通过双击列表条目或在标记列表条目时按空格键来选择/取消选择单个文件。

使用“保存”关闭“详细信息”对话框以存储新设置。
在主对话框中,类别复选框(并非所有文件都被选中)将以灰色背景颜色显示。以下文件类别可用,表的
右列显示哪些文件可以添加到 zip 文件:

类别 达蒂恩

项目文件 projectname.pro(CoDeSys 项目文件)

引用的库 *.lib、*.obj、*.hex(库以及相应的对象和十六进制文件(如果可用)

编译信息 *.ci(编译信息)、*.ri(下载/参考信息)
<temp>.*(临时编译和下载文件)也用于模拟

INI 文件 Codesys.ini

日志文件 *.log(项目日志文件)

位图文件 *.bmp(项目 POU 和可视化的位图)

注册表项 Registry.reg(AutomationAlliance、Gateway 和 SPS 的条目;将打包以下子


树 : HKEY_LOCAL_MACHINE\SOFTWARE\3S-Smart Software Solutions
HKEY_LOCAL_MACHINE\SOFTWARE\AutomationAlliance”

符号文件 *.sdb、*.sym(符号信息)

4-26 CoDeSysV2.3版本
4 - 单个组件

配置文件 用于 PLC 配置的文件(配置文件、设备文件、图标等):例如 *.cfg、*.con、


*.eds 、 *.dib 、 *.ico ....

目标文件 *.trg(所有已安装目标的二进制格式的目标文件) *.txt(文本格式的已安装目标的


目标文件,如果可用)
本地网关 网关目录中的 Gateway.exe、GatewayDDE.exe、GClient.dll、GDrvBase.dll、
GDrvStd.dll、GHandle.dll、GSymbol.dllGUtil.dll 等 DLL(如果可用)

语言文件 用于可视化的语言文件(*.vis、*.xml)
Bootproject(启动项目) Bootproject 文件<项目名称>.prg、<项目名称>.chk 或特定于目标的 bootproject 文
件。

要将任何其他文件添加到 zip,请按按钮其他文件.将打开“其他文件”对话框,您可以在其中设置所需文件
的列表。
按“添加”按钮打开用于打开文件的标准对话框,您可以在其中浏览文件。选择一个,然后单击“打开”进
行确认。该文件将被添加到“其他文件”对话框中的列表中。对要添加的每个文件重复此操作。要从列表中
删除条目,请按“删除”按钮。当所选文件列表正常时,单击“确定”关闭对话框。

用于为存档 ZIP 添加其他文件的对话框

要将自述文件添加到存档 zip,请按“注释”按钮。将打开一个文本编辑器,您可以在其中输入任何文本。
如果单击“确定”关闭对话框,则在创建 zip 文件期间将添加一个readme.txt文件。除了输入的注释外,它
还将包含有关 CoDeSys 的构建日期和版本的信息。

如果已完成所有所需的选择,请在主对话框中按
救。。。要创建并保存存档 zip 文件:将打开用于保存文件的标准对话框,您可以输入应存储 zip 的路
径。默认情况下,zip 文件名为<projectname>.zip。单击“保存”进行确认 以开始构建它。在创建过程
中,将显示当前进度状态,并在消息窗口中列出后续步骤。如果找不到任何文件,也会显示一条消息。

邮件。。。 创建临时存档 ZIP 并自动生成包含该 ZIP 作为附件的空电子邮件。仅当系统上已正确安装


MAPI(邮件应用程序编程接口)时,此功能才有效,否则会生成错误消息。在设置电子邮件期间,将显
示进度状态,并在消息窗口中列出操作步骤。操作完成后,将自动删除临时 zip 文件。

“取消”(Cancel)取消操作;不会生成 zip 文件。

CoDeSysV2.3版本 4-27
管理项目...

“文件”“打印”
快捷键:<Ctrl>+<P>
使用此命令,将打印活动窗口的内容。
选择命令后,将显示“打印”对话框。选择所需的选项或配置打印机,然后单击“确定”。打印活动窗口。
所有编辑器都提供颜色输出。

您可以确定份数并将版本打印到文件中。
使用“属性”按钮,您可以打开对话框以设置打印机。
您可以使用命令“文件”“打印机设置”确定打印输出的布局。
在打印过程中,对话框显示已打印的 数。关闭此对话框后,打印将在下一 后停止。

为了记录您的整个项目,请使用命令“项目”“文档”。
如果要为项目创建一个文档框架,您可以在其中存储有关项目中使用的所有变量的注释,请打开全局变量
列表并使用命令 “Extras”“Makedocuframefile”。

“打印”对话框

“文件”“打印机设置”
使用此命令,您可以确定打印 面的布局。现在将打开以下对话框:

“ 面布局”对话框

4-28 CoDeSysV2.3版本
4 - 单个组件

在“文件”字段中,您可以输入扩展名为“.dfr”的文件的名称,其中应保存 面布局。设置的默认目标是文
件 DEFAULT。DFR。
如果要更改现有布局,请使用“浏览”按钮浏览目录树以查找所需的文件

您还可以选择是否为每个对象和每个子对象开始一个新 面。使用“打印机设置”按钮打开打印机配置。

如果单击“编辑”按钮,则会出现用于设置 面布局的框架。在这里,您可以确定 码、日期、文件名和


POU 名称,还可以在 面和打印文档的文本区域放置图形。

用于在 面布局上粘贴占位符的窗口

使用菜单项“插入”、“占位符”以及随后在五个占位符( 面、POU 名称、文件名、日期和内容)中进


行选择,通过在按住鼠标左键的同时拖动布局上的矩形,将所谓的占位符插入布局中。在打印输出中,它
们被替换如下:

命令 占位符 影响

{ } 此处,当前 码显示在打印输出中。
POU 名称 {POU 名称} 此处显示 POU 的当前名称。
文件名 {文件名} 此处显示项目名称。
日期 {日期} 此处显示当前日期。
内容 {内容} 此处显示 POU 的内容。

此外,使用“插入”、“位图”,您可以在 面中插入位图图形(例如公司徽标)。选择图形后,还应使
用鼠标在布局上绘制一个矩形。可以插入其他可视化元素(请参阅可视化)。

如果模板已更改,则 CoDeSys 会在窗口关闭时询问是否应保存这些更改。

提示:为了了解对打印输出有效的 面格式,请如上所述定义布局,并在项目选项的“桌面”类别中额外激活“显示打
印区域边距”选项。

CoDeSysV2.3版本 4-29
管理项目...

“文件”“退出”
快捷键:<Alt>+<F4>
使用此命令,您可以退出 CoDeSys。
如果一个项目被打开,那么它就会被关闭,如“文件”“保存”中所述。

'Project' 'Build'
快捷键:<F11>
该项目是使用 'Project''Build' 编译的。编译过程基本上是增量式的,即只对更改的 POU 进行重新编译。
保存项目时,有关上次编译的必要信息存储在 *.ci 文件中。如果首先执行命令“Project”“全部清除”,也
可以获得非增量编译。

对于支持联机更改的目标系统,编译后将在下次下载时加载到控制器中的所有 POU 都会在对象管理器中


用蓝色箭头标记。
如果控制器通过“在线”“登录”登录,则使用“项目”“构建”执行的编译过程会自动发生。

请参 第 4.6 章“联机”“登录”中显示目标系统上 Project-Build、Project-Download、OnlineChange 和


Login 之间关系的图表。
在编译过程中,将打开一个消息窗口,显示编译过程的进度、编译过程中可能发生的任何错误和警告,以
及有关使用的 POU 索引和内存空间(数字和百分比)的信息。错误和警告用数字标记。使用 F1,您可
以获得有关当前所选错误的详细信息。

请参阅所有可用错误消息和警告的列表。
项目消息窗口中的错误消息和编译信息示例

如果在“加载并保存”类别的选项对话框中选择了“编译前保存”选项,则在编译之前存储项目。

在对象管理器中选择的对象可以通过上下文菜单中的“从构建中排除”命令从编译中排除多个对象,或者通
过构建选项中的适当配置(“排除对象”)从编译中排除(参 第 4.2 章“构建选项”)。

4-30 CoDeSysV2.3版本
4 - 单个组件

注意: 交叉引用是在编译过程中创建的,并与编译信息一起存储。为了能够使用命令 “ShowCallTree” ,或者


使用命令 “ShowCrossReference” 、 “UnusedVariables” 、 “Overlappingmemoryareas” 、
“ConcurrentAccess” 和 “MultipleWriteAccessonoutput” ( “Project”“Check” 菜单)获取最新结果,必
须在任何更改后重建项目。

'Project''全部重建'
使用 'Project''Rebuildall' ,与增量编译( 'Project''Build'. 项目。。 Build.>Proc ),则项目将完全重新编
译。但是,下载信息不会被丢弃,就像命令“全部清除”一样。考虑从编译中排除对象的可能性(请参 第
4.2 章“构建选项”)。

请参 第 4.6 章“联机”“登录”中显示目标系统上 Project-Build、Project-Download、OnlineChange 和


Login 之间关系的图表。

'Project''全部清理'
使用此命令,将删除上次下载和上次编译中的所有信息。
选择该命令后,将出现一个对话框,报告不再可以在没有新下载的情况下登录。此时,可以取消或确认该
命令。

注意:完成“全部清除”后,只有当包含上次下载的项目信息的 *.ri 文件首先被重命名或保存在项目目录之外时,才能


登录 PLC 项目(参 “加载下载信息”),现在可以在登录之前显式重新加载。

请参 第 4.6 章“联机”“登录”中显示目标系统上 Project-Build、Project-Download、OnlineChange 和


Login 之间关系的图表。

'Project''加载下载信息'
使用此命令,可以重新加载属于项目的下载信息。选择命令后,将打开标准对话框“文件打开”。

下载信息在每次下载时自动保存,并且根据目标系统的不同,可能在每次脱机创建引导项目时保存到一个
名为<projectname><targetidentifier>.ri的文件,该文件被放入项目目录中。每次重新打开项目时,都
会重新加载此文件,并在登录时用于检查已更改的 POU 的代码。在在线更改过程中,只有这些 POU 才
会加载到 PLC。因此,*.ri 文件是在线更改的先决条件。

但 是 : 如 果 项 目 目 录 中 的 *.ri 文 件 被 命 令“Project”“全部清除”删除,则只有在将*.ri文件也存储在另
一个目录中时才能重新加载下载信息。请参 第 4.6 章“联机”“登录”中的提示。

另请参 第 4.6 章“联机”中的“登录”,该图显示了目标系统上 Project-Build、Project-Download、OnlineChange 和


Login 之间的关系。

'项目''翻译成另一种语言'
此菜单项用于将当前项目文件翻译成另一种语言。这是通过读取从项目生成的翻译文件来实现的,并在文
本编辑器的帮助下以所需的国家语言进行外部增强。该项目可以只显示,也可以真正翻译成生成的语言版
本之一。

存在以下菜单子项:
创建翻译文件
翻译项目
显示已翻译的项目
切换翻译
另请参阅:“编辑翻译文件”

CoDeSysV2.3版本 4-31
管理项目...

创建翻译文件
“项目”“翻译成另一种语言”菜单中的此命令将转到“创建翻译文件”对话框。

在“翻译文件”字段中,输入显示文件存储位置的路径。默认文件扩展名为*.tlt;这是一个文本文件。如果要
在 EXCEL 或 WORD 中处理文件,也可以使用扩展名 *.txt,这是推荐的,因为在这种情况下,数据以表
格格式组织。

如果已存在要处理的翻译文件,请提供此文件的路径或使用“搜索”按钮访问标准的 Windows 文件选择对


话框。
可以选择将项目中的以下信息传递到正在修改或创建的翻译文件,以便它们可用于翻译: 名称(名称,
例如对象管理器中的标题“POU”)、标识符、字符串、注释、可视化文本、警报文本。此外,还可以传
输这些项目元素的位置信息。

用于创建翻译文件的对话框

如果选中相应的选项,则当前项目中的信息将作为语言符号导出到新创建的翻译文件中,或添加到现有翻
译文件中。如果未选择相应的选项,则属于相关类别的信息,无论它来自哪个项目,都将从翻译文件中删
除。

可视化中的文本:
“可视化文本”选项仅涉及可视化元素的“文本”和“工具提示文本”。将翻译文件用于可视化文本时,请考
虑以下事项:
*.tlt- 或 *.txt 翻译文件只能用于 CoDeSys 或 CoDeSysHMI ,但不能用于 Target-Visualization 或
Web-Visualization。最好使用特殊的可视化语言文件 *.vis。

只有在在线模式下才能切换到另一种语言。这意味着可视化文本不会通过命令“翻译成另一种语言”进行翻
译。只有在“附加”的“设置”对话框中输入相应的语言时,才能在在线模式下进行语言更改。

如果 *.tlt 或 *.txt 文件应用于可视化文本(“文本”和“工具提示文本”),则必须在可视化元素的配置对话


框中用两个“#”符号括起来(例如 #text#),以便传输到翻译文件。

有关可视化中的语言切换,请参阅 CoDeSys 可视化的用户手册。

4-32 CoDeSysV2.3版本
4 - 单个组件

位置信息:这描述了规范文件路径、POU 和行可用于翻译的语言符号的位置。有三个选项可供选择:

“无”:不生成位置信息。
“首次出现”:元素首次出现的位置将添加到翻译文件中。
“All”:指定出现相应元素的所有位置。

如果要编辑之前创建的翻译文件,而该文件已经包含比当前选择的位置信息更多的位置信息,则无论它是
从哪个项目生成的,它都会被相应地截断或删除。

注意:即使用户在“创建翻译文件”对话框中的“位置信息”下选择了“全部”,每个元素(语言符号)最多将生成 64 个
位置规范。

覆盖现有位置信息:翻译文件中当前正在处理的现有位置信息将被覆盖,无论哪个项目生成该信息。

目标语言:此列表包含翻译文件中包含的所有语言的标识符,以及在完成“创建翻译文件”对话框后要添加
的语言。
“排除”按钮将打开“排除库”对话框。在这里,可以选择包含在项目中的库,其标识符信息不会传输到翻
译文件中。为此,使用鼠标选择左侧“包含的库”表中的相应条目,并使用“添加”按钮将其放置在右侧
的“排除的库”表中。同样,可以使用“删除”按钮删除已放置在那里的条目 。“确定”确认设置并关闭对话
框。

用于排除翻译文件的库信息的对话框

“添加”按钮将打开“添加目标语言”对话框:
用于添加目标语言的对话框(项目、翻译成另一种语言)

必须在编辑器字段中输入语言标识符;它的开头或结尾可能没有空格或变音字符(ä、ö、ü)。

“确定”关闭“添加目标语言”对话框,新的目标语言将显示在目标语言列表中。

CoDeSysV2.3版本 4-33
管理项目...

“ 删除”按钮从列表中删除选定的条目。
您也可以通过“确定”确认“创建翻译文件”对话框,以生成翻译文件。
如果已存在同名的翻译文件,您将收到以下确认消息,请回答“是”或“否”:

“指定的翻译文件已存在。现在将对其进行更改,并创建现有文件的备份副本。你要继续吗?

“否”将返回“创建翻译文件”对话框,而不执行任何操作。如果选择“是”,则将在同一目录中创建文件名
为“Backup_of_<translationfile>.xlt”的现有翻译文件的副本,并根据输入的选项修改相应的翻译文件。

生成翻译文件时会发生以下情况:
对于每种新的目标语言,都会为要显示的每个语言符号生成一个占位符(“##TODO”)。(有关如何处理
翻译文件,请参阅“翻译文件的编辑”。
如果处理现有翻译文件,则将删除出现在翻译文件中但未出现在目标语言列表中的语言文件条目,而不管
这些条目是从哪个项目生成的。

编辑翻译文件
翻译文件必须打开并另存为文本文件。标志 ## 标记关键字。文件中的 ##TODO 占位符可以替换为有效
的翻译。对于每个语言符号,都会生成一个段落,该段落以类型标识符开头和结尾。例如,
##NAME_ITEM 和 ##END_NAME_ITEM 包含对象管理器中使用的对象名称部分。(COMMENT_ITEM
标记注释部分, IDENTIFIER_ITEM 标记标识符部分, STRING_ITEM 标记字符串部分,
VISUALTEXT_ITEM标记可视化文本部分)。

请参阅以下翻译文件段落示例,该段落处理项目其中一个 POU 的名称。ST_Visu。目标语言应为英语(


美国)和法语。在此示例中,添加了应转换的项目元素的位置信息:

- 翻译前:
##NAME_ITEM
[D:\CoDeSys\projects\Bspdt_22.pro::ST_Visualisierung::0]ST_Visualisierung##English :: ##TODO##French ::
##TODO

##END_NAME_ITEM

- 翻译后:
##TODOs 已被英文 resp. 取代。法语单词“Visualisierung”:
##NAME_ITEM
[D : \CoDeSys\projects\Bspdt_22.pro : : ST_Visualisierung : : 0]ST_Visualisierung ##English : : ST_Visualization
##French ::ST_Visu

##END_NAME_ITEM
请检查翻译后的标识符和名称是否对标准有效,以及字符串和注释是否在正确的括号中。示例:对于翻译
文件中用 “ ( *Kommentar1 ) ” 表示的注释( ##COMMENT_ITEM ),必须将 “##English” 后面的
“##TODO”替换为“(*comment1*)”。对于用“zeichenfolge1”表示的字符串(##STRING_ITEM),
必须将“##TODO”替换为“string1”。

提示:翻译文件的以下部分不应在没有详细信息的情况下进行修改:语言块、标志块、位置信息、原始文本。

4-34 CoDeSysV2.3版本
4 - 单个组件

将 Project 翻译成另一种语言
“项目”“翻译成另一种语言”菜单中的此命令将打开“将项目翻译成另一种语言”对话框。

用于将项目翻译成另一种语言的对话框

如果使用适当的翻译文件,则可以将当前项目翻译成另一种语言。
注意: 如果要以最初创建项目时所使用的语言保存项目版本,请在翻译之前以其他名称保存项目的副本。
翻译过
程无法撤消。

在这种情况下,考虑仅以另一种语言显示项目的可能性(在此显示版本中,但是不可编辑)。

在“翻译文件”字段中,提供要使用的翻译文件的路径。通过按搜索,您可以访问标准的 Windows 文件选


择对话框。
目标语言字段 包含在翻译文件中输入的语言标识符列表,您可以从中选择所需的目标语言。

OK在指定的翻译文件的帮助下开始将当前项目翻译成选定的目标语言。在翻译过程中,将显示一个进度
对话框以及错误消息(如果有)。翻译后,对话框和项目的所有打开的编辑器窗口都将关闭。

“取消”(Cancel)将关闭对话框,而不修改当前项目。
如果翻译文件包含错误条目,则在按下 OK 后会显示一条错误消息,给出文件路径和错误行,例如:
“[C:\Programs\CoDeSys\projects\visu.tlt (78)];预计翻译文本”

注意:请注意可视化中文本的特殊性;请参阅上文“创建翻译文件”。

“显示项目已翻译”
如果项目有可用的翻译文件,则可以显示其中定义的语言版本之一,而不会覆盖项目的原始语言版本。

(将这种可能性与项目的“真实”翻译进行比较,您可以使用命令“翻译项目”来完成,这意味着创建项目
的新版本!
菜单“项目”中的“翻译此项目”命令“翻译成另一种语言”将打开“将项目翻译成另一种语言”对话框。

用于以其他语言显示项目的对话框

在“翻译文件”字段中,插入要使用的翻译文件的路径。您可以通过标准对话框获得帮助,以打开通过“浏
览”按钮打开的文件。

CoDeSysV2.3版本 4-35
管理项目...

在“目标语言”字段中,您可以找到一个选择列表,除了“<鯦语>”条目外,该列表还提供由当前设置的翻
译文件定义的语言标识符。原始语言是当前与项目一起保存的那种语言。(它只能通过“项目”“翻译”进
行更改。选择一种可用语言,然后单击“确定”确认对话框。因此,项目将以所选语言显示,但无法在此视
图中编辑!

如果要更改回以原始语言查看项目,请使用命令“切换翻译”。

注意:请注意可视化中文本的特殊性;请参阅上文“创建翻译文件”。

“切换翻译”
如果您通过命令“显示已翻译的项目”以另一种语言显示项目(不可编辑),您现在可以使用菜单“项目”“
翻译(翻译成另一种语言)”的命令“切换翻译”在此语言版本和(可编辑的)原始版本之间切换。

注意:请注意可视化中文本的特殊性;请参阅上文“创建翻译文件”。

'项目''文档'
此命令允许您打印整个项目的文档。
项目文档对话框

完整文档的要素包括:
POU,
文档的内容,
数据类型,
可视化,
资源(全局变量、变量配置、采样跟踪、PLC 配置、任务配置、观察和配方管理器)

POU 和数据类型的调用树,以及交叉引用列表。

4-36 CoDeSysV2.3版本
4 - 单个组件

对于最后两项,项目必须已正确构建。仅打印对话框中以蓝色突出显示的区域。

如果要选择整个项目,请在第一行中选择项目的名称。
另一方面,如果您只想选择单个对象,请单击相应的对象或使用箭头键将虚线矩形移动到所需的对象上。
在其符号前面有加号的对象是包含其他对象的组织对象。单击加号后,组织对象将展开,单击生成的减号
后,可以再次将其关闭。选择组织对象时,也会选择所有相关对象。通过按 <Shift> 键可以选择一组对
象,按 <Ctrl> 键可以选择多个单独的对象。

做出选择后,单击“确定”。此时将显示“打印”对话框。您可以使用“文件”“打印机设置”确定要打印的
面布局。

'Project''导出'
使用CoDeSys,可以导出或导入项目。这允许您在不同的IEC编程系统之间交换程序。

IL、ST 和 SFC 中的 POU 采用标准化交换格式(IEC1131-3 的通用元件格式)。对于 LD 和 FBD 中的


POU 以及其他对象,CoDeSys 有自己的归档格式,因为 IEC11313 中没有文本格式。

所选对象将写入 ASCII 文件。


可以导出 POU、数据类型、可视化效果和资源。此外,可以导出库管理器中的条目,即库的链接信息(
不是库本身!

重要提示: 如果图形编辑器中的注释包含单引号('),则重新导入导出的 FBD 或 LDPOU 会导致错误,因为这将被


解释为字符串的开头!

在对话框窗口中进行选择后(与“项目”“文档”相同),您可以决定是要将所选零件导出到一个文件还是
导出为单独的文件,每个对象一个文件。打开或关闭选项“每个对象一个文件”,然后单击“确定”。此时
将显示用于保存文件的对话框。输入扩展名为“.exp”的文件名,分别是对象导出文件的目录,然后以文件
名 <objectname.exp> 保存在那里。

'Project''导入'
在出现的用于打开文件的对话框中,选择所需的导出文件。
数据将导入到当前项目中。如果同一项目中已存在同名对象,则会出现一个对话框,其中包含问题“是否
要替换它?”:如果回答“是”,则项目中的对象将替换为导入文件中的对象。如果回答“否”,则新对象
的名称将收到下划线和数字(“_0”、“_1”、..)作为补充。使用“是”、“全部”或“否”,将对所有对象
执行所有这些操作。

如果导入信息以链接到库,则该库将被加载并附加到库管理器中列表的末尾。如果库已加载到项目中,则
不会重新加载。但是,如果正在导入的导出文件显示库的存储时间不同,则库名称在库管理器中标有
“*”(例如 standard.lib*30.3.9911:30:14),类似于加载项目。如果找不到库,则会显示一个信息对
话框:“找不到库 {<path>\}<name><date><time>”,就像加载项目时一样。

在消息窗口中,将注册导入。

'项目'' 子进口'
在子菜单“SiemensImport”中,您可以找到用于从 Siemens-STEP5 文件导入 POU 和变量的命令。

CoDeSysV2.3版本 4-37
管理项目...

可以使用以下命令:
“从 SEQ 符号文件导入”
“从 S5 文件导入”
有关 子进口的更多详细信息,请参阅附录 G。

'项目''比较'
此命令用于比较两个项目,或将一个项目的实际版本与最后保存的项目进行比较。

概述:

定义:实际项目: 您当前正在处理的项目。
参考项目: 项目,应与实际项目进行比较。
比较模式: 在此模式下,项目将显示在命令之后
“Project”“Compare”已执行。
单位: 可以比较的最小单位。可以是一行(声明
editor、STeditor、ILeditor)、网络(FBD 编辑器、LD 编辑器)或
element/POU(CFC 编辑,SFC 编辑器)。

在比较模式下,实际项目和参考项目将显示在二部分窗口中。已发现差异的POU的名称用颜色标记。对
于编辑器 POU,POU 的内容也以相对方式显示。结果和比较模式下的呈现方式取决于:1.比较运行激活
了哪些过滤器,影响了比较过程中对空格和注释的考虑;2. 线路、网络或元素内的修改是否被评估为POU
的全新插入。

对于单个差异或“所有同等标记”的差异,可以接受参考项目的版本。接受意味着引用项目的版本被转移到
实际项目中。

请注意:在比较模式下(参 状态栏:COMPARE),项目无法编辑!

执行比较
执行命令“Project”“Compare”后,将打开“项目比较”对话框:
项目比较对话框

在要比较的Project中插入引用项目的路径。如果要使用标准对话框打开项目,请按按钮。如果插入实际
项目的名称,则项目的当前版本将与上次保存的版本进行比较。

如果项目在 ENI 数据库中处于源代码控制之下,则可以将本地版本与数据库中的实际版本进行比较。对


于此激活选项,与ENI-Project比较。
可以激活以下有关比较的选项:
忽略空格:不会检测到由不同数量的空格组成的差异。

4-38 CoDeSysV2.3版本
4 - 单个组件

忽略评论:不会检测到评论中的差异。
忽略属性:不会检测到对象属性的差异。
比较差异:如果POU 中的一条线、一个网络或一个元素被修改,在比较模式下,它将显示在与其他项目
版本正对面的二分窗口中(标记为红色, 下文)。如果该选项被停用,相应的行将在参考项目中显示
为“已删除”,在实际项目中显示为“已插入”(蓝色/绿色, 下文)。这意味着它不会直接显示在其他项
目中的同一行的对面。

例:
0005 行已在实际项目中修改(左侧)。
“反对差异”示例

按OK关闭“项目比较”对话框时,将根据设置执行比较。

比较结果的表示
首先,将打开名为“项目比较”的项目结构树,以显示比较结果。在这里,您可以选择特定的 POU 以详细
了解发现的差异。
1. 比较模式下的项目概述:
执行项目比较后,将打开一个二分窗口,其中显示处于比较模式的项目。在标题栏中,您可以找到项目路
径:“项目比较<实际项目的路径>-<参考项目的路径>”。实际项目在窗口的左半部分表示,参考项目在
右半部分表示。每个结构树在最上层位置显示项目名称,除此之外,它与对象管理器结构相对应。

不同的 POU 在结构树中用阴影、特定颜色和最终的附加文本标记:

红色:单位已被修改;在窗口的两个分区中以红色字鯦显示。
蓝色:单位仅在比较项目中可用;在实际项目的结构概述中,将在相应位置插入一个间隙。

绿色:单元仅在实际项目中可用;在实际项目的结构概述中,将在相应位置插入一个间隙。

黑色:未检测到差异的单位。
“(属性已更改)”:如果检测到 POU 属性存在差异,则此文本将附加到项目结构树中的 POU 名称。

CoDeSysV2.3版本 4-39
管理项目...

“(访问权限已更改)”:如果检测到 POU 的访问权限存在差异,则此文本将附加到项目结构树中的


POU 名称。
示例,比较模式下的项目

2. 比较模式下的 POU 内容:


通过双击结构概述中的一行(由于修改而标记为红色),将打开 POU。

如果是文本或图形编辑器 POU,它将在二分窗口中打开。参考项目的内容(右侧)与实际项目的内容(
左侧)设置相反。在比较过程中将考虑的最小单位是一条线(声明编辑器, ST , IL ),网络( FBD ,
LD)或元素(CFC,SFC)。如上所述,项目概述将使用相同的颜色。

示例,比较模式下的 POU:

4-40 CoDeSysV2.3版本
4 - 单个组件

如果不是编辑器 POU,而是任务配置、目标设置等,则可以通过双击项目结构中的相应行,在单独的窗
口中打开实际项目和参考项目的 POU 版本。对于这些项目 POU,不会显示差异的进一步详细信息。

在比较模式下工作
如果在二分窗口中,光标放在一条线上,表示差异,则菜单“附加”应退。上下文菜单提供以下命令的选
择,具体取决于是在项目概述中还是在 POU 中工作。

注意:不同项目部分(差异)或访问权限属性的验收只能从参考项目或实际项目进行,反之亦然。

'额外内容''下一个区别'
快捷键:<F7>
此命令在比较模式下可用(参 上文“项目”、“比较”)。
光标跳转到下一个单位,其中指示差异。(项目概述中的线,POU中的线/网络/元素)

'额外''以前的差异'
快捷键:<Shift><F7>
此命令在比较模式下可用(参 上文“项目”、“比较”)。
光标跳转到上一个单位,其中指示差异。(项目概述中的线,POU中的线/网络/元素)

'额外''接受更改'
快捷键:<空格>
此命令在比较模式下可用(参 上文“项目”、“比较”)。
对于与当前放置光标的单元相干的所有单元,并且具有相同类型的差异标记(例如后续行),实际项目将
接受参考项目的版本(仅在此方向上可能!相应的单位将显示在窗口的左侧(带有相应的颜色)。

如需接受特定单位的更改,请使用“接受更改的项目”。

'Extras''接受更改的项目'
快捷键:<Ctrl><空格键>
此命令在比较模式下可用(参 上文“项目”、“比较”)。
实际版本仅接受当前放置光标的单个单元(线、网络、元素)。相应的单位将显示在窗口的左侧(带有相
应的颜色)。

如果对于由于内容更改而在结构树中标记为红色的 POU,则接受此更改,则 POU 将在实际项目中用黄


色表示。由于“接受更改的项目”,仅在当前项目中可用的 POU 也将以黄色表示。由于“接受更改的项目”
而从当前项目中删除的 POU 将在参考项目中以黄色表示。

'Extras''接受属性'
此命令在比较模式下可用(参 上文“项目”、“比较”)。
当前放置光标的 POU 的对象属性将被实际项目接受,因为它们是在参考版本中设置的(只能在这个方向
上接受!

CoDeSysV2.3版本 4-41
管理项目...

'Extras''接受访问权限'
此命令仅在项目概述中在比较模式下可用:(请参阅上面的“项目”“比较”)。

实际项目中将接受当前放置光标的 POU 的对象访问权限,因为它们是在参考版本中设置的。

'Project''合并'
使用此命令,您可以将对象(POU、数据类型、可视化效果和资源)以及指向其他项目中的库的链接合
并到您的项目中。
发出命令后,首先会出现用于打开文件的标准对话框。在其中选择文件后,将出现一个对话框,您可以在
其中选择所需的对象。选择按照 'Project''Document' 的描述进行。

如果项目中已存在同名对象,则新对象的名称将添加下划线和数字(“_1”、“_2”......

'项目''项目信息'
在此菜单项下,可以保存有关项目的信息。发出命令后,将打开“项目信息”对话框。

将显示以下项目信息:
文件名
目录路径
最近更改的时间(更改日期)
此信息无法更改。
用于输入项目信息的对话框

此外,您还可以添加以下信息:
A 目名称:
请注意:如果目标系统支持,当通过命令“文件”“从 PLC 打开项目”加载项目时,此标题将自动建
议为项目文件名(在这种情况下,将打开保存文件的对话框)。

4-42 CoDeSysV2.3版本
4 - 单个组件

作者姓名,
版本号,以及
项目描述。
此信息是可选的。当您按下“统计”按钮时,您会收到有关项目的统计信息。

它包含诸如 POU 的数量、数据类型以及上次编译时跟踪的局部和全局变量等信息。

项目统计示例

如果您处理的是 CoDeSys 项目,则“许可证信息”按钮将可用,该项目已通过命令“文件”“另存为...”保


存了许可信息。在这种情况下,该按钮将打开“编辑许可信息”对话框,您可以在其中修改或删除许可证(
请参阅第 9 章“CoDeSys 中的许可证管理”)

如果在“选项”对话框的“加载并保存”类别中选择“询问项目信息”选项,则在保存新项目或以新名称保
存项目时,将自动调用项目信息对话框。

'Project''全球搜索'
使用此命令,您可以在 POU、数据类型或全局变量的对象中搜索文本的位置。

输入命令后,将打开一个对话框,您可以在其中选择所需的对象。选择与“项目”“文档”描述中一样进
行。
如果单击“确定”确认选择,则将打开“搜索”的标准对话框。这出现

当通过菜单栏中的符号调用“全局搜索”命令时,立即进行搜索;然后在项目的所有可搜索部分自动执行搜
索。最近输入的搜索字符串可以通过“搜索”字段的组合框进行选择 。如果在对象中找到文本字符串,则
会将该对象加载到相应的编辑器或库管理器中,并显示找到该字符串的位置。找到的文本的显示以及搜索
和查找下一个功能的行为类似于命令“编辑”“搜索”。

如果选择“在消息窗口中”按钮,则在消息窗口中以表格形式逐行列出搜索的一系列符号出现在所选对象中
的所有位置。之后,将显示找到的位置数量。

如果未打开报告窗口,则将显示该窗口。对于找到的每个位置,将显示以下内容:

对象名称
在声明(Decl)或 POU 线路的实现(Impl)部分中查找的位置和网络编号(如果有)

CoDeSysV2.3版本 4-43
管理项目...

文本编辑器中的整行
图形编辑器中的完整文本元素
显示搜索结果的消息窗口

如果将鼠标双击消息窗口中的某一行或按<Enter>,编辑器将打开并加载对象。标记了对象中的相关线。
您可以使用功能键 <F4> 和 <Shift>+<F4> 在显示行之间快速跳转。

'Project' 'Global Replace'


使用此命令,您可以在 POU、数据类型或全局变量的对象中搜索文本的位置,并将此文本替换为另一个
文本。其执行方式与“项目”、“全局搜索”或“编辑”、“替换”相同。但是,这些库不提供供选择,并且无
法在消息窗口中显示。

结果将显示在消息窗口中。

'项目''检查'
此命令提供用于检查项目语义正确性的命令。将考虑最近汇编的状态。为了获得最新的检查结果,您应该
在进行任何更改后重新编译项目。消息窗口中将显示相应的警告。

将打开一个列出以下命令的子菜单:
未使用的变量
重叠的内存区域
并发访问
输出具有多个写入访问权限
结果将显示在消息窗口中。
请注意:在项目选项的“构建”类别中,您可以定义这些语义检查,以便在每次项目编译时自动完成。

未使用的变量
“项目”“检查”菜单中的这个函数( 上文)搜索已声明但未在程序中使用的变量。它们由 POU 名称和行
输出,例如:PLC_PRG (4) –var1。不检查库中的变量。

结果将显示在消息窗口中。

重叠的内存区域
“项目”“检查”菜单中的这个函数( 上文)测试在通过“AT”声明分配变量时,是否在特定的内存区域出
现了重叠。例如,在分配变量“var1AT%QB21: INT”和“var2AT%QD5: DWORD”时会发生重叠,
因为它们都使用字节 21。然后,输出如下所示:%QB21 由以下变量引用:

4-44 CoDeSysV2.3版本
4 - 单个组件

PLC_PRG ( 3 ) : %QB21 处 的 var1


PLC_PRG (7):%QD5 处的var2

结果将显示在消息窗口中。

输出具有多个写入访问权限
“项目”“检查”菜单的此功能( 上文)搜索单个项目在多个位置获得写入访问权限的内存区域。然后,
输出如下所示:
%QB24 写入以下位置:PLC_PRG (3):%QB24PLC_PRG。POU1 (8):%QB24

结果将显示在消息窗口中。

并发访问
“项目”“检查”菜单中的此功能( 上文)搜索在多个任务中引用的IEC地址的内存区域。此处不区分读取
和写入访问。例如,输出如下:

%MB28 在以下任务中引用:任务 1–PLC_PRG (6):%MB28[只读访问]任务 2–POU1。操作(1) %MB28[


写入访问]

结果将显示在消息窗口中。

用户组
在 CoDeSys 中,最多可以设置八个用户组,这些用户组对 POU、数据类型、可视化和资源具有不同的
访问权限。可以建立单个对象或所有对象的访问权限。只有特定用户组的成员才能打开项目。此类用户组
的成员必须通过密码来标识自己。

用户组的编号从 0 到 7,其中组 0 具有管理员权限,即只有组 0 的成员才能确定所有组和/或对象的密码


和访问权限。
启动新项目时,所有密码最初都是空的。在为 0 组设置密码之前,用户将自动以 0 组成员的身份进入项
目。
如果在加载项目时存在用户组 0 的密码,则在打开项目时将要求所有组输入密码 。为此,将显示以下对
话框:
密码输入对话框

在对话框左侧的“用户组”组合框中,输入您所属的组,并在右侧输入相关密码。按OK。如果密码与保存
的密码不一致,则会显示以下消息:

“密码不正确。”
只有输入了正确的密码,才能打开项目。
使用命令“用户组的密码”可以分配密码,使用“对象”的“访问权限”可以定义单个对象或所有对象的权
限。

CoDeSysV2.3版本 4-45
管理项目...

“Project”:“用户组密码”
使用此命令,您可以打开用户组密码分配对话框。此命令只能由组 0 的成员执行。发出命令后,将显示
以下对话框:

密码分配对话框

在左侧组合框“用户组”中,可以选择该组。在密码字段中输入组所需的密码。对于每个键入的字符,字段
中会出现一个星号(*)。您必须在“确认密码”字段中重复相同的密码。单击“确定”关闭每个密码输入后
的对话框。如果您收到以下消息:

“密码与确认不一致”,
然后,您在两个条目之一中犯了键入错误。在这种情况下,重复这两个条目,直到对话框关闭而不显示消
息。
然后,如有必要,通过再次调用该命令为下一个组分配密码。
重要提示:如果未将密码分配给所有用户组,则可以通过未分配密码的组来打开项目!

使用命令“对象”、“访问权限”为单个对象或所有对象分配权限。
关于项目的保护,还考虑以下几点:
- 用于访问和写保护的密码(第 4.2 章“密码选项”)
- 在项目保存时对项目进行加密(第 4.3 章“文件”“另存为”)。

'Project' 'Data Base Link'


仅当您在“项目源代码管理”类别的项目选项对话框中激活了“使用源代码管理(ENI)”选项时,此菜单项
才可用。附加了一个子菜单,您可以在其中找到以下命令,用于处理当前连接的 ENI 数据库中的对象和
项目:

登录(用户登录弹性网卡服务器)
如果在对象管理器中标记了对象,并且执行了“数据库链接”命令(从上下文菜单的鼠标右键),则以下
命令将可用于执行相应的数据库操作。如果用户之前没有成功登录到ENI服务器,则“数据库登录”对话框
将自动打开,并且在登录成功之前不会执行所选命令:

定义
获取最新版本
退房
登记
撤消检出
显示差异
显示版本历史记录如

4-46 CoDeSysV2.3版本
4 - 单个组件

果激活了“项目”菜单中的“数据库链接”命令,则将提供其他菜单项,这些菜单项涉及项目的所有对象:

多重定义
获取所有最新版本
多次签出
多次签入
多次撤消检出
项目版本历史
标签版本
添加共享对象
刷新状态
请参阅以下对象的状态及其在数据库中的处理如何在对象管理器中显示:

灰色阴影图标:
对象存储在数据库(源代码管理)中

对象名称前面的绿色复选:

对象在当前打开的项目中检出。

对象名称前面的红叉:对象当前已被其
他用户签出。

<R>在对象名称后面:对象只能读取,
不能编辑。

请注意:某些对象(任务配置、采样跟
踪、PLC 配置、目标设置、监视和配方
管理器)默认分配有 <R>只要它们没有
被检出。这意味着,一旦您开始编辑对
象,系统就不会自动询问您是否应该检
出该对象;这并不一定意味着您无法编辑
对象。如果没有写入权限,则命令“签
出”将不可用。

CoDeSysV2.3版本 4-47
管理项目...

登录
此命令将打开“登录”对话框,您可以在其中通过 ENI 服务器输入 ENI 数据库的访问数据。访问数据还必
须在 ENI 服务器(ENIAdmin、用户管理)中定义,并且根据当前使用的数据库,还必须在数据库的用户
管理中定义。执行命令后,首先将打开类别“项目对象”的登录对话框。

将显示以下项目:
项目对象:
主机:运行 ENI 服务器的计算机的地址(必须与“项目源代码管理”的项目选项对话框中“TCP/IP 地址”字
段中的条目匹配)。
项目:数据库项目的名称(必须与“项目源代码管理”/类别“项目对象”的项目选项对话框中“项目名称”字
段中的条目匹配)。
“登录”对话框

凭据:
插入用户名和密码。
当选项“用作此项目的默认值”被激活时,上面输入的访问数据将自动用于实际 CoDeSys 项目与有关实
际类别对象的数据库之间的任何进一步通信。

按 OK 确认设置。对话框将关闭,并自动打开“共享对象”的登录对话框。按照与“项目对象”相同的方式
输入访问数据,然后单击“确定”进行确认。在第三个登录对话框中执行相同的操作,该对话框将为“编译
文件”类别打开。

如上所述,在成功登录之前尝试访问数据库后,登录对话框将始终打开。

注意:如果要将访问数据与项目一起保存,请在项目选项中激活选项“保存ENI凭据”,类别为“加载并保存”。

定义
命 令 : 'Project' 'Data Base Link' 'Define'
在这里,您可以定义当前在对象管理器中标记的对象是应保留在数据库中,还是仅保留在项目中的本地。
将打开一个对话框,您可以在其中选择两个数据库类别“项目”或“共享对象”之一,或类别“本地”。

数据库中管理的所有对象的图标将在对象管理器中以灰色阴影显示。

4-48 CoDeSysV2.3版本
4 - 单个组件

获取最新版本
命令:“项目”数据库链接“获取最新版本”
对象管理器中标记的对象的当前版本将从数据库中复制,并将覆盖本地版本。与“检出”操作相反,该对象
不会为数据库中的其他用户锁定。

退房
命 令 : 'Project' 'Data Base Link' 'Check Out'
在对象管理器中标记的对象将从数据库中检出,并由此锁定其他用户。

执行命令时,用户将看到一个对话框“检出对象”。可以在其中添加注释,该注释将存储在数据库中对象的
版本历史记录中。换行符由 <Ctrl>+<Enter> 插入。如果对象的版本与本地项目中的版本不同,则会显示
相应的消息,用户可以决定是否仍应检出该对象。

单击“确定”关闭对话框后,检出的对象将在本地项目的对象管理器中标记为绿色复选标记。对于其他用
户,它将显示为红叉,并且他们无法编辑。

登记
命 令 : 'Project' 'Data Base Link' 'Check In'
在对象管理器中标记的对象将被检入到数据库中。因此,将在数据库中创建对象的新版本。无论如何,旧
版本都会保留。
执行命令时,用户将看到一个对话框“签入对象”。可以添加注释,该注释将存储在数据库中对象的版本历
史记录中。换行符由 <Ctrl>+<Enter> 插入。

单击“确定”关闭对话框后,将删除对象管理器中对象名称前面的绿色复选标记。

撤消检出
命 令 : 'Project' 'Data Base Link' 'Undo Check Out'
使用此命令可取消当前在“对象管理器”(ObjectOrganizer)中标记的对象的“检出”(Checkingout)。
因此,在当地进行的对对象的修改也将被取消。不会出现任何对话框。该对象的未更改的最后一个版本将
保留在数据库中,其他用户将可以再次访问它。对象管理器中对象名称前面的红叉将消失。

显示差异
命 令 : 'Project' 'Data Base Link' 'Show Differences'
用户当前在CoDeSys中打开的对象将显示在一个窗口中,该窗口分为两部分。在那里,当前由本地用户
编辑的本地版本将与数据库中保存的最后一个(实际)版本相对。版本的差异将按照项目比较中的描述进
行标记(参 “项目”,“比较”)。

显示版本历史记录
命 令 : 'Project' 'Data Base Link' Show Version History'
对于对象管理器中当前标记的对象,将打开一个对话框“<对象名称>的版本历史记录。其中列出了对象的
所有版本,这些版本已签入到数据库中或已在此处标记。

提供以下信息:

CoDeSysV2.3版本 4-49
管理项目...

版本:已逐个签入的对象版本的数据库特定编号。标记的版本没有版本号,但由标签图标标记。

用户:执行签入或标记操作的用户的名称
日期:操作的日期和时间戳
操作: 已执行的操作的类型。可能的类型:“created”(对象已首次签入数据库)、“checkedin”(对象
的所有签入,不包括第一个)和“labeledwith<label>(已为此版本的对象分配了标签)

显示版本历史记录的对话框

按钮:
关闭:对话框将关闭。
显示:表中当前标记的版本将在 CoDeSys 的窗口中打开。标题栏显示:“ENI:<数据库中项目的名称>/<
对象名称>
详细信息:“版本历史记录详细信息”对话框将打开:
文件(项目名称和数据库中的对象)、版本( 上文)、日期( 上文)、用户( 上文)、注释(在对
象签入或标记对象时插入的注释)。使用按钮 Next resp.“上一个”跳转到“..”对话框的表中下一个或上一
个条目的详细信息窗口。

获取最新版本:表中标记的版本将加载到 CoDeSys 中,并覆盖本地版本。

差异: 如果在表中仅标记了对象的一个版本,则此命令将导致此版本与最新(实际)数据库版本进行比
较。如果标记了两个版本,则将比较这些版本。差异显示在二分窗口中,就像在项目比较中一样。

重置版本:
表中标记的版本将设置为最新版本。以后签入的所有版本都将被删除!这对于还原对象的早期
状态非常有用。

仅标签:如果激活此选项,则表格中将仅显示对象的那些版本,这些版本由标签标记。

“仅标签”选项下方的选择框:在这里,您可以找到对当前项目的对象执行过任何数据库操作的所有用户
的名称。如果您想获取有关所有用户或仅针对某个用户的版本历史记录,请选择“全部”或其中一个名称。

4-50 CoDeSysV2.3版本
4 - 单个组件

多重定义
命 令 'Project' 'Data Base Link' 'Multiple Define'
如果要一次将多个对象分配给某个数据库类别,请使用此命令。“属性”对话框将打开,如命令“定义”所
述。选择所需的类别,然后单击“确定”关闭对话框。之后,将打开“ENI-Selection”对话框,列出项目的
所有 POU,这些 POU 被考虑用于所选类别(例如:如果您选择类别“共享对象”,则选择窗口将仅提供“
资源”选项卡的 POU)。POU 以符合对象管理器的树结构显示。选择所需的 POU,然后单击“确定”进行
确认。

获取所有最新版本
命 令 'Project' 'Data Base Link' 'Get All Latest Versions'
将从数据库调用当前打开的项目的每个对象的最新版本,该对象保持在源代码管理之下。请考虑以下几
点:
如果在此期间已将其他对象存储到数据库项目文件夹中,则这些对象现在将添加到 CoDeSys 中的本地项
目中。
如果在此期间在数据库中删除了对象,则这些对象不会在本地项目中删除,但它们将自动分配到“本地”类
别。
仅当“共享对象”类别的对象在本地项目中已可用时,才会调用这些对象的最新版本。有关详细信息,请参
阅命令“获取最新版本”。

多次签出
命 令 'Project' 'Data Base Link' 'Multiple Check Out'
您可以一次检出多个对象。为此,将打开“ENI-Selection”对话框,列出项目的所有 POU。选择应签出
的内容,然后单击“确定”进行确认。有关详细信息,请参阅命令“签出”。

多次签入
命 令 'Project' 'Data Base Link' 'Multiple Check In'
您可以一次检入多个对象。为此,将打开“ENI-Selection”对话框,列出项目的所有 POU。选择应签入
的那些,然后单击“确定”进行确认。有关详细信息,请参阅命令“签入”。

多次撤消检出
命令“Project”“”数据库链接“”撤消多个检出”
您可以一次撤消多个对象的检出操作。为此,将打开“ENI- 选择”对话框,列出项目的所有 POU。选择
要取消签出的选项,然后单击“确定”进行确认。有关详细信息,请参阅命令“撤消检出”。

项目版本历史
命令 'Project''DataBaseLink''Project 版本历史记录
如果所选数据库系统支持该功能,则可以使用此命令查看当前打开的项目的版本历史记录。

将打开 “< 数据库项目名称 > 的历史记录 ” 对话框。它按时间顺序显示对项目的特定对象执行的操作(创


建、签入、标记)。对象总数显示在版本历史记录后面。该对话框可以像命令“显示版本历史记录”中的描
述一样处理,但请注意以下几点:

“重置版本”命令仅适用于单个对象。
命令 'Getlatestversion' 表示 当前标记对象版本的所有对象都将被调用到本地项目!这意味着,
CoDeSys中的对象将被旧版本覆盖。但是:在旧版本中还不是项目一部分的本地对象不会从本地项目中
删除!如果调用了包含共享对象的标记版本,则用户将看到一个对话框,在其中他可以决定是否也应该调

CoDeSysV2.3版本 4-51
管理项目...

用这些共享对象。

标签版本
命 令 'Project' 'Data Base Link' 'Label Version'
此命令用于在项目的每个对象的实际版本上放置一个“标签”,以便以后可以准确地调用此项目版本。将打
开一个对话框“标签<数据库项目名称>。插入标签名称(Label)(例如“发布版本”)和可选的注释。单
击“确定”进行确认后,对话框将关闭,标签和“用<标签名称>标记”的操作将显示在版本历史记录表中,
以及单个对象的历史记录中,就像在项目历史记录中一样。作为项目一部分的共享对象也将获得该标签。
项目的标记版本不会获得版本号,而只是在“版本”列中用标签图标标记。如果在“版本历史记录”对话框
中激活了“仅标签”选项,则只会列出已标记的版本。

对话框“标记项目<数据库项目名称>

添加共享对象
命 令 'Project' 'Data Base Link' 'Add Shared Objects'
如果您明确希望将数据库类别为“共享对象”的新对象添加到 CoDeSys 中本地打开的项目,请使用此命
令。对于类别为“项目对象”的对象,这不是必需的,因为命令“获取(所有)最新版本”会自动调用在数
据库项目文件夹中找到的所有对象,即使有一些对象在本地项目中尚不可用。但是对于“共享对象”类别的
对象,在这种情况下,将只调用那些在本地项目中已经可用的对象。

因此,执行命令“添加共享对象”以打开“浏览ENI”对话框。窗口右侧的列表显示了当前在左侧列表中选择
的数据库文件夹中可用的所有对象。选择所需的对象,然后按OK或双击该条目,将对象插入到当前打开
的 CoDeSys 项目中。

“浏览 ENI”对话框

4-52 CoDeSysV2.3版本
4 - 单个组件

刷新状态
命 令 'Project' 'Data Base Link' 'Refresh Status'
使用此命令可以更新对象管理器中的显示,以便您可以查看与项目的源代码管理相关的对象的实际状态。

4.4 管理项目中的对象...
在以下章节中,请参阅书籍“管理有关如何使用对象以及可用于跟踪项目(文件夹、调用树、交叉引用列
表,..的帮助的信息)。

对象
POU、数据类型、可视化和资源全局变量、变量配置、采样跟踪、PLC 配置、任务配置以及观察和配方
管理器都定义为“对象”。部分涉及为构建项目而插入的文件夹。项目的所有对象都位于对象管理器中。

如果在对象管理器中的 POU 上短时间按住鼠标指针,则 POU(程序、功能或功能块)的类型将显示在


工具提示中。对于全局变量,工具提示显示关键字(VAR_GLOBAL, VAR_CONFIG)。

通过拖放,您可以在对象类型中移动对象(以及文件夹,请参阅“文件夹”)。为此,请选择对象并通过按
住鼠标左键将其移动到所需位置。如果转换导致名称冲突,则新引入的元素将通过附加的序列号(例如
“Object_1”)进行唯一标识。

文件夹
为了跟踪较大的项目,您应该将 POU、数据类型、可视化和全局变量系统地分组到文件夹中。

您可以根据需要设置任意级别的文件夹。如果加号位于关闭文件夹符号的前面,则此文件夹包含对象和/
或其他文件夹。单击加号后,将打开文件夹并显示从属对象。单击减号(已替换加号),可以再次关闭文
,
件夹。在上下文菜单中,您可以找到具有相同功能的命令“展开节点”和“折叠节点”。

使用拖放,您可以在其对象类型中移动对象以及文件夹。为此,选择对象并用鼠标左键将其拖动到所需位
置。
您可以使用“新建文件夹”命令创建更多文件夹。

注意:文件夹对程序没有影响,而只是用于清晰地构建项目。

对象管理器中的文件夹示例

CoDeSysV2.3版本 4-53
管理项目中的对象...

“新文件夹”
使用此命令,将新文件夹作为结构对象插入。如果已选择文件夹,则会在该文件夹下方创建新文件夹。否
则,它将在同一级别上创建。如果选择了某个操作,则新文件夹将插入到该操作所属的 POU 级别。

当选择了对象或对象类型并且您按下了鼠标右键或 <Shift>+<F10> 时,将显示包含此命令的对象管理器


的上下文菜单。
新插入的文件夹最初具有“新建文件夹”的名称。请遵守以下文件夹命名约定:

层次结构中同一级别的文件夹必须具有不同的名称。不同级别的文件夹可以具有相同的名称。

文件夹不能与位于同一级别的对象同名。
如果同一级别上已经存在名称为“新建文件夹”的文件夹,则每个具有此名称的文件夹都会自动收到一个附
加的序列号(例如“新建文件夹 1”)。无法重命名为已在使用的名称。

“展开节点”“折叠节点”
使用“展开”命令,对象将明显展开,这些对象位于所选对象中。使用“折叠”(Collapse)时,将不再显示
从属对象。
对于文件夹,您可以通过双击或按 <Enter> 打开或关闭它们。
当选择了对象或对象类型并且您按下了鼠标右键或 <Shift>+<F10> 时,将显示包含此命令的对象管理器
的上下文菜单。

“Project”:“对象删除”:
快捷方式:<删除>
使用此命令,当前选定的对象(POU、数据类型、可视化或全局变量)或包含从属对象的文件夹将从对
象管理器中删除,从而从项目中删除。可以通过命令“编辑”“撤消”来撤消对象的删除。

您可以使用命令“编辑”“撤消”取回已删除的对象。
如果对象的编辑器窗口已打开,则该窗口将自动关闭。
如果使用命令“编辑”“剪切”删除,则对象将停放在剪贴板上。

'Project''对象添加'
快捷键:<插入>
使用此命令,您可以创建一个新对象。对象的类型(POU、数据类型、可视化或全局变量)取决于对象
管理器中选定的寄存器卡。考虑到在这样做时,模板可能会用于“全局变量”、“数据类型”、“函数”、“功
能块”或“程序”类型的对象,请参阅下面的“另存为模板”一章。

在出现的对话框中输入新 POU 的名称。请记住,对象的名称可能尚未被使用。

请注意以下限制:
POU 的名称不能包含任何空格
A 个 POU 不能与另一个 POU 具有相同的名称、数据类型,并且不应与可视化效果相同,以避免可视化
更改问题。
A 个数据类型不能接收与另一个数据类型或 POU 相同的名称。
A 个全局变量列表不能与另一个全局变量列表同名。
一个操作不能与同一 POU 中的另一个操作同名。

4-54 CoDeSysV2.3版本
4 - 单个组件

A 个可视化不能与另一个可视化具有相同的名称,也不应与 POU 具有相同的名称,以避免可视化更改出


现问题。
在所有其他情况下,允许使用相同的命名。因此,例如,属于不同 POU 的操作可以具有相同的名称,并
且可视化效果可能与 POU 具有相同的名称。
对于 POU,还必须选择 POU 类型(程序、功能或功能块)及其编程语言。“程序”是POU 的“类型”的
默认值,而 POU 的“语言”是最近创建的 POU 的默认值。如果创建了函数类型的 POU,则必须在返回
类型
文本输入字段中输入所需的数据类型。这里允许所有基本和定义的数据类型(数组、结构、枚举、别
名)。可以使用输入辅助(例如通过 <F2>)。

用于创建新 POU 的对话框

按“确定”(只有在与上述命名约定没有冲突的情况下才有可能)后,将在“对象管理器”中设置新对象,
并显示相应的输入窗口。
如果使用命令“编辑”“插入”,则会插入剪贴板中的当前对象,并且不会显示任何对话框。如果插入对象
的名称与命名约定冲突( 上文),则通过添加附加前导下划线字符(例如“Rightturnsig_1”)的序列号
来使其唯一。

如果项目在 ENI 数据库中受源代码管理,则系统可能会(取决于“项目源代码管理”的“项目选项”对话框


中的设置)系统会自动询问您要在哪个数据库类别中处理新对象。在这种情况下,将打开“属性”对话框,
您可以在其中将对象分配给数据库对象类别之一。

“另存为模板”
“全局变量”、“数据类型”、“功能”、“功能块”或“程序”类型的对象可以保存为模板。在对象管理器中选
择 对 象 , 然 后 在 上 下 文 菜 单 中 选 择 命 令“另 存 为 模 板”(鼠标右键)。因此,每个相同类型的新对象将自
动初始获取模板的声明部分。将使用上次为对象类型创建的模板。

“Project”:“对象重命名”
快捷键:<空格键>
使用此命令,您可以为当前选定的对象或文件夹指定一个新名称。请记住,对象的名称可能尚未被使用。

如果对象的编辑窗口处于打开状态,则在更改名称时会自动更改其标题。

CoDeSysV2.3版本 4-55
管理项目中的对象...

用于重命名 POU 的对话框

'Project''对象转换'
此命令只能与 POU 一起使用。您可以将 SFC、ST、FBD、LD 和 IL 语言的 POU 转换为 IL、FBD 和
LD 三种语言之一。
为此,必须编译项目。选择要转换为的语言,并为 POU 指定一个新名称。请记住,POU 的名称可能尚
未使用。然后按OK,新的 POU 将添加到您的 POU 列表中。

转换期间发生的处理类型与适用于编译的处理类型相对应。

注意:无法转换操作。

用于转换 POU 的对话框

考虑以下可能性:在FBD编辑器中创建的POU,可以使用命令“Extras”“View”在KOP编辑器中显示和编
辑,而无需任何转换。

“Project”:“对象复制”:
使用此命令,将复制所选对象并将其保存为新名称。在出现的对话框中输入新对象的名称。请记住,对象
的名称可能尚未被使用。

另一方面,如果您使用了命令“编辑”“复制”,则对象将停放在剪贴板上,并且不会出现任何对话框。

用于复制 POU 的对话框

“Project”“对象打开”
快捷键:<Enter>
使用该命令,您可以将对象管理器中的选定对象加载到相应的编辑器中。如果带有此对象的窗口已打开,
则该窗口将获得焦点,移动到前台,现在可以进行编辑。

还有另外两种打开对象的方法:
在对象管理器中用鼠标双击所需对象,键入对象名

4-56 CoDeSysV2.3版本
4 - 单个组件

称的第一个字鯦。这将打开一个对话框,其中显示了具有此首字鯦的可用对象类型的所有对象。操作以符
号列出 <POU 名称>.<操作名称>。由于对象选择对话框中的对象是按字鯦顺序列出的,因此 POU 的操作
始终位于此 POU 的下方。选择所需的对象并单击“打开”按钮,以便在其编辑窗口中加载该对象。此后,
对象也会在对象管理器中标记,并且分层放置在对象上方的所有文件夹都将被展开。对象类型“仅全局变
量的资源”支持此选项。

用于选择要打开的对象的对话框

“Project”:“对象属性”
此命令将打开该对象的“属性”对话框,该对象当前在对象管理器中标记。

在“访问权限”选项卡上,您会发现与执行命令“项目”“对象访问权限”时相同的对话框

这取决于对象和项目设置,是否有其他选项卡可用于定义对象属性:

全局变量列表:
在“全局变量列表”选项卡中,显示了有关列表实现和网络变量数据交换的参数,可以在此处进行修改。如
果通过在对象管理器的 “ 全局变量 ” 部分中选择一个条目并执行命令 “ 添加对象 ” 来创建新的全局变量列
表,则也会打开此对话框。

可视化:
在“可视化”选项卡中,您可以为可视化对象定义(请参阅 CoDeSys 可视化用户手册),如何使用它:

用作:如果在目标设置中激活了“Web-Visualization”或“Target-Visualization”选项,则可以在此处选择对
象是否应成为Web可视化或目标可视化的一部分。

用作:激活以下设置之一,参考使用“主布局”的可能性:
可视化:对象用作普通可视化。
不带主布局的可视化::如果在项目中定义了主布局,则不会将其应用于此可视化对象。

主布局:该对象将用作主布局。默认情况下,主布局将始终位于可视化效果的前景中,但激活了“作
为背景”的选项。

CoDeSysV2.3版本 4-57
管理项目中的对象...

可视化对象属性的对话框

数据库连接:
如果项目连接到 ENI 数据库(参 “项目”“选项”“项目源代码管理”),则“数据库连接”选项卡将可用。
在这里,您可以显示和修改对象的当前分配到数据库类别之一,或者到“本地”类别。有关更多信息,请参
阅:“什么是弹性网卡”。

“Project”:“对象访问权限”
使用此命令,您可以打开用于将访问权限分配给不同用户组的对话框。将显示以下对话框:

用于分配访问权限的对话框

用户组 0 的成员现在可以为每个用户组分配单独的访问权限。有三种可能的设置:

无访问权限:用户组成员不得打开对象。
读取访问权限:用户组成员可以打开对象进行读取,但不能更改。
完全访问权限:对象可以由用户组的成员打开和更改。
这些设置可以引用对象管理器中当前选定的对象,或者,如果选择了“全部应用”选项,则引用项目的所有
POU、数据类型、可视化效果和资源。
如果将密码分配给用户组 0,则在通过密码请求打开项目时,将分配给用户组。

还请考虑分配有关可视化元素操作的访问权限的可能性(可视化、安全性)。

4-58 CoDeSysV2.3版本
4 - 单个组件

“Project”“添加操作”
此命令用于生成分配给对象管理器中选定块的操作。在出现的对话框中选择操作的名称以及应实现操作的
语言。

新操作将放置在对象管理器中的块下。块前面会出现一个加号。只需单击加号即可显示动作对象,并在块
前面出现减号。再次单击减号会导致操作消失,并再次出现加号。这也可以通过上下文菜单命令“展开节
点”和“折叠节点”来实现。

'Project''查看实例'
使用此命令,可以打开并显示在对象管理器中选择的功能块的实例。同样,双击对象管理器中的功能块即
可访问选择对话框,其中列出了功能块的实例以及实现。在此处选择所需的实例或实现,然后单击“确定”
进行确认。然后,所需项目将显示在窗口中。

请注意:如果要查看实例,首先必须登录!(该项目已编译完毕,没有错误,并以“在线”“登录”的方式下载到PLC
)。

用于打开实例的对话框

'Project''显示调用树'
使用此命令,您可以打开一个窗口,该窗口显示在对象管理器中所选对象的调用树。在此之前,项目必须
已编译完毕,没有任何错误(请参阅“全部重建”)。调用树包含对 POU 的调用和对数据类型的引用。

调用树示例

'Project''显示交叉引用'
使用此命令,您可以打开一个对话框,该对话框可以输出变量、地址或 POU 的所有应用点。为此,必须
编译项目(参 “项目”、“构建”)。
在名称中,输入要列出交叉引用的元素的名称(例如“ivar”)或路径(例如“PLC_PRG.fbi.ivar”)(可以
使用输入助手 <F2>)。如果指定“*”,则将考虑所有元素。此外,可以指定一个后跟“*”的部分字符串,
例如“INT_*”,以便列出所有元素,其名称以该字符串开头。

CoDeSysV2.3版本 4-59
管理项目中的对象...

如果项目自上次编译以来已更改,则对话框的标题栏中将显示术语“(未更新)”。在这种情况下,除非您
重新编译,否则最近创建的任何交叉引用都不会被视为列表中的交叉引用!

通过单击“交叉引用”按钮,您可以获得所有应用点的列表。除了POU和线路或网络号外,还指定了变量
名称和地址绑定(如果有)。

“域”空间显示这是局部变量还是全局变量;“访问”列显示变量是在当前位置进行“读取”还是“写入”。

如果元素在结构或数组的地址范围内使用,则此位置也将列出(例如:将 WORD 类型的变量 wVar 分配


给 %MW2。将 WORD 的 ARRAY[0..2] 类型的变量 arrVar 分配给 %MW0。如果调用 wVar 的交叉引用
列表,则会找到 arrVar[2])。结构也是如此。

如果在可视化中使用元素,则可视化名称将显示在“POU”列中。但是,请注意以下有关可视化中的占位
符的事项:交叉引用列表仅涉及已在可视化元素的配置中输入的变量名称字符串,而不是由于占位符替换
而在项目编译期间生成的任何名称!

当您选择交叉引用列表的一行并按下按钮“转到”或双击该行时,POU 将显示在其编辑器中的相应点。通
过这种方式,您可以跳转到所有应用点,而无需进行耗时的搜索。

为了简化处理,您可以使用“发送到消息窗口”按钮将当前交叉引用列表引入消息窗口,并从那里更改为相
应的 POU。
对话框和交叉引用列表的示例

直接从 POU 编辑器或监视列表中调用交叉引用列表:


交叉引用列表可以直接从编辑器(ST、FUP、KOP、AWL、CFC、AS)生成,该编辑器用于处理
POU,也可以从监视列表中生成。在这种情况下,在联机和脱机模式下,当在编辑器或监视列表中选择

4-60 CoDeSysV2.3版本
4 - 单个组件

变量时,上下文中的“附加”菜单中可以使用命令“显示交叉引用”。

4.5 一般编辑功能...
您可以在所有编辑器中使用以下命令,也可以在对象管理器中使用其中一些命令。这些命令位于菜单项

编辑”下方和用鼠标右键单击打开的上下文菜单中。

如果计算机上安装了 IntelliPoint 软件,则 CoDeSys 支持 MSIntelliMouse 的所有功能。在所有具有缩放


功能的编辑器中:要放大,请在滚动鼠标滚轮的同时按 <Ctrl> 键,在按住 <Ctrl> 键时减少向后滚动。

“编辑”“撤消”
快捷键:<Ctrl>+<Z>
此命令撤消最近在当前打开的编辑器窗口或对象管理器中执行的操作;重复使用可撤消所有操作,回到窗
口打开时。这适用于 POU、数据类型、可视化和全局变量的编辑器以及对象管理器中的所有操作。

使用“编辑”、“重做”,您可以恢复已撤消的操作。
注:“撤消”和“重做”命令适用于当前窗口。每个窗口都有自己的操作列表。如果要撤消多个窗口中的操作,则必须
激活相应的窗口。在对象管理器中撤消或重做时,焦点必须位于此处。

'编辑''重做'
快捷键:<Ctrl>+<Y>
使用当前打开的编辑器窗口或对象管理器中的命令,您可以恢复已撤消的操作(“编辑”、“撤消”)。

只要您之前执行过命令“撤消”,您也可以执行该命令
“重做”。

注意:命令“撤消”和“重做”适用于当前窗口。每个窗口都有自己的操作列表。如果要撤消多个窗口中的操作,则必
须激活相应的窗口。在对象管理器中撤消或重做时,必须躺在那里。

'编辑''剪切'

符号:快捷键:<Ctrl>+<X>或<Shift>+<Del>
此命令将当前所选内容从编辑器传输到剪贴板。所选内容将从编辑器中删除。

在对象管理器中,这同样适用于所选对象,因此并非所有对象都可以删除,例如 PLC 配置。

请记住,并非所有编辑器都支持 cut 命令,并且在某些编辑器中它的使用可能会受到限制。

选择的形式取决于各自的编辑:
在文本编辑器 IL、ST 和声明中,所选内容是字符列表。
在 FBD 和 LD 编辑器中,选择是网络数量,这些网络由网络编号字段中的虚线矩形或包含所有前面行、
框和操作数的框表示。
在 SFC 编辑器中,所选内容是被虚线矩形包围的一系列步骤的一部分。
为了粘贴剪贴板的内容,您可以使用命令“编辑”“粘贴”。在 SFC 编辑器中,您还可以使用命令
“Extras”、“Insertparallelbranch (right)”或“Extras”、“Pasteafter”等命令。为了将所选内容复制到

CoDeSysV2.3版本 4-61
常规编辑功能...

剪贴板而不将其删除,请使用命令“编辑”“复制”。
为了在不更改剪贴板的情况下删除所选区域,请使用命令“编辑”“删除”。

'编辑''复制'

符号:快捷键:<Ctrl>+<C>
此命令将当前所选内容从编辑器复制到剪贴板。这不会更改编辑器窗口的内容。

使用对象管理器,这同样适用于选定的对象,因此并非所有对象都可以复制,例如PLC配置。

请记住,并非所有编辑器都支持复制,并且某些编辑器可能会限制复制。
对于选择类型,适用与“编辑”、“剪切”相同的规则。
选择的形式取决于各自的编辑:
在文本编辑器(IL、ST 和声明)中,所选内容是字符列表。
在 FBD 和 LD 编辑器中,选择是网络数量,这些网络由网络编号字段中的虚线矩形或包含所有前面行、
框和操作数的框表示。
在 SFC 编辑器中,所选内容是被虚线矩形包围的一系列步骤的一部分。
为了粘贴剪贴板的内容,您可以使用命令“编辑”“粘贴”。在 SFC 编辑器中,您还可以使用命令
“Extras”、“Insertparallelbranch (right)”或“Extras”、“Pasteafter”等命令。
要删除所选区域并同时将其放在剪贴板上,请使用命令“编辑”“剪切”。

'编辑''粘贴'

符号:快捷键:<Ctrl>+<V>
将剪贴板的内容粘贴到编辑器窗口中的当前位置。在图形编辑器中,只有当插入产生正确的结构时,才能
执行该命令。
使用对象管理器,对象从剪贴板粘贴。
请记住,并非所有编辑器都支持粘贴,并且在某些编辑器中可能会限制其使用。
当前位置可以根据编辑器的类型进行不同的定义:
使用文本编辑器(IL、ST、声明)时,当前位置是闪烁光标(垂直线)的位置,您可以通过单击鼠标来
放置该光标。
在 FBD 和 LD 编辑器中,当前位置是网络编号区域中带有虚线矩形的第一个网络。剪贴板的内容将插入
到此网络的前面。如果复制了分部结构,则会将其插入到所选元素的前面。

在 SFC 编辑器中,确定当前位置,即被虚线矩形包围的选择。根据所选内容和剪贴板的内容,这些内容
将插入到所选内容的前面或所选内容左侧的新分支(平行或替代分支)中。

在 SFC 中,可以使用命令“Extras”、“Insertparallelbranch (right)”或“Extras”、“Pasteafter”来插入


剪贴板的内容。
为了将所选内容复制到剪贴板而不将其删除,请使用命令“编辑”“复制”。
为了在不更改剪贴板的情况下删除所选区域,请使用命令“编辑”“删除”。

'编辑''删除”
快捷方式:<Del>
从编辑器窗口中删除所选区域。这不会更改剪贴板的内容。在对象管理器中,这同样适用于选定的对象,因此

4-62 CoDeSysV2.3版本
4 - 单个组件

并非所有对象都可以删除,例如 PLC 配置。

对于选择类型,适用与“编辑”、“剪切”相同的规则。
选择的形式取决于各自的编辑:
在文本编辑器(IL、ST 和声明)中,所选内容是字符列表。
在 FBD 和 LD 编辑器中,选择的是多个网络,这些网络在网络编号字段中用虚线矩形突出显示。

在 SFC 编辑器中,所选内容是被虚线矩形包围的一系列步骤的一部分。
在库管理器中,选择是当前选定的库名称。
要删除所选区域并同时将其放在剪贴板上,请使用命令“编辑”“剪切”。

'编辑''查找'

象征:
使用此命令,您可以在当前编辑器窗口中搜索某个文本段落。“查找”(Find)对话框打开。它一直打开,
直到按下取消按钮。
在字段中找到您可以输入的字符系列的内容。
此外,您可以决定要查找的文本是否仅匹配整个单词,或者是否考虑匹配大小写,以及搜索是应向上还是
向下进行
从当前光标位置开始。
“查找下一步”按钮开始搜索,搜索从所选位置开始,并继续沿所选搜索方向进行。如果找到文本段落,
则突出显示该文本段落。如果未找到该段落,则会显示一条消息。可以连续重复搜索几次,直到到达编辑
器窗口内容的开始或结束。在CFC 编辑器中,将考虑元素的几何顺序,搜索将从窗口的左上角运行到右
上角。请注意,FBDPOU 是从右到左处理的!

“查找”对话框

'编辑''查找下一个'

符号:快捷方式:<F3>
使用此命令,您可以使用与最新操作“编辑”“查找”相同的参数执行搜索。请注意,FBDPOU 是从右到左
处理的!

“编辑”“替换”
使用此命令,您可以搜索某个段落,就像使用命令“编辑”“查找”一样,并将其替换为另一个段落。选择
命令后,将显示“查找和替换”对话框。此对话框将保持打开状态,直到按下“取消”或“关闭”按钮。

CoDeSysV2.3版本 4-63
常规编辑功能...

用于查找和替换的对话框

在“自动查找”后面的字段中,将插入您之前在编辑器中标记的字符串。您也可以手动输入搜索字符串。
按下“替换”按钮 会将当前选择替换为“替换为”字段中给出的字符串替换。使用“查找下一个”按钮转到找
到字符串的下一个段落。请注意,FBDPOU 是从右到左处理的!

“全部替换”按钮将“查找下一个”字段中当前 位置后面的文本替换为字段中的文本。 在过程结束时,会显


示一条消息,告知进行了多少次替换。

'编辑''输入助手'
快捷键:<F2>
此命令提供了一个对话框,用于在编辑器窗口中的当前光标位置选择可能的输入。在左列中,选择所需的
输入类别,在右列中选择所需的条目,然后单击“确定”确认您的选择。这会在此位置插入您的选择。

提供的类别取决于编辑器窗口中的当前光标位置,即此时可以输入的类别(例如变量、运算符、POU、
转换等)。
如果选项 Witharguments 处于活动状态,则在插入所选元素时,将指定要传输的参数,例如:功能块
fu1selected,它定义了输入变量 var_in:fu1(var_in:=);

插入函数 func1,该函数使用 var1 和 var2 作为传输参数:func1(var1,var2)


基本上可以在可用元素的结构化和非结构化显示之间切换。这是通过激活/停用“结构化显示”选项来实现
的。

注意:要插入标识符,还可以使用“Intellisense 功能”。

非结构化显示
在窗口的左侧,始终列出与当前插入位置相关的元素类别。例如ST运算符、局部变量、全局变量、标准
程序、定义程序、监视表达式等。在窗口的右侧,所选类别的元素按字鯦顺序线性排列。

在不同的地方(例如在观察列表中),需要多级变量名称。在这种情况下,输入助手会显示带有POU名
称的可用变量,如果是结构化变量和功能块实例,则额外显示 FB 名称或数据类型名称。示例:
PLC_PRG.ivar、PLC_PRG。结构 1.组件1.

对于全局变量,不添加 POU 名称。


必须选择所需的元素,然后通过“确定”将插入到插入位置。
当在监视和配方管理器中使用非结构化输入助手时,可以通过过滤器缩小提供的监视变量(监视表达式)
的范围。请参阅:创建观察列表、配方。

4-64 CoDeSysV2.3版本
4 - 单个组件

非结构化输入帮助对话框

您可以通过激活 结构化显示。

结构化显示
如果选择结构化显示,则 POU、变量或数据类型将按层次结构排序。这适用于标准程序、标准函数、标
准功能块、定义的程序、定义的函数、定义的功能块、全局变量、局部变量、定义的类型、监视变量。视
觉和层次结构显示与对象管理器的显示相对应;如果引用了库中的元素,则这些元素将按字鯦顺序插入到
最顶部,并且相关层次结构将显示为在库管理器中。

声明为局部或全局变量的功能块的输入和输出变量列在实例名称下的“局部变量”或“全局变量”类别中(
例如Inst_TPET、Inst_TPIN,...)。要到达那里,请选择实例名称(例如 Inst_TP),然后单击“确定”进
行确认。
如果在此处选择了功能块的实例,则可以选择“带参数”选项。在文本语言 ST 和 IL 中以及在任务配置期
间,将插入实例名称和功能块的输入参数。

例如,如果选择了 Inst (DeklarationInst: TON;),则插入以下内容:


Inst(IN:= ,PT:=)
如果未选择该选项,则仅插入实例名称。在图形语言或“监视”窗口中,通常只插入实例名称。

CoDeSysV2.3版本 4-65
常规编辑功能...

结构化输入帮助对话框

结构的组件以模拟方式显示到功能块实例。
对于枚举,单个枚举值列在枚举类型下。顺序是:来自库的枚举、来自数据类型的枚举、来自 POU 的本
地枚举。
一般规则是,包含子对象的行是不可选择的(实例除外, 上文),而只能将其层次结构显示扩大或缩小
一个级别,就像多阶段变量名称一样。

如果在监视和配方管理器中或在跟踪配置对话框中选择跟踪变量时调用输入助手,则可以进行 多项选择。
当按下 <Shift> 键时,您可以选择一系列变量;当按下 <Ctrl> 键时,您可以选择许多单独的变量。所选变
量将如此标记。如果在范围选择期间选择不包含有效变量(例如POU名称)的行,则这些行将不会包含
在选择中。当进行单独选择时,不能标记这些线。

在监视窗口和跟踪配置中,可以从“输入助手”对话框传输结构、数组或实例。由于使用鼠标按钮双击与元
素层次结构显示的扩展或收缩相关联,因此在这些情况下只能通过“确定”来确认选择。

此后,所选变量将逐行插入监视窗口,即每个选定变量都写入单独的行。对于跟踪变量,每个变量都插入
到跟踪变量列表的单独行中。

如果在插入所选变量期间超过跟踪变量的最大数量 20,则会出现错误消息“最多允许 20 个变量”。然


后,不会在列表中插入更多选定的变量。

您可以通过停用选项“结构化”来切换到非结构化显示。

注意:某些条目(例如全局变量)仅在编译后在“输入助手”对话框中更新。

“编辑”“自动声明”
快捷键:<Shift>+<F2>
此命令将打开用于声明变量的对话框。当“项目”、“选项”、“编辑器”、“自动声明”选项打开时,以及使
用新的未定义变量时,此对话框也会自动打开声明编辑器。

4-66 CoDeSysV2.3版本
4 - 单个组件

'编辑''下一个错误'”
快捷键:<F4>
在项目编译不正确后,此命令可能会显示下一个错误。相应的编辑器窗口被激活,并选择了不正确的位
置。同时,在消息窗口中显示相应的错误消息。

'编辑''上一个错误'”
快捷键:<Shift>+<F4>
在项目编译不正确后,此命令将显示上一个错误。相应的编辑器窗口被激活,并选择了不正确的位置。同
时,在消息窗口中显示相应的错误消息。

'编辑''宏'
此菜单项指向为项目定义的所有宏的列表。(有关生成宏的信息,请参阅 'Project' , 'Options' ,
'Macros' )。选择可执行宏后,将打开“处理宏”对话框。将显示宏的名称和当前活动的命令行。“取消”
按钮可用于停止宏的处理。在这种情况下,无论如何都会完成当前命令的处理。然后,在联机操作期间,
消息窗口和日志中会显示相应的消息:“<宏>:执行被用户中断”。

宏可以离线和在线执行,但在每种情况下,只执行在相应模式下可用的命令。

4.6 一般在线功能...
可用的在线命令组合在菜单项“在线”下。某些命令的执行取决于活动的编辑器。

联机命令只有在登录后才可用。有关说明,请参阅以下章节。

借助“在线更改”功能,您可以对正在运行的控制器上的程序进行更改。请参阅此处的“在线”“登录”。

下文“关系......”一章。显示 Project-Build、Project-Download、OnlineChange 和 Login 之间关系的图


表。

'在线''登录'

符号:快捷键:<Alt>+<F8>
该命令将编程系统与 PLC(或启动仿真程序)相结合,并更改为在线模式。

如果当前项目自打开或上次修改以来尚未编译,则立即编译(与“Project”“Build”一样)。如果在编译过
程中发生错误,则CoDeSys不会更改为联机模式。

如果自上次下载以来在控制器上更改了当前项目,但未关闭,并且未使用命令“Project”“全部清除”删除
上次下载信息,则在命令“Login”之后会打开一个对话框,其中包含以下问题:“程序已更改。负载变化
?(在线更改)”。通过回答“是”,您确认在登录时,项目的修改部分将加载到控制器上。(关于这个问
题,请看以下章节中关于在线变更的提示,以及登录、编译、下载和在线变更之间关系的图表。不会导致
登录,除非自上次下载加载到控制器上以来所做的更改。“取消”(Cancel)取消该命令。 <全部加载>
将导致整个项目重新加载到控制器上。

CoDeSysV2.3版本 4-67
一般在线功能...

扩展登录对话框

如果在项目选项的“桌面”类别中,激活了“在安全模式下联机”选项,并且目标系统支持该功能,则在“登
录”对话框中也会自动显示项目信息。这是当前在 CoDeSys 中打开的项目信息,并且已经在控制器上可
用。通过按钮“详细信息”<<您可以关闭对话框的此信息部分。

如果未激活“在安全模式下在线”选项,您可以通过“详细信息”按钮在对话框中显式打开项目信息显示
>>。

请注意,根据目标,哪个按钮被设置为默认按钮。

请注意:在任务或 PLC 配置中修改后,插入库后以及执行“项目”“全部清除”后( 下文),无法进行在线更改。在


线更改不会导致变量的重新初始化,因此不会考虑对初始化值的修改!保留变量在完成在线更改时保留其值,它们不
会在重新下载项目时执行此操作( 下文,“在线”“下载”)。

成功登录后,所有在线功能都可用(如果在“项目”、“选项”、“类别、”构建“中输入了相应的设置)。针
对所有可 变量声明监视当前值。

使用“在线”“注销”命令从在线模式更改为离线模式。

4-68 CoDeSysV2.3版本
4 - 单个组件

登录–构建–下载–在线更改之间的关系
请看下面的图表,它显示了登录、构建(编译)、下载和在线更改之间的关系:

使用以下术语:
源当前 CoDeSys 项目(*.pro 文件,本地 PC)
编译增量编译需要上一个构建过程的编译信息(*.ci 文件,本地 PC)

下载上次下载时加载到 PLC 的内容的信息(*.ri 文件,本地 PC)


PLC 项目当前在 PLC 上可用(*.prg 文件,目标系统)

关于在线更改的提示
• 在任务或 PLC 配置中修改后,插入库后以及执行“项目”“全部清除”后,无法进行在线更
改( 下文)。
• 如果在上次下载项目时创建的下载信息(文件 <projectname><targetidentifier>.ri)已被同时删除(例
如,通过命令“Project”“全部清除”),则以后将无法进行在线更改,但以下情况除外: ri-file 已保存
在另一个位置或已重命名,因此现在仍然可用,可以通过命令 'Project''Loaddownloadinformation'。
关于这一点,另请参阅下面的“项目的在线更改...”。

CoDeSysV2.3版本 4-69
一般在线功能...

• 在线更改不会导致变量的重新初始化,因此不会考虑对初始化值的修改!

• 保留变量在完成在线更改时保留其值,它们不会在重新下载项目时执行此操作( 下文,“在线
”“下载”)。

在多个 PLC 上运行的项目的在线更改:


如果要 在两个相同的控制器 PLC1 和 PLC2(同一目标系统)上运行项目 proj.pro,并希望确保可以通过在线更改在
两个控制器上完成项目更新,请执行以下操作:
(1) 在PLC1上加载并启动项目,保存PLC1的下载信息:
1. 将 CoDeSys 项 目 proj.pro 连 接 到 控 制 器 PLC1( 在 线/通 信 参 数 ) 并 在 PLC1 上 加 载 proj.pro( 在 线/登录、下
载)。下载时,将在项目目录中创建文件proj00000001.ri,其中包含下载信息。

2. 重命名proj00000001.ri,例如重命名为proj00000001_PLC1.ri。使用其他文件名保存文件是必要的,因为在进一
步下载proj.pro时,另一个 PLC 上的文件proj00000001.ri将被新的下载信息覆盖,因此属于 PLC1 上下载的信息
将丢失。

3. 在 PLC1 上启动项目,然后注销('Online', 'Start', 'Online', 'Logout')。

(2) 在PLC2上加载并启动项目,保存PLC2的下载信息:
1. 现在连接到控制器 PLC2(使用与 PLC1 相同的目标)并在 PLC2 上下载proj.pro。因此,将在项目目录中再次
创建一个文件proj00000001.ri,现在包含有关当前已完成下载的信息。

2. 重命名新的proj00000001.ri,例如重命名为proj00000001_PLC2.ri,以便显式存储它。
3. 在 PLC2 上启动项目并注销(“在线”、“开始”、“在线”、“注销”)。

(3) 在CoDeSys中修改项目:
1. 现在在CoDeSys中对 proj.pro 进行修改,然后要通过在线更改将其传输到两个PLC上运行的程序。

(4) 在线更改 PLC1,再次保存 PLC1 的下载信息:


2. 为了能够在PLC1上在线更改 proj.pro,首先必须恢复有关PLC1上下载 proj.pro 的下载信息。登录时,CoDeSys
正在寻找文件proj00000001.ri。但是您已将相应的下载信息存储在文件 proj00000001_PLC1.ri 中。现在你有 2 种
可能性:

(a)您可以将proj00000001_PLC1.ri再次重命名为proj00000001.ri。因此,在登录 PLC1 时,会自动提供相应的


下载信息,CoDeSys 会询问您是否要进行在线更改。

(b)或者,您可以在 登录之前通过命令“Project”“LoadDownload-Information”显式加载文件
proj00000001_PLC1.ri。因此,您不需要重命名 ri 文件,但可以进行在线更改。

3. 在 PLC1 上的在线更改中,已创建文件 proj00000001.ri 的更新版本,其中包含当前下载信息。如(4)所述再次


存储此文件,以使其可用于 PLC1 上的进一步在线更改。

(5) 在PLC2上在线更改,再次保存PLC2的下载信息:
为了在PLC2上对(3)中完成的 proj.pro 进行在线更改,请按照步骤(4)中所述对proj00000001_PLC2.ri执行相应
的步骤。

(6) 项目修改后每进行一次在线更改:执行步骤(3)至(5)

4-70 CoDeSysV2.3版本
4 - 单个组件

如果系统报告
错误:
“所选控制器配置文件与目标系统的配置文件不匹配...”
检查在目标系统设置(资源)中输入的目标系统是否与在“在线”“通信参数”中输入的参数匹配。

错误:
“通信错误。已注销”
检查控制器是否在运行。检查在“在线”“通信参数”中输入的参数是否与控制器的参数匹配。特别是,
您应该检查是否输入了正确的端口,以及控制器和编程系统中的波特率是否匹配。如果使用网关服务器,
请检查是否设置了正确的通道。

错误:
“程序已修改!是否应该加载新程序?
在编辑器中打开的项目与当前在 PLC 中找到的程序(或正在运行的模拟模式程序)不兼容。因此,无法
进行监视和调试。您可以选择“否”,注销并打开正确的项目,或使用“是”在 PLC 中加载当前项目。

消息:
“程序已更改。负载变化?(在线更改)”。
项目正在控制器上运行。目标系统支持“在线更改”,并且项目已在控制器上针对最新下载或最近的在线更
改进行了更改。现在,您可以决定是否应在控制器程序运行时加载这些更改,或者是否应取消该命令。但
是,您也可以通过选择“全部加载”按钮来加载整个已编译的代码 。

“在线”“注销”

符号:快捷键<Ctrl>+<F8>
与 PLC 的连接断开,或者模拟模式程序结束并切换到离线模式。

使用“在线”“登录”命令更改为在线模式。

'在线''下载'
此命令在 PLC 中加载已编译的项目。
在编译过程中,下载信息保存在名为<projectname>0000000ar.ri的文件中,该文件在在线更改期间用于
将当前程序与最近加载到控制器上的程序进行比较,以便仅重新加载已更改的程序组件。此文件由命令
“Project”“全部清除”擦除。关于多个 PLC 的在线更改,请参阅“在线”、“登录”一章。请注意,*.ri 文件
也会在联机更改期间更新。

根据目标系统设置,每次在脱机模式下创建引导项目时,可能会重新生成 *.ri 文件。

只有持久变量(请参 第 5.2.1 章“剩余变量”)即使在下载后也会保留其值。

“在线”“运行”

符号:快捷方式:<F5>
此命令在 PLC 或模拟模式下启动程序。

CoDeSysV2.3版本 4-71
一般在线功能...

该命令可以在“在线”“下载”命令之后立即执行,或者在PLC中的用户程序以“在线”“停止”命令结束之
后,或者当用户程序处于断点时,或者当“在线”“单循环”命令已经执行时。

'在线''停止'

符号:快捷键<Shift>+<F8>
在两个周期之间停止在 PLC 或模拟模式下执行程序。
使用“在线”“运行”命令继续程序。

“在线”“重置”
此命令将所有变量重置为该特定值,但保留变量( VARRETAIN )除外,这些变量已使用该值进行初始
化(以及那些已声明为 VARPERSISTENT 的变量!如果已使用特定值初始化变量,则此命令会将变量
重置为初始化值。所有其他变量都设置为标准初始化(例如,整数为 0)。作为预防措施,CoDeSys要
求您在覆盖所有变量之前确认您的决定。这种情况是在电源故障或在程序运行时关闭控制器然后打开(热
重启)时发生的情况。

使用“在线”“运行”命令重新启动程序。
另请参阅“在线”、“重置(原始)”、“在线”、“重置(冷)”和-有关重新初始化的概述–第 5.2.1 章剩余
变量。

'在线''重置(冷)'
此命令对应于“重置”命令( 上文),但保留变量(!)的例外情况是,变量(!)也设置回其初始化
值。这种情况是在程序启动时发生的情况,该程序在下载到PLC之前(冷启动)。只有持久变量保留重置
前的值。关于这一点,另请参阅“在线”、“重置”、“在线”、“重置原始”和-有关重新初始化的概述-第
5.2.1 章剩余变量。

'在线''重置(原始)'
此命令将所有变量(包括剩余变量(VARRETAIN 和 VARPERSISTENT))重置为其初始化值,并擦
除控制器上的用户程序。控制器将返回到其原始状态。关于这一点,另 “在线”、“重置”、“在线”、“冷
重置”和-有关重新初始化的概述-第 5.2.1 章剩余变量。

'Online''切换断点'

符号:快捷方式:<F9>
此命令在活动窗口中的当前位置设置断点。如果已在当前位置设置了断点,则将删除该断点。

可以设置断点的位置取决于写入活动窗口中 POU 的语言。

在文本编辑器(IL、ST)中,如果此行是断点位置(可通过行号字段的深灰色识别),则在光标所在的
行处设置断点。您还可以单击行号字段以在文本编辑器中设置或删除断点。

在 FBD 和 LD 中,断点设置在当前选定的网络上。要在 FBD 或 LD 编辑器中设置或删除断点,您还可以


单击网络号字段。
在 SFC 中,断点设置在当前选定的步骤中。在 SFC 中,还可以使用 <Shift> 双击来设置或删除断点。

如果设置了断点,则行号字段或网络号字段或步骤将以浅蓝色背景色显示。

4-72 CoDeSysV2.3版本
4 - 单个组件

如果在程序运行时到达断点,程序将停止,相应的字段将以红色背景色显示。要继续程序,请使用“在线
”、“运行”、“在线”、“单步执行”或“在线”“单步执行”命令。

还可以使用“断点”对话框来设置或删除断点。

“联机”“断点对话框”
此命令将打开一个对话框,用于编辑整个项目中的断点。该对话框还显示当前设置的所有断点。

要设置断点,请在POU组合框中选择一个 POU,并在Location组合框中选择要设置断点的线路或网络;
然后按Add按钮。断点将添加到列表中。

要删除断点,请从设置的断点列表中突出显示要删除的断点,然后按“删除”按钮。

“全部删除”按钮可用于删除所有断点。
要转到编辑器中设置特定断点的位置,请从设置的断点列表中突出显示相应的断点,然后按“转到”按钮。

“断点编辑”对话框

要设置或删除断点,您还可以使用“在线”“切换断点”命令。

“在线”“跨步”

符号:快捷方式:<F10>
此命令将导致执行单个步骤。如果调用 POU,程序将在执行后停止。在 SFC 中,将执行完成操作。

如果本指令是函数或功能块的调用,则该函数或功能块将完全执行。使用“在线”“单步执行”命令,以移
动到被调用函数或功能块的第一条指令。

如果已达到最后一条指令,则程序将继续执行 POU 中的下一条指令。

“在线”“步入”
快捷键:<F8>
执行一个步骤。程序在调用的 POU 的第一条指令之前停止。
如有必要,将切换到开放的 POU。
如果当前位置是函数或功能块的调用,则命令将继续执行被调用 POU 中的第一条指令。

在所有其他情况下,该命令将完全用作“在线”“单步执行”。

CoDeSysV2.3版本 4-73
一般在线功能...

“在线”“单周期”
快捷键:<Ctrl>+<F5>
此命令执行单个 PLC 循环,并在此循环后停止。
该命令可以连续重复,以便在单个周期中继续进行。
当执行“在线”“运行”命令时,单循环结束。

'在线''写入值'
快捷键:<Ctrl>+<F7>
使用此命令,可以设置一个或多个变量-仅一次!–在循环开始时用户定义的值。(参 '在线''力值' 永
久设置)
所有单元素变量的值都可以更改,只要它们在监控中也可 即可。

在执行命令“写入值”之前,必须准备好写入变量值:
对于非布尔变量,在声明变量的行上执行双击鼠标,或者标记变量并按下 <Enter> 键。然后出现“写入变
量 <x>”对话框,可以在其中输入要写入变量的值。

用于写入变量的对话框

对于布尔变量,通过双击声明变量的行来切换该值(在 TRUE 和 FALSE 之间切换,不允许使用其他值


);不显示任何对话框。
为 Writing 设置的值显示在括号中,并在变量的前一个值后面以绿松石色显示。例如,a=0<:=34>。

提示:异常:在 FBD 和 LD 编辑器中,值显示为绿松石色,变量名称旁边没有括号。

根据需要设置任意数量的变量的值。
输入要写入变量的值也可以以相同的方式更正或删除。这在“在线”的“写入/强制对话框”中同样是可能
的( 下文)。
先前注意到的要写入的值保存在写入列表(监视列表)中,直到它们通过命令“强制值”实际写入、删除或
传输到强制列表为止。

可以在两个位置找到写入值的命令:
• 在“在线”菜单中命令“写入值”。
• 在“编辑写入列表和强制列表”对话框中单击“写入值”。
当执行命令“写入值”时,写入列表中包含的所有值仅在循环开始时写入控制器中的相应变量一次,然后从
写入列表中删除。(如果执行命令“强制值”,则相关变量也会从写入列表中删除,并传输到强制列表!

注意:在顺序函数图语言(SFC)中,不能使用“写入值”更改用于组合过渡表达式的单个值。这是因为在监控表达式
的 “ 总值 ” 时,不会显示单个变量的值(例如,仅当两个变量实际上都具有 TRUE 值时, “aANDb” 才会显示为
TRUE)。

另一方面,在 FBD 中,仅监控表达式中的第一个变量,例如用作功能块的输入。因此,“写入值”命令只


能用于此变量。

4-74 CoDeSysV2.3版本
4 - 单个组件

'在线''力值'
快捷键:<F7>
使用此命令,一个或多个变量将永久设置为用户定义的值(参 “在线”“写入值”,在循环开始时仅设置
一次)。该设置在运行时系统中发生,无论是在周期的开始还是结束时。

一个周期的时间顺序:1.读取输入,2.力值 3.过程代码,4。力值 5.写入输出。

该功能将保持活动状态,直到用户明确暂停(命令“在线”、“释放力”)或注销编程系统。

为了设置新值,首先创建一个写入列表,如“在线”“写入值”下所述。写入列表中包含的变量相应地在“监
视”中标记。 一旦执行命令“Online”“Forcevalues”,写入列表就会传输到 forcelist。活动力表可能已经
存在,在这种情况下,它会根据需要进行更新。然后清空写入列表,并将新值以红色显示为“强制”。力表
的修改通过下一个“力值”命令传输到程序。

注意:强制列表是在第一次强制写入列表中包含的变量时创建的,而写入列表在第一次写入它所包含的变
量之前就存在了。
强制变量的命令,这意味着它将被输入到强制列表中,可以在以下位置找到:

• 在“在线”菜单中命令“强制值”。
• “编辑写入列表和力列表”对话框中的“力值”按钮。

注意:在顺序函数图语言中,不能使用“力值”更改组合过渡表达式的单个值。这是因为在监控表达式的“总值”时,不
会显示单个变量的值(例如,仅当两个变量实际上都具有 TRUE 值时,“aANDb”才会显示为 TRUE)。

另一方面,在 FBD 中,仅监控表达式中的第一个变量,例如用作功能块的输入。因此,“强制值”命令只


能用于此变量。

“在线”“释放力”
快捷键:<Shift>+<F7>
此命令结束在控制器中强制执行变量值。变量值再次以正常方式更改。

在监控中,强制变量可以通过显示其值的红色来识别。您可以删除整个强制列表,但也可以标记应释放强
制的单个变量。

要删除整个力列表,这意味着释放所有变量的力,请选择以下方法之一:

在菜单“在线”中命令“释放力”。
“编辑写入列表和力列表”对话框中的“释放力”按钮
使用“删除写入-/强制列表”对话框中的命令“释放强制”删除整个强制列表。如果您选择命令“释放力”,则
此对话框将打开,同时还存在写入列表。
要仅对单个变量释放力,您必须先标记这些变量。按照下面描述的一种方式执行此操作。之后,所选变量
标有绿松石扩展<释放力>:

双击声明了非布尔变量的行,打开“写入变量 <x>”对话框。按下按钮<此变量的释放力>。

在声明布尔变量的行上重复双击,以切换到行尾的显示<释放力>。

CoDeSysV2.3版本 4-75
一般在线功能...

在菜单“在线”中,打开写入/强制对话框,然后删除“强制值”列的编辑字段中的值。

当声明窗口中显示所有所需变量的设置“<释放力>”时,选择命令“力值”将力列表的修改传输到程序。

如果在执行命令“释放强制”时当前写入列表(参 “在线”“写入值”)不为空,则将打开“删除写入-/强制
列表”对话框。在那里,用户必须决定他是否只想释放Force,或者另外想要删除写入列表,或者他是否
想要删除这两个列表。

用于删除写入/强制列表的对话框

“在线”“写入/强制”对话框”
快捷键:<Ctrl>+<Shift>+<F7>
此命令将进入一个对话框,该对话框在两个寄存器中显示当前写入列表( 监视列表) 和强制列表 (
Forcelist)。每个变量名称以及要写入或强制执行的值都显示在表中。

用于编辑写入列表和强制列表的对话框

变量通过命令“Online”、“WriteValues”到达监视列表,并通过命令“Online”、“ForceValues”传输到强
制列表。可以在“准备值”或“强制值”列中编辑这些值,方法是在条目上单击鼠标以打开编辑器字段。如
果条目的类型不一致,则会显示一条错误消息。如果删除了某个值,则表示该条目已从写入列表中删除,
或者一旦使用除“取消”以外的任何其他命令关闭对话框,就会注意到该变量暂停强制。

4-76 CoDeSysV2.3版本
4 - 单个组件

以下命令与“在线”菜单中的命令相对应,可通过按钮使用:
强制值:当前写入列表中的所有条目都传输到强制列表,即强制控制器中变量的值。所有标有“释放力”的
变量都不再强制。然后关闭对话框。

写入值:当前写入列表中的所有条目仅写入控制器中的相应变量一次。然后关闭对话框。

释放力:强制列表中的所有条目都将被删除,或者,如果存在写入列表,则会出现“删除写入-/强制列表”
对话框,用户必须决定是只想释放强制还是放弃写入列表,或两者兼而有之。对话框将在此时关闭,或在
选择对话框关闭后(视情况而定)关闭。

'Online''显示调用堆栈'
当模拟模式在断点处停止时,可以运行此命令。您将看到一个对话框,其中包含 POU 调用堆栈的列表。

调用堆栈示例

第一个 POU 始终处于PLC_PRG状态,因为这是执行开始的地方。


最后一个 POU 始终是正在执行的 POU。
选择 POU 并按下“转到”按钮后,所选 POU 将加载到其编辑器中,并显示正在处理的线路或网络。

'在线''显示流量控制'
根据目标系统设置,用户可以激活或停用流量控制功能。如果激活,菜单项前面会出现一个复选符(
)。在此之后,每条线路或每个网络都将被标记为在上一个 PLC 周期中执行的。

刚刚运行的线路或网络的线路编号字段或网络编号字段将显示为绿色。在 IL 编辑器中添加了一个附加字
段,其中显示了累加器的当前内容。在功能块图和梯形图的图形编辑器中,将在所有未传输任何布尔值的
连接线中插入一个附加字段。验证这些输出和输入后,通过连接线传输的值将显示在此字段中。仅传输布
尔值的连接线在传输 TRUE 时将以蓝色阴影显示。这样可以对信息流进行持续监控。

请注意:
1. 使用流量控制将增加程序的运行时间。这可能会导致高负载的时间循环程序超时。

2. 在活动断点位置,没有流量控制显示。
3. 如果已为相关任务定义了看 狗(请参 第 6.7.2 章“插入任务”),则当流控制处于活动状态时,
该看 狗将被关闭。

CoDeSysV2.3版本 4-77
一般在线功能...

'在线''模拟'
如果选择了模拟模式,则菜单项前面会出现一个复选标记( )。
在模拟模式下,用户程序在Windows下的同一台PC上运行。此模式用于测试项目。PC 和模拟模式之间
的通信使用 Windows 消息机制。

如果程序未处于仿真模式,则程序将在 PLC 上运行。PC和PLC之间的通信通常通过串行接口进行。

此标志的状态与项目一起存储。
请注意:
-外部库的 POU 不会在模拟模式下运行。

'在线''通信参数'
当本地PC和运行时系统之间的通信通过系统中的网关服务器运行时,将为您提供一个特殊对话框,用于
设置通信参数。(如果使用 OPC 或 DDE 服务器,则必须在其配置中输入相同的通信参数)。

请参阅以下各项:
网关系统原理
本地 PC 的通信参数对话框
设置所需的网关服务器和通道
为本地网关服务器设置新通道
本地 PC 上的通信参数对话框显示的内容

网关系统原理
网关系统原理
在解释对话框的操作之前,让我们先检查一下网关系统的原理:
网关服务器可用于允许本地PC与一个或多个运行时系统进行通信。有关可以寻址的运行时系统的设置(
专 为每个网关服务器配置)以及与所需网关服务器的连接,是在本地PC上进行的。在这里,网关服务
器和运行时系统可以在本地 PC 上一起运行。如果我们正在处理在另一台 PC 上运行的网关服务器,我们
必须确保它已在那里启动。如果选择本地安装的网关服务器,则在登录到目标运行时系统时,该服务器将
自动启动。您可以通过任务栏右下角的 CoDeSys 符号来识别这一点。只要您通过网关连接到运行时系
统,此符号就会亮起。菜单点“信息”和“完成”是通过在符号上单击鼠标右键获得的。Finish用于关闭网
关。

请参阅以下用于显示网关系统的方案:

4-78 CoDeSysV2.3版本
4 - 单个组件

PC_local 是 本 地 PC , PC_x 是网关寻址的另一台 PC。PC_gateway是安装网关服务器的 PC,


PC_PLC1 PC_PLC4 是 运行运行时系统的 PC。该图显示模块是分开的,但网关服务器和/或运行时系统
完全可以一起安装在本地 PC 上。

重要提示:请注意,只能通过 TCP/IP 连接到网关,因此请确保您的 PC 配置正确!

另一方面,从网关到各种运行时计算机的连接可以通过不同的协议(TCP/IP、管道等)运行。

设置所需的网关服务器和通道
1. 在“通信参数”对话框中设置所需的网关服务器和通道:
要定义与所需网关服务器的连接,我们通过按“网关”按钮打开“通信参数网关”对话框。

示例对话框,定义与网关的本地连接

您可以在此处输入和/或编辑以下内容:
从计算机到运行要使用的网关服务器的计算机的连接类型。如果网关服务器在本地计算机上运行,则可
以通过共享内存(“本地”)或 TCP/IP 进行连接;如果需要连接到其他计算机,则只能使用 TCP/IP。

要使用的网关服务器正在运行的计算机的地址:IP 地址或适当的符号名称,例如 localhost。但是,不允


许在地址范围编号中添加前导零(例如:不可能:“010.107.084.050”,必须输入为“10.107.84.50”)。
在初始设置中,标准的“localhost”作为计算机名称(地址)提供,这意味着将访问本地安装的网关。在大
多数情况下,名称“localhost”设置为与本地 IP 地址 127.0.0.1 相同,但在某些情况下,您可能必须直接
在“地址”字段中输入此名称。如果要访问另一台计算机上的网关服务器,则必须将“localhost”替换为其名
称或 IP 地址。

所选网关服务器的密码(如果位于远程计算机上)。如果输入错误或根本没有输入,则会出现错误消
息。
请注意:您可以通过以下步骤为本地安装的网关服务器提供密码:在工具栏右下角的网关符号上单击
鼠标右键,然后选择“更改密码”。将出现一个对话框,用于更改或输入密码。如果在本地访问网关服
务器,则不会要求输入任何密码。

要使用的网关服务器运行的计算机端口,通常已为所选网关提供正确的值。

如果对话框关闭为“确定”,则相应的条目(计算机地址)将显示在“频道”中
字段,其下方是此网关服务器上可用的通道。

CoDeSysV2.3版本 4-79
一般在线功能...

2. 在选定的网关服务器上设置所需的通道:
现在,通过用鼠标单击条目来选择其中一个频道。相应的参数将显示在表中。如果无法与所选网关地址建
立连接(可能是因为该地址尚未启动或地址不正确),则该地址后面的括号中会显示短语“未连接”,并显
示一条消息“找不到具有这些设置的网关”。在这方面,请执行快速检查。

设置所需通道后,使用“确定”关闭对话框。设置将与项目一起保存。

为本地网关服务器设置新通道
您可以为当前连接的网关服务器设置新通道,然后可以使用这些通道从服务器建立进一步的连接,例如与
控制器的连接。您在这方面拥有的选项取决于计算机上安装的设备驱动程序数量的特定选择。

按“通信参数”对话框中的“新建”按钮。出现“通信参数:新通道”对话框:

示例对话框,安装新通道

输入字段名称自动包含用于上次输入通道的名称。如果尚未定义通道,则将提供当前网关名称,后跟下划
线字符,例如“localhost_”。此时,您可以编辑频道名称。频道名称仅供参考,不必是唯一的名称,但建
议使用一个。

网关计算机上可用的设备驱动程序列在“设备”下的表中。在“名称”列中,通过鼠标单击选择一个可用的
驱动程序;相应的注释(如果有)将显示在“信息”列中。

如果关闭“...“新建通道”对话框,新定义的通道将作为“通道”中减号下最低位置的新条目出现在“通信参
数”对话框中。到目前为止,它只存储在本地项目中( 上文)。此时,您可以编辑“值”列(请参阅下面
的提示)。现在使用“确定”确认输入的参数,从而离开“通信参数”对话框。

为了使新输入的网关通道及其参数也为网关服务器 xy 所知,从而使访问此网关 xy 的其他计算机也能够


使用该通道通道及其参数,必须登录到运行时系统。如果随后重新打开“在线”的“通信参数”对话框,则
新通道将出现在“通道树”中,不仅在其先前的位置,而且还缩进到网关服务器 xy 的地址或名称下。这表
明它是网络已知的。现在,您可以在本地计算机以外的计算机上打开“通信参数”对话框,选择网关 xy 并
使用其新通道。

如果登录时发生通信错误,则可能无法打开接口(例如,用于串行连接的 COM1),可能是因为它正在
被另一台设备使用。控制器也可能未运行。

4-80 CoDeSysV2.3版本
4 - 单个组件

网关服务器已知的通道的参数不能再在配置对话框中编辑。参数字段显示为灰色。但是,只要连接未处于
活动状态,就可以将其删除。

重要提示:请注意,删除频道是不可逆的。它发生在您按下按钮的那一刻删除!

本地 PC 上的通信参数对话框显示的内容
此对话框用于选择与 PLC 通信的网关服务器。此外,还可以为安装在本地 PC 上的网关服务器设置新通
道,以便这些通道可以由作为网络一部分的其他计算机使用。

可以使用“更新”按钮随时调用当前设置。
如果已经根据“网关系统原理”中的示例配置了通信参数,则对话框将如下所示:

标题通道列出了两类连接:
一方面,显示了所有连接,这些连接安装在当前连接的名为“localhost”的网关服务器上。在这里,此网关
的地址或名称位于减号后面的上部位置,在我们的示例中,减号在本地计算机上运行。在正常情况下,相
应的地址“localhost”对应于本地计算机(PC_local)的 IP 地址 127.0.0.1。下面向右缩进的是网关通道设
置为的运行时计算机的三个地址(PC_PLC1 到 3)。它们既可以从本地 PC 进行配置,也可以从连接到
网关服务器的其他 PC (PC_x)进行配置。

通道描述的第二类包括与网关的所有连接,这些连接可以从本地 PC 进行设置,例如通过此配置对话框。
他们创建了“分支”,从正下方的减号通向PC_PLC1和PC_PLC4。这些通道地址不一定必须在网关上知
道。对于上述示例中的PC_PLC4,配置参数存储在本地项目中,但在下次登录运行时系统时,网关将首
先知道这些参数。这种情况已经发生PC_PLC1因为关联的网关地址已作为“通道树”的附加“子分支”出
现。

在对话框的中央部分,在每种情况下,都可以在“名称”、“值”和“注释”下找到左侧所选通道的名称和
相关参数。

CoDeSysV2.3版本 4-81
一般在线功能...

在通信参数对话框中编辑参数的提示
您只能编辑“值”列中的文本字段。
用鼠标选择一个文本字段,然后通过双击或按空格键进入编辑模式。按 <Enter> 键完成文本输入。

您可以使用 <Tabulator> 或 <Shift>+<Tabulator> 跳转到下一个或上一个切换或编辑可能性。

要编辑数值,可以使用箭头键或PageUp/Down键分别将值更改一个或十个单位。用鼠标双击也会通过增
加一个单位来更改该值。对数值安装类型检查: <Ctrl>+<Home> 或 <Ctrl>+<End> 分别为相关参数类
型的可能输入值提供最低或最高值。

在尝试连接网关失败时快速检查
如果与所选网关计算机的连接不成功,则应进行以下检查。(在“通信参数”对话框中,在“通道”字段中
网关服务器地址后面的“通信参数”对话框中收到消息“未连接”):

网关服务器是否已启动(三色符号出现在工具栏的右下角)?

您在“网关:通信参数”对话框中输入的 IP 地址是否真的是运行网关的计算机的 IP 地址?(使用“ping”检


查)
TCP/IP 连接是否在本地工作?错误可能与 TCP/IP 有关。

'在线''源代码下载'
此命令将项目的源代码加载到控制器系统中。不要将其与编译项目时创建的代码混淆!您可以在“项目”“
选项”“Sourcedownload”对话框中输入适用于下载的选项(时间、大小)。

'Online''创建启动项目'
使用此命令,在控制器上设置已编译的项目,以便控制器可以在重新启动时自动加载它。引导项目的存储
方式因目标系统而异。例如,在 386 个系统上创建了三个文件:default.prg包含项目代码,default.chk
包含代码的校验和,default.sts包含重新启动(启动/停止)后的控制器状态。

如果项目已构建且没有错误,则命令“Online”、“Createbootproject”在离线模式下也可用。在这种情况
下,将在项目目录中创建以下文件:<projektname>.prg用于启动项目代码,projektname>.chk用于校
验和。这些文件可以根据需要重命名,然后复制到 PLC。

根据目标系统设置,在脱机模式下创建引导项目时,可能会创建新的*.ri文件(下载信息)。此外,根据
目标设置,如果此文件已存在,则会出现一个对话框。

注意:如果项目选项 Implicit at create boot project (categorySourcedownload)被激活,则所选源将自动加载


到控制器中,命令 'Online''Createbootproject'。

'Online''将文件写入控制器'
此命令用于将任何所需的文件加载到控制器上。它会打开“将文件写入控制器”对话框,您可以在其中选择
所需的文件。
使用“打开”按钮关闭对话框后,文件将加载到控制器中以相同的名称存储在那里。加载过程伴随着一个进
度对话框。
使用命令“在线”“从控制器加载文件”,您可以检索以前加载在控制器上的文件。

4-82 CoDeSysV2.3版本
4 - 单个组件

“联机”:“从控制器加载文件”
使用此命令,您可以使用“在线”“将文件写入控制器”检索之前加载到控制器中的文件。您会收到“从控制
器加载文件”对话框。在“文件名”下,提供所需文件的名称,然后在选择窗口中输入计算机上的目录,一
旦使用“保存”按钮关闭对话框,该文件将加载到该目录。

4.7 窗口设置...
在“窗口”菜单项下,您将找到用于管理窗口的所有命令。有一些命令可用于自动设置窗口、打开库管理
器和在打开的窗口之间切换。在菜单的末尾,您将找到所有打开的窗口的列表,这些窗口按打开的顺序排
列。您可以通过在相关条目上单击鼠标切换到所需的窗口。检查将出现在活动窗口的前面。

'窗口''平铺水平'
使用此命令,您可以在工作区中水平排列所有窗口,使它们不会重叠并填满整个工作区。

'窗口''垂直磁贴'
使用此命令,您可以在工作区中垂直排列所有窗口,使它们不会重叠并填充整个工作区。

'窗口''级联'
使用此命令,您可以以级联方式排列工作区中的所有窗口,一个接一个。

'窗口''排列符号'
使用此命令,您可以将工作区中所有最小化的窗口排列在工作区的下端。

'窗口''全部关闭'
使用此命令,您可以关闭工作区中所有打开的窗口。

“窗口”“消息”
快捷键:<Shift>+<Esc>
使用此命令,您可以打开或关闭消息窗口,其中包含上次编译、检查或比较过程中的消息。

如果消息窗口处于打开状态,则命令前面将出现一个复选标记( )。

4.8 在您需要时提供帮助...
“帮助”“目录和搜索”
使用命令 Contentsresp.在“帮助”菜单中搜索,您可以打开帮助主题窗口,该窗口将通过 HTML 帮助查
看器(InternetExplorerV4.1 及更高版本)显示。
“内容”选项卡显示内容树。书籍可以通过双击或通过加号和减号打开和关闭。当前在内容树中选择的
面将显示在窗口的右侧。从文本到其他帮助 面的超链接,以及扩展热点,用不同的颜色和下划线标记。
鼠标点击这些文本将打开链接 面,并显示展开的文本或图片。

CoDeSysV2.3版本 4-83
在您需要时提供帮助...

在“索引”选项卡中,您可以查找特定项目的帮助 面,在“搜索”选项卡中, 可以对所有帮助 面进行全


文搜索。按照注册卡中的说明进行操作。
“帮助主题”窗口

上下文相关帮助
快捷方式:<F1>
可以在活动窗口、对话框或菜单命令上方使用<F1>键以打开联机帮助。从菜单中执行命令时,将显示当
时调用的命令的帮助。

还可以突出显示文本(例如,关键字或标准函数)并按 <F1> 以显示该项目的帮助。

4-84 CoDeSysV2.3版本
4 - 单个组件

CoDeSysV2.3版本 4-85
5 -CoDeSys 中的编辑器

CoDeSys 中的 5 个编辑器

5.1 这是给所有编辑的...
编辑器的组件
POU(程序组织单位)的所有编辑器都由声明部分和正文组成。正文可以由其他文本或图形编辑器组成;
声明部分始终是文本编辑器。正文和声明部分由屏幕分隔符隔开,可以根据需要通过用鼠标单击它并向上
或向下移动来拖动该分隔符。

打印 边距
如果选择了“工作区”对话框的项目选项中的“显示打印范围”选项,则打印编辑器内容时应用的垂直和
水平边距将以红色虚线显示。输入的打印机的属性以及在“文件”“打印机设置”菜单中选择的打印布局的
大小都适用。如果未输入打印机设置或未输入打印布局,则使用默认配置( Default.DFR 和默认打印机
)。绘制水平边距时,就像在“文档设置”中选择了“每个对象的新 面”或“每个子对象的新 面”选项一
样。不显示最低边距。

注意:仅当选择100%的缩放系数时,才能精确显示打印 边距。

评论
用户注释必须包含在特殊符号序列“(*”和“*)”中。示例:(*这是评论。

允许在所有文本编辑器中、任何所需位置(即所有声明、IL 和 ST 语言以及自定义数据类型)中使用注
释。如果使用模板打印出项目,则在变量声明期间输入的注释将出现在每个变量后面的基于文本的程序组
件中。

在FBD 和 LD 图形编辑器中,可以为每个网络输入注释。为此,请搜索您要发表评论的网络并激活“插入
”“评论”。
除此之外,始终可以在插入变量名称的地方添加注释。
FBD 中网络注释和放置在输入变量后面的注释的示例:

在KOP中,如果在菜单“附加”“选项”的显示选项中进行了相应的配置,也可以为每个触点或每个线圈添
加注释。在梯形图编辑器中,如果在菜单“附加”“选项”中激活了相应的选项,则可以为每个特定触点和
线圈添加注释。

在 CFC 中,有可以随意放置的特殊注释 POU。


在 间作业控制中,您可以在对话框中输入有关步骤的注释,以编辑步骤属性。
如果激活了“项目”、“选项”、“构建选项”对话框中的相应选项,也允许嵌套注释。

CoDeSysV2.3版本 5-1
这是给所有编辑的...

在联机模式下,如果将鼠标光标停留在变量上一小段时间,则该变量的类型以及地址和注释(如果适用)
将显示在工具提示中。

缩放到POU
快捷键:<Alt>+<Enter>
使用此命令,选定的 POU 将加载到其编辑器中。如果光标位于文本编辑器中的 POU 名称上,或者在图
形编辑器中选择了 POU 框,则该命令可在上下文菜单(<F2>)或“附加”菜单中使用。

如果要处理来自库的 POU,则会调用库管理器,并显示相应的 POU。

打开实例
此命令对应于“Project”“Openinstance”命令。
如果光标位于文本编辑器中的功能块名称上,或者在图形编辑器中选择了功能块框,则可以在上下文菜
单(<F2>)或“附加”菜单中使用它。

通过“Intellisense 函数”输入变量
如果在项目选项对话框中激活了“编辑器”类别的“列出组件”选项,则“Intellisense”功能将在所有编辑
器、监视和配方管理器、可视化和采样跟踪中可用:

如果插入点“.”而不是标识符,则会出现一个选择框,列出项目的所有局部变量和全局变量。您可以选择
其中一个元素,然后按“返回”将其插入点后面。您也可以通过双击列表条目来插入元素。

如果输入功能块实例或结构变量后跟一个点,则会出现一个选择框,其中列出了相应功能块的所有输入和
输出变量,并列出了结构组件,您可以在其中选择所需的元素,然后按“返回”或双击输入。

示例:插入“struvar”。 ->将提供结构 struct1 的组件:

如果输入任何字符串并按 <Ctrl>+<空格键>,将出现一个选择框,列出项目中可用的所有 POU 和全局变


量。将选择以给定字符串开头的列表条目,并可以通过按 <Enter> 键输入程序。

标识符的脱机工具提示
在所有编辑器的离线模式下,以下情况都适用:如果光标放在可编辑的标识符上,则在工具提示中将显示
标识符的名称、变量类(例如 VAR_GLOBAL)、数据类型、变量的属性(例如 RETAIN)、地址和注
释。

显示交叉引用
如果在编辑器中选择了变量标识符,则此命令“显示交叉引用”将在“附加”菜单或上下文菜单中可用。它
可用于获取项目中使用变量的所有位置的列表。有关此交叉引用列表的信息,请参阅:“项目”“显示交叉
引用”。

5-2 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

将变量添加到监视列表
如果在其中一个POU编辑器中选择了一个或多个变量或元素,则可以通过上下文菜单中的相应命令将这
些变量或元素插入到新的或现有的监视列表中。有关详细信息,请参 6.8.2。创建监视列表、食谱。

5.2 声明编辑器

5.2.1 在声明编辑器中工作
声明编辑器用于声明POU和全局变量的变量、数据类型声明以及监视和配方管理器。它允许访问通常的
Windows 功能,如果安装了相应的驱动程序,甚至可以使用 IntelliMouse 的功能。

在 覆 盖 模 式 下 , “OV”在状态栏上以黑色显示;可以使用<Ins>键在覆盖和插入模式之间切换。

变量的声明由语法着色支持。
最重要的命令位于上下文菜单中(鼠标右键或 <Ctrl>+<F10>)。
提示:考虑使用编译指示来影响有关编译或预编译过程的变量属性的可能性(参 第 5.2.3 章)。

声明部分
仅在此 POU 中使用的所有变量都在 POU 的声明部分中声明。这些变量可以包括:输入变量、输出变
量、输入/输出变量、局部变量、剩余变量和常量。声明语法基于 IEC61131-3 标准。

有关使用标识符的建议,请参阅附录 J:。
关于对“全局变量”、“数据类型”、“函数”、“功能块”或“程序”类型的对象使用模板的可能性,请参 第
4.3 章“从模板新建的文件”。
在CoDeSys-Editor中正确声明变量的示例:

输入变量
在关键字VAR_INPUT和END_VAR 之间,声明了用作 POU 输入变量的所有变量。这意味着在调用位
置,变量的值可以与调用一起给出。

例:

CoDeSysV2.3版本 5-3
声明编辑器

VAR_INPUT
iIn1:INT (*1.你必须成为一个好榜样,说明你如何成为一个好榜样
END_VAR

输出变量
在关键字VAR_OUTPUT和END_VAR 之间,声明了用作 POU 输出变量的所有变量。这意味着这些值将
传回进行调用的 POU。在那里,它们可以得到回答并进一步使用。

例:
VAR_OUTPUT
iOut1:INT;(*1.输出变量*)
END_VAR

输入和输出变量
在关键字VAR_IN_OUT和END_VAR 之间,声明了用作 POU 的输入和输出变量的所有变量。

注意:使用此变量时,传输的变量的值会更改(“作为指针传输”,按引用调用)。这意味着此类变量的输入值不能是
常量。因此,即使是功能块的VAR_IN_OUT变量也无法通过 <functionblockinstance><in/outputvariable> 直接从外部
读取或写入。

例:
VAR_IN_OUT
iInOut1:INT;(*1.在 1980 年代,100,000 英尺(
END_VAR

局部变量
在关键字VAR和END_VAR 之间,声明了 POU 的所有局部变量。它们没有外部连接;换句话说,它们不
能从外面写出来。
例:
VARiLoc1:INT;(*1.局部变量*)

END_VAR

可变剩余物
剩余变量可以在通常的程序运行期间保留其值。其中包括 Retain 变量和 Persistent 变量。

例:
VARRETAINiRem1:INT;(*1.保留变量*)

END_VAR
Retain 变量由关键字RERETAIN 标识。即使在控制器不受控制地关闭以及控制器正常关闭和打开后,这
些变量仍保持其值(或在命令“在线”“重置”,参 第 4.6 章)。当程序再次运行时,存储的值将被进一步
处理。一个具体的例子是生产线上的计件器,在断电后重新开始计数。

所有其他变量都是新初始化的,无论是其初始化值还是标准初始化。

与持久变量相反,保留变量在重新下载程序时重新初始化。

持久变量由关键字 PERSISTENT 标识。与 Retain 变量不同,这些变量仅在重新下载后保留其值,但在“


在线”“重置”、“在线”“重置(原始)”或“在线”“重置(冷)”(分别参 第 4.6 章)之后不会保留其值,

5-4 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

因为它们不会保存在“保留区域”中。如果持久变量在控制器不受控制的关闭后也应保持其值,则必须
将它们另行声明为 VARRETAIN 变量。“持久保留变量”的一个具体示例是在电源故障后重新开始计时
的操作计时器。

注意力:
- 如果程序中的局部 变量被声明为 VARRETAIN,那么该变量将完全保存在保留区域中(就像全局保留
变量一样)
- 如果功能块中的局部变量被声明为 VARRETAIN,则该功能块的完整实例将保存在保留区域(POU 的
所有数据)中,因此只有声明的保留变量才会作为保留进行处理。

- 如果函数中的局部变量 被声明为 VARRETAIN,则这将没有任何效果。变量不会 保存在保留区域中!


如果在函数中将局部变量声明为 PERSISTENT,那么这也将没有任何影响!

x = 将保留值 -= 重新初始化值
在线命令后 VAR值 VAR 保留 坚持不懈 VAR 保留持久性 VAR 持久性保

重置 - x - x
重置(调用) - - - -
重置(原点) - - - -
下载 - - x x
x常量,类型化文本
在线更改 x x x

常量由关键字CONSTANT 标识。它们可以在本地或全球声明。
语法:
VAR 常 量 <Identifier> : <Type> : =
<initialization>; END_VAR

例:
VAR 常数 c_iCon1:INT:=12;(*1.常量*)

END_VAR
有关可能的常量列表,请参阅附录 B:CoDeSys 中的操作数。另请参阅有关使用类型化常量(类型化文
本)的可能性的信息。

外部变量
要导入 POU 的全局变量使用关键字 EXTERNAL 指定。在“联机”模式下,它们还会显示在声明部件的“
监视”窗口中。
如果VAR_EXTERNAL声明在各个方面都与全局声明不匹配,则会出现以下错误消息:“'<var>'的声明与
全局声明不匹配!
如果全局变量不存在,则会出现以下错误消息:“未知全局变量:'<var>'!

例:
VAREXTERNALiVarExt1:INT:=12;(* 第一个外部变量 *)

END_VAR

CoDeSysV2.3版本 5-5
声明编辑器

关键字
在所有编辑器中,关键字都应以大写字鯦书写。关键字不能用作变量。关键字示例:VAR、
VAR_CONSTANT、IF、NOT、INT。

变量声明
变量声明的语法如下:
<标识符>{AT<Address>}:<Type>{:=<initialization>};
大括号 {} 中的部分是可选的。
关于标识符,即变量的名称,应该注意的是,它不能包含空格或变音字符,它不能一式两份声明,也不能
与任何关键字相同。变量的大写/小写写入被忽略,换句话说,VAR1、Var1 和 var1 不是不同的变量。标
识符中的下划线是有意义的,例如A_BCD和AB_CD被解释为不同的标识符。不允许在标识符的开头或标
识符内使用多个连续的下划线。标识符的 度以及其中有意义的部分是无限的。

变量和数据类型元素的所有声明都可以包含初始化。它们是由“:=”运算符产生的。对于基本类型的变
量,这些初始化是常量。所有声明的默认初始化为 0。

例:
iVar1:INT:=12;(* 初始值为 12* 的整数变量)
如果您希望将变量直接链接到确定的地址,则必须使用关键字 AT 声明该变量。

为了更快地输入声明,请使用快捷方式模式。
在功能块中,您还可以使用不完整的地址语句指定变量。为了在本地实例中使用此类变量,变量配置中必
须有一个条目。

注意自动声明的可能性,或者使用编译指示来影响与编译过程有关的变量的属性。

AT声明
如果您希望将变量直接链接到确定的地址,则必须使用关键字AT 声明该变量。这种过程的优点是您可以
为地址分配一个有意义的名称,并且只需在一个地方(例如,在声明中)对传入或传出信号进行任何必要
的更改。

请注意,需要输入的变量不能通过写入来访问。
例子:
xCounterHeat7 在 %QX0.0:布尔值
;wLightcabinetimpulseAT%IW2:字
;xDownload 在 %MX2.2:布尔值;

注意:如果布尔变量被分配给 Byte、Word 或 DWORD 地址,它们会占用一个 TRUE 或 FALSE 的字节,而不仅仅


是偏移量后的第一位!

'插入''声明关键字'
您可以使用此命令打开可在POU的声明部分中使用的所有关键字的列表。选择关键字并确认选择后,该
单词将插入到当前光标位置。

当您打开输入助手(<F2>)并选择声明时,您还会收到列表
类别。

5-6 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

'插入''类型'
使用此命令,您将收到用于声明变量的可能类型的选择。当您访问输入助手(<F2>)时,您也会收到该
列表。
这些类型分为以下几类:

标准类型 BOOL、BYTE 等
定义的类型结构、枚举类型等。
实例声明的标准功能块
为实例声明定义的功能块
CoDeSys支持所有标准类型的 IEC1131-3:

语法着色
在所有编辑器中,您都会在变量的实现和声明中获得可视化支持。可以避免错误,或者更快地发现错误,
因为文本是以彩色显示的。
未关闭的评论,因此注释说明,将立即被注意到;关键字不会意外拼写错误等。

将使用以下颜色突出显示:

蓝 关键字
绿 文本编辑器中的注释
粉红色 特殊常量(例如 TRUE/FALSE、T#3s、%IX0.0)
红 输入错误(例如,无效的时间常数、关键字、以小写形式书写,...)
黑 变量、常量、赋值运算符......

快捷方式
CoDeSys的声明编辑器允许您使用快捷方式模式。当您使用 <Ctrl><Enter 结束一行时,此模式将被激
活>
支持以下快捷方式:
直到一行的最后一个标识符之前的所有标识符都将成为声明变量标识符
声明的类型由行的最后一个标识符确定。在这种情况下,以下情况将适用:

B 或 BOOL 给出结果BOOL
I 或 INT 给出结果INT
R 或字符串给出结果REAL
S 或REAL
给出结果STRING

如果未通过这些规则建立类型,则类型为 BOOL,并且最后一个标识符将不用作类型(示例 1)。

根据声明的类型,每个常量都将转换为初始化或字符串(示例 2 和 3)。

地址(如 %MD12 中)围绕 ATATDeclaration>Proc...属性(示例 4)。


A 号(;) 后面的文本将成为注释(示例 4)。
该行中的所有其他字符都将被忽略(例如,示例 5 中的感叹号)。
例子:

CoDeSysV2.3版本 5-7
声明编辑器

捷径 声明
一个 答:布尔值;
A 、乙、一、2 A , B : 整 数 : = 2;
STS2;字符串 ST:字符串(2);(* 字符串 *)
X%MD12R5 实数 %MD12 处的 X:实数:=5.0;(* 实数 *)
B ! B:布尔值;

自动声明
如果在“选项”对话框的“编辑器”类别中选择了“自动声明”选项,则在输入尚未声明的变量后,所有编辑
器中都会出现一个对话框。借助此对话框,现在可以声明变量。

用于声明变量的对话框

借助 类 组合框,选择是处理局部变量 ( VAR )、输入变量( VAR_INPUT )、输出变量(


VAR_OUTPUT)、输入/输出变量(VAR_INOUT)还是全局变量(VAR_GLOBAL)。

使用CONSTANT、RETAIN、PERSISTENT选项,您可以定义是处理常量变量还是保留变量

您在编辑器中输入的变量名称已输入到“名称”字段中,BOOL 已输入
放置在“类型”字段中。该按钮将打开“输入助手”对话框,该对话框允许您从所有可能的数据类型中进行
选择。
数组声明:
如果选择 ARRAY 作为变量类型,则会出现用于输入数组边界的对话框。
用于在自动声明期间确定数组边界的对话框

对于三个可能的维度(尺寸)中的每一个,都可以在“开始”下输入阵列边界
最后 用鼠标单击相应的字段以打开编辑空间。阵列
数据类型在“类型”字段中输入。在此过程中,该按钮可用于调用输入助手对话框。

通过“确定”按钮离开阵列边界对话框后,将根据对话框中“类型”字段中的条目设置 IEC 格式的变量


声明。示例:ARRAY[1..5, 1..3]OFINT 在初始值字段中, 您可以输入要声明的变量的初始值。如

5-8 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

果这是一个
数组或有效结构,您可以通过按钮打开一个特殊的初始化对话框,或者打开其他变量类型的输入助手
对话框。
在数组的初始化对话框中,您会看到一个数组元素列表;鼠标单击“:=”后面的空间会打开一个编辑字
段,用于输入元素的初始值。
在结构的初始化对话框中,各个组件以树状结构显示。类型和默认初始值显示在变量名称后面的括号
中;每个后面都跟着“:=”。鼠标单击“:=”后面的字段会打开一个编辑字段,您可以在其中输入所需的
初始值。如果组件是数组,则可以通过鼠标单击数组名称前的加号来扩展数组中各个字段的显示,并
且可以使用初始值编辑字段。

将初始化对话框保留为“确定”后,数组或结构的初始化将以 IEC 格式显示在声明对话框的“初始值”


字段中。
示例:x:=5,field:=2,3,struct2:=(a:=2,b:=3)
在“地址”字段中,可以将要声明的变量绑定到 IEC 地址(AT 声明)。
如果适用,请输入注释。 可以使用组合键 <Ctrl>+<Enter> 设置注释的格式。

按 OK 键,将关闭声明对话框,并根据 IEC 语法在相应的声明编辑器中输入变量。

注意:变量声明对话框也可以通过命令“编辑”“声明变量”获得。如果光标停留在联机模式下的变量上,则可以使用
<Shift><F2> 打开“自动声明”窗口,并显示当前与变量相关的设置。

声明编辑器中的行号
在离线模式下,只需单击特殊行号即可标记整个文本行。
在在线模式下,如果涉及结构变量,单击特定行号将打开或关闭该行中的变量。

以表格形式声明
如果在“项目选项”(类别“编辑器”)中激活了“以表格形式声明”选项,或者(如果您已经在声明编辑
器中工作)在上下文菜单中激活了“声明作为表”选项,则声明编辑器将看起来像一个表格。与在卡索引框
中一样,您可以选择相应变量类型的寄存器卡并编辑变量。

对于每个变量,您都会获得以下输入字段。

名字: 输入变量的标识符。
地址: 如有必要,输入变量的地址(AT声明)
类型: 输入变量的类型。(实例化函数时输入功能块
块)
初: 输入变量的可能初始化(对应于“:=” 赋值
运算符)。
评论:在此处输入评论。

声明编辑器的两种显示类型都可以更改,而不会引起任何问题。在联机模式下,没有不同的显示类型。

插入新声明:
要编辑新变量,请选择“插入”“新声明”命令( 下文)。
对声明进行排序:

CoDeSysV2.3版本 5-9
声明编辑器

要对表条目进行排序,请将光标设置到编辑器窗口左边框的行号栏上,然后在上下文菜单中选择以下命令
之一:
按名称排序:所有行都根据“名称”列中的标识符名称按字鯦顺序排序。
按地址排序:所有行均根据“地址”列中的地址条目按字鯦顺序排序。

按类型排序:所有行都根据“类型”列中的类型名称按字鯦顺序排序。
原始顺序:行按最初输入的顺序显示。
声明编辑器作为表格

'插入''新声明'
使用此命令,可以将新变量引入声明编辑器的声明表中。如果当前光标位置位于表的字段中,则新变量将
粘贴到前一行中;否则,新变量将粘贴到表的末尾。此外,您可以使用右箭头键或 Tab 键在表的最后一个
字段中粘贴新声明。

您将收到一个变量,该变量的“名称”位于“名称”字段中,“布尔”位于“类型”中
字段,作为其默认设置。应将这些值更改为所需的值。名称和类型是完整声明变量所需的全部内容。

5.2.2 在线模式下的声明编辑器
在联机模式下,声明编辑器将变为监视器窗口。在每一行中都有一个变量,后跟等号(=)和变量的值。
如果此时的变量未定义,则会出现三个问号( ??? )。对于功能块,仅显示打开的实例的值(命令:
'Project''Openinstance')。

在每个多元素变量的前面都有一个加号。通过按 <Enter> 或双击此类变量后,将打开该变量。在此示例


中,将打开交通信号灯结构。

当变量处于打开状态时,其所有组件都列在它之后。变量前面会出现一个减号。如果再次双击或按
<Enter>,变量将关闭,加号将重新出现。

按 <Enter> 或双击单个元素变量将打开对话框以写入变量。在这里可以更改变量的现值。对于布尔变
量,则不显示对话框;这些变量是切换的。

5-10 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

新值显示在变量之后,以尖括号和绿松石色显示,并且保持不变。如果给出了“在线”“写入值”命令,则
所有变量都将放置在所选列表中,并再次以黑色显示。

如果给出了“在线”“强制值”命令,则所有变量都将设置为所选值,直到给出“释放力”命令。在这种情况
下,力值的颜色将更改为红色

5.2.3 声明编辑器中的编译指示
编译指示用于影响与编译或预编译过程有关的变量的属性。它可以与声明编辑器的程序行中的补充文本一
起使用,也可以在其自己的行中使用。

编译指示用大括号括起来,忽略大写和小写:{<指令文本>}

如果编译器无法有意义地解释指令文本,则整个编译指示将作为注释处理并读取。发出警告:“忽略编译
器指令'<指令文本>'!
根据编译指示的类型和内容,编译指示要么在其所在的行上运行,要么在所有后续行上运行,直到以适当
的编译指示结束,或者使用不同的参数执行相同的编译指示,或者到达文件的末尾。我们所说的文件是
指:声明部分、实现部分、全局变量列表、类型声明。

左括号可以紧跟在变量名称之后。左括号和右括号必须位于同一行上。

CoDeSys 中目前提供以下编译指示:
• 编译指示 {flag...} 用于初始化、监控、创建符号
• Bitaccess 的 pragma {bitaccess ...}
• 用 于 链 接 POU 或 DUT 的 pragma {link}
• 编译指示 {parameter..}, {template...}, {instance...} 用于创建参数管理器条目
• Pragma{library...},用于控制库声明部分的显示

初始化、监控、创建符号、Bitaccess、链接的编译指示
编 译 指 示 {flag [<flags>] [off|on]}
<flags> 可以是以下标志的组合:

noinit: 该变量不会被初始化。
不看: 无法监控变量
诺雷德: 变量在没有读取权限的情况下导出到符号文件
nowrite: 变量在没有写入权限的情况下导出到符号文件
noread,nowrite: 变量不会导出到符号文件

使用“on” 修饰符,编译指示对所有后续变量声明进行操作,直到它被编译指示 {flagoff} 结束,


或者直到被另一个 {flag<flags>on} 编译指示覆盖。
如果没有“on”或“off”修饰符,编译指示仅对当前变量声明(即由下一个分号结束的声明)进行操
作。
pragma{flag} 的使用示例:
变量的初始化和监控:
变量 a 不会被初始化,也不会被监视。变量 b 不会被初始化:

CoDeSysV2.3版本 5-11
声明编辑器

VAR值

a: INT{标志 noinit,nowatch};
b: INT { 标 志 noinit };
END_VAR
VAR {flag noinit , nowatch on}
a: 整 数 ; { 标 记 noinit on}
b:整数;{关闭旗帜}

END_VAR
这两个变量都不会初始化:
{标志关于}VAR值

a :整数;
b : 整 数 ;END_VAR {flag off} VAR {flag noinit on}

a :整数;
b :整数;{关闭旗帜}

END_VAR
将变量获取到符号文件:
在具有读取和/或写入权限的 POU 中,使用标志“noread”和 “nowrite” 为所选变量提供受限访问权限。变
量的默认值与声明变量的 POU 的设置相同。如果变量既没有读取权限也没有写入权限,则不会将其导出到
符号文件中。

例子:

如果 POU 具有读写权限,则使用以下杂注变量 a 只能导出具有写入权限的变量,而变量 b 根本无


法导出:
VAR值

a: INT{标志noread};
b: INT{标志 noread,nowrite};
END_VAR
VAR { flag noread on}
a: 整 数 ; { 标 志 noread , nowrite on}
b:整数;{关闭旗帜}

END_VAR
变量 a 和 b 都不会导出到符号文件中:
{ 标志 noread, nowriteon}VAR值
a:整数;
b : 整 数 ;END_VAR {flag off} VAR {
flag noread , nowrite on}

a:整数;
b:整数;{关闭旗帜}
END_VAR

编译指示对所有后续变量声明进行累加操作。
示例:(所有正在使用的 POU 都将以读写权限导出)
a :空军基

5-12 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

地;...
FUNCTION_BLOCK afB
VAR值

b: bfb{标志nowrite};
c :整数
;END_VAR......

FUNCTION_BLOCK bfB
VAR值

d: INT{标志noread};
e: INT{标志nowrite};
END_VAR
“a.b.d”:不会导出
“a.b.e”:仅具有读取权限即可导出
“a.c”:将以读写权限导出。

Bitaccess 的 Pragma {bitaccess...}


此编译指示可用于在输入助手、“Intellisense 函数”和声明窗口中的监视中正确显示变量,该变量
在全局常量的帮助下执行位访问。此外,当在特定 POU 的声明窗口中监视此变量时,使用的全局
常量将显示在相应结构变量的下方。

请注意:必须激活项目选项“替换常量”(类别 Build)!

编译指示必须插入到结构的声明中,放在单独的行中。该行不以分号结尾。

语法:
{bitaccess < 全 局 常 量 > < 位 数 > '<comment>'}
<全局常量>:全局常量的名称,必须在全局变量列表中定义。

<Bitnumber>:全局变量列表中定义的全局常量的值。
有关附录 B 章中的示例:CoDeSys 中的操作数,对变量中的位进行寻址。

Pragma{link},用于在代码生成期间链接POU
通常,在代码生成过程中,不会在项目中调用的 POU(程序、功能、功能块)或数据单元类型定
义(DUT)链接。但是,可能希望一个函数,例如通过库包含在项目中,在下载到运行时系统后应
该可用,即使它不是由应用程序直接使用(例如,用于任何检查操作)。为此,您可以在 POU 的
声明部分或 DUT 中的任何所需位置添加 {link} 编译指示,以便强制链接 POU。

用于控制库声明部件显示的编译指示
在CoDeSys中创建库期间,您可以通过编译指示定义声明窗口的哪些部分应该可 ,或者稍后在库管理
器中不可 ,当库将包含在项目中时。库的实现部分的显示不会受此影响。

因此,注释或任何变量声明都可以对用户隐藏。编译指示 {libraryprivate} 和 {librarypublic} 都会影响同


一行的其余部分,或者后续行,只要它们不被彼此的行覆盖即可。

语法: {librarypublic} 后续测试将显示在库管理器中。


{libraryprivate} :后续测试将不显示。

CoDeSysV2.3版本 5-13
声明编辑器

示例:请 参 阅 下 面 的 库 的 声 明 部 分 , 该 库 是 在CoDeSys中 创 建 的 。 将 库 包 含 在 项 目 中 后 , 注 释“(*


thisisforall* ) ” 应显示在库管理器中。但是,注释 “ ( *butthisisnotforall” ) “ 不应显示。变量
local 和 in2 也不应显示:

{图书馆公共}(*这是为所有人准备的*){图书馆私人}(*这并不适合所有人*)
{图书馆公共}
功能 afun :BOOL
VAR_INPUT
在:布尔值;
END_VAR
{图书馆私人}
VAR当地:布尔;

END_VAR
{图书馆公共}
VAR_INPUT
in2 : 布 尔 值 ; {library
private}in3:布尔值;{
图书馆公共}

END_VAR

参数管理器条目的编译指示说明
可以在变量声明中插入编译指示,以便在参数管理器中处理的参数列表中为这些变量创建条目。这取决于
目标系统,即 CoDeSys 编程系统中是否提供参数管理器。这意味着必须在目标设置的“网络功能”类别中
激活它。

语法:
编译指示用大括号括起来,忽略大写和小写:{<Instructiontext>}。如果它包含在“normal”变量声明中,
则必须在声明的终止分号之前设置它。

在 VAR_CONFIG 界面中使用的 Pragmas 在一行中设置,并且不以分号结尾!

关键定义用空格字符分隔,全部用方括号括起来。

<name>:参数管理器中参数列表的名称。如果该列表尚不存在,则将创建该列表。

<key>:属性名称,即参数列表中的列标题;例如“名称”、“值”、“访问级别”等;这取决于客户特定参数列
表类型的定义,可以在编译指示中定义哪些键。关键定义用空格字符分隔,全部用方括号括起来。考虑数
组、结构或功能块组件的实例列表中条目的语法。( 下文,3。

<value>:由 <key> 定义的属性值。如果 <value> 包含空格,则必须用双引号括起来,例如


......accessright=“只读”...

请注意:
一旦焦点发生变化,编译指示将立即生效,这意味着一旦完成预编译,例如通过离开编辑器窗口。在编译项
目之前,不会向错误输入发送消息。

可以生成以下条目:
1. “变量”类型的参数列表中的条目
(a)从程序和全局变量列表的声明部分:

5-14 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

对于在 PROGRAM 或 VAR_GLOBAL 声明中定义的变量,可以在“变量”类型的参数列表中创建一个


条目,前提是该条目的声明如下所述:(如果参数列表尚不存在,则将自动创建)

语法: {parameter list=<name> [ <key>=<value> <key>=<value> ... 其 他 键 ] }


示例:变量 bvar 是在程序中声明的。它应该输入到参数列表 parlist1 类型“变量”中,符号名称为
bvar1,值为 102,索引为 16#1200,子索引为 16#2l。
VAR值
bvar : INT{ 参 数 列 表 =parlist1 [name=bvar1 value=102 index=16#1200 subindex=16#1 ] };

END_VAR
(b)通过VAR_CONFIG界面中的声明:
可以通过在VAR_CONFIG窗口中放置编译指示来为“变量”类型的参数列表中的变量创建条目(与变量
配置无关,这些配置也在 VAR_CONFIG 接口中完成):(如果参数列表尚不存在,它将自动创建)

语法: {parameter list=<name> path=<path> [ <key>=<value> <key>=<value> ... 其 他 键 ] }


<path> 应为其生成条目的变量的路径,例如“PLC_PRG.act1.var_x”
示例:对于变量var_x在参数列表“varlist1”中创建一个条目,符号名称为 xvar”。

VAR_CONFIG
{ 参 数 列 表 =varlist1 路 径 =PLC_PRG.act1.var_x [ 名 称 =xvar ] }
END_VAR

2. 通过功能块和结构在“模板”类型的参数列表中输入条目
功能块和结构中变量声明中的编译指示可用于在“Template”类型的参数列表中创建条目。(如果模板
尚不存在,将自动创建模板。

语法: {template list=<name> [ <key>=<value> <key>=<value> ... 其 他 键 ] }


示例:变量 strvar 是结构 “stru1” 的元素,应输入到类型为 'Template' 的参数列表 “templ1” 中;条目
的符号名称(成员)为 “struvar1”,访问级别为 “low”:

STRU 类型:
结构
ivar : INT; strvar : STRING{ 模 板 列 表 =vorl1 [member=struvar1 accesslevel=low] };

END_STRUCT
END_TYPE

3.“实例”类型的参数列表中的条目(用于数组、功能块或结构变量)
(a)通过程序或全局变量列表中的声明
在声明数组时,程序中的功能块或结构变量或全局变量列表直接可以创建“实例”类型的参数列表:

语法: {instance list=<name> template=<template> baseindex=<index> basesubindex=<subindex> [


<key>=<valueforfirstelement><key>=<valueforfirstelement>...第一个元素的更多键 ]|[<key>=
第二个元素的<值 ><key>=<第二个元素>的值。第二个元素的进一步键 ]|[其他元素的键
]}<key>=<value> <key>=<value> ... 其 他 键 ] }

CoDeSysV2.3版本 5-15
声明编辑器

对于数组,键“template”将自动使用隐式可用的模板“ARRAY”定义,对于结构和功能块,参数管理器
中必须提供适当的模板,并且必须是此处描述的声明的一部分。

对于每个特定的数组或结构或功能块元素,可以在参数列表中预定义一个单独的条目:例如,每个元
素都可以指定自己的定义 [name=<elementname>]。

每个特定元素的键定义(特定元素的所有键都用相同的方括号括起来!)排列成一行,用空格分隔。
元素的定义包将根据索引(Member)的升序自动引用元素。如果可用的键定义不如数组或结构或功
能块中的元素多,则其余元素将被分配与最后一个单独定义的元素相同的值(数组的键“名称”例外,
下文)!(参 示例 1b)。

在参数列表中输入数组时有关键“名称”的自动性:
- 如果未在编译指示中指定数组元素的名称,则该元素和所有后续元素将自动获得名称<POU名
称>_<数组变量名称>_<对应的数组索引号>。

示例:POUPLC_PRG中 INT 的数组变量 ARRVAR[1..8] 将通过编译指示输入到变量列表中;


如果编译指示中未定义键 “name” ,则参数列表中的特定数组元素将自动命名为
“PLC_PRG_arrvar_1”到“PLC_PRG_arrvar_8”。

- 如果通过编译指示为第一个数组元素定义任何名称 “<name>_<数组范围的第一个索引号>”,
则参数列表中的以下数组元素将自动命名为 “<name>_<对应索引号>”。

示例:INTin 的数组变量 ARRVAR[1..8] 将通过编译指示输入到变量列表中;编译指示只为第


一个数组元素指定 [name=xyz_1]“,因此在参数列表中,以下元素将自动获得名称”xyz_2“到
”xyz_8”。

注意:不要为键“Member”定义值;将使用数组索引值自动填充此列。

例子:
示例1a:数组变量arr_1如下所述声明,以创建类型为“Instance”(如果尚不可用)的参数列表,
其中输入数组组件,其中每个元素首先将获得一个符号名称xname_<索引号>(之后可以在参数管
理器中编辑),并且每个条目的子索引将按 1 计数,从 0 (basesubindex)开始。
Accesslevel=low 将应用于所有元素。

arr_1 : ARRAY [1..8] OF INT{instance list=arrinst template=ARRAY baseindex=16#0 basesubindex=16#0 [name=xname_1 accesslevel=low] }

示例1b:对于数组变量arr_1仅针对元素 1 到 4 的名称已经通过编译指示定义,因此元素 5 到 8 将
自动获得元素 4 的名称,该名称由下划线和适当的索引号扩展,即“xname_5”到“xname_8”。请
注意,必须在与访问级别相关的第一个和第四个元素相同的方括号内输入特定元素的进一步键定
义:

arr_1 : ARRAY [1..8] OF INT{instance list= arrinst template= ARRAY baseindex= 16#0
basesubindex= 16#0[name= aname accesslevel= high] [name= bname] [name= cname] [name= xname
accesslevel=medium]};

5-16 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

参数管理器编辑器,Example1a

参数管理器编辑器,Example1b

示例2:
类型为 “stru1” 的结构变量(包含变量 a 、 b 、 c )按如下所述声明,以便获取基于模板
“strulist_temp”的类型为“Instance”的参数列表中的条目;该列表将获得组件 A、B、C 的条目,不
分配符号名称,访问级别设置为“高”,模板定义的每个索引值将增加 2。确保编译指示中定义的模
板在参数管理器中可用:

struvar : stru1{ 实 例 列 表 =strulist template=strulist_templ baseindex=16#2 basesubindex=16#0


[accesslevel=high] };

CoDeSysV2.3版本 5-17
声明编辑器

示例2,模板中结构变量的条目

(b)通过VAR_CONFIG界面中的声明
对于可以实例化的变量,您可以通过 VAR_CONFIG 窗口中的编译指示直接在“实例”类型的参数列表
中创建条目(与变量配置定义无关,这些定义也在此接口中完成)。如果模板尚不存在,则将自动创
建该模板。

确保编译指示中定义的模板已在参数管理器中可用。
语法: {instance list=<name> path=<path> template=<template>
baseindex=<index>basesubindex=<subindex>[ <key>=<value> <key>=<value> ... 其 他 键 ] }
<path>:变量的实例路径,例如“PLC_PRG.fb1inst”,其中 fb1inst 是功能块 fb1 的实例。

示例: VAR_CONFIG 窗口中的以下条目将基于模板 “fb1_templ” (必须已经可用)为实例列表


“varinst1”中功能块“fb1”的所有变量创建条目。对于每个条目,模板预定义的索引偏移量将增加 2 (
baseindex),子索引偏移量不会被修改(basesubindex)。每个条目都有一个符号名称“fb1var”,您
可以稍后在参数管理器中对其进行编辑。

VAR_CONFIG
{ 实 例 列 表 =varinst1 路 径 =PLC_PRG.fb1 模 板 =fb1_templ baseindex=16#2 basesubindex=16#0 [
name=fb1var ]}
END_VAR

非持久数据类型的编译指示
通常,以下情况是有效的:即使功能块或结构中只有一个局部变量被声明为持久性变量,在使用实例时,
所有组件都会自动存储在运行时系统上的持久性信息(persist.dat)中。为了节省空间,您可以使用
pragma {nonpersistent}

5-18 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

在功能块的声明中,或者结构。它的影响是,只有那些声明为“持久”的功能块或结构的组件才会被输入到
持久信息中。
例:
如果以下功能块的实例被声明为持久化,则只有变量 local 和 fblevel3 将被写入持久化信息。如果没有 pragma{nonpersistent},所
有功能块变量都将存储在那里。

FUNCTION_BLOCK FB_Level_2
{非持久性}
VAR_INPUT
bvar_in :布尔值;
END_VAR
VAR_OUTPUT
bvar_out :BOOL;
END_VAR
VARivar2 :INT;
END_VAR是持久的

本地: INT :=33;FBLEVEL3 :FB_Level_3;


END_VAR

CoDeSysV2.3版本 5-19
声明编辑器

5-20 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

5.3 文本编辑器

5.3.1 使用文本编辑器
用于 CoDeSys 实现部分的文本编辑器(指令列表编辑器和结构化文本编辑器)提供了通常的 Windows
文本编辑器功能。
文本编辑器中的实现由语法着色支持。
在覆盖模式下,状态栏显示黑色OV。您可以通过键 <Ins 在覆盖模式和插入模式之间切换>

最重要的命令位于上下文菜单中(鼠标右键或 <Ctrl>+<F10>)。
文本编辑器以特殊方式使用以下菜单命令:

“插入”“运算符”在文本编辑器中
使用此命令,当前语言中可用的所有运算符都显示在对话框中。
如果选择了其中一个运算符,并且列表以“确定”关闭,则突出显示的运算符将插入到当前光标位置。(此
处的管理方式与在输入助手中一样)。

'Insert''Operand' 在文本编辑器中
使用此命令,将显示对话框中的所有变量。您可以选择是要显示全局变量、局部变量还是系统变量的列
表。
如果选择了其中一个操作数,并且对话框在 “ 确定 ” 中关闭, 则突出显示的操作数将插入到当前光标位
置。(此处的管理方式与在输入助手中一样)。

文本编辑器中的“插入”“功能”
使用此命令,所有功能都将显示在对话框中。您可以选择是否具有显示用户定义函数或标准函数的列表。

如果选择了其中一个函数,并且对话框在“确定”中关闭, 则突出显示的函数将插入到当前光标位置。(
管理将继续进行,就像在输入选择中一样。

CoDeSysV2.3版本 5-21
文本编辑器

如果在对话框中选择了“带参数”选项,则还将插入必要的输入和输出变量。

在文本编辑器中“插入”“功能块”
使用此命令,所有功能块都显示在对话框中。您可以选择是否具有显示用户定义或标准功能块的列表。

如果选择了其中一个功能块,并且对话框关闭为 “ 确定 ” , 则突出显示的功能块将插入到当前光标位置
。(此处的管理方式与在输入助手中一样)。

如果在对话框中选择了“带参数”选项,则还将插入功能块的必要输入变量。但是,您不会被迫分配这些
参数。

在文本编辑器中使用输出参数调用POU
被调用的 POU 的输出参数可以在以文本语言 IL 和 ST 调用时直接分配。

例:
afbinst 的输出参数 out1 被赋值变量 a。
IL: CALafbinst(in1:=1, out1=>a)
ST:afbbindst(in1:=1, out1=>a);
如果通过输入助手(<F2>)在 ST 或 ILPOU 的实现窗口中使用“带参数”选项插入 POU,则它将自动显
示并带有此语法中的所有参数。但是,您不会被迫分配这些参数。

在线模式下的文本编辑器
编辑器中的在线功能是设置断点和单步处理(steps)。因此,与监视一起,用户具有现代Windows标准
语言调试器的调试功能。

在联机模式下,文本编辑器窗口垂直分为两半。在窗口的左侧,您将找到正常的程序文本;在右侧,您将
看到在相应行中更改其值的变量的显示。可以通过用鼠标绘制分隔线来修改窗口的宽度。

显示与声明部分相同。这意味着当 PLC 运行时,将显示相应变量的当前值。

监视表达式或位寻址变量时应注意以下几点:对于表达式,始终显示整个表达式的值。示例:如果 a 和
b 均为 TRUE,则 ANDb 以蓝色显示或显示为“:=TRUE”。对于位寻址变量,寻址的位值始终受到监
控(例如,如果 a 的值为 4,则 a.3 以蓝色显示或显示为“:=TRUE”)。

如果将鼠标指针短暂地放在变量上方,则有关变量的类型、地址和注释将显示在工具提示中。

'附加功能''监控选项'
使用此命令,您可以配置监视窗口。在文本编辑器中,窗口在监视期间分为两半。该程序位于左半部分。
在右半部分,监控位于相应程序行中的所有变量。

您可以指定监视器窗口宽度和 两个变量在一行中应具有的距离。在本例中,距离声明 1 对应于所选字体


中的行高。
考虑到窗口的宽度也可以通过用鼠标绘制分隔线来修改。

5-22 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

“监视选项”对话框

文本编辑器中的断点位置
断点位置包括程序中变量值可以更改或程序流分支的所有位置。(例外:函数调用。如有必要,必须在此
处设置函数中的断点。在介于两者之间的位置,断点甚至没有意义,因为自前一个断点位置以来,数据中
没有任何内容能够更改。

这会导致 IL 中出现以下断点位置:
在 POU 开始时
在每个 LD、LDN(或者,如果 LD 位于标签上,则位于标签上)
在每届JMP、JMPC、JMPCN
在每个标签上
在每届 CAL、CALC、CALCN
在每届 RET、RETC、RETCN
在 POU 结束时
结构化文本可容纳以下断点位置:
在每次作业中
在每条RETURN和EXIT指令中
在评估条件的行中(WHILE、IF、REPEAT)
在 POU 结束时
断点位置由行号字段的显示来标记,该字段的颜色在项目选项中设置。

具有可能断点位置的 IL 编辑器(较暗的数字字段)

如何设置断点?
要设置断点,请单击要设置断点的行的行号字段。如果所选字段是断点位置,则行号字段的颜色将从深灰
色变为浅蓝色,并且断点将在 PLC 中被激活。

CoDeSysV2.3版本 5-23
文本编辑器

删除断点
相应地,要删除断点,请单击要删除断点的行的行号字段。

也可以通过菜单(“在线”、“切换断点”)、功能键 <F9> 或工具栏中的符号来选择设置和删除断点。

断点时会发生什么?
如果在 PLC 中达到断点,则屏幕将显示带有相应行的断点。PLC 所在的线路的行号字段将显示为红色。
用户程序在 PLC 中停止。

如果程序处于断点,则可以使用“联机”“运行”恢复处理。
此外,使用“联机”、“单步执行”或“单步执行”,可以使程序运行到下一个断点位置。如果您所在的指令
是CAL 命令,或者,如果行中存在函数调用,直到下一个断点位置,则可以使用“单步执行”绕过函数调
用。通过“单步执行”,您将分支到打开的POU

文本编辑器的行号
文本编辑器的行号给出了 POU 实现的每个文本行的行号。
在离线模式下,只需单击特殊行号即可标记整个文本行。

在联机模式下,行号的背景颜色表示每行的断点状态。颜色的标准设置是:

深灰色:此线是断点的可能位置。
浅蓝色:已在此行中设置断点。
红色:程序已达到此点。
在联机模式下,只需单击鼠标即可更改此行的断点状态。

5-24 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

5.3.2 指令列表编辑器
这是在 IL 中编写的 POU 在相应的CoDeSys编辑器下的样子:

POU 的所有编辑器都由声明部分和正文组成。它们由屏幕隔板隔开。

指令列表编辑器是一个文本编辑器,具有Windows 文本编辑器的常用功能。最重要的命令位于上下文菜
单中(鼠标右键或 <Ctrl>+<F10>)。也可以进行多线 POU 呼叫:

例:
CALCTU_inst( CU:=%IX10, PV:=( LDAADD5 ))

有关该语言的信息,请参 第 2.2.1 章“指令列表(IL)”。

联机模式下的IL
使用“在线”“流量控制”命令,在每行左侧的 IL 编辑器中插入一个显示累加器内容的附加字段。

有关联机模式下的 IL 编辑器的详细信息,请参阅“联机模式下的文本编辑器”。

CoDeSysV2.3版本 5-25
图形编辑器

5.3.3 结构化文本编辑器
这是用 ST 编写的 POU 在相应的CoDeSys编辑器下的显示方式:

POU 的所有编辑器都由声明部分和正文组成。它们由屏幕隔板隔开。

结构化文本编辑器是一个文本编辑器,具有 Windows 文本编辑器的常用功能。最重要的命令位于上下文


菜单中(鼠标右键或 <Ctrl>+<F10>)。
有关该语言的信息,请参 第 2.2.2 章“结构化文本(ST)”。

5.4 图形编辑器

5.4.1 在图形编辑器中工作
面向图形语言的编辑器,顺序功能图SFC,梯形图LD和功能块图FBD以及自由图形功能块图有许多共同
点。在以下段落中,将总结这些特征;LD、FBD 和 CFC 以及顺序功能图语言 SFC 的具体描述在单独的章
节中介绍。图形编辑器中的实现由语法着色支持。

缩放
SFC、LD、FBD、CFC 语言和可视化中的 POU、动作、过渡等对象可以通过缩放功能放大或缩小尺寸。
实现部分的窗口内容的所有元素都会受到影响;声明部分保持不变。

在标准形式中,每个对象都以 100% 的缩放级别显示。设置的缩放级别将另存为项目中的对象属性。

项目文档的打印始终以 100% 显示级别进行!


可以通过工具栏中的选择列表设置缩放级别。可以选择 25% 到 400% 之间的值;可以手动输入10%至
500%之间的单个值。

5-26 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

仅当光标停留在以图形语言创建的对象或可视化对象上时,缩放级别的选择才可用。

即使缩放了对象,也可以进一步选择编辑器中的光标位置,甚至可以使用箭头键到达。文本大小由缩放系
数和设置的字体大小控制。
所有编辑器菜单功能(例如插入框)作为光标位置的函数的执行在所有缩放级别上都可用,同时考虑到这
一点。
在“在线”模式下,每个对象都根据已设置的缩放级别显示;在线功能不受限制地可用。

使用 IntelliMouse 时,可以通过按 <CTRL> 键并同时向前或向后转动滚轮来放大/缩小对象。

网络
在 LD 和 FBD 编辑器中,程序排列在网络列表中。每个网络在左侧由序列号指定,其结构由逻辑或算术
表达式、程序、函数或功能块调用以及跳转或返回指令组成。

标签
每个网络都有一个标签,可以选择将其留空。通过单击网络编号旁边的网络第一行来编辑此标签。现在,
您可以输入标签,后跟冒号。

评论、带换行符的网络、“附加功能”、“选项”
每个网络都可以提供多行注释。在“功能块和梯形图选项”对话框中,可以通过执行命令“附加”“选项”打
开,您可以进行有关注释和换行符的设置:

对话框功能块和梯形图选项

在“最大注释大小”字段中,可以输入可用于网络注释的最大行数(此处的默认值为 4。在“最小注释大
小”字段中
您可以输入通常应为保留的行数。例如,如果输入数字 2,则在每个网络的开头,标签行之后将有两行空行。此处的默认值为
0,其优点是允许更多网络适合屏幕区域。如果最小注释大小大于 0,则要输入注释,只需单击注释行,然后输入注释即可。否
则 , 您 首 先 必 须 选 择 要 输 入 评 论 的 网 络 , 然 后 使 用 “ 插 入 ”“评论”插入评论

CoDeSysV2.3版本 5-27
图形编辑器

替代外观:以下选项允许定义网络的替代外观。
每个触点的注释(仅适用于梯形图编辑器):如果激活此选项,您可以为每个触点或线圈分配单独的注
释。在编辑字段“变量注释的行数”中,输入应为注释保留和显示的行数。如果完成此设置,则编辑器中
每个触点和线圈上方将显示一个注释字段,您可以在其中插入文本。如果激活了“每个触点的注释”,则在
梯形图编辑器中,还可以定义行数(可变文本的行数:),这些行数应用于触点或线圈的变量名称。这用
于通过将名称分成几行来完全显示 名称。在以下示例中,为变量 comment 定义了 2 行,为变量 text 定
义了 1 行:

显示变量注释和地址的网络示例:


换行符的网络(仅适用于梯形图编辑器):如果激活此选项,一旦网络 度超过给定的窗口大小,并且
某些元素将不可 ,就会在网络中强制换行。

带换行符的网络示例

输入地址后替换为符号:(仅适用于梯形图编辑器):如果激活此选项,您可以在触点或线圈处的方框或
位置输入地址(例如“%QB4”),该地址将立即替换为分配给该地址的变量的名称。如果没有为输入的地
址分配变量,则该地址将保持不变。

将联系人注释设置为符号注释:如果激活此选项,则在触点或线圈的注释字段中将显示该注释,该注释已
在声明用于触点或线圈的变量时定义( 上图,图片为“每个触点的注释”)。然后可以编辑注释。.但
是,为此,还必须激活“每个联系人的评论”选项。请注意,在任何情况下,已经在触点或线圈本地输入的
注释将自动替换为变量注释,即使该变量在其声明中没有注释!

5-28 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

显示符号地址:
(仅适用于梯形图编辑器):如果激活此选项并将分配给触点或线圈的变量分配给地址,
则该地址将显示在变量名称上方( 上文,图片 “每个联系人的注释”)。

在打印输出中显示每个梯级
的变量注释:如果激活此选项,则在每个网络中,对于该网络中使用的每个变
量,将显示一行,显示此变量的名称、地址、数据类型和注释,如变量声明中所定义。这可能对项目的文
档(打印输出)有用。

显示每个变量的信息行的网络示例

应用选项:
确定:按此按钮可在实际 POU 上应用设置并关闭选项对话框。
应用选项:按下此按钮可将设置应用于整个项目。将打开一个对话框,询问您在哪里明确确认要执行此操
作。

“插入”“网络(之后)”或“插入”“网络(之前)”
快捷方式:<Shift>+<T>(网络后)
要 在 FBD 或 LD 编 辑 器 中 插 入 新 网 络 , 请 选 择“插 入”“网 络 ( 之 后 )”或“插 入”“网络(之前)”命令,
具体取决于您是要在当前网络之前还是之后插入 新网络。可以通过单击网络编号来更改当前网络。您将在
数字下方的虚线矩形中认出它。使用<Shift键>和鼠标单击,您可以从整个网络区域中进行选择,从当前
网络区域到单击网络区域。

在线模式下的网络编辑器
在 FBD 和 LD 编辑器中,您只能为网络设置断点。已设置断点的网络的网络编号字段以蓝色显示。然
后,处理在断点所在的网络前面停止。在这种情况下,网络号字段显示为红色。通过单步处理(步骤),
您可以从网络跳转到网络。

所有值在进入和退出网络 POU(程序组织单位)时都会受到监控。
在监视表达式或位寻址变量时应注意以下几点:在表达式中,例如 aANDb ,用作转换条件或功能块输
入,始终显示整个表达式的值(如果 a 和 b 为 TRUE,则 aANDb 显示为蓝色或:=TRUE)。对于位寻
址变量,始终监视寻址的位值(例如,a.3 显示为蓝色或“:=TRUE,如果 a 的值为 4)

流量控制使用“在线”“流量控制”命令运行。使用流量控制,您可以查看通过连接线在网络中传输的当前
值。如果连接线不带有布尔值,则该值将显示在专 插入的字段中。未使用的变量(例如在函数 SEL
中)的监控字段以灰色阴影显示。如果这些行带有布尔值,则如果它们带有TRUE,它们将被阴影化为蓝
色。因此,您可以在 PLC 运行时伴随信息流。

如果将鼠标指针短暂地放在变量上方,则有关变量的类型、地址和注释将显示在工具提示中。

CoDeSysV2.3版本 5-29
图形编辑器

5.4.2 功能块图编辑器
这是在相应的CoDeSys编辑器下在 FBD 中编写的 POU 的样子:

功能块图编辑器是一个图形编辑器。它适用于网络列表,其中每个网络都包含一个结构,该结构分别显示
逻辑或算术表达式、功能块、函数、程序、跳转或返回指令的调用。最重要的命令位于上下文菜单中(鼠
标右键或 <Ctrl>+<F10>)。

考虑在离线模式和在线模式下在 FBD- 和 KOP 编辑器之间切换 FBD-POU 显示的可能性。此外,还要考


虑“功能块和梯形图选项”提供的可能性(参 第 5.4.1 章:注释、换行符、“附加”“选项”)。

FBD 中的光标位置
每个文本都是一个可能的光标位置。所选文本位于蓝色背景上,现在可以更改。

您还可以通过虚线矩形识别当前光标位置。以下是所有可能的光标位置的列表,并附有示例:

1) 每个文本字段(可能的光标位置以黑色框住):

2) 每个输入:

3) 每个运算符、功能或功能块:

5-30 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

4) 输出,如果之后有赋值或跳转:

5) 作业、跳跃或返回指令上方的划线叉:

6)在每个网络右侧最外层对象的后面(“最后一个光标位置”,与用于选择网络的光标位置相同):

7) 作业正前方的带衬线的十字架:

如何在FBD中设置光标
可以通过单击鼠标或借助键盘将光标设置在某个位置。
使用箭头键,您可以随时跳转到所选方向上最近的光标位置。所有光标位置,包括文本字段,都可以通过
这种方式访问。如果选择了最后一个光标位置,则可以使用<向上>或<向下>箭头键来选择前一个或下一
个网络的最后一个光标位置。

空网络只包含三个问号“???”。通过单击这些位置,将选择最后一个光标位置。

'Insert' 'Assign' in FBD

符号:快捷键:<Ctrl>+<A>
此命令插入分配。
根据所选位置(参 “FBD 中的光标位置”),插入直接发生在所选输入(光标位置 2)、所选输出(光
标位置 4)之后或网络末端(光标位置 6)之前。

对于插入的赋值,可以在输入的文本“???”旁边进行选择,并且可以将赋值替换为要赋值的变量。为此,
您还可以使用输入助手。有关输入地址而不是变量名称的可能性,请参阅第 5.4.1 章:注释、换行符、“
附加”、“选项”中选项对话框的描述。

要在现有分配中插入其他分配,请使用“插入”“输出”
命令。

'Insert' 'Jump' in FBD

符号:快捷键:<Ctrl>+<L>
此命令插入跳转。
根据所选位置(参 “FBD 中的光标位置”),插入直接发生在所选输入(光标位置 2)、所选输出(光
标位置 4)之后或网络末端(光标位置 6)之前。

CoDeSysV2.3版本 5-31
图形编辑器

对于插入的跳转,可以在输入的文本“???”旁边进行选择,并且可以将跳转替换为要分配给它的标签。

在FBD中'插入''返回'

符号:快捷键:<Ctrl>+<R>
此命令插入 RETURN 指令。
根据所选位置(参 “FBD 中的光标位置”),插入直接发生在所选输入的前面(光标位置 2)、所选输
出的正后方(光标位置 4)、所选线交叉的正前方(光标位置 5)或网络末端(光标位置 6)

'Insert' 'Box' in FBD

符号:快捷键:<Ctrl>+<B>
使用此命令,可以插入运算符、功能、功能块和程序。首先,它总是插入一个“AND”运算符。这可以通
过选择和覆盖类型文本(“AND”)转换为所有其他运算符、每个函数、每个功能块和每个程序。您可以
使用输入助手(<F2>)选择所需的POU。如果新选择的模块具有另一个最小数量的输入,则将附加这些
输入。如果新模块的最大输入数较小,则最后的输入将被删除。

在函数和功能块中,将显示输入和输出的正式名称。
在功能块中,框上方存在一个可编辑的实例字段。如果通过更改类型文本调用另一个未知的功能块,则会
显示一个包含两个输入和给定类型的操作员框。如果选择了实例字段,则可以通过<F2>获取带有变量选
择类别的输入助手。

最新的 POU 插入到所选位置:


如果选择了输入(光标位置 2),则 POU 将插入到该输入的前面。此 POU 的第一个输入链接到所选输
入左侧的分支。新 POU 的输出链接到所选输入。

如果选择了输出(光标位置 4),则在此输出之后插入 POU。POU 的第一个输入与所选输出连接。新


POU 的输出链接到与所选输出链接的分支。

如果选择了 POU、函数或功能块(光标位置 3),则旧元素将被新 POU 替换。

分支的连接方式与更换前的方式尽可能相同。如果旧元素的输入多于新元素,则不可附加的分支将被删
除。输出也是如此。

如果选择了跳转或返回,则 POU 将在此跳转或返回之前插入。POU 的第一个输入与所选元素左侧的分


支连接。POU 的输出链接到所选元素右侧的分支。

如果选择了网络的最后一个光标位置(光标位置 6),则 POU 将插入到最后一个元素之后。POU 的第一


个输入链接到所选位置左侧的分支。

所有无法链接的 POU 输入都将收到文本“???”。必须单击此文本并将其更改为所需的常量或变量。

如果插入的 POU 右侧有一个分支,则该分支将被分配给第一个 POU 输出。否则,输出将保持未分配状


态。

5-32 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

'插入''输入'

符号:快捷键:<Ctrl>+<U>
此命令插入操作员输入。对于许多运算符,输入的数量可能会有所不同。(例如,ADD 可以有 2 个或更
多输入。
为了通过输入扩展此类运算符,您需要选择要在其前面插入附加输入的输入(光标位置 1);或者,如果
要插入最低输入,则必须选择运算符本身(光标位置 3)(请参阅“FBD 中的光标位置”)。

插入的输入分配文本“???”。必须单击此文本并将其更改为所需的常量或变量。为此,您还可以使用输入
助手。有关输入地址而不是变量名称的可能性,请参阅第 5.4.1 章:注释、换行符、“附加”、“选项”中选
项对话框的描述。

'插入''输出'

象征:
此命令将附加分配插入到现有分配中。此功能用于放置所谓的分配梳;即,将当前位于该行的值分配给多
个变量。

如果选择赋值上方的划线叉(光标位置 5)(参 “FBD 中的光标位置”)或正前方的输出(光标位置 4


),则在已有的赋值之后将插入另一个赋值。

如果选择了作业正前方的线交叉(光标位置 4),则将在该作业的前面插入另一个作业。

插入的输出分配文本“???”。必须单击此文本并将其更改为所需的变量。为此,您还可以使用输入助手。
有关输入地址而不是变量名称的可能性,请参阅第 5.4.1 章:注释、换行符、“附加”、“选项”中选项对话
框的描述。

'额外''否定

符号:快捷键:<Ctrl>+<N>
使用此命令,您可以否定输入、输出、跳转或 RETURN 指令。否定的符号是连接处的小圆圈。

如果选择了输入(光标位置 2)(参 “FBD 中的光标位置”),则此输入将被否定。

如果选择了输出(光标位置 4),则此输出将被否定。
如果标记了跳转或返回,则此跳转或返回的输入将被否定。
否定可以通过重新否定来取消。

'Extras''设置/重置'

象征:
使用此命令,您可以将输出定义为“设置”或“重置输出”。带有设置输出的网格以[S]显示,带有重置输出
的网格以[R]显示。

CoDeSysV2.3版本 5-33
图形编辑器

在FBD中设置/复位输出

如果属于输出集的网格返回 TRUE,则将其设置为 TRUE。现在,即使网格跳回 FALSE,输出也会保持


此值。
如果属于它的网格返回 FALSE,则输出重置设置为 FALSE。输出将保持其值,即使网格跳回 FALSE。

多次执行命令时,输出将在设置、重置和正常输出之间交替。

'Extras''查看'
对于在FBD编辑器中创建的POU,您可以选择将其显示在LD-(梯形逻辑)中还是FBD-编辑器(功能块
图)中。这在离线和在线模式下都是可能的。

打开实例
此命令对应于“Project”“Openinstance”命令。
如果光标位于文本编辑器中的功能块名称上,或者在图形编辑器中选择了功能块框,则可以在上下文菜
单(<F2>)或“附加”菜单中使用它。

在 FBD 中剪切、复制、粘贴和删除
用于“剪切”、“复制”、“粘贴”和“删除”的命令位于“编辑”菜单项下。
如果选择了划线(光标位置 5)(参 “FBD 中的光标位置”),则位于划线下方的分配、跳转或返回将
被剪切、删除或复制。
如果选择了 POU (光标位置 3 ),则所选对象本身将被剪切、删除或复制,以及依赖于输入的所有分
支,但第一个(最高位置)分支除外。

否则,位于光标位置前面的整个分支将被剪切、删除或复制。
复制或剪切后,已删除或复制的部分位于剪贴板上,现在可以根据需要进行粘贴。

为此,您必须首先选择粘贴点。有效的粘贴点包括输入和输出。

如果POU已加载到剪贴板上(提醒一下:在这种情况下,除第一个分支外,所有连接的分支都位于剪贴
板上),则第一个输入将与粘贴点之前的分支连接。

否则,位于粘贴点前面的整个分支将被剪贴板的内容替换。

在每种情况下,粘贴的最后一个元素都连接到位于粘贴点前面的分支。
注意 :通过剪切和粘贴解决以下问题:在网络中间插入一个新的算子。位于操作员右侧的分支现在与第一个输入连
接,但应与第二个输入连接。您现在可以选择第一个输入并执行命令“编辑”“剪切”。在此之后,您可以选择第二个输
入并执行命令“编辑”“粘贴”。这样,分支就依赖于第二个输入。

5-34 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

在线模式下的功能框图
在功能块图中,断点只能设置为网络。如果已将断点设置为网络,则网络编号字段将显示为蓝色。然后,
处理在断点所在的网络前面停止。在这种情况下,网络号字段将变为红色。使用步进(单步),您可以从
网络跳转到网络。

将显示每个变量的当前值。例外:如果功能块的输入是表达式,则仅监视表达式中的第一个变量。

双击变量将打开用于写入变量的对话框。在这里可以更改变量的现值。对于布尔变量,则不显示对话框;
这些变量是切换的。

新值将变为红色,并将保持不变。如果给出了“在线”“写入值”命令,则所有变量都将放置在所选列表
中,并再次以黑色显示。
流量控制使用 “ 在线 ”“ 流量控制 ” 命令启动使用流量控制,您可以查看通过连接线在网络中传输的当前
值。如果连接线不带有布尔值,则该值将显示在专 插入的字段中。如果这些行带有布尔值,那么如果它
们带有 TRUE,它们将带有蓝色阴影。通过这种方式,您可以在 PLC 运行时伴随信息流。

如果将鼠标指针短暂地放在变量上方,则有关变量的类型、地址和注释将显示在工具提示中。

5.4.3 梯形图编辑器
以下是在 LD 中写入的 POU 在CoDeSys编辑器中的显示方式:

POU 的所有编辑器都由声明部分和正文组成。它们由屏幕隔板隔开。

LD 编辑器是一个图形编辑器。最重要的命令位于上下文菜单中(鼠标右键或 <Ctrl>+<F10>)。

有关元素的信息,请参 第 2.2.6 章“梯形图(LD)”。考虑选项对话框给出的有关注释、地址输入和替


代外观的可能性(参 第 5.4.1 章)。

CoDeSysV2.3版本 5-35
图形编辑器

LD 编辑器中的光标位置
以下位置可以是光标位置,其中功能块和程序访问可以作为联系人进行处理。带有 EN 输入的 POU 和与
其连接的其他 POU 的处理方式与功能块图中的处理方式相同。有关编辑此网络部件的信息,请参 第
5.4.2 章 “FBD 编辑器”。

1. 每个文本字段(可能的光标位置以黑色框住)

2. 每个触点或功能块

3. 每个线圈

4. 触点和线圈之间的连接线。

梯形图以特殊方式使用以下菜单命令:

在 LD-Editor 中移动元素或名称
通过“拖放”,可以将元件(触点、线圈、功能块)或元件名称(变量名称、地址、注释)移动到 LDPOU 中的
不同位置。

为此,请选择所需的元件(触点、线圈、功能块)并将其拖动-按住鼠标键-远离当前位置。因此,在POU
的所有网络中,元素可能移动到的所有可能位置都将由灰色填充的矩形表示。

将元素移动到这些位置之一,然后松开鼠标键:元素将插入到新位置。

但是,如果将元素移动到另一个元素的名称(变量名称),则名称字段将显示为绿色阴影。如果您随后松
开鼠标键,则以前的名称将被“拖动”的名称替换。如果另外显示地址和注释(选项),则复制也将应用于
这些地址和注释。

5-36 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

'Insert' 'Network ( before ) ' in LD

象征:
此命令在梯形图编辑器中插入网络。如果已经存在网络,则新网络将插入到当前聚焦网络之前。

LD 中的 'Insert''Network (after)'

象征:
此命令在梯形图编辑器中插入网络。如果已经存在网络,则新网络将插入到当前聚焦网络之后。

LD 中的“插入”“联系人”

符号:快捷键:<Ctrl>+<K>
在 LD 编辑器中使用此命令可在网络中标记位置的前面插入触点。

如果标记的位置是线圈或触点与线圈之间的连接线,则新触点将串行连接到以前的触点连接。

联系人预设了文本“???”。您可以单击此文本并将其更改为所需的变量或所需的常量。为此,您还可以使
用输入助手。
如果在“功能块和梯形图选项”中正确配置了地址而不是变量名称,请考虑输入地址而不是变量名称的可能
性(参 第 5.4.1 章:注释、换行符、“附加”“选项”)。

还要考虑“带换行符的网络”选项,您也可以在梯形图选项中激活该选项。

LD 中的 'Insert''Contact (negated)'

符 号 : 快 捷 键 : <Ctrl> + <G>
此命令插入否定的触点。与命令“插入”“联系人”和“附加”“否定”相同,它们组合也可用于插入否定的触
点。

LD 中的“插入”“并联触点”

符号:快捷键:<Ctrl>+<R>
在 LD 编辑器中使用此命令插入与网络中标记位置平行的触点。
如果标记的位置是线圈或触点与线圈之间的连接,则新触点将与整个先前的触点连接并联。

联系人预设了文本“???”。您可以单击此文本并将其更改为所需的变量或所需的常量。为此,您还可以使
用输入助手。
有关输入地址、在变量名称中使用换行符以及每个联系人使用注释的可能性,请参阅“功能块和梯形图选
项”的描述(参 第 5.4.1 章:注释、换行符、“附加”“选项”)。

CoDeSysV2.3版本 5-37
图形编辑器

LD 中的 'Insert''ParallelContact (negated)'

符 号 : 快 捷 键 : <Ctrl> + <D>
此命令插入一个否定的并联触点。与命令“插入”“并联触点”和“附加”“否定”也是如此,它们组合也可用
于插入否定的平行触点。

LD 中的“插入”“线圈”

符号:快捷键:<Ctrl>+<L>
您可以在 LD 编辑器中使用此命令插入与前一个线圈平行的线圈。
如果标记的位置是触点和线圈之间的连接,则新线圈将作为最后一个插入。如果标记的位置是线圈,则新
线圈将直接插入其上方。
线圈的默认设置为文本“???”。您可以单击此文本并将其更改为所需的变量。为此,您还可以使用输入助
手。
有关输入地址、在变量名称中使用换行符以及使用每个触点(线圈、功能块)的注释的可能性,请参阅“
功能块和梯形图选项”的描述(参 第 5.4.1 章:注释、换行符、“附加”“选项”)。

LD 中的“插入”“设置”线圈”

符 号 : 快 捷 键 : <Ctrl> + <I>
此命令插入一个固定线圈。与命令“插入”“线圈”和“附加”“设置/重置”相同,它们组合起来也可用于获得
设置线圈。

LD 中的“插入”“复位”线圈

象征:
此命令插入复位线圈。与命令“插入”“线圈”和“附加”“设置/复位”相同,它们组合在一起也可用于获得复
位线圈。

LD 中的“插入”“功能块”

符号:快捷键:<Ctrl>+<B>
使用此命令可将运算符、功能块、函数或程序作为POU插入。为此,必须标记触点和线圈或线圈之间的
连接。新的 POU 最初的名称为 AND。如果您愿意,可以将此名称更改为其他名称。为此,您还可以使
用输入助手。提供标准和自定义 POU。

POU的第一输入放在输入连接上,第一输出放在输出连接上;因此,这些变量必须绝对是 BOOL 类型。


POU 的所有其他输入和输出都填充了文本“???”。这些先前的条目可以更改为其他常量、变量或地址。
为此,您还可以使用输入助手。

有关输入地址、在变量名称中使用换行符以及使用每个触点(线圈、功能块)的注释的可能性,请参阅“
功能块和梯形图选项”的描述(参 第 5.4.1 章:注释、换行符、“附加”“选项”)。

LD中带有EN输入的POU
如果要将 LD 网络用作调用其他 POU 的 PLC,则必须将 POU 与 EN 输入合并。这种POU与线圈并联。
除了这样的 POU 之外,您还可以进一步开发网络,如功能块图所示。您可以在 ENPOU 的菜单项“插
入”、“在块处插入”下找到插入命令。

具有 EN 输入的运算符、功能块、程序或函数的执行方式与功能块图中相应的 POU 相同,只是其执行在 EN


输入上受控制。该输入附在线圈和触点之间的连接线上。如果此连接携带信息“On”,则将评估 POU。

5-38 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

如果已经使用 EN 输入创建过一次 POU,则此 POU 可用于创建网络。这意味着来自常用运算符、函数


和功能块的数据可以在 ENPOU 中流动,而 ENPOU 可以将数据传送到此类常用 POU。

因此,如果要在LD编辑器中对网络进行编程,就像在FBD中一样,则只需先在新网络中插入EN算子即
可。随后,从此 POU 中,您可以继续从您的网络进行构建,就像在 FBD 编辑器中一样。这样形成的网
络将像 FBD 中的相应网络一样运行。

LD 中 的 'Insert' 'Box with EN'

象征:
使用此命令将带有 EN 输入的功能块、运算符、函数或程序插入 LD 网络。

标记的位置必须是触点和线圈之间的连接(光标位置 4)或线圈(光标位置 3)。新的 POU 平行插入线


圈及其下方;它最初包含名称“AND”。如果您愿意,可以将此名称更改为其他名称。为此,您还可以使用
输入助手。

LD 中 的 'Insert' 'Insert at Blocks'


使用此命令,您可以将其他元素插入到已插入的 POU 中(也是带有 EN 输入的 POU)。此菜单项下方
的命令可以在与功能块图中相应命令相同的光标位置执行。

使用输入,您可以向 POU 添加新输入。


使用输出,您可以向 POU 添加新输出。
使用 POU,您可以插入一个新的 POU。该过程类似于“插入”、“POU”下描述的过程。
使用Assign,您可以插入变量的赋值。首先,这由三个问号“???”表示,您可以对其进行编辑并替换为所
需的变量。为此,可提供输入帮助。

LD中的“插入”“上升沿检测”

象征:
此命令插入一个R_TRIG功能块,用于检测输入信号的上升沿(FALSE->TRUE)。与命令“插入”、“功
能块”相同,可用于插入任何可用的功能块。

LD 中的“插入”、“下降沿检测”

象征:
此命令插入一个F_TRIG功能块,用于检测输入信号的上升沿(TRUE->FALSE)。与命令“插入”、“功
能块”相同,可用于插入任何可用的功能块。

LD 中的 'Insert''Timer (TON)'

象征:
此命令插入TON类型的定时器功能块。这用于获得开启延迟(输入信号的延迟传递)。对于插入,与命
令“插入”“功能块”相同,也可用于插入 TON 模块。

CoDeSysV2.3版本 5-39
图形编辑器

LD 中 的 'Insert' 'Jump'
使用此命令,您可以在选定的LD编辑器中并行插入平行跳转,位于前一个线圈的末尾。如果传入行传递
值“On”,则跳转到指定的标签。

标记的位置必须是触点和线圈或线圈之间的连接。
跳转与文本“???”一起出现。您可以单击此文本并更改所需的标签。

LD 中 的 'Insert' 'Return'
在 LD 编辑器中,您可以使用此命令在前一个线圈的末尾并行插入 Return 指令。如果传入线路提供值
“On”,则此网络中 POU 的处理将中断。

标记的位置必须是触点与线圈或线圈之间的连接。

LD 中的“Extras”“粘贴后”
在LD编辑器中使用此命令将剪贴板的内容粘贴为标记位置下方的串行触点。仅当剪贴板的内容和标记的
位置是由联系人组成的网络时,才可以使用此命令。

LD 中的“Extras”“粘贴在下面”
在LD编辑器中使用此命令将剪贴板的内容作为平行触点插入到标记位置下方。仅当剪贴板的内容和标记
的位置是由联系人组成的网络时,才可以使用此命令。

LD 中的“Extras”“粘贴在上面”
在LD编辑器中使用此命令可将剪贴板的内容作为平行触点插入到标记位置上方。仅当剪贴板的内容和标
记的位置是由联系人组成的网络时,才可以使用此命令。

LD 中 的 'Extras' 'Negate'

符号:快捷键:<Ctrl>+<N>
使用此命令可否定当前光标位置的触点、线圈、跳转或返回指令或 ENPOU 的输入或输出。

在 线 圈 的 括 号 之 间 或 触 点 的 直 线 之 间 , 将 出 现 斜 杠 ( (/) 或|/|)。如果ENPOU有跳转、返回或输入或
输出,则连接处会出现一个小圆圈,就像在 FBD 编辑器中一样。

线圈现在将输入连接的否定值写入相应的布尔变量中。此时,如果相应的布尔变量携带值 FALSE,则否
定触点将输入状态切换到输出状态。

如果标记了跳转或返回,则此跳转或返回的输入将被否定。
否定可以通过重新否定来取消。

LD 中的“附加”“设置/重置”

象征:
如果在线圈上执行此命令,则将收到一个 SetCoil 。这样的线圈永远不会覆盖相应布尔变量中的值
TRUE。这意味着,一旦将此变量的值设置为 TRUE,它将始终保持为 TRUE。SetCoil在线圈符号中标
有“S”。

如果您再次执行此命令,那么您将获得一个复位线圈。这样的线圈永远不会覆盖相应布尔变量中的值
FALSE。这意味着,一旦将此变量的值设置为 FALSE,它将始终保持为 FALSE。复位线圈的线圈符号

5-40 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

中带有“R”。

如果重复执行此命令,线圈将在设置、复位和正常线圈之间交替。

在线模式下的梯形图
在联机模式下,梯形图中处于“开”状态的触点和线圈显示为蓝色。同样,所有带有“On”的线也都涂成蓝
色。在功能块的输入和输出中,指示相应变量的值。

断点只能在网络上设置;通过使用步进,您可以在网络之间跳转。
如果将鼠标指针短暂地放在变量上方,则有关变量的类型、地址和注释将显示在工具提示中。

5.4.4 顺序功能图编辑器
以下是在 SFC 中写入的 POU 在CoDeSys编辑器中的显示方式:

POU 的所有编辑器都由声明部分和正文组成。它们由屏幕隔板隔开。

顺序功能图编辑器是一个图形编辑器。最重要的命令位于上下文菜单中(鼠标右键或<Ctrl><F10>)。工
具提示在脱机和联机模式下以及缩放状态下显示步骤、过渡、跳转、跳转标签、限定符或关联操作的全名
或表达式。

有关顺序功能图的信息,请参 第 2.2.3 章“顺序功能图”。


顺序功能图的编辑必须同意证监会的详情。关于这些,以下菜单项将发挥作用。

在证监会中标记块
标记块是一组包含在虚线矩形中的 SFC 元素。
您可以通过将鼠标指向某个元素并按鼠标左键来选择该元素(步骤、过渡或跳转),也可以使用箭头键。
要标记一组包含多个元素的元素,请为已标记的块按 <Shift>,然后选择该组左下角或右下角的元素。生
成的选择是包含这两个元素的最小内聚元素组。

CoDeSysV2.3版本 5-41
图形编辑器

请注意,一个步骤只能与上一个或下一个过渡一起删除!

'插入''StepTransition (before)'

符号:快捷键:<Ctrl>+<T>
此命令在 SFC 编辑器中插入一个步骤,然后在标记块前面插入一个过渡。
您可以选择自动指定的步骤名称“Step_<x>”并将其替换为另一个字符串,也可以使用过渡名称。

注意: 重命名步骤时,请注意,不能添加任何注释。示例:“Step_xy (*counter*)”是不允许的!

'Insert''StepTransition (after)'

符号:快捷键:<Ctrl>+<E>
此命令在 SFC 编辑器中插入一个步骤,然后在标记块中的第一个过渡之后插入过渡。关于步骤名称和过
渡名称,请参阅上面的“插入”、“步骤过渡(之前)”。

删除步骤和过渡
步骤只能与上一个或下一个转换一起删除。为此,在步进和过渡周围放置一个选择框,然后选择命令“编
辑”、“删除”或按 <Del> 键。

'插入''备用分支(右)'

符号:快捷键:<Ctrl>+<A>
此命令在 SFC 编辑器中插入一个备用分支,作为标记块的右分支。为此,标记的块必须以过渡开始和结
束。然后,新分支由一个转换组成。

'插入''备用分支(左)'

象征:
此命令在 SFC 编辑器中插入一个备用分支,作为标记块的左分支。为此,标记的块必须以过渡开始和结
束。然后,新分支由一个转换组成。

'插入''并行分支(右)'

符号:快捷键:<Ctrl>+<L>
此命令在 SFC 编辑器中插入一个并行分支,作为标记块的右分支。为此,标记的块必须以步骤开始和结
束。然后,新分支由一个步骤组成。若要允许跳转到已创建的并行分支,必须为这些分支提供跳转标签。

5-42 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

'插入''并行分支(左)'

象征:
'此命令在SFC 编辑器中插入一个并行分支,作为标记块的左分支。为此,标记的块必须以步骤开始和结
束。然后,新分支由一个步骤组成。要允许跳转到已创建的并行分支,必须为这些分支提供跳转标签(参
'Extras''Addlabeltoparallelbranch')。

'插入''跳转'
'此命令在 SFC 编辑器中插入一个跳转,该跳转位于标记块所属的分支末尾。为此,分支必须是备用分
支。
然后,可以选择插入的跳转中插入的文本字符串“Step”,并将其替换为要跳转到的平行分支的步骤名称
或跳转标签。
关于步骤名称,请参阅上面的“插入”、“步骤转换(之前)”。

'插入''过渡-跳转'

象征:
此命令在 SFC 编辑器中插入一个过渡,然后在所选分支的末尾插入一个跳转。为此,分支必须是并行分
支。
然后,可以选择插入的跳转中插入的文本字符串“Step”,并将其替换为要跳转到的平行分支的步骤名称
或跳转标签。
关于步骤名称和过渡名称,请参阅上面的“插入”、“步骤过渡(之前)”。

'insert''添加entry-action'
使用此命令,您可以向步骤添加输入操作。入口操作仅在步骤变为活动状态后执行一次。entry-action 可
以用您选择的语言实现。
A 有进入操作的步骤由左下角的“E”表示。

'插入''添加退出操作'
使用此命令,您可以向步骤添加 exit-action。在停用该步骤之前,exit-action 仅执行一次。exit-action 可
以用您选择的语言实现。
A 有退出操作的步骤由右下角的“X”表示。

'Extras''粘贴并行分支(右)'
此命令将剪贴板的内容粘贴为标记块的右平行分支。为此,标记的块必须以步骤开始和结束。同样,剪贴
板的内容必须是以步骤开头和结尾的 SFC 块。

'Extras''将标签添加到并行分支'
为了给新插入的并行分支提供跳转标签,必须标记并行分支之前发生的转换,并且必须执行命令“将标签
添加到并行分支”。此时,并行分支将获得一个由“Parallel”和附加序列号组成的标准名称,可以根据标识
符名称的规则对其进行编辑。在以下示例中,“Parallel”被替换为“Par_1_2”,并且跳转到过渡“End”被引
导到此跳转标签。

CoDeSysV2.3版本 5-43
图形编辑器

删除标签
可以通过删除标签名称来删除跳转标签。

'Extras''粘贴后'
此命令在标记块的第一步或第一次转换后将 SFC 块粘贴到剪贴板上。(正常复制会将其粘贴到标记块的
前面。如果生成的 SFC 结构正确,则现在将根据语言规范执行此操作。

'Extras' 'Zoom Action/Transition'


快捷键:<Alt>+<Enter>
标记区块的第一步的动作或市场区块的第一个过渡的过渡体以相应的语言加载到编辑器中,并用该语言编
写该语言。如果操作或过渡正文为空,则必须选择编写该操作或过渡正文的语言。

请注意,在编辑器窗口中写入的过渡条件将优先于可能直接写入过渡标记的条件。示例:如果此处为
i>100,则转换条件将为 FALSE,尽管在标记处输入了 TRUE!

'额外内容''清晰的动作/过渡'
使用此命令,您可以删除标记块的第一步或第一个过渡的过渡主体的操作。

如果在某个步骤中仅实现操作、进入操作或退出操作,则命令将删除相同的操作。否则,将出现一个对话
框,您可以选择要删除的一个或多个操作。

如果光标位于 IEC 步骤的操作中,则只会删除此关联。如果选择了具有关联操作的 IEC 步骤,则将删除


此关联。在具有多个操作的 IEC 步骤中,将出现一个选择对话框。

5-44 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

'附加''步骤属性'
使用此命令,您可以打开一个对话框,您可以在其中编辑标记步骤的属性。

用于编辑步骤属性的对话框

您可以利用步骤属性对话框中的三个不同条目。在“最短时间”下,输入处理此步骤应花费的最短时间
度。在“最 时间”下,输入处理此步骤应花费的最 时间 度。请注意,这些条目属于 TIME 类型,因
此您使用 TIME 常量(即 T#3s)或 TIME 类型的变量。

在“注释”下,可以向步骤插入注释。在“附加”“选项”下打开的“顺序功能图表选项”对话框中,您可以定
义在 间作业控制编辑器中是否显示步骤的注释、时间设置或不显示任何内容。在右侧的步骤旁边,注释
或时间设置或两者都不会显示。

除了步骤名称之外,那些由于选项设置而未显示的属性可以显示在工具提示中,当光标放在步骤框的右上
角或右下角时,工具提示会出现。

如果超过最 时间,则设置用户可以查询的 SFC 标志。

该示例显示了一个步骤,其执行应至少持续 2 秒,最多持续 10 秒。在联机模式下,除了这两个时间之


外,还会显示该步骤已处于活动状态的时间。

'Extras''时间概览'
使用此命令,您可以打开一个窗口,您可以在其中编辑 SFC 步骤的时间设置。
在时间边界概述中,将显示 间作业控制POU的所有步骤。如果输入了步骤的时间边界,则时间边界将
显示在步骤的右侧(首先是下限,然后是上限)。您还可以编辑时间边界。为此,请单击概述中的所需步
骤。然后,该步骤的名称将显示在窗口下方。转到“最短时间”或“最大时间”字段,然后在此处输入所需
的时间边界。如果使用“确定”关闭窗口,

然后,将存储所有更改。

CoDeSysV2.3版本 5-45
图形编辑器

SFCPOU 的时间边界概述

在此示例中,步骤 2 和 6 具有时间边界。Shift1 至少持续 2 秒,最多持续 10 秒。Shift2 至少持续 7 秒,


最多持续 8 秒。

'附加''选项'
使用此命令,您可以打开一个对话框,您可以在其中为 SFCPOU 设置不同的选项。
在“台阶高度”下,您可以在 SFC 编辑器中输入 SFC 台阶可以有多高。 4 是此处的标准设置。在“步
宽度”下,可以输入步 应为多少列宽。 6 是此处的标准设置。

您还可以预设“在步骤中显示”,即哪些属性,定义为“额外”“步骤属性”应显示在步骤旁边。选择“注释
”、“时间限制”或“无”:
• 如果设置了“无”,则定义的注释和时间限制仍可以显示在工具提示中,当光标放在步骤框的右下角
时,工具提示会出现。
• 如果设置了“注释”,则定义的注释和时间限制可以显示在工具提示中,当光标放在步骤框的右上角时
会出现。
• 如果设置了“时间限制”,则定义的注释和时间限制仍可显示在工具提示中,当光标位于步骤框的右下
角时,工具提示会出现。
顺序功能图选项对话框

5-46 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

'Extras''关联操作'
使用此命令,操作和布尔变量可以与 IEC 步骤相关联。
在IEC步骤的右侧和旁边,附加了一个额外的分隔框,用于关联操作。它在左侧字段中预设为限定符“N”
和名称“Action”。两个预设都可以更改。为此,您可以使用输入助手。

一个 IEC 步骤最多可以分配 9 个操作。


使用“Project”“”AddAction“命令 在 SFCPOU 的对象管理器中创建 IEC 步骤的新操作。

'Extras''使用IEC-Steps'

象征:
如果激活此命令(由菜单项前面的复选标记和工具栏中的打印符号表示),则在插入步骤转换和并行分支
时将插入 IEC 步骤,而不是简化步骤。

如果打开此选项,则在创建新的 SFCPOU 时,Init 步骤将设置为 IEC 步骤。


此设置保存在文件“CoDeSys.ini”中,并在CoDeSys再次启动时恢复。

在线模式下的顺序功能图
当顺序功能图编辑器处于在线模式时,当前活动的步骤将显示为蓝色。如果您在“附加”“选项”下设置了
它,则时间管理将在步骤旁边描述。在您设置的下限和上限下,将出现第三个时间指示器,您可以从中读
取该步骤已经处于活动状态的时间。

具有活动步骤(Shift1)和断点(Step10)的顺序功能图

CoDeSysV2.3版本 5-47
图形编辑器

在上图中,所描述的步骤已经激活了 8 秒和 410 毫秒。但是,该步骤必须处于活动状态至少 7 分钟,然


后才能离开该步骤。
使用“在线”“切换断点”,可以在步骤上设置断点,也可以在所使用语言允许的位置设置操作中的断点。
然后,在执行此步骤之前或在程序中操作的位置之前停止处理。设置断点的步骤或程序位置标记为浅蓝
色。

如果多个步骤在并行分支中处于活动状态,则接下来将处理其操作的活动步骤将显示为红色。

如果已使用 IEC 步骤,则在线模式下的所有活动操作将显示为蓝色。


使用命令“在线”、“单步执行”,它总是步入执行操作的下一步。如果当前位置是:

a 线性处理中的一个步骤或 POU 最右边并行分支中的一个步骤,执行从 SFCPOU 返回给调用方。如果


POU 是主程序,则下一个周期开始。
a 最右边的并行分支中的某个步骤外,执行将跳转到下一个并行分支中的活动步骤。

3S 操作中的最后一个断点位置,执行将跳转到 SFC 的调用方。


IEC 操作中的最后一个断点位置,执行将跳转到 SFC 的调用方。
输入操作或输出操作中的最后一个断点位置,执行将跳转到下一个活动步骤。

通过“在线”“介入”,甚至可以进入操作。如果要跳转到输入、输出或 IEC 操作,则必须在此处设置断


点。在操作中,用户可以使用相应编辑器的所有调试功能。

如果将鼠标光标停留在声明编辑器中的变量上一小段时间,则变量的类型、地址和注释将显示在工具提示

请注意:如果您重命名一个步骤并在此步骤处于活动状态时执行在线更改,则程序将以未定义状态停止!

序列中元素的处理顺序:
1. 首先,重置此序列中使用的 IEC 操作中的所有操作控制块标志(但是,不会重置在操作中调用的 IEC 操作的标
志)。
2. 所有步骤都按照它们在顺序中假定的顺序(从上到下和从左到右)进行测试,以确定是否提供了执行输出操作的
要求,如果是这种情况,则执行。

3. 所有步骤都按照它们在序列中假设的顺序进行测试,以确定是否提供了输入操作的要求,如果是这种情况,则执
行此要求。
4. 对于所有步骤,以下操作均按照它们在顺序中假定的顺序完成:
- 如果适用,将运行时间复制到相应的步骤变量中。
- 如果适用,将测试任何超时,并根据需要提供 SFC 错误标志。
- 对于非IEC步骤,现在执行相应的操作。
5. 序列中使用的IEC操作按字鯦顺序执行。这是通过操作列表分两次完成的。在第一轮中,将执行在当前周期中停
用的所有 IEC 操作。在第二遍中,将执行当前周期中处于活动状态的所有 IEC 操作。

6. 评估转换:如果当前周期中的步骤处于活动状态,并且下一个转换返回 TRUE(如果适用,则已过最短活动时
间),则激活下一步。

关于行动的实施,必须注意以下几点:
一个动作可以在一个周期中执行多次,因为它与多个序列相关联。(例如,SFC 可以有两个 IEC 操作 A
和 B,它们都在 SFC 中实现,并且都称为 IEC 操作 C;然后在 IEC 操作 A 和 B 中可以在同一周期中处于
活动状态,此外,在这两个操作中,IEC 操作 C 可以处于活动状态;然后 C 将被调用两次)。

如果在SFC的不同级别同时使用相同的IEC操作,则由于上述处理顺序,这可能会导致不良影响。因此,
在这种情况下会发出错误消息。在处理使用旧版本的CoDeSys 创建的项目时,可能会出现这种情况。

5-48 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

注意:在过渡中的监视表达式(例如A和B)中,仅显示过渡的“总值”。

5.4.5 连续功能图编辑器(CFC)
它看起来像一个使用连续功能图编辑器(CFC)生成的块:

连续函数图编辑器不使用捕捉网格,因此可以将元素放置在任何位置。顺序处理列表的元素包括框、输
入、输出、跳转、标签、返回和注释。这些元素的输入和输出可以通过用鼠标拖动连接来连接。连接线将
自动绘制。在考虑现有连接的情况下绘制尽可能短的连接线。当元素移动时,连接线会自动调整。如果出
现仅因空间不足而无法绘制连接线的情况,则在输入和相关输出之间将显示一条红线。一旦有空位,这条
线将立即转换为连接线。

与通常的功能块图编辑器 FBD 相比,连续功能图的一个优点是可以直接插入反馈路径。

最重要的命令可以在上下文菜单中找到

光标在 CFC 中的位置


每个文本都是一个可能的光标位置。所选文本以蓝色阴影显示,可以修改。
在所有其他情况下,当前光标位置由由点组成的矩形显示。以下是所有可能的光标位置列表,并附有示
例:
1. 元素框的主干,输入,输出,跳转,标签,返回和评论。

CoDeSysV2.3版本 5-49
图形编辑器

2. 元素框、输入、输出、跳转、标签、返回和注释的文本字段以及连接标记的文本字段

3. 元素框的输入、输入、输出、跳转和返回

4. 元素框和输入的输出:

“插入”“框”在 CFC 中

符号:快捷键:<Ctrl>+<B>
此命令可用于粘贴运算符、函数、功能块和程序首先,它总是插入一个“AND”运算符。这可以通过选择
和覆盖文本来转换为所有其他运算符、每个函数、每个功能块和每个程序。输入辅助用于从支持的块列表
中选择所需的块。如果新模块具有另一个最小数量的输入,则将附加这些输入。如果新模块的最大输入数
较小,则最后的输入将被删除。

“插入”“输入”在 CFC 中

符 号 : 快 捷 键 : <Ctrl> + <E>
此命令用于插入输入。可以选择提供的文本“???”,并将其替换为变量或常量。输入辅助也可以在这里使
用。

“插入”“输出”在 CFC 中

符号:快捷键:<Ctrl>+<A>
此命令用于插入输出。提供的文本“???”可以选择并替换为变量。输入辅助也可以在这里使用。与输出的
输入关联的值将分配给此变量。

在 CFC 中“插入”“跳转”

符号:快捷键:<Ctrl>+<J>

5-50 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

此命令用于插入跳转。可以选择提供的文本“???”,并将其替换为程序应跳转到的跳转标签。

使用命令“插入'标签'”插入跳转标签。

“插入”“标签”在 CFC 中

符号:快捷键:<Ctrl>+<L>
此命令用于插入标签。可以选择提供的文本“???”并将其替换为跳转标签。在联机模式下,会自动插入用
于标记 POU 结束的 RETURN 标签。
使用命令“插入”跳转“插入跳转。

在 CFC 中 'Insert' 'Return'

符 号 : 快 捷 键 : <Ctrl> + <R>
此命令用于插入 RETURN 命令。请注意,在联机模式下,名称为 RETURN 的跳转标签会自动插入到编
辑器的第一列和最后一个元素之后;在步进中,它会自动跳转到执行离开 POU 之前。

在 CFC 中“插入”“注释”

符 号 : 快 捷 键 : <Ctrl> + <K>
此命令用于插入注释。
使用 <Ctrl>+<Enter> 在注释中获取一个新行。

在 CFC 中“插入”“框的输入”
快 捷 键 : <Ctrl> + <U>
此命令用于在框中插入输入。对于许多运算符来说,输入的数量是可变的(例如,ADD可以有两个或多
个输入)。
要将此类运算符的输入数增加 1,必须选择框本身

在 CFC 中 插 入 ' 'in-pin' , ' 插 入 ' 'out-pin'

象征:
一旦打开宏进行编辑,这些命令就可用。它们用于插入输入或输出引脚作为宏的输入和输出。它们与
POU 的正常输入和输出的不同之处在于它们的显示方式以及它们没有位置索引。

CFC 中的“额外”“否定”

符 号 : 快 捷 键 : <Ctrl> + <N>
此命令用于否定输入、输出、跳转或 RETURN 命令。否定的符号是连接上的一个小十字。

元素块的输入、输出、跳转或返回在选择时被否定。
选择元素块或输入时,该元素块或输入的输出将被否定(光标位置 4)。
可以通过再次否定来删除否定。

CFC 中的“附加”“设置/重置”

符 号 : 快 捷 键 : <Ctrl> + <T>
此命令只能用于元素输出的选定输入。
Set 的符号是 S,Reset 的符号是 R。

CoDeSysV2.3版本 5-51
图形编辑器

如果 VarIn1 提供 TRUE,则 VarOut1 设置为 TRUE。VarOut1 保留此值,即使 VarIn1 弹回 FALSE 也是


如此。
如果 VarIn2 提供 TRUE,则 VarOut2 设置为 FALSE。VarOut2 保留此值,即使 VarIn2 弹回 FALSE。

多次激活此命令会导致输出在设置、重置和正常条件之间切换。

“附加”、“EN/ENO”和CFC

符 号 : 快 捷 键 : <Ctrl> + <I>
此命令用于为选定块(光标位置 3)提供额外的布尔使能输入 EN(启用输入)和布尔输出 ENO(启用输
出)。

在此示例中,仅当布尔变量“condition”为 TRUE 时,才会执行 ADD。执行 ADD 后,VarOut 也将设置为


TRUE。但是,如果后记条件更改为 FALSE,则 ADD 将不再执行,因此 VarOut 仍为 TRUE!下面的示
例显示了如何将值 ENO 用于其他块:

x 应初始化为 1,y 应初始化为 0。块右上角的数字表示命令的执行顺序。

x 将增加 1,直到达到值 10。这会导致块 LT(0)的输出提供值 FALSE,并且 SUB(3)和 ADD(5)


将被执行。x 设置回值 1,y 增加 1。只要 x 小于 10,就会再次执行 LT(0)。因此,y 计算 x 通过值范
围 1 到 10 的次数。

'附加''属性...”在 CFC 中
函数和功能块的常量输入参数(VAR_INPUTCONSTANT)不会直接显示在连续函数图编辑器中。当选
择相关块的主干,然后选择命令“附加”、“属性”或简单地双击主干时,可以显示这些值并更改其值。此

5-52 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

时将打开“编辑参数”对话框:

“属性”对话框

可以更改常量输入参数(VAR_INPUTCONSTANT)的值。这里需要在“值”列中标记参数值。再次单击
鼠标或按空格键可以对其进行编辑。通过按 <Enter> 键或按 <Escape> 来确认对值的更改,拒绝更改。“
确定”按钮 存储所做的所有更改。

请注意: 此功能以及带有关键字“VAR_INPUTCONSTANT”的变量的关联声明仅对 CFC 编辑器有影响。在 FBD 编


辑器中,无论声明为 VAR_INPUT 还是 CONSTANT,所有 INPUT 变量都将始终显示在一个框中VAR_INPUT。此
外,对于文本编辑器,这没有任何区别。

选择 CFC 中的元素
单击元素的后备箱以将其选中。
要标记更多元素,请按<Shift>键并依次单击所需的元素,或者将鼠标左键拖动鼠标在要标记的元素上。

命令 “Extras”、“Selectall”一次标记所有元素。

CFC中的移动元件
当按下<Shift>键时,可以使用箭头键移动一个或多个选定的元素。另一种可能性是使用按下的鼠标左键
移动元素。这些元素通过释放鼠标左键来放置,只要它们不会覆盖其他元素或超过编辑器的预计大小。在
这种情况下,标记的元素会跳回其初始位置,并发出警告音。

复制 CFC 中的元素
可以使用命令“编辑”“复制”复制一个或多个选定的元素,并使用命令“ 编辑”“粘贴”插入一个或多个选
定的元素。

创建连接
一个元素的输入可以精确地连接到另一个元素的输出。一个元素的输出可以连接到许多其他元素的输入。

将元素 E2 的输入与元素 E1 的输出连接起来有多种可能性。

CoDeSysV2.3版本 5-53
图形编辑器

将鼠标放在元素 E1 的输出上,用鼠标左键单击,按住鼠标左键并将鼠标光标拖动到元素 E2 的输入上,


然后松开鼠标左键。在使用鼠标拖动操作期间,从元素 E1 的输出到鼠标光标建立了连接。

将鼠标放在元素 E2 的输入上,用鼠标左键单击,按住鼠标左键并将鼠标光标拖动到元素 E1 的输出上,


然后松开鼠标左键。
移动其中一个元素 E1 或 E2 并放置它,方法是松开鼠标左键,使元素 E2 的输出和元素 E1 的输入接
触。
如果元素 E2 是具有自由输入的块,也可以通过将鼠标从 E1 的输出拖动到 E2 的主干来建立连接。松开
鼠标键时,将创建与 E2 上最高位置的自由输入的连接。如果块 E2 没有自由输入,但是一个可以添加输
入的运算符,则将自动生成新的输入。

使用此方法可以将模块的输出和输入连接在一起(反馈路径)。要在两个引脚之间建立连接,请用鼠标左
键单击一个引脚,按住按钮,从而将连接拖动到所需的引脚,然后松开按钮。如果在拖动连接期间延伸到
编辑器的工作区域之外,则会自动滚动。对于简单数据类型,在连接期间执行类型测试。如果两个引脚的
类型不兼容,则光标将更改为“禁止访问”。对于复杂的数据类型,不进行任何测试。

更改连接
元素 E1 的输出和元素 E2 的输入之间的连接可以很容易地更改为元素 E1 的输出和元素 E3 的输入之间
的连接。鼠标点击E2的输入,按住鼠标左键,将鼠标光标移动到E3的输入端,然后松开。

删除连接
有许多方法可以消除元素 E1 的输出和元素 E2 的输入之间的连接:

选择元素 E1 的输出并按 <Delete> 键或执行命令“Edit”、“Delete”。


如果 E1 的输出连接到多个输入,则多个连接将同时移除。

选择元素 E2 的输入并按 <Delete> 键或执行命令“Edit”、“Delete”。


用鼠标选择 E2 的输入,按住鼠标左键并将连接从输入拖到 E2 离开。当鼠标左键在屏幕的空闲区域释放
时,连接将被删除。

'Extras''连接标记'
连接也可以由连接器(连接标记)而不是连接线表示。在这里,输出和关联的输入添加了一个连接器,该
连接器被赋予了唯一的名称。

如果两个元素之间已经存在连接,现在应该由连接器表示,则标记连接线的输出,并选择菜单点“附加”“
连接标记”。下图显示了选择此菜单点之前和之后的连接。

程序以 M 开头,但可以更改唯一名称作为标准名称连接器名称存储为输出参数,但可以在输入和输出时
进行编辑。

5-54 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

请务必知道,连接器名称与连接输出的属性相关联,并与其一起存储。

1. 在输出端编辑连接器:
如果替换了连接器中的文本,则输入端的所有关联连接器都将采用新的连接器名称。但是,一个人不能选
择已经属于另一个人的名字
连接标记,因为会违反连接器名称的唯一性。

2. 在输入处编辑连接器:如果连接器中的文本被替换,它也将在另一个 POU 上的相应连接标记中被替


换。连接器表示中的连接可以转换为普通连接,因为其中一个连接标记连接的输出(光标位置4),然
后再次选择菜单点
'附加''连接标记'。

“即时”插入输入/输出
如果只选择了一个元素的一个输入或输出引脚,则可以通过在键盘上输入字符串来直接插入相应的输入或
输出元素,并用字符串填充其编辑器字段。

执行顺序
block、output、jump、return 和 label 元素各有一个数字,指示它们的执行顺序。按照此顺序,在运行时
计算各个元素。
粘贴元素时,会根据拓扑序列(从左到右,从上到下)自动给出数字。如果序列已更改,并且所有较高的
数字都增加 1,则新元素将接收其拓扑后继元素的编号。

元素的编号在移动时保持不变。
顺序会影响结果,在某些情况下必须更改。
如果显示序列,则相应的顺序执行编号将显示在元素的右上角。

'额外''订单''显示订单'
此命令用于打开和关闭执行顺序的显示。默认设置是显示它(通过菜单点前面的勾号( )识别)。

执行编号的相关顺序出现在元素块、输出、跳转、返回和标签的右上角。

'Extras''Order''按拓扑顺序排列'
当执行从左到右和从上到下发生时,元素按拓扑顺序排序,也就是说,拓扑排列的元素的数量从左到右和
从上到下递增。连接无关紧要,只有元素的位置很重要。

当执行命令 “Extras”、“Order”、“Ordertopologically”时,所有选定的元素都会按拓扑顺序排列。
通过此过程,所选内容中的所有元素都将从顺序处理列表中取出。然后,从右下角到左上角分别将元素输
入到剩余的顺序处理列表中。每个标记的元素都在其拓扑后继者之前输入到顺序处理列表中,即当编辑器
中的所有元素都根据拓扑序列系统进行排序时,它入到拓扑序列中将在它之后执行的元素之前。这将通过
一个示例来澄清:

CoDeSysV2.3版本 5-55
图形编辑器

选择数字为 1、2 和 3 的元素。如果选择了“拓扑顺序”命令,则首先将元素从顺序处理列表中取出。然


后,Var3、跳转和 AND 运算符一个接一个地再次插入。Var3 放在标签之前并接收数字 2。然后对跳跃进
行排序,并首先接收数字 4,但在插入 AND 后,这个数字变成了 5。由此产生的新执行顺序是:

当引入新生成的块时,默认情况下,它将被放置在顺序处理列表中其拓扑后继者的前面。

' 额 外 服 务 ' ' 订 购 ' 'One up'


使用此命令,除位于顺序处理列表开头的元素外,所有选定元素都将在顺序处理列表中向前移动一位。

' 额 外 ' ' 订 单 ' 'One down'


使用此命令,除位于顺序处理列表末尾的元素外,所有选定元素都将在顺序处理列表中向后移动一位。

'额外服务''订单''先订购'
使用此命令,所有选定的元素将被移动到顺序处理列表的前面,从而保持所选元素组中的顺序。未选定元
素组中的顺序也保持不变。

'额外服务''订单''最后订购'
使用此命令,所有选定的元素将被移动到顺序处理列表的末尾,从而保持所选元素组中的顺序。未选定元
素组中的顺序也保持不变。

'Extras''Order''根据数据流对所有内容进行排序''
此命令影响所有元素。执行顺序由元素的数据流决定,而不是由它们的位置决定。

下图显示了按地形排序的元素。

5-56 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

根据数据流排序前的顺序

选择命令后,存在以下排列方式:
根据数据流排序后的顺序

选择此命令时,首先要发生的是元素按地形顺序排列。然后创建一个新的顺序处理列表。根据输入的已知
值,计算机计算接下来可以处理哪些尚未编号的元素。例如,在上面的“网络”中,块 AND 可以立即处
理,因为其输入端(1 和 2)的值是已知的。块 SUB 只能被处理,因为必须首先知道 ADD 的结果,等
等。

最后插入反馈路径。
数据流排序的优点是,在数据流排序系统中,连接到块输出的输出盒紧跟在它之后,而拓扑排序并不总是
如此。在某些情况下,拓扑排序可以提供另一种结果,而不是按数据流排序,这一点可以从上面的例子中
识别出来。

CoDeSysV2.3版本 5-57
图形编辑器

'Extras''创建宏''

象征:
使用此命令,可以将同时选择的多个POU组装成一个块,该块可以命名为宏。宏只能通过复制/粘贴来复
制,因此每个副本都成为一个单独的宏,其名称可以独立选择。因此,宏不是引用。通过创建宏而切断的
所有连接都会在宏上生成输入引脚或输出引脚。与输入的连接生成一个引脚内。默认名称以 In<n> 的形
式显示在引脚旁边。对于输出的连接,将显示Out<n>。在创建宏之前具有连接标记的受影响连接,将连
接标记保留在宏的 PIN 上。

起初,宏的默认名称为“MACRO”。这可以在宏使用的“名称”字段中进行更改。如果编辑了宏,则宏的名
称将显示在编辑器窗口的标题栏中,并附加到 POU 名称。

示例:选择

宏观:

在编辑器中:

“附加功能”“跳入宏”

象征:
通过此命令或双击宏的主体,将打开宏,以便在关联POU的编辑器窗口中进行编辑。宏的名称显示在标
题栏中追加到 POU 名称之后。

在创建过程中为宏的输入和输出生成的引脚框可以像普通 POU 输入和输出一样进行处理。它们也可以被


移动、删除、添加等。它们的区别仅在于如何
它们被显示并且没有位置索引。要添加,您可以使用按钮(输入)或。
(输出),可在菜单栏中找到。针盒有圆角。图钉框中的文本与宏显示中的图钉名称匹配。

5-58 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

宏框中引脚的顺序遵循宏元素的执行顺序。在高阶索引之前是低阶索引,在较低阶之前是高阶引脚。

宏中的处理顺序是闭合的,换句话说,宏在主POU中宏的位置作为块进行处理。因此,用于操作执行顺
序的命令仅在宏中运行。

'Extras''扩展宏'
使用此命令,将重新展开选定的宏,并将其中包含的元素插入到POU中宏位置的位置。与宏引脚的连接
再次显示为与元素输入或输出的连接。如果由于空间不足而无法在宏框的位置进行宏的扩展,则宏将向右
和向下移动,直到有足够的可用空间。

注意:如果项目保存在项目版本号 2.1 下,则宏同样会全部展开。在转换为其他语言之前,所有宏也将进行扩展。

'Extras''后退一个宏级别', 'Extras''所有宏级别后退'

符号:
一旦打开宏进行编辑,这些命令也可以在工具栏中使用。如果宏相互嵌套,则可以切换到下一个更高或最
高的显示级别。

CFC 中的反馈路径
反馈路径只能直接显示在连续功能图编辑器中,而不能显示在通常的功能块图编辑器中。这里应该注意的
是,块的输出总是带有一个内部中间变量。对于运算符来说,中间变量的数据类型来自输入的最大数据类
型。

常量的数据类型是从最小的数据类型中获取的,即常量“1”采用数据类型SINT。如果现在执行带有反馈和
常量“1”的加法,则第一个输入给出数据类型 SINT,第二个输入由于反馈而未定义。因此,中间变量也
属于 SINT 类型。然后,中间变量的值才会分配给输出变量。

下图显示了带有反馈的加法和带变量的加法。此处的变量 x 和 y 应为 INT 类型。

这两个添加项之间存在差异:
变量 y 可以用不等于零的值进行初始化,但对于左加法的中间变量来说,情况并非如此。

左边加法的中间变量的数据类型为 SINT,而右边的中间变量的数据类型为 INT。变量 x 和y在第 129 次调用


后具有不同的值。变量 x 虽然是 INT 类型,但包含值 127,因为中间变量已溢出。另一方面,变量 y 包
含值 129。

在线模式下的CFC
监测:
输入和输出的值显示在输入或输出框中。不监视常量。对于非布尔变量,将展开这些框以容纳显示的值。
对于布尔连接,如果值为 TRUE,则变量名称和连接将显示为蓝色,否则它们将保持黑色。

CoDeSysV2.3版本 5-59
图形编辑器

内部布尔连接也以蓝色显示为 TRUE 状态,否则为黑色。内部非布尔连接的值显示在连接输出引脚上带


有圆角的小框中。

宏中的 PIN 像输入框或输出框一样受到监视。

带有连接标记的非布尔连接在连接标记中显示其值。对于布尔连接,如果线的值为TRUE,则线和标记名
称将显示为蓝色,否则为黑色。

流控制:
打开流量控制后,将使用在项目选项中选择的颜色标记已遍历的连接。

断点:
可以在具有处理序列顺序索引的所有元素上设置断点。程序的处理将在执行相应的元素之前停止,该元素
用于POU和输出,在分配输入之前,对于跳转标签,在执行具有下一个索引的元素之前。元素的处理序
列索引用作“断点”对话框中的断点位置。

选定元素的断点设置可通过 F9 键或通过“在线”或“附加”菜单或编辑器上下文菜单中的“断点开/关”菜单
项完成。如果在元素上设置了断点,则下次执行“断点开/关”命令时,该断点将被擦除并反转。此外,可
以通过双击元素上的断点来切换该断点。

断点以在项目选项中输入的颜色显示。
RETURN标签:
在在线模式下,在编辑器的第一列和最后一个元素之后自动生成一个名为“RETURN”的跳转标签。此标
签标记 POU 的结束,并在执行离开 POU 之前单步执行时跳转到此标签。宏中不会插入 RETURN 标
记。
步进:
使用“单步执行”时,具有下一个高阶索引的元素将始终被跳转到。如果当前元素是宏或 POU,则当“单步
执行”生效时,其实现将分支。如果从那里执行“单步执行”,则其顺序索引跟随宏的元素将被跳转到。

5-60 CoDeSysV2.3版本
5 -CoDeSys 中的编辑器

缩放到POU
快捷键:<Alt>+<Enter>
使用此命令,选定的 POU 将加载到其编辑器中。如果光标位于文本编辑器中的 POU 名称上,或者在图
形编辑器中选择了 POU 框,则该命令可在上下文菜单(<F2>)或“附加”菜单中使用。

如果要处理来自库的 POU,则会调用库管理器,并显示相应的 POU。

CoDeSysV2.3版本 5-61
图形编辑器

5-62 CoDeSysV2.3版本
6 - 资源

6 资源

6.1 超过view 资源
在对象管理器的“资源”注册卡中,有一些对象用于配置和组织项目以及跟踪变量的值:

可以在整个项目中使用的全局变量;项目的全局变量以及库。

用于在 CoDeSys 项目中组织警报系统的警报配置。


库管理器,用于处理项目中包含的所有库。
用于记录在线会话期间活动的日志。
PLC配置,用于配置硬件。
监视和配方管理器,用于指示和预设变量值。
任务配置,用于通过任务控制程序控制。
目标设置,用于选择硬件平台(目标),如果可用于自定义目标特定参数。

工作区作为项目选项的图像。
根据目标设置,以下资源也可能可用:
用于管理变量的参数管理器,网络中的其他参与者也可以访问这些变量。只有在相应的目标设置中定义
时,此功能才可用。
PLC浏览器,用于监控来自PLC的信息。
用于变量值的图形记录的采样跟踪。
用于链接外部工具的工具,然后可以在 CoDeSys 中启动。只有在相应的目标设置中定义时,此功能才
可用。
SoftMotion 功能(需要许可证): CNC 程序列表(CNC 编辑器)和CAM(CAM-EDITOR)(参
有关 SoftMotion 的单独文档)。
此外,可能会创建并加载一个Docuframe文件,该文件为项目变量(例如,使用某种语言)提供一组注
释,这些注释将在使用“Project”“Document”记录项目时打印出来。

CoDeSys 中的“资源”选项卡

CoDeSysV2.3版本 6-1
全局变量、变量配置、文档框架

6.2 全局变量、变量配置、文档框架
“全局变量”中的对象
在“对象管理器”中,您将在“全局变量”文件夹的“资源”寄存器卡中找到三个对象(括号中为对象的默认
名称)。
全局变量列表(全局变量)
变量配置(变量配置)
在整个项目中,这些对象中定义的所有变量都会被识别。
如果全局变量文件夹未打开(在文件夹前面加号),则可以通过双击<Enter>在行中打开它。

选择相应的对象。“对象打开”命令打开一个窗口,其中包含先前定义的全局变量。此编辑器的工作方式
与声明编辑器相同。

几个变量列表
全局变量、全局网络变量(VAR_GLOBAL)、全局网络变量(VAR_GLOBAL、特定于目标)和变量配
置(VAR_CONFIG)必须在单独的对象中定义。

如果您已经声明了大量的全局变量,并且想要更好地构建全局变量列表,则可以创建更多的变量列表。


在对象管理器中,选择
全 局 变 量”文 件 夹 或 具 有 全 局 变 量 的 现 有 对 象 之 一 。 然 后 执 行“Project”“ObjectAdd”命令。为对话
框中显示的对象指定相应的名称。使用此名称,将创建一个带有关键字 VAR_GLOBAL 的附加对象。如
果您更喜欢变量配置的对象,请将相应的关键字更改为VAR_CONFIG。

6.2.1 全局变量

什么是全局变量
在整个项目中已知的“正常”变量、常量或剩余变量可以声明为全局变量,也可以声明为网络变量,这些变
量也用于与其他网络用户进行数据交换。

请注意:在项目中,您可以定义一个与全局变量同名的局部变量。在这种情况下,在 POU 中,将使用本地定义的变


量。

不允许以相同的方式命名两个全局变量。例如,如果您在 PLC 配置和全局变量列表中定义了变量


“var1”,您将收到编译器错误。

网络变量
注意:目标系统必须支持网络变量的使用,并且必须在目标设置(网络功能类别)中激活。

通过自动数据交换(与通过参数管理器进行的非自动数据交换相比),可以在兼容CoDeSys的控制器网
络中的多个控制器系统上更新网络变量的值。这不需要特定于控制器的功能,但网络订阅者必须对其项目
中的网络变量使用相同的声明列表和匹配的传输配置。为了实现这一点,建议不要在每个控制器应用程序
中手动输入声明,而是在创建列表时从单独的文件加载声明。(请参阅'创建全局变量列表')。

6-2 CoDeSysV2.3版本
6 - 资源

创建全局变量列表
要创建全局变量列表,请在对象管理器中打开注册器“资源”,然后选择条目“全局变量”或选择已存在的
列表。然后选择命令“项目”、“对象”、“添加”以打开对话框:全局变量列表。

此对话框也可以通过命令“Project”、“Object”、“Properties”打开,如果在对象管理器中标记了现有的全
局变量列表,则该命令可用。它显示了此列表的配置。
用于创建新的全局变量列表的对话框

全局变量列表的名称:插入列表名称。
文件链接:
文件名:如果您有导出文件(*.exp)或包含所需变量的 DCF 文件,则可以设置指向此文件的链接。为
此,请在文件名字段中插入文件的路径 ,然后按“浏览”按钮以获取标准对话框“选择文本文件”。DCF 文
件在读入时会转换为 ICE 语法。

如果您希望在每次编译项目之前从外部文件中读取变量列表,请激活选项“编译前导入”。 如果您希望在
每次编译项目之前将变量列表写入外部文件,请激活选项“编译前导出”。

如果关闭“全局变量列表”对话框,则单击“确定”,则创建新对象。全局变量列表可以在对象管理器中通
过符号来识别。使用命令“Project”、“Object”、“Properties”,您可以重新打开对象管理器中标记的条目
的“全局变量列表”配置对话框。

CoDeSysV2.3版本 6-3
全局变量、变量配置、文档框架

网络变量的配置:
如果在目标设置中激活了“支持网络变量”选项,则<添加网络>按钮可用。按下此按钮,对话框将扩展,
如图所示。如果未激活该选项,则该按钮不可用。

连接 <n>(<网络类型>):在对话框的下半部分,您可以为最多四个网络连接创建配置集,每个连接都
位于单独的选项卡上。配置集定义网络中特定变量列表的数据交换参数。为了使网络中的交换按预期工
作,必须兼容地配置相同的变量列表以匹配其他网络订阅者。

如果还没有配置,如果是 UDP 网络,您将获得一张带有“连接 1 (UDP)”字样的制表表。每再次按下“


添加网络”按钮,您就会在“连接”之后获得最多四张刻有序列号的纸张。

网络类型: 从列表中选择所需的类型。该列表由目标系统条目定义。例如, “CAN” 作为 CAN 网络的缩


写,或“UDP”作为UDP传输系统的缩写,可以选择。

设置:此按钮打开“设置”对话框 <networktype> 的设置,其中包含以下配置参数:

UDP:
使用标准如果按下此按钮,将定义端口 1202 用于与其他网络参与者的数据交换。广播/多播地址将
设置为“255.255.255.255“,这意味着数据交换将与网络中的所有参与者完成。

端口:在此处输入所需的端口号以覆盖标准设置(请参阅上文“使用标准”)。确保网络中的其他节
点定义相同的端口!如果在项目中定义了多个 UDP 连接,则将根据您在此处输入的端口号自动修
改所有配置集中的端口号。

广播/组播地址: 如果要覆盖标准设置(例如“197.200.100.255“,如果要与 IP 地址为 197 的所


有节点进行通信。200.100.x)。

对于 Win32 系统,广播地址必须与 PC 的 TCP/IP 配置的子网掩码匹配!

对话框“UDP 的设置”

能:
控制器索引:CAN控制器的索引,应通过该索引传输变量。

在配置变量的传输行为时,可以激活或停用以下选项:

包变量:将变量组合成数据包(报文),其大小取决于网络。如果该选项被停用,则会为每个变量设置一
个数据包。
列表标识符(COB-ID): 第一个数据包的标识号,变量将在其中发送(默认值 =1)。其他数据包将按
升序编号。注意:COB-ID必须是唯一的
在项目中使用的所有网络变量列表中。在多个列表配置中使用相同的 ID 将导致编译器版本 >=2.3.7.0 的
编译错误。

6-4 CoDeSysV2.3版本
6 - 资源

这取决于目标系统,是否可以将列表的网络变量定义为“可读”和“可写”,或者只能两者之一。要设置此
属性,请激活相应的选项“读取”和“写入”:

读取:列表中的变量将被读取;如果该选项被停用,则通过网络发送的其他变量将被忽略。此外,还可以
激活以下选项:
启动时请求:如果本地节点是“读取”节点(选项“读取”已激活),那么一旦重新启动,将从所有写
入节点请求实际的变量值,并由这些节点发送,而与通常触发通信的任何其他传输条件(时间、事
件)无关。前提条件:在写入节点的配置中,必须激活“应答启动请求”选项!( 下文)。

写入:将写入变量,可以另外设置以下选项:
包括校验和:
校验和将添加到发送的每个数据包中。接收方将检查校验和,以确保发送方和接收方
的变量定义相同。校验和不匹配的数据包将不被接受,如果配置了此配置(“使用确认传输”, 下
文),则将被否定确认。

使用确认传输:(在CAN的情况下没有功能)每条消息都将由接收方确认。一旦发送者在一个周期
内没有得到至少一个确认,就会产生一条错误消息,如果是 UDP 网络,该消息将被写入
NetVarUdp_LIB_V23.lib 提供的诊断结构中。

应答启动请求:如果本地节点是“写入”节点(激活了“写入”选项),则它将在启动时发送的读取节
点的每个请求(启动时的选项请求, 上文)都将得到应答。这意味着,即使此时没有其他定义的
传输触发器(时间或事件)强制传输,也会传输实际变量值。

传输每个周期:变量在 Interval 之后指定的间隔内写入。(时间符号,例如 T#70ms)。

更改时传输:仅当变量的值更改时才写入变量;但是,最小值之后的条目可以设置传输之间的最小
时间间隔。
事件传输:一旦在变量处插入的变量变为 TRUE,列表的变量就会被写入 。

全局网络变量列表在对象管理器中由符号标记。
注意:如果在一个或多个任务中使用网络全局变量,则以下内容适用于传输的时间部分:调用每个任务时,都会对其
进行测试以确定哪些参数适用于变量值的传输(“全局变量列表”对话框中的配置)。变量值是否会被传输,取决于指
定的时间间隔是否已过去。在每次传输时,此变量的时间间隔计数器将重置为零。

发送始终从受影响控制器的运行时系统进行。因此,无需为数据交换提供特定于控制的功能。

编辑全局变量和网络变量列表
全局变量编辑器的工作方式与声明编辑器类似。但请注意,您不能在此编辑器中编辑列表,该列表是链接
的外部变量列表的图像!外部变量列表只能在外部编辑,并且将在每次打开和编译项目时读取它们。

语法:
VAR_GLOBAL
(* 变量声明 *)
END_VAR
只有在目标系统允许的情况下,才能使用网络变量。它们也在此语法中定义。

通过链接导出文件 *.exp 创建的网络变量列表示例,该列表得到


名称NETWORKVARIABLES_UDP:网络

CoDeSysV2.3版本 6-5
全局变量、变量配置、文档框架

变量列表的示例,该列表是通过加载导出文件 *.exp 创建的,其名称为 Network_Vars_UDP:

编辑剩余全局变量列表
如果运行时系统支持它们,则可以处理剩余变量。剩磁全局变量有两种类型(另请参 第 5.2.1 章剩磁变
量!):
在运行时系统不受控制地关闭(关闭/打开)或 CoDeSys 中的“在线”“重置”后,保留变量保持不变。持
久变量仅在下载后保持不变。
持久变量不会自动保留变量!
剩余变量还被分配了关键字RETAIN和 /或 PERSISTENT。
有关详细信息,请参 第 5.2.1 章“剩余变量”。
网络变量也在此语法中定义。
语法:
VAR_GLOBAL保留
(* 变量声明 *)
END_VARVAR_GLOBAL持
久性
(* 变量声明 *)
END_VAR
对于 retain 和 persistent 属性的组合,使用了两个关键字:
VAR_GLOBALRETAINPERSISTENT或 VAR_GLOBAL PERSISTENT RETAIN
网络变量(特定于目标)也使用此语法进行定义。

全局常量
全局常量还获取关键字CONSTANT。
语法:
VAR_GLOBAL常数
(* 变量声明 *)
END_VAR

6.2.2 变量配置
在功能块中,如果将变量定义放在关键字 VAR 和 END_VAR之间,则可以为未完全定义的输入和输出指
定地址 。未完全定义的地址用星号标识。

例:
FUNCTION_BLOCK locio
VAR值
位点位于 %I*: BOOL :=TRUE;LOCO

6-6 CoDeSysV2.3版本
6 - 资源

在 %Q*:布尔值;
END_VAR
这里定义了两个局部 I/O 变量,一个局部输入(%I*)和一个局部输出(%Q*)。
如果要在参考资料的对象管理器中为变量配置配置本地I/O
注册卡,对象Variable_Configuration将普遍可用。然后可以重命名对象,并为变量配置创建其他对象。

变量配置编辑器的工作方式与声明编辑器类似。
本地 I/O 配置的变量必须位于关键字VAR_CONFIG和
END_VAR。
此类变量的名称由一个完整的实例路径组成,通过该路径,各个POU和实例名称之间用句点分隔开。声
明必须包含一个地址,其类(输入/输出)对应于功能块中未完全指定的地址(%I*、%Q*)的类。此外,
数据类型必须与功能块中的声明一致。

由于实例不存在而导致实例路径无效的配置变量也表示为错误。另一方面,如果实例变量不存在配置,也
会报告错误。为了接收所有必要配置变量的列表,可以使用“插入”菜单中的“所有实例路径”菜单项。

变量配置示例

假设程序中给出了功能块的以下定义:

程序PLC_PRG
VARHugo:位置;奥托:locio;

END_VAR
然后,更正后的变量配置将如下所示:
VAR_CONFIG
PLC_PRG 。 Hugo.loci AT %IX1.0 : 布 尔 值 ;PLC_PRG 。 Hugo.loco AT %QX0.0 : 布 尔 值 ;PLC_PRG 。 Otto.loci AT
%IX1.0:布尔值;PLC_PRG。Otto.locoAT%QX0.3 :布尔值;

END_VAR

'Insert''所有实例路径'
使用此命令,将生成一个 VAR_CONFIG- END_VAR块,其中包含项目中可用的所有实例路径。手头已
有的声明不需要重新插入,以包含已经存在的地址。如果项目已编译,则可以在变量配置窗口中找到此菜
单项(“项目”、“全部重建”)。

6.2.3 文档框架
如果一个项目要接收多个文档,可能带有德语和英语注释,或者如果您想记录使用相同变量名称的几个类
似项目,那么您可以通过使用“Extras”“MakeDocuframeFile”命令创建文档框来节省大量工作。

创建的文件可以加载到所需的文本编辑器中,并且可以进行编辑。文件以DOCUFILE行开头。然后,按
照为每个变量分配三行的排列方式列出项目变量:显示新变量何时出现的VAR行;接下来,显示变量名称
的行;最后,空行。现在,您可以通过使用变量的注释来替换此行。您可以简单地删除任何无法记录的变
量。如果需要,可以为项目创建多个文档框架。

要使用文档框架,请发出 “Extras”“LinkDocuFile” 命令。现在,如果您记录整个项目,或打印项目的一


部分,那么在程序文本中,将插入到所有变量中,将文档框中生成的注释插入到所有变量中。此评论仅出
现在打印输出中!

CoDeSysV2.3版本 6-7
告警配置

带有文档框架的 Windows 编辑器

'Extras''制作 Docuframe 文件'


使用此命令可创建文档框架。每当您从全局变量中选择对象时,都可以使用该命令。

将打开一个对话框,用于以新名称保存文件。在名称文件的字段中,已输入 *.txt 扩展名。选择所需的名


称。现在,已创建一个文本文件,其中列出了项目的所有变量。

'Extras''链接文档文件'
使用此命令,您可以选择文档框架。
将打开用于打开文件的对话框。选择所需的文档框架,然后按OK。现在,如果您记录整个项目,或打印
项目的一部分,则在程序文本中,将文档中生成的注释插入到所有变量中。此评论仅出现在打印输出中!

要创建文档框架,请使用“附加”“制作文档框架文件”命令。

6.3 告警配置

6.3.1 概述
集成在CoDeSys中的报警系统允许检测关键过程状态,记录它们并借助可视化元素为用户可视化它们。
报警处理可以在 CoDeSys 中完成,也可以在 PLC 中完成。有关 PLC 中的报警处理,请参阅目标设置类
别“可视化”。

如果目标系统支持,则“资源”选项卡中提供了“警报配置”对话框。

在这里,您可以定义警报类和警报组。警报类用于键入警报,这意味着它为警报分配某些参数。警报组用
于一个或多个警报(分配特定类别和其他参数)的具体配置,以便在项目中使用。因此,类对于构建可用
警报很有用。不同的警报组由用户通过在配置树中的“系统”标题下方插入适当的条目来定义。

对于 警报的可视化,CoDeSys 可视化中提供了“警报表”元素。使用此表,用户可以监视和确认警报。

6-8 CoDeSysV2.3版本
6 - 资源

如果历史记录(即警报事件的记录)应写入日志文件,则必须定义此类文件,并且必须为每个警报组定义
保存行为。
当您在“资源”选项卡中打开“警报配置”时,“警报配置”对话框
打开一个双部分窗口,该窗口的操作模式类似于 PLC 配置或任务配置。在左侧显示配置树,在右侧将打
开相应的配置对话框。

警报配置示例

通过鼠标单击当前可用配置树“警报配置”条目处的加号打开。如果您要创建新配置,此树将仅显示条目“
警报类”和“系统”。

6.3.2 警报的一般信息,术语
在 CoDeSys 中使用警报系统遵循以下有关警报的通用描述和定义:

告警:一般情况下,告警被视为一种特殊情况(表达式值)。
优先级:警报的优先级(也称为“严重性”)描述警报条件的重要性(严重性)。最高优先级为“0”,最低
有效优先级值为“255”。
报警状态:为报警控制配置的表达式/变量可以具有以下状态:NORM(无报警)、INTO(报警刚刚到
来)、ACK(报警已来并已被用户确认)、OUTOF(报警状态已终止,报警“已消失”,但尚未确认!

子状态:报警条件可以有限制(Lo、Hi)和“极端”限制(LoLo、HiHi)。示例:表达式的值上升,首先
将超过 HI 限制,从而导致 HI 警报的到来。如果该值继续升序,并且在用户确认警报之前也超过了 HIHI
限制,则 HI 警报将自动得到确认,并且只有 HIHI 警报保留在警报列表(用于警报管理的内部列表)
中。在本例中,HI- 状态被命名为子状态。

警报确认:警报
的主要目的是通知用户警报情况。在执行此操作时,通常需要确保用户已注意到此信息(
请参阅警报类配置中分配给警报的可能操作)。用户必须确认警报才能将警报从警报列表中删除。

报警事件:报警事件不得与报警条件混淆。虽然报警条件可以在较 的时间内有效,但报警事件仅描述瞬
时发生的变化,例如从正常状态到报警状态的变化。在CoDeSys告警配置中,对于三种类型的事件和相

CoDeSysV2.3版本 6-9
告警配置

应的告警状态,使用相同的名称(INTO、ACK、OUTOF)。

在 CoDeSys 中,支持以下功能:
停用单个警报和警报组的警报生成
通过定义警报组和优先级来选择应显示的警报
将所有报警事件保存在报警表中
CoDeSys 可视化中的可视化元素“警报表”

6.3.3 报警类
警报类用于某些警报条件的一般描述,例如如何处理确认(用户确认警报)、在检测到特定警报状态后应
立即自动运行哪些操作,以及哪些颜色和位图将用于警报表的可视化。警报类在警报配置中全局定义,然
后在配置警报组时作为基本配置提供。

警报类别的配置:
在警报配置树中选择条目“警报类别”。配置对话框“警报类”打开:

配置对话框“警报类”

按下按钮 Add 以创建新的警报类。因此,在上面的窗口中将插入一行,主要仅在 “ 确认 ” 列中输入


“NOACK” (无确认)。在 Name 列的相应字段中定义警报类的名称 (通过鼠标单击该字段打开编辑
框),并在必要时修改列中的确认类型

确认。

6-10 CoDeSysV2.3版本
6 - 资源

提供以下致谢:
NO_ACK:用户无需确认报警
ACK_INTO:必须由用户确认“来”报警条件(状态“INTO”,报警发生)。

ACK_OUTOF:用户必须确认“消失的警报”(状态“OUTOF”,警报终止)。
ACK_ALL:来来往往的报警条件必须由用户确认。
此外,您还可以输入注释。
每个警报类别的条目将添加到列表的末尾。
使用“删除”按钮 从列表中删除当前选定的条目。

为类<类名>分配的操作:
上部窗口中定义的每个警报类都可以分配一个操作列表,这些操作应在警报事件发生后立即执行。

在“可能的行动”列表中,选择一个并按下“>”按钮,将其进入“已分配的操作”字段。此字段最终将包含
分配给警报类的操作选择。通过“>>”按钮,您可以一次添加所有操作。通过“<”或“<<”,您可以从完成的
现有选择中删除一个或所有操作。如果在“已分配的操作”列表中标记了某个操作,则通过“...”可以打开相
应的对话框来定义所需的电子邮件设置、打印机设置、过程变量或可执行程序以及消息文本(如果适用
)。

支持以下操作类型(可能的操作)(有关消息文本的定义,请参阅下文):

行动 描述 要在相应对话框中完成的设置:

救: 警报事件将保存在内部,以便 设置在“警报保存”对话框的“警报组”定义
e.g.in 日志文件中发出。请注 中完成
意:在这种情况下,必须在警报
组的配置中定义日志文件!

打印: 消息文本将发送到打印机。 打印机:选择本地系统上定义的打印机之一;输出


文本:应打印出的消息文本( 下文)。

请注意:Target-Visualization 不支持此功能!

消息: 在警报的当前可视化中,将打开 消息:要在消息窗口中显示的消息文本。


一个消息窗口,显示定义的文
本。
请注意:Target-Visualization 不支持此功能!

E-Mail: 将发送一封包含已定义消息的电 发件人:发件人的电子邮件地址;收件人:收件人


子邮件。 的电子邮件地址;主题:任何主题;
消息:消息文本( 下文);服务器:
电子邮件服务器的名称。
变量: CoDeSys 程序的变量将获取警报 变量:变量名称:您可以通过输入助手(<F2>)
状态或消息文本字符串。 选择项目变量:布尔变量将指示警报状态NORM
= 0 和 INTO= 1 ,整数变量将指示警报状态
NORM= 0 、 INTO= 1 、 ACK= 2 、 OUTOF= 4;
字符串变量将得到

CoDeSysV2.3版本 6-11
告警配置

字段中定义的消息文本;消息
( 下文)
执行: 一旦发生警报事件,将立即启动 可执行文件: 要执行的文件的名称(例如
可执行文件。 notepad.exe,您可以使用“...”按钮获取用于选择
文件的标准对话框;参数:应附加到 exe 文件调用
的相应参数

消息文本的定义:
对于操作类型“消息”、“打印”、“电子邮件”或“变量”,您可以定义在发生警报事件时应输出的消息文
本。
“消息”、“电子邮件”或“变量”中文本定义的换行符可以通过 <Ctrl>+<Enter> 插入。

定义警报消息时,可以使用以下占位符:

消息 将使用在警报组配置中为特定警报定义的消息文本。

日期 达到警报状态(INTO)的日期。
时间 报警输入时间。
表达 引起警报的表达式(在警报组中定义)。
优先权 警报的优先级(为警报组定义。
价值 表达式的当前值( 上文)。
类型 报警类型(在报警组中定义)
类 报警类(在报警组中定义)
目标值 警报类型 DEV+ 和 DEV- 的目标值(在警报组中定义)
死区 报警容差(在报警组中定义)
全部默认值 将输出有关警报的任何信息,例如日志文件(历史记录)中的行条目。

定义告警消息示例:
有关消息框的定义,请在消息窗口中输入以下内容:

此外,在警报组中定义警报时,在“消息”列中输入以下内容:
“温度临界!”最终告警消息的输出如下:

6-12 CoDeSysV2.3版本
6 - 资源

注意: 如果项目语言发生更改,如果消息文本包含在 *.vis 文件或翻译文件 *.tlt 中,则消息文本也会受到影响。


但是:在这种情况下-就像引用可视化的文本一样,它必须设置在两个“#”字符之间(例如,在上面显示
的示例中:“#Temperaturecritical !#”和“TIME/EXPRESSION: MESSAGE#current#: VALUE”,
以便将翻译文件中输入的文本作为ALARMTEXT_ITEMs。

A 操作“保存”的日志文件将在警报组的配置中定义(参 第 6.3.4 章)。

操作的警报事件:
对于您定义的每个操作,应在哪些警报事件中启动该操作。
激活所需的事件:
INTO 发生报警。状态 =INTO。
ACK 用户确认已完成。状态 =ACK。
OUTOF 警报状态终止。状态 =OUTOF。

类<类名称的颜色/位图>
每个告警类都可以获得自己的颜色和位图,这些颜色和位图将用于区分可视化元素告警表中的告警。为可
能的事件 INTO、ACK 和 OUT 选择“前景色”和“背景色”( 上文)。只要您按住颜色符号单击鼠标,用
于选择颜色的标准对话框就会打开。要选择位图,只需在灰色矩形上单击鼠标即可打开用于选择文件的标
准对话框。

6.3.4 告警组
警报组用于组织可用的警报。每个警报肯定分配给一个正确的警报组,并由该组管理。一个组的所有警报
都可以被分配一个通用的停用变量和有关警报保存的通用参数。请注意,即使是单个警报也必须在警报组
中配置。

可以通过文件夹元素定义警报组的分层结构。在配置树中选择告警组时,将自动显示告警组对话框 。

在描述字段中,输入警报组的名称。
作为停用变量,可以定义布尔项目变量。在此变量的上升沿,该组的所有警报的创建将被停用,在下降
沿,它将被重新激活。
通过按钮添加警报可以将警报添加到组中。将在表格窗口中插入一个新行,并在其中设置以下参数:

表达式: 在此处输入警报应引用的项目变量或表达式(例如 “a+b” )。建议使用输入助手 <F2> 或


“Intellisense 函数”进行正确输入。

CoDeSysV2.3版本 6-13
告警配置

“配置”对话框“报警组”

类型:可以使用以下列出的告警类型。对于每种类型,请考虑适当的注释或在表格之外的区域中要完成的
定义!
DIG=0数字警报,一旦表达式变为 FALSE,就会激活。
DIG=1数字报警,一旦表达式变为 TRUE,就会激活。
LOLO模拟报警,一旦表达式的值低于
为警报类型 LOLO 定义。您可以定义容差(死区)。只要表达式值在死区内,就不会激活任何警
报,即使 LOLO 值已低于限制。

LO对应于LOLO。
HI模拟报警,一旦表达式超过 为报警类型 HIHI 定义的值,就会激活。您可以定义容差(死区)。
只要表达式值在死区内,即使 HI 值超过限制,也不会激活警报。

HIHI对应于 HI。
DEV-偏离目标值;一旦表达式的值低于为警报类型DEV-定义的值加上百分比偏差,警报就会激活。
百分比偏差 = 目标值*(偏差百分比)/100。

DEV+偏离目标值);一旦表达式的值超过为警报类型DEV+定义的值加上百分比偏差,警报就会激
活。百分比偏差 = 目标值*(偏差百分比)/100。

每时间单位的 ROC 变化率;一旦表达式与前一个值严重偏离,警报就会激活。激活警报的限值由


每秒、每分钟或每小时(单位/)的值变化次数(变化率)定义。

类别:选择所需的警报类别。选择列表将提供在上次保存项目之前在警报类配置中定义的所有类。

优先级:您可以在此处定义优先级 0-152。 0 是最高优先级。优先级将影响警报表中警报的排序。

消息:在此处定义消息框的文本,该文本将在发生警报时出现。此框必须由用户使用 OK 确认,但此 OK
不会自动确认警报!要确认(确认)警报,您必须访问警报表。这可以通过可视化元素报警表或表中报警
条目的日期来实现。可以从日志文件中读取此日期,该文件可以选择创建。

停用:在这里可以输入一个项目变量,在上升沿将停用任何警报的创建。但是,请注意,此设置将被“停
用变量”字段中的条目覆盖!( 上文)。

6-14 CoDeSysV2.3版本
6 - 资源

6.3.5 报警保存
对于每个警报组,如果在警报类配置对话框中为该类分配了“保存”操作,则可以定义一个文件,其中存储
了警报事件。
在配置树中选择告警组,然后打开“告警保存”对话框选项卡:
配置对话框“警报保存”

以下定义是可能的:
文件路径:在文件名中定义的文件的目录路径;通过按钮“...”您将获得用于选择目录的标准对话框。

文件名:应保存警报事件的文件的名称(例如“alarmlog”)。将自动创建一个文件,该文件获得此处定义
的名称以及附加的数字,扩展名为“.alm”。该数字表示日志文件的版本。第一个文件得到一个“0”;根据定
义的文件更改事件创建的每个文件将编号为 1、2 等(例如:“alarmlog0.alm”、“alarmlog1.alm”)。

文件更改事件:
在此处定义将导致创建新文件以保存警报的事件。可能的条目:当超过记录数中定义的文
件中的记录数时,从不、一小时后、一天后、一周后、 一个月后,在字段Triggervariable中定义的变量
的上升沿。

触发变量resp.记录数:请参阅上文,文件更改事件。
删除后的旧文件..小时数:自创建之日起的天数,在此之后,除实际日志文件外,所有警报日志文件都应
删除。
日志文件(History)包含以下条目:
(请参阅列类型和示例条目,了解两个警报)
日期/时间in 日期 时间 事件 表达 报警类型 限制 宽容 当前值 类 优先权 消息
DWORD字数
1046963332 6.3.03 16:08:52 到 PLC_PRG.b 瞧 -30 5 -31 Alarm_high 0 温度!

1046963333 6.3.03 16:08:53 确认 PLC_PRG.n 嗨嗨 35 Warnng (英语) 9 上升温度!

日志文件中的示例:
1046963332,6.3.0316:08:52,INTO,PLC_PRG.ivar5,HIHI,,,,9.00,a_class2,0,
1046963333,3/6/034:08:53PM,INTO,PLC_PRG.ivar4,ROC,2,,,6.00,a_class2,2,
1046963333,6.3.0316:08:53,INTO,PLC_PRG.ivar3,DEV-,,,,-6.00,a_class2,5,
1046963334,6.3.0316:08:54,INTO,PLC_PRG.ivar2,LOLO,-35,,3, -47.00,警告,10,警
告:低温!
1046963334,6.3.0316:08:54,INTO,PLC_PRG.ivar1,HI,20,,5,47.00,a_class1,2,温度到
高!承认!

CoDeSysV2.3版本 6-15
库管理器

6.3.6“附加”菜单:设置
警报配置设置对话框在警报配置中的“附加”“设置”命令中打开:

类别日期/时间:
在这里,您可以设置日志文件中警报表示的日期和时间格式。根据以下语法定义格式。破折号和冒号应以
倒逗号设置:
日期:dd'-'MM'-'yyyy->例如“12.Jan-1993”
时间:hh':'mm':'ss(12 小时制)->例如“01:10:34”或 HH':'mm':'ss(24 小时制)->例如“13:
10:34”
语言:
此对话框的用法与用于执行可视化对象的语言设置的用法相对应(请参阅 CoDeSys 可视化用户手册:可
视化中的语言切换)。
在此处选择一个语言文件(*.vis 或 *.tlt),当 CoDeSys 中的语言发生更改时,该文件应用于警报配置文
本。为此,请确保语言文件(即包含警报配置的文本字符串)的翻译。另请参 :第4.3章将项目翻译成
另一种语言。

或者,您可以通过指定 xml 格式的特殊语言文件来定义动态语言切换,就像用于可视化元素一样。但请


注意,实际设置仅涉及 CoDeSys 中警报消息的显示。如果警报配置由可视化对象中的警报表元素可视
化,则单独的可视化语言设置将有效!

在线:
在在线模式下停用告警评估:
如果设置了此在线设置,则在联机模式下将不会进行告警处理。这意味着不
会进行与当前警报配置相对应的警报评估,也不会显示任何警报。在某些环境中,为了节省计算时间,可
能需要这样做。

6.4 库管理器
库管理器显示与当前项目连接的所有库。库的 POU 、数据类型和全局变量的使用方式与用户定义的
POU、数据类型和全局变量的使用方式相同。

库管理器

库管理器使用“窗口”“库管理器”命令打开。有关所包含库的信息与项目一起存储,可以在“有关外部库
的信息”对话框中查看。要打开此对话框,请在库管理器中选择相应的库名称,然后执行命令“Extras”、

6-16 CoDeSysV2.3版本
6 - 资源

“Properties”。

使用库管理器
库管理器的窗口被屏幕分隔线分为三个或四个区域。附加到项目的库列在左上角区域。

在下面的区域中,根据选择的寄存器卡,在上部区域中列出了所选库的POU、数据类型、可视化或 全局
变量。
通过双击该行或按 <Enter> 打开和关闭文件夹。关闭的文件夹前面有一个加号,打开的文件夹前面有一
个减号。
如果通过单击鼠标或使用箭头键选择来选择 POU,则 POU 的声明将出现在库管理器的右上角区域;右下
角是带有输入和输出的黑匣子形式的图形显示。

使用数据类型和全局变量时,声明将显示在库管理器的右侧区域中。

标准库
带有“standard.lib”的库始终可用。它包含 IEC61131-3 作为 IEC 编程系统的标准 POU 所需的所有功能和
功能块。标准函数和运算符的区别在于,运算符被编程系统隐式识别,而标准 POU 必须绑定到项目(
standard.lib)。

这些 POU 的代码以 C 库的形式存在,是CoDeSys 的一个组件。

用户定义的库
如果要在其实体中编译项目并且没有错误,则可以使用“文件”菜单中的“另存为”命令将其保存在库中。
项目本身将保持不变。将生成一个附加文件,其默认扩展名为“.lib”。之后,可以像标准库一样使用和访
问该库。

为了在其他项目中提供项目的 POU,请将项目另存为内部库 *.lib。之后,可以使用库管理器将此库插入


到其他项目中。

如果您已经用其他编程语言(例如 C)实现了 POU,并希望将它们放入库中,请使用数据类型 External


Library*.lib 保存项目。您将获得库文件,但另外还有一个扩展名为“*.h”的文件。该文件的结构类似于
C 头文件,包含所有 POU、数据类型和全局变量的声明,这些声明随库一起提供。如果在项目中使用外
部库,则在仿真模式下将执行 POU 的实现,该实现是使用 CoDeSys 编写的;但在目标上,将处理 C 编
写的实现。

如果要将许可信息添加到库中,请按按钮编辑许可证信息...并在“编辑许可信息”对话框中插入适当的设
置。请参阅“文件”、“另存为...”中的相应说明在 CoDeSys 中的许可证管理中。

'插入''附加库'
使用此命令,可以将其他库附加到项目中。
该命令将打开用于打开文件的对话框。如果当前设置的目录不包含所需的库,则可以在字段库目录中选择
另一个目录,该目录将提供所有目录,这些目录在“项目”“选项”“目录”“库”(文件类型“*.lib”)中定
义。选择所需的库-可以进行多项选择-然后单击“确定”进行确认。对话框将关闭,库将插入到库管理器
中。现在,您可以在项目中使用库的对象,例如用户定义的对象。库路径

关于当前在项目选项中定义了哪些库目录(参 第 4.2 章“目录”类别)。如果从未在此处定义的目录中插


入库,则将使用相应的路径输入该库。

CoDeSysV2.3版本 6-17
日志

示例:从目录“D:\codesys\libraries\standard”插入库 standard.lib。
如果在项目选项中定义了此目录,则库管理器中的条目将为:“standard.lib<文件的日期和时间>”。

如果在项目选项中只定义了一个目录“D:\codesys\libraries”,那么库管理器中的条目将是:
“standard\standard.lib<文件的日期和时间>”。
如果在项目选项中根本没有定义匹配的目录,则将输入完整路径:“D:
\codesys\libraries\standard\standard.lib<文件的日期和时间>”。
重新打开项目时,将根据库管理器中的条目搜索库。因此,例如,如果只输入库文件名,则将在项目选项
中定义的库目录中搜索库。

如果在打开项目时未找到库,系统将询问您是否要更改项目选项中定义的库目录。如果说“否”,将打开一
个对话框,提供有关未找到的库的信息,并且库管理器中的相应条目将显示为红色。在这种情况下,您可
以选择一个红色条目,然后从上下文菜单中选择命令“搜索”。因此,您将看到打开文件的对话框,您可
以在其中浏览丢失的库并立即重新加载它。

发牌
一旦包含需要许可证的库,但未找到有效的许可证,您可能会收到一条消息,指出该库仅在演示模式下可
用,或者该库未针对当前设置的目标获得许可。此时,您可以忽略此消息,或启动有关许可证的适当操
作。无效的许可证将在编译过程中产生错误(“Project”、“Build”)。在这种情况下,双击错误消息res.
<F4> 将打开“许可证信息”对话框,您可以在其中启动向导指导的相应操作。

删除库
使用“编辑”、“删除”命令,您可以从项目和库管理器中删除库。

'附加''属性'
此命令将打开“有关内部(或外部)库的信息”对话框。对于内部库,您将在那里找到所有数据,这些数据
在CoDeSys中创建库时已插入到项目信息(如果适用,包括许可证信息)中。对于外部库,将显示库名
称和库路径。

6.5 日志
日志按时间顺序存储联机会话期间发生的操作。为此,设置了一个二进制日志文件(*.log)。之后,用户
可以将相应项目日志的摘录存储在外部日志中。

日志窗口可以在离线或在线模式下打开,因此可以作为在线的直接监视器。

“窗口”“日志”
要打开,请选择菜单项“窗口”“日志”或选择“资源”选项卡中的“日志”条目。
在日志窗口中,当前显示的日志的文件名显示在Log:之后。如果这是当前项目的日志,则会显示“(内
部)”字样。
已注册的条目将显示在日志窗口中。最新条目始终显示在底部。
仅显示属于菜单“项目”、“选项”、“日志”的“过滤器”字段中已激活的类别的操作。

有关当前所选条目的可用信息显示在日志窗口下方:类别:特定日志条目所属的类别。以下四个类

6-18 CoDeSysV2.3版本
6 - 资源

别是可能的:

用户操作: 用户已执行联机操作(通常从“联机”菜单)。
内部操作: 已在在线层中执行了内部操作(例如,删除缓冲区或
初始化调试)。
状态变更: 运行时系统的状态已更改(例如,从 Running 更改为 Break,如果
已到达断点)。
异常:发生异常,例如通信错误。
日志窗口

说明:操作的类型。用户操作的名称与其对应的菜单命令的名称相同;所有其他操作均为英文,并且与相
应的 OnlineXXX()函数同名。

信息:此字段包含操作期间可能发生的错误的说明。如果未发生错误,则该字段为空。

系统时间:操作开始的系统时间,精确到秒。
相对时间:从联机会话开始到最接近毫秒的时间。

持续时间:操作的持续时间(以毫秒为单位)。

菜单日志
当日志窗口具有输入焦点时,菜单选项“日志”将显示在菜单栏中,而不是“附加”和“选项”项。

菜单包括以下项目:
负荷。。。可以使用标准文件打开对话框加载和显示外部日志文件 *.log。
该命令不会覆盖项目中存在的日志。如果日志窗口关闭后再次打开,或者启动了新的联机会话,则加载的
版本将再次替换为项目日志。

CoDeSysV2.3版本 6-19
PLC配置

救。。。
仅当当前显示项目日志时,才能选择此菜单项。它允许将项目日志的摘录存储在外部文件中。为
此,将显示以下对话框,其中可以选择要存储的在线会话:

选择成功后,将打开用于存储文件的标准对话框(“保存日志”)。
显示项目日志仅当当前显示外部日志时,才能选择此命令。它将显示切换回项目日志。

存储项目日志
无论日志是否存储在外部文件中( 上文),项目日志都会自动存储在名为<projectname>.log的二进制
文件中。如果在“项目”“选项”“日志”对话框中未明确给出其他路径,则文件将存储在与存储项目相同的
目录中。

可以在“项目”、“选项”、“日志”对话框中输入要存储的最大在线会话数。如果在录制过程中超过此数
字,则会删除最早的会话,以便为最新的会话腾出空间。

6.6 PLC配置
6.6.1 概述

PLC 配置作为对象在对象管理器的寄存器卡资源中找到。使用 PLC 配置编辑器,您必须描述为其建立打


开项目的硬件。对于程序实施,输入和输出的数量和位置尤为重要。通过此描述,CoDeSys可以验证程
序中使用的IEC地址是否也实际存在于硬件中。

在配置编辑器中工作的基础是配置文件(*.cfg;请参阅下面关于版本兼容性的注意事项)和设备文件(例
如 *.gsd、*.eds)。它们存储在目标文件中定义的目录中(请参阅目标设置),并在 CoDeSys 中打开项
目时读取。您可以随时将文件添加到此目录。

配置文件 *.cfg 描述了一个基本配置,该配置在配置编辑器中映射,它定义用户可以在编辑器中自定义此


配置的程度。

注意:一旦底层配置文件(*.cfg)被修改,你就必须在CoDeSys中重做配置!

关于版本兼容性的注意事项: 在 CoDeSysV2.2 中,为 PLC 配置实现了新格式。从该版本开始,基本配置文件必须


使用扩展名*.cfg。相比之下,以前 CoDeSys 版本中的配置编辑器需要扩展名为*.con的配置文件。但是:目标系统
可能会定义“旧”配置器应该进一步使用,即使在 V2.2 或更高版本中打开旧项目时也是如此(请参阅本章末尾的注
释)。这避免了创建新配置文件的需要,可以进一步使用*.con文件。如果目标系统不支持旧的配置器,则可以转换
旧的PLC

6-20 CoDeSysV2.3版本
6 - 资源

如果(!)提供了适当的新 *.cfg 文件,则将存储在项目中的配置转换为新格式。有关详细信息,请参


第 6.6.3 章“附加”、“转换”。

CoDeSys配置编辑器允许配置 I/O 模块以及 CAN 和 Profibus 模块。

如果目标系统支持,则可以从PLC获取信息:1.实际硬件结构的扫描,可直接用于PLC配置,2.诊断消
息,将在CoDeSys中显示为消息,3.状态信息将显示在PLC配置对话框中

在用户进行最终定制后,将配置的二进制映像发送到 PLC:
带有 CPU 模块和 CAN 模块的 PLC 配置示例

PLC 配置以树状结构显示在编辑器中,可以使用菜单命令和对话框进行编辑。该配置包含输入和/或输出
元素以及管理元素,这些元素本身也具有子元素(例如,CAN总线或具有8个输入的数字输入卡)。

对于输入和输出,可以分配符号名称。然后,可以访问此输入或输出的 IEC 地址位于符号名称的后面。

当前使用的目标系统可能定义要使用 CoDeSysV2.1PLC 配置。在这种情况下,有关使用 PLC 配置的帮


助,请参阅 CoDeSysV2.1 上的用户文档,但请注意配置器中的以下扩展:

CAN配置器:
在CAN模块的“CAN参数”对话框中选择“创建所有SDO”(参 第6.6.8章)。注意:SDO 现在始终根据
V2.3 配置器中使用的机制创建;因此,结果可能与之前得到的结果不同。

在 CanDevice 的“CAN 设置”对话框中编辑字段“Device-Type”(参 第 6.6.9 章)。


Profibus编程器:
现在可供插入的 Profibus 模块的选择列表(参 第 6.6.7 章)按模块名称的字鯦顺序排序。

6.6.2 在PLC配置中工作
配置编辑器分为两部分。在左侧窗口中,将显示配置树。树的结构和组件主要来自配置文件中的定义(标
准配置),但可以通过用户在 CoDeSysPLC 配置器中完成的额外调整进行修改。在右侧窗口中,当前可
用的配置对话框

CoDeSysV2.3版本 6-21
PLC配置

默认情况下,窗口的右侧是可 的,但可以通过菜单项“附加”“属性”淡出。

在配置树的顶部有一个“根”模块的条目,该条目的名称已在配置文件中定义。

在下面,您可以找到按层次缩进的配置的其他元素:不同类型的模块(CAN、Profibus、I/O)、通道或
位通道。
配置编辑器分为两部分。在左侧窗口中,将显示配置树。树的结构和组件主要来自配置文件中的定义(标
准配置),但可以通过用户在CoDeSysPLC配置器中完成的额外调整进行修改。在右侧窗口中,当前可
用的配置对话框显示在一个或多个选项卡上。

默认情况下,窗口的右侧是可 的,但可以通过菜单项“附加”“属性”淡出。

在配置树的顶部有一个“根”模块的条目,该条目的名称已在配置文件中定义。

在下面,您可以找到按层次缩进的配置的其他元素:不同类型的模块(CAN、Profibus、I/O)、通道或
位通道。

元素选择
要选择元素,请在相应的元素上单击鼠标,或者使用箭头键将虚线矩形移动到所需元素上。

以加号开头的元素是组织元素,包含子元素。若要打开某个元素,请选择该元素,然后双击加号或按
<Enter>。您可以以相同的方式关闭打开的元素(元素前面的减号)。

插 入 元 素 , 'Insert' 'Insert element' , 'Insert' 'Append subelement'


根据配置文件中的定义和打开项目时已读取的可用设备文件,元素的基本组合会自动定位在配置树中。如
果选择了其中一个元素,则可以添加其他元素,前提是配置文件中的定义允许这样做,并且所需的设备文
件可用:

'Insert''Insertelement':可以选择一个元素并将其插入到当前在配置树中标记的元素之前。

'Insert''Appendsubelement':可以选择一个元素并将其作为当前标记在配置树中的元素的子元素插入。
它将插入到最后一个位置。
最重要的命令位于上下文菜单中(鼠标右键或 <Ctrl>+<F10>)。
请注意: 如果目标系统支持,则可以使用对现有硬件的扫描来在 CoDeSysPLC 配置中插入模块。

替换/切换元素,“附加”“替换元素”''
根据配置文件中的定义,当前选定的元素可能会被其他元素替换。同样,也可以切换通道,通道的设置方
式 可 以 用 作 输 入 或 输 出 元 素 。 使 用 命 令 'Extras' 'Replace element'

符号名称
模块和通道的符号名称可以在配置文件中定义。在这种情况下,它们将显示在配置编辑器中相应元素的
IEC地址的“AT”之前。在配置文件中还定义了符号名称是否可以编辑或插入到配置编辑器中。要输入符号
名称,请在配置树中选择所需的模块或通道,然后通过鼠标单击IEC地址前的“AT”打开文本字段。以同样
的方式,您可以在双击名称后编辑现有符号名称。请注意,分配一个符号名称与一个有效的变量声明相对

6-22 CoDeSysV2.3版本
6 - 资源

应!

模块的导出/导入
如果在配置文件(*.cfg)中将模块定义为“可导出”,则在配置树中选择该模块时,您将在上下文菜单中找
到“导出模块”和“导入模块”命令。

使用命令“导出模块”,将打开用于选择文件的对话框。在这里,您可以定义一个文件,模块将以 XML 格
式导出到该文件中,以及所有子模块及其配置。如果在配置树中选择了适当定义的模块,则可以通过命
令“导入模块”将此文件导入到另一个 PLC 配置中。

因此,可以简单地将特定模块的配置树转移到另一个 PLC 配置中。

6.6.3PLC配置中的常规设置
选择配置树顶部的“PLCconfiguration”(“root”模块)条目。然后,“设置”对话框显示在窗口的右侧。可
以激活以下选项:
计算地址:
每个新插入的模块都会自动分配一个地址,该地址由之前插入的模块的地址加上该地址的大小
得出。如果从配置中删除模块,则会自动调整以下模块的地址。当执行命令“Extras”“计算地址”时,将重
新计算从所选节点(模块)开始的所有地址。

检查重叠地址:在编译时,将检查项目是否有重叠地址,并显示相应的消息。

将配置文件保存在项目中:配置文件*.cfg 和设备描述文件中包含的信息(作为当前 PLC 配置的基础)将


保存在项目中。

因此(如果配置文件未定义,则始终应重新加载标准配置!),即使重新打开项目时找不到配置文件,用
户设置的配置也将保留在项目中。请记住,在这种情况下,如果未激活此处描述的选项,则完整的项目特
定配置将丢失!

通过将配置信息与项目一起保存,这些信息也将保持在目标更改处。但在这种情况下,新目标可能会带来
自己的配置文件,然后将额外考虑这些配置文件。

PLC 配置的常规设置对话框

PLC 配置中的全局寻址模式(平面地址/地址取决于 Id)在配置文件中定义。

CoDeSysV2.3版本 6-23
PLC配置

重新计算模块地址,“附加”“计算地址”
如果在 PLC 配置编辑器的“设置”对话框中激活了“计算地址”选项,则命令“附加”“计算地址”将开始重新
计算模块的地址。所有以当前在配置树中选择的模块开头的模块都将被考虑在内。

添加配置文件
在“Extras”菜单中使用此命令将另一个文件添加到项目的配置文件中。这些文件位于项目选项中指定的目
录路径中,类别为“目录”,输入字段为“配置文件”。

将打开 “ 选择配置文件 ” 对话框,您可以在其中为 CAN- ( *.eds , *.dcf )、 Profibus- ( gsd*.* )、


configuration- (*.cfg)文件或所有文件(*.*)设置过滤器。选择所需文件后,将进行检查,是否已在配
置文件定义的目录之一中找到该文件。在这种情况下,将出现相应的消息,并且无法添加文件。如果选择
了 cfg 文件,则在每种情况下都会打开一个对话框,您可以在其中获取有关要执行的操作的信息。

如果可以添加文件,则“选择配置目录”对话框(其中当前为项目定义的所有配置目录)将显示在选择列
表中。选择文件应复制到的目录。按下按钮 OK 确认此选择后,对话框将关闭,文件将立即在 PLC 配置
中可用。

返回标准配置,“附加”“标准配置”
命令 'Extras''Standardconfiguration' 可用于恢复原始 PLC 配置,该配置由配置文件 *.cfg 定义并保存在
项目中。

注意:在配置文件 *.cfg 中,可以定义在每次重新打开项目时都应恢复标准配置。在这种情况下,用户完成的所有配


置调整都将丢失!

转换旧的 PLC 配置,“附加”“转换”


如果您打开一个包含 PLC 配置的项目,则此命令在菜单“附加”中可用,该配置是使用比 V2.2 更早的
CoDeSys版本创建的。如果所有需要的配置文件都可用,则命令“转换”会将现有配置转换为实际 PLC 配
置的格式。将打开一个对话框,询问 “ 将配置转换为新格式?注意:撤消是不可能的!您可以选择 “ 是 ”
或“否”。如果使用“是”关闭对话框,配置编辑器也将关闭。重新打开它,您将看到新格式的配置。请注
意,转换后,旧格式无法再恢复!

6.6.4 自定义特定参数对话框
通过使用特定于应用程序的 DLL(一个单独的对话框)来扩展配置器的参数化可能性。此“Hook”-DLL 必
须位于包含配置文件的目录中,然后可以通过配置中的条目链接 file.to 模块或通道。如果这样做,对于相
关模块,标准对话框“模块参数”将替换为 DLL 中定义的对话框。

6-24 CoDeSysV2.3版本
6 - 资源

特定于应用程序的参数对话框示例(自定义参数)

6.6.5I/O模块的配置

I/O 模块的基本参数
如果在配置树中选择了 I/O 模块,则会显示“基本参数”对话框,其中包含以下条目:

模块 ID:模块ID 是整个配置中模块的唯一标识符。它由配置文件定义,在配置编辑器中不可编辑。

节点 ID:节点ID 可以由配置文件中的条目定义,如果没有条目,也可以由模块在配置结构中的位置定
义。
输入地址、输出地址、诊断地址:分别用于存储诊断数据的输入地址和输出地址。

这些地址是指模块。这取决于常规设置,哪些地址已预定义,哪种地址模式有效,以及地址是否仍可在此
处编辑。
注释:可以在此处输入有关模块的附加信息文本。
加载模块说明:
如果禁用此选项,则在下载项目时将不考虑该模块。默认情况下,该选项处于激活状态,
并在配置文件 *.cfg 中定义它是否在配置对话框中可 和可编辑。

不自动调整地址:
此选项仅在配置文件定义时可用。如果激活,则在重新计算地址时将不考虑该模块。(
默认值:选项已停用。

CoDeSysV2.3版本 6-25
PLC配置

I/O 模块的基本参数对话框

PLC配置中的诊断:
诊断地址字段 用于指定诊断信息(总线状态)将自动写入的标记地址。

对于普通的 I/O 模块,这取决于特殊的硬件配置,即如何处理诊断。对于 CAN 或 ProfibusDP 等总线系


统,诊断工作方式如下所述:从给定的诊断地址开始,将存储有关 结构 GetBusState 的各种信息,
GetBusState 是制造商提供的相应库的一部分(例如,3S-SmartSoftwareSolutions的BusDiag.lib)。
每当IEC任务向模块写入或读取过程数据时,所有总线模块都会收到一个请求,要求以循环顺序填充诊断
结构。

• 通过功能块DiagGetState 进行诊断分析:
一旦总线系统中的至少一个模块产生错误,就可以使用功能块DiagGetState读取特定的诊断信息,该功能
块也是上述库的一部分。此功能仅适用于已在 CoDeSysPLC 配置中配置的总线主站!

为了能够分析结构 GetBusState 中给出的诊断数据,必须将 GetBusState 类型的变量分配给标记地址(


诊断地址),例如:
总线提示 %MB12:GetBusAd;

请参阅以下功能块DiagGetState的输入和输出参数。在 CoDeSys 项目中定义此功能块的实例,以读取特


定总线模块的诊断信息:

DiagGetState 的输入变量:

启用:BOOL; 在ENABLE的上升沿,功能块开始工作
DRIVERNAME:指向字符串 应向其发送诊断请求的驱动程序的名称(名称的地址)。如果在此处
的指针; 输入 0,则诊断请求将转发给所有当前驱动程序。

设备编号:INT; 由驾驶员管理的总线的标识。例如:Hilscher 驱动程序最多可以处


理 5 张卡(总线)。索引从 0- 开始。

BUSMEMBERID : DWORD ; 总线模块的唯一总线/驱动程序特定标识(例如:对于CANopen卡,这


是NodeID,对于PB-DP卡,这是参与者的站地址等)

6-26 CoDeSysV2.3版本
6 - 资源

DiagGetState 的输出变量

准 备 : BOOL ; TRUE:诊断请求的工作已终止

状态:INT; 如果 READY=TRUE,则 STATE 获取以下值之一,这些


值定义功能块的实际状态: -1:输入参数无效(
NDSTATE_INVALID_INPUTPARAM:INT;) 0:功能块
不工作(NDSTATE_NOTENABLED:INT;) 1:功能块
只是在读取诊断信息(NDSTATE_GETDIAG_INFO:
INT;) 2:诊断信息现在可用(
NDSTATE_DIAGINFO_AVAILABLE:国际;)3:没有可
用的诊断信息(
NDSTATE_DIAGINFO_NOTAVAILABLE:INT;)

EXTENDEDINFO: 高达 100 字节的总线制造商特定诊断数据。


ARRAY[0..129] 字节;

• 通过功能块DiagGetBusState进行替代诊断分析:
如果在配置中指定了诊断地址,则总线状态将在后台更新。如果未指定诊断地址或未在CoDeSys中进行
任何配置,则在目标系统支持的情况下,可以实例化并显式调用功能块DiagGetBusState,以便从总线获
取诊断数据。此功能块(如DiagGetState) 也 必 须 在 制 造 商 特 定 的 库 中 提 供 , 例 如3S - Smart Software
SolutionsGmbH 的 BusDiag.lib。

该模块(BusMemberID除外)使用相同的输入和输出参数。但是,参数 STATE 和 EXTENDEDINFO 具


有以下不同的含义:

状态:INT;如果 READY=TRUE,则 STATE 获取定义实际总线状态的以下值之一:


BUSSTATE_BUSOK(总线运行正常) BUSSTATE_BUSFAULT(总线错误)
BUSSTATE_BUSNOTCOMMUNICATING(通信错误) BUSSTATE_BUSSTOPPED(总线已停
止)

EXTENDEDINFO:ARRAY[0..129] 总线部件的制造商特定诊断数据;字节;仅使用字节的前三位:位
0 :已配置总线成员位 1 :总线成员处于活动状态位 2 :总线成员报错,详细信息可通过
DiagGetState()获取 *)

CoDeSysV2.3版本 6-27
PLC配置

模块参数 /I/O 模块的自定义参数


模块参数对话框

在此对话框中,将显示设备文件给出的参数。只有“value”列是可编辑的。

索引:索引是一个连续的数字(i),它一直编号模块的参数。

Name:参数名称
Value :参数的值,可编辑
最初显示默认值。可以直接设置值,也可以通过符号名称设置值。如果配置文件中的条目未设置为“只读
”,则可以对其进行编辑。为此,请分别单击编辑字段,选择滚动列表中的条目。如果值是文件名,您可
以通过双击打开“打开文件”对话框并浏览其中的另一个文件。

默认值:参数的默认值
Min.:参数的最小值(仅当未使用符号名称时)
Max.:参数的最大值(仅当未使用符号名称时)
工具提示可能会提供有关当前标记的参数的其他信息。
可能有一个特定于客户的对话框,而不是“模块参数”对话框。这是因为,这样的对话框由配置文件中模块
定义的条目(Hook-DLL)链接。

6.6.6 通道配置

通道的基本参数
Channel-Id:频道的全局唯一标识符
类:定义通道是用作输入(I)、输出(Q)还是用作输入和输出(I&Q),或者它是否可切换(I|Q)。
如果通道是可切换的,这可以通过命令“Extras”“替换元素”来完成。

Size:通道大小[Byte]
默认标识符:通道的符号名称
通道的名称在配置文件中定义。只有当父模块的定义允许时,才能在配置树中编辑通道的名称。

评论:有关频道的其他信息在编辑字段中,可以插

6-28 CoDeSysV2.3版本
6 - 资源

入或修改评论。
地址:仅当配置文件中的条目激活此编辑字段时,该字段才可用。为通道插入所需的地址。

通道的基本参数对话框

通道参数
与 “ 模块参数 ” 对话框相对应, “ 通道参数 ” 对话框用于显示和修改通道的参数:索引、名称、值、 默认
值、最小值、最大值。此对话框也可以替换为客户特定的对话框“自定义参数”。

比特通道
当配置文件中的 CreateBitChannels=TRUE 时,将自 a 个频道 是 定义 跟 一 进入
动插入位通道。
位通道的“基本参数”对话框仅包含“注释”字段。

6.6.7Profibus模块的配置
CoDeSys 支持与 profibusDP 标准相对应的硬件配置。在profibus系统中,您可以找到主站和从站模块。
每个从站都提供由主站设置的参数,并根据主站的要求提供数据。

PROFIBUSDP系统由一个或多个主站及其从站组成。首先,必须对模块进行配置,以便可以通过总线进
行数据交换。在总线系统初始化时,每个主站对配置分配给它的从站进行参数化。在正在运行的总线系统
中,主站向从站发送和/或请求数据。

CoDeSys中主模块和从模块的配置基于硬件制造商附加到它们的 gsd 文件。为此,将考虑存储在配置文


件目录中的所有 gsd 文件(参 第 4.2 章“项目选项:目录”)。gsd 文件描述的模块可以插入到配置树
中,并且可以在那里编辑其参数。

在主站下方,可以插入或几个从站。
如果在配置树中选择了 DP 主站,则配置右侧将出现以下对话框:基本参数、DP 参数、总线参数、模块
参数。
如果选择了 DP 从站,该从站插入到 DP 主站下方,则可以使用以下对话框(取决于配置文件中的定义
):基本参数、DP 参数、输入/输出、用户参数、组、模块参数。根据配置文件中的设置,“DP 参数”对
话框可能具有另一个标题。

如果将 DP 从站插入到主站的级别上,则以下对话框可用于配置:基本参数、DP 参数、输入/输出、模块


参数。

CoDeSysV2.3版本 6-29
PLC配置

DP 主站的基本参数
DP 主站的“基本参数”对话框与其他模块的对话框匹配(请参 第 6.6.5 章“I/O 模块的基本参数”)。

DP主站的模块参数
DP 主站的模块参数对话框与其他模块的对话框匹配:除了配置文件中的 DP 和总线参数外,此处还显示
了分配给主站的参数,并且可以在标准情况下编辑这些值(请参 第 6.6.5 章“I/O 模块的模块参数”)。

DP 主站的 DP 参数
此对话框显示从 DP 主设备的设备文件中提取的以下参数(该对话框可能具有不同的标题,在配置文件中
定义):

信息制造商、GSD修订版、ID(标识号)、硬件版本和软件版本(硬件和软件版本)、GSD 文件名

地址 电台地址:允许范围从 0 扩展到 126。总线上新插入的每个设备都会自动提供下一个更


高的地址。(注意:地址 126 是默认的 DP 从地址)。可以手动输入;对地址进行重复测
试。

最高 站地址:显示总线上分配的最高 站地址(HSA)。在这里,还可以输入较低的
地址以缩小GAP范围(即,搜索新活动设备的地址范围)。

模式 自动清除模式:如果激活此选项,则在错误情况下,从站的输出将切换到保存状态,并
且主站将从“运行”状态变为“清除”状态。

自动启动:如果未激活此选项,则必须手动启动主服务器。但是,这取决于驱动程序是
否评估设置。

与设备有关的GSD文件可以使用 GSD 文件按钮。

DP 主节点的 DP 参数对话框

6-30 CoDeSysV2.3版本
6 - 资源

“ 组”按钮将转到“组属性”对话框。组属性与分配给主站的从站有关。最多可以设置八个组。对于每个
组,输入它是在冻结模式还是同步模式下运行。通过将从站(参 “DP 从站的属性”“组分配”)分配给各
个组,可以通过全局控制命令同步来自主站的数据交换。使用 Freeze 命令,主站指示从站或组“冻结”瞬
时状态下的输入,并在随后的数据交换中传输这些数据。使用Sync命令,指示从站同步切换到在下一个
Synch 命令中输出第一个命令后从主站接收的所有数据。

要打开 / 关闭组的冻结和同步选项,请用鼠标左键单击表格中的相应位置以放置或删除所需选项旁边的
“X”,或使用鼠标右键通过上下文菜单激活或停用该选项。此外,您可以在此处编辑组名称。

DP 主/组属性对话框的 DP 参数

DP主站的总线参数
总线参数描述通信的时序。如果激活了“使用默认值”选项,则将根据用户设置的波特率和 GSD 文件给出
的设置自动计算参数值。

注意::自动计算的值只是近似值!

DP主站的总线参数

CoDeSysV2.3版本 6-31
PLC配置

所有参数也可以手动编辑。

波特率 GSD 文件中已存在的条目可供选择,但只有


可以输入所有从站支持的传输速率。
使用默认值 如果激活该选项,则在“总线参数”对话框中输入的条目将为
根据 GSD 文件中的规范进行了优化;只有
如果该选项已停用,请编辑值。
重要提示:自动计算的值只是粗略的近似值。

时隙时间主服务器在发送请求消息后等待从服务器回复消息的第一个字符的配方的最 时间

最小站延迟 最小 TSDR(单位为 tbit):总线上的站可以回复的最短反应时间(最小 11tBit)

Max.Station Delay max.TSDR (单位:tbit):从站必须回复的最大时间跨度。

静默时间TQUI(单位:tbit):在将NRZ(不归零)信号转换为其他编码时必须考虑的空闲时间(中继器
的切换时间)
目标轮换TTR(以 tbit 为单位):令牌周期时间设置;主时间应接收令牌的预计时间间隔 。总线上所有主节
点的令牌停止时间之和的结果。

差距更新因子 GAP更新因子G:在该周期之后,在主站的GAP(从其自己的总线地址到下一个活动站地
址的地址范围)中搜索其他新插入的活动站的总线周期数。

最大重试次数限制主站未收到从站有效响应时重复请求尝试的最大次数

最小从站间隔从站可以处理来自主站的请求的两个总线周期之间的时间(时间基础100 s)。此处输入的
值必须根据从站的 GSD 文件中的相应规范进行检查。

轮询超时:请求者(2 类 DP 主站)必须检索主站-主站通信对主站的回复的最 时间(时间基础 1 毫秒


)。
数据控制时间主站向分配给它的从站报告其状态的时间。同时,主站监控在此期间是否与从站进行了至少
一次数据交换,并更新Data_Transfer_List。

看 狗时间访问监控(看 狗)的时间值。目前不支持设置(固定设置为 400ms)

DP 从站的基本参数
DP 从站的基本参数对话框与其他模块的对话框匹配(请参 第 6.6.5 章 “I/O 模块的基本参数”)。

DP 从站的基本参数对话框

6-32 CoDeSysV2.3版本
6 - 资源

DP 从站的 DP 参数
此对话框显示从 DP 从站的设备文件中提取的以下参数(该对话框可能具有不同的标题,该标题在配置文
件中定义):
DP 从站的 DP 参数对话框

信息 制造商、GSD修订版 、硬件版本和软件版本(硬件和软件版本)、GSD 文件
名、从属类型
标准参数 Identnumber:PNO 为此设备类型分配的唯一标识号。允许在 DP 从站和相应
的 GSD 文件之间明确引用。

TSDR (Tbit*): TimeStationDelayResponder:反应时间,允许从站响应主


站的最早时间。(最小 11TBit) *TBit:在 PROFIBUS 上传输位的时间单位;
传输速率的倒数值;例如,12MBaud=1/12.000.000Bit/sek=83ns 时为 1TBit 锁
定/解锁:从站被锁定或释放到其他主站:0:分钟。TSDR 和特定于从机的参数
可能会被覆盖 1:从机释放到其他主机,2:从机锁定到其他主机,所有参数都
被接受;3:从属被释放给其他主

鉴定 工作站地址(参 “DP 主站的属性”)、工作站名称


(匹配设备名称,可编辑)
激活 从设备在当前配置中处于活动 / 非活动状态。如果未选择激活,则配置数据仍将
在下载时传输到耦合器,但不会通过总线进行数据交换。

看 狗 如果 将看 狗控制设置为活动状态,则应用输入的看 狗 时间(访问监控,以
10 毫秒为基准)。如果在这段时间内主站未访问从站,则将其重置为初始化状
态。您可以通过GSD-File

CoDeSysV2.3版本 6-33
PLC配置

DP从站的输入/输出
用于配置 DP 从站的输入/输出的对话框

DP从站的配置方式取决于它是“模块化”还是“非模块化”的“固定”从站。

模块化从站模块的选择如下所述:
在对话框左侧的列表中,选择所需的输入或输出模块,然后按“选择”按钮 将其进入右侧的窗口。该窗口
中的错误条目可以通过“删除”按钮进行更正。插入的模块将立即显示在配置树中。如果在那里选择它们,
将提供相应的对话框 ProfibusModul,显示模块的输入、输出和诊断地址。如果您选择已插入模块的通
道,将打开对话框 Profibus 通道,显示通道的地址。对于这两个对话框中的每一个,配置文件中的设置
可能会定义不同的标题。

由于必须遵守GSD 文件中指定的最大数据 度(输入数据的最大 度、输出数据的最大 度、输入/输出


数据的最大 度)和最大模块数(最大模块数),因此此信息显示在两个模块列表中。左边的块显示设备
的最大可能值,右边显示配置中所选值相加得出的值。如果超过最大值,则会发出错误消息。

该对话框在左侧窗口中列出了从机的GSD文件中可用的所有输入和输出模块,而右侧窗口包含当前为此
设备选择的配置,因为它与输入和输出相关。

如果这是模块化从站(可配备各种I/O模块的设备),则选择过程如下:在左侧列表中,通过鼠标单击选
择所需的输入或输出模块,并使用“选择>>”按钮复制到右侧窗口中。通过在右侧窗口中选择不需要的模
块并按“删除”按钮,可以更正不正确的条目。

对于非模块化从站,这种选择是不可能的。它们直接在右侧窗口中强制关闭其输入和输出。然后,可以通
过选择并使用“删除”来删除不需要的模块。

“ 属性”按钮指向当前在左侧或右侧列表中选择的输入或输出模块的“模块属性”对话框。它显示名称、
配置(根据 PROFIBUS 标准的模块描述编码)以及模块的输入和输出 度(以字节为单位)。如果
GSD 文件中的模块描述除了标准集之外还包含特定参数,则此处会列出这些参数及其值和值范围。如果
激活了“符号名称”选项,则使用符号名称。

6-34 CoDeSysV2.3版本
6 - 资源

DP从站的用户参数
DP 从站的用户参数对话框

这里列出了 GSD 文件中定义的 DP 从站的各种扩展参数。参数


列显示参数的名称。在“值”列中输入的参数值可以通过双击或通过鼠标右键进行更改。此外,还指定
了“值”范围。
如果还为 GSD 文件中的参数指定了符号名称,则可以激活“符号名称”选项,以便可以使用这些名称显示
值。作为信息,表上方还给出了用户参数的 度。

DP 从站的组分配
DP 从站组分配对话框

此对话框用于将从站分配到八个可能的组中的一个或多个。普遍适用的组属性(Sync.另一方面,模式和/
或冻结模式)是在配置主节点属性期间定义的(参 上文“DP 主节点的 DP 参数,组属性”)。也可以通
过“全局组属性”按钮访问此对话框。

从站分配到的组标有加号。通过在“组成员身份”中选择组名称来完成对组的分配或从组中删除

CoDeSysV2.3版本 6-35
PLC配置

列,然后用鼠标右键单击“将从站添加到组”或“从组中删除从站”,或者用鼠标再次单击组名称左侧。

从属设备只能分配给其支持其属性的组。每个从站的相关属性(Sync.模式/冻结模式)显示在表格上方。
检查设备支持的模式。

DP从站的模块参数
DP 从站的模块参数对话框与其他模块的模块参数对话框匹配(参 第 6.6.5 章)。除了配置文件中的DP
和用户参数外,还显示分配给从站的参数,并且可以在标准情况下编辑这些值。

DP从站在Profibus从站操作中的属性
如果 Profibus 在从站模式下运行,则从站设备将插入到配置树的主站级别。可以在以下对话框中完成配
置(有关说明,请参阅上面的章节):
基本参数
DP参数
模块参数
输入/输出

6.6.8CANopen模块的配置
CoDeSys支持根据CANopen草案标准301进行硬件配置。该配置类似于针对硬件相关配置的描述。

所有EDS(电子数据表)和DCF(设备配置文件)文件,当CoDeSys启动时,存储在配置文件目录(参
第 4.2 章,项目选项:目录)中,都可以根据配置文件 *.cfg 中的描述在配置中集成、编辑和显示。在
EDS文件中,描述了CAN模块的配置选项。如果添加DCF文件中描述的模块,则只能修改IEC地址,因为
该模块已在CAN配置器中完全配置。

CAN模块获得一个配置,该配置描述了它们在报文交换期间与时间和错误相关的行为(对话框“CAN模块
的CAN参数”)。对于每个模块,PDO(过程数据对象)的映射,用于发送和接收(对话框“接收...”“发
送 PDO 映射”)。可以调整可用 SDO(服务数据对象)的值(“服务数据对象”对话框)。

在设备描述文件中指定的CAN模块或CAN主站的其他参数可以在“Modulparameters”对话框中进行配置。

如果CoDeSys可编程PLC应作为CANopen从站(也称为“CANopen节点”,以下称为“CAN设备”)集成到
CAN网络中,则可以在CoDeSysPLC配置器中对其进行配置,并且配置可以以EDS文件的形式存储。然
后,该设备描述文件可用于任何所需的CANopen主站配置。

以 下 章 节 介 绍 了 CANopen 配 置 器 的 对 话 框 和 菜 单 命 令 。 更 多 信 息 “CANopen für 3S Laufzeitsysteme


V<version>.pdf”。

CAN主站的基本参数
CAN主站的基本参数对话框与其他模块的对话框匹配(参 第6.6.5章 “I/O模块的基本参数”)。

CAN主机的CAN参数
CAN总线上的传输属性可以在插入模块后直接设置,也可以使用命令“Extras”“Properties”调用。

使用选择选项,设置传输应以的所需波特率进行传输。可以区分PDO(过程数据对象)的同步和异步传输

6-36 CoDeSysV2.3版本
6 - 资源

模式(参 PDO属性)。同步消息以唯一编号 Sync 发送。COB-ID(通信对象标识符),以微秒为单位,由


通信周期给出。同步 PDO 在时间窗口(Sync.窗口 度( 以微秒为单位)。如果字段为 Comm.CyclePeriod
和 Sync,则不会发送同步消息。窗口 度包含 0。

activate:仅当激活此选项时,同步消息才会在主站和从站之间传输。

Node-Id:用于唯一标识CAN模块,对应于模块本身的设置编号,介于1和127之间。Id 必须以十进制数
形式输入。(不要与“节点编号”混淆!

CAN主站的CAN参数对话框

当下载发生时,如果激活了自动启动选项,则当控制器系统启动时,CAN总线将自动初始化和启动。如
果此选项未激活,则必须在项目中启动 CAN 总线。

如果激活了“支持 DSP301、V3.01 和 DSP306”选项,则将支持模块化 CAN 从站以及有关 DSP301、


V3.01 和 DSP306 标准的一些附加扩展。在这种情况下,例如,心跳的行程将是可调的 (心跳大师
[ms]:)。使用 Heartbeats 是一种替代的保护机制:与 Nodeguarding 功能相比,它可以由 Master 和
Slave-Modules 执行。通常,主站将被配置为向从站发送心跳。

CAN主站的模块参数
CAN主站的模块参数对话框与其他模块的模块参数对话框相同(参 第6.6.5章):在配置文件中额外分
配给主站的参数显示在此处,默认情况下可以编辑这些值。

CAN模块的基本参数
DP 主站的“基本参数”对话框与其他模块的对话框匹配(请参 第 6.6.5 章“I/O 模块的基本参数”)。

为输出和输入地址输入项目中的PDO(过程数据对象)的IEC地址, 从而从模块的视图定义方向(输入
或输出)。

CoDeSysV2.3版本 6-37
PLC配置

必须在CAN模块的诊断地址处给出标记地址。它的工作方式与CAN主站的描述类似。

CAN模块的CAN参数
CAN模块的CAN参数不作为主站(总线的全局监视),与CAN主站的CAN参数不同。

CAN模块的CAN参数对话框

部分总则:
Node-Id用于唯一标识 CAN 模块,并对应于模块本身的设置编号,介于 1 和 127 之间。Id 必须以十进
制数形式输入。
如果激活了 DCF 写入,则在已编译文件的定义目录中插入 EDS 文件后,将创建一个 DCF 文件,该文件
的名称由 EDS 文件的名称和末尾附加的节点 ID 组成。

如果激活了“创建所有 SDO”选项,则将为所有对象创建 SDO(不仅为已修改的对象创建)。

如果激活了选项重置节点(可用性取决于设备描述文件的内容),则将在下载配置之前重置从站。

如果激活了“可选设备”选项(对话框中的可用性取决于目标),则主节点将仅尝试从此节点读取一次。
然后,如果不应答,节点将被忽略,即主节点将返回正常操作模式。

如果激活了“未初始化”选项(对话框中的可用性取决于目标),则主节点将立即激活节点,而不发送配
置 SDO。(尽管如此,SDO 数据仍将创建并保存在控制器上。

6-38 CoDeSysV2.3版本
6 - 资源

如果得到目标的支持,则可以在三个级别上抑制SDO的创建。在配置空间有限的情况下,可能需要这样
做:

注意:在未详细了解系统的情况下,不应修改这些设置!

CreateCommSDOs:通信参数SDO
CreateMappingSDOs:映射配置SDO
CreateBasicSDOs:基本参数 SDOS(Nodeguarding、Sync 等)
只有对于激活的类型,才会创建相应的 SDO。上面描述的选项“创建所有 SDO”仅指当前在此处激
活的 SDO 类型。
部分节点守卫:(替代通过心跳机制守卫)
如果激活了Nodeguarding选项,则会根据 GuardTime设置的时间间隔(以毫秒为单位)向模块发送一
条消息。如果模块没有发送带有给定 GuardCOB-ID(通信对象标识符)的消息,它将收到状态“超时”。
一旦达到尝试次数(寿命因子),模块将收到“不正常”状态。模块的状态将存储在诊断地址。如果未定义
变量 GuardTime 和 LifeTimeFactor (0),则不会对模块进行监控。

部分心跳设置:(或者是 Nodeguarding)
如果激活了 ActivateHeartbeatProducer 选项,则模块将根据 Heartbeat Producer Time:中定义的时
间间隔发送检测信号:以毫秒为单位。
如果激活了ActivateHeartbeatConsumer选项,则模块将侦听主设备发送的心跳。一旦没有收到更多的
心跳,模块将关闭 I/O。

部分紧急电报:
当出现内部错误时,模块会发送具有唯一COB-ID 的紧急消息。这些消息因模块而异,存储在诊断地址
中。
来自相应模块制造商的 EDS 或 DCF 文件的条目“FileInfo”和“DeviceInfo”隐藏在“信息”按钮后面。

模块化从站的CAN模块选择
在左列(可用模块)中,您可以找到可用于从站的所有模块。标记所需的模块,然后使用“添加”和“删
除”按钮在右列(所选模块)中创建选择。PDO 和 SDO 选择将自动更新。

CAN模块的PDO映射
CAN 模块配置对话框中的“接收 PDO 映射”和“发送 PDO 映射”选项卡 允许更改模块的“映射”,如
EDS 文件中所述。
EDS 文件中的所有“可映射”对象都位于左侧,可以在右侧添加到 PDO(过程数据对象)(“>>”按钮)或
再次删除(“删除”按钮 )。可以插入 StandardDataTypes 以在 PDO 中创建空白空间。

“插入元素”按钮可用于创建进一步的 PDO 并向其添加适当的对象。输入或输出到IEC地址的分配可以通


过插入的PDO来实现。在控制器系统配置中所做的设置将在离开对话框时变得可 。可以为各个对象提
供符号名称。

CoDeSysV2.3版本 6-39
PLC配置

CAN模块的配置,PDO-Mapping

PDO 的标准集属性可以使用命令 Properties 进行编辑。


PDO 属性对话框

每个 PDO 消息都需要一个唯一的COB-Id(通信对象标识符)。
该字段显示为灰色,如果模块不支持某个选项或无法更改该值,则无法编辑该字段。

禁止时间是来自此 PDO 的两条消息之间的最短时间。这是为了防止在更改值时发送的 PDO 过于频繁地


发送。
CMS优先级组无法更改,并描述了CAN传输期间PDO的相对重要性。显示从 0 到 7 的值,其中 0 为最
高值。
传输类型为您提供了此模块的可能传输模式选择:
非循环-同步:PDO 将同步传输,但不会定期传输。
循环–同步:PDO 将同步传输,其中Sync 的 Number of Sync
给出位于此 PDO 的两次传输之间的同步消息数。
同步–仅限 RTR:PDO 将在每次同步消息后更新,但不会发送。只有在有明确请求时才会发送(远程传
输请求)
异步–仅限 RTR:仅当有明确请求时,才会更新和传输PDO(远程传输请求)

异步-特定于设备配置文件和异步-特定于制造商:仅当发生特定事件时才会传输 PDO。

6-40 CoDeSysV2.3版本
6 - 资源

同步次数:如果设置了循环传输,请在此处输入应在 PDO 的两次传输之间发送的同步消息数量(参


CAN 参数对话框中的“通信周期”)。

事件时间:如果设置了相应的传输类型,请在此处输入两次传输之间的间隔(毫秒)。

服务数据对象
在这里,您可以找到 EDS 或 DCF 文件中所有对象的列表,这些对象位于索引0x20000x9FFF区域中,
并且标记为可写。
将显示每个对象的属性“索引”、“名称”、“值”、“类型”和“默认值”。该值可以更改。标记该值并按
<空格键>。进行更改后,使用 <Enter> 确认新值,或使用 <Escape> 键拒绝它。

在CAN总线初始化时,设定值以SDO(服务数据对象)的形式传输到CAN模块。

将 SDO 重置为默认值:如果 SDO 在传输到 CAN 总线后,其值由用户修改(即值偏离默认值),则应


重置为默认值以供下次传输,请删除“值”列中的条目。这意味着,为此,value 字段必须为空;如果输入默
认值,则不会传输任何内容!

注意:CANopen和IEC-61131之间所有不兼容的数据类型将在CoDeSys中被下一个更大的IEC-61131数据类型替
换。

用于配置服务数据对象(SDO)的对话框

6.6.9CanDevice(CANopen从站)的配置
可通过CoDeSys编程的PLC可用作CAN网络中的CANopen从站(CANopen-Node,下文称为
“CanDevice”)。
为此,可以在 CoDeSysPLC 配置器中配置 PLC,并将配置保存在 EDS 文件中。此EDS文件(设备文
件)稍后可以在任何CANopen主站配置中使用。

在 CoDeSysPLC 配置器中创建 CanDevice 的前提条件:


1. 图书馆
3S_CanDrv.lib
3S_CanOpenManager.lib
3S_CanOpenDevice.lib
必须包含在 CoDeSys 项目中。它们需要将PLC作为CANopen设备运行。

2. 在配置所基于的配置文件(*.cfg)中,必须插入 CanDevice 的相应条目。只有这样,在PLC配置编辑


器中,才能在三个配置对话框中附加和参数化子元素“CanDevice”,如下所述:

CoDeSysV2.3版本 6-41
PLC配置

基本设置
CAN设置
默认 PDO 映射

CanDevice 的基本设置
总线标识符:当前未使用。
updatetask 的名称:调用 CanDevice 的任务的名称。选择列表将提供项目中可用的所有任务。

EDS文件生成:如果要从当前配置设置生成设备文件(EDS 文件),以便以后能够在任何主配置中使用
CanDevice,请激活此选项。在EDS 文件的名称字段中输入文件的路径和名称。或者,可以定义手动创
建的模板文件(EDS 文件模板),该文件将补充配置对话框中完成的设置。例如,您可以创建一个包含
某些 EDS 文件条目的文本文件,将其另存为“EDS_template.txt”,然后在当前对话框中输入此模板的路
径。如果您随后从当前项目生成EDS文件“device_xy.eds”,则该项目生成的条目将与模板的条目合并,
并将保存在 “device_xy.eds” 中。(不要使用扩展名 “.eds” 作为模板文件!如果条目是由当前项目创建
的,并且模板已由模板定义,则模板定义不会被覆盖。

对话框基础设置

要输入文件路径,您可以使用标准对话框浏览文件,可以使用按钮“浏览...”打开该文件。

CanDevice 的 CAN 设置
在这里,您可以指定CANopen标准中已知的CAN参数,以便将它们提供给运行时系统。这取决于运行时
系统将如何解释它们。如果您通过库CanOpen.lib在3S运行时系统中使用CANopen实现,请参阅相应的
文档 “CanOpenfor3SRuntimesystems”。

节点ID:节点ID(1-127)是主站用于在CANopen网络中对设备进行寻址的节点号。

波特率:从选择列表中选择总线内传输所需的波特率。
设备类型:在此字段中自动显示设备类型,在查找对象0x1000时返回该类型,即在项目中配置的 PLC 类
型。可以编辑设备类型。

6-42 CoDeSysV2.3版本
6 - 资源

自动启动:如果激活此选项,则在下载或启动 PLC 时,CAN 总线将初始化并自动启动:如果该选项未激


活,CanDevice 将等待适当的命令。

可以配置Nodeguard和 EmergencyTelegram功能。CAN模块和主站的配置请参考相应的说明。

心跳设置:
如果 激活了激活心跳生成选项,则 CanDevice 将根据在HeartbeatProducerTime:中定义的间隔(毫
秒)发送听觉节拍。
如果激活了“激活心跳使用者”选项,则 CanDevice 将侦听由使用者 ID 定义的模块发送的检测信号。 检
测信号使用者
时间定义时间(以毫秒为单位),在此时间之后,如果未收到检测信号,将设置错误标志。

对话框 CAN 设置

CanDevice 的默认 PDO 映射


在此对话框中,可以将本地参数管理器的条目分配给 PDO,这些 PDO 将由 CanDevice 发送/接收。然
后,PDO将可用于集成CanDevice的任何主配置中的PDO映射。

在“参数管理器”列表中,参数条目通过索引/子索引链接到项目变量。

请注意:索引的子索引0意味着多个子索引,将隐式用于存储子索引的数量。因此,请勿在参数管理器中使用子索引
0。还要注意,特定索引的参数必须在参数管理器中按升序输入(子索引 1、2、3...)。

可映射对象列表:从选择列表中选择变量的参数列表,CanDevice 应为其条目生成 PDO。如果目标系统


支持,则可以在参数管理器中创建“映射”类型的参数列表,其中包含专 用于 CANDevice 的 PDO 映射
的过程变量。在这种情况下,映射对话框中将仅提供这些参数列表。否则,将提供“变量”和“实例”类型

CoDeSysV2.3版本 6-43
PLC配置

的所有可用参数列表。

!注意:如果在参数管理器的目标设置中定义了“映射的索引范围”,则 CanDevice 将仅将该范围视为映射,而不能


同时定义其他索引范围!

根据所选的参数列表,对象将出现在左侧窗口中。在右侧窗口中,您可以创建所需的 PDO 配置(PDO


)。通过按钮 插 入 接 收 PDOresp。 插入发送 PDO,您可以在相应的列表组织元素下方插入“接收 PDO”
和“发送 PDO”。要将左侧窗口的对象分配给其中一个发送或接收 PDO,请在左侧窗口中标记该对象,并
在右侧窗口中标记 PDO,然后按>>。

因此,该对象将入右侧窗口中的 PDO 下方。 PDO的属性可以在对话框中定义,该对话框也用于其他


CAN模块的PDO配置。
通过使用“删除”按钮 ,当前在右侧窗口中标记的 PDO 将从配置中删除。

对话框默认 PDO 映射

例:
目标:在 CanDevice 的第一个接收 PDO (COB-Id=512+NodeId)上,应接收变量 PLC_PRG.a。

因此,在变量列表中的参数管理器中,必须将索引/子索引分配给变量 PLC_PRG.a。只有在“网络功能”类别的目
标设置中激活参数管理器,并且在那里定义了有效的索引和子索引范围时,才能打开参数管理器。

现在,在CanDevice的“默认PDO-Mapping”对话框中,可以将相应参数列表的索引/子索引条目分配给接
收PDO。

6-44 CoDeSysV2.3版本
6 - 资源

6.6.10DeviceNet模块的配置...
CoDeSys支持总线系统的硬件配置,该配置使用国际标准化的DeviceNet协议(EN50325)。DeviceNet
主要用于实现具有即插即用特性的主从网络,从而具有直接连接到传感器和执行器(接近开关,插座)的
总线。

DeviceNet通信协议基于CAN(控制器局域网)。通信模块之间的直接连接是数据交换的先决条件。

CoDeSysDeviceNet配置编辑器提供了DeviceNet-Master的定义,它将控制网络内的数据交换。支持各
种通信类型,用于从模块(DeviceNet-Slave)之间的输入和输出数据交换。通常,DeviceNet-Master采
用“UCMM”功能(用于多个连接的未连接消息管理器),并处理从其他主站到其从站的请求。

允许插入 DeviceNet-Master 和 Slave 模块的配置文件 *.cfg 是在 CoDeSysPLC 配置中执行 DeviceNet


配置的先决条件。配置文件会自动在当前设置的目录中搜索配置文件(请参 第 4.2 章“项目选项:目录
”)。

根据配置文件 *.cfg 中的定义,EDS 文件(设备描述文件、电子数据表)也可用于配置,这些文件也可以


在当前设置的配置文件目录中找到。在 EDS 文件中描述了 DeviceNet 模块的配置选项。考虑到CAN设备
描述文件也具有扩展名“.EDS“,但不能用于 DeviceNet 配置!

通常考虑在处理项目期间添加配置文件的可能性(参 第 6.6.2 章添加配置文件)。

如果在配置树中选择了 DeviceNet-Master,则在适当命名的选项卡上可以看到以下对话框:基本参数、
DeviceNet 参数、模块参数。
如果选择了插入在 DeviceNet-Master 下方的 DeviceNet-Slave ,则将提供以下对话框:基本参数、
DeviceNet参数、I/O连接配置、参数、模块参数。

DeviceNet-Master的基本参数
DeviceNet-Master 的“基本参数”对话框引用了“模块ID”、“节点号”、“输入地址”、“输出地址”和“诊
断地址”项,与其他模块的参数匹配(请参阅第 6.6.5 章 I/O 模块的基本参数)。

DeviceNet-Master的DeviceNet参数
DeviceNet主站的DeviceNet参数对话框

在“地址”字段中,插入在模块本身设置的 DeviceNet-Master 标识号。此 ID 的含义与 CAN 模块的“节点


ID”的含义相对应,不得与节点编号或基本参数对话框中定义的地址混淆!必须输入十进制,可能的值:
0-63,默认设置:0。

CoDeSysV2.3版本 6-45
PLC配置

此外,此处定义了网络内数据交换的波特率 [Baud]。选择以下设置之一:125000(默认)、250000、
500000。

DeviceNet-Master的模块参数
DeviceNet-Master 的模块参数对话框与其他模块的对话框相同(请参 第 6.6.5 章 I/O 模块的模块参数
)。此处显示配置文件中额外分配给主站的参数,通常可以编辑这些值。

DeviceNet-Slave的基本参数
DeviceNet-Slave 的基本参数对话框引用了输入地址和输出地址项,与其他模块的参数对话框相匹配(请
参 第 6.6.5 章 I/O 模块的基本参数)。方向(输入或输出)是从模块的视图定义的。

DeviceNet-Slave的DeviceNet参数
这里配置了模块的常用参数:
地址:DeviceNet-Slave的标识,在模块本身设置。此 ID 的含义与 CAN 模块的“节点 ID”的含义相对应,
不得与“基本参数”对话框中定义的“节点编号或”地址“混淆!必须输入十进制,可能的值:0-63,默认设
置:0。

设备在配置中处于活动状态:激活此选项以使设备成为网络中数据交换的主动参与者。

信息 ... : 此按钮将打开一个窗口,显示 EDS 文件的内容。请注意, CAN 设备描述文件也具有扩展名


“.EDS“,但不能用于 DeviceNet 配置!

DeviceNet-Slave的DeviceNet参数对话框

专家...:此按钮将打开“扩展设置”对话框,可在其中更改以下设置:

UCMM : (用于多个连接的未连接消息管理器)如果激活此选项(默认),则从站能够处理
UCMM 消息。可能的分类:Group1、Group2或Group3(默认)

默认情况下,以下检查将在网络启动时执行,如有必要,可以在此处停用。在检查过程中,始终将
EDS 文件给出的值与设备上的值进行比较:检查供应商 ID、检查设备类型、检查产品代码、检查
产品版本

6-46 CoDeSysV2.3版本
6 - 资源

对话框扩展设置

DeviceNet-Slave的I/O连接配置
在这里,您可以配置从站的输入和输出,通过这些输入和输出交换数据(参数值)。要定义连接类型,并
根据模块给出的可能性(EDS文件、输入、输出)组合输入和输出的选择。

DeviceNet从站的I/O连接配置对话框

CoDeSysV2.3版本 6-47
PLC配置

选 定 的 I/ O 连接:选择以下连接类型之一,这些连接类型应对下面定义的 I/O 连接有效:

轮询:对从站的数据进行周期性轮询(Master-Slave-process)
位选通:DeviceNet-Master 向所有从站发送广播报文,要求他们发送当前数据。从节点 1 开始,
一个接一个地应答。
状态变化:在输入端检测到每次更改时,从站都会将其数据发送到主站。不需要主节点的显式请
求。
循环:从站将在定义的循环时间后发送其数据,而无需主站明确请求(心跳“功能)。

组播轮询:目前不支持
I/O 完成:此处将显示当前用于所有已配置输入和输出的Inputbytes和Outputbytes的总和。总和是根据
对话框的“输入”和“输出”区域中为 I/O 定义的 度计算得出的。

扩展:此按钮将打开“更多设置”对话框,该对话框允许修改当前所选连接类型的以下默认设置:

预期数据包速率:默认值:75,预期速率(以毫秒为单位),根据该速率,从站应通过当前连接发
送其数据。
分段超时:[ms]:默认 1600ms;如果要发送的数据超过 8 字节的大小,则必须将它们分段并以多
个电报包发送。分段超时以毫秒为单位定义,即在触发“超时错误操作”中定义的操作之前,主设备
应等待分段报文上的从站应答的时间。

对话框“更多设置”,连接类型“循环”的示例

超时错误操作:定义,在超时时应启动以下哪些操作:

转换到超时:(默认)此操作是专 从定义的。
自动删除:I/O 连接将被删除。
自动复位:连接仍然存在,主设备重新配置从设备,看 狗复位。

连接类型“状态更改”的更多选项:
发送锁定时间:(默认值:1)两条消息之间的最小间隔(以毫秒为单位),即使在此时间跨度结
束之前数据已更改。此方法有助于避免传入请求使设备过载。“0”表示没有锁定时间,在这种情况
下,数据将尽快交换。

Timeout[ms]:(默认值:16)如果在此时间跨度(以毫秒为单位)内超过心跳速率,而尚未发送
数据,则将检测到超时错误。

6-48 CoDeSysV2.3版本
6 - 资源

心跳率[ms]:(默认值:250)时间跨度(以毫秒为单位),在此之后,从站在任何情况下都必须
发送其数据,即使它们没有更改。
连接类型“BitStrobe”的更多选项:
使用输出位:当应答主站时,从站将使用该输出位,该输出位对应于主站在请求报文中使用的输出
位。
连接类型“循环”的更多选项:
间隔 [ms]:以毫秒为单位的时间间隔,根据该时间间隔,从站必须自动发送其数据(心跳)。

超时 [ms]:如果在此时间跨度(以毫秒为单位)内已超过心跳速率,而尚未发送数据,则将检测
到超时错误。
输入:
从字段可用连接中,选择所需的输入,并将其传输到字段配置的输入连接按钮>>。通过按钮<<您可以从
中删除条目。
要修改已配置输入的 度,请双击此条目。将打开“连接 度”对话框。在此处输入所需的 度(以字节
为单位),然后单击“确定”进行确认。其 度将显示在配置输入后面的括号中。

配置的输入将立即在配置树中可 。在从属条目下方缩进,将有一个带有连接类型名称的条目。在此下方
将插入相应的输入和输出。

输出:
按照输入说明配置输出。

DeviceNet-Slave的参数
此处列出的参数由 EDS 文件给出。根据定义的 I/O 连接配置,它们的当前值将在网络中交换。

Obj.:参数(对象)的标识,用于访问参数列表(对象字典)中的参数。此对象编号是根据 EDS 文件中


相应参数描述给出的参数编号创建的([Params],“Param<number>”)。

Typ:参数的数据类型
Acc.:访问权限: rw=读写, ro=只读
最小值、最大值:参数的取值范围,受最小值和最大值的限制
Default:参数的默认值
值:由于在 EDS 文件中定义,因此可以在此处编辑参数值。允许值的选择列表可用,或者可以通过鼠标
单击表格单元格来打开编辑字段。

DeviceNet-Slave的模块参数
DeviceNet-Slave 的模块参数对话框与其他模块的对话框相同(请参 第 6.6.5 章 I/O 模块的模块参数
):此处显示配置文件中额外分配给主站的参数,默认情况下可以编辑这些值。

6.6.11 在线模式下的PLC配置
在在线模式下,PLC 配置显示 PLC 输入和输出的状态。如果布尔输入或输出的值为 TRUE,则配置树中
输入行开头的小框将变为蓝色,非布尔值将添加到输入行的末尾(例如“=12”)。

CoDeSysV2.3版本 6-49
PLC配置

布尔输入可以通过鼠标单击来切换。在其他输入中,鼠标单击行首会打开一个对话框,可以在其中修改
值。一旦对话框关闭,修改后的值将在 PLC 中设置。

还要考虑在线诊断的目标特定可能性。

6.6.12 来自PLC的硬件扫描/状态/诊断信息
如果目标系统和实际配置文件(*.cfg)支持,则可以从PLC获取当前连接硬件的结构、状态和诊断结果信
息,并显示在CoDeSys的PLC配置中:

扫描模块配置
如果目标系统和实际配置文件(*.cfg)支持,则命令扫描模块配置将在 PLC 配置树中当前选择的模块的
上下文菜单中可用。

此命令仅在脱机模式下可用。如果激活,将扫描 PLC 上特定模块的实际硬件配置,并自动提供以插入


CoDeSysPLC 配置的配置树中。因此,可以在 CoDeSys 中轻松映射现有模块配置。

加载模块状态
如果目标系统和实际配置文件(*.cfg)支持,则命令 Loadmodulestate将在 PLC 配置树中当前选择的
模块的上下文菜单中可用。

此命令仅在联机模式下可用。如果激活,模块的实际状态将从 PLC 读取,并在配置树中以特殊颜色显


示:
黑色:模块已存在且参数化正确。
蓝色:模块存在但参数设置不正确。
红色:未找到模块。
每次下载时也会自动更新状态显示。

显示诊断消息
如果目标系统和实际配置文件(*.cfg)支持,则命令 Showdiagnosismessages将在 PLC 配置树中当
前选择的模块的上下文菜单中可用。此命令仅在联机模式下可用。如果激活,来自 PLC 的模块的实际诊
断消息将显示在 CoDeSys 窗口中。

6-50 CoDeSysV2.3版本
6 - 资源

6.7 任务配置

6.7.1 概述
除了声明特殊PLC_PRG程序外,您还可以使用任务管理来控制项目的处理。

任务是处理 IEC 程序的时间单位。它由名称、优先级和类型定义,确定哪个条件将触发任务的启动。此


条件可以由时间(循环、随心所欲)或将触发任务的内部或外部事件定义;例如,全局项目变量的上升沿
或控制器的中断事件。

对于每个任务,您可以指定将由该任务启动的一系列程序。如果任务在当前周期内执行,则这些程序将在
一个周期的 度内进行处理。
优先级和条件的组合将决定任务将按时间顺序执行。

注意:请不要在多个任务中使用相同的字符串函数(参 standard.lib),因为这可能会通过覆盖导致程序错误。

可以显式启用或禁用每个任务。
对于每个任务,您可以配置一个看 狗(时间控制),可以配置;可能的设置取决于目标系统。

在联机模式下,可以在图表中监视任务处理。
此外,还可以将系统事件(例如启动、停止、重置)直接与项目 POU 的执行联系起来。

“任务配置 ”作为对象位于“对象管理器”的“资源”选项卡中。任务编辑器在二分窗口中打开。

在窗口的左侧,任务以配置树的形式表示。在最顶部的位置,您总能找到“任务配置”条目。下面是条目“
系统事件”和特定任务的条目,由任务名称表示。在每个任务条目下方插入分配的程序调用。每行前面都
有一个图标。

任务配置示例

在窗口的右侧 ,将显示一个对话框,该对话框属于配置树中当前标记的条目。在这里,您可以配置任
务(任务属性)、程序调用(程序调用)或定义系统事件(系统事件)的链接。这取决于目标,配置对话
框中有哪些选项可用。它们由目标文件中引用的描述文件定义。如果标准描述由客户特定定义扩展,则这
些描述将显示在窗口右侧的附加选项卡“参数”中。

CoDeSysV2.3版本 6-51
任务配置

6.7.2 在任务配置中工作
您在上下文菜单(鼠标右键)中找到的最重要的命令。
在“任务配置”的标题处有“任务配置”字样。如果单词前面有一个加号,则序列表关闭。通过双击列表或
按<Enter>,您可以打开该列表。现在会出现一个减号。再次双击,可以再次关闭列表。对于每个任务,
都会附加一个程序调用列表。同样,您可以以相同的方式打开和关闭此列表。

使用“插入”“插入任务”命令,您可以插入任务。
使用“插入”“附加任务”命令,您可以在配置树的末尾插入任务。
使用“插入”“插入程序调用”,程序调用将被分配给在配置树中实际选择的任务。

接下来,对于配置树中的每个条目,窗口右侧将出现一个相应的配置对话框。可以激活/停用选项,也可
以对编辑器字段进行输入。根据在配置树中选择的条目,将有用于定义“任务属性”的对话框(参 “插入
任务”)、用于定义“程序调用”的对话框(参 “插入程序调用”)或“系统事件”表。配置选项取决于目标
系统。一旦焦点再次设置到树上,在对话框中所做的设置将立即转移到配置树中。

任务名称或程序名称也可以在配置树中进行编辑。为此,请执行鼠标单击名称或选择条目,然后按<空
格>按钮打开编辑框架。
您可以使用箭头键选择配置树中的上一个或下一个条目。
通过单击任务或程序名称,或按<空格键>,可以在名称周围设置编辑控制框。然后,您可以直接在任务
编辑器中更改名称。

“插入”、“插入任务”或“插入”、“附加任务”
使用此命令,您可以将新任务插入到任务配置中。每个条目都由一个符号和任务名称组成。

如果选择了任务或条目“系统事件”,则可以使用“插入任务”命令。新任务将插入到所选任务之后。如果
选择“任务配置”条目,则“追加任务”可用,新任务将追加到现有列表的末尾。最大任务数由目标系统定
义。请注意,可能已经为 PLC 配置模块(在 cfg 文件中定义)保留了一定数量的任务。

插入任务时,将打开用于设置任务属性的对话框 。
插入所需的属性:
名称:任务的名称;使用此名称,任务在配置树中表示;在单击条目后或在选择条目时按<空格键>后,可以
在那里编辑名称。

优先级(0-31):(介于 0 和 31 之间的数字;0 表示最高优先级,31 表示最低优先级),

6-52 CoDeSysV2.3版本
6 - 资源

用于设置任务属性的对话框

类型:
cyclic ():任务将根据“间隔”字段中给出的时间定义进行循环处理( 下文)。

随心所欲():程序启动后将立即处理任务,并在一次运行结束时自动以连续循环方式重新启动。没有定
义周期时间。
由事件(触发):一旦“事件”字段中定义的变量获得上升沿,任务将立即启动。

由外部事件(触发):一旦发生“事件”字段中定义的系统事件,任务将立即启动 。这取决于目标,哪些
事件将在选择列表中得到支持和提供。(不要与系统事件混淆

性能:
间隔(对于类型“循环”或“由外部事件触发”,如果事件需要时间输入):应重新启动任务的时间段。如
果输入数字,则可以在编辑字段后面的选择框中选择所需的单位:毫秒 [ms] 或微秒 [μs]。[ms] 格式的
输入将在窗口重新绘制后立即以 TIME 格式显示(例如“t#200ms”);但您也可以直接以 TIME 格式输入
值。以 [ms] 为单位的输入将始终显示为纯数字(例如“300”)。

事件(对于类型“由事件触发”或“由外部事件触发”):一个全局变量,一旦检测到上升沿,它将触发任
务的启动。使用按钮...或输入助手 <F2> 获取所有可用全局变量的列表。目标系统可能定义了单例事件。
这些是事件,只允许启动一个任务。在项目编译期间,将检查此类事件是否启动多个任务。检查涉及事件
变量的数据地址,而不是名称。例如:如果目标系统将 %MX1.1 和 %IB4 定义为单例事件,则使用以下
变量作为事件变量将产生两个错误(a 和 b 以及 c 和 d 各具有相同的地址)

VAR_GLOBAL
a 在%MX1.1处:布尔值;
b 在%MX1.1时:布尔值;
c 在%MB4时:布尔值;
d 在 %MD1 处:布尔值
;END_VAR

CoDeSysV2.3版本 6-53
任务配置

如果“Interval”和“Event”字段都没有条目,则任务间隔将取决于使用的运行时系统(请参阅运行时文档
);例如,在这种情况下,对于 CoDeSysSPNTV2.2 及更高版本,将使用 10 毫秒的间隔)。

看 狗
对于每个任务,可以配置一个时间控制(看 狗)。如果目标系统支持扩展的看 狗配置,则可能有预定
义的上限和下限,并定义了看 狗时间的默认值,以及以百分比为单位的时间定义。

看 狗:当此选项被激活时()然后,根据当前设置的灵敏度( 下文),一旦处理时间超过“时间”字段
中定义的时间( 下文),任务将以错误状态终止。

注意: 当流量控制处于活动状态或当前执行在断点处停止时,目标系统 CoDeSysSP32BitFull 会关闭看 狗功能。

Time(例如:t#200ms):看 狗时间;此期限到期后,根据当前设置的灵敏度( 下文),除非任务尚


未终止,否则将激活看 狗。根据目标系统的不同,必须以任务间隔的百分比形式输入时间。在这种情况
下,单位选择框显示为灰色,并显示“%”。

灵敏度:您可以在此处输入整数,在该整数中应生成错误的看 狗时间超限。默认条目为“1”,即在看
狗第一次超限时发生错误。注意:如果输入“0”,看 狗将被停用!

制造商特定属性:
除了当前所选任务的这些标准属性外,制造商的特定属性可能会显示在第二个选项卡“参数”中。如果在
任务配置的目标特定描述文件中定义了它,则会出现这种情况。

“插入”“插入程序调用”或“插入”“附加程序调用”
使用这些命令,您将打开对话框,用于在“任务配置”中输入对任务的程序调用。任务配置树中的每个条目
都由符号()和程序名称组成。

使用“插入程序调用”时,新的程序调用将插入到所选程序调用之前,而使用“附加程序调用”时,程序调
用将附加到现有列表或程序调用的末尾。

程序调用条目对话框

在“程 序 调 用”字 段 中 , 从 项 目 中 指 定 一 个 有 效 的 程 序 名 称 , 或 使 用“选 择”按 钮 打 开“输 入 助 手”以选择有


效的程序名称。以后也可以在配置树中修改程序名称。为此,选择条目并按<空格键>或只需单击鼠标即
可打开编辑器字段。如果所选程序需要输入变量,则以通常的形式和声明的类型输入这些变量(例如,
prg(invar:=17))。

稍后在联机模式下对程序调用的处理将根据它们在任务编辑器中的顺序(自上而下)完成。

请注意:不要在多个任务中使用相同的字符串函数(请参阅标准库元素),因为在这种情况下,值可能会在处理任务
期间超出行程。

6-54 CoDeSysV2.3版本
6 - 资源

6.7.3 系统事件
除了“任务”之外,还可以使用“系统事件”来调用项目的 POU。可用的系统事件是特定于目标的(目标文
件中的定义)。目标的标准事件列表可以由客户特定事件扩展。例如,可能的事件包括:停止、启动、在
线更改。

将系统事件分配给 POU 也是在任务配置编辑器中完成的。使用“事件”对话框,一旦在任务配置树中选


择“系统事件”条目,该对话框就会打开:

用于将 POU 分配给系统事件的表

每个事件都用一行表示:名称和描述按照目标文件中的定义显示,在名为POU的列中,您可以输入项目
POU 的名称,该名称应在事件发生后立即调用和处理。

为此,请使用输入助手(<F2>)或手动输入现有 POU 的名称(例如“PLC_PRG”或“PRG.ACT1“),或


为尚不存在的 POU 插入名称。 RISC 和 Motorola68K 目标系统的注意事项:分配给系统事件的函数名
称(回调函数)必须以“callback”!开头。要在项目中创建新的POU(函数),请按“创建POU”<名称>
按钮。此后,POU 将入到对象管理器中。事件所需的输入和输出参数将在 POU 的声明部分自动定义。
在分配表下方,当前选定的事件以图片形式显示,显示所需的参数。

如果确实希望事件调用 POU,请激活分配表()中的条目。激活/停用是通过鼠标单击控制框来完成的。

6.7.4 在线模式下的任务配置
在在线模式下,每个任务的状态和传递周期数将显示在配置树中。时间流在图表中进行监控。前提条件:
库SysTaskInfo.lib
并且SysLibTime.lib必须包含在项目中,以提供用于内部评估任务时间的函数。一旦设置了支持任务监
视的目标,这些库就会自动包含在内。

CoDeSysV2.3版本 6-55
任务配置

在配置树中显示任务状态:
在联机模式下,任务的当前状态将显示在配置树中任务输入行末尾的括号中,以及已通过的进程周期数。
此更新间隔与通常用于监控 PLC 值的间隔相同。可能的状态:

怠 自上次更新以来尚未启动;特别用于事件任务
运行 自上次更新以来至少启动过一次
停 停止
在 BP 上停止 已停止,因为已到达任务中的断点
出错时停止 错误,例如除以零、 面错误等。
停止看 狗 已超过周期时间

如果状态为“出错时停止”或“停止看 狗”,任务条目将显示为红色。

任务时间流的显示:
如果在配置树中选择了“Taskconfiguration”条目,则任务的利用率将显示在窗口右侧的条形图中:

在联机模式下显示任务执行

对于每个任务,都会显示一个条形图。条形图的 度表示周期的 度。在条形图下方以及条形图上的适当


标记处,显示了以下测量值:

最小值: 最小测量运行时间(μs)
阿克特: 上次测量的运行时间(以μs 为单位)
麦克斯: 最大测量运行时间(μs)
周期: 周期总 度(μs)
抖动: 最大测量抖动(任务开始和操作之间的时间
系统指示它正在运行),单位为μs

复位按钮可用于将最小值、最大值和抖动值设置回 0。

6-56 CoDeSysV2.3版本
6 - 资源

图表的缩放比例(每像素微秒)可以借助于
缩放 [μs/像素]。

正在处理哪个任务?
对于执行,以下规则适用:
该任务已执行,其条件已得到满足;即,如果其指定的时间已过期,或者在其条件(事件)变量表现出上
升沿之后。
如果多个任务具有有效要求,则将执行具有最高优先级的任务。
如果多个任务具有有效条件和等效优先级,则将首先执行等待时间最 的任务。

程序调用的处理将根据它们在任务编辑器中的顺序(自上而下)完成。
根据目标系统的不同,在任何情况下,PLC_PRG都可能作为随心所欲的任务进行处理,而无需插入到任
务配置树中。
上下文菜单中的其他在线功能,以及“附加”菜单中的其他功能:

'Extras''设置调试任务'
使用此命令,可以在任务配置中以联机模式设置调试任务。文本 [DEBUG] 将出现在设置的任务之后。

因此,调试功能仅适用于此任务。换言之,只有当程序被设置的任务完成时,程序才会在断点处停止。

'Extras''启用/禁用任务'
使用此命令,可以禁用或重新启用当前在任务配置中标记的任务。在程序处理过程中,禁用的任务将不被
视为已禁用的任务。在配置树中,它由灰色条目指示。

'Extras''调用堆栈'
此命令位于“任务配置”的“附加”菜单中。如果程序在调试过程中在断点处停止,则可以使用它来显示相
应 POU 的调用堆栈。为此,必须在的任务配置树中选择调试任务。将打开“任务<任务名称>的调用堆栈”
窗口。在那里,您可以获得 POU 的名称和断点位置(例如,POUprog_x 第 2 行的“prog_x (2)”)。
下面的完整调用堆栈按倒序显示。如果您按下“转到”按钮,焦点将跳转到 POU 中当前在调用堆栈中标记
的该位置。

6.8 手表和食谱管理器

6.8.1 概述
功能

在监视和配方管理器(对象管理器的“资源”选项卡)中,可以在所谓的“监视列表(监视)”中查看指定
变量的当前值。
此外,监视列表中列出的变量可以预设为常量值,并将这组名为“配方”的值传输到 PLC。此外,观察列
表变量的当前值可以作为预设/配方从 PLC 读取到观察和配方管理器。在这种情况下,考虑将配方保存在
文件中并在需要时将其重新加载到配方管理器的可能性。有关配方用法的更多信息,请参阅:创建观察列
表、配方

在联机模式下,监视列表也可用于写入和强制变量。
例如,所有这些功能都可用于记录和设置控制参数。

CoDeSysV2.3版本 6-57
手表和食谱经理

编辑器
根据目标系统的不同,观察和配方管理器在以下变体之一中可用:每个观察列表的表格编辑器窗口,或所
有观察列表的 1-Window-Editor。
表格编辑器:
每个监视列表都在单独的表格编辑器窗口中查看,并且可以同时打开多个窗口。在这种情况下,可
用的观察列表将显示为“资源”选项卡中的条目,缩进在观察和配方管理器下方。每个都可以通过双
击条目来打开。

表格编辑器包含监视变量的名称、地址、值、准备值、配方值和注释列。

表格视图中的监视列表

name:这里必须按照以下语法以标准格式输入地址的变量标识符:

<POU名称>.<变量名称>
如果是全局变量,则删除 POU 名称。变量名称可以是多级的。

可以直接输入地址(例如“%IB0.0”)。
多级变量示例:
PLC_PRG。实例1.Instance2.Structure.Component
全局变量示例:
globalvar.component1
address,注释:在变量的声明中指定。
value:在在线模式下,此处显示变量的当前值(监控)。
配方值: 可以在此处输入一个值,当对整个监视列表应用命令 “ 写入配方 ” 时,该值将被传输到
PLC。可以使用命令“读取配方”将列表中所有变量的配方值替换为 PLC 的当前值。

对于功能块实例和结构化变量,第一列中名称前面会出现一个加号。它用于扩展或折叠组件列表。对于功
能块变量,上下文菜单由“打开功能块”和“打开实例”项扩展。

通过双击编辑器窗口中不可编辑的位置,表格将适应窗口宽度并优化列宽。

1-窗口编辑器:
只有一个二分编辑器窗口,您可以在其左侧找到所有可用的监视列表。对于当前选定的列表,窗口
的右侧部分显示关联的变量。此编辑器视图通过对象管理器的“资源”选项卡中的对象“监视”和“配

6-58 CoDeSysV2.3版本
6 - 资源

方管理器”打开。观察变量是逐行输入的,可以通过“:=”为每个变量分配一个配方值。关于这一
点,另请参阅:创建观察列表、食谱

1 个窗口中的观察和配方管理器

在离线模式下,可以通过键入将变量添加到监视列表,也可以在在线模式下直接从 POU 编辑器中添加变


量。请参阅创建观察列表、配方
当选择其中一个监视变量时,可以直接从监视列表中调用交叉引用列表。在这种情况下,可以使用命令“
在附加菜单”(Extras)菜单或上下文菜单中显示交叉引用。在交叉引用列表中,请参阅:“项目”“显示交
叉引用”。

6.8.2 创建监视列表、配方
默认情况下,在每个项目中,会自动创建一个空的监视列表“标准”。请参阅下文,了解如何创建更多列表
并填充监视变量,以及如何定义配方。这在一定程度上取决于使用了监视和配方管理器的哪个(目标相
关)变体:
创建监视列表
创建一个新的空列表-在离线或在线模式下:
如果在“资源”选项卡中选择了“监视和配方管理器”条目,则在表格编辑器中通过命令“对象”“添加”(菜
单“项目”-“对象”或上下文菜单)可以创建一个新的、主要是空的监视列表。为此,在1-Window-Editor
中,可以使用“新建监视列表”命令(菜单“插入”或上下文菜单)。每个对话框都会打开一个对话框,用
于输入唯一的监视列表名称。确认后,新列表将立即添加到资源树(表格编辑器)中,或者位于
1-Window-Editor 的左侧。

用 POU 编辑器中的监视变量填充新列表,然后将变量添加到现有列表:
只能在在线模式下使用。无需为此目的停用监控。
表格编辑器和 1-Window-Editor:
• 如果在其中一个POU 编辑器中选择了一个或多个变量或元素,则可以通过命令“进入新监视列
表 ” (菜单 “ 附加 ” 或上下文菜单)直接将它们输入到新的监视列表中。新列表将自动添加为
“Watch<n>” ,并作为 “Watchn” 添加到 “Watch-andRecipeManager” 下方的 “ 资源 ” 选项卡
中,并在编辑器窗口中打开。只能在脱机模式下重命名列表。

• 如果在其中一个POU 编辑器中选择了一个或多个变量或元素,则可以通过命令“添加到监视列
表”(菜单“附加”或上下文菜单)将变量直接添加到现有监视列表之一。

• 可以在监视列表中输入标准格式的地址,而不是变量标识符。命令“插入地址范围”(菜单“附
加”或上下文菜单)允许一次性添加指定地址范围的所有地址。

CoDeSysV2.3版本 6-59
手表和食谱经理

手动填写列表:
可以在在线和离线模式下使用;有关语法,请参阅:概述、编辑器
表格编辑器:
• 如果打开监视列表,则通过命令“插入监视变量”或“插入”附加监视变量“可以添加其他变
量。可以通过“删除监视变量”或 <Del> 来选择和删除现有条目。

1-窗口编辑器:
• 要在监视列表中输入变量,必须在监视和配方管理器窗口的左侧选择该列表。然后,在输
入助手 <F2>(请参阅下面的注释)的帮助下,或通过键入,逐行将变量添加到当前光标
位置的右侧。有关请求的语法,请参阅“概述”和“编辑器”。如果应在联机模式下输入变
量,则以前必须停用监视。通过“附加功能”或上下文菜单中的“监控 aktiv”命令,您可以在
激活和停用之间切换。

在监视和配方管理器中使用输入助手的注意事项:
输入助手的非结构化视图提供了用于选择监视变量的附加过滤功能:在“筛选器”输入字段中,您可以输入
一个字符串,并另外指定是否必须在变量名称的开头(前缀)、变量名称的末尾(后缀)或变量名称中的
任意位置找到此字符串,以获取可供选择的监视变量。

使用配方
监视列表的变量可以预设为常量值。在表格编辑器中,这可以通过列配方值来实现,在1-Window-Editor
中,可以通过“:=”进行赋值。然后观察列表可以用作所谓的“食谱”。

如果预设应使用从 PLC 读取的当前值自动完成,则可以使用“读取配方”命令。

在 Watch-andRecipeManager 的 1-Window-Editor 变体中,必须根据以下示例分配配方值:

例:
PLC_PRG。定时器:=50
这里的变量PLC_PRG。TIMER 预设为 50。
对于数组、结构或功能块 实例类型的变量,请注意以下几点:必须显式输入特定元素或实例变量,
以便能够使用值预设它们。示例:假设结构 STRU 由组件 a、b、c 定义,并在程序 PLC_PRG 中
声明结构变量 struvar。为了预设 a、b、c 的值,必须在监视列表中输入以下内容:

PLC_PRG.struvar.a:=<value>
PLC_PRG.struvar.b:=<value>
PLC_PRG.struvar.c:=<value>

相应地,必须对数组的元素进行预设:ARRAY[0...6] 类型的数组变量arr_var示例

PLC_PRG.arr_var[0] : =< 值 >


PLC_PRG.arr_var[1] : =< 值 >
...
如果功能块 fb 包含变量 x,y,并且在 PLC_PRG 中声明了 fb 类型的实例变量 fb_inst,则 x 和 y
可以按如下方式预设:
PLC_PRG.fb_inst.x:=<value>
PLC_PRG.fb_inst.y :

6-60 CoDeSysV2.3版本
6 - 资源

=<value>配 方 可 以 通 过 命 令“Extras”、“Save Watch List”在 外 部 保 存 在 文 件 中 , 也 可 以 通 过“Extras”、“Load


WatchList”加载回编辑器。在在线模式下,配方值可以通过“Extras”、“WriteRecipe”写入 PLC 上的变量。

'插入''新观察列表'
短键:<Alt>+<X>+<N>
此命令将当前在 POU 编辑器中选择的变量插入到新的监视列表中。此列表将自动创建名称为
“Watch<n>”,其中 n 是以 0 开头的运行数字,并以名称唯一的方式使用。

此外,对于此命令也是如此,例如“附加功能”、“添加到监视列表”。

'Insert''插入监视变量'
此命令仅在监视列表的表格编辑器视图中可用。它在列表的最顶部位置插入一个新行,并在“name”列中
打开一个编辑字段,以便通过输入助手(请参阅创建监视列表、食谱中的注释)或键入来输入新的监视变
量。

'Insert''附加监视变量'
此命令仅在监视列表的表格编辑器视图中可用。它会在列表末尾附加一个新行,并在“name”列中打开一
个编辑字段,以便通过输入助手(请参阅创建监视列表、食谱中的注释)或键入来输入新的监视变量。

“删除监视变量”
此命令仅在监视列表的表格编辑器视图中可用。它删除当前聚焦的线,并对应于使用 <Del> 键。

'额外服务''添加到查看列表'
快捷键:<Alt>+<X>+<W>
在项目的 POU 编辑器中,您可以直接将变量添加到监视列表中。
当在编辑器中选择一个或多个变量或元素时,可以通过命令“添加到监视列表”(“附加”菜单或上下文菜
单)将它们直接添加到现有监视列表之一。无需为此停用监控。

对于功能块,仅当 POU 中变量的完整实例路径已知时,该命令才可用。

关于在 POU 编辑器中选择元素的注意事项:


基本上,可以像往常一样为相应的编辑器选择特定的变量。
此外,以下情况也为真:
• 在 FBD 编辑器中,所选元素左侧的所有元素也将自动被选中。例如,当您选择 AND 框
时,还将选择 AND 框的输入 a 和 b。

• 在梯形图编辑器中,可以通过按住 <Shift> 键同时单击所需元素来选择多个元素。

• 在窗口右侧的 ST 和 IL 编辑器中,可以选择单个变量。在左侧部分,可以选择多行,以便
将所有包含的变量添加到监视列表中。

• 在 SFC 编辑器中,您可以选择多个连续的元素,以便将所有包含的变量添加到监视列表
中。
• 在 GVL 和 POU 的声明部分中,只能选择特定变量。

CoDeSysV2.3版本 6-61
手表和食谱经理

“额外内容”“进入新的观察列表”
快捷键:<Alt>+<X>+<N>
此命令将当前在 POU 编辑器中选择的变量插入到新的监视列表中。此列表将自动创建名称为
“Watch<n>”,其中 n 是以 0 开头的运行数字,并以名称唯一的方式使用。

此外,对于此命令也是如此,例如“附加功能”、“添加到监视列表”。

“插入地址范围”
可以在监视列表的“名称”列中输入标准格式的地址,而不是变量名称。

该命令允许一次性将定义地址范围的所有地址插入监视列表。为此,将打开一个对话框,您可以在其中指
定起始地址和地址数。例如,如果定义 name=“%MW0” 和 number=“10”,则地址 %MW0 到 %MW9
将插入到监视列表中。

“附加功能”“重命名监视列表”
仅当打开监视和配方管理器的 1-Window-Editor 视图时,此命令才可用(取决于目标!它将打开一个对话
框,用于指定新的监视列表名称。

注意:如果使用表格视图,则可以通过命令“Project”“Object”“Rename”在对象管理器中重命名监视列表。

'额外内容''保存观察列表'
使用此命令,您可以保存监视列表。将打开用于保存文件的对话框。文件名预设为监视列表的名称,并指
定扩展名为“*.wtc”。
保存的监视列表可以使用“附加”“加载监视列表”再次加载。
例如,这允许管理同一组变量的各种“配方”,这些变量可以根据需要加载到 PLC。

'Extras''加载观察列表'
使用此命令,您可以重新加载已保存的监视列表,例如,将某个配方重新加载到编辑器中,以便将其写入
PLC。将打开用于打开文件的对话框。选择扩展名为“*.wtc”的所需文件。在显示的对话框中,您可以为
监视列表指定一个新名称。文件名是预设的,没有扩展名。

使用“附加功能”“保存观察列表”,您可以保存监视列表。

“额外”“监视活动”
快捷键:<Alt>+<X>+<M>
此命令关闭监视和配方管理器中值的显示。如果激活了监控,菜单前面会出现一个复选(ü)

item.'Extras ''编写食谱'
在监视和配方管理器的在线模式下使用此命令,您可以将预设值(配方值)写入变量中。

注意:该命令仅涉及该监视列表的值,该列表当前在监视和配方管理器中选择!

6-62 CoDeSysV2.3版本
6 - 资源

6.8.3 在线模式下的观察和食谱管理器
在线模式下的监视列表“标准”,表格编辑器视图

在线模式下的观察和配方管理器,1-窗口编辑器视图

变量值的显示格式(二进制、十六进制、十进制)主要取决于在项目选项、类别编辑器中完成的预设,但
可以通过上下文菜单中的“十六进制”、“二进制”和“十进制”命令为每个特定变量进行更改 。

结构化值(数组、结构或功能块实例)在标识符前面用加号或减号标记。通过用鼠标单击加号或按
<Enter>,变量特定分量的显示将展开或折叠。

如果在监视列表中标记了功能块变量,则关联的上下文菜单将另外包含命令“缩放”和“打开实例”。

1-Window-Editor 视 图 中 的 monitorin 视 图 可 以 通 过 命 令 'Extra' 'Monitoring Active' revert.


<Alt>+<X>+<M> 停用和重新激活。
监视变量可以预设为常量值,然后在在线模式下,监视列表作为所谓的配方写入PLC上的变量(命令“写
入 配 方”) 。 也 可 以 使 用PLC的 当 前 值 进 行 预 设 。 为 此 , 在 在 线 模 式 下 , 使 用 命 令“Extras”、“Read
Recipe”。在这种情况下,任何可能已经存在的配方值都将被覆盖。

还可以通过各种机制在在线模式下添加新的监视变量。关于此,请参阅:创建观察列表,食谱。

'额外内容''阅读食谱'
使用该命令,在 观察和配方管理器的在线模式下,您可以将变量的预设(请参阅离线模式)替换为变量
的当前值。

CoDeSysV2.3版本 6-63
采样跟踪

例:
PLC_PRG。计数器 [:=<现值>]=<现值>

注意: 该命令仅涉及该监视列表的值,该列表当前在监视-
和食谱管理器!

Watch-andRecipeManager 中的 Force 和 Write 值


在联机模式下,在每个监视列表中,您可以强制值和写入值。
在表格编辑器中,您可以在列准备值中输入一个值,从而准备该值以在 PLC 上强制或写入。为此,选择
相应的单元格(鼠标单击或通过箭头键在表格中导航),然后通过鼠标单击或 <Enter> 键打开一个对话
框以输入值。如果它们具有相同的数据类型,也可以一次选择多个变量的单元格,以便为所有这些变量准
备相同的值。对于单元格的多选,只需在选择特定单元格时按住 <Shift> 按钮即可。

在1-Window-Editor中,通过鼠标单击指定的变量值,您还可以打开相应的对话框以输入应强制或写入的
值。

6.9 采样跟踪
6.9.1 概述和配置
如果在目标设置(类别“常规”)中激活了示例跟踪,则该跟踪将作为 CoDeSys 资源中的对象提供。它
可用于跟踪变量值在一定时间内的进程。这些值写入环形缓冲区(跟踪缓冲区)中。如果内存已满,则内
存开头的“最旧”值将被覆盖。最多可以同时跟踪 20 个变量。每个变量最多可以跟踪 500 个值。

由于 PLC 中跟踪缓冲区的大小具有固定值,因此在变量非常多或非常宽(DWORD)的情况下,可以跟
踪的值少于 500 个。
示例:如果跟踪 10 个 WORD 变量,并且 PLC 中的存储器 度为 5000 字节,则对于每个变量,可以跟
踪 250 个值。

为了能够执行跟踪,请在 参考资料中打开采样跟踪的对象
在对象管理器中注册卡。创建并加载适当的跟踪配置并定义要跟踪的变量。(参 '附加功能'、'跟踪配置'
和'选择要显示的变量的选择')。

创建配置并在 PLC 中启动跟踪(“开始跟踪”)后,将跟踪变量的值。使用“读取跟踪”,最终跟踪值将被


读出并以图形方式显示为曲线。

请注意:如果使用任务配置来控制程序,则跟踪功能是指调试任务。

跟踪(变量值和配置)可以以项目格式(*.trc)或 XML 格式(*.mon)保存和重新加载。只需通过 *.tcf


文件存储和重新加载配置。
项目中可以使用各种跟踪进行显示。它们列在跟踪窗口右上角的选择列表(“跟踪”)中。您可以选择其中
一个作为当前使用的跟踪配置。

'Extras''跟踪配置'
使用此命令,您将看到一个对话框,用于输入要跟踪的变量,以及采样跟踪的各种跟踪参数。也可以通过
双击“采样跟踪”对话框的灰色区域来打开该对话框。

6-64 CoDeSysV2.3版本
6 - 资源

跟踪配置对话框

首先定义跟踪配置的名称(跟踪名称)。一旦您确认并关闭配置对话框,此名称将添加到“跟踪”窗口右上
角的选择列表“跟踪”中,然后单击“确定”。

要跟踪的变量列表最初是空的。为了追加变量,必须在列表下的字段中输入变量。在此之后,您可以使
用“插入”按钮或 <Enter> 将变量追加到列表中。您还可以使用输入助手(帮助管理器)。可以使用枚举
变量。

A 您选择变量,然后按“删除”按钮时,将从列表中删除该变量。
布尔变量或模拟变量(也是枚举变量)可以输入到触发变量字段中。
可以在此处使用输入帮助。触发变量
描述跟踪的终止条件。

在“触发电平”中,输入触发事件发生的模拟触发变量的电平。您也可以在此处使用 ENUM 常量。当选


择“触发边沿正”时,触发事件发生在布尔触发变量的上升沿之后,或者当模拟变量从下到上通过触发电
平时。负原因在下降沿后或当模拟变量从上方变为下方时触发。两者都会触发下降沿和上升沿,或者通过
正传递或负传递,而none根本不会启动触发事件。

CoDeSysV2.3版本 6-65
采样跟踪

触发位置用于设置在触发事件发生之前将记录的测量值的百分比。例如,如果在此处输入 25,则在触发
事件之前显示 25% 的测量值,在触发事件之后显示 75%,然后终止跟踪。

“ 采样率 ” 字段用于设置两次记录之间的时间段(以毫秒为单位),如果目标系统支持,则以微秒为单
位。默认值“0”表示每个周期一个扫描程序。

选择调用记录值的模式(记录):使用单次时,定义样本的数量显示一次。使用连续时,每次都会重新开
始读取定义数量的测量值的记录。例如,如果您输入数字“35”,则第一个显示屏包含第一个测量值 1 到
35,然后将自动读取接下来的 35 个测量值(36-70)的记录,依此类推。手动选择用于读取跟踪记录,
特别是“附加”“读取跟踪”。

调用模式的功能与触发变量是否设置无关。如果未设置触发变量,则跟踪缓冲区将填充定义数量的测量
值,并在调用时读取和显示缓冲区内容。

“保存”按钮用于存储已在文件中创建的跟踪配置。为此,将打开标准窗口“文件另存为”。

可以使用“加载”按钮检索存储的跟踪配置。为此,将打开标准窗口“文件打开”。

注意:请注意,配置对话框中的“保存并加载”仅与配置相关,与跟踪记录的值无关(与菜单命令“附加”、“保存跟踪
值”、“保存值”和“.”相反”。加载值')。

如果字段 TriggerVariable 为空,则跟踪记录将无休止地运行,并且可以通过 'Extras''StopTrace' 停止。

选择要显示的变量
组合框位于右侧,位于用于显示曲线的窗口旁边,跟踪配置中定义的跟踪变量。如果从列表中选择变量,
则在读取跟踪缓冲区后,该变量将以相应的颜色显示(Var0、绿色等)。如果已经显示曲线,也可以选
择变量。

在跟踪窗口中最多可以同时观察到八个变量。

6.9.2 生成跟踪采样

'额外''开始跟踪'

象征:
使用此命令,迹线配置将传输到 PLC,并在 PLC 中启动迹线采样。

'额外''读取跟踪'

象征:
使用此命令,从 PLC 读取当前跟踪缓冲区,并显示所选变量的值。

使用此菜单的命令将跟踪(配置 + 跟踪值)保存或重新加载到文件中,或者从文件加载跟踪,将跟踪从
控制器加载到项目,或将特定跟踪设置为应在项目中使用的跟踪。

注意:使用菜单“附加”“保存跟踪值”(项目格式,*.trc-Datei,ASCII)的命令来考虑存储和重新加载跟踪的替代方
法!

6-66 CoDeSysV2.3版本
6 - 资源

'额外''自动读取'
使用此命令,从PLC自动读取当前的跟踪缓冲区,并连续显示值。如果自动读取跟踪缓冲区,则在菜单项
之前有一个复选(ü)。

'额外''停止跟踪'

象征:
此命令停止 PLC 中的采样跟踪。

6.9.3 查看采样轨迹
不同变量的采样轨迹

如 果 加 载 了 跟 踪 缓 冲 区 ('Extras' 'Start Trace') , 则 可 以 读 出 要 显 示 的 所 有 变 量 的 值 ('Extras' 'Read


Trace' 或 'Extras''AutoRead'),并相应地显示。如果未设置扫描频率,则 X 轴将刻有跟踪值的连续编
号。跟踪采样停止后,跟踪缓冲区将被删除(“Extras”、“StopTrace”)。

跟踪窗口的状态指示器(第一行)指示跟踪缓冲区是否已满以及跟踪何时完成。

如果指定了扫描频率的值,则 x 轴将指定跟踪值的时间。时间分配给 “ 最旧 ” 的跟踪值。例如,在示例


中,指示了过去 25 秒的值。

Y 轴上刻有相应数据类型的值。缩放的布局方式允许最低值和最高值适合查看区域。在此示例中,Var0
的最小值为 6,最高值为 100:因此在左边缘设置了刻度。

如果满足触发要求,则在触发要求出现之前和之后的值之间的界面处显示一条垂直虚线。

'附加''光标模式'
在监控区域中设置光标的最简单方法是用鼠标左键单击该光标。光标随即出现,可通过鼠标移动。在监视
窗口的顶部,将显示光标的当前 x 位置。在“Var0”、“Var1”、“...”、“Varn”旁边的字段中,显示了相
应变量的值。

另一种方法是命令“附加”“光标模式”。使用此命令,采样跟踪中将出现两条垂直线。首先,他们一个接
一个地躺着。其中一条线可以通过箭头键向右或向左移动。通过按 <Ctrl>+<左>或<Ctrl>+<右>,移动速

CoDeSysV2.3版本 6-67
采样跟踪

度可以提高 10 倍。

如果另外按下 <Shift> 键,则可以移动第二行,显示与第一行的差异。

'Extras''多频道'
使用此命令,您可以在采样迹线的单通道和多通道显示之间切换。在多通道显示的情况下,菜单项前面有
一个检查( )。
多通道显示已预设。在这里,显示窗口被划分为多达八条显示曲线。对于每条曲线,最大值和最小值都显
示在边缘。
在单通道显示中,所有曲线都以相同的比例因子显示并叠加。这在显示曲线异常时很有用。

'附加功能''显示网格'
使用此命令,您可以在图形窗口中打开和关闭网格。当网格打开时,菜单项旁边会出现一个复选( )。

“附加功能”和缩放
使用此命令,您可以在迹线显示中更改曲线的预设 Y 缩放比例。通过双击曲线,您还将看到“Y 缩放”对
话框。
只要激活了“自动”选项,就会使用默认缩放,这取决于所用变量的类型。如果是枚举变量,枚举值将按
比例显示。要更改缩放比例,请停用选项 “ 自动 ” 并在 y 轴上输入相应曲线(通道)的数量和新的最大
值(最大 y 刻度)和新的最小值(最小 y 刻度)。

通道和前一个值是预设的。
用于设置 Y 刻度的对话框

'额外''伸展'

象征:
使用此命令,您可以拉伸(缩放)显示的采样跟踪的值。起始位置由水平图像调整条设置。随着一个接一
个的重复拉伸,窗口中显示的跟踪部分的大小将越来越小。

此命令与“Extras”、“Compress”相对应。

'额外''压缩'

象征:
使用此命令,为采样迹线显示的值将被压缩;也就是说,在此命令之后,您可以查看跟踪变量在更大时间
范围内的进展。可以多次执行该命令。

此命令与“Extras”、“Stretch”相对应。

6-68 CoDeSysV2.3版本
6 - 资源

6.9.4'Extras''保存跟踪值'
使用此菜单的命令将跟踪(配置 + 值)保存到文件,或者将它们从文件重新加载到项目中。除此之外,
跟踪可以保存在 ASCII 格式的文件中。

注意: 使用菜单“附加”“外部跟踪配置”(XML格式,*.mon文件)的命令来考虑存储和重新加载跟踪的替代方法!

“保存值”
使用此命令,您可以保存采样跟踪(值 + 配置数据)。将打开用于保存文件的对话框。文件名的扩展名
为“*.trc”。
请注意,此处保存跟踪的值以及跟踪配置,而配置对话框中的“保存跟踪”仅涉及配置数据。

保存的采样跟踪可以使用“附加”“加载跟踪”再次加载。

“负载值”
使用此命令,可以重新加载保存的采样跟踪(跟踪值 + 配置数据)。将打开用于打开文件的对话框。选
择扩展名为“*.trc”的所需文件。
使用“附加”、“保存值”,您可以保存采样轨迹。

“ASCII 文件中的跟踪”
使用此命令,您可以将采样跟踪保存在 ASCII 文件中。将打开用于保存文件的对话框。文件名的扩展名
为“*.txt”。这些值根据以下方案存放在文件中:

CODESYS 跟踪 D:
\CODESYS\PROJECTS\TRAFFICSIGNAL.PRO 周
期PLC_PRG。计数器PLC_PRG。轻1
021
121
221
.....
如果在迹线配置中未设置频率扫描,则周期位于第一列中;这意味着在任何给定时间,每个周期都记录了
一个值。在其他方面,此处的条目表示自运行采样跟踪以来保存变量值的时间点(以毫秒为单位)。

在后续列中,将保存跟踪变量的相应值。在任何给定时间,这些值都由空格分隔。

根据
序列(PLC_PRG.计数器,PLC_PRG。光1)。

6.9.5'Extras''外部跟踪配置'

“保存到文件”
使用此命令,可以将跟踪(配置 + 值)保存在 XML 格式的文件中。为此,将打开用于保存文件的标准对
话框。将自动使用文件扩展名 *.mon。

A 以使用命令“从文件加载”将 *.mon 文件重新加载到项目中。

CoDeSysV2.3版本 6-69
工作

“从文件加载”
使用此命令,可以将跟踪(配置 + 值)加载到项目中,该跟踪以 XML 格式(*.mon)的文件提供。打开
文件的对话框将打开,您可以浏览扩展名为 *.mon 的文件。加载的跟踪将显示并添加到配置对话框中“跟
踪”字段的选择列表中。如果要将其设置为当前使用的项目跟踪配置,请使用命令

“设置为项目配置”。
A 以使用命令“保存到文件”创建 *.mon 文件。

注意:使用菜单“附加”“保存跟踪值”的命令来考虑保存跟踪的替代方法。

“保存到目标”
在联机模式下使用此命令,可以将跟踪配置(以 XML 格式(*.mon)的文件形式提供)加载到控制器(
目标)中。
打开文件的标准对话框将可用,默认情况下将显示扩展名为 *.mon 的文件。考虑到将跟踪配置保存在
*.mon 文件(XML 格式)“保存到文件”中的可能性。

Смотритетакже: '从目标加载'

“从目标加载”
使用此命令,可以将当前在控制器(目标)上使用的跟踪(配置 + 值)加载到 CoDeSys 项目中。它将显
示在跟踪窗口中,并且可以设置为活动项目跟踪配置。

“设置为项目配置”
使用此命令,可以将当前在可用跟踪列表中选择的跟踪配置(跟踪窗口中的“跟踪”字段)设置为项目中的
活动配置。除了当前使用(顶部位置)之外,选择列表提供了通过命令“从文件加载”从 *.mon 文件加载
到项目的所有跟踪(例如,用于查看)。

6.10 工作区
“资源”选项卡中的此对象提供了当前设置的项目选项的图像(请参 第 4.2 章“项目选项”)。如果你打开
它,你会得到一个“选项”对话框,其中包含已知的类别。

6.11 参数管理器
参数管理器是 CoDeSys 编程系统的特定目标组件,必须在目标设置中激活。( 第 6.11.1 章)。

参数管理器可用于使网络中的所有 CoDeSys 兼容系统都可以访问 CoDeSysIEC 程序的变量、常量参数


或特定系统参数,以便进行数据交换,通常通过现场总线进行数据交换。为此,在编辑器中,您可以创建
参数列表,并从运行时系统向下加载。

请注意:参数列表也可以创建,或者通过编译指示填充条目,这些条目包含在变量声明中(参 第 5.2.3 章)。

什么是参数?
在此上下文中,参数为:
CoDeSysIEC项目的流程变量
与工艺无关的参数
特定系统参数,由目标系统功能块实例或结构变量、数组预定

6-70 CoDeSysV2.3版本
6 - 资源


每个参数都由一组特定的属性标识,例如“默认值”、“访问权限”,尤其是由唯一的访问键(“索引”、“子
索引”、“名称”)标识,该键可用于从/向参数列表读取或写入数据。这种数据交换可以通过通信服务完
成,不需要知道变量的任何地址或提供任何额外的功能。因此,使用参数管理器功能是使用网络变量的替
代方法。

什么是参数列表?
参数列表用于组织参数,可以与项目一起保存并加载到本地目标系统,该系统由相应的IEC程序控制。对
于每种类型的参数,都有相应类型的参数列表。

每个参数条目都由参数列表中的一行表示。列表的每一列都表示一个参数属性。除了一组特定的标准属性
外,制造商特定的属性也可用于参数管理器中的参数描述。

这取决于目标特定描述文件中
的定义,哪些属性(列)在参数管理器中可 和可编辑,以及它们在参数列
表中的排列方式。如果缺少描述文件,则将显示完整的标准属性集,每个属性都显示默认值。

CoDeSys 中的参数管理器编辑器

除了项目变量和项目常量的列表外,参数管理器还可以处理系统参数的列表。这些是目标系统给出的参
数。此外,您可以为功能块实例或结构变量创建列表,这些列表基于同样 在参数管理器中创建的用户定
义模板。

由于数据独立于IEC程序存储,因此可以使用参数列表来保存“配方”,即使程序被另一个版本替换,这些
配方也会保留。此外,在运行中的PLC可以“喂食”不同的配方,而无需重新下载程序。

注意:根据目标系统,在创建启动项目时是否会考虑参数管理器。

6.11.1 概述,激活
必须在“目标设置”的“类别网络”功能中激活参数管理器
( 第 6.12 章)。
此外,在目标设置对话框中,必须定义参数和变量类型的参数列表中条目的索引和子索引范围,如果目标
支持,则必须定义映射(对于CAN设备PDO)。

这取决于目标系统,这些选项对用户来说是否可 或可编辑。

CoDeSysV2.3版本 6-71
参数管理器

在目标设置对话框中激活参数管理器

6.11.2 参数管理器编辑器,概述
在“资源”选项卡中,选择对象“Parameter-Manager”。将打开一个编辑器窗口,您可以在其中创建、编辑
和存储参数列表,在在线模式下还可以将它们加载到目标系统并监控当前参数值。

注意: 为了在 CoDeSys 项目中提供参数管理器功能,必须激活目标设置中的“支持参数管理器”选项,并且必


须在那里定义适当的索引范围!

编辑器窗口是二分窗口。左侧部分用于导航,它显示了当前加载到参数管理器的所有参数列表的列表。右
侧部分包含一个表编辑器,其中的列以属性名称为标题。

在导航窗口中,您可以插入、删除、重新排列或重命名不同类型的参数列表(变量、常量参数、模板、实
例、系统参数)。
在表编辑器中,您可以使用参数条目填充列表。每种列表类型都会显示一个特殊的属性列选择,这些属性
列可以编辑或可 。这要么由特定于目标的描述文件定义,要么将采用默认设置。

您可以通过按<F6>在导航窗口和表格编辑器之间跳转。
CoDeSys 中的参数管理器编辑器

在联机模式下,您可以将之前创建的列表加载到当前连接的目标系统。您还可以使用参数管理器功能在那
里访问它们,以便与其他系统进行数据交换(写入值、上传)。在“参数管理器”窗口中,您可以监视参数
的当前值。如果当前未建立在线连接,则只需在本地创建参数列表并将其与项目一起保存即可。

6-72 CoDeSysV2.3版本
6 - 资源

6.11.3 参数列表类型和属性
参数管理器可以处理以下参数列表类型:
变量:此类型的参数列表中的条目表示项目的过程变量。
参数:此类型的参数列表中的条目表示进程未附加其值的参数。

系统参数:
此类型的参数列表中的条目表示未由进程附加的数据,这些数据由目标系统确定。系统参数列
表无法删除或重命名。

模板:模板不包含可直接访问以进行数据交换的参数条目。事实上,这些条目为功能块或结构的组件提供
了“基本属性配置”。因此,模板可以在“Instance”类型的参数列表中使用。

实例:
此类型的参数列表中的条目表示属于功能块或结构类型的变量的参数条目,即哪些是实例或结构变
量。为了便于输入参数,我们使用了模板,该模板之前也在参数管理器中创建过。

映射:仅当目标系统支持此列表类型时,此列表类型才可用。这些条目表示用于CAN设备的PDO映射的
过程变量。因此,映射列表基本上是变量列表,但它们在单独的索引/子索引范围内工作。此范围必须在
目标设置中定义,类别为网络功能!在这种情况下,在PLC配置中配置的CAN设备将仅使用列表类型“映
射”的条目,否则变量或实例列表的所有条目都将在PDO映射对话框中可用。

每种列表类型都将根据
a 格式的描述文件。如果缺少此类文件,将使用默认设置。

实例和模板
一个实例“参数列表...
。处理参数条目,这些条目表示功能块、 结构变量或数组。
功能块或结构的实例列表都基于一个模板,该模板也将在参数管理器中为相应的功能块或结构定义。数组
的实例列表不能使用在参数管理器中创建的模板,而是直接引用项目中使用的数组。

“模板”参数列表...
...
不包含为数据交换而直接访问的参数。事实上,它定义了索引和子索引偏移量,以及表示功能块或结构
组件的参数条目的某些属性。然后,该模板可以在“实例”参数列表中使用( 上文),从而提供了一种为
项目变量创建参数条目的简单方法,这些变量是功能块或结构的实例。

创建模板参数列表:
在基础POU旁边的编辑字段中,输入应为其创建参数模板的功能块或结构的名称。使用输入助手,您可
以浏览项目的可用 POU。按应用在参数列表编辑器中输入所选 POU 的组件。现在编辑属性字段并关闭
列表,使其可在“实例”列表中使用。

命令在上下文菜单或“附加”菜单中插入缺失的条目将导致根据基本 POU 的当前版本更新条目。在删除


某些行或更改 Base-POU 后,可能需要这样做。

CoDeSysV2.3版本 6-73
参数管理器

如果激活了“同步操作”选项,则目标系统将对为任何列表条目定义的其他 POU 执行所有读/写访问,并


调用相应条目。
要为数组创建实例参数列表 ,无需在参数管理器中创建模板。模板 ARRAY 将隐式可用。

创建实例参数列表:
从表格下方的选择列表中编辑模板。此列表提供了参数管理器中当前可用于功能块或结构的所有模板,
以及 ARRAY 选项,如果您想直接引用项目中使用的数组,请选择该选项。按“应用”将预定义组件插入
到参数列表表中。

在编辑字段“基本变量”中,准确输入要为其创建参数条目的组件的项目变量(必须是所选模板描述的功能
块或结构或数组的类型)。

输 入 实 例 的 Baseindex (基本索引)和Base 子索引。然后,通过添加每个组件在模板中定义的索引和


子索引值(如果是数组,则基数为0)来自动计算特定组件的索引和子索引值。它们将自动填充到相应的
属性字段中。示例:如果为组件输入基索引“3”,而模板中为其定义了索引偏移量“3000”,则该组件将设
置为索引 3003。

有关同步操作选项,请参阅上文:创建模板参数列表。
在上下文菜单或“附加”菜单中插入缺少的条目命令将导致根据所用模板的当前版本更新条目。在删除条
目或修改模板后,这可能很有用。

例:

使用输入或输出变量创建功能块 fubo:a、b、c。在 PLC_PRG 中定义以下 FB- 实例:inst1_fubo:


fubo;inst2_fubo:fubo.编译项目。

现在打开参数管理器,为变量 inst1_fubo.a、inst1_fubo.b、inst1_fubo.c 和 inst2_fubo.a、inst2_fubo.b、


inst2_fubo 创建参数列表。首先插入一个类型为“Template”的参数列表,并将其命名为“fubo_template”。定义
Base-POU:“fubo”。按“应用”(Apply)并为组件 a、b、c: te 定义一些属性。除其他外,输入索引偏移量:对
于 a:16#1,对于 b:16#2,对于 c:16#3。此外,子索引偏移量,例如 a:16#2,b:16#3,c:16#4。

现在插入一个类型为“Instance”的新参数列表。选择模板“fubo_template”。插入基变量“inst1_fubo”。定义一个基
本索引,例如 16#2300,一个基本子索引 30(您必须考虑在选项卡 Networkfunctionality !的目标设置中定义的范
围。现在按“应用”以显示通过添加基本偏移量和模板定义的偏移量为分量 a、b、c 计算的指数:指数:
16#2301、16#2302、16#2303;子指数:16#23, 16#33,16#43.

6-74 CoDeSysV2.3版本
6 - 资源

基于此自动创建的条目,现在您可以继续编辑参数列表。

6.11.4 管理参数列表

插入列表
快捷方式:Ins
要在“参数管理”中插入新的参数列表,请使用命令“插入列表...”,即“插入”或上下文菜单中的“插入新列
表”。当焦点位于导航树中已存在的条目上时,这些命令可用。将打开“插入列表”对话框。

插入新参数列表的名称(在列表类型中必须是唯一的),然后选择以下列表类型之一:

变量 过程变量的条目

参数 数据条目,其值仍未被进程附加
模板 功能块或结构组件的属性设置模板

实例 基于相应模板的功能块或结构类型的变量的条目( 上文)

映射 过程变量的条目,用于 CAN 设备的 PDO 映射。此类型仅在目标系统支持


的情况下可用!

系统参数 参数的条目,其值不是由进程附加的,而是由目标系统定义的

CoDeSysV2.3版本 6-75
参数管理器

“插入列表”对话框

确认设置并关闭对话框后,单击“确定”后,新参数列表将在导航窗口中显示为一个条目,该列表类型由
图标指示。在表格编辑器中,相应的属性将显示为列标题。列的选择和顺序由特定于目标的描述文件定
义,否则使用默认设置。现在,您可以通过为每个所需参数输入一行来编辑表格(请参 第 6.11.4 章“编
辑参数列表”)。

重命名列表
当前在导航窗口中标记的参数列表可以使用 “ 附加 ” 菜单或上下文菜单中的 “ 重命名列表 ” 命令进行重命
名。将打开一个编辑字段,当用鼠标双击列表名称时,您也会看到该字段。

剪切/复制/粘贴列表
快捷键: <Ctrl>+<X>, <Ctrl>+<C>, <Ctrl>+<V>,
命令 “ 剪切 ” (编辑菜单)或 “ 剪切列表 ” (上下文菜单)将当前标记的列表从导航窗口移动到临时缓冲
区,以便您可以通过“粘贴”命令将其重新插入导航树中的任何其他位置。在重新插入之前,请标记要插入
的列表。
命令“复制”或“复制列表”也使用临时缓冲区,但将保留原始导航树条目,并通过“粘贴”添加副本。

删除列表
快捷方式:<Del>
当前在导航窗口中选择的列表将被命令“删除”(“编辑”菜单)或“删除列表”(“附加”或上下文菜单)删
除。

请注意:在在线模式下,此命令将删除运行时系统中的相应列表。

6.11.5 编辑参数列表

显示哪些列(属性):
当前标记的参数列表(导航窗口)将显示在表格窗口中,该窗口由目标特定描述文件或默认设置定义。

这意味着每个特定参数的属性值将显示在单独的行中
根据特定于列表类型的顺序和列的选择。

6-76 CoDeSysV2.3版本
6 - 资源

当光标指向列表列标题栏的任何字段时,您可以通过在上下文菜单中停用/激活列来淡出和淡出列。

要修改列,请在列标题字段之间移动分隔线,或者在将光标放在列标题字段上时使用上下文菜单中可用的
命令之一:命令标准列宽度将为所有列设置标准宽度,使它们在窗口中全部可 。 最大化宽度将更改当
前聚焦列的宽度,以便完全显示每个条目。

用于编辑参数列表条目的命令
以下用于编辑参数列表的命令可在上下文菜单或菜单“插入”或“附加”中找到:

插入/删除行:

插入行或 将在该条目(行)之前插入一个新条目(行),其中
换行 光标当前已放置。
后一行 将在该条目(行)之后插入一个新条目(行),其中
后的新行 光标当前已放置。.
快捷键:<Ctrl><Enter>
删除行 光标当前所在的行将被删除。
快捷键:<Shift>+<Del>
剪切、复制、粘贴行 这些命令可用于移动(剪切/粘贴)或复制(复制/粘贴)所选
行。

编辑属性值:
如果插入参数条目的新行,则属性字段将自动填充特定于目标的默认值。有关可能的属性,请参 第
6.11.3 章“参数列表类型和属性”。要输入或编辑属性值,请单击相应的字段。如果属性是可编辑的,则
将打开一个编辑字段。输入助手(<F2>)将在应输入 CoDeSys 项目组件的字段中可用。

按<Enter>关闭该条目。
使用箭头键跳转到另一个字段。
按<Del>删除当前编辑字段的条目。
要在“十进制”和“十六进制”之间切换输入格式,请使用“附加”菜单中的“格式化十进制/十六进制 ”命令。

按<F6>将焦点设置到导航窗口(并返回)。
选项:
在编辑器窗口中的表格下方,可以激活以下选项(可用性取决于列表类型):

使用程序下载:在程序下载时,列表将自动下载到控制器。

同步操作:对为任何列表定义的其他 POU 的所有读/写访问。


条目,将由目标系统与
各自的条目。

对参数列表进行排序
参数列表中的条目序列可以按照属性值的升序或降序对属性(列)进行排序。这适用于离线和在线模式。
在包含所需属性的列标题的字段上执行鼠标单击。因此,表格行将被重新排序,并在属性的列标题字段中

CoDeSysV2.3版本 6-77
参数管理器

显示箭头符号,显示当前排序(指向上方 = 升序排序序列,指向下方 = 降序排序序列)。

6.11.6 在线模式下的参数管理器

编辑器和控制单元之间的列表传输
如果目标支持,则在联机模式下,可以在编辑器中创建的参数列表下载到 resp。 从运行时系统上传。此
外,您可以将单个参数值写入运行时系统。“变量”和“参数”类型的列表的最大大小也由目标系统定义。

请注意:登录时将自动下载所有参数列表,并激活“加载项目”选项!

每个参数的当前值在附加列中进行监控,该列以在线模式显示在参数管理器中:

这取决于目标,是使用 Index 和 Subindex 还是 RefID 和 Offset 来监视值。

“Extras”菜单中提供了以下命令,用于处理编辑器和控制器之间的列表传输:

删除列表 导航窗口中当前标记的列表将从 PLC 中删除


运行时系统。
写入列表 此命令将打开“复制对象”对话框,您可以在其中进行选择
“可用”列出了要下载到运行时系统的那些。这
一旦您确认确定,下载将立即完成。这取决于
目标:对于枚举,是否仅使用数字或符号
值将被转移。
阅读列表 “参数”类型的所有列表都将从运行时系统中读取并加载
进入参数管理器。“变量”类型的列表的“上传”将是
仅当目标明确支持时才执行。
写入值 在“Value”列中定义的所有值都将写入运行时系统的参数列表中。要写入单个
值,请双击
列中的相应字段来获取“写入值”对话框,如“在线”“写入值”函数所示。

写入默认值在“Default”列中定义的值将写入运行时系统中的参数列表。

接管值当前值将从运行时系统读取并上传到“值”列。

命令 FormatDec/Hex也可用于在 'decimal' 和 hexadecimal' 之间切换输入格式。

启动项目中的参数列表
这取决于目标系统,在创建启动项目时是否考虑参数列表。

6-78 CoDeSysV2.3版本
6 - 资源

6.11.7 参数列表的导出/导入

'Extras''导出'
“Extras”菜单的“Export”命令可用于将参数管理器的列表导出到 XML 文件。例如,可以使用 CoDeSys
参数管理器中的导入功能将此文件导入到另一个项目。将打开用于保存文件的标准对话框,文件扩展名
*.prm 将被预设。参数管理器中可用的所有列表都将写入导出文件。

参数管理器的内容也可以使用常规项目导出功能(“项目导出”)导出。

'Extras''导入'
“Extras”菜单的“Import”命令可用于导入描述参数列表的XML文件。例如,可以使用 CoDeSys 参数管理
器中的导出功能创建此文件。

如果导入文件包含一个列表,其名称已在“参数管理器”中使用,则将打开一个对话框,询问用户是否应覆
盖现有列表。

6.12 目标设置
“ 目标设置 ” 是 “ 资源 ” 的对象。在这里,您可以定义哪个目标应用于项目以及如何配置它。如果以
“Project”“New”启动新项目,将打开一个对话框,其中必须设置目标,这意味着必须为目标设置预定
义配置。
可用目标的列表取决于计算机上安装的目标支持包(TSP)。它们描述了特定于平台的基本配置,并定义
了用户可以在 CoDeSysTarget 设置对话框中修改配置的程度。

请注意:如果没有可用的 TSP,则目标系统选择框中将仅提供“无”设置。这将自动切换到模拟模式,并且无法进行
任何配置设置。

目标支持包
在开始之前,必须借助安装程序 InstallTarget(可能是CoDeSys-Setup的一部分)安装目标支持包(
TSP)。
目标支持包(TSP)包含使用在CoDeSys中创建的程序控制标准平台所需的所有文件和配置信息。必须
配置的内容:代码生成器、存储器布局、PLC 功能、I/O 模块。此外,还必须链接库、网关驱动程序、用
于错误消息的 ini 文件和 PLC 浏览器。TSP 的核心组件是一个或多个Target 文件。目标文件定向到配置
目标所需的文件。多个目标文件可能共享这些附加文件。

Target 文件的默认扩展名为*.trg,格式为二进制。附加定义附加到目标文件中的条目,这些条目确定用
户是否可以查看和编辑CoDeSys对话框中的设置。

在安装 TSP 期间,将每个目标的目标文件放入单独的目录,并注册路径。根据信息文件*.tnf的信息将关


联的文件复制到计算机。目标目录的名称与目标名称相同。建议将目标特定文件存储在以制造商名称命名
的目录中。

使用 TSP 安装的文件在启动CoDeSys时读取。在CoDeSys对话框中完成的目标设置将与项目一起保
存。

请注意:如果您使用新的目标文件或更改了现有目标文件,则必须重新启动CoDeSys才能读取更新的版本。

CoDeSysV2.3版本 6-79
PLC浏览器

对话框目标设置
创建新项目时,“目标设置”对话框将自动打开。也可以通过在对象管理器的“资源”中选择“目标设置”菜
单项来打开它。

选择“配置”中提供的目标配置之一。
如果未安装目标支持包,则只能选择“无”,这意味着在模拟模式下工作。如果选择已安装的配置之一,
则取决于目标文件中的条目,在CoDeSys对话框中自定义此配置的可能性。如果选择目标配置,而计算
机上不存在有效的许可证,则CoDeSys会要求您选择另一个目标。

如果选择了相应目标文件中的条目“HideSettings”提供的配置,则只能看到配置的名称。否则,有五个对
话框可用于修改给定的配置:

1. 目标平台
2. 内存布局
3. 总则
4. 网络功能
5. 可视化

注意:请注意,每次修改预定义的目标配置都可能导致目标的性能和行为发生严重变化!

如果要将目标设置重置为目标文件给出的标准配置,请按<默认>。

6.13PLC浏览器
PLC-Browser
是一个基于文本的控制监视器(终端)。从控制器请求特定信息的命令在输入行中输入,并
以字符串形式发送到控制器。返回的响应字符串显示在浏览器的结果窗口中。此功能用于诊断和调试目
的。

可用于设置目标系统的命令由CoDeSys标准集以及控制器制造商的可能扩展集组成。它们在ini文件中进
行管理,并在运行时系统中相应地实现。

6.13.1 关于PLC浏览器操作的一般说明
在“资源”选项卡控件中选择“PLC-Browser”条目。如果在当前目标设置(类别网络功能)中激活它,它将
在那里可用。

6-80 CoDeSysV2.3版本
6 - 资源

CoDeSysPLC 浏览器窗口

浏览器由一个命令行和一个结果/显示窗口组成。
在选择框中,输入行显示自项目开始以来输入的所有命令的列表(输入历史记录)。在项目关闭之前,可
以重新选择它们。只有与现有命令不同的命令才会添加到列表中。

输入的命令通过<Enter>发送到控制器。如果没有联机连接,则命令将以与发送到控制器相同的方式显示
在结果窗口中,否则将显示来自控制器的响应。如果向控制器发送新命令,则会删除结果窗口的内容。

命令可以以命令字符串的形式输入,也可以使用宏:

6.13.2PLC浏览器中的命令条目
基本上,PLC-Browser提供了在运行时系统中硬编码的3S标准命令。它涉及用于直接内存操作、项目和
状态函数输出以及运行时监控的函数。它们在浏览器的ini 文件中进行了描述,该文件是 Target 支持包的
组成部分。这些标准命令可以由专用命令进一步补充,例如自诊断功能或控制应用程序的其他状态消息。
命令列表的扩展既可以在运行时系统的客户界面中执行,也可以通过浏览器 ini 文件中的附加条目执行。

打开项目时, PLC-Browser中可用的命令列表是根据Browserini文件中的条目生成的。可以使用...在“插
入标准命令”对话框中或使用 <F2> 键。此外,命令“插入”、“标准命令”可用于获取命令列表。可以在
命令行中手动键入命令,也可以通过双击相应的条目从列表中选择该命令。

一般命令语法为:
<KEYWORD><EMPTY><与关键字相关的参数>
关键字是命令。可以使用哪些参数进行扩展,在条目帮助窗口中的相应工具提示中进行了描述。

已发送的命令在输出数据窗口中重复,控制器的响应出现在其下方。

示例:使用命令“pid”从控制器请求项目ID
命令行中的条目:
皮德

CoDeSysV2.3版本 6-81
PLC浏览器

结果窗口中的输出:
pid 项目ID:16#0025CFDA

可以使用?<BLANK><KEYWORD> 为每个标准命令提供帮助文本。这在 ini 文件中也有类似的定义。

以下命令牢固地集成在运行时系统中,并包含在 ini 文件中,其中包含相应的条目帮助、工具提示和帮助


条目:

命令 描述

? 运行时系统提供可用命令的列表。该列表与目标系统的描述文件的状态无关。

内存 内存区域的十六进制转储语法 1:mem<起始地址><结束地址>地址可以输入
十进制、十六进制(前缀 16#)或宏。

MEMC的 Hexdump 相对于控制器中代码的起始地址;与 MEM 一样,数据被添加到代码区起始地


址。
梅德 相对于控制器中的数据库地址的十六进制转储;与 MEM 一样,数据被添加到数据区域

反映 反映当前命令行,用于测试目的。
即插即用 读取和显示数据指针表。
PPT格式 读取并显示 POU 表。
PID的 读取并显示项目 ID。
品夫 读取并显示项目信息(参 “项目”、“项目信息”)。
啧啧 显示IEC任务列表,包括项目中定义的任务信息。
startprg(启动PRG) 启动PLC程序(“在线”,“开始”)。
停止PRG 停止 PLC 程序(“在线”、“停止”)。
重置PRG 重置PLC程序。仅初始化非保留数据。(“在线”、“重置”)。
重置PRGCOLDresetprgcold
冷重置PLC程序。保留数据也会被初始化。('在线', '重置(冷)')。
重置PRGorg 重置PLC程序原件。当前应用程序以及所有数据(包括保留和持久)都将被删除。('在
线', '重置(原点)')。

重新加载 重新加载启动项目。
getprgprop 读取和显示程序属性(名称、标题、版本作者、日期)。
获取prgstat 读取和显示程序状态(例如“运行”、“停止”、上次错误、标志)。
文件目录 文件命令“dir”。PLC 目录中的文件列表。
文件复制 将文件 [from][to] 复制。示例:“filecopyfilename.txtfilename2.txt”。
文件重命名 重命名 PLC 上的文件 [旧][新]。示例:filerenameoldname.txtnewname.txt”。
文件删除 删除PLC上的文件;示例:“filedeletefile.xml”。
保存保留 保存保留变量。之后将显示保存文件的名称。
恢复保留 加载保留变量。将显示从中恢复变量值的保存文件的名称。

6-82 CoDeSysV2.3版本
6 - 资源

命令 描述

设置PWD 在控制器上设置密码;语法:setpwd<password>[level],例如“setpwdabcde0”。
<level>可以是“0”(默认值),仅对编程系统的登录有效,也可以是“1”对所有应用
程序有效。

德尔普WD 删除PLC上的密码。

请注意:
输入的命令序列的第一个单词被解释为关键字(<KEYWORD>)。
如果控制器无法识别命令条目的第一个单词,则结果窗口中将出现响应“未找到关键字”。

如果关键字前面有“?<SPACE>”(例如“?mem“),将搜索 ini 文件以查找此关键字的帮助部分。如果


有一个可用,则不会向控制器发送任何内容,而只会在输出数据窗口中显示帮助文本。

6.13.3 在PLC-Browser的命令输入中使用宏
如果在命令行中输入与宏关联的命令,则在将其发送到控制器之前,该命令会展开。然后,结果窗口中的
响应以类似的展开形式显示。
条目语法为:<KEYWORD><macro>
<KEYWORD> 是命令。
宏包括:

%P<NAME>如果 NAME 是 POU 名称,则表达式将扩展为 <POU-Index>,否则不会更改

%V<NAME>如果 NAME 是变量名,则表达式扩展为 #<INDEX>:<OFFSET>,否则不会更改(此表示


法 #<INDEX>:<OFFSET> 由控制器解释为内存地址)

%T<NAME>如果 NAME 是变量名,则表达式将扩展为 <VARIABLENTYP>,否则不会进行更改。

%S<NAME>如果 NAME 是变量名,则表达式将扩展为 <SIZEOF(VAR)>,否则不会进行更改。

如果转义符号\(反斜杠)放在前面,则忽略 % 字符。转义符号本身只有在书写 \\ 时才会传输。

例:

命令行中的条目:(变量 .testit 的内存转储?


mem %V.testit
结果窗口中的输出:
记忆 #4:52
03BAAA24 00 00 00 00 CD CD ....ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ

6.13.4 其他PLC浏览器选项
在“附加”菜单或PLC浏览器的工具栏中,有以下命令用于处理命令条目或历史记录列表:有

CoDeSysV2.3版本 6-83
工具

向前和向后历史记录, 您可以向前和向后滚动浏览已执行的查询结果。历史记录将持续到您离开项目为
止。

使用“取消”命令 您可以中断已启动的查询。

使用“保存历史记录列表”,可以将在此之前执行的查询结果保存在外部文本文件中。将出现“将文件另存
为”对话框,您可以在其中输入扩展名为“.bhl”(浏览器历史记录列表)的文件名。命令“打印最后一个”
命令将打开要打印的标准对话框。可以打印当前查询以及消息窗口中的输出数据。

6.14 工具
如果为当前设置的目标系统启用了该功能,则对象“工具”将在“资源”选项卡中可用。它显示了外部工具
可执行文件的所有可用快捷方式(连接),可以通过双击激活这些外部工具,以便从CoDeSys中调用这
些外部程序。它由目标文件定义,允许使用哪些快捷方式以及有多少个快捷方式。根据此定义,用户可以
在“工具”文件夹中添加或删除新的快捷方式。

例如,对象管理器中的“工具”文件夹可能如下所示:

在此示例中,安装了四个工具快捷方式。一个用于启动另一个CoDeSys编程系统,一个用于在文本编辑
器中打开汇编程序列表,另外两个快捷方式可用于打开 PDF 文件。标有 “<R>” 的快捷方式无法在
CoDeSys 中修改。快捷方式可能包含与编辑器(例如notepad.exe)或某个 PDF 文件的连接,因此双击
该条目将打开一个记事本窗口,分别显示汇编程序列表,然后打开显示 PDF 文件的 AcrobatReader。

此外,您可以定义某些文件,这些文件应在激活快捷方式后立即下载到 PLC。

6.14.1 可用工具快捷方式的属性(对象属性)
通过鼠标单击管理器“资源”选项卡中“工具”条目处的加号,将打开可用快捷方式列表。如果您刚刚开始
设置一个新项目,您将只看到那些在目标文件中定义为修复条目的项目。但是,如果“工具”文件夹已被修
改,您可能会发现另一个快捷方式,由用户在 CoDeSys 中添加。

6-84 CoDeSysV2.3版本
6 - 资源

“工具属性”对话框

您可以查看全局工具属性(对“工具”中列出的所有快捷方式有效)以及单个快捷方式的属性。

1. 工具特性:
如果在资源树中标记了“工具”,您将在上下文菜单或菜单“项目”“对象”中找到“对象属性”命令,这将打
开“工具属性”对话框。
在那里,您将获得一个表格,其中列出了可能用于当前设置目标的所有工具快捷方式。将显示以下参数:
工具的ID(唯一标识号)、用于在对象管理器中引用快捷方式的快捷方式的名称以及工具的可执行文件的
名称。“高级”按钮 可展开对话框,并关闭对话框的扩展名:

展开的对话框显示目标文件中定义的快捷方式的全局属性。此外,还有一个编辑字段,可以在其中定义一
个(工作)目录,该目录应该用于可执行文件的操作。按下“应用”按钮后,路径将被保存,而不会关闭对
话框 。

该工具的属性:

固定计数 工具的快捷方式数,这些快捷方式不可更改地自动插入到“工具”文件夹中。仅当在此
处输入“0”时,用户才能根据需要创建任意数量的快捷方式。

请注意:对于目标文件定义为“修复”快捷方式的快捷方式,“工具”文件夹中的可能
使用次数是预先确定的,并且 CoDeSys 用户无法修改属性(可通过对象管理器中
的“<R>”识别)。

前任名称: 工具的可执行文件的文件名或完整路径。在这里,您还可以输入指向exe文件的注册表
路径:“[注册表路径].<此路径中指向exe文件的注册表项>如果没有条目,则”参数模板“
中给出的文件的文件扩展名将自动通过Windows启动相应工具的exe文件。

示例:“C:\programme\notapad.exe”、“345.pdf”
DefaultDisplayName: 名称,用于表示对象管理器中的工具。可能使用了模板 $(INSTANCE
NUMBER)(参 下面的“参数模板”)。

参数模板: 用于确定工具应打开的文件的模板。可以使用以下模板,通过适当的特殊字符连接:
$(PROJECT_NAME)当前打开的项目的名称(不带扩展名的文件名 *.pro“)。

$(PROJECT_PATH)项目文件所在目录的路径(不指示驱动器)。

CoDeSysV2.3版本 6-85
工具

$(PROJECT_DRIVE)驱动器当前打开的项目所在的位置。
$(COMPILE_DIR)编译项目的目录(包括驱动器的指示) $(
TOOL_EXE_NAME)工具的 exe 文件的名称。
$(DISPLAY_NAME)当前快捷方式的名称,在“工具”文件夹中使用。$(
INSTANCE_NUMBER)快捷方式的编号(实例编号、运行编号,以“1”开头)
$(CODESYS_EXE_DIR)目录的路径 Codesysexe-file 所在(包括驱动器的指
示)。

您将在快捷方式属性对话框中看到的模板转换( 下文)

例:
“$(PROJECT_NAME)_$(INSTANCE_NUMBER).cfg”
将在工具中打开名为<当前 CoDeSys 项目名称>_<快捷方式编号>.cfg)的
cfg 文件。

下载文件模 文件、文件路径或文件模板,将在下载过程中复制到 PLC。如果激活了“可编辑”选


板: 项,则这些文件的列表将在快捷方式的属性对话框中进行编辑。如果输入的文件名没
有路径,则将在 codesys-exe-file 所在的目录中搜索该文件。

例:
“a.up;$(PROJECT_NAME).zaw;$(INSTANCE_NUMBER).upp”
文件a.up、<currentCoDeSysProjekt>.pro和<shortcutnumber>.upp)将在下次下载
时复制到PLC

2. 快捷方式属性:
在对象管理器的“工具”树中标记快捷方式条目,然后在上下文菜单或“项目”“对象”菜单中选择命令“对象
属性”。将打开“快捷方式属性”对话框,其中包含以下项目:

命令 调用工具;exe 文件和在“参数”中命名的文件的路径(由“参数模板”预定义, 上文),例如:C:


\programs\notepad.exeD:\listings\textfile.txt

参数工具应调用的文件的路径。这是在目标文件中定义的,如果“可编辑”选项( 下文)已被激活,则可以在此
处进行编辑。

主要文件,您可以在此处找到由目标文件定义的文件名,这些 文件名也在工具属性(DownloadFileTemplate,
上文)中描述。如果在扩展对话框中激活了“可编辑”选项( 下文),则可以修改列表。为此,按“新建”按钮打
开“文件名”对话框,您可以在其中输入另一个文件或文件路径。如果您输入一个没有路径的文件,那么它将在该
目录中搜索 codesys-exe-file.按钮 删除将删除当前标记的列表条目。

“ 标 准 按 钮 ” 将对话框的条目重置为目标文件定义的默认值。
按钮“应用”保存完成的设置,而不关闭属性对话框。
“高级按钮”将展开对话框,使其如下所示:

6-86 CoDeSysV2.3版本
6 - 资源

快捷方式的“高级属性”对话框

快捷方式编号: 运行编号,从 1 开始。当前工具的新快捷方式将获得下一个更高的数字。如果稍后将删除


快捷方式,则其余快捷方式的数量将保持不变。可以使用模板 $ (
INSTANCE_NUMBER)将快捷方式编号插入到其他定义中(例如,参 上文“参数模板
”)。

工具 ID: 工具的唯一标识号;在目标文件中定义。
默认快捷方式数: 工具的快捷方式(实例)数。对应于目标文件中定义的“FixedCount”。请参阅上文的工具
属性。

编辑: 如果激活此选项,则可以编辑“参数”字段或应下载的文件列表。

按钮确定 应用完成的设置并关闭“属性”对话框。

6.14.2 管理工具快捷方式

创建新的工具快捷方式
在对象管理器的资源树中选择条目“工具”或快捷方式条目,然后在上下文菜单或“项目”“对象”菜单中选
择命令“添加对象”以打开“创建快捷方式”对话框, 请参 下文。

下表列出了可以为其创建新快捷方式(连接)的所有工具。根据目标文件中的定义,将显示以下参数:工
具的ID、快捷方式的默认名称和可执行文件的名称。

要为提供的工具之一创建(其他)快捷方式,请在“ID”列中单击鼠标来选择此工具。因此,您可以在编辑
字段“快捷方式的名称”中修改快捷方式的默认名称,然后单击“确定”进行确认。仅当您输入尚未使用的
名称时,这才有效。

CoDeSysV2.3版本 6-87
工具

“创建快捷方式”对话框

“确定”关闭对话框,新的快捷方式将插入到“资源”树中,由快捷方式名称和快捷方式编号表示,该快捷
方式编号比此工具实例使用的最高数字高 1。

在名称字段下方的区域中,将显示有关用户输入的相应提示。

删除工具快捷方式
删除快捷方式可以通过上下文菜单(鼠标右键)或“项目”“对象”菜单中的“删除”命令来完成。仅当没有
为当前标记的快捷方式定义固定数量的快捷方式时,该命令才可用。如果删除快捷方式,其余快捷方式的
快捷方式编号不会更改。

执行工具快捷方式
双击资源树中的条目或通过“项目”、“对象”菜单或上下文菜单中的“打开对象”命令(鼠标右键)将执行
快捷方式。
如果在快捷方式属性(Parameter)中定义的文件的执行失败,则会出现相应的错误消息。如果找不到参
数文件,则将执行该工具的 exe 文件并打开一个对话框,询问您是否应创建该文件。

如果在定义的路径中找不到该工具的 exe 文件或未定义路径,则将打开用于选择文件的标准对话框,并


要求用户输入 exe 文件的路径。当对话框被 OK 关闭时,此路径将被保存,因此在其他 CoDeSys 项目中
也可用于该工具。

保存工具快捷方式
保存 CoDeSys 项目时,资源树中“工具”文件夹的状态和设置也会被保存。

请注意:如果使用新名称通过“另存为”保存项目,则在参数文件和要下载的文件的定义中使用模板 $(
PROJECT_NAME)时,必须考虑以下事项:如果在旧项目中添加了工具的快捷方式(FixedCount=0),然后,在
新项目中,必须手动重新修改与新项目名称相对应的文件名。相反,对于使用固定数量的快捷方式定义的工具,模板
将始终自动替换为当前项目名称!

6.14.3 关于工具的常 问题
为什么我在“资源”中没有“工具”条目?
只有当它在当前设置的目标系统的目标文件中定义时,“工具”功能才可用。

对于哪些工具已经可以使用快捷方式,我可以在 CoDeSys 项目中添加哪些快捷方式?

6-88 CoDeSysV2.3版本
6 - 资源

双击加号,打开对象管理器的“资源”树中的“工具”文件夹。您将看到当前项目已连接哪些工具。如果您
刚刚设置了一个新项目,但尚未在“工具”列表中工作,则只会显示这些条目,这些条目由目标文件中的定
义不可更改地预定义。否则,您可能会看到已项目专 修改的工具列表。要检查列表是否可由新条目扩
展,请选择命令“添加对象”。您将看到一个对话框,其中包含可以为其创建其他快捷方式的所有工具。

可用工具具有哪些全局属性?
在对象管理器中标记条目“工具”,然后从上下文菜单(鼠标右键)中选择命令“对象属性”。按“高级”按钮
展开出现的对话框。现在,您将看到可用工具和相应参数的列表。通过鼠标单击ID符号选择其中一个工
具,以便-例如-在“FixedCount”字段中显示工具允许的快捷方式数量,或者显示如果快捷方式被激活,哪
些文件将被下载到PLC。文件名或路径可能以模板的形式显示,这些模板将针对每个快捷方式进行解释,
如以下段落所述:

哪些属性具有可用的快捷方式?
在对象管理器中标记“工具”下面的条目之一,然后在上下文菜单(鼠标右键)中选择命令“对象属性”。按“
高级”按钮获取所选快捷方式的参数。在某种程度上,它们将与上述全局工具属性相对应。如果目标文件
中的定义允许,您可以在此处编辑这些参数。

如何为工具创建快捷方式?
在对象管理器中标记条目“工具”,然后从上下文菜单(鼠标右键)中选择命令“添加对象”。您将看到可用
工具的列表,但仅限于尚未达到最大快捷方式数(FixedCount)的工具。选择一个工具,然后按OK。现
在,该工具将插入到对象管理器的“工具”文件夹中。如果要再次插入它,则必须先输入不同的工具名称,
这意味着将新条目标记为同一工具的另一个实例。例如,您可以将工具 Toolxy 的实例命名为
“Toolxy_1”、“Toolxy_2”等。

如何修改工具的参数?
要修改快捷方式(工具连接实例)的参数,请在对象管理器中标记快捷方式,然后从上下文菜单中选择 命
令“对象属性”。这取决于工具在目标文件中的预定义,是否可以在属性对话框中编辑参数。(在展开的对
话框中查看“可编辑”选项是否被激活。按钮“标准”将所有编辑的值重置为默认值。

如何执行工具快捷方式?
双击对象管理器中的快捷方式条目,或在上下文菜单中选择命令“打开对象”,或者在对象管理器中标记该
条目时,在“项目”菜单中选择命令。

CoDeSysV2.3版本 6-89
工具

6-90 CoDeSysV2.3版本
7 - 弹性网卡

7 弹性网卡

7.1.1 什么是弹性网卡
ENI(“工程接口”)允许将 CoDeSys 编程系统连接到外部数据库。在那里,可以存储创建自动化项目期
间所需的数据。使用外部数据库保证了数据的一致性,然后可以由多个用户、项目和程序共享。此外,它
还通过实现以下项目来扩展 CoDeSys 功能:

CoDeSys项目和关联资源(共享对象)的版本控制:如果对象已从数据库中检出、修改并再次检入,则
将在数据库中创建该对象的新版本,但旧版本也将保留,并且可以根据需要再次调用。对于每个对象和整
个项目,将记录版本历史记录。可以检查两个版本的差异。

多用户操作:一组用户可以访问对象样本的最新版本,例如项目的 POU。然后,其中一个用户当前检出
的对象将被标记为“正在工作”,并且其他用户无法编辑。因此,多个用户可以在同一个项目上并行工作,
而不会冒着相互覆盖版本的 险。

通过外部工具访问:除了 CoDeSys 编程系统外,其他具有 ENI 的工具也可以访问公共数据库。例如,这


些可能是外部可视化、ECAD系统等,它们需要在CoDeSys中创建的数据,或者还生成其他程序所需的数
据。

弹性网卡由 客户端 和 服务器 部分组成。因此,可以将数据库保存在多用户操作所需的远程计算机上。


CoDeSys 编程系统是独立的 ENIServerProcess 的客户端,也是另一个应用程序的客户端,需要访问
数据库(请参阅 ENIServer 上的单独文档)。

目 前 , 弹 性 网 卡 支 持 数 据 库 系 统“Visual SourceSafe 6.0”、“MKS Source Intergrity”、“PVCS Version


Manager”V7.5及更高版本以及本地文件系统。对象可以存储在不同的“文件夹”(具有不同访问属性的数
据库类别)中。可以检出对象进行编辑,从而为其他用户锁定对象。可以从数据库中调用对象的最新版
本。此外,对于没有源代码管理的项目,您可以像往常一样将任何对象存储在本地项目中。

7.1.2 使用弹性网卡项目数据库的前提条件
请注意:有关 3S–SmartSoftwareSolutionsGmbH 提供的ENI 服务器的安装和使用指南,请参阅单独的服务器
文档或在线帮助。在那里,您还可以找到快速入 指南。

还要考虑使用 ENIExplorer的可能性,它允许独立于当前使用的数据库系统执行数据库操作。

如果要在CoDeSys 编程系统中使用 ENI 来管理外部数据库中的项目对象,则必须满足以下前提条件:

CoDeSys 和 ENI 服务器之间的通信需要TCP/IP,因为ENI 服务器使用 HTTP 协议。

ENI 服务器(ENIServerSuite)必须在本地或远程计算机上安装并启动。需要许可证才能使用已随服务
器 一 起 安 装 的 标 准 数 据 库 驱 动 程 序 之 一 运 行 它 。 只 有 本 地 文 件 系 统 的 驱 动 程 序 可 以 与 非 许 可 的ENI
Server 版本一起使用。

在 ENIServer服务控制工具( ENIControl)中,必须正确配置与所需数据库的连接(数据库)。在安装
过程中,系统会自动要求您执行此操作,但您可以稍后在 ENIControl 中修改设置。

CoDeSysV2.3版本 7-1
工具

a 必须安装具有 ENI 支持的驱动程序的项目数据库。在运行ENI 服务器的同一台计算机上执行此操作是


合理的。或者,可以使用本地文件系统,默认情况下还将为其提供驱动程序。

在数据库管理中,用户(客户端)和 ENI 服务器可能必须注册为具有访问权限的有效用户。无论如何,


这是“VisualSourceSafe”所必需的,如果您使用其他数据库系统,请参阅相应的文档以获取有关用户配
置的信息。

对于当前的 CoDeSys 项目,必须激活 ENI 接口(在 CoDeSys 对话框的“项目”、“选项”、“项目数据库”


中完成)。(可以在 ENI 中切换用户定义,例如,为了定义更详细的访问权限,就像在数据库管理中一
样。但一般来说,如果想要通过 ENI 登录数据库的用户在数据库中注册就足够了。

对于当前的 CoDeSys 项目,必须正确配置与数据库的连接;这将在 CoDeSys 对话框的“项目”、“选项”


、“项目源代码管理”中完成。
在当前项目中,用户必须使用用户名和密码登录 ENI 服务器;这将在登录对话框中完成,该对话框可以通
过命令“项目”“数据库链接”“登录”或命令显式打开,如果您尝试访问数据库之前没有登录,该对话框将
自动打开。

7.1.3 在 CoDeSys 中使用 ENI 项目数据库


用于管理 ENI 项目数据库中的项目对象的数据库命令(获取最新版本、检出、签入、版本历史记录、标
签版本等)将在与数据库的连接被激活并正确配置后立即在当前CoDeSys项目中可用。为此,请参阅使
用 ENI 项目数据库的前提条件。然后,这些命令可以在上下文菜单的子菜单“数据库链接”或“项目”菜单
的子菜单中使用,并引用当前在对象管理器中标记的对象。

对象对数据库类别的当前分配显示在“对象属性”中,并且可以在此处进行修改。

可以在项目数据库的选项对话框(“项目”、“选项”、“项目源代码管理”)中修改数据库类别的属性(通
信参数、访问权限、签入/签出行为)。

7.1.4 与项目数据库有关的对象类别
CoDeSys 项目有四类与项目源代码管理相关的对象:
弹性网卡区分了在项目数据库中管理的三类对象(“弹性网卡对象类别”):项目对象、共享对象、编译文
件。
“本地”类别,如果对象不应存储在数据库中,则该对象将被分配到该类别。这意味着它将按照已知的方式
处理,用于没有任何源代码管理的项目。
因此,在编程系统中,可以将 CoDeSys 对象分配给“项目对象”、“共享对象”或“本地”类别之一;“编译文
件”尚未作为项目中的对象存在。将对象分配给其中一个类别是在创建对象时自动完成的,因为这是在项
目选项对话框“项目源代码管理”中定义的,或者通过命令“项目”“数据库链接”“定义”或“多个定义”显式
定义,但可以随时在“对象属性”对话框中进行修改。

每个 ENI 对象类别都将在“项目源代码管理”的设置中单独配置,这些设置是项目选项(“项目”、“选项
”)的一部分。这意味着每个类别都定义了自己的参数,用于与数据库(目录、端口、访问权限、用户访
问数据等)的通信,以及调用最新版本、签出和签入的行为。然后,这些设置将对属于该类别的所有对象
有效。因此,您必须分别登录每个数据库类别;这将通过“登录”对话框完成。

7-2 CoDeSysV2.3版本
7 - 弹性网卡

建议为数据库中的每个对象类别创建一个单独的文件夹,但也可以将所有对象存储在同一个文件夹中。(
“category”是对象的属性,而不是文件夹的属性。

请参阅以下三个 ENI 对象类别:

项目对象: 包含项目特定源信息的对象,例如POU
在多用户操作中共享。命令“获取所有最新
versions' 会自动从数据中调用此类别的所有对象
以当地项目为基础;即使是那些,到目前为止还没有出现过。
共享对象: 非特定于项目的对象,例如通常
用于多个项目。
注意:“获取所有最新版本”命令只会复制这些
此类别的对象从项目文件夹复制到本地项目,其中
已经是项目的一部分!
编译文件: 编译由 CoDeSys 创建的信息(例如符号文件),用于
当前项目,其他程序也可能需要。示例:外部可视化可能不仅需要项目

变量,以及分配的地址。后者在项目编译之前不会为人所知。

或者,CoDeSys 项目的任何对象都可以从项目源代码管理中排除,并且可以分配给“本地”类别,这意味
着它们只是像往常一样与项目一起存储,而没有任何源代码控制的项目。

CoDeSysV2.3版本 7-3
工具

7-4 CoDeSysV2.3版本
8 -DDE 接口

8DDE 接口
DDE 与 CoDeSys 的通信
CoDeSys有一个用于读取数据的 DDE(动态数据交换)接口。CoDeSys使用此接口为其他应用程序提
供其他应用程序,这些应用程序也使用 DDE 接口,其中包含控制变量和 IEC 地址的内容

如果使用与符号一起使用的 GatewayDDEServer,则不需要CoDeSys从 PLC 读取变量值并将其传输到


具有 DDE 接口的应用程序。

注意:无法通过 DDE 服务器读取直接地址!对于这种情况,在 CoDeSys 中,必须声明具有适当地址分配(AT)的


变量。
注意: DDE 接口已在 WindowsNT4.0 上使用 Word97 和 Excel97 进行了测试。如果由于计算机上其他版本或额外
安装的程序不匹配而导致 DDE 通信失败,3S–SmartSoftwareSolutions 不承担任何责任。

8.1CoDeSys编程系统的DDE接口...
激活 DDE 接口
一旦 PLC(或仿真)登录,DDE 接口就会激活。

数据的一般方法
DDE 查询可分为三个部分:
1. 程序名称(此处为: CoDeSys)、
2. 文件名和
3. 要读取的变量名称。
程序名称:CoDeSys
文件名:完整的项目路径(c:\example\example.pro)。
变量名称:变量在 Watch-andRecipeManager 中显示的名称。

可以读取哪些变量?
所有地址和变量都是可读的。变量或地址应以观察和配方管理器中使用的格式输入

例子:

%IX1.4.1 (* 读取输入 1.4.1*)


PLC_PRG。TEST (* 从 POUPLC_PRG* 中读取变量 TEST)
.球Var1 (* 读取全局变量 GlobVar1*)

使用 WORD 链接变量
为了在 MicrosoftWORD 中通过 DDE 接口从 POUPLC_PRG获取变量 TEST 的当前值,必须在 WORD
中插入一个字段(例如,日期)('Insert'“Field”)。现在,当您用鼠标右键单击字段并选择命令“切换字
段代码”时,您可以更改所选文本的字段功能。在我们的示例中,如下所示:

{ DDEAUTO CODESYS “C : \CODESYS\PROJECT\IFMBSP.PRO” “PLC_PRG. 测 试 “ }


再次用鼠标右键单击该字段,然后单击“更新字段”,所需的变量内容将出现在文本中。

CoDeSysV2.3版本 8-1
DDE 与 GatewayDDE 服务器通信...

使用 EXCEL 链接变量
必须先在 MicrosoftEXCEL 中输入以下内容,然后才能将变量分配给单元格。
=CODESYS|'C:\CODESYS\PROJECT\IFMBSP。亲'!PLC_PRG。测试'

当您单击“编辑”然后单击“链接”时,此链接的结果将是:
类型:CODESYS

源文件: C:\CODESYS\PROJECT\IFMBSP.PRO

元素:PLC_PRG。测试

使用 Intouch 访问变量
与您的项目链接一个 DDE 访问名称 <AccessName>应用程序名称 CODESYS 和 DDE 主题名称 C:
\CODESYS\PROJECT\IFMBSP.PRO.
现在,您可以将 DDE 类型变量与访问名称 <AccessName> 相关联。输入变量的名称作为项目名称(例
如,PLC_PRG.测试)。

8.2DDE 与 GatewayDDE 服务器通信...


GatewayDDE 服务器的处理
GatewayDDE 服务器可以使用在CoDeSys中为项目创建的符号与其他客户端或 PLC 进行通信(请参阅“
项目”、“选项”、“符号配置”)。它可以服务于Excel等应用程序的DDE接口。这允许将PLC的变量值传
输到应用程序,例如用于监控。

在GatewayDDE 服务器启动时,将打开一个窗口,您可以在其中完成启动和通信参数的配置。可以调用
已有的配置文件,也可以重新设置参数。

GatewayDDE 服务器的启动对话框

使 用 命 令“File”“Open”,您可以调用一个已经存在的文件,该文件存储了一组配置参数。将打开用于
选择文件的标准对话框,并提供扩展名为“.cfg”的可用文件。如果选择了配置文件,则会显示配置参数和
定义的目标设备

如果激活了“文件”“自动加载”选项,则 GatewayDDE 服务器将自动打开该配置,该配置在服务器上次


终止之前处于活动状态。
如果服务器在没有任何预定义配置且没有设置自动加载的情况下启动,则在配置窗口中显示“网关:”和“
设备:”。然后,您必须设置一个新配置。

命令“ 文 件 ”“设置”打开对话框“服务器设置”,其中可以设置以下参数:

8-2 CoDeSysV2.3版本
8 -DDE 接口

用于配置 GatewayDDE 服务器的对话框

摩托罗拉字节顺序 使用摩托罗拉字节顺序
检查身份 会检查,符号文件给出的项目ID是否相同
作为存储在 PLC 中的。
更新率[ms] 从 PLC 读取所有符号值的时间间隔。
超时[ms] 所用驱动程序的通信超时。
尝试 通信驱动程序传输数据块的重试次数(不是
所有驱动程序都支持!

要设置与网关的连接,通过命令“在线”“参数”打开“通信参数”对话框。它与您在CoDeSys中使用命令“
在线”、“通信参数”获得的对话框相同。您在此处执行的设置必须与相应的CoDeSys项目中的设置相同。

GatewayDDE 服务器的实际配置可以通过命令“文件”“保存”存储在文件中。将打开用于保存文件的标
准对话框,文件的默认扩展名为 *.cfg。
要使网关处于活动模式,请通过命令“Online”“Login”登录。(届时状态栏中的网关符号将变亮。登录
时,将建立所需的连接,并且可以访问可用的符号。这些一定是之前在CoDeSys项目中创建的!

要注销,请使用命令“在线注销”。

数据的一般方法
DDE 查询可分为三个部分:
1. 程序名称
2. 文件名
3. 要读取的变量名称
程序名称:GatewayDDEServer
文件名:应从中读取变量的项目名称(例如 example.pro)。
变量名称:变量在 Watch-andRecipeManager 中显示的名称。

可以读取哪些变量?
可以读取所有变量。变量应以观察和配方管理器中使用的格式输入。注意直接地址无法读取!

例子:

PLC_PRG。测试 (* 从 POUPLC_PRG*)中读取变量 TEST)


.球Var1 (* 读取全局变量 GlobVar1*)

CoDeSysV2.3版本 8-3
DDE 与 GatewayDDE 服务器通信...

使用 WORD 链接变量
在 WORD 中激活查询之前,请启动 GatewayDDEServer。
为了在 MicrosoftWORD 中通过 DDE 接口从 POUPLC_PRG获取变量 TEST 的当前值,必须在 WORD
中插入一个字段(例如,日期)('Insert'“Field”)。现在,当您用鼠标右键单击字段并选择命令“切换字
段代码”时,您可以更改所选文本的字段功能。在我们的示例中,如下所示:

{ DDEAUTO GATEWAYDDESERVER “BSP.PRO” “PLC_PRG. 测 试 “ }


再次用鼠标右键单击该字段,然后单击“更新字段”,所需的变量内容将出现在文本中。

使用 EXCEL 链接变量
在 EXCEL 中激活查询之前,请启动 GatewayDDEServer。
必须先在 MicrosoftEXCEL 中输入以下内容,然后才能将变量分配给单元格。
=GATEWAYDDESERVER|<文件名>!<variablename>

例:

=GATEWAYDDESERVER|'bsp.pro'!PLC_PRG。测试'
当您单击“编辑”然后单击“链接”时,此链接的结果将是:
类型:CODESYS

源文件: C:\CODESYS\PROJECT\IFMBSP.PRO

元素:PLC_PRG。测试

{ DDEAUTO GATEWAYDDESERVER “BSP.PRO” “PLC_PRG. 测 试 “ }

GatewayDDEServer 的命令行选项
如果 GatewayDDE 服务器是通过命令行启动的,则可以附加以下选项:

/n 启动时不会自动显示信息对话框

/s 显示对话框窗口/s=h 否/s=i
最小化(图标)/s=m
最大化 /s=n 正常

/c 要自动加载的配置文件 l/c=<config- 文件>

/o 使用所选配置联机(自动加载或由“/c=”定义)

例:
命令行:
网关right/s=i/c=“D:\DDE\conf_1.cfg”
GatewayDDE 服务器将启动,对话窗口将显示为图标,存储在文件 conf_1.cfg 中的配置将被加载。

8-4 CoDeSysV2.3版本
9 -CoDeSys 中的许可证管理

9CoDeSys 中的许可证管理

9.1 许可证管理器
3S 许可证管理器可用于在计算机上处理 3S 模块的许可证,以及为其提供相应许可证信息文件的模块的
许可证。在CoDeSys中,您可以创建一个项目并将其作为许可库提供。许可管理器将自动与任何需要许
可证的 3S 模块一起安装。

另请参阅:
随 3S 许可管理器提供的单独文档
在 CoDeSys 中创建许可库,第 9.1.1 章。

9.1.1 在 CoDeSys 中创建许可库


众所周知,CoDeSys 项目可以保存为库。如果要创建许可库,则必须添加相应的许可证信息。为此,请
执行命令“文件”另存为...“,选择数据类型”内部库“或”外部库“,然后按按钮编辑许可证信息...。

在 “ 编辑许可 信息 ” 对话框中,输入下述信息。许可证信息将添加到 “ 项目信息 ” 中。稍后将库包含在


CoDeSys 项目中时,可以在库管理器中库的对象属性对话框中检查许可证信息。

对话框:编辑许可信息

常 :
名称:输入库模块的名称,用于在3S 许可管理器中表示该模块。此输入是必需的。

CoDeSysV2.3版本 9-1
许可证管理器

供应商 ID:99990101000000+00'00'制造商标识符,具体取决于制造商特定的许可管理工具。

演示模式:如 果 模 块 应 在 演 示 模 式 下 可 用 , 则 激 活 此 选 项 , 这 意 味 着 无 需 任 何 许 可 证ID。输入“演示许
可证”到期的天数。天数将自动四舍五入到下一个可以被十整除的数字(10、20、30...如果模块可以不受
时间限制地使用,请输入“无限制”(在选择列表中可用)。

目标:在此处输入许可证应有效的目标系统的目标 ID。多个输入必须用逗号或分号分隔。可以插入多个
ID,用分号分隔,或作为范围。示例:“12;15-19;21 英寸

联系:
通过电话获得许可:/通过邮件获得许可:在此处插入许可证提供商的电话号码或电子邮件地址。这些输
入是必需的。

可选信息:
在右侧窗口中,您可以输入引用左侧窗口中当前标记的项目的文本:描述、制造商、供应商、定价信息

请注意:
1.使用密码保护已提供许可信息的库是合理的。如果您要在没有密码的情况下保存项目,您将被一个消
息框指向它。

2.3S库的许可信息与库一起存储在库内部,一旦库被纳入项目,就会自动注册到电脑上。但是,非 3S
提供的模块的许可证信息必须以兼容的 XML 格式在单独的描述文件中提供,该文件可由 3S 许可管理器
读取。为此,另请参阅 3SLicensingManager 上的单独文档。

9-2 CoDeSysV2.3版本
10 - 附录

10 附录

附录 A:IEC 运算符和其他规范扩展功能

CoDeSys支持所有IEC运营商。与标准函数(参 附录D,标准库)相比,这些运算符在整个项目中被隐
式识别。除了IEC运算符外,CoDeSys还支持以下标准未规定的运算符:INDEXOF和SIZEOF(参 算
术运算符)、ADR和BITADR(参 地址运算符)。

运算符的使用方式类似于 POU 中的函数。

注意:在使用浮点变量的操作中,结果取决于当前使用的目标系统!

算术运算符
位字符串运算符
位移运算符
选择运算符
比较运算符
地址运算符
呼叫运营商
类型转换
数字运算符

10.1 算术运算符...

添加以下类型的变量:BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、
REAL 和 LREAL。
两个 TIME 变量可以(例如, 也 是 添加 一起 导致 在 另一个 时间
t#45s+t#50s=t#1m35s)
IL 中的示例:
LD 7 添 加 2,4,7 ST Var1

ST中的示例:
变 量 1 : = 7+2+4+7;
FBD 中的示例:

CoDeSysV2.3版本 10-1
附录 A: -IEC 运算符和附加规范扩展功能

穆尔
类型变量的乘法:BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、
UDINT、REAL 和 LREAL。
IL 中的示例:
LD 7 MUL 2,4,7 ST Var1

ST中的示例:
变 量 1 : = 7*2*4*7;
FBD 中的示例:


从另一种类型中减去一个变量:BYTE、WORD、DWORD、SINT、USINT、INT、
UINT、DINT、UDINT、REAL 和 LREAL。
也可以从另一个 TIME 变量中减去一个 TIME 变量,从而得到第三个 TIME 类型变量。请注意,负 TIME
值是未定义的。
IL 中的示例:
LD 7 SUB 2 ST Var1

ST中的示例:
变 量 1 : = 7-2;
FBD 中的示例:

DIV公司
将一个变量除以另一种类型:BYTE、WORD、DWORD、SINT、USINT、INT、UINT、
DINT、UDINT、REAL 和 LREAL。
IL 中的示例:
LD8DIV2STVar1 (* 结果为 4*)

ST中的示例:
变 量 1 : = 8/2;
FBD 中的示例:

注意:如果在项目中定义函数 这 名字 CheckDivByte, CheckDivWord,


CheckDivDWord和CheckDivReal, 如果使用

10-2 CoDeSysV2.3版本
附录 A: -IEC 运算符和附加规范扩展功能

运算符 DIV,例如避免除以 0。这些函数必须具有上面列出的名称。

注意:请注意,不同的目标系统在除以零时的行为可能不同!

请参阅以下函数 CheckDivReal 实现的示例:


函数 CheckDivReal 的实现示例:
FUNCTION CheckDivReal : REAL VAR_INPUT

除数:实数;
END_VAR
如果除数 =0,则 CheckDivReal:=1;

CheckDivReal:=除法;
END_IF;
运算符 DIV 使用函数 CheckDivReal 的输出作为除数。在如下例所示的程序中,这避免了除以 0,除数(
d)设置为 0 到 1。所以除法的结果是 799。

程序PLC_PRG
VAR erg : REAL; v1 : 真 实 : =799; d : 真 实 ;END_VAR erg : = v1/d;

注意:Check.Lib 库提供的 CheckDiv 函数只是示例解决方案!在使用这些库模块之前,请检查它们是否在您的意义


上工作,或者直接在您的项目中作为 POU 实现适当的功能。

国防部
一个变量的模除以另一种类型: BYTE 、 WORD 、 DWORD 、 SINT 、 USINT 、 INT 、 UINT 、 DINT 、
UDINT。此函数的结果将是除法的余数。此结果将是一个整数。

IL 中的示例:
LD9MOD2STVar1 (* 结果为 1*)

ST中的示例:
var1 : = 9 MOD 2;
FBD 中的示例:

移动
将一个变量赋值给另一个适当类型的变量。由于 MOVE 在图形编辑器 LD、CFC 中以框的形式提供,因
此(解锁)EN/EN0 功能也可以应用于变量分配。然而,在FBD编辑器中,这是不可能的。

CFC 与 EN/EN0 功能结合使用的示例:


仅当 en_i 为 TRUE 时,var1 才会分配给 var2。

CoDeSysV2.3版本 10-3
附录 A: -IEC 运算符和附加规范扩展功能

IL 中的示例:
LD 伊瓦尔1
移动
STivar2 (* 结果:ivar2 获取 ivar1 的赋值 *)
(!你得到的结果与以下结果相同:
LDivar1STivar2 )

ST中的示例:
ivar2 := 移动(ivar1);
(!你得到相同的结果: ivar2 :=ivar1; )

索引的
此功能未由标准 IEC61131-3 规定。
执行此功能可查找 POU 的内部索引。
ST中的示例:
var1 := 索引(POU2);

大小的
此功能未由标准 IEC61131-3 规定。
执行此函数以确定给定变量所需的字节数。
IL 中的示例:
arr1 : ARRAY[0..4] 的 INT;Var1 INT LD arr1

大小的
STVar1 (* 结果为 10*)
ST中的示例:
var1 := 大小(arr1);

10.2 位字符串运算符...

位操作数的按位 AND。操作数的类型应为 BOOL、BYTE、WORD 或 DWORD。
IL 中的示例:
Var1 字节 LD2#1001_0011 和 2#1000_1010STVar1(* 结果为 2#1000_0010*)

ST中的示例:
var1 :=2#1001_0011 和2#1000_1010
FBD 中的示例:

10-4 CoDeSysV2.3版本
附录 A: -IEC 运算符和附加规范扩展功能

注 如果您在 SFC 中有一个程序步骤,如下所示


意:

如果您使用 68xxx 生成器,请注意以下几点:将 AND 算子模块中第二个输入变量的值分配给变量 z 将


不会执行!这是由于在输入变量的值为 FALSE 的情况下,SFC 中的优化处理。


位操作数的按位 OR。操作数的类型应为 BOOL、BYTE、WORD 或 DWORD。
IL 中的示例:
var1 :字节;
LD2#1001_0011 或 2#1000_1010STvar1 (* 结果为 2#1001_1011*)

ST中的示例:
变量 1 :=2#1001_0011 或2#1000_1010
FBD 中的示例:

注意:如果您在 SFC 中有一个程序步骤,如下所示

如果您使用 68xxx 生成器,请注意以下几点:将 OR 操作模块的第二个输入变量的值分配给变量 z 将不


会执行!这是由于在输入变量的值为 FALSE 的情况下,SFC 中的优化处理。

异或
位操作数的按位异或。操作数的类型应为 BOOL、BYTE、WORD 或 DWORD。
注意:以扩展形式看待 XOR 函数的行为,这意味着如果有 2 个以上的输入。输入将成对检查,然后再次成对比较特
定结果(这符合标准,但可能不是用户期望的)。

IL 中的示例:
Var1 :字节;LD2#1001_0011XOR2#1000_1010STVar1 (* 结果为 2#0001_1001*)

ST中的示例:
变量 1 :=2#1001_0011 异或2#1000_1010
FBD 中的示例:

CoDeSysV2.3版本 10-5
附录 A: -IEC 运算符和附加规范扩展功能


按位 NOT 位操作数。操作数的类型应为 BOOL、BYTE、WORD 或 DWORD。
IL 中的示例:
Var1 :字节;LD2#1001_0011 不是 STVar1 (* 结果是 2#0110_1100*)

ST中的示例:
Var1 := 不是2#1001_0011
FBD 中的示例:

10.3 位移算子...
注意: 请注意,算术运算的位数由输入变量!的数据类型来假设。如果输入变量是常量,则考虑最小的可能数
据类型。输出变量的数据类型对算术运算完全没有影响。

SHL公司
操作数的按位左移:erg:=SHL (in, n)
in 向左移动 n 位。如果 n>数据类型宽度,则对于 BYTE,WORD 和 DWORD 将填充零。但是,如果使
用有符号数据类型,例如INT,那么在这种情况下将执行算术移位,这意味着它将被最顶层位的值填充。

注意:请参阅以下示例中的十六进制表示法,尽管输入变量 in_byte 和 in_word 的值相同,但根据输入变量(BYTE


或 WORD)的数据类型,erg_byte 和 erg_word 会获得不同的结果。

ST中的示例:
程序shl_stVARin_byte : BYTE:=16#45;in_word:字:=16#45;erg_byte:字节;erg_word : WORD;n:字节:=2;END_VARerg_byte:
=SHL(in_byte,n);(* 结果为 16#14*) erg_word:=SHL(in_word,n);(* 结果是 16#01141*)

FBD 中的示例:

IL 中的示例:
接 线 端 子 LD 16#45 SHL 2 ST erg_byte

10-6 CoDeSysV2.3版本
附录 A: -IEC 运算符和附加规范扩展功能

SHR(英语:SHR)
操作数的按位右移:erg:=SHR (in, n)
in 向右移动了 n 位。如果 n>数据类型宽度,则对于 BYTE,WORD 和 DWORD 将填充零。但是,如果
使用有符号数据类型,例如 INT,那么在这种情况下将执行算术移位,这意味着它将被最顶层位的值填
充。
请参阅以下十六进制表示法的示例,以注意根据输入变量类型(BYTE 或 WORD)进行算术运算的结
果。
ST中的示例:
程序shr_stVARin_byte : BYTE:=16#45;in_word:字:=16#45;erg_byte:字节;erg_word : WORD;n:字节:
=2;END_VARerg_byte:=SHR(in_byte,n);(* 结果为 11*) erg_word:=SHR(in_word,n);(* 结果是 0011*)

FBD 中的示例:

IL 中的示例:
LD 16#45 SHR 2 ST erg_byte

ROL的
操作数向左按位旋转:erg:=ROL (in, n)
erg、in 和 n 的类型应为 BYTE、WORD 或 DWORD。in 将向左移动一个位位置 n 次,而最左边的位将
从右侧重新插入。
在以下示例中,尽管输入变量 in_byte 和 in_word 的值相同,但根据输入变量(BYTE 或 WORD)的数
据类型,erg_byte 和 erg_word 会得到不同的结果。

ST中的示例:
程序rol_stVARin_byte : BYTE:=16#45;in_word:成为:=16#45;erg_byte:字节;erg_word :成为;n:字节:
=2;END_VARerg_byte:=角色(in_byte,n);(* 结果为 16#15*) erg_word:=ROLE(in_word,n);(*结果是
16#0114*)

FBD 中的示例:

IL 中的示例:
LD 16#45
ROL 2 ST

CoDeSysV2.3版本 10-7
附录 A: -IEC 运算符和附加规范扩展功能

erg_byte

罗尔
操作数向右按位旋转:erg=ROR (in, n)
erg、in 和 n 的类型应为 BYTE、WORD 或 DWORD。in 将向右移动一个位位置 n 次,而最左边的位将
从左侧重新插入。
在以下示例中,尽管输入变量 in_byte 和 in_word 的值相同,但根据输入变量(BYTE 或 WORD)的数
据类型,erg_byte 和 erg_word 会得到不同的结果。

ST中的示例:
程序ror_stVARin_byte : BYTE:=16#45;in_word:字:=16#45;erg_byte:字节;erg_word : WORD;n:字节:=2;END_VARerg_byte:
=ROR(in_byte,n);(* 结果是 16#51*) erg_word:=ROR(in_word,n);(* 结果是 16#4011*)

FBD 中的示例:

IL 中的示例:
LD 16#45 ROR 2 ST erg_byte

10.4 选择运算符
所有选择操作也可以使用变量执行。为了清楚起 ,我们将示例限制为以下使用常量作为运算符的示例。

SEL公司
二元选择。
OUT :=SEL(G, IN0, IN1)表示:
OUT :=IN0 如果 G=FALSE;OUT :=IN1 如果 G=TRUE。

IN0、IN1 和 OUT 可以是任何类型的变量,G 必须是 BOOL。如果 G 为 FALSE,则选择结果为 IN0,如


果 G 为 TRUE,则选择结果为 IN1。

IL 中的示例:
LDTRUESEL3,4 (*IN0=3, IN1=4
*) STVar1 (* 结果为 4*)

LDFALSESEL3,4STVar1 (* 结果为 3*)

10-8 CoDeSysV2.3版本
附录 A: -IEC 运算符和附加规范扩展功能

ST中的示例:
变量1:=SEL(TRUE,3,4);(* 结果为 4*)
FBD 中的示例:

注意:请注意,如果 IN0 为 TRUE,则不会处理在 IN1 或 IN2 之前出现的表达式。

麦克斯
最大功能。返回两个值中的较大值。
输出:=MAX(IN0, IN1)
IN0、IN1 和 OUT 可以是任何类型的变量。
IL 中的示例:
LD90MAX30MAY40MAX77STVar1 (* 结果为 90*)

ST中的示例:
变量1:=MAX(30,40);(* 结果是 40*)Var1:=MAX(
40,MAX(90,30));(* 结果是 90*)

FBD 中的示例:

最小值
最小功能。返回两个值中的较小值。
输出:=MIN(IN0, IN1)
IN0、IN1 和 OUT 可以是任何类型的变量。
IL 中的示例:
LD90 分钟 30 分钟 40 分钟 77STVar1 (* 结果为 30*)

ST中的示例:
变量1:=分钟(90,30);(* 结果为 30*);Var1:=MIN(
MIN(90,30),40);(* 结果为 30*);

FBD 中的示例:

CoDeSysV2.3版本 10-9
附录 A: -IEC 运算符和附加规范扩展功能

限制
限制
OUT :=LIMIT(Min, IN, Max)表示:
输出:= 最小值(最大值(英寸,最小值),最大值)
Max 是结果的上限,Min 是结果的下限。如果 IN 值超过上限 Max,则 LIMIT 将返回 Max。如果 IN 低于
Min,则结果为 Min。
IN 和 OUT 可以是任何类型的变量。
IL 中的示例:
LD90 限制 30,80STVar1 (* 结果为 80*)

ST中的示例:
变量 1:=限制(30,90,80);(* 结果为 80*);
FBD 中的示例:

多路复用器
复用
OUT :=MUX(K, IN0,...,INn)表示:
输出:= 墨水。
IN0、...、INn 和 OUT 可以是任何类型的变量。K 必须是 BYTE、WORD、DWORD、SINT、USINT、
INT、UINT、DINT 或 UDINT。MUX 从一组值中选择第 K 个值。
IL 中的示例:
LD0MUX30,40,50,60,70,80STVar1 (* 结果为 30*)

ST中的示例:
Var1:=多路复用器(0,30,40,50,60,70,80);(* 结果为 30*);

请注意:在INK以外的输入之前出现的表达式将不会被处理以节省运行时间!只有在模拟模式下,才会执行所有表达
式。

10-10 CoDeSysV2.3版本
附录 A: -IEC 运算符和附加规范扩展功能

10.5 比较运算符...
燃气轮机
大于
一个布尔运算符,当第一个操作数的值大于第二个操作数的值时,该运算符返回值 TRUE。操作数可以是
BOOL、BYTE、WORD、DWORD、SINT、USINT、INT、UINT、
DINT、UDINT、REAL、LREAL、TIME、DATE、TIME_OF_DAY、DATE_AND_TIME和字符串。
IL 中的示例:
LD20GT30STVar1 (* 结果为 FALSE*)

ST中的示例:
VAR1 : = 20 > 30 > 40 > 50 > 60 > 70;
FBD 中的示例:

LT系列
小于
一个布尔运算符,当第一个操作数的值小于第二个操作数的值时,该运算符返回值 TRUE。操作数可以是
BOOL、BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、
UDINT、REAL、LREAL、TIME、DATE、TIME_OF_DAY、DATE_AND_TIME和字符串。
IL 中的示例:
LD20LT30STVar1 (* 结果为 TRUE*)

ST中的示例:
VAR1 : = 20 < 30;
FBD 中的示例:


小于或等于
一个布尔运算符,当第一个操作数的值小于或等于第二个操作数的值时,该运算符返回值 TRUE。操作数
可以是 BOOL、BYTE、WORD、DWORD、SINT、USINT、INT、
UINT、DINT、UDINT、REAL、LREAL、TIME、DATE、TIME_OF_DAY、DATE_AND_TIME和字符串。
IL 中的示例:
LD20LE30STVar1 (* 结果为 TRUE*)

CoDeSysV2.3版本 10-11
附录 A: -IEC 运算符和附加规范扩展功能

ST中的示例:
VAR1 : = 20 <= 30;
FBD 中的示例:

通用电气
大于或等于
一个布尔运算符,当第一个操作数的值大于或等于第二个操作数的值时,该运算符返回值 TRUE。操作数
可以是 BOOL、BYTE、WORD、DWORD、SINT、USINT、INT、
UINT、DINT、UDINT、REAL、LREAL、TIME、DATE、TIME_OF_DAY、DATE_AND_TIME和字符串。
IL 中的示例:
LD60GE40STVar1 (* 结果为 TRUE*)

ST中的示例:
VAR1 : = 60 >= 40;
FBD 中的示例:

情商
等于
一个布尔运算符,当操作数相等时返回值 TRUE。操作数可以是
BOOL、BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、REAL、LREAL、
TIME、DATE、TIME_OF_DAY、DATE_AND_TIME和字符串。
IL 中的示例:
LD40EQ40STVar1 (* 结果为 TRUE*)

ST中的示例:
VAR1 : = 40 = 40;
FBD 中的示例:

东北
不等于
一个 Boolean 运算符,当操作数不相等时返回该值 TRUE。操作数可以
是 BOOL、BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT、UDINT、REAL、
LREAL、TIME、DATE、TIME_OF_DAY、DATE_AND_TIME 和 STRING。

10-12 CoDeSysV2.3版本
附录 A: -IEC 运算符和附加规范扩展功能

IL 中的示例:
LD40NE40STVar1 (* 结果为 FALSE*)

ST中的示例:
VAR1 : = 40 <> 40;
FBD 中的示例:

10.6 地址运算符...
注意:在线更改后,某些地址的数据可能会发生变化。在地址上使用指针时,请注意这一
点。

ADR(美国存托凭证)
标准 IEC61131-3 未规定的地址功能。
ADR 在 DWORD 中返回其参数的地址。此地址可以发送到制造函数以被视为指针,也可以分配给项目中
的指针。
dwVar:=ADR(bVAR);
IL 中的示例:
LD bVar ADR ST dwVar man_fun1

阿德林斯特
地址功能,未由标准IEC61131-3规定。
功能块实例中的 ADRINST 以 DWORD 形式返回实例的地址。然后,可以将此地址发送到函数并在那里
被视为指针,也可以将其分配给项目中的指针。

ST 中的示例(在功能块实例中):
dvar:=阿德林斯特();(* 在变量 dvar 上写入实例的地址 *) fun(a:=ADRINST());(* 给出
实例地址以输入函数 fun 的 a*)
IL 中的示例:
阿德林斯特
ST dvar
阿德林斯特
乐趣

比塔德尔
地址功能,标准IEC61131-3未规定。
BITADR 在 DWORD 中返回段内的位偏移量。请注意,偏移值取决于目标设置中的选项字节寻址是否被
激活。
VAR值

VAR1 在 %IX2.3:BOOL;bitoffset:DWORD;

END_VAR

CoDeSysV2.3版本 10-13
附录 A: -IEC 运算符和附加规范扩展功能

ST中的示例:
位偏移:=BITADR(var1);(* 如果字节寻址=TRUE:19,则为字节寻址=FALSE:35*的结果)

IL 中的示例:
LD变量1
比塔德尔
ST Var2

内容运营商
可以通过在指针标识符后添加内容运算符“^”来取消引用指针。
ST中的示例:
PT:指向 INT 的指针;
var_int1:INT;var_int2:INT;点:=ADR(var_int1);var_int2:=pt^;

10.7 呼叫运营商...
卡尔
调用功能块或程序
在 IL 中使用 CAL 调用功能块实例。将用作输入变量的变量位于功能块实例名称后面的括号中。

例:
从输入变量Par1和Par2分别为 0 和TRUE的功能块调用实例Inst。

CALINST(PAR1 :=0, PAR2 :=TRUE)

10.8 类型转换...
禁止从“较大”类型隐式转换为“较小”类型(例如,从 INT 转换为 BYTE 或从 DINT 转换为 WORD)。如
果要这样做,则需要特殊的类型转换。基本上可以从任何基本类型转换为任何其他基本类型。

语法:
<哎呀。类型1>_TO_<elem。类型2>
请注意...TO_STRING转换中,字符串是左对齐生成的。如果定义为短路,则将从右侧切开。

BOOL_TO转换
从BOOL类型转换为任何其他类型:
对于数字类型,当操作数为 TRUE 时,结果为 1,当操作数为 FALSE 时,结果为 0。
对于 STRING,类型为“TRUE”或“FALSE”。
IL 中的示例:

LDTRUE(*结果为 1*)
BOOL_TO_INT
ST i

10-14 CoDeSysV2.3版本
附录 A: -IEC 运算符和附加规范扩展功能

LD TRUE BOOL_TO_STRING ST str (*结果为“TRUE”*)

LD TRUE BOOL_TO_TIME ST t (*结果是 T#1ms*)

LD 真 BOOL_TO_TOD ST (*结果是 TOD#00:00:00.001*)

LD FALSE BOOL_TO_DATE ST dat (*结果为 D#1970-01-01*)

LD TRUE BOOL_TO_DT ST dandt (*结果是 DT#1970-01-01-00:00:01*)

ST中的示例:

i:=BOOL_TO_INT(真); (* 结果为 1*)

str:=BOOL_TO_STRING(真); (* 结果为“TRUE”*)

t:=BOOL_TO_TIME(真); (* 结果是 T#1ms*)

df:=BOOL_TO_TOD(真); (* 结果是 TOD#00:00:00.001*)

dat:=BOOL_TO_DATE(假); (* 结果是 D#1970*)

dandt:=BOOL_TO_DT(真); (* 结果是 DT#1970-01-01-00:


00:01*)

FBD 中的示例:

(*结果为 1*)

(*结果为“TRUE”*)

(*结果是 T#1ms*)

(*结果是 TOD#00:00:00.001*)

(*结果为 D#1970-01-01*)

(*结果是 DT#1970-01-01-00:00:01*)

TO_BOOL转换
从另一种变量类型到 BOOL 的转换:
当操作数不等于 0 时,结果为 TRUE。当操作数等于 0 时,结果为 FALSE。

CoDeSysV2.3版本 10-15
附录 A: -IEC 运算符和附加规范扩展功能

当操作数为“TRUE”时,STRING 类型变量的结果是 true,否则结果为


假。
IL 中的示例:

LD213 (*结果为真 *)
BYTE_TO_BOOL
STb型

LD 0 INT_TO_BOOL ST b (*结果为FALSE*)

LDT#5毫秒 (*结果为真*)
TIME_TO_BOOL
STb型

LD 'TRUE' STRING_TO_BOOL ST b (*结果为真*)

FBD 中的示例:

(*结果为真*)

(*结果为FALSE*)

(*结果为真*)

(*结果为真*)

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*)

整数类型之间的转换
从整数类型到另一种数字类型的转换:
当您执行从较大类型到较小类型的类型转换时,您可能会丢失某些信息。如果要转换的数字超过范围限
制,则将忽略该数字的第一个字节。
ST中的示例:
硅:=INT_TO_SINT(4223);(* 结果是 127*)
如果将整数 4223(16#107f 以十六进制表示)保存为 SINT 变量,则它将显示为 127(16#7f 以十六进制
表示)。
IL 中的示例:
LD 2 INT_TO_REAL MUL

10-16 CoDeSysV2.3版本
附录 A: -IEC 运算符和附加规范扩展功能

FBD 中的示例:

REAL_TO/LREAL_TO转换
从变量类型 REAL 或 LREAL 转换为其他类型:
该值将向上或向下舍入到最接近的整数,并转换为新的变量类型。变量类型 STRING、BOOL、REAL 和
LREAL 除外。
请注意,在转换为键入 STRING 时,总位数限制为 16。如果(L)REAL-number 有更多数字,则第 16
位将四舍五入。如果将 STRING 的 度定义为 short,则将从右端开始剪切。

当您执行从较大类型到较小类型的类型转换时,您可能会丢失某些信息。
ST中的示例:
i :=REAL_TO_INT(1.5);(* 结果是 2*)
j :=REAL_TO_INT(1.4);(* 结果为 1*)
i :=REAL_TO_INT(-1.5);(* 结果为 -2*)
j :=REAL_TO_INT(-1.4);(* 结果为 -1*)
IL 中的示例:
LD 2.7 REAL_TO_INT GE %MW8

FBD 中的示例:

TIME_TO/TIME_OF_DAY 转换
从变量类型 TIME 或 TIME_OF_DAY 转换为其他类型:
时间将以毫秒为单位存储在 DWORD 内部(对于TIME_OF_DAY变量,从凌晨 12:00 开始)。然后,
此值将被转换。
当您执行从较大类型到较小类型的类型转换时,您可能会丢失某些信息
对于 STRING 类型变量,结果是一个时间常量。
IL 中的示例:

LDT#12ms (*结果为'T#12ms'*)
TIME_TO_STRING
ST公司

LDT#300000毫秒 (*结果为 300000*)


TIME_TO_DWORD
ST dw

LD TOD#00 : 00 : 00.012 (*结果为 12*)


TOD_TO_SINT ST si

ST中的示例:

str :=TIME_TO_STRING(T#12毫秒); (* 结果是 T#12ms*)

dw:=TIME_TO_DWORD(T#5m); (* 结果是 300000*)

si:=TOD_TO_SINT(TOD#00:00:00.012); (* 结果是 12*)

CoDeSysV2.3版本 10-17
附录 A: -IEC 运算符和附加规范扩展功能

FBD 中的示例:

DATE_TO/DT_TO转换
从变量类型 DATE 或 DATE_AND_TIME转换为其他类型:
自 1970 年 1 月 1 日起,该日期将以秒为单位存储在 DWORD 内部。然后,此值将被转换。

当您执行从较大类型到较小类型的类型转换时,您可能会丢失某些信息
对于 STRING 类型变量,结果是日期常量。
IL 中的示例:

LDD#1970-01-01 (* 结果为 FALSE*)


DATE_TO_BOOL
STb型

LD D#1970-01-15 * 结果为 29952*)


DATE_TO_INTSTi (

LDDT#1970-01-15-05:05:05 (* 结果是 129*)


DT_TO_BYTE
ST byt

LD DT#1998-02-13-14 : 20 果为“DT#1998-02-13-14:20”*)
DT_TOSTRINGSTstr (* 结

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”*)

FBD 中的示例:

10-18 CoDeSysV2.3版本
附录 A: -IEC 运算符和附加规范扩展功能

STRING_TO转换
从变量类型 STRING 转换为其他类型:
STRING 类型变量的操作数必须包含在目标变量类型中有效的值,否则结果将为 0。

IL 中的示例:

LD'TRUE' (* 结果为 TRUE*)


STRING_TO_BOOL
STb型

LD 'abc34' (* 结果为 0*)


STRING_TO_WORD
ST w

LD 't#127ms' (* 结果是 T#127ms*)


STRING_TO_TIME
ST 吨

ST中的示例:

b :=STRING_TO_BOOL('真'); (* 结果为 TRUE*)

w :=STRING_TO_WORD('abc34'); (* 结果为 0*)

t :=STRING_TO_TIME('T#127毫秒'); (* 结果是 T#127ms*)

FBD 中的示例:

TRUNC (特伦克)
从 REAL 转换为 INT。将使用该值的整数部分。
当您执行从较大类型到较小类型的类型转换时,您可能会丢失某些信息。
IL 中的示例:
LD 2.7 TRUNC GE %MW8

ST中的示例:
i:=TRUNC(1.9);(* 结果为 1*) i:
=TRUNC(-1.4);(* 结果为 -1*)。

CoDeSysV2.3版本 10-19
附录 A: -IEC 运算符和附加规范扩展功能

10.9 数字运算符...
ABS公司
返回数字的绝对值。ABS(-2)等于 2。
输入和输出变量的以下类型组合是可能的:

在 外

国际 INT、REAL、WORD、DWORD、DINT
真正 真正
字节 INT、REAL、BYTE、WORD、DWORD、DINT
词 INT、REAL、WORD、DWORD、DINT
DWORD 真实、DWORD、DINT
正弦 真正
USINT公司 真正
UINT(英语:UINT)
INT、REAL、WORD、DWORD、DINT、UDINT、UINT

力 真实、DWORD、DINT
乌丁特 REAL、DWORD、DINT、UDINT

IL 中的示例:
LD-2ABSSTi (* 结果为 2*)

ST中的示例:
i:=ABS(-2);
FBD 中的示例:

SQRT的
返回数字的平方根。
IN 可以是类型 BYTE、WORD、DWORD、INT、DINT、REAL、SINT、USINT、UINT、UDINT,OUT
必须是 REAL 类型。
IL 中的示例:
LD16SQRTSTq (* 结果为 4*)

ST中的示例:
q:=SQRT(16);
FBD 中的示例:

10-20 CoDeSysV2.3版本
附录 A: -IEC 运算符和附加规范扩展功能


返回数字的自然对数。
IN 可以是类型 BYTE、WORD、DWORD、INT、DINT、REAL、SINT、USINT、UINT、UDINT,OUT
必须是 REAL 类型。
IL 中的示例:
LD45LNSTq (* 结果为 3.80666*)

ST中的示例:
q:=LN(45);
FBD 中的示例:

日志
返回以 10 为基数的数字的对数。
IN 可以是类型 BYTE、WORD、DWORD、INT、DINT、REAL、SINT、USINT、UINT、UDINT,OUT
必须是 REAL 类型。
IL 中的示例:
LD314.5LOGSTq (* 结果为 2.49762*)

ST中的示例:
q:=日志(314.5);
FBD 中的示例:

经验值
返回指数函数。
IN 可以是类型 BYTE、WORD、DWORD、INT、DINT、REAL、SINT、USINT、UINT、UDINT,OUT
必须是 REAL 类型。
IL 中的示例:
LD2EXPSTq (* 结果为 7.389056099*)

ST中的示例:
q:=EXP(2);
FBD 中的示例:

CoDeSysV2.3版本 10-21
附录 A: -IEC 运算符和附加规范扩展功能


返回数字的正弦值。
输入值 IN 以拱分钟为单位计算。它可以是 BYTE、WORD、DWORD、INT、DINT、
REAL、SINT、USINT、UINT、UDINT。OUT 必须是 REAL 类型。
IL 中的示例:
LD0.5SINSTq (* 结果为 0.479426*)

ST中的示例:
q:=正弦(0.5);
FBD 中的示例:

因为
返回 number 的余弦值。结果以拱分钟为单位计算。
IN 可以是类型 BYTE、WORD、DWORD、INT、DINT、REAL、SINT、USINT、UINT、UDINT,OUT
必须是类型 TypREAL。
IL 中的示例:
LD0.5COSSTq (* 结果为 0.877583*)

ST中的示例:
q:=COS(0.5);
FBD 中的示例:


返回数字的正切值。该值以拱分钟为单位计算。IN可以是BYTE类型,
WORD、DWORD、INT、DINT、REAL、SINT、USINT、UINT、UDINT、OUT 必须是 REAL 类型。
IL 中的示例:
LD0.5TANSTq (* 结果为 0.546302*)

ST中的示例:
q:=TAN(0.5);
FBD 中的示例:

10-22 CoDeSysV2.3版本
附录 A: -IEC 运算符和附加规范扩展功能

ASIN公司
返回数字的反正弦(正弦的反函数)。.
IN 可以是类型 BYTE、WORD、DWORD、INT、DINT、REAL、SINT、USINT、UINT、UDINT,OUT
必须是 REAL 类型。
IL 中的示例:
LD0.5ASINSTq(* 结果为 0.523599*)

ST中的示例:
q:=ASIN(0.5);
FBD 中的示例:

ACOS公司
返回数字的反余弦(余弦的反函数)。该值以拱分钟为单位计算。

IN 可以是类型 BYTE、WORD、DWORD、INT、DINT、REAL、SINT、USINT、UINT、UDINT,OUT
必须是 REAL 类型。
IL 中的示例:
LD0.5ACOSSTq (* 结果为 1.0472*)

ST中的示例:
q:=ACOS(0.5);
FBD 中的示例:

阿坦
返回数字的反正切值(正切的反函数)。 IN 可以是类型 BYTE 、 WORD 、 DWORD 、 INT 、 DINT 、
REAL、SINT、USINT、UINT、UDINT。结果 OUT 以 arch 分钟为单位计算,并且必须为 REAL 类型。

IL 中的示例:
LD0.5ATANSTq (* 结果为 0.463648*)

ST中的示例:
q:=ATAN(0.5);
FBD 中的示例:

CoDeSysV2.3版本 10-23
附录 A: -IEC 运算符和附加规范扩展功能

经验
一个变量与另一个变量的幂:
输出 =IN1IN2。
IN1 和 IN2 可以是 BYTE、WORD、DWORD、INT、DINT、REAL、SINT、USINT、UINT、UDINT 的
类型,OUT 必须是 REAL 类型。
IL 中的示例:
LD7EXPT2STvar1 (* 结果为 49*)

ST中的示例:
var1 :=EXPT(7,2);
FBD 中的示例:

10.10 初始化运算符
THIS 运算符
INI 运算符可用于初始化 POU 中使用的功能块实例提供的保留变量。

必须将运算符分配给布尔变量。
语法:<boolvariable> :=INI(<FB-instance, TRUE|错误)
如果算子的第二个参数设置为 TRUE,则将初始化功能块 FB 中定义的所有保留变量。

ST 中的示例:fbinst 是功能块 fb 的实例,其中定义了一个保留变量 retvar。

POU中的声明:
fbinst:fb;b:布尔值;

实现部分:
b :=INI(fbinst, TRUE);ivar:=fbinst.retvar (*=>retvar 被初始化
*)
IL 中的运算符调用示例:
LD fbinst
INI TRUE ST b

FBD 中的算子调用示例:

10-24 CoDeSysV2.3版本
附录 B: -CoDeSys 中的操作数

附录 B:CoDeSys 中的操作数
在 CoDeSys 常量中,变量、地址和可能的函数调用可以显示为操作数。

10.11 常量
BOOL 常量
BOOL 常量是逻辑值 TRUE 和 FALSE。

TIME 常量
可以在CoDeSys 中声明 TIME 常量。这些通常用于操作标准库中的定时器。TIME 常量始终由初始“t”或
“T”(或拼写为“time”或“TIME”)和数字符号“#”组成。

接下来是实际时间声明,可以包括天(用“d”标识)、小时(用“h”标识)、分钟(用“m”标识)、秒(
用“s”标识)和毫秒(用“ms”标识)。请注意,时间条目必须按照 度按此顺序给出(d 在 h 之前在 m
之前在 s 之前在 m 之前在 ms 之前),但您不需要包括所有时间增量。

ST 赋值中正确的 TIME 常量示例:

时 间 1 : = T#14ms;
时 间 1 : = T#100S12ms; (*最高组件可能被允许超过其限制*)
时 间 1 : = t#12h34m15s;

以下情况不正确:

时间1 :=t#5m68s;(*在较低的组件中超出了限制*)
时间1 :=15ms;(*缺少 T#*)
时间1 :=t#4ms13d;(*条目顺序不正确*)

DATE 常量
这些常量可用于输入日期。声明 DATE 常量以“d”、“D”、“DATE”或“date”开头,后跟“#”。然后,您可
以输入格式为“年-月-日”的任何日期。
例子:
日期#1996-05-06
D#1972-03-29
(另请参 第 10.15 章数据类型、时间数据类型)

TIME_OF_DAY常量
使用这种类型的常量来存储一天中的时间。 TIME_OF_DAY 声明以 “tod#” 、 “TOD#” 、
“TIME_OF_DAY#”或“time_of_day#”开头,后跟格式为:Hour:Minute:Second的时间。您可以输入
秒作为实数,也可以输入秒的小数部分。

例子:
TIME_OF_DAY#15:36:30.123
托德#00:00:00
(另请参 第 10.15 章数据类型、时间数据类型)

CoDeSysV2.3版本 10-25
附录 B: -CoDeSys 中的操作数

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
(另请参 第 10.15 章数据类型、时间数据类型)

数字常量
数字值可以显示为二进制数、八进制数、十进制数和十六进制数。如果整数值不是十进制数,则必须在整
数常量前面写出其基数,后跟数字符号(#)。十六进制数字中的数字 10-15 的值将一如既往地用字鯦
A-F 表示。

您可以在数字中包含下划线字符。
例子:

14 (十进制数)
2#1001_0011 (双号码)
8#67 (八进制数)
16#A(十六进制数)

这些数字值可以来自变量类型 BYTE、WORD、DWORD、SINT、USINT、INT、
UINT、DINT、UDINT、REAL 或 LREAL。
不允许从“较大”变量类型隐式转换为“较小”变量类型。这意味着 DINT 变量不能简单地用作 INT 变量。
必须使用类型转换。

REAL/LREAL 常量
REAL 和 LREAL 常数可以以十进制分数的形式给出,并以指数表示。使用带有小数点的标准美式格式来
执行此操作。
例:
7.4 而不是 7,41.64e+009 而不是
1,64e+009

STRING 常量
字符串是字符序列。STRING 常量前面和后面都用单引号引起来。您也可以输入空格和特殊字符(例如
变音符号)。他们将像所有其他角色一样受到对待。

在字符序列中,美元符号( $ )后跟两个十六进制数字的组合被解释为八位字符代码的十六进制表示形
式。此外,当以美元符号开头的两个字符的组合出现在字符序列中时,将按如下所示进行解释:

$$ 美元符号
$' 单引号
$L或$l 换行
$N或$n 换行
$P或$p 面提要

10-26 CoDeSysV2.3版本
附录 B: -CoDeSys 中的操作数

$R或$r 换行符
$T或$t 标签

例子:
“w1Wüß?”
'艾比和克雷格':-)'

类型化文本
基本上,在使用 IEC 常量时,将使用尽可能小的数据类型。如果必须使用其他数据类型,则可以借助类
型化文本来实现,而无需显式声明常量。为此,将为常量提供一个前缀,用于确定类型。

其编写方式如下:<Type>#<Literal>
<Type>指定所需的数据类型;可能的条目包括:BOOL、SINT、USINT、BYTE、INT、UINT、WORD、
DINT、UDINT、DWORD、REAL、LREAL。键入必须以大写字鯦书写。
<Literal> 指定常量。输入的数据必须符合 <Type> 下指定的数据类型。

例:
var1:=DINT#34;
如果无法在不丢失数据的情况下将常量转换为目标类型,则会发出错误消息:
类型化文本可以在任何可以使用普通常量的地方使用。

10.12 变量
变量可以在 POU 的声明部分或全局变量列表中本地声明。
请注意:在项目中,您可以定义一个与全局变量同名的局部变量。在这种情况下,在 POU 中,将使用本地定义的变
量。但是,不允许以相同的方式命名两个全局变量。例如,如果您在 PLC 配置和全局变量列表中定义了变量
“var1”,您将收到编译器错误。

变量标识符不能包含任何空格或特殊字符,不能多次声明,并且不能与任何关键字相同。无法识别大小
写,这意味着 VAR1、Var1 和 var1 都是相同的变量。下划线字符在标识符中被识别(例如,“A_BCD”
和“AB_CD”被视为两个不同的标识符)。标识符在一行中不能有多个下划线字符。标识符的 度以及其
中有意义的部分是无限的。

变量可以在声明类型允许的任何位置使用。
您可以通过输入助手访问可用变量。

系统标志
系统标志是隐式声明的变量,在每个特定PLC上都不同。要找出系统中可用的系统标志,请使用命令“插
入”“操作数”弹出“输入助手”对话框,选择“系统变量”类别。

访问数组、结构和 POU 的变量。


可以使用以下语法访问二维数组组件:
<字段名称>[index1,index2]
可以使用以下语法访问结构变量:
<结构名称>.<变量名>

CoDeSysV2.3版本 10-27
附录 B: -CoDeSys 中的操作数

可以使用以下语法访问功能块和程序变量:
<functionblockname>.<variablename>

对变量中的位进行寻址
在整数变量中,可以访问单个位。为此,要寻址的位的索引被附加到变量中,并用点分隔。位索引可以由
任何常量给出。索引是从 0 开始的。

请注意:不允许在直接变量中进行 Bitaccess。

例:
a :整数;
b :布尔值;...
a. : = b;
变量 a 的第三位将设置为变量 b 的值。
如果索引大于变量的位宽,则会发出以下错误消息:索引“<n>”超出了变量“<var>”的有效范围!

可以使用以下变量类型进行位寻址:SINT、INT、DINT、USINT、UINT、UDINT、
字节、成为、DWORD。
如果变量类型不允许,则会发出以下错误消息:“直接索引的数据类型'<type>'无效”

不得将位访问权限分配给 VAR_IN_OUT 变量!

通过全局常量进行比特访问:
如果已声明定义位索引的全局常量,则可以将此常量用于位访问。

请注意:必须激活项目选项“替换常量”(类别 Build)!

请参阅以下示例中对变量或结构变量的 bitaccess:
两个示例的全局变量列表中的声明:

变量使能定义应访问的位:
VAR_GLOBAL常数
启用:int:=2;
END_VAR
示例 1,对整数变量的 Bitaccess:

POU中的声明:
VARxxx:你;

END_VAR
比特访问:

xxx.enable : = 真 ;->变量 xxx 中的第三个第二位将设置为TRUE

示例 2,整数结构组件上的 Bitaccess:

结构 stru1 的声明:
类型 stru1:结构

bvar:布尔值
;rvar:真实
;wvar:

10-28 CoDeSysV2.3版本
附录 B: -CoDeSys 中的操作数

WORD;{bitaccessenable42'启动驱动器'}
END_STRUCT END_TYPE

POU中的声明:
VARx:stru1;

END_VAR
比特访问:
x.enable:=真;
这会将 TRUE 设置为 42。变量 x 中的位。由于 bvar 有 8 位,rvar 有 32 位,因此 bitaccess 将在变量
wvar 的第二位上完成,结果将获得值 4。

注意:如果一个借助全局常量对结构变量执行位访问的变量应该在输入助手、声明窗口的监视和“Intellisense 函数”
中正确显示,请使用pragma{bitaccess},如示例中所示。此外,在声明窗口中的监视期间,您会显示超出相应结构
变量的全局常量:

10.13 地址
地址
通过使用特殊字符序列来直接显示单个内存位置。这些序列是百分号“%”、范围前缀、大小前缀和一个或
多个用空格分隔的自然数的串联。

支持以下范围前缀:

I 输入
Q 输出
M 内存位置

支持以下大小前缀:

X 个比特
无单个位
B 字节(8 位)
W 字(16 位)
D 双字(32 位)

CoDeSysV2.3版本 10-29
附录 B: -CoDeSys 中的操作数

例子:

%QX7.5 和输出位7.5
%Q7.5
%IW215 输入字数215
%QB7 输出字节7
%MD48 内存位置 48 中的双字。
%IW2.5.7.1 取决于 PLC 配置

程序的当前 PLC 配置决定了地址是否有效。


注意: 如果未指定显式单位地址,则将按字节分配布尔值。示例:varbool1AT%QW0 值的变化会影响从 QX0.0 到
QX0.7 的范围。

另 附录A章:IEC运算符和附加范数扩展函数,地址运算符

内存位置
您可以使用任何受支持的大小来访问内存位置。
例如,地址 %MD48 将对内存位置区域(48*4=192)中的字节编号 192、193、194 和 195 进行寻
址。第一个字节的编号为 0。
您可以以相同的方式访问字、字节甚至位:地址 %MX5.0 允许您访问第五个字中的第一位(位通常按字
保存)。
另 附录 A:IEC 运算符和其他规范扩展函数、地址运算符

10.14 主要工作内容
在 ST 中,函数调用也可以显示为操作数。
例:
结 果 : = Fct ( 7 ) + 3;

TIME()函数
此函数返回自系统启动以来经过的时间(基于毫秒)。

数据类型为 TIME。
IL 中的示例:
时间
STsystime (* 结果,例如:T#35m11s342ms*)
ST中的示例:
系统时间:=TIME();
FBD 中的示例:

10-30 CoDeSysV2.3版本
附录 C:-CoDeSys 中的数据类型

附录 C:CoDeSys 中的数据类型

10.15 标准数据类型
编程时可以使用标准数据类型和用户定义的数据类型。每个标识符都分配给一种数据类型,该数据类型决
定了将保留多少内存空间以及它存储的值类型。

布尔值
BOOL类型变量可以被赋予值 TRUE 和 FALSE。将保留 8 位内存空间。

另请参 第 10.11 章,CoDeSys 中的操作数,BOOL 常量

整数数据类型
BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT和UDINT都是整数数据类型
每种不同的数字类型都涵盖不同的值范围。以下范围限制适用于整数数据类型:

类型 下限 上限 内存空间

字节 0 255 8位
词 0 65535 16 位
DWORD字数 0 4294967295 32 位
SINT: -128 127 8位
USINT: 0 255 8位
整数: -32768 32767 16 位
UINT: 0 65535 16 位
力: -2147483648 2147483647 32 位
乌丁特: 0 4294967295 32 位

因此,当较大的类型转换为较小的类型时,信息可能会丢失。
另请参 第 10.11 章 CoDeSys 中的操作数,数字常量

雷亚尔/雷亚尔
REAL和LREAL是所谓的浮点类型。它们必须表示有理数。为 REAL 保留了 32 位内存空间,为 LREAL
保留了 64 位内存空间。
REAL 的有效值:1.175494351e-38 到3.402823466e+38
LREAL 的有效值:2.2250738585072014e-308 到1.7976931348623158e+308
另请参 第 10.11 章 “REAL-/LREAL 常量”

字符串
STRING 类型变量可以包含任何字符串。声明中的大小条目确定应为变量保留多少内存空间。它是指字
符串中的字符数,可以放在括号或方括号中。如果未指定大小,则将使用默认大小 80 个字符。

CoDeSys 中的字符串 度基本不受限制,但字符串函数只能处理 1-255 个字符的字符串!

CoDeSysV2.3版本 10-31
附录 C:-CoDeSys 中的数据类型

包含 35 个字符的字符串声明示例:
str:STRING(35):='这是一个字符串';
另请参 第 10.11 章 CoDeSys 中的操作数,STRING 常量

时间数据类型
数据类型TIME,TIME_OF_DAY( abb.TOD)、日期和DATE_AND_TIME(缩写。DT)像 DWORD 一
样在内部处理。
TIME 和 TOD 中的时间以毫秒为单位,TOD 中的时间从凌晨 12:00 开始。
从 1970 年 1 月 1 日凌晨 12:00 开始,以 DATE 和 DT 为单位给出时间。
请参阅以下用于为时间常数赋值的时间数据格式:

TIME 常数:
始终由首字鯦“t”或“T”(或拼写为“time”或“TIME”)和数字符号“#”组成。
接下来是实际时间声明,可以包括天(用“d”标识)、小时(用“h”标识)、分钟(用“m”标识)、秒(
用“s”标识)和毫秒(用“ms”标识)。请注意,时间条目必须按照 度按此顺序给出(d 在 h 之前在 m
之前在 s 之前在 m 之前在 ms 之前),但您不需要包括所有时间增量。

最大值:49d17h2m47s295ms(4194967295ms)
ST 赋值中正确的 TIME 常量示例:

时 间 1 : = T#14ms;
时 间 1 : = T#100S12ms; (*最高组件可能被允许超过其限制*)
时 间 1 : = t#12h34m15s;

以下情况不正确:

时 间 1 : = t#5m68s; (*在较低的组件中超出了限制*)
时 间 1 : = 15ms; (*缺少 T#*)
时 间 1 : = t#4ms13d; (*条目顺序不正确*)

DATE 常量:
以“d”、“D”、“DATE”或“date”开头,后跟“#”。然后,您可以输入格式为“年-月-日”的任何日期。可能
的值:1970-00-00 到 2106-02-06。
例子:
日期#1996-05-06
D#1972-03-29

TIME_OF_DAY常量,用于存储一天中的时间:
以“tod#”、“TOD#”、“TIME_OF_DAY#”或“time_of_day#”开头,后跟时间,格式为:Hour:Minute:
Second 。秒可以输入为实数,也可以输入秒的小数部分。可能的值: 00 : 00 : 00 之二 23 : 59 :
59.999。

例子:
TIME_OF_DAY#15:36:30.123
托德#00:00:00

10-32 CoDeSysV2.3版本
附录 C:-CoDeSys 中的数据类型

DATE_AND_TIME常量,日期和时间的组合:
以“dt#”、“DT#”、“DATE_AND_TIME#”或“date_and_time#”开头。在日期后加上一个连字符,后跟时
间。可能的值:1970-00-00-00:00:00 到 2106-02-06-06:28:15。
例子:
DATE_AND_TIME#1996-05-06-15:36:30
DT#1972-03-29-00:00:00

10.16 定义的数据类型
数组
支持将一维、二维和三维字段(数组)作为基本数据类型。数组既可以在POU的声明部分定义,也可以
在全局变量列表中定义。数组嵌套最多可以产生 9 个维度( “ARRAY[0..2]OFARRAY[0..3]OF...” )。

语法:
<Field_Name>:数组 [<ll1>.<ul1>,<ll2>..<元素的 <UL2>]。类型>。
ll1、ll2、ll3确定场范围的下限;UL1、UL2 和 UL3 标识上限。限制值必须为整数,并且必须遵循 DINT 值
范围。
例:
Card_game:INT 的数组 [1..13,1..4];

初始化数组:
数组完整初始化的示例:
arr1 : 数 组 [1..5] 的 INT : = 1,2,3,4,5;arr2 : 数 组 [1..2,3..4] 的 INT : = 1,3 ( 7 ) ; ( *
1,7,7,7*的缩写)
arr3 : 数 组 [1..2,2..3,3..4] 的 INT : = 2 ( 0 ) , 4 ( 4 ) , 2,3; (*
0,0,4,4,4,4,2,3*的缩写)
结构体数组的初始化示例:
类型STRUCT1结构

1/1/2 整 数 ;2-int;p3 dword;

END_STRUCT
数组[1..3]的STRUCT1:= (P1:=1,P2:=10,P3:=4723),(P1:=2,P2:=0,P3:=299),(P1:=14,P2:
=5,P3:=112);
Array 的部分初始化示例:
arr1 : 数 组 [1..10] 的 INT : = 1,2;
未预先赋值的元素使用基本类型的默认初始值进行初始化。因此,在上面的示例中,元素 anarray[6] 到
anarray[10] 的初始化为 0。

访问数组组件:v
使用以下语法在二维数组中访问数组组件:
<Field_Name>[索引1,索引2]
例:
Card_game [9,2]

CoDeSysV2.3版本 10-33
附录 C:-CoDeSys 中的数据类型

注意: 如果在项目中定义名为 CheckBounds 的函数,则可以使用它来检查项目中的范围溢出(请参阅第 2.1


章,CoDeSys 中的内容“、”项目的组件“、”函数“)

函数校验边界
如果在项目中定义名为CheckBounds的函数,则可以自动检查数组中是否存在超出范围的错误。函数的
名称是固定的,只能有这个名称。
函数 CheckBounds 的示例:
函 数 CheckBounds : DINT
VAR_INPUT
索引,下,上:DINT;
END_VAR
IF 索引<更低 THEN
CheckBounds :=lower;ELSIF 索
引>上 THENCheckBounds := 上
;ELSECheckBounds := 索引;

END_IF
以下用于测试 CheckBounds 函数的示例程序超出了已定义数组的边界。 CheckBounds 函数允许将值
TRUE 赋值,而不是赋值给位置 A[10] ,而是赋值给其上方仍然有效的范围边界 A[7] 。因此,使用
CheckBounds 函数,可以更正数组边界之外的引用。

函数 CheckBounds 的测试程序:
程序PLC_PRG
VAR值
a: BOOL 的数组[0..7];b:
INT:=10;END_VARa[b]:
=TRUE;

注意:Check.Lib 库提供的 CheckBounds-function 只是一个示例解决方案!在使用该库模块之前,请检查该函数是


否按照项目请求工作,或者直接在项目中将适当的函数作为 POU 实现。

指针
变量或功能块地址在程序运行时保存在指针中。
指针声明的语法如下:
<标识符>: POINTER TO <Datatype/Functionblock>;
A 针可以指向任何数据类型或功能块,甚至可以指向用户定义的类型。
地址运算符 ADR 的功能是将变量或功能块的地址分配给指针。

A 以通过在指针标识符后添加内容运算符“^”来取消引用指针。

请注意:指针是按字节计算的!您可以使用指令 p=p+SIZEOF(p^);,像在 C 编译器中一样对其进行计数。

例:
PT:指向 INT 的指针;
var_int1:INT :=5;var_int2:INT;点:=ADR(var_int1);var_int2:=pt^;(*var_int2 现在是 5*)

10-34 CoDeSysV2.3版本
附录 C:-CoDeSys 中的数据类型

用于在运行时检查指针访问的函数:
为了在运行时检查指针访问,您可以创建检查函数,这些函数将在每次访问指针地址之前自动调用。为
此,相应的功能必须在项目中直接或通过库提供。支持以下功能:

函数CheckPointer或检查指针当前存储的地址是否在有效内存范围内,

FunktionCheckPointerAligned,它暗示了通过检查内存对齐来扩展的 CheckPointer 的功能。

函数必须完全具有上述名称。它们返回用于取消引用指针的地址,因此充其量是作为第一个输入参数传递
的地址(下面所示的示例中的 dwAddress)。

请参阅以下 CheckPointerAligned 函数示例,其中的输入参数由 check 函数处理。(参数名称也是示


例)。CheckPointer 函数必须看起来相同,但指针访问的粒度可能没有参数:

FUNCTIONCheckPointerAligned: DWORD (* 函数的数据类型(返回值)必须与当前设置的目标系统中


用于指针的数据类型相同;即 DWORD 用于使用 32 位指针的系统,WORD 用于使用 16 位指针的系统 *)
VAR_INPUTdwAddress :DWORD;

(* 指针的目标地址;数据类型必须与当前设置的目标
系统中用于指针的数据类型相同, 上文:返回值
*)(* 指针访问的大小;数据类型必须与整数兼容,
并且必须覆盖指针地址处存储的最大潜在数据大小
*)(* !不能在 CheckPointer 函数中使用!
iSize :DINT;

iGreat:DINT;
访问的粒度,例如“2”,如果 INT 是给定地址上使用
的最小非结构化数据类型;数据类型必须与整数兼容
*)(*访问类型:读取或写入;TRUE=读取访问权限;
数据类型必须为 BOOL*)
b写入:BOOL;

END_VAR

如果有 CheckPointer 函数,将调用 和 a 函数 在 项目


CheckPointerAligned。

列举
枚举是一种用户定义的数据类型,由许多字符串常量组成。这些常量称为枚举值。

枚举值在项目的所有区域中都会被识别,即使它们是在 POU 中声明的。最好在寄存器卡下的对象管理器


中将枚举创建为对象
数据类型。它们以关键字 TYPE 开头,以 END_TYPE 结尾。
语法:
类型<标识符>:(<Enum_0> ,<Enum_1>, ...,<Enum_n>);END_TYPE

<Identifier> 类型的变量可以采用其中一个枚举值,并将使用第一个枚举值进行初始化。这些值与整数兼
容,这意味着您可以像使用INT 一样对它们执行运算。您可以为变量分配一个数字x。如果枚举值未初始
化,则计数将从 0 开始。初始化时,请确保初始值正在增加。该号码的有效性将在运行时进行审查。

CoDeSysV2.3版本 10-35
附录 C:-CoDeSys 中的数据类型

例:
类型 TRAFFIC_SIGNAL:(红色、黄色、绿色:=10);(*每种颜色的初始值为红色 0、黄色 1、绿色 10*)END_TYPETRAFFIC_SIGNAL1 :
TRAFFIC_SIGNAL;TRAFFIC_SIGNAL1 : =0; ( * 交 通 信 号 灯 的 值 为 红 色 * ) FOR i : = 红 色 到 绿 色 DO i : = i + 1;END_FOR;

同一枚举值不能在一个枚举中或在同一 POU 中使用的所有枚举中使用两次。

例:
TRAFFIC_SIGNAL:(红、黄、绿);颜色:(蓝色、白色、红色);错误:红色不能
同时用于 TRAFFIC_SIGNAL 和 COLOR。

结构

结构在对象管理器中作为对象创建,位于寄存器卡数据类型下。它们以关键字 TYPE 和 STRUCT 开头,


以 END_STRUCT 和 END_TYPE 结尾。
结构声明的语法如下:
类型<结构名称>:结构

< 变 量 声 明 1> . .

<变量声明n>
END_STRUCT
END_TYPE

<Structurename> 是在整个项目中可识别的类型,可以像标准数据类型一样使用。

允许互锁结构。唯一的限制是变量不能放在地址上(不允许 AT 声明!

名为 Polygonline 的结构定义示例:
类型 Polygonline: STRUCTStart:
ARRAY[1..2]OFINT;Point1:INT 的
数组 [1..2];Point2:ARRAY[1..2] 的
INT;Point3:INT 的数组 [1..2];
Point4:INT 的数组 [1..2]; 结束:
ARRAY [1..2] 的 INT;END_STRUCT
END_TYPE

结构初始化示例:
Poly_1:polygonline := (开始:=3,3, Point1=5,2, Point2:=7,3, Point3:=8,5, Point4:=5,7,结束:=3,5);

无法使用变量进行初始化。请参阅“数组”下结构体数组的初始化示例。

访问结构组件:
您可以使用以下语法访问结构组件:
<Structure_Name>.<组件名称>

10-36 CoDeSysV2.3版本
附录 C:-CoDeSys 中的数据类型

因此,对于上面提到的结构“polygonline”示例,您可以通过Poly_1.Start访问组件“start”。

引用
您可以使用用户定义的引用数据类型为变量、常量或功能块创建备用名称。

在“对象管理器”(ObjectOrganizer)的“注册卡”数据类型“(Datatypes)下,将引用创建为对象。
它们以关键字 TYPE 开头,以 END_TYPE 结尾。
语法:
TYPE < 标 识 符 > : <Assignment term>;END_TYPE

例:
键入消息:
STRING[50];END_TYPE;

子范围类型
子范围类型是其值范围仅为基本类型值范围的子集的类型。声明可以在数据类型寄存器中执行,但变量也
可以直接用子范围类型声明:

“数据类型”寄存器中声明的语法:
键入<名称>: <Inttype> (<ug>..<og>)END_TYPE;

<名称>必须是有效的 IEC 标识符,


<Inttype> 是数据类型之一 SINT、USINT、INT、UINT、DINT、UDINT、BYTE、WORD、
DWORD(LINT、ULINT、LWORD)。
<ug> 是一个常量,它必须与基本类型兼容,并设置范围类型的下边界。下边界本身也包含在此范围
内。
<og> 是一个常量,必须与基本类型兼容,并设置范围类型的上限。上边界本身包含在此基本类型中。

例子:
类型
子输入:INT (-4095..4095);
END_TYPE
直接声明具有子范围类型的变量:
VAR值
和: INT (-4095..4095);ui:
UINT(0..10000);END_VAR

如果将常量分配给不属于此范围(例如 1:=5000)的子范围类型(在声明或实现中),则会发出错误消
息。
为了在运行时检查是否遵守范围边界,函数CheckRangeSigned
或必须引入CheckRangeUnsigned。在这些情况下,可以通过适当的方法和手段(例如,可以切断值或
设置错误标志)来捕获边界违规。一旦变量被写入为属于由有符号或无符号类型构造的子范围类型,就会
隐式调用它们。

例:

如果变量属于有符号子范围类型(如上面的 i),则调用函数 CheckRangeSigned;可以按如下方式进行编程,以将


值修剪到允许的范围:
FUNCTION CheckRangeSigned : DINT
VAR_INPUT值,下,上:DINT;END_VAR
IF (值<更低) THENCheckRangeSigned :

CoDeSysV2.3版本 10-37
附录 C:-CoDeSys 中的数据类型

= 更 低 ;ELSIF ( value > upper ) THEN


CheckRangeSigned : = upper;ELSE
CheckRangeSigned := 值;END_IF

在自动调用函数时,函数名称 CheckRangeSigned 是强制性的,接口规范也是如此:返回值和 DINT 类


型的三个参数
调用时,该函数的参数化如下所示:
- value:要分配给范围类型的值
- lower:范围的下限
- upper:范围的上限
- 返回值:这是实际分配给范围类型的值

在此示例中,赋值 i:=10*y 隐式生成以下内容:


i :=CheckRangeSigned(10*y, -4095, 4095);
例如,即使 y 的值为 1000,那么在此赋值之后我仍然只有值 4095。
这同样适用于函数 CheckRangeUnsigned:函数名称和接口必须正确。
FUNCTION CheckRangeUnsigned : UDINT
VAR_INPUT值,下限,上限:
UDINT;END_VAR

重要提示:如果函数 CheckRangeSigned 或 CheckRangeUnsigned 均不存在,则在运行时不会对子范围类型进行类


型检查!然后,变量 i 可以随时取 –32768 和 32767 之间的任何值!

注意:如果函数 CheckRangeSigned 或 CheckRangeUnsigned 都不存在,则在 FOR 循环中使用子范围类型时,可


能会导致无限循环 。当为 FOR 循环给定的范围与子范围类型的范围一样大或更大时,就会发生这种情况!

注意:Check.Lib 库提供的 CheckRangeSigned-function 只是一个示例解决方案!在使用库模块之前,请检查函数是


否按照项目请求工作,或者直接在项目中将适当的 CheckRange 函数作为 POU 实现。

例:
VARui : UINT (0..10000)
;END_VAR

对于 ui:=0 到 10000 做...

END_FOR
FOR 循环永远不会完成,因为 ui 不能大于 10000。
在定义 FOR 循环的增量值时,还要注意 CheckRange 函数的定义!

10-38 CoDeSysV2.3版本
附录 D: -CoDeSys 库

附录 D:CoDeSys 库

10.17Standard.lib 库

10.17.1 字符串函数...
请注意:字符串函数不是“线程安全的”:使用任务时,字符串函数只能在单个任务中使用。如果在不同的任务中使用
相同的函数,则存在覆盖的危险。

莱恩
返回字符串的 度。输入 STR 的类型为 STRING,函数的返回值为type
国际。
IL 中的示例:
LD'SUSI'LENSTVarINT1 (* 结果为 4*)

FBD 中的示例:

ST中的示例:
VarSTRING1 :=LEN ('SUSI');


Left 返回给定字符串的左侧初始字符串。输入 STR 为 STRING 类型,SIZE 为 INT 类型,函数的返回值
为 STRING 类型。
LEFT (STR, SIZE)表示:取字符串 STR 中右起的第一个 SIZE 字符。
IL 中的示例:
LD'SUSI'LEFT3STVarSTRING1 (* 结果是 'SUS'*)

FBD 中的示例:

ST中的示例:
VarSTRING1 := 左('SUSI',3);


Right 返回给定字符串的右侧初始字符串。
RIGHT (STR, SIZE)表示:取字符串 STR 中右边的第一个 SIZE 字符。
输入 STR 的类型为 STRING,SIZE 的类型为 INT,函数的返回值的类型为 STRING。
IL 中的示例:
LD 'SUSI'

CoDeSysV2.3版本 10-39
附录 D: -CoDeSys 库

RIGHT3STVarSTRING1 (* 结果为 'USI'*)

FBD 中的示例:

ST中的示例:
VARSTRING1 := 右('SUSI',3);


Mid 从字符串中返回部分字符串。
输入 STR 类型为 STRING,LEN 和 POS 类型为 INT,函数的返回值为type
字符串。
MID (STR, LEN, POS)表示:从 STR 字符串中检索 LEN 字符,该字符串以位置 POS 处的字符开
头。
IL 中的示例:
LD'SUSI'MID2,2STVarSTRING1 (* 结果为 'US'*)

FBD 中的示例:

ST中的示例:
VarSTRING1 :=MID ('SUSI',2,2);

康卡特
两个字符串的串联(组合)。
输入变量 STR1 和 STR2 以及函数的返回值均为 STRING 类型。
IL 中的示例:
LD'SUSI'CONCAT'WILLI'STVarSTRING1 (* 结果是 'SUSIWILLI'*)

FBD 中的示例:

ST中的示例:
VarSTRING1 :=CONCAT ('SUSI','WILLI');

请注意:如果嵌套在五个以上的级别上,则 CONCAT 函数不起作用。

10-40 CoDeSysV2.3版本
附录 D: -CoDeSys 库

插入
INSERT 将一个字符串插入到另一个字符串的已定义点。
输入变量 STR1 和 STR2 的类型为 STRING,POS 的类型为 INT,函数的返回值为 STRING 类型。

INSERT(STR1, STR2, POS)表示:在位置 POS 后将 STR2 插入 STR1。


IL 中的示例:
LD'SUSI'INSERT'XY',2STVarSTRING1 (* 结果是 'SUXYSI'*)

FBD 中的示例:

ST中的示例:
VarSTRING1 := 插入('SUSI','XY',2);

删除
DELETE 从定义位置的较大字符串中删除部分字符串。
输入变量 STR 为 STRING 类型,LEN 和 POS 为 INT 类型,函数的返回值为 STRING 类型。

DELETE(STR, L, P)表示:从 STR 中删除 L 个字符,以 P 位置的字符开头。

IL 中的示例:
LD'SUXYSI'DELETE2,3STVar1 (* 结果为 'SUSI'*)

FBD 中的示例:

ST中的示例:
var1 := 删除('SUXYSI',2,3);

取代
REPLACE 将较大字符串中的部分字符串替换为第三个字符串。
输入变量 STR1 和 STR2 的类型为 STRING,LEN 和 POS 的类型为 INT,函数的返回值为 STRING 类
型。
REPLACE(STR1, STR2, L, P)表示:将 STR1 中的 L 个字符替换为 STR2,以 P 位置的字符开
头。
IL 中的示例:
LD'SUXYSI' 替换 'K',2,2STVarSTRING1 (* 结果为 'SKYSI'*)

CoDeSysV2.3版本 10-41
附录 D: -CoDeSys 库

FBD 中的示例:

ST中的示例:
VarSTRING1: = 替换(SUXYSI,'K,2,2);

找到
FIND 在字符串中搜索部分字符串。
输入变量 STR1 和 STR2 为 STRING 类型,函数的返回值为 STRING 类型。
FIND(STR1, STR2)表示:求 STR2 在 STR1 中首次出现的第一个字符的位置。如果在 STR1 中找
不到 STR2,则 OUT:=0。
IL 中的示例:
LD'abcdef'FIND'de'STVarINT1 (* 结果为 '4'*)

FBD 中的示例:

ST中的示例:
VarINT1 :=FIND('abcdef','de');

10.17.2 双稳态功能块...


使双稳态功能块占主导地位:
Q1=SR (SET1, RESET)表示:
Q1=(非复位和 Q1)或SET1
输入变量 SET1 和 RESET 以及输出变量 Q1 的类型为 BOOL。
声明示例:
SRInst : SR ;
IL 中的示例:
CAL SRInst ( SET1 : = VarBOOL1 , RESET : = VarBOOL2 ) LD SRInst.Q1 ST VarBOOL3

FBD 中的示例:

10-42 CoDeSysV2.3版本
附录 D: -CoDeSys 库

ST中的示例:
SRInst ( SET1 : = VarBOOL1 , RESET : =VarBOOL2 ) ;VarBOOL3 : = SRInst.Q1 ;

RS
重置双稳态功能块
Q1=RS (SET, RESET1)表示:
Q1= 不复位 1 和(Q1 或 SET)
输入变量 SET 和 RESET1 以及输出变量 Q1 的类型为 BOOL。
声明示例:
RSInst : RS ;
IL 中的示例:
CAL RSInst ( SET : = VarBOOL1 , RESET1 : =VarBOOL2 ) LD RSInst.Q1 ST VarBOOL3

FBD 中的示例:

ST中的示例:
RSInst ( SET : = VarBOOL1 , RESET1 : =VarBOOL2 ) ;VarBOOL3 : = RSInst.Q1 ;

SEMA公司
软件信号量(可中断)
BUSY=SEMA(CLAIM, RELEASE)表示:
忙:=X;如果声明,则 X:=TRUE;否则,如果发布,则忙:=FALSE;X:= 假;END_IF

X 是一个内部 BOOL 变量,初始化时为 FALSE。输入变量 CLAIM 和 RELEASE 以及输出变量 BUSY 的


类型为 BOOL。
如果调用 SEMA 时 BUSY 为 TRUE,则表示已为 SEMA 分配了一个值(使用 CLAIM=TRUE 调用了
SEMA)。如果 BUSY 为 FALSE,则 SEMA 尚未被调用或已被释放(使用 RELEASE=TRUE 调用
)。
声明示例:
EMA初始化:SEMA;
IL 中的示例:
CAL SEMAInst ( 声 明 : =VarBOOL1 , RELEASE : =VarBOOL2 ) LD SEMAInst.BUSY ST VarBOOL3

FBD 中的示例:

CoDeSysV2.3版本 10-43
附录 D: -CoDeSys 库

ST中的示例:
SEMAInst(声明:=VarBOOL1 , RELEASE:=VarBOOL2 )
;VarBOOL3 : = SEMAInst.BUSY;

10.17.3 触发...
R_TRIG
功能块R_TRIG检测上升沿。
FUNCTION_BLOCK R_TRIG VAR_INPUT CLK : 布 尔 值 ;END_VAR VAR_OUTPUT

Q: 布 尔 值 ;END_VAR VAR

M: 布 尔 值 : = FALSE;END_VAR

Q:=CLK 而不是M;
M: = CLK;
只要输入变量 CLK 为 FALSE,输出 Q 和帮助变量 M 将保持 FALSE。一旦 CLK 返回 TRUE,Q 将首先
返回 TRUE,然后 M 将设置为 TRUE。这意味着每次调用函数时,Q 将返回 FALSE,直到 CLK 具有下
降沿,然后是上升沿。

声明示例:
RTRIG 国 家 : R_TRIG ;
IL 中的示例:
CAL RTRIGInst ( CLK : = VarBOOL1 ) LD RTRIGInst.Q ST VarBOOL2

FBD 中的示例:

ST中的示例:
RTRIGInst(CLK:=VarBOOL1)
;VarBOOL2 : = RTRIGInst.Q;

F_TRIG
功能块F_TRIG下降沿。
FUNCTION_BLOCKF_TRIGVAR_INPUTCLK:布尔值;END_VARVAR_OUTPUT 问:BOOL;END_VAR

VAR值

10-44 CoDeSysV2.3版本
附录 D: -CoDeSys 库

M : 布 尔 值 : = FALSE;END_VAR

Q:= 不是 CLK 也不是M;


M:= 不是CLK;
只要输入变量 CLK 返回 TRUE,输出 Q 和帮助变量 M 将保持 FALSE。一旦 CLK 返回 FALSE,Q 将首
先返回 TRUE,然后 M 将设置为 TRUE。这意味着每次调用函数时,Q 将返回 FALSE,直到 CLK 上升
沿后下降沿。

声明示例:
FTRIG 最 新 : F_TRIG ;
IL 中的示例:
CAL FTRIGInst ( CLK : = VarBOOL1 ) LD FTRIGInst.Q ST VarBOOL2

FBD 中的示例:

ST中的示例:
FTRIGInst(CLK:=VarBOOL1)
;VarBOOL2 : = FTRIGInst.Q;

10.17.4 反...

CTU
功能块增量器:
输入变量 CU 和 RESET 以及输出变量 Q 的类型为 BOOL,输入变量 PV 和输出变量 CV 的类型为
WORD。
如果 RESET 为 TRUE,则计数器变量 CV 将初始化为 0。如果 CU 的上升沿从 FALSE 到 TRUE,则
CV 将提高 1.当 CV 大于或等于上限 PV 时,Q 将返回 TRUE。

声明示例:
CTUInst : CTU ;
IL 中的示例:
CAL CTUInst ( CU : = VarBOOL1 , RESET : = VarBOOL2 , PV : = VarINT1 ) LD CTUInst.Q ST VarBOOL3 LD CTUInst.CV ST VarINT2

FBD 中的示例:

CoDeSysV2.3版本 10-45
附录 D: -CoDeSys 库

ST中的示例:
CTUInst(CU:=VarBOOL1, RESET:=VarBOOL2 , PV:=VarINT1)
;VarBOOL3 : = CTUInst.Q ;VarINT2 : = CTUInst.CV;

CTD的
功能块递减器:
输入变量 CD 和 LOAD 以及输出变量 Q 的类型为 BOOL,输入变量 PV 和输出变量 CV 的类型为
WORD。
当 LOAD_ 为 TRUE 时,计数器变量 CV 将使用上限 PV 进行初始化。如果 CD 的上升沿从 FALSE 变为
TRUE,则如果 CV 大于 0(即不会导致该值降至 0 以下),则 CV 将降低 1。

当 CVis 等于 0 时,Q 返回 TRUE。


声明示例:
CTDInst : CTD ;
IL 中的示例:
CAL CTDInst ( CD : = VarBOOL1 , LOAD : = VarBOOL2 , PV : = VarINT1 ) LD CTDInst.Q ST VarBOOL3 LD CTDInst.CV ST VarINT2

FBD 中的示例:

ST中的示例:
CTDInst(CD:=VarBOOL1, LOAD:=VarBOOL2 , PV:=VarINT1)
;VarBOOL3 : = CTDInst.Q ;VarINT2 : = CTDInst.CV;

CTUD系列
功能块递增器/递减器
输入变量 CU、CD、RESET、LOAD 以及输出变量 QU 和 QD 的类型为 BOOL,PV 和 CV 的类型为
WORD。
如果 RESET 有效,则计数器变量 CV 将初始化为 0。如果 LOAD 有效,则 CV 将使用 PV 进行初始化。

如果 CU 的上升沿从 FALSE 变为 TRUE,则 CV 将提高 1。如果 CD 的上升沿从 FALSE 变为 TRUE,


则 CV 将降低 1,前提是这不会导致该值降至 0 以下。
当 CV 大于或等于 PV 时,QU 返回 TRUE。
当 CV 等于 0 时,QD 返回 TRUE。
声明示例:
CTUDInst : CUTD ;
IL 中的示例:
CALCTUDInst(CU:=VarBOOL2, RESET:=VarBOOL3, LOAD:=VarBOOL4, PV:
=VarINT1 ) LD CTUDInst.Q ST VarBOOL5 LD CTUDInst.QD ST VarBOOL5 LD CTUInst.CV ST

10-46 CoDeSysV2.3版本
附录 D: -CoDeSys 库

VarINT2

FBD 中的示例:

ST中的示例:
CTUDInst(CU :=VarBOOL1, CU:=VarBOOL2, RESET :=VarBOOL3, LOAD:=VarBOOL4 ,
PV: = VarINT1 ) ;VarBOOL5 : = CTUDInst.QU ;VarBOOL6 : = CTUDInst.QD ;

VarINT2 : = CTUDInst.CV;

10.17.5 定时器...

卫生纸
功能块定时器是一个触发器。TP(IN, PT, Q, ET)表示:
IN 和 PT 分别是 BOOL 和 TIME 类型的输入变量。Q 和 ET 分别是 BOOL 和 TIME 类型的输出变量。如
果 IN 为 FALSE,则 Q 为 FALSE,ET 为 0。
一旦 IN 变为 TRUE,时间将开始以 ET 中的毫秒为单位计算,直到其值等于 PT。然后它将保持不变。

Q 为 TRUE,因为 fromIN 为 TRUE,ET 小于或等于 PT,否则为 FALSE。


Q 返回 PT 中给定的时间段的信号。
TP 时间序列的图形显示

声明示例:
T恤;
IL 中的示例:
CAL TPInst ( IN : = VarBOOL1 , PT : = T#5s ) LD TPInst.Q ST VarBOOL2

CoDeSysV2.3版本 10-47
附录 D: -CoDeSys 库

FBD 中的示例:

ST中的示例:
TPInst(IN :=VarBOOL1, PT:=T#5s);VarBOOL2 :=TPInst.Q;


功能块 TimerOnDelay 实现开启延迟。
TON(IN, PT, Q, ET)表示:
IN 和 PT 分别是 BOOL 和 TIME 类型的输入变量。Q 和 ET 分别是 BOOL 和 TIME 类型的输出变量。如
果 IN 为 FALSE,则 Q 为 FALSE,ET 为 0。
一旦 IN 变为 TRUE,时间将开始以 ET 中的毫秒为单位计算,直到其值等于 PT。然后它将保持不变。

当 IN 为 TRUE 且 ET 等于 PT 时,Q 为 TRUE,否则为 FALSE。


因此,当 PT 中以毫秒为单位指示的时间用完时,Q 具有上升沿。
随时间推移的 TON 行为的图形显示:

声明示例:
TONInst :吨;
IL 中的示例:
CAL TONInst ( IN : = VarBOOL1 , PT : = T#5s ) LD TONInst.Q ST VarBOOL2

FBD 中的示例:

ST中的示例:
TONInst(IN :=VarBOOL1, PT:=T#5s);

10-48 CoDeSysV2.3版本
附录 D: -CoDeSys 库

TOF(TOF)
功能块 TOF 实现关断延迟。
TOF(IN, PT, Q, ET)表示:
IN 和 PT 分别是 BOOL 类型的输入变量 TIME。Q 和 E 分别是 BOOL 类型的输出变量 TIME。如果 IN 为
TRUE,则输出分别为 TRU0。
一旦 IN 变为 FALSE,在 ET 中,时间将开始以毫秒为单位计算,直到其值等于 PT。然后它将保持不
变。
当 IN 为 FALSE 且 ET 等于 PT 时,Q 为 FALSE,否则为 TRUE。
因此,当 PT 中指示的时间(以毫秒为单位)用完时,Q 具有下降沿。
随时间推移的 TOF 行为的图形显示:

声明示例:
TOFInst :太好了;
IL 中的示例:
CAL TOFInst ( IN : = VarBOOL1 , PT : = T#5s ) LD TOFInst.Q ST VarBOOL2

FBD 中的示例:

ST中的示例:
TOFInst(IN :=VarBOOL1, PT:=T#5s);VarBOOL2 :=TOFInst.Q;

RTC实时时钟
功能块 RuntimeClock 从给定时间开始返回当前日期和时间。

RTC(EN, PDT, Q, CDT)表示:


EN 和 PDT 是 TIME 类型的输入变量。Q 和 CDT 分别是 BOOL 类型的输出变量DATE_AND_TIME。当
EN 为 FALSE 时,输出变量 Q 和 CDT 分别为FALSE
DT#1970-01-01-00:00:00。

CoDeSysV2.3版本 10-49
附录 D: -CoDeSys 库

一旦 EN 变为 TRUE,PDT 的时间就会被设置,以秒为单位计数,只要 EN 为 TRUE,就会以 CDT 的形


式返回(参 上图中的示例)。一旦 EN 重置为 FALSE,CDT 就会重置为初始值 DT#1970-01-01-00:
00:00。请注意,PDT 中的时间仅由上升沿设置。

10.18Util.lib 库
该库包含各种模块的附加集合,可用于BCD转换、位/字节函数、数学辅助函数、控制器、信号发生器、
函数操纵器和模拟值处理。

由于某些函数和功能块包含 REAL 变量,因此存在一个名为 UTIL_NO_REAL 的附件库,其中排除了这


些 POU。

10.18.1BCD转换
BCD 格式的字节包含介于 0 和 99 之间的整数。每个小数位使用四位。小数点后十位存储在第 4-7 位
中。因此,BCD 格式类似于十六进制表示形式,简单的区别是只有 0 到 99 之间的值可以存储在 BCD 字
节中,而十六进制字节从 0 到 FF。

例如:整数 51 应转换为 BCD 格式。二进制中的 5 是 0101,二进制中的 1 是 0001,这使得 BCD 字节


01010001,对应值 $51=81。

BCD_TO_INT
此函数将 BCD 格式的字节转换为 INT 值:
函数的输入值为 BYTE 类型,输出值为 INT 类型。
如果应转换非 BCD 格式的字节,则输出为 -1。
ST中的示例:
i:=BCD_TO_INT(73);(* 结果为 49*) k:=BCD_TO_INT(151);(* 结果为 97*) l:
=BCD_TO_INT(15);(* 输出 -1,因为它不是 BCD 格式 *)

INT_TO_BCD
此函数将 INTEGER 值转换为 BCD 格式的字节:
函数的输入值为 INT 类型,输出值为 BYTE 类型。
数字 255 将输出,其中应转换 INTEGER 值,该值无法转换为 BCD 字节。

ST中的示例:
i:=INT_TO_BCD(49);(* 结果为 73*) k:
=INT_TO_BCD(97);(* 结果为 151*) l:
=INT_TO_BCD(100);(* 错误!输出:255*)

10.18.2 位/字节函数

提取
此函数的输入是 DWORDX 和 BYTEN。输出是一个 BOOL 值,其中包含输入 X 的第 N 位的内容,函
数从零位开始计数。

10-50 CoDeSysV2.3版本
附录 D: -CoDeSys 库

ST中的示例:
标志:=EXTRACT(X:=81, N:=4);(* 结果:TRUE,因为 81 是二进制1010001,所以第 4 位是 1*)标
志:=EXTRACT(X:=33, N:=0);(* 结果:TRUE,因为 33 是二进制100001,所以位 '0' 是 1*)


此函数能够将 BOOL 类型的 8 个输入位 B0、B1、...、B7 作为 BYTE 传递回来。
功能块 UNPACK 与此功能密切相关。

普特
此函数的输入由一个 DWORDX、一个字节 N 和一个 BOOLean 值 B 组成,PUTBIT 在值
B 上设置从 X 开始的第 N 位,从而从零位开始计数。
ST中的示例:
答:=38; (* 二进制 100110*)B:=推杆(A,4,真);(* 结果:
54 = 2#110110 * ) C : = 推 杆 ( A , 1 , 假 ) ; ( * 结 果 : 36 =
2#100100*)

解压
UNPACK 将 BYTE 类型的输入 B 转换为 BOOL 类型的 8 个输出变量 B0,...,B7,这与 PACK 相反。

FBD 中的示例:输出:

10.18.3 数学辅助函数

导数
此功能块近似地确定局部派生。
函数值通过使用 IN 作为 REAL 变量传递。TM 包含 DWORD 中经过的时间(以毫秒为单位),BOOL 类
型的 RESET 输入允许功能块通过传递值 TRUE 重新开始。

输出 OUT 的类型为 REAL。


为了获得最佳结果,DERIVATIVE 使用最后四个值进行近似,以便尽可能低地控制由输入参数不准确产
生的误差。FBD区块:99990101000000+00'00'

CoDeSysV2.3版本 10-51
附录 D: -CoDeSys 库

完整的
此功能块近似确定函数的积分。
与 DERIVATIVE 类似,函数值通过使用 IN 作为 REAL 变量传递。TM 包含在 DWORD 中以毫秒为单位
经过的时间,BOOL 类型的 RESET 输入允许功能块以值 TRUE 重新开始。

输出 OUT 的类型为 REAL。


积分由两个阶跃函数近似计算。这些平均值以近似积分的形式提供。

FBD中的区块:99990101000000+00'00' 示例:线性函数的积分:

LIN_TRAFO
此功能块(util.lib.)将位于由下限值和上限值定义的值范围内的REAL值转换为位于另一个范围内的相应
REAL 值,该范围也由下限和上限定义。以下等式是转换的基础:

(输入 -IN_MIN):(IN_MAX- 输入) = (输出 -OUT_MIN):(OUT_MAX- 输出)

输入变量:

变量 数据类型 描述

在 真正 输入值
IN_MIN 真正 输入值范围下限
IN_MAX 真正 输入值范围上限
OUT_MIN 真正 输出值范围下限
OUT_MAX 真正 输出值范围上限

10-52 CoDeSysV2.3版本
附录 D: -CoDeSys 库

输出变量:

变量 数据类型 描述

外 真正 产值
错误 布尔值 发生错误:如果 IN_MIN=IN_MAX,或者 IN 超出指定的输入值范围,
则为 TRUE。

应用实例:
温度传感器提供伏特值(输入输入)。这些值将转换为以摄氏度为单位的温度值(输出 OUT)。输入(
伏特)值范围由限制 IN_MIN=0 和 IN_MAX=10 定义。输出(摄氏度)值范围由限制定义

OUT_MIN=-20,OUT_MAX=40。
因此,对于 5 伏的输入,将产生 10 摄氏度的温度。

STATISTICS_INT
此功能块计算一些标准统计值:
输入 IN 的类型为 INT。当 BOOLean 输入 RESET 时,所有值都会重新初始化
真。
输出 MN 包含 IN 中最大值的最小值 MX。AVG 描述平均值,即 IN 的期望值。所有三个输出均为 INT 类
型。
FBD区块:99990101000000+00'00'

STATISTICS_REAL
此功能块对应于 STATISTICS_INT,但输入 IN 的类型与输出 MN、MX、AVG 类似。

方差
VARIANCE 计算输入值的方差。
输入IN为REAL类型,RESET为BOOL类型,输出OUT再次为该类型
真正。
该模块计算输入值的方差。VARIANCE 可以通过以下命令重置
RESET=TRUE。
标准差可以很容易地计算为 VARIANCE 的平方根。

CoDeSysV2.3版本 10-53
附录 D: -CoDeSys 库

10.18.4 控制器

帕金森病
util.lib 库提供以下 PD 控制器功能块:

功能块的输入:

变量 数据类型 描述

实际 真正 受控变量的当前值
SET_POINT 真正 所需值,命令变量
KP系列 真正 比例系数,P部分的单位增益
电视 真正 导数动作时间,D 部分的单位增益(以秒为单位),例如“0.5”
表示 500 毫秒
Y_MANUAL 真正 定义输出值 Y,如果 MANUAL=TRUE,
Y_OFFSET 真正 操作变量 Y 的偏移量
真正 操纵变量 Y 的下限或上限。如果 Y 超过这些限制,则输出
Y_MIN, LIMITS_ACTIVE将设置为 TRUE,Y 将保持在规定的范围
Y_MAX 内。此控件仅在Y_MIN<Y_MAX时才有效。

手动 布尔值 如果为 TRUE,则手动操作将处于活动状态,即操作值将由


Y_MANUAL 定义。

重置 布尔值 TRUE 复 位 控 制 器 ; 在 重 新 初 始 化 期 间 , Y =
Y_OFFSET。

功能块的输出:

变量 数据类型 描述

Y 真正 操作值,由功能块计算( 下文)

LIMITS_ACTIVE 布尔值 TRUE 表示 Y 已超出给定限制(Y_MIN, Y_MAX)。

Y_OFFSET、Y_MIN和Y_MAX用于在规定范围内对纵的变量进行转换。

MANUAL 可用于打开和关闭手动操作。RESET 用于重置控制器。

10-54 CoDeSysV2.3版本
附录 D: -CoDeSys 库

在正常操作( MANUAL= RESET= LIMITS_ACTIVE= FALSE )中,控制器将 控制器误差 e 计算为差值


SET_POINT–ACTUAL,生成与时间相关的推导 e/ t 并将这些值存储在内部。

输出,即纵的变量Y的计算公式如下:
Y = KP ( + 电视 / t) +Y_OFFSET 其中 =SET_POINT-实际
因此,除了 P 部分之外,控制器误差(D 部分)的电流变化也会影响纵的变量。

此外, Y 限制在 Y_MIN 和 Y_MAX 规定的范围内。如果 Y 超过这些限制, LIMITS_ACTIVE 将变为


TRUE。如果不需要对操作变量进行限制,则必须将 Y_MIN 和 Y_MAX 设置为 0。

只要 MANUAL=TRUE,Y_MANUAL就会写入 Y。
A 通过设置 TV=0 可以很容易地创建P 控制器。

PID的
库 util.lib 提供以下 PID 控制器功能块:

与 PD 控制器不同,此功能块包含一个以秒为单位的重新调整时间的 REAL 输入 TN(例如,“0.5”表示


500 毫秒)。
功能块的输入:

变量 数据 描述
类型

实际 真正 受控变量的当前值
SET_POINT 真正 所需值,命令变量
KP系列 真正 比例系数,P部分的单位增益
田纳 州 真正 复位时间,I部分的倒数单位增益;以秒为单
位,例如“0.5”表示 500 毫秒

电视 真正 导数动作时间,D 部分的单位增益(以秒为单位),例如“0.5”
表示 500 毫秒
Y_MANUAL 真正 定义输出值 Y,如果 MANUAL=TRUE,
Y_OFFSET 真正 操作变量 Y 的偏移量
Y_MIN,Y_MAX 真正 操纵变量 Y 的下限或上限。如果 Y 超过这些限制,则输出
LIMITS_ACTIVE将设置为 TRUE,Y 将保持在规定的范围内。此
控件仅在Y_MIN<Y_MAX时才有效。

手动 布尔值 如果为 TRUE,则手动操作将处于活动状态,即纵的

CoDeSysV2.3版本 10-55
附录 D: -CoDeSys 库

value 将由 Y_MANUAL 定义。


重置 布尔值 TRUE 复位控制器;在重新初始化期间,Y=Y_OFFSET。

功能块的输出:

变量 数据类型 描述

Y 真正 操作值,由功能块计算( 下文)
LIMITS_ACTIVE 布尔值 TRUE 表示 Y 已超出给定限制(Y_MIN, Y_MAX)。

溢出 布尔值 TRUE 表示溢出( 下文)

Y_OFFSET,Y_MIN和Y_MAX用于在规定范围内对纵的变量进行转换。

MANUAL可用于切换到手动操作;RESET 可用于重新初始化控制器。

在正常操作( MANUAL= RESET= LIMITS_ACTIVE= FALSE )中,控制器将 控制器误差 e 计算为与


SET_POINT–ACTUAL 的差值,生成与时间 e/ t 相关的推导,并将这些值存储在内部。

输出,即与 PD 控制器不同的操作变量 Y,包含一个额外的积分部分,计算如下:

Y = KP ( + 1/TN edt + 电视 / t ) + Y_OFFSET


因此,除了P 部分之外,控制器误差(D 部分)的当前变化和控制器误差(I 部分)的历史也会影响纵的变
量。
通过设置TV=0,可以很容易地将 PID 控制器转换为PI 控制器。
由于附加的积分部分,如果误差 的积分变得很大,则控制器的参数设置不正确可能会造成溢出。因此,
为了安全起 ,存在一个名为 OVERFLOW 的 BOOLean 输出,在本例中,该输出的值为 TRUE。只有
当控制系统由于参数设置不正确而不稳定时,才会发生这种情况。同时,控制器将被暂停,只有通过重新
初始化才能再次激活。

PID_FIXCYCLE
库 util.lib 提供以下PID_FIXCYCLE控制器功能块:

此功能块在功能上与 PID 控制器相对应,但循环时间不是由内部功能自动测量的,而是由输入 CYCLE(


以秒为单位)设置的。

10-56 CoDeSysV2.3版本
附录 D: -CoDeSys 库

10.18.5 信号发生器...

眨眼
功能块 BLINK 生成脉动信号。输入由 BOOL 类型的 ENABLE 以及 TIME 类型的 TIMELOW 和
TIMEHIGH 组成。输出 OUT 的类型为 BOOL。
如果 ENABLE 设置为 TRUE,则开始 BLINK,将时间段 TIMEHIGH 的输出设置为 TRUE,然后将其时
间段 TIMELOW 的输出设置为 FALSE。
当 ENABLE 复位为 FALSE 时,输出 OUT 不会改变,即不会产生进一步的脉冲。如果在 ENABLE 重置
为 FALSE 时明确也想得到 OUTFALSE,则可以在输出中使用“OUTANDENABLE”(即添加一个带有
参数 ENABLE 的 AND 框)。
CFC 示例:

FREQ_MEASURE
此功能块测量布尔输入信号的(平均)频率(Hz)。您可以指定应平均的周期数。周期是输入信号的两
个上升沿之间的时间。

输入变量:

变量 数据类型 描述

在 布尔值 输入信号
时期 国际 周期数,即上升沿之间的时间间隔,应计算输入信号的平均频率。可能
的值:1 到10

重置 布尔值 将所有参数重置为0

输出变量:

变量 数据类型 描述

外 真正 结果频率(以 [Hz] 为单位)


有效 布尔值 FALSE,直到第一个小节完成,或者句点>3*OUT(表示输入有问题)


函数发生器生成典型的周期函数:
输入是由预定义计数类型 GEN_MODE 的 MODE、BOOL 类型的 BASE、TIME 类型的 PERIOD、两个
INT 值 CYCLES 和 AMPLITUDE 以及 BOOLeanRESET 输入组成的组合。

MODE 描述了应该生成的函数,其中枚举值 TRIANGLE 和 TRIANGLE_POS 提供两个三角函数,


SAWTOOTH_RISE升序、降序锯 SAWTOOTH_FALL,RECTANGLE 表示矩形信号,SINE 和余弦表

CoDeSysV2.3版本 10-57
附录 D: -CoDeSys 库

示正弦和余弦:

三角形: TRIANGLE_POS:

SAWTOOTH_RISE: SAWTOOTH_FALL:

矩形: 窦:

科 努斯:

BASE定义周期是否真的与定义的时间相关(BASE=TRUE)或是否与特定数量的周期相关,这意味着功
能块的调用次数(BASE=FALSE)。

PERIOD 或 CYCLES 定义相应的周期。


振幅以一种微不足道的方式定义了要生成的函数的振幅。
一旦 RESET=TRUE,函数生成器再次设置为 0。
FBD 中的示例:

10-58 CoDeSysV2.3版本
附录 D: -CoDeSys 库

10.18.6 功能机械手...

字符曲线
此功能块用于表示线性函数上的值:

INT 类型的 IN 将提供要操作的值。BYTEN 指定定义表示函数的点数。然后,在 ARRAYP[0..10] 中生


成此特征线,其中 P 类型为 POINT,该 POINT 是一种基于两个 INT 值(X 和 Y)的结构。

输出由 INT 类型的 OUT、操作值和 BYTEERR 组成,必要时将指示错误。

点 P[0]..ARRAY 中的 P[N-1] 必须根据其 X 值进行排序,否则 ERR 接收值 1。如果输入 IN 不在 P[0] 之


间。X 和 P[N-1]。X、ERR=2 和 OUT 包含相应的极限值 P[0]。Y 或P[N-1].Y.

如果 N 超出允许值(介于 2 和 11 之间),则 ERR=4。


ST中的示例:
首先,必须在头文件中定义 ARRAYP:
VAR ...

CHARACTERISTIC_LINE:CHARCURVE;KL:数组[0..10]的点:=(X:
=0,Y:=0),(X:=250,Y:=50),(X:=500,Y:=150),(X:
=750 , Y : =400 ) , 7 ( ( X : =1000 , Y : =1000 ) ) ; 计 数 器 : INT; ...

END_VAR
然后,我们为 CHARCURVE 提供一个不断增加的值:
计数器:=计数器+10;CHARACTERISTIC_LINE(IN:=计数
器,N:=5,P:=KL);
随后的跟踪说明了效果:

RAMP_INT
RAMP_INT用于限制被馈送函数的上升或下降:
输入由三个 INT 值中的一只手组成:IN(函数输入)以及 ASCEND 和 DESCEND(给定时间间隔内的
最大增加或减少),由 TIME 类型的 TIMEBASE 定义。将 RESET 设置为 TRUE 会导致重新初始化
RAMP_INT。
INT 类型的输出 OUT 包含升序和降序限制函数值。
当 TIMEBASE 设置为 t#0s 时,ASCEND 和 DESCEND 与时间间隔无关,但保持不变。

CoDeSysV2.3版本 10-59
附录 D: -CoDeSys 库

CFC 示例:

RAMP_REAL
RAMP_REAL 的功能与 RAMP_INT 相同,但简单的区别是输入 IN,
ASCEND、DESCEND 和输出 OUT 的类型为 REAL。

10.18.7 模拟量值处理...

磁滞现象
此功能块的输入由三个 INT 值 IN、HIGH 和 LOW 组成。输出 OUT 为
BOOL 类型。

如果 IN 低于限制值 LOW,则 OUT 变为 TRUE。如果 IN 超过上限 HIGH,


FALSE 被传递。
举个例子:

10-60 CoDeSysV2.3版本
附录 D: -CoDeSys 库

极限报警
此功能块指定输入值是否在设定的范围内,如果这样做,则违反了哪些限制。

输入值 IN、HIGH 和 LOW 均为 INT 类型,而输出 O、U 和 IL 均为 BOOL 类型。

如果 IN 超过上限 HIGH,则 O 变为 TRUE,当 IN 低于 LOW 时,U 变为 TRUE。如果 IN 介于 LOW 和


HIGH 之间,则 IL 为 TRUE。
FBD 中的示例:结果:

10.19AnalyzationNew.lib 库
该库提供了用于分析表达式的模块。如果组合表达式为 FALSE,则可以计算其组件的组件,这些组件将
添加到此结果中。在 SFC-Editor 中,标志 SFCErrorAnalyzationTable 隐式使用此函数来分析过渡中的表
达式。
表达式示例:
B 或 NOT(y<x)或 NOT (不是 d 和 e)
功能:
所有模块都使用以下变量:
InputExpr:BOOL,要分析的表达式
DoAnalyze:BOOL、TRUE 开始分析
ExpResult:BOOL,表达式的当前值
不同的是分析结果的输出:
AnalyzeExpression 在字符串中返回表达式的组件,这些组件将添加到总值 FALSE 中。函数
AppendErrorString用于此目的,用“|”字符分隔输出字符串中的特定组件。

OutString:STRING,分析结果,表达式相关组件的序列
(例如 y<x|d)
AnalyseExpressionTable 将表达式的组件(将总值 FALSE 相加)写入数组。对于每个组件, 结构
ExpressionResult提供以下信息:名称、地址、注释、(当前)值。

OutTable : 数 组 [0..15] OF ExpressionResult;


例如

AnalyseExpressionCombined 结合 这 功能 之 Analyze表达式 加
AnalyseExpressionTable

CoDeSysV2.3版本 10-61
附录 D: -CoDeSys 库

10.20CoDeSys 系统库
注意
这取决于当前使用的目标系统,支持哪些系统库,哪些系统库可以在程序中使用。有关相关信息,请参阅
文档SysLibs_Overview.pdf。

10-62 CoDeSysV2.3版本
附录 E:-运算符和库模块概述

附录 E:运算符和库模块概述
下表显示了运算符的概述,这些运算符可在 CoDeSys 或库 Standard.lib 和 Util.lib 中找到。您可以在那
里找到 ST 和 IL 的符号。对于 IL,还列出了支持的修饰符。

请注意,对于“IL 运算符”列:仅显示使用运算符的行。先决条件是(第一个)必需的操作数已成功加载
到前一行中(例如 LDin)。

'Mod.IL'列显示 IL 中可能的修饰符:

C 仅当上述表达式的结果为 TRUE 时,才会执行该命令。


N 表示 JMPC、CALC、RETC:仅当上述表达式的结果为 FALSE 时,才会执行该命令。

N 否则:否定操作数(而不是累加器)
(括号内的算子:只有在到达右括号后,才会进行括号前面的操作。

请从有关集成到 CoDeSys 或库中的 IEC 运算符的相应附录中获取详细的使用说明。

10.21CoDeSys 中的运算符
在ST 在 AWL 中 国防部。描述AWL

' 字符串分隔符(例如“string1”)

数组范围的大小(例如 ARRAY[0..3]OFINT)
..[

]: 声明中操作数和 Type 之间的分隔符(例如 var1 :


INT;

; 指令终止(例如 a:=var1;)

^ 取消引用的指针(例如 pointer1^)

LD 变量1 N 缓冲区中 var1 的负载值

:= ST var1 N 将实际结果存储到var1

S 布尔瓦 当 实 际 结 果 为 TRUE 时 , 将 boolean operand


boolvarexact 设置为TRUE

R 布尔瓦 当 实 际 结 果 为 TRUE 时 , 将 boolean operand


boolvarexact 设置为FALSE

JMP标签 快递之家 跳转到标签

<程序名称> CAL prog1 快递之家 调用程序prog1

<实例名称> CAL inst1 快递之家 调用函数块实例inst1

<Fctname>(vx,你,..) <Fctname>vx,你 快递之家 调用函数 fctname 并传输变量 vx,vy

( 括号后面的值作为操作数处理,括号前的操作不在
括号中的表达式之前执行。

CoDeSysV2.3版本 10-63
附录 E:-运算符和库模块概述

在ST 在 AWL 中 国防部。描述AWL

) 现在执行已设置的操作

和 和 N,(按位AND

或 或 N,(按位OR

异或 异或 N,(按位异OR

不 不 Bitweise 不是

+ 加 (添加

- 子 (减法

* 穆尔 (乘法

/ DIV公司 (分部

> 燃气轮机 (大于

>= 通用电气 (大于或相等

= 情商 (相等

<> 东北 (不相等

<= 乐 (小于或等于

< LT系列 (小于

MOD(中) 国防部 模除法

INDEXOF(中) 索引的 POUin1的内部索引;[国际]

尺寸(in) 大小的 给定数据类型 in 所需的字节数

SHL(K,英寸) SHL公司 运算符的按位左移K

SHR(K,英寸) SHR(英语:SHR) 运算符的按位右移K

ROL(K,英寸) ROL的 按 K 向运算符左侧的按位旋转

ROR(K,英寸) 罗尔 按位旋转到运算符的右侧K

选拔(G,in0,in1) SEL公司 在 2 个操作数 in0(G 为 FALSE)和 in1(G 为


TRUE)之间进行二进制选择

最大值(in0,in1) 麦克斯 返回 2 个值中的较大值

最小值(in0,in1) 最小值 返回 in0 和 in1 的 2 个值中的较小者

极限(最小,英寸,最大) 限制 限制取值范围(如果超出该范围,则 in 设置回 MIN


或 MAX)

多路复用器(C,in0,...in_n) 多路复用器 从一组值(in0 到 In_n)中选择第 K 个值

ADR(中) ADR(美国存托凭证) [DWORD] 中操作数的地址

阿德林斯特() 阿德林斯特() 从中调用该运算符的功能块实例的地址。

BITADR(英寸) 比塔德尔 [DWORD] 中操作数的位偏移量

BOOL_TO_<类型>(in) BOOL_TO_<类型> 布尔操作数的类型转换

10-64 CoDeSysV2.3版本
附录 E:-运算符和库模块概述

在ST 在 AWL 中 国防 描述
部。

<类型>_TO_BOOL(in) <类型>_TO_BOOL 类型转换为BOOL

INT_TO_<类型>(in) INT_TO_<类型> 将 INT 操作数转换为另一种基本类型

REAL_TO_<类型>(in) REAL_TO_<类型> 将 REAL 操作数转换为另一个基本类型

LREAL_TO_<类型>(in) LREAL_TO_<类型> 将 LREAL 操作数转换为另一个基本类型

TIME_TO_<类型>(in) TIME_TO_<类型> 将 TIME 操作数转换为另一种基本类型

TOD_TO_<类型>(in) TOD_TO__<类型> 将 TOD 操作数转换为另一种基本类型

DATE_TO_<类型>(in) DATE_TO_<类型> 将 DATE 操作数转换为另一个基本类型

DT_TO_<类型>(in) DT_TO_<类型> 将 DT 操作数转换为另一种基本类型

STRING_TO_<类型>(in) STRING_TO_<类型> 字符串操作数到另一个基本类型的类型转换,必须


包含所需类型的有效值

截断(in) TRUNC (特伦克) 从 REAL 到 INT 的转换

ABS(英寸) ABS公司 操作数的绝对值

SQRT(英寸) SQRT的 操作数的平方根

LN(英寸) 在 操作数的自然对数

登录(in) 日志 操作数的对数,以 10 为底

经验值(in) 经验值 操作数的指数函数

正弦(in) 罪 操作数的正弦值

COS(英寸) 因为 操作数余弦

TAN(英寸) 鞣 操作数的切线

ASIN(中) ASIN公司 操作数的反正弦

ACOS(英寸) ACOS公司 操作数的反余弦

ATAN(英寸) 阿坦 操作数的弧切线

EXPT(in,expt) EXPT expt 使用 expt 的操作数的幂

CoDeSysV2.3版本 10-65
附录 E:-运算符和库模块概述

10.22Standard.lib 的元素:
在ST 在 AWL 中 描述

LEN(英寸) 莱恩 操作数的字符串 度

LEFT(str,大小) 左 给定大小的字符串 str 的左初始字符串

RIGHT(str,大小) 右 给定大小的字符串 str 的右初始字符串

MID(str,大小,位置) 中 位置 pos 处给定大小的 str 的部分字符串

CONCAT('str1','str2') CONCAT 'str2' 两个后续字符串的串联

插入('str1','str2',位置) 插 入 'str2',p 在字符串 str2 的位置位置插入字符串str1

删除('str1',len,pos) 删除len,pos 删除部分字符串( 度 len),从 str1 的位置位置开始

替换('str1','str2',len,pos) 取代 用 str2 替换 度为 len 的部分字符串,从 str1 的位置开始


'str2',len,pos

查找('str1','str2') 找 到 ' str2' 在 str1 中搜索部分字符串str2

锶 锶 双稳态 FB 占主导地位

RS RS 双稳态 FB 受挫

SEMA公司 SEMA公司 FB:软件信号量(可中断)

R_TRIG R_TRIG FB:检测到上升沿

F_TRIG F_TRIG FB:检测到下降沿

CTU CTU FB:计数upv

CTD的 CTD的 FB:倒计时

CTUD系列 CTUD系列 FB:上下倒计时

卫生纸 卫生纸 FB:触发器

吨 吨 FB:定时器导通延迟

TOF(TOF) TOF(TOF) FB:定时器关断延迟

RTC实时时钟 RTC实时时钟 FB:实时时钟

10.23Util.lib 的元素
BCD_TO_INT字节的转换:BCD到INT格式

INT_TO_BCD 字节的转换:INT 到 BCD 格式

ÚTDRÁTTUR (í,n) DWORDin 的第 n 位以 BOOl 形式返回

包 最多 8 位被打包到一个字节中

普特 A 的位设置为某个值

解压 A 节以单个位的形式返回

导数 局部推导

10-66 CoDeSysV2.3版本
附录 E:-运算符和库模块概述

完整的 完整的

LIN_TRAFO 真实价值的转变

STATISTICS_INT 最小值、最大值、INT 格式的平均值

STATISTICS_REAL 最小值、最大值、平均值,以 REAL 格式

方差 方差

帕金森病 PD控制器

PID的 PID控制器
眨眼 脉动信号

FREQ_MEASURE 测量布尔输入信号的频率

根 周期函数

字符曲线 线性函数

RAMP_INT 限制函数 beeingfed (INT)的降序的上行

RAMP_REAL 限制函数 beeing 馈电的下行(REAL)

磁滞现象 磁滞现象

极限报警 监视输入值是否超过定义范围的限制

CoDeSysV2.3版本 10-67
附录 E:-运算符和库模块概述

10-68 CoDeSysV2.3版本
附录 F:-命令行-/命令文件

附录F: 命令行-/命令文件

10.24 命令行命令
启动 CoDeSys 后,您可以在命令行中添加命令,这些命令将在程序执行期间断言。这些命令以 “/” 开
头。不考虑小写字鯦的大小写/使用。命令将按从左到右的顺序执行。

/在线 启动后,CoDeSys会立即尝试与当前项目一起上线。

/批 CoDeSys 在没有用户界面的情况下启动,并返回第一个错误的错误代码,即第
一个命令的返回值,该命令以警告终止。处理完命令文件后,CoDeSys 将立即
终止。一旦处理第一个命令出现错误,命令文件的处理将立即中止。警告不会终
止处理。如果既没有发生错误也没有出现警告,则返回值S_OK。返回值始终编
码为 HRESULT。

/跑 登录后,CoDeSys启动应用程序。仅与 /online 结合
使用有效。
/show ... 可以对 CoDeSys 框架窗口进行设置。
/show 隐藏 该窗口将不会显示,也不会在任务菜单中显示。

/显示图标/显示
窗口将在显示中最小化。
最大值/显示正
窗口将在显示中最大化。

窗口将以与上次关闭时相同的状态显示。

/out <outfile> 所有消息都显示在消息窗口中,并且还写入文件 <outfile> 中。

/noinfo CoDeSys 启动时没有初始屏幕


/userlevel<组> 用户组的定义(例如,用户组 0 为“/userlevel0”)
/password <password> 直接输入用户组密码(例如“/passwordabc”)

/openfromplc 将加载当前在连接的目标系统上可用的项目。

/visu下载 如果 CoDeSysHMI 从与目标系统上当前可用的项目不匹配的项目启动,则将提


供下载。(对话框,以“是”或“否”关闭)。

/notargetchange 目标系统的更改只能通过命令文件完成。请参 第 10.25 章 “target...” 命令。

/cmd<cmd文件> 启动 <cmdfile> 的命令后,执行。

对于命令行,请遵循以下语法:
“<CoDeSys-exe- 文 件 的 路 径 >” “< 项 目 的 路 径 >” /<command1> /<command2> ....
命令行示例:

项目 ampel.pro 打开,但未打开任何窗口。将执行命令文件command.cmd中包含的命令。在路径两边加上
双引号。
“D : \dir1\codesys”“C : \projects\ampel.pro”/show 隐 藏 /cmd command.cmd

CoDeSysV2.3版本 10-69
附录 F:-命令行-/命令文件

10.25 命令文件(cmdfile)命令
有关命令列表,请参阅下表,这些命令可在命令文件(<cmdfile>)中使用。然后可以通过命令行调用的
命令文件( 上文)。没有区分大小写。命令行将在消息窗口中显示为消息,并且可以在消息文件中给
出( 下文),但命令以“@”为前缀。

分号(;) 后面的所有符号都将被忽略(注释)。包含空格的参数必须用引号括起来。仅当命令文件是在
ANSI代码中创建时,才能使用变音符号。关键字可以在命令参数中使用。在以下命令说明表之后找到的
关键字列表。

用于控制后续命令的命令:

onerror 继续 即使发生错误,也会执行后续命令。
OnError 中断 如果检测到错误,则不会再执行后续命令。

在线菜单的命令:

在线登录 使用加载的项目登录(“在线登录”)
在线注销 注销(“在线”、“注销”)
在线运行 应用程序启动(“在线”、“运行”)
在线停止 停止应用程序(“联机”、“停止”)
在线启动项目 创建启动项目。此命令可以在离线和在线模式下应用!(另请参阅第
4.6 章关于命令“在线”“创建引导项目”的说明!

在线源码下载 将项目源代码下载到PLC(“在线”,“源代码下载”)

在线咨询是 打开模拟模式(“在线”、“模拟”)
在线SIM卡关闭 关闭模拟模式(“在线”、“模拟”)

文件菜单的命令:

文件NEW 创建一个新项目(“文件”、“新建”)
文件打开 <ProjectFile> 将加载项目 <projectfile> ('File', 'Open')
可能的添加:

/readpwd:<readpassword> 此处提供了读取访问的密码,以便在打开受读取保护的项目时不会出
现要求输入密码的对话框。

/writepwd:<writepassword> 此处提供了完全访问权限的密码,因此在打开项目时不会出现要求输
入密码的对话框。
文件关闭 当前项目将被关闭(“文件”、“关闭”)
文件保存 当前项目将被存储(“文件”、“保存”)
文件另存为<projectfile> 当前项目将以文件名 <projectfile> ('File', 'Saveas')保存为:在当前
CoDeSys 版本下,项目将另存为 <projectfile>.pro。如果要将项目另存
(可选)添加: 为内部或外部库,或者保存为旧版 CoDeSys 的项目,请将
<类型><版本>

10-70 CoDeSysV2.3版本
附录 F:-命令行-/命令文件

相应的命令: <type> 的可能条目:“internallib” 另存为内部库:


“externallib” 另存为外部库:“pro” 旧版本另存为项目: <版本>的有
效条目: 15、20、21、22(产品版本 1.5、2.0、2.1、2.2)示例:
“filesaveaslib_xyinternallib22”-> 在当前 CoDeSys 版本中创建的
项目 “projectxy.pro” 将保存为 V2.2 的 “lib_xy.lib”。

文件另存为<projectfile> 当前项目将以文件名 <projectfile> ('File', 'Saveas')保存

FilePrinterSetup<文件名>.dfr 定义文档框架文件(“文件”打印机设置“),并选择性地定义打印选
(可选)添加: 项”每个对象的新 面“或”每个子对象的新 面“之一;这些设置会影
pageper对象或 响文档的打印(项目文档, 下文)
pagepersubject

文件存档 <文件名>.zip 该项目将存档在具有给定文件名的 zip 文件中(“文件”保存/邮件存档


“)
文件退出 CoDeSys 将被关闭(“文件”、“退出”)

项目菜单的命令:

项目构建 加载的项目将以增量方式编译('Project', 'Build')

项目重新生成或项 加载的项目将被完整编译('Project', 'Rebuild')


目编译

项目清洁 当前项目中的编译信息和在线变更信息将被删除(“项目”、“清理项目
”)
项目检查 将检查加载的项目(“项目”、“全部检查”)
项目编译 当前项目将由 “Rebuildall” ('Project', 'Rebuildall')编译

项目检查 将检查当前项目(“项目”“检查”)
项目构建 将构建当前项目('Projekt', 'Build')
Innflutningur verkefnis 文件 <file1>...<fileN> 导入到当前项目('Project', 'Import')。关于:
<file1> ...<fileN> 可以使用通配符,例如“projectimportC:\projects\*.exp”将导入目录
C:\projects 中扩展名为 *.exp 的所有文件。

Útflutningur verkefna <expfile> 当前项目将导出到文件 <expfile> ('Project', 'Export')中

项目expmul 当前项目的每个对象都将导出到自己的文件中,该文件获取对象
的名称。
项目文档 整个项目将在默认打印机上打印(“项目”“文档”,另请参阅上面
的“文件打印机设置”)

CoDeSysV2.3版本 10-71
附录 F:-命令行-/命令文件

用于控制消息文件的命令:

út opnaðu <msgfile> 文件 <msgfile> 将作为消息文件打开。将附加新消息

关闭 当前显示的消息文件将被关闭。
出清除 当前打开的消息文件的所有消息都将被删除。

用于控制消息的命令:

回声上 命令行将显示为消息。
回声关闭 命令行不会显示为消息。
echo<文本> <text>将显示在消息窗口中。

用于控制对象替换的命令,分别用于控制导入、导出、复制的文件:

替换yesall 全部替换(任何“查询”命令都将被忽略;不会打开任何对话框)

替换Noall 不替换(任何“查询”命令都将被忽略;不会打开任何对话框)

替换查询 如 果 设 置 了 “query on” 命 令 , 则 即 使 有 “replace yesall” 或 “replace


noall”命令,也会打开一个关于替换对象的对话框

用于控制 CoDeSys 对话框默认参数的命令:

查询 将显示对话框,需要用户输入
查询关闭确定 所有对话框的响应都像用户单击了“确定”按钮一样
查询关闭否 所有对话框的响应都像用户单击了“否”按钮一样
查询关闭取消 所有对话框的响应都像用户单击了“取消”按钮一样

用于将命令文件作为子程序调用的命令:

调 用 <parameter1> 命令文件将作为子程序调用。最多可以传递 10 个参数。在调用的文件


...<parameter10> 中,可以使用 $0-$9 访问参数。

调 用 <parameter1> 命令文件作为子例程调用。最多可以委托 10 个参数。在调用的子例程


...<parameter10> 中,您可以使用 $0-$9 访问参数。

设置 CoDeSys 使用的目录(->项目选项对话框,类别“目录”,子类别“常规”):如果使用以下命令之一
定义了多个目录,则必须用分号 + 空格分隔这些目录,并且必须用双引号括起来整行目录。示例,两条
路径:

dirlib“D:\codesys\Libraries\Standard;D:\codesys\Libraries\NetVar”
杜松<覆盖着密集的颚骨> 将 <libdir> 设置为库目录
目录编译<compiledir> 将 <compiledir> 设置为编译文件的目录
目录配置<configdir> 将 configdir>设置为配置文件的目录<
目录上传<uploaddir> 将 uploaddir>设置为上传文件的目录<

10-72 CoDeSysV2.3版本
附录 F:-命令行-/命令文件

延迟处理 CMDFILE:

延迟5000 等待 5 秒

控制观察和配方管理器:

监视列表加载<文件> 加载另存为 <file> 的监视列表并打开相应的窗口(“附加”、“加载监视


列表”)
监视列表保存 <文件> 将当前监视列表保存为 <file> ('Extras', 'SaveWatchlist')
监视列表集<文本> 监视列表设置为活动状态(对应于“监视和配方管理器”窗口左侧的列表
选择)
观察列表已读 更新 Watch 变量的值('Extras', 'Readrecipe')
监视列表写入 使用在“监视”列表中找到的值填充“监视”变量(“附加”、“编写配方”)

链接库:

bókasafn bæta við 将指定的库文件附加到当前打开的项目的库列表中。如果文件路径是相


<bókasafnsskrá1> 对路径,则使用项目中输入的库目录作为路径的根目录。
<bókasafnsskrá2> ..<bókasafn
fileN>
bókasafn eyða [<library1> 从当前打开的项目的库列表中删除指定的库。
<library2> .. <libraryN>]

复制对象:

对象复制<源项目文件><源路 将对象从源项目文件的指定路径复制到已打开项目的目标路径。
径><目标路径>
如果源路径是对象的名称,则将复制该路径。如果是文件夹,则将复制
此文件夹下的所有对象。在这种情况下,将复制源文件夹下方的文件夹
结构。如果目标路径尚不存在,则将创建该路径。

特定对象的只读访问权限:

对象SetReadOnly 设置对对象的只读访问权限;定义对象类型和大小写
<TRUE|FALSE><对象类型>|< 对象类型 POU、DUT、GVL、VIS 也是对象的名称。可能的对象类型:
对象名称> pou、dut(数据类型)、gvl(全局变量列表)、vis(可视化)、cnc(
CNC 对象)、liblist(库)、targetsettings、toolinstanceobject(特定工
具实例)、toolmanagerobject(工具树中的所有实例)、
customplconfig(PLC 配置)、projectinfo(项目信息)、taskconfig(任
务配置)、trace、watchentrylist(监视和配方管理器)、alarmconfig(
警报配置),例如“objectsetreadonlyTRUEpouplc_prg”将设置
PLC_PRG只读访问权限

输入通信参数(网关、设备):

本地网关 将本地计算机上的网关设置为当前网关。
gatewaytcpip<地址><端 将指定远程计算机中的网关设置为当前网关。
口>
<地址>:远程计算机的 TCP/IP 地址或主机名 <端口>:远程网关的
TCP/IP 端口重要提示:只能访问未设置密码的网关!

CoDeSysV2.3版本 10-73
附录 F:-命令行-/命令文件

设 备 GUID <GUID> 将具有指定 GUID 的设备设置为当前设备。GUID 必须采用以下


格式:
{01234567-0123-0123-0123-0123456789ABC}
大括号和连字符必须出现在指定位置。

设备实例<实例名称> 将当前设备的实例名称设置为指定的名称

设 备 参 数 <Id> <Value> 将指定的值分配给具有指定 ID 的参数,然后由设备解释该值。

系统调用:

system<命令> 执行指定的操作系统命令。

选择目标系统:

目标<Id> 设置当前项目的目标平台。如果 CoDeSys 开始使用命令行选项


“/notargetchange”(参 第 10.24 章),则只能通过此命令设置目标。

查询系统状态:

状态:脱机 如果当前编程系统和目标系统之间没有连接(脱机模式),则返回
“S_OK”,否则返回“HRESULT[0x800441f0)”(联机模式)。

在线状态 如果当前编程系统和目标系统之间存在连接(联机模式),则返回
“S_OK”,否则返回“HRESULT[0x800441f0)”(脱机模式)。

用户组密码:
使用以下设置-打开受用户组密码保护的项目时-您可以输入特定用户组的密码。因此,即使关闭了用户输
入对话框的显示(“查询关闭...”, 上文),也可以通过命令文件打开受密码保护的项目。用户组和密码
的条目必须放在命令“fileopen...”之前!

例:
用户级别 0 用户密码 AAA 文件打开“D:\Codesys\Projects\xxxx.pro”查询关闭正常

用户级别 用户组,其密码在项目中定义,并由后续命令“用户密码”提供。

用户密码 上述命令“usergroup”指定的用户组的密码。

可视化设置:

视觉设置... 对应于可以在“附加”、“设置”、“语言”类别中为可视化完成
的可能设置,或者在“目标设置”、“可视化”类别中。

... 语言文件 ||关闭 选项 “ 语言文件 ” 被激活(打开)或停用(关闭)。如果激活


,“动态文本”选项将被停用。

10-74 CoDeSysV2.3版本
附录 F:-命令行-/命令文件

... 设置 languagefile<文件路径 要 使 用 的 语 言 文 件 ( .tlt 或 .vis ) 的 规 范 。 示 例 : “visual


语言文件> settings set languagefile proj1.tlt.

...DynamicTexts 上 ||关闭 选项“动态文本”将被停用(打开)或停用(关闭)。在激活的


情况下,“语言文件”选项将被停用。

...DynamicTextFiles<文件路径>|< 指定要使用的语言文件路径列表。之前的列表将被删除。
文 件 路 径 > |...
示例:“视觉对象设置 D:\dynfiles\p1.xmlD:
\dynfiles\p2.xml”
...dynamictexthideelements 开启 ||关闭 激活或停用选项“如果未进行文本替换,则禁止显示元素”。

... 语言<语言> 指定要使用的语言;示例:“视觉设置语言德语”“”

...tablekeyboardusage_web||关闭 激活或停用 Web 可视化(目标设置)中的“表格的键盘用法”


选项。"
...tablekeyboardusage_codesys||关闭 激活或停用 CoDeSys 或 CoDeSys-HMI(目标设置)中的“表
格键盘用法”选项。
VisualWebvisuactivation 上 ||关闭 激活或停用选项“Web-Visualization”(目标设置))。

ENI项目数据库中有关管理项目的命令:
在以下命令说明中,使用了占位符:
<category>:替换为“project”或“shared”或“compile”,具体取决于以下数据库类别:项目对象、共享对
象、编译文件
<POUname>:对象的名称,对应于 CoDeSys 中使用的对象名称。
<Objecttype>:替换为快捷方式,该快捷方式作为扩展名附加到数据库中对象的 POU 名称中,并反映
对象类型(由对象类型列表定义,请参阅 ENI 管理,“对象类型”)。

示例:对象“GLOBAL_1.GVL”->POU名称为“GLOBAL_1”,对象类型为“GVL”(全局变量列表)

<comment>:替换为注释文本(用单引号括起来),该文本将与特定操作一起存储在版本历史记录中。

通过 ENI 服务器配置项目数据库链接的命令:
ENI 开 选项“使用源代码管理(ENI)”将被激活或停用(对话框“项目”、“选项
启 ENI ”、“项目源代码管理”)
关闭
ENI 项目 readonly 开启 数据库类别“项目对象”的“只读”选项将被激活或停用(对话框“项目”、“
ENI 项目只读关闭 选项”、“项目对象”)

ENI 共享只读开启 ENI 共 数据库类别“分片对象”的“只读”选项将被激活或停用(对话框“项目”、“


享只读关闭 选项”、“共享对象”)

eni set local <POUname> 该对象将被分配到“本地”类别,即它不会存储在项目数据库中(对话框“


项目”“对象”“属性”“数据库连接”)

eni set shared <POUname> 该对象将被分配到类别“共享对象”(对话框“项目”、“对象


”、“属性”、“数据库连接”)
eni 设置项目<POUname> 该对象将被分配到“项目对象”类别

CoDeSysV2.3版本 10-75
附录 F:-命令行-/命令文件

(对话框:'Project', 'Object', 'Properties', 'Database-connection')


eni<类别>服务器 为“项目对象”类别配置与 ENI 服务器的连接(对话框“项目”、“选项
<TCP/IP_Address> ”、 “ 项 目 数 据 库 ” ) ; 示 例 : eni project server localhost 80
<Port><Projectname><用 batchtest\project EniBatch 批 处 理 ( TCP/IP 地 址 = localhost , 端 口 =
户名><密码> 80,项目名称 =batchtest\project,用户名 =EniBatch,密码 = 批处
理)

eni 编译 symoneni “编译文件”类别对象的“创建 ASCII 符号信息(.sym)”选项将被激活/


编译 sym 关闭 停用(对话框“项目”、“选项”、“项目源代码管理”、“编译文件”的
“ENI 设置”)

ENI 编译 SDB 开启 “编译文件”类别对象的“创建二进制符号信息(.sym)”选项将被激活/


ENI 编译 SDB 关闭 停用(对话框“项目”、“选项”、“项目源代码管理”、“编译文件”的
“ENI 设置”)

eni compile prg on “编译文件”类别对象的“创建启动项目”选项将被激活/停用(对话框“项目


eni compile prg off ”、“选项”、“项目源代码管理”、“编译文件”的“ENI 设置”)

菜单“项目”“数据库链接”的命令,用于处理数据库:

ENISet<类别> 将对象分配给命名的数据库类别(“定义”)
'eni set <category>set 以空格分隔的对象将被分配到命名的数据库类别。(“多重定义”)示例:
<Objecttype>: “enisetprojectpou:as_fubpou:st_prg”->对象(pou) as_fub,
<POUname> st_prg被分配到类别“项目对象”
<Objecttype>:
<POUname>

ENI<类别>GetAll 将从数据库中调用命名类别的所有对象的最新版本(“获取所有最新版本
”)
'eni <category>get 命名类别的对象(以空格分隔列出)将从数据库中调用。(“多重定义
<Objecttype>: ”)。(“获取最新版本”)示例:“eniprojectgetpou:as_fubgvl:
<POUname> global_1”->将从数据库中调用 POUas_fub.pou 和全局变量列表
<Objecttype>: global_1.gvl
<POUname>

ENI<类别>checkoutall“< 将从数据库中检出命名类别的所有对象。定义的注释将与签出操作一起
评论>” 存储在版本历史记录中。

eni < 类 别 > checkout 所有以空格分隔的对象(Objecttype:POUname)都将从数据库中检出。


“<comment>” 定义的注释将与签出操作一起存储在每个特定对象的版本历史记录中。
<Objecttype>:
<POUname>
<Objecttype>:
<POUname> 示例: “eniprojectcheckout”forworkingonxy“pou:as_fubgvl:
global_1” 将 检 出 POU as_fub 和 全 局 变 量 列 表 global_1 , 注 释 “for
workingonxy”将随此操作一起存储

10-76 CoDeSysV2.3版本
附录 F:-命令行-/命令文件


ENI <category>checkinall 将签入项目数据库中受源代码管理的项目的所有对象。定义的注释将与
“<评论>” 签入操作一起存储。

eni <category> checkin 所有以空格分隔的对象(Objecttype:POUname)都将签入到数据库中。


“<comment>” 定义的注释将与签入操作一起存储在每个特定对象的版本历史记录中。(
<Objecttype>: 上文:结帐)定义的注释将与签入操作一起存储在每个特定对象的版本
<POUname> 历史记录中。
<Objecttype>:
<POUname>

命令参数的关键字:
以下关键字(包含在“$”中)可用于命令参数:

$PROJECT_NAME$ 当前 CoDeSys 项目的名称(不带扩展名“.pro”的文件名,例如


“project_2.pro”)

$PROJECT路径$ 当前 CoDeSys 项目文件所在的目录的路径(不标明驱动器,末尾不带反斜


杠,例如“projects\sub1”)。

$PROJECT_DRIVE$ Drive,当前 CoDeSys 项目所在的位置(末尾没有反斜杠,例如“D:”)

$COMPILE_DIR$ 当前 CoDeSys 项目的编译目录(带有驱动器的标识,末尾没有反斜杠,例


如“D:\codesys\compile”)

$EXE_DIR$ codesys.exe文件所在的目录(指示驱动器,末尾不带反斜杠,例如 D:
\codesys)

命令文件示例:
如下所示的命令文件将打开项目文件 ampel.pro,然后加载一个监视列表,该列表存储为 w.wtc,然后启
动应用程序并在 1 秒延迟后将变量的值写入监视列表 watch.wtc(将被保存),并最终关闭项目。

文件打开 C:\projects\CoDeSys_test\ampel.pro 查询关闭 OK 监视列表加载 C:\work\w.wtc 在线登录在线运行延迟


1000 监视列表读取监视列表保存 $PROJECT_DRIVE$\$PROJECT_PATH$\w_update.wtc 在线注销文件关闭

此命令文件将打开项目 ampel.pro,将加载现有的监视列表w.wtc,将启动应用程序,1秒后将变量值写入
监视列表w_update.wtc,该列表将保存在目录“C:\projects\CoDeSys_test”中,然后将再次关闭项目。

命令文件在命令行中调用,如下所示:
“<codesys.exe>路径”/cmd“<cmd 文件的路径>”

CoDeSysV2.3版本 10-77
附录 F:-命令行-/命令文件

10-78 CoDeSysV2.3版本
附 录 G : - Siemens Import

附录 G: 子进口
在“ 项 目 ” 的 “ SiemensImport”子菜单中,您可以找到允许您从 SiemensSTEP5 文件导入 POU 和变量
的命令。“从 SEQ 符号文件导入”命令允许您从 STEP5 符号文件导入全局变量。在命令“从 S5 项目文件
导入”之前运行此命令,以便在导入 POU 时可以创建可读的符号名称。这两个命令允许您从 STEP5 程
序文件导入 POU。完成此操作后,POU 将插入到打开的 CoDeSys 项目中。您可以选择 POU 是保留
STEP5IL 语言还是转换为 IEC 语言。

建议将要导入的 CoDeSys 项目为空。当然,您必须确定库 standard.lib 已链接到您的项目,否则您将无


法导入计数器和计时器。

10.26 从 SEQ 符号文件导入


SEQ 格式是 STEP5 项目中符号文件的常用格式。可以从 SEQ 符号文件(*.seq)中读取符号分配。符号
赋值包含S5程序元素(输入、输出、内存位置等)的绝对地址、相应的符号标识符,还可能包含有关符
号的注释。SEQ 文件是每行包含一个此类型的赋值的文本文件。行中的每个“字段”都由制表符分隔。此
外,每行只能包含一条注释,该注释必须以分号开头。

SEQ 文件中的符号赋值将转换为基于 IEC61131-3 的全局变量声明。在此过程中,符号名称、地址和注


释(如果有)将被传输。该地址将适应 IEC61131-3(百分号等)。由于 S5 符号名称可以包含 IEC 标识
符中不允许的字符,因此如有必要,将更改名称。无效字符将替换为下划线字符。如果一行中有多个下划
线字符,则每隔一个下划线字符将被替换为一个有效字符(例如,“0”)。如果在转换过程中更改了符号
名称,则更改后将在注释中添加原始名称。SEQ 评论行将作为评论传输。可以创建多个全局变量块。每
个块包含少于 64K 的文本。

所描述的 SEQ 格式用于 子 STEP5-PG 软件、大多数版本的 SiemensSTEP7-300/400 和


DELTALOGIC 的 ACCON-PG。在 3.x 或更高版本中创建的 STEP7-SEQ 文件支持此格式。STEP7 版本
2.x 可以导出不支持的其他 SEQ 格式。它不使用分隔符(Tabs),而是基于符号名称的固定 度,并在
必要时使用空格。

首先在标准 Windows 对话框中选择 SEQ 文件。然后执行导入,完成后将编译全局变量列表。在此过程


中,当 STEP5/7 标识符转换为 IEC61131-3 兼容标识符时,可能会出现错误。例如, STEP5 标识符
“A!”和“A?”都将转换为 IEC 标识符“A_”。此时,将显示以下消息:“A_具有相同标识符的多个声明
”。更改其中一个变量。

在绝对任何其他情况下,都不应对全局变量列表进行任何更改。如果您识别出在 SiemensPLC 中有效但


在 Controller 中无效的地址:即使您在编译时收到 1000 条错误消息,也请暂时不要理会它们。为了导入
POU,需要的地址与它们完全相同。

如果要导入的项目已经包含全局变量 x 及其地址的声明(例如,“%MX4.0”),则可能会发现 SEQ 导入


包含使用相同地址定义的变量。这在 IEC61131-3 中是允许的,但通常不符合用户的最佳利益。不会出
现任何错误消息,但您的程序可能无法正常运行,因为该地址将在不同的 POU 中使用,没有上下文引
用。为避免此问题,最好导入到空项目或到目前为止尚未使用绝对地址的项目中。

STEP5/7 执行 SEQ 导入后,可以导入程序组织单元。您还可以添加将在 PLC 配置中使用的输入和输


出。这些地址对于 STEP5/7 导入不是必需的,但会检查地址,并在重新生成项目时显示为错误。

CoDeSysV2.3版本 10-79
附 录 G : - Siemens Import

10.27 从 S5 项目文件导入
POU 可以从 SiemensS5 程序文件(*.s5d)中读取数据。它使用的代码是可由 S5SPS 运行的 MC5 代
码。通常, MC5 代码与程序员熟悉的 STEP5 指令列表(不带符号名称)相对应。 S5D 还包含来自
STEP5 指令列表的行注释。由于 S5D 文件仅包含绝对地址,没有符号名称,因此 CoDeSys 在当前
CoDeSys项目变量中搜索符号名称。如果未找到,则绝对地址保持不变。因此,如果您觉得符号名称有
用,请在 S5 文件之前导入 SEQ 文件。

首先在标准 Windows 对话框中选择 S5D 文件。将弹出另一个框,其中包含您可以从中进行选择的 POU


列表。最好选择所有这些。您也可以选择将 POU 保留为 STEP5IL 语言或将其转换为 IL、LD 或 FBD。

将尽可能使用符号名称代替绝对名称。如果 CoDeSys 在导入过程中找到指令“UM12.0”,它将搜索在内


存 位 置M12.0设 置 的 全 局 变 量 。 将 采 用 符 合 此 描 述 的 第 一 个 声 明 , 并 将 指 令 导 入 为“U-Name”而 不 是“U
M12.0”(内存位置的标识符名称为 M12.0)。

有时,在导入或代码转换过程中可能需要其他变量。这些附加变量将全局声明。例如,需要R_TRIG实例
来重现边沿触发的输入(例如,在 S5 计数器中)。

10.28 将 S5 转 换 为 IEC 61131-3


如果选择 IEC 语言作为 STEP5 导入的目标语言,则必须注意项目的某些部分无法转换为 IEC61131-3。
如果 S5POU 的一部分包含无法转换为 IEC61131-3 的代码,则将生成错误消息,并将原始 STEP5IL
代码的关键部分作为注释插入 IECPOU 中。然后,您必须替换或重写此代码。仅在特定 S5CPU 中起作
用的系统命令无法转换为 IEC。“STEP5 核心命令列表”只需点击一个按钮即可转换为 IEC 代码,尽管
STEP5 的构思方式与 STEP5 截然不同。

可转换为 IEC61131-3 的核心命令列表包含可在 STEP5 编程系统中转换为 LD 或 FBD 的所有命令,以


及 STEP5-PB(程序块)中允许的所有命令。此外,在 IL 或 FB(功能块)中允许的 STEP5 命令中,可
以转换为 IEC 的命令主要是每个 S5CPU 中可用的命令(例如,绝对和条件跳转、移位命令等)。

转换的唯一例外或限制与重置定时器有关,这在 STEP5 中可以完成,但在 IEC61131-3 中通常不行。

各个可转换命令:
U、UN、O、ON、S、R、= 具有以下位操作数:I(输入)、O(输出)、M(存储位置)、S(S 存储位
置)、D(数据块中的数据)

U、UN、O、ON 具有以下操作数:T(定时器)、C(计数器)

S、R 具有以下操作数:C

SU、RU、P、PN 具有以下操作数:E、A、M、D

O, O(, U(,)

具有以下操作数范围的 L、T:E、A、M、D、T、C、P(外围)和操作数大小:B(字节)、W(字)、D(双
字)、L(左字节)、R(右字节)

L 具有以下常量格式:DH、KB、KF、KH、KM、KT、KZ、KY、KG、KC

具有以下操作数的 SI、SE、SA:T

ZV、ZR 具有以下操作数:C
+、-、X、:使用以下操作数:F(定点数)、G(浮点数)+、-,使用以下操作数:D(32

10-80 CoDeSysV2.3版本
附 录 G : - Siemens Import

位不动点数)

!=、><、>、<、>=、<=,使用以下操作数:F、D、G

使用以下操作数进行 ADD:BF、KF、DH

SPA、具有以下操作数的 SPB:PB、FB(具有大多数参数类型)、SB

A、具有以下操作数的 AX:DB、DX

BE、BEA、BEB

BLD、NOP、***

威斯康星大学、OW、XOW

邱、KZW、KZD

SLW、SRW、SLD、RRD、RLD

SPA=,SPB=

SPZ=、SPN=、SPP=、SPM=

D、我
大多数正式操作数命令
不可转换的命令
U、UN、O、ON、S、R,= 具有以下位操作数:定时器和计数器位(T0.0、C0.0)

L、T 具有以下操作数范围:Q(扩展外围)

具有以下操作数的 LC:T、C

SV、SS、R、FR 具有以下操作数:T

具有以下操作数的 FR:C

用于启动、重置和释放定时器的正式操作数命令

操作数范围为 BA、BB、BS、BT(操作系统数据)的所有命令。

SPA、具有以下操作数的 SPB:OB(仅适用于某些 S5 和某些 OB)

BA、BAB 具有以下操作数:FX

E、EX 具有以下操作数:DB、DX

STP、STS、STW

DEF、DED、DUF、哑弹

上海大众、SVD

SPO=、SPS=、SPR

AS、AF、AFS、AFF、BASS、BAF

耳鼻喉科

SES、SEF

B 具有以下操作数:DW、MW、BS

LIR、TIR、LDI、TDI、TNW、TXB、TXW

MAS、MAB、MSA、MSB、MBA、MBS

MBR、ABR

低温、低铁、天合、三甲

CoDeSysV2.3版本 10-81
附 录 G : - Siemens Import

TSG公司

LB、TB、LW、TW 具有以下操作数:GB、GW、GD、CB、CW、CD

ACR、TSC

商业智能

SIM、LIM
如果检查无法转换的命令,您将看到它们通常是仅在特定 CPU 上可用的特殊命令。无法转换为 IEC 的标
准命令包括:加载 BCD 编码的定时器或计数器值(LCT、LCC)、定时器类型 SV 和 SS 以及重置定时
器。

数据块
STEP5数据块被转换为有标头但没有代码的POU(程序组织单元)。如果将数据块用作普通变量范围,
这很方便,但如果尝试在 STEP5 程序中手动实现实例数据块等概念,则不方便。

从STEP5导入时的其他问题
STEP5 导入可以通过以下方式手动改进。
1. 单词变量中的时间值
在STEP5中,每个字地址中都允许有一个时间值,无论是在存储器位置区域还是在数据块中。这在IEC
61131-3 中是不允许的,因为 TIME 变量或常量与 WORD 地址不兼容。这可能会导致从 STEP5 导入时
创建错误的命令序列。如果您打开数据块并为相关地址选择时间格式(KT),则不会发生这种情况。换
句话说,只有当 STEP5 程序值得改进时,才会发生此错误。发生这种情况时,您将看到消息“不兼容的
类型:无法将 WORD 转换为 TIME”或“不兼容的类型:无法将 TIME 转换为 WORD”。然后,必须修改
WORD 变量的声明(如果可用)并将其转换为 TIME 变量。

2. 无法访问数据块
IEC61131-3 中没有数据块,不可能在 IEC 中完全重建它们。在 STEP5 中,它们被用作普通变量范围(
几乎类似于内存位置范围),也以数组( BDW )、指针( BMW100ADB0 )或联合(数据库中的字
节、字或双字访问)的形式使用。STEP5 转换只有在结构化的情况下才能转换 DB 访问。尝试访问数据
库时,必须知道哪个数据库处于打开状态(ADB)。当 ADB 操作更接近同一 POU 中的开头时,或者当
DB编 号 作 为 正 式 参 数 包 含 在POU中 时 , 您 必 须 注 意 这 一 点 。 如 果 在 第 一 次 访 问 数 据 库 之 前 未 找 到A
DB ,则无法转换 POU 。警告 “ 没有打开数据块(插入 ADB ) ” 会通知您这是这种情况。在转换后的
POU 中,您将看到对名为 “ErrorDW0” 的未定义变量的访问(例如),该变量将导致在编译新转换的
POU 时生成错误消息。然后,您可以将变量替换为对正确数据库的访问权限(例如,将“ErrorDW0”替
换 为 “DB10.DW0“ ) 。 另 一 种 选 择 是 丢 弃 转 换 后 的 POU , 并 在 POU 的 开 头 插 入 一 个 A DB

步骤5.
访问数据字(数据字节等)的 STEP5POU 应始终首先打开数据块。如有必要,应在导入 POU 之前通过
插入适当的 ADB 命令来改进 POU,最好在 POU 的开头插入。否则,必须在事后编辑转换后的 POU。

如果必须部分跳过多个 ABD 操作,则转换可能会出现错误,即可能会生成访问错误数据库的代码。

3. 与数据块访问相关的更高概念
在 STEP5 中,您可以选择通过让 Code 块打开数据块的索引版本来创建类似于实例的内容。这可以通过
以下示例代码序列来完成:

L KF +5

10-82 CoDeSysV2.3版本
附 录 G : - Siemens Import

T MW 44

B 分子量44

A 个数据库0
DB5 在此序列的末尾打开(通常,在内存位置字 %MW44 中找到其编号的数据库将被打开)。转换中无
法识别此类访问,这意味着转换后必须进行以下更改:

首 先 , 必 须 导 入 所 有 充 当 实 例 数 据 库 的 数 据 库 , 例 如DB5 和DB6。 它 们 将 作 为 普 通 的IL、LD 或FBD


POU导入,无论您喜欢哪种方式。POU没有代码,而是一个包含局部变量定义的标头。现在可以从这些
POU 创建类型实例。创建一个用户定义的类型(例如,名为 DBType),并将局部变量和转换后的数据
库作为组件插入。然后通过写入全局变量列表来创建此类型的全局实例:

VAR_GLOBAL

DB5、DB6:DBType;

END_VAR
现在,您可以从项目中删除转换后的数据库。
然后,您必须通过为相应的 POU 提供另一个 DBType 类型的VAR_INPUT参数来创建数据库的索引版本
的副本。现在必须将POU中的数据访问重定向到此实例。然后,在打开其中一个实例数据库时,必须将
其作为实际参数包含在内。

4.所谓集成S5功能块,具有STEP5接入接口,具有特殊功能,但其实现要么不是用STEP5(或MC5)编
写的,要么是受特殊机制保护的。此类 POU 一般是固件,只能“导入为接口”。此类 POU 的实现部分是
空的。这些 POU 通常必须在转换后重新编程。

5. 还有一些固件 OB 没有接口,但其代码在 805xx 汇编程序(例如)中,而不是在 STEP5 中。这主要


影响列为 OB251 的 PID 调节器,它通过您可以选择的单独(数据)块获取其参数和局部变量。PID稳压
器、相应的数据块或使用稳压器访问数据块的其他POU都不能转换为IEC。如果没有PID调节器,在转换
过程中为数据块和其他POU创建的IEC代码将毫无意义。各个程序部分的含义可以在 CPU 编程手册中找
到。

6. 配置数据块(如 DB1[S5-95U]、DX0 和 DX2)有时用于配置 S5CPU 和其他已转换为无用 IECPOU


的程序集。大部分此类数据的含义可以在CPU编程手册中找到。对于其余部分,您必须使用可以评估配
置数据库的S5编程系统。该配置会影响通信、模拟值处理、多处理等设置。因此,甚至考虑在非 子
SPS 上使用这些 POU 都是没有用的。

导入完成后,您必须找到显示的错误,然后修复、添加和重写受影响的点。这些景点标有如下评论:

(*警告!不可转换的 STEP5/7 代码显示为注释:*)


紧随其后的是不可转换的代码,该代码也显示为注释。
最后,您必须检查地址。原始 Siemens 地址在导入过程中创建。这些地址的格式如下:

位:byte-offset.bit-nummer
非位:字节偏移
此外,按顺序跟随的字地址也会重叠(仅仅是因为地址中的数字是字节偏移量)。这意味着 %MW32 和
%MW33 有一个重叠的字节,即 %MB33(仅在 SiemensSPS 上)。在 SPS 上,%MW32 和 %MW33
通常彼此没有任何关系。

CoDeSysV2.3版本 10-83
附 录 G : - Siemens Import

您的 PLC 可能具有更多层次结构。例如,非位具有多个互锁级别(“%MW10.0.0”作为 WORD)。您可


以更改地址以使其与您的 PLC 兼容,也可以尝试将它们完全排除在外。请非常谨慎地进行!在最初的
子程序中,字访问和位或字节访问在同一个内存位置进行是很常 的。导入CoDeSys时,此类型的访
问将仅针对数据块正确编译。在这种情况下,CoDeSys 会为数据库中的单词创建 WORD 变量。然后,
当 WORD 访问 DBy 中的单词 x 时,没有问题。然后,尝试访问单词 x、双字或位中的左字节或右字节
将被编译为更复杂的表达式。这不能用内存位置、输入或输出来完成,因为这不能用标准访问方法(例
如,字访问)来完成。如果您使用的是 %MX33.3 和 %MB33 或 %MW32 或 %MD30,则必须手动转换
它们。CoDeSys导入生成的IEC程序肯定无法正常工作。

打开包含所有输入、输出和内存位置的交叉引用列表,找出哪些访问是重要的。删除手动访问的混合。

10-84 CoDeSysV2.3版本
附录 H:-目标设置详解

附录 H:目标设置详解

10.29 类别目标平台中的设置

10.29.1 目标系统 Intel386 兼容,类别目标平台


对话框目标设置“兼容 Intel386”,目标平台

对话框项
平台 目标系统的类型
支持浮球处理器 如果激活:为浮点运算生成 FPU 命令

在多任务环境中调试 如果激活:将生成其他代码,从而允许在多任务环境中进行调试

优化的跳跃 如果激活:比较操作后优化的条件跳转;更快 + 更少的代码(尤其是在 386/486 上);


在流量控制模式下,包含跳转前条件的行将以灰色显示

使用常量优化操作 使用常数( A= A+1 、 A<500 等)优化运算 ; 更快 + 更少的代码(尤其是在


386/486 上);在流量控制模式下,常量将以灰色监控

优化的加载操作含义 不会在对变量/常量进行多次访问时执行任何加载操作;更快 + 更少的代码

CoDeSysV2.3版本 10-85
附录 H:-目标设置详解

10.29.2 目标系统摩托罗拉 68K,类别目标平台


对话框目标设置“摩托罗拉 68K”,目标平台

对话框项
平台 目标类型
CPU 68kCPU 的变体:基本版本 68000 或 CPU32 及更高版本

支持浮球处理器 如果激活:为浮点运算生成 FPU 命令


使用 16 位跳转偏移 如果激活:用于计算布尔表达式的跳转使用相对 16 位偏移量(可以使用更复杂的表
达式,但代码更大)如果未激活:使用 8 位偏移量

允许字节对齐结构 如果激活:仅寻址偶数地址如果未激活:也可以寻址奇数地

保留寄存器1 A2,A4,A5,A6:指示的地址寄存器是保留的,不使用如果无:代码生成器可以使
用它
保留寄存器2 附加保留地址寄存器。指示的地址寄存器是保留的,不使用如果为“无”,则可以由代
码生成器使用

库数据的基本寄存器 注册以对 C 库中的静态数据进行寻址(在调用库函数之前,它加载了可用内存的地


址)。如果使用“无”A5 作为预设值。

输出模式含义 无 = 无输出汇编程序 = 在编译过程中,在编译目录(“Project/Options/Directories”下


的设置)中创建文件“code68k.hex”。它包含生成的汇编程序代码。

反汇编程序 = 除 1 外,该文件还包含反汇编程序代码

10-86 CoDeSysV2.3版本
附录 H:-目标设置详解

10.29.3 目标系统 InfineonC16x,类别目标平台


对话框目标设置“InfineonC16x”,目标平台

对话框项 意义

平台 目标类型
代码/编译器: 编译目标系统和库期间使用的编译器(在
C 调用约定的帐户)

代码/堆栈大小 最大调用深度(嵌套)

代码/数据 数据内存模型

代码/功能 代码的内存模型

初始化。功能 如果激活:函数包含局部变量的初始化代码

优化 如果激活:常量数组索引的代码优化

输出十六进制文件 如果激活:代码的十六进制转储输出

输出 BIN 文件 如果激活:代码的二进制文件的输出

输出MAP ifactivated=代码映射文件的输出

输出LST ifactivated=代码列表文件的输出

输出 LST ,地址 ifactivated=地址列表的输出


鵓进党/ 设置了数据 指针
DPP0..DPP2型 DPP 用于 DPP0、DPP1、DPP2
在实例中 DPP,用于功能块实例的简短寻址
图书馆/ 库的设置:
法典 代码、表、数据、数据 度、块、引用的起始地址

数据
数据 度
POU
引用

CoDeSysV2.3版本 10-87
附录 H:-目标设置详解

10.29.4 目标系统 IntelStrongARMundPowerPC,类别目标平台


这两个目标系统的对话框项是相同的。
对话框目标设置“PowerPC”,目标平台

对话框项 意义
平台 目标类型
支持浮球处理器 如果激活:为浮点运算生成 FPU 命令
第一个参数寄存器 寄存器,其中传输 C 函数调用的第一个整数参数(范围
(整数) 取决于操作系统)
最后一个参数:寄存器 寄存器,其中传输 C 函数调用的最后一个整数参数(范围
(整数) 取决于操作系统)
注册返回值 寄存器,返回 C 函数调用的整数参数(范围
(整数) 取决于操作系统)
第一个参数寄存器 寄存器 C 函数调用的第一个浮点参数被传输的位置(范围
(浮动): 取决于操作系统)
最后一个参数:寄存器 寄存器 C 函数调用的最后一个浮点参数的传输位置(范围
(浮动): 取决于操作系统)
注册返回值 寄存器,返回 C 函数调用的浮点参数(范围
(浮动): 取决于操作系统)
英特尔字节顺序 如果激活:按照 Intel 地址方案寻址
堆栈上的最大空间 参数堆栈的大小(以字节为单位)。默认值:40
for 参数(Byte)

10-88 CoDeSysV2.3版本
附录 H:-目标设置详解

10.29.5 目标系统MIPS,类别目标平台
对话框目标设置“MIPS”,目标平台

对话框项 意义
平台 目标类型
第一个参数寄存器 寄存器,其中传输 C 函数调用的第一个整数参数(范围
(整数) 取决于操作系统)
最后一个参数:寄存器 寄存器,其中传输 C 函数调用的最后一个整数参数(范围
(整数) 取决于操作系统)
注册返回值 寄存器,返回 C 函数调用的整数参数(范围
(整数) 取决于操作系统)
堆栈上的最大空间 取决于操作系统:参数的最大大小(字节数)、
for 参数(Byte): 可以在堆栈上移交

CoDeSysV2.3版本 10-89
附录 H:-目标设置详解

10.29.6 目标系统“HitachiSH”,类别目标平台
“目标设置”对话框“HitachiSH”,目标平台

对话框项 含义
平台 目标类型
第一个参数寄存器(整 寄存器,其中传输 C 函数调用的第一个整数参数(范围取决于操作系统)
数)

最后一个参数寄存器(整 寄存器,其中传输 C 函数调用的最后一个整数参数(范围取决于操作系统)


数)

注册返回值(Integer) 寄存器,返回 C 函数调用的整数参数(范围取决于操作系统)

堆栈上用于参数的最大空 取决于操作系统:参数的最大大小(字节数),可以在堆栈上移交
间(字节):

支持浮球处理器 为浮点运算生成 FPU 命令


第一个参数寄存器(浮 寄存器 C 函数调用的第一个浮点参数的传输位置(范围取决于操作系统)
点):

最后一个参数寄存器(浮 寄存器 C 函数调用的最后一个浮点参数的传输位置(范围取决于操作系统)


点):

注册返回值(Float): 在返回 C 函数调用的浮点参数的位置寄存器(范围取决于操作系统)

英特尔字节顺序 使用 IntelByte 地址模式

10-90 CoDeSysV2.3版本
附录 H:-目标设置详解

10.29.7 目标系统“兼容 8051”,类别目标平台


对话框目标设置“兼容 8051”,目标平台

对话框项 意义
平台 目标类型
最大堆栈大小:(以字节为单位) 最大堆栈大小(字节数)

10.29.8 目标系统“TriCore”,类别目标平台
TriCore 目标的目标设置是硬编码的,不能通过目标文件进行修改。但是,如果需要修改,请联系
3S-SmartSoftwareSolutionsGmbH。

注意:TriCore 目标系统支持原生 REAL- ,但不支持 LREAL 操作。

请参阅此处最重要的设置:

态度 意义
平台=Tricore 目标系统的类型
第一个参数寄存器(整数)=4 寄存器 C 函数调用的第一个整数参数所在的位置
传播
(范围取决于操作系统)
最 后 一 个 参 数 寄 存 器 ( 整 数 ) = 7 寄存器 C 函数调用的最后一个整数参数所在的位置
传播
(范围取决于操作系统)
注册返回值(整数)=2 寄存器 C 函数调用的最后一个整数参数所在的位置
传播
(范围取决于操作系统)
别人: -函数调用不用于断点的实现
-未使用摩托罗拉字节订单
-对齐方式:4 字节(对数组很重要)

CoDeSysV2.3版本 10-91
附录 H:-目标设置详解

10.30 类别内存布局的目标设置
此选项卡中描述的项目可用于每个标准目标。
对话框目标设置“兼容英特尔 386”,内存布局

对话框项 含义
Base (代码) 自动激活:自动分配码段自动停用:码段位于给定的绝对地址上

基地(全球) 自动激活:数据段(全局数据)自动分配到相关区域自动停用:数据段(全局数
据)位于给定的绝对地址上

基础(内存) 自动激活:标志自动分配给相关区域自动停用:标志段位于给定的绝对地址上

底座(输入) 自动激活:输入过程图像自动分配到相关区域自动停用:输入过程图像位于给定
的绝对地址上

底座(输出) 自动激活:输出过程图像自动分配到相关区域自动停用:输出过程图像位于给定
的绝对地址上

底座(保留) 自动激活:保留数据自动分配到相关区域自动停用:输出过程图像位于给定的绝
对地址上

区域(代码) 数据段(代码)的段号;
区域(全球) 数据段(全局数据)的段号;
区域(内存) 标志段的段号;
区域(输入) 输入进程映像的段号
面积(输出) 输出过程映像的段号

10-92 CoDeSysV2.3版本
附录 H:-目标设置详解

对话框项
区域(保留) 保留数据的段号
尺寸(代码) 代码段的大小
SizeproSegment (全球) 数据段的大小
大小(内存) 标志段的大小
尺寸(输入) 输入进程映像的大小
尺寸(输出) 输出进程映像的大小
尺寸(保留) 保留数据段的大小
数据存储器的总大小 总内存数据大小
自有保留细分市场 如果激活:将保留数据分配到单独的网段中
数据存储器的总大小含义 数据存储器的总大小
全局数据段的最大数量 全局数据段的最大数量

最大 POU 数 项目中允许的最大 POU 数

CoDeSysV2.3版本 10-93
附录 H:-目标设置详解

10.31 类别“常规”中的目标设置
此选项卡中描述的项目可用于每个标准目标。
对话框“目标设置”->“常规”

对话框项
配置 如果激活:支持可配置的 I/O 配置并将配置描述加载到控制器中

支持CANopen配置 如果激活:支持CANopen配置,并将配置描述加载到控制器中

支持Profibus配置 如果激活:支持Profibus配置,并将配置说明加载到控制器中

支持抢占式多任务处 如果激活:支持任务配置和将任务描述加载到控制器中

下载为文件 如果激活:以文件格式下载 I/O 描述


无地址检查 如果激活:在编译时不检查 IEC 地址
在线更改 如果激活:在线更改功能
更新未使用的I/O 如果激活: CoDeSys 会创建一个任务,用于更新当前未使用的输入和输出。因
此,这些 I/O 将在 PLC 配置中受到监控。

多任务处理中的单任务 尚未实施
字节寻址模式 如果激活:字节寻址模式(例如,var1AT%QD4 写入地址 %QB4)

初始化零 如果激活:常规初始化为零
下载符号文件 如果激活:如果已创建符号文件,则将下载该文件
INI 文件中的符号配置含义 如果激活:符号配置的参数不是从项目选项对话框中读取的,而是从codesys.ini文
件中读取的,或者是从codesys.ini中引用的另一个文件中读取的

10-94 CoDeSysV2.3版本
附录 H:-目标设置详解

对话框项
PLC-浏览器 如果激活:PLC 浏览器功能已激活
跟踪 如果激活:跟踪功能已激活
VAR_IN_OUT作为参考 如果激活:在函数调用时,通过引用(指针)调用VAR_IN_OUT变量;因此,不能
分配任何常量,也不能从功能块外部进行读/写访问。

初始化输入 如果未激活:出于优化原因,不会为使用“AT%IX”声明的输入生成初始化代码(
->未定义的值,直到 1. 总线周期!

自动启动项目加载 如果激活:下载新程序后自动创建启动项目并发送到 PLC。

软动作 如果激活:SoftMotion 功能被激活,即在“资源”选项卡(CNC 程序列表,CAM)


中可用

保留强制 如果激活:即使在注销时,强制列表也将保留在运行时系统中。在这种情况下,在
注销时,用户将看到一个对话框,在其中他可以决定是否真的应该保留强制。(目
前由运行时系统 CoDeSysSP32 位完整版、V2.4、补丁 4 和 CoDeSysSP32 位
支持)。

救 如果激活:即使在重新启动时,运行时系统也会继续强制执行。仅当目标允许且激
活了“保留强制”选项( 上文)时,此选项才可用。

周期无关强迫含义 如果激活:强制不仅会在周期的开始和结束时进行,而且在程序处理过程中的所有
写入访问都将被停用

CoDeSysV2.3版本 10-95
附录 H:-目标设置详解

10.32“网络功能”类别中的目标设置
此选项卡中描述的项目可用于每个标准目标。
对话框目标设置,网络功能

对话框项
支持参数管理器 如果激活:“参数管理器”条目将显示在“资源”选项卡中。使用它为变量和参数创建
对象字典,从而实现与其他控制器的有针对性的主动数据交换

支持网络变量 如果选择此选项,则可以使用网络变量,从而在网络中实现自动数据交换

支持的网络接口的名 支持的网络系统列表,例如:CAN;UDP;DP型

参数的索引范围 类型为 'Parameters' 的参数列表的索引范围(参 参考资料 'Parameter


Manager')

变量的索引范围 类型为 'Variables' 的参数列表的索引范围(参 参考资料 '参数管理器')

映射的索引范围 类型为 'Mappings' 的参数列表的索引范围(参 参考资料 -'参数管理器')注意:


如果此处定义了此范围,则 CanDevice 将仅将此范围视为映射;这意味着,如果另
外定义了参数的索引范围( 上文),则不会考虑该范围!

子索引范围含义 子索引范围在上述参数和变量对象字典的索引范围内(参 参考资料 '参数管理器


')

10-96 CoDeSysV2.3版本
附录 H:-目标设置详解

10.33 类别可视化中的目标设置
此选项卡中描述的项目可用于每个标准目标。
对话框目标设置,可视化

对话框项
以像素为单位的显示 编辑可视化时,给定宽度和高度的区域将显示在编辑器窗口中。因此,例如,在
宽度以像素为单位的 定位可视化元素时,可以考虑稍后运行目标可视化的屏幕大小。
显示高度

使用 8.3 文件格式 CoDeSys 可视化中使用的位图和语言文件的文件名将缩短为 8.3 表示法格式,


并以此格式加载到 PLC。

PLC中的报警处理 任务ALARM_TASK将自动插入到任务配置中。它将处理隐式创建的 ST 代码,


评估特定警报的状态,并在适用时执行相关操作。

ST 代码需要库 SysLibAlarmTrend.lib 的辅助函数。此库将自动加载。(此外,


还会加载隐式需要的库 SysLibSockets.lib、SysLibMem.lib、SysLibTime.lib、
SysLibFile.lib。这些库必须由目标系统支持!如果停用该选项并激活了目标可视
化,则将转储编译错误。

提示:即使没有激活目标或Web可视化,也可以使用“PLC中的报警处理”。即便
如此,也会生成所需的 ST 代码。

在PLC中存储趋势数据含义 PLC 中的趋势处理将被激活。任务TREND_TASK将自动插入到任务配置中它将


处理隐式创建的 ST 代码,用于将趋势数据记录在环形缓冲区中,如果在趋势元
素中激活了选项 History,则用于将值存储在文件系统中。

ST 代码需要库 SysLibAlarmTrend.lib 的辅助函数。此库将自动加载。(此外,


还会加载隐式需要的库 SysLibSockets.lib、SysLibMem.lib、SysLibTime.lib、
SysLibFile.lib。这些库必须由目标系统支持!如果停用该选项并激活了目标可视
化,则将转储编译错误。

CoDeSysV2.3版本 10-97
附录 H:-目标设置详解

势数据...”。即使未激活目标或 Web 可视化,也可以使用。将生成所需的 ST 代


码。

激活系统变量 系统变量 CurrentVisu 可用于在可视化之间切换。


“CurrentVisu”

目标中支持的字体 目标系统支持的字体列表。

简化的输入处理 如果激活:在在线模式下,输入处理被简化:从一个输入字段到下一个输入字段
不需要<Tab>和<空格键>键。在通过 <Return> 键终止输入后,选择会自动转发
到下一个字段。也可以通过箭头或<Tab>键访问输入字段,然后可以立即输入输
入。如果未激活:必须使用 <Tab> 和 <Space> 键来访问下一个输入字段并选择
此字段以使输入成为可能。

Web 可视化 如果激活:项目的所有可视化对象都将被编译为作为 Web 可视化对象使用。

压缩 如果激活:以下 Web-Visualization 文件,将从 Codesys 到 Webserver/PLC,


将以打包格式(zip-Format);否则采用原始格式:

- XML 可视化文件
- 图像文件(只有*.bmp,因为其他文件没有压缩效果)
-语言文件(*.xml 表示动态文本,*.tlt、*.vis)现有文件名之外的文件的扩展名为
“.zip”。现有名称中的点将替换为下划线(例如:“PLC_VISU.xml”将重命名为
“PLC_VISU_xml.zip”)不会对 Java 存档(minml.jar、webvisu.jar)和主
webvisu.htm进行压缩。

阻止下载可视化文件 如果激活:下载项目时,当前可视化中使用的所有文件都不会下载到目标系统。

可视化文件仅针对目标或 Web 可视化下载,可以是位图、语言文件,对于


Web 可视化,也可以是 XML 描述文件。

表格的键盘用法 如果激活此选项,则在联机模式下,可以在可视化( CoDeSysHMI 、


Web-Visualization、Target-Visualization)中使用表格的键盘。关闭此选项将导
致不会为关键函数生成任何代码,这在使用 Target-Visualization 时出于性能原
因可能是合理的。

目标可视化 如果已激活:项目的所有可视化对象都将编译为用作 Target 可视化对象。

使用VISU_INPUT_TASK 只有在激活 Target-Visualization 时才能激活, 上文)如果激活并停用“停用任


务生成”( 下文),则将自动创建两个任务来控制目标可视化:
VISU_INPUT_TASK通过隐式可用的 POU 控制用户输入的处理
MAINTARGETVISU_INPUT _CODE VISU_TASK 通 过 隐 式 可 用 的 POU
MAINTARGETVISU_PAINT_CODE控制可视化元素的重新绘制。如果停用该选
项,则仅创建VISU_TASK,仅使用 POUMAINTARGETVISU_PAINT_CODE,
在这种情况下,该选项将额外包括 MAINTARGETVISU_INPUT_CODE 的功
能。

停用任务生成提示:“存储趋 (只有在激活 Target-Visualization 时才能激活, 上文)如果激活该选项,则


不会自动生成任务VISU_INPUT_TASK和VISU_TASK(参 上文“使用
VISU_INPUT_TASK” ) 。 因 此 , 上 述 POU 或 - 如 果 未 激 活 选 项 Use
VISU_INPUT_TASK' - 只 能 在 应 用 程 序 中 调 用 POU
MAINTARGETVISU_PAINT_CODE,如果需要,可以由程序员定义的任何任务
控制。参考此内容,请参阅目标可视化的说明(在 CoDeSys 可视化的用户手册
中)。

10-98 CoDeSysV2.3版本
附录 I:-键盘的使用

附录一: 键盘的使用

10.34 键盘的使用
如果您只想使用键盘运行 CoDeSys,您会发现有必要使用菜单中没有的一些命令。

功能键 <F6>允许您在声明和指令部分之间的打开的 POU 内来回切换。

<Alt>+<F6>允许您从打开的对象移动到对象管理器,然后从那里移动到消息窗口(如果它已打开)。如
果搜索框处于打开状态,则 <Alt>+<F6> 允许您从对象管理器切换到搜索框,再从那里切换回对象。

按 <Ctrl>+<F6> 移动到下一个打开的编辑器窗口,按 <Ctrl>+<Shift>+<F6> 转到上一个。

按 <Tab> 在对话框中的输入字段和按钮之间移动。
箭头键允许您在对象管理器和库管理器中浏览寄存器卡和对象。

所有其他操作都可以使用菜单命令或菜单命令后面列出的快捷方式来执行。<Shift>+<F10>将打开上下文
菜单,其中包含最常用于选定对象或活动编辑器的命令。

10.35 组合键
以下是所有组合键和功能键的概述:

一般功能

在 POU 的声明部分和指令部分之间移动 <F6>

上下文菜单 <Shift>+<F10>
声明的快捷方式模式 <Ctrl>+<Enter>
从“消息”窗口中的消息移回编辑器中的原始位置 <输入>

移动到下一个打开的编辑器窗口 <Ctrl>+<F6 组合键>


移动到上一个打开的编辑器窗口 <Ctrl>+<Shift>+<F6>
打开和关闭多层变量 <输入>
打开和关闭文件夹 <输入>
在 ObjectOrganizer 和 LibraryManager 中切换寄存器卡 <箭头键>

移动到对话框中的下一个字段 <选项卡>
上下文相关帮助 <F1>

常规命令

'文件''保存' <Ctrl>+<S>

CoDeSysV2.3版本 10-99
附录 I:-键盘的使用

“文件”“打印” <Ctrl>+<P>
“文件”“退出” <Alt>+<F4>
'Project' 'Build' <F11>
“Project”:“删除对象”: <德尔>
“Project”:“添加对象” <Ins>
“Project”:“重命名对象” <空格键>
“Project”:“打开对象”: <输入>
“编辑”“撤消” <Ctrl>+<Z>
'编辑''重做' <Ctrl>+<Y>
'编辑''剪切' <Ctrl>+<X> 或
<Shift>+<Del>
'编辑''复制' <Ctrl>+<C>
'编辑''粘贴' <Ctrl>+<V>
'编辑''删除' <德尔>
'编辑''查找下一个' <F3>

'编辑''输入助手' <F2>
'编辑''自动声明' <Shift>+<F2>
“编辑”“下一个错误” <F4>
“编辑”“上一个错误” <Shift>+<F4>
'在线''登录' <Alt><F8>
“在线”“注销” <Ctrl>+<F8>
“在线”“运行” <F5>
'Online''切换断点' <F9>
“在线”“跨步” <F10>
“在线”“步入” <F8>
“在线”“单周期” <Ctrl>+<F5>
'在线''写入值' <Ctrl>+<F7 组合键>
' 在 线 ' 'Force Values' <F7>
“在线”“释放力” <Shift>+<F7>
“联机”“写入/强制对话框” <Ctrl><Shift>+<F7>
“窗口”“消息” <Shift>+<Esc>

FBD 编辑器命令

'Insert''网络(之后)' <Ctrl>+<T>
'插入''分配' <Ctrl>+<A>
'插入''跳转' <Ctrl>+<L>

10-100 CoDeSysV2.3版本
附录 I:-键盘的使用

'插入''返回' <Ctrl>+<R组合键>
'插入''功能块' <Ctrl>+<B>
'插入''输入' <Ctrl>+<U>
'额外''否定' <Ctrl>+<N组合键>
'附加''缩放' <Alt>+<Enter>

CFC 编辑器命令

' 插 入 ' 'FOR' <Ctrl>+<B>


'插入''输入' <Ctrl>+<E>
'插入''输出' <Ctrl>+<A>
'插入''跳转' <Ctrl>+<J>
'插入''标签' <Ctrl>+<L>
'插入''返回' <Ctrl>+<R组合键>
'插入''评论' <Ctrl>+<K>
'插入''FOR 输入' <Ctrl>+<U>
'额外''否定' <Ctrl>+<N组合键>
'Extras''设置/重置' <Ctrl>+<T>
'附加''连接' <Ctrl>+<M组合键>
'Extras' 'EN/ENO' <Ctrl>+<I>
'附加''缩放' <Alt>+<Enter>

LD 编辑器命令

'Insert''网络(之后)' <Ctrl>+<T>
'插入''联系人' <Ctrl>+<K>
'插入''联系(否定)' <Ctrl>+<G组合键>
'插入''并联触点' <Ctrl>+<R组合键>
'插入''平行接触(否定)' <Ctrl>+<D>
'插入''功能块' <Ctrl>+<B>
'插入''线圈' <Ctrl>+<L>
'插入'''设置'线圈' <Ctrl>+<I>
'在块处插入''输入' <Ctrl>+<U>
'在块处插入''分配' <Ctrl>+<A>
'额外''否定' <Ctrl>+<N组合键>
'附加''缩放' <Alt>+<Enter>

CoDeSysV2.3版本 10-101
附录 I:-键盘的使用

SFC 编辑器命令

'插入''Step-Transition (before)' <Ctrl>+<T>


'插入''Step-Transition (after)' <Ctrl>+<E>
'插入''备用分支(右)' <Ctrl>+<A>
'插入''并行分支(右)' <Ctrl>+<L>
'插入''跳转' <Ctrl>+<U>
'Extras' 'Zoom Action/Transition' <Alt>+<Enter>
从“SFC 概述”中移回编辑器 <输入>

使用 PLC 和任务配置

打开和关闭组织元素 <输入>
在名称周围放置一个编辑控制框 <空格键>
'Extras''编辑条目' <输入>

在参数管理器编辑器中工作

在导航窗口和列表编辑器之间切换 <F6>
删除列表编辑器中的行 <Ctrl>+<Del>
<Shift>+<Del>
在列表编辑器中删除字段 <德尔>

10-102 CoDeSysV2.3版本
附录 J:-关于标识符命名的建议

附录J: 关于标识符命名的建议

10.36 标识符的命名
标识符在声明变量(变量名称)、用户定义的数据类型以及创建 POU(函数、功能块、程序)和可视化
时定义。您可以遵循以下有关标识符命名的建议,以使其尽可能唯一。

10.37 变量的标识符(变量名称)
应用程序和库中变量的命名应尽可能遵循匈牙利语表示法:

对于每个变量,都应该找到一个有意义的简短描述,即基本名称。基本名称的每个单词的第一个字鯦应为
大写字鯦,其他字鯦应为小写字鯦(例如:FileSize)。如果需要,还可以创建其他语言的翻译文件。

在基名称之前,对应于变量的数据类型,前缀以小写字鯦添加。

数据类型 下限 上限 信息内容 前缀 评论

布尔值 假 真 1位 x*
b 保留
字节 8位 由 位字符串,不用于算术。
操作

词 16 位 w 位字符串,不用于算术。
操作
DWORD字数 32 位 DW的 位字符串,不用于算术。
操作
LWORD字 64 位 LW系列 不是为了算术。操作

正弦 -128 127 8位 四
USINT公司 0 255 8位 环旭电子

国际 -32.768 32.767 16 位 我
UINT(英语:UINT) 0 65.535 16 位 用户界面

力 -2.147.483.648 2.147.483.647 32 位 地
乌丁特 0 4.294.967.295 32 位 乌迪
皮棉 -263 263 - 1 64 位 李
乌林特 0 264 - 1 64 位 乌利

真正 32 位 r
雷亚尔 64 位 LR系列

字符串 s

CoDeSysV2.3版本 10-103
附录 J:-关于标识符命名的建议

时间 提姆
TIME_OF_DAY 托德
日期时间 DT的
日期 日期
枚举 16 位 e
指针 p
数组 一个

* 对于 BOOLean 变量,选择 x 作为前缀,以便与 BYTE 区分开来,也为了适应 IEC 程序员的感知(参 寻址


%IX0.0)。
例子:
bySubIndex:字节;s文件名:字符串;udiCounter:UDINT;

在嵌套声明中,前缀按声明的顺序相互附加:

例:
pabyTelegramData:指向数组 [0..7] 字节的指针;

作为前缀的用户定义数据类型的功能块实例和变量将获得 FB 或数据类型名称的快捷方式(例如:sdo
)。
例:
cansdo收到电报:CAN_SDOTelegram;类型
CAN_SDOTelegram :(* 前缀: sdo*)
结构
w索引:WORD;by子索引:BYTE; 作者Len:BYTE;

aby : 数 组 [0..3] 字 节 ;END_STRUCT END_TYPE

局部常量(c)以前缀 c 和附加的下划线开头,后跟类型前缀和变量名称。

例:
常 数 VAR c_uiSyncID : UINT : =
16#80;END_VAR

对于全局变量(g)和全局常量(gc),在库前缀后附加一个附加的前缀 + 下划线:

例子:
VAR_GLOBAL
CAN_g_iTest:INT;
END_VARVAR_GLOBAL常数

CAN_gc_dwExample:DWORD;
END_VAR

10-104 CoDeSysV2.3版本
附录 J:-关于标识符命名的建议

10.38 用户定义数据类型(DUT)的标识符
每个结构体数据类型的名称由结构体的库前缀(例如: CAN )、下划线和最好简短的表达性描述(例
如:SDOTelegram)组成。此结构的已用变量的关联前缀应紧跟在冒号之后。

例:
类型 CAN_SDOTelegram :(* 前缀: sdo*) STRUCTwIndex:WORD;by子索引:BYTE; 作者Len:
BYTE; abyData : 数 组 [0..3] 字 节 ;END_STRUCT END_TYPE

枚举以库前缀(示例:CAL)开头,后跟下划线和大写字鯦的标识符。

请注意,在以前版本的 CoDeSysENUM 中, >16#7FFF 的值会导致错误,因为它们没有自动转换为


INT 值。因此,应始终使用正确的 INT 值定义 ENUM。

例:
类型 CAL_Day:(CAL_MONDAY、CAL_TUESDAY、CAL_WEDNESDAY、CAL_THIRSDAY、CAL_FRIDAY、
CAL_SATURDAY、CAL_SUNDAY);

声明:
eToday:CAL_Day;

10.39 功能、功能块、程序(POU)的标识符
函数、功能块和程序的名称由库前缀(例如: CAN )、下划线和 POU 的表达性短名称(例如:
SendTelegram)组成。与变量一样,POU名称中单词的第一个字鯦应该是大写字鯦,其他字鯦应该是小
写字鯦。建议将动词和实体的 POU 名称组成。

例:
FUNCTION_BLOCKCAN_SendTelegram (* 前缀:canst*)
在声明部分,应提供POU的简短说明作为注释。此外,所有输入和输出都应提供评论。对于功能块,设
置实例的关联前缀应紧跟在名称之后。

操作没有前缀;只有应该只在内部调用的操作,即由 POU 本身调用,以“prv_”开头。

出于与以前的 CoDeSys 版本兼容的原因,每个函数必须至少有一个参数。 外部函数不得使用结构作为


返回值。

CoDeSysV2.3版本 10-105
附录 J:-关于标识符命名的建议

10.40 可视化的标识符
注意:目前,您必须避免可视化效果与项目中的另一个 POU 具有相同的名称。如果可视化之间发生更
改,这将导致问题。

10-106 CoDeSysV2.3版本
附录 K:-编译器错误和警告

附录 K:编译器错误和警告
如果在项目编译过程中检测到错误,消息将被转储到消息窗口中。此外,此处可能会显示警告。<F4>始
终允许跳转到此窗口中的下一个消息行,从而打开相关 POU。错误和警告消息前面有唯一的编号。如果
在消息窗口中选择了消息行,<F1> 将打开相应的联机帮助窗口。

10.41 警告
1100
库中的未知函数'<name>'。”

使用外部库。请检查 .hex 文件中定义的所有函数是否也在 .lib 文件中定义。

1101
“未解析的符号'<Symbol>'。”
代码生成器需要名为 <Symbol> 的 POU。它未在项目中定义。使用此名称定义函数/程序。

1102
“符号'<Symbol>'的接口无效。”
代码生成器需要一个名为 <Symbol> 且只有一个标量输入的函数,或者一个名为 <Symbol>且没有输入或
输出的程序。

1103
“代码地址'<address>>'处的常量'<name'覆盖了16K 边界!”
字符串常量超出 16K 边界。系统无法处理此问题。目标文件中的条目是否可以避免该问题,具体取决
于运行时系统。请联系 PLC 制造商。

1200
“任务'<name>',调用'<name>'参数列表中的访问变量未更新”
仅在任务配置中的功能块调用时使用的变量不会在交叉引用列表中列出。

1300
“找不到文件'<name>'”
全局变量对象指向的文件不存在。请检查路径。

1301
“未找到 Analyze-Library!不会生成用于分析的代码。
使用了 analyze 函数,但缺少库 analyzation.lib。在库管理器中添加库。

1302“

“插入了新的外部引用函数。因此,在线更改不再可能!
自上次下载以来,您已经链接了一个库,其中包含运行时系统中尚未引用的函数。因此,您必须下载完整
的项目。

CoDeSysV2.3版本 10-107
附录 K:-编译器错误和警告

1400“未知编译指示'<名称>'被忽略!”

编译器不支持此编译指示。有关支持的指令,请参阅关键字“pragma”。

1401“结构'<name>'不包含任何元素。”

该结构不包含任何元素,但这种类型的变量分配了 1 字节的内存。

1410“'RETAIN'和'PERSISTENT'对功能没有任何影响”

在函数中局部定义的剩余变量的处理方式与普通局部变量相同。

1411“变量配置中的变量'<name>'在任何任务中都未更新”

变量的顶级实例不会被任何任务中的调用引用。因此,它不会从过程映像中复制。

例:
变量配置:
VAR_CONFIG
plc_prg.aprg.ainst.in 在 %IB0 :INT;
END_VAR
plc_prg: index :=
INDEXOF(aprg);
程序 aprg 被引用但未调用。因此,plc_prg.aprg.ainst.in 永远不会获得 %IB0 的实际值。

1412“编译指示 {pragmaname} 中的意外标记'<Name>'”

您正在使用未正确编写的编译指示,或者不能在此位置使用。请参阅 CoDeSys 在线帮助或用户指南中的


关键字“pragma”以获取更正帮助。

1413“'<Name> 不是列表'<Name>'的有效键。密钥将被忽略”

在编译指示中,指定了一个不存在的参数列表。检查列表名称或在参数管理器中查看当前可用的列表。

1414“编译指示'<名称>'中的组件定义过多”

Pragma 包含的定义(在方括号中)比相应数组、功能块或结构中的元素多。

1415“'<Name>' (<Number>):字面上的'<Number>'被指派给一个以上的枚举”

在枚举声明<Name>中,将相同的数字分配给多个枚举组件(例如,TYPEaenum (a:=1, b:=1)


;END_TYPE)。

1500“表达式不包含赋值。未生成任何代码。

不使用此表达式的结果。因此,没有为整个表达式生成代码。

10-108 CoDeSysV2.3版本
附录 K:-编译器错误和警告

1501“以'VAR_IN_OUT'形式传递的字符串常量:'<Name>'不得被覆盖!”

该常量可能不会写入 POU 中,因为无法进行大小检查。

1502“变量'<Name>'与 POU 同名。POU不会被调用!

使用一个变量,该变量具有与 POU 相同的名称。


例:
程 序 a ...

VAR_GLOBAL a : INT;END_VAR ......

一个;(* 未调用 POUa,但加载变量 a。

1503“POU'<name>'没有输出。框结果设置为“TRUE”。

没有输出的 POU 的输出引脚以 FBD 或 KOP 连接。赋值自动获取值 TRUE。

1504“'<name>' ('<number>'):由于对逻辑表达式的计算,语句可能无法执行”

最终,并非所有逻辑表达式的分支都会被执行。
例:
如果 A 和 FUNCT(TRUE)那么....
如果 has 为 FALSE,则不会调用 funct。

1505“'<名>的副作用!分支可能没有被执行!

POU 的第一个输入是 FALSE,因此不会执行可能在第二个输入处进入的侧分支。

1506“变量'<name>'与本地操作同名。行动不会被调用!

重命名变量或操作。

1507“实例'<name>'与函数同名。不会调用该实例。

在 ST 中调用一个与函数同名的实例。该函数将被调用!使用不同的名称。

1509“'<name>' ('<number>'):注册为回调的函数必须以'Callback'开头。

您正在使用一个回调函数,其名称不以“callback”开头。这可能会对 RISC 产生意想不到的影响。摩托罗


拉 68K 控制器!

CoDeSysV2.3版本 10-109
附录 K:-编译器错误和警告

1510“要旋转的操作数没有显式类型。请使用键入的文字,例如'DWORD#1'。

对于 ROL 和 ROR 操作中使用的常量,必须有一个数据类型定义。有关类型化常量的信息,请参阅此


处。

1511“要移位的操作数没有明确的类型。请使用键入的文字,例如'DWORD#1'。

对于 SHL 和 SHR 操作中使用的常量,必须有一个数据类型定义。有关类型化常量的信息,请参阅此


处。

1550“在一个网络中多次调用POU'<名称>可能会导致不良副作用”

检查是否真的需要此 POU 的多次调用。通过多次调用,可能会发生不需要的值超效。

1600“OpenDBUnclear (生成的代码可能是错误的)。”

原来的 子程序没有告诉,打开了哪个POU。

1700“输入未连接。”

在 CFC 中使用了一个没有赋值的输入框。为此,不会生成任何代码。

1750“步骤'<名称>:最短时间大于最大时间!”

打开此步骤的“步骤属性”对话框并更正时间定义。

1800“<name>(element#<elementnumber>): watchexpression'<name>' 无效”

可视化元素包含无法监视的表达式。检查变量名称和占位符替换。

1801“'<name> (number):不能输入表达式'<name>'”

在字段输入的可视化对象配置中,使用了组合表达式。将其替换为单个变量。

1802“<可视化对象>(元素编号):找不到位图'<name>'”

确保外部位图文件在可视化配置对话框中定义的路径中可用。

1803“'<name>'('<number>'): ”Web 和目标可视化不支持打印操作”

打印操作将分配给可视化中配置的警报。这在Web或目标可视化中不予考虑。

10-110 CoDeSysV2.3版本
附录 K:-编译器错误和警告

1804“'<name>'('<number>'):目标不支持字体'<name>'。

在可视化中,您使用的是目标系统不支持的字体。请参阅目标设置中的“可视化”类别,了解支持的字体。

1807“<name> (<number>):没有用于目标可视化警报的消息窗口”

考虑到目标可视化不支持操作“消息”!

1808“'<name>'('<number>'):多边形由许多点组成,用于目标可视化。如果是仪表元件,请打开配置一次。

默认情况下,最多允许 512 个点,具体来说,可以定义另一个最大数量。通过打开配置对话框,元素将


被优化到允许的点数。

1809“'<name> ('<number>'):作为缩放目标的可视化效果无效”

无法找到此可视化效果。请检查可视化名称是否正确或可视化对象根本不可用。

1850“%IB<number>的输入变量在任务'<name>中使用,但在另一个任务中更新”

请检查哪些任务正在使用此变量,以及当前编程是否未造成不良影响。变量值的更新通常在优先级最高的
任务中完成。

1851“%IQ<number>的输出变量在任务'<name>'中使用,但在另一个任务中更新”

请检查哪些任务正在使用此变量,以及当前编程是否未造成不良影响。变量值的更新通常在优先级最高的
任务中完成。

1852“CanOpenMaster 可能不会在事件任务 '<name>' 中循环调用!设置 modul 参数 UpdateTask!

目前, CanOpenMaster 由指定的事件任务调用。如果要循环调用它,请在 “ 模块参数 ” 对话框中通过


PLC 配置中的参数 UpdateTask 指定适当的任务。

1853“PDO(索引:'<number>')可能不会在事件任务'<name>中循环更新”

目前,命名的 PDO 通过命名事件任务进行控制。但是,如果要循环调用它,则必须通过将 IO 引用转移


到此任务来为 PDO 分配适当的任务。

1900“POU'<name>'(主例程)在库中不可用”

当项目用作库时,Start-POU(例如PLC_PRG)将不可用。

1901“AccessVariablesandVariableConfigurationsarenotsavedinalibrary!”

CoDeSysV2.3版本 10-111
附录 K:-编译器错误和警告

访问变量和变量配置不存储在库中。

1902“'<名称>':不是当前机器类型的库!”

库的.obj文件是为另一台设备生成的。

1903“<名称>:没有有效的库”

该文件没有为实际目标请求的格式。

1904“常量'<Name>'在库中隐藏了一个同名的常量”

在您的项目中,您定义了一个常量,该常量与链接库中定义的常量具有相同的名称。库变量将被覆盖!

1970 年:“参数管理器:无法导入列表'<名称>',列'<名称>',值'<名称>'!

检查导入文件 *.prm 中是否有与参数管理器的当前配置(标准值resp.XML描述文件)不匹配的条目。

1980 全局网络变量 '<Name>''<Name>':同时读取和写入可能会导致数据丢失!”

在网络变量列表的配置中(在“资源”选项卡中选择列表,然后通过上下文菜单中的命令“属性”打开对话
框“全局变量列表”),激活“读取”和“写入”选项。考虑到这可能会导致通信过程中的数据丢失。

1990
“<'name>'没有'VAR_CONFIG'”
对于此变量,没有可用的地址配置
Variable_Configuration(VAR_CONFIG)。在“资源”选项卡中打开窗口Variable_Configuration,然后插
在 这
入适当的配置(命令“插入”所有实例路径“)。

2500“任务'<任务名称>':未为循环任务指定周期时间”

在任务配置中,已创建一个循环任务,但尚未为其定义周期时间。在“Taskattributes”对话框中的“间隔”
处输入适当的时间跨度。

4710“'<name>' ('<number>'):尚未配置必需的表达式”

在类别“变量”的滑块元素配置中,没有为每个字段“最小值”、“滑块”和“最大值”输入有效值。

4711“'<name>'('<number>'):SysLibTargetVisu 不支持滑块元素。

安装并使用当前版本的库 SysLibTargetVisu.library。

4714“'<name>'('<number>'):选择变量的类型必须是兼容

INT“”

10-112 CoDeSysV2.3版本
附录 K:-编译器错误和警告

检查并适当更正类别“选择”中表元素的配置。

4715“当前目标不支持格式化显示时间和日期值”

选项“格式化时间显示”在可视化设置中被激活。但是,当前使用的目标系统不支持此功能。

4716“当前目标不支持简化输入处理”

在目标设置中,在“可视化”类别中,激活了“简化输入处理”选项。也许它不受 SysLibTargetvisu.lib 的支持。


当前 目标 系统 因为 一 老 版本 之 这 图书馆

10.42 错误
3100“代码太大。最大大小:“<number>”字节(<number>K)”

超出了最大程序大小。减小项目规模。

3101“总数据太大。最大大小:“<number>”字节(<number>K)”

内存已超出。减少应用程序的数据使用量。

3110“库'<名称>'出错。

.hex 文件不是 INTELHex 格式。

3111“库'<名称>'太大。最大尺寸:64K”

.hex 文件超出了设置的最大大小。

3112“图书馆中不可重定位的教学。”

.hex 文件包含不可重定位的指令。无法链接库代码。

3113“库代码覆盖函数表。”

代码表和函数表的范围重叠。

3114“库使用多个段。”

.hex 文件中的表和代码使用多个段。

CoDeSysV2.3版本 10-113
附录 K:-编译器错误和警告

3115“无法将常量分配给VAR_IN_OUT。数据类型不兼容。

字符串常量的内部指针格式无法转换为VAR_IN_OUT 的内部指针格式,因为数据设置为“near”,但字符
串常量设置为“huge”或“far”。如果可能,请更改这些目标设置。

3116“函数表覆盖库代码或段边界。”

代码 166x:外部库不能与当前目标设置一起使用。这些必须进行调整,或者必须使用适当的设置重建
库。

3117“<姓名>(<Zahl>):表达太复杂。没有更多的寄存器可用”

命名表达式是复杂的,由可用寄存器处理。请尝试使用临时变量来减少表达式。

3120“当前代码段超过 64K。”

当前生成的代码大于 64K。最终创建了大量的初始化代码。

3121“太大了。”

POU 的大小不得超过 64K。

3122“初始化太大。最大尺寸:64K”

函数或结构 POU 的初始化代码不得超过 64K。

3123“数据段过大:段'<Number>%s',大小 <size> 字节(最大<数字>字节)”

请联系您的制造商。

3124“字符串常量过大:<count> 个字符(最多 253 个字符)”

给定常量的字符数必须减少。

3130“用户堆栈太小:需要'<number>'DWORD,'<number>'DWORD 可用。”

POU 调用的嵌套深度很大。在目标设置中输入更高的堆栈大小,或编译不带选项“调试”的构建项目(可
以在“项目”、“选项”、“构建”对话框中设置)。

3131“用户堆栈太小:需要'<number>'WORD,'<number>'WORD 可用。”

请联系 PLC 制造商。

3132“系统堆栈太小:需要'<number>'WORD,'<number>'WORD可用。

请联系 PLC 制造商。

10-114 CoDeSysV2.3版本
附录 K:-编译器错误和警告

3150“函数'<name>'的参数<编号>:无法将 IEC 函数的结果作为字符串参数传递给 C 函数。

使用中间变量,将 IEC 函数的结果分配给该变量。

3160“无法打开库文件'<name>'。”

此项目的库管理器中包含库<name>,但给定路径中不存在库文件。

3161“库'<name>'不包含代码段”

库的 .obj 文件至少必须包含一个 C 函数。在 .obj 文件中插入一个虚拟函数,该文件未在 .lib 文件中定


义。

3162“无法解析库'<name>'(符号'<name>',类'<name>',键入'<name>')中的引用”

.obj文件包含对另一个符号的不可解析引用。请检查
C 编译器。

3163“库'<name>'中的未知引用类型(符号'<name>',类'<name>',类型'<name>')”

.obj文件包含引用类型,代码生成器无法解析该类型。请检查 C 编译器的设置。

3200“<name>:布尔表达式为复数”

目标系统的临时内存不足以容纳表达式的大小。将表达式划分为几个部分表达式,从而使用对中间变量的
赋值。

3201“<name> (<network>):网络生成的代码不得超过 512 字节”

无法解决内部跳转。激活 68k 目标设置中的“使用 16 位跳转偏移”选项。

3202“嵌套字符串/数组/结构函数调用的堆栈溢出”

使用嵌套函数调用 CONCAT(x, f(i))。这可能会导致数据丢失。将调用分为两个表达式。

3203“表达式太复杂(使用过的地址寄存器太多)。”

将赋值划分为几个表达式。

3204“跳跃超过 32k 字节”

跳转距离不得大于 32767 字节。

CoDeSysV2.3版本 10-115
附录 K:-编译器错误和警告

3205“内部错误:常量字符串过多”

在 POU 中,最多可以使用 3000 个字符串常量。

3206“功能块数据超出最大大小”

A 个功能块最多可以生成 32767 字节的代码。

3207“阵列优化”

数组访问的优化失败,因为在索引计算期间调用了函数。

3208“转换尚未实现”

A 用转换函数,该函数未针对实际代码生成器实现。

3209“未实现运算符”

使用运算符,该运算符不是为此数据类型和实际代码生成器实现的。MIN(字符串 1,字符串 2)。

3210“找不到函数'<名称>”

A 用函数,该函数在项目中不可用。

3211“超出最大字符串使用量”

A 符串类型的变量最多可以在一个表达式中使用 10 次。

3212“POU<POU 名称>处的库顺序错误”

此 POU 的库顺序与 cslib.hex 文件中的顺序不匹配。相应地更正顺序。(仅适用于 68K 目标,如果在目


标文件中激活了检查选项。

3250“8 位控制器不支持Real”

目前不支持该目标。

3251“8 位控制器不支持日期类型”

目前不支持该目标。

3252“堆栈大小<数字>字节”

目前不支持该目标。

3253“找不到十六进制文件:'<名称>'”

目前不支持该目标。

10-116 CoDeSysV2.3版本
附录 K:-编译器错误和警告

3254“无法解析对外部库函数的调用。”

目前不支持该目标。

3255“指针不支持 8 位控制器。”

避免在程序中使用指针使其在 8 位系统上运行。

3260“函数'<name>' 的参数过多:在目标设置中增加参数堆栈的大小。”

如果可能,请在“目标设置”的“目标平台”对话框中修改堆栈的大小(默认值:40),请参阅第 10.29.4
章。如果该设置在 CoDeSys 中不可编辑,请联系 PLC 制造商。

3400“导入 Access 变量时出错”

.exp 文件包含不正确的访问变量部分。

3401“导入变量配置期间出现错误”

.exp 文件包含不正确的配置变量部分。

3402“导入全局变量时出错”

.exp 文件包含不正确的全局变量部分。

3403“无法导入<名称>”

.exp 文件中的对象<名称>部分不正确。

3404“导入任务配置时出错”

任务配置 .exp 文件的部分不正确。

3405“导入 PLC 配置时出错”

.exp 文件中的 PLC 配置部分不正确。

3406“名称为'<name'的两个步骤。第二步未导入。

.exp 文件中的 SFCPOU 部分包含两个名称相等的步骤。重命名导出文件中的其中一个步骤。

3407“未找到前置步骤'<名称>”

.exp 文件中缺少步骤 <name>。

3408“找不到后续步骤'<名称>'”

.exp 文件中缺少步骤 <name>。

CoDeSysV2.3版本 10-117
附录 K:-编译器错误和警告

3409“步骤'<'名称>没有成功的转换”

在 .exp 文件中缺少转换,这需要步骤 <name> 作为前面的步骤。

3410“'<名称>'过渡没有成功的步骤”

在 .exp 文件中缺少一个步骤,该步骤需要转换<name>作为前面的条件。

3411“从初始步骤无法访问步骤'<名称>'”

在 .exp 文件中,缺少步骤 <name> 与初始步骤之间的连接。

3412“未导入宏'<name>'”

检查导出文件。

3413“导入 CAM 时出错。”

您已导入导出文件(*.exp),其中包含有关 CAM 的错误信息。检查导出文件。

3414“导入 CNC 程序列表时出错”

您已导入一个导出文件(*.exp),其中包含有关 CNC 程序的错误信息。检查导出文件。

3415 导入警报配置时出错”

您已导入导出文件(*.exp),其中包含有关警报配置的错误信息。检查导出文件。

3450“PDO'<PDO-name>':缺少 COB-ID!”

单击模块的 PLC 配置对话框中的“属性”按钮,然后输入 PDO 的 COBID<PDO 名称>。

3451“加载期间出错:找不到 EDS 文件'<name>',但在硬件配置中引用!”

最终,CAN配置所需的设备文件不在正确的目录中。检查“项目”、“选项”、“目录”中配置文件的目录设
置。

3452“无法创建模块'<name>!”

模块 <name> 的设备文件不适合当前配置。最终,由于配置已在 CoDeSys 中设置或已损坏,因此它已被


修改。

3453“无法创建频道'<name>!”

通道 <name> 的设备文件不适合当前配置。最终,由于配置已在 CoDeSys 中设置或已损坏,因此它已被


修改。

10-118 CoDeSysV2.3版本
附录 K:-编译器错误和警告

3454“地址'<name>指向一个用过的内存!”

在 PLC 配置的“设置”对话框中激活了“检查重叠地址”选项,并检测到重叠。关于,区域检查是基于模块
数据类型产生的大小,而不是配置文件中条目“size”给出的大小。

3455“加载期间出错:找不到 GSD 文件'<name>',但在硬件配置中引用!”

最终,Profibus 配置所需的设备文件不在正确的目录中。检查“项目”、“选项”、“目录”中配置文件的目
录设置。

3456“无法创建 profibus 设备'<name>!”

模块 <name> 的设备文件不适合当前配置。最终,由于配置已在 CoDeSys 中设置或已损坏,因此它已被


修改。

3457“模块描述错误!

请检查设备 file 此模块。

3458“无法创建 PLC-Configuration!检查配置文件。

检查所有必需的配置和设备文件是否在正确的路径中可用(请参阅“项目”、“选项”、“/目录”中定义的编
译目录)

34603S_CanDrv.lib 的版本有误。

确保项目中包含的 3S_CanDrv.lib 是最新的。

3461“3S_CanOpenMaster.lib 的版本有误。”

确保项目中包含的 3S_CanOpenMaster.lib 是最新的。

3462“3S_CanOpenDevice.lib 的版本有误。”

确保项目中包含的 3S_CanOpenDevice.lib 是最新的。

3463“3S_CanOpenManager.lib 的版本有误。”

确保项目中包含的 3S_CanOpenManager.lib 是最新的。

3464“3S_CanNetVar.lib 的版本有误。”

确保项目中包含的 3S_CanNetVar.lib 是最新的。

3465“CanDevice:子索引必须按顺序编号”

在 CanDevice 使用的参数列表中,子索引必须按顺序编号,并且不能中断。在参数管理器中查看相应的
列表。

CoDeSysV2.3版本 10-119
附录 K:-编译器错误和警告

3466“CAN网络变量:在PLC配置中找不到CAN控制器”

为CAN网络配置了网络变量(资源、全局变量),但在PLC配置中没有可用的CAN控制器。

3468“CanDevice:更新任务在任务配置中不可用。”

更新任务(用于调用CANdevice)是在PLC配置中CANdevice的“基本设置”对话框中定义的,必须在项目
的“任务配置”中配置。

3469“CanOpenMaster不能被召唤。请手动分配任务。

通过 PLC 配置的“模块参数”对话框中的参数 UpdateTask 分配一个任务,该任务应调用主任务。

3470“参数 UpdateTask 中的名称无效”

在PLC配置中打开CanMasters模块参数对话框。检查参数UpdateTask。指定的任务必须在项目中可用。
如果无法在此处设置适当的任务,则必须检查设备文件中是否有 UpdateTask 的相应值定义。

3500
“'姓名'没有'VAR_CONFIG'<姓名>”
插入此变量“Variable_Configuration”的声 在 这 全球 变量 列 哪 包含 这
明。 表

3501“<'VAR_CONFIG'中没有'姓名>'的地址。

在“Variable_Configuration”中为此变量分配一个地 全球 变量 列 哪 包含 这
址。 表

3502“'VAR_CONFIG'中的'<name>'数据类型错误”

在包含“Variable_Configuration”的全局变量列表中,变量使用与 POU 中不同的数据类型声明。

3503“'VAR_CONFIG'中的'<name>'数据类型错误”

在包含“Variable_Configuration”的全局变量列表中,变量使用与 POU 中不同的地址声明。

3504“'VAR_CONFIG 不支持初始值”

“Variable_Configuration”的变量使用地址和初始值声明。但是,初始值只能为输入变量定义,而不能分
配地址。

3505 “'<name>'is no valid instance path”

该Variable_Configuration包含一个不存在的变量。

10-120 CoDeSysV2.3版本
附录 K:-编译器错误和警告

3506“预期访问路径”

在访问变量的全局变量列表中,变量的访问路径不正确。正确:<Identifier>:'<Accesspath>':<Type><Access
mode>。

3507“没有'VAR_ACCESS'变量的地址规范”

AccessVariables 的全局变量列表包含变量的地址分配。这是不允许的。

有 效 变 量 定 义 : <Identifier> : '<Access path>' : <Type> <Access mode>

3550“标识符'<name>'的重复定义”

有两个任务被定义为相同的同名。重命名其中之一。

3551“任务'<name>'必须包含至少一个程序调用”

插入程序调用或删除任务。

3552“未定义任务'<<name>中的事件变量'name>”

在任务属性对话框的“单个”字段中设置了一个事件变量,该变量未在项目中全局声明。使用另一个变量或
全局定义该变量。

3553“任务'<name>中的事件变量'<name>'必须为'BOOL'类型”

在任务属性对话框的“单个”字段中使用 BOOL 类型的变量作为事件变量。

3554“任务条目'<name>'必须是程序或全局功能块实例”

在“程序调用”字段中,输入函数或未定义的 POU。输入有效的程序名称。

3555“任务条目'<name>'包含无效参数”

在“附加程序调用”字段中,使用的参数不符合程序 POU 的声明。

3556“当前选定的目标不支持任务”

当前定义的任务配置不能用于当前设置的目标系统。相应地更改目标或修改任务配置。

3557“超出最大任务数('<数>'数'”

当前定义的任务数超过了当前设置的目标系统允许的最大数目。相应地更改目标或修改任务配置。注意:
请勿编辑任务配置的 XML 描述文件!

3558 “ 任 务 '< 名 称 > 的 优 先 级 超 出 了 '< 下 限 > 和 '< 上 限 > 之 间 的 有 效 范 围 ” 3559

CoDeSysV2.3版本 10-121
附录 K:-编译器错误和警告

当前为任务定义的优先级对于当前设置的目标系统无效。相应地更改目标或修改任务配置。

“任务'<name>':当前目标不支持间隔任务”
当前任务配置包含间隔任务。当前设置的目标系统不允许这样做。相应地更改目标或修改任务配置。

3560
“任务'<name>':当前目标不支持自由轮任务”
当前任务配置包含自由轮任务。当前设置的目标系统不允许这样做。相应地更改目标或修改任务配置。

3561
“任务'<name>':当前目标不支持事件任务”
当前任务配置包含当前设置的目标系统不支持的事件任务。相应地更改目标或修改任务配置。

3562
“任务'<name>':当前目标不支持外部事件任务”
当前任务配置包含当前设置的目标系统不支持的外部事件任务。相应地更改目标或修改任务配置。

3563
“任务'<名称>的间隔超出了'<下限>和'<上限>'之间的有效范围”
在任务的配置对话框中更改间隔值。

3564
“当前目标不支持任务'<name>'的外部事件'<name>'”
当前设置的目标系统不支持此任务的任务配置中定义的外部事件。相应地更改目标或修改任务配置。

3565
“超出事件任务的最大数量('<number>'”
当前设置的目标系统不允许执行当前定义的事件任务。相应地更改目标或修改任务配置。

3566
“超出最大间隔任务数('<number>'”
当前设置的目标系统不允许执行当前定义的那么多间隔任务。相应地更改目标或修改配置。

3567
“超出了自由轮任务的最大数量('<数>'”
当前设定的目标系统不允许执行目前定义的那么多的自由轮任务。相应地更改目标或修改配置。

3568
“超出了外部间隔任务的最大数量('<number>'”
当前设置的目标系统不允许执行当前定义的那么多的外部间隔任务。相应地更改目标或修改配置。

10-122 CoDeSysV2.3版本
附录 K:-编译器错误和警告

3569 “ 未 定 义 系 统 事 件 '<name>' 的 POU '<name>'”

应由任务配置中定义的命名系统事件调用的POU在项目中不可用。相应地修改任务配置,或者确保POU
在项目中可用。

3570“任务'<name>'和'<name>'具有相同的优先级”

修改任务配置,使每个任务具有不同的优先级。

3571“库'SysLibCallback'不包含在项目中!无法生成系统事件。

为了创建事件任务,需要 SysLibCallback.lib。在库管理器中将此库链接到项目,或修改任务配置(任务
属性),以便不会有由事件触发的任务。

3575“任务<'名称>':循环时间必须是<数字>μs的倍数。”

在此任务的“任务属性”对话框中相应地更正周期时间。目标系统定义一个基准时间,并规定周期时间必须
等于或等于该基准时间的倍数。

3600“未找到隐式变量!”

使用命令“全部重建”。如果再次收到错误消息,请联系 PLC 制造商。

3601“<name> 是保留变量名称”

给定的变量在项目中声明,尽管它是为代码生成器保留的。重命名变量。

3610“ 不支持<名称>”

当前版本的编程系统不支持给定的功能。

3611“给定的编译目录'<name>无效”

编译文件的“项目”、“选项”、“目录”中给出了一个无效的目录。

3612“超过最大 POU 数(<数>数)!编译已中止。

项目中使用了过多的 POU 和数据类型。在“目标设置”/“内存布局”中修改 POU 的最大数量。

3613“生成已取消”

编译过程已被用户取消。

CoDeSysV2.3版本 10-123
附录 K:-编译器错误和警告

3614“项目必须包含名为'<name>'(主例程)的 POU 或taskconfiguration”

创建程序类型的初始化 POU(例如PLC_PRG)或设置任务配置。

3615“<名称>(主例程)必须是程序类型”

初始化 POU(例如 PLC_PRG)用于非 Program 类型的项目。

3616“程序不能在外部库中实现”

应另存为外部库的项目包含一个程序。当使用库时,这将不可用。

3617“内存不足”

增加计算机的虚拟内存容量。

3618“当前代码生成器不支持 BitAccess!”

当前设置的目标系统的代码生成器不支持对变量进行位访问。

3619“对象文件'<name>'和库'<name>'有不同的版本!”

确保库有可用的 *.lib 和 *.obj 或 *.hex 文件的匹配版本。这些文件必须具有完全相同的时间戳。

3620“POU'<name> 不得出现在图书馆内”

您希望将项目另存为 2.1 版的库。在此版本中,库可能不包含PLC_PRG对象。使用不同的 POU 名称。

3621“无法写入编译文件'<name>'”

可能在为编译文件指定的路径中已经有一个同名的文件,它是“只读”的。删除该文件或更改访问权限。

3622“无法创建符号文件'<name>'”

可能在为符号文件指定的路径(通常是项目目录)中,已经有一个同名的文件,该文件是“只读”的。删除
该文件或更改访问权限。

3623“无法写入启动项目文件'<name>'”

可能在为符号文件(特定于目标)指定的路径中,已经有一个同名的文件,该文件是“只读”的。删除该文
件或更改访问权限。

3624“目标设置 <targetsetting1>=<setvalue>与 <targetsetting2>=<setvalue> 不兼容”

在“目标设置”对话框(“资源”选项卡)中检查并更正这些设置。如果设置不可 或不可编辑,请联系
PLC 制造商。

10-124 CoDeSysV2.3版本
附录 K:-编译器错误和警告

3700“名称为'<name>'的 POU 已在库'<name>'中”

项目中使用了 POU 名称,该名称已用于库 POU。重命名 POU。

3701“接口中使用的名称与 POU 名称不同”

使 用 命 令 “ Project”“Renameobject”在对象管理器中重命名 POU,或在声明窗口中更改 POU 的名


称。在那里,POU 名称必须放在其中一个
关键字 PROGRAM、FUNCTION 或 FUNCTIONBLOCK。

3702“标识符列表溢出”

在一个变量声明中最多可以输入 100 个标识符。

3703“标识符'<名称>'的重复定义”

请注意,在 POU 的声明部分中只有一个具有给定名称的标识符。

3704“” 数据递归:“<FOR0>-><FOR1>->..“-><代表0>”“”

使用功能块的实例,该实例调用自身。

3705“<名称>:如果没有任务配置,则不允许在顶级 POU 中VAR_IN_OUT”

创建任务配置或VAR_IN_OUT确保
PLC_PRG。

3720“'AT'之后的地址”

在关键字 AT 后添加有效地址或修改关键字。

3721“只有'VAR'和'VAR_GLOBAL'可以定位到地址”

将声明放到 VAR 或VAR_GLOBAL声明区域。

3722“位地址上只允许'BOOL'变量”

修改地址或修改分配地址的变量的类型。

3726“常量不能放在直接地址上”

相应地修改地址分配。

3727“不允许在此地址上进行数组声明”

相应地修改地址分配。

CoDeSysV2.3版本 10-125
附录 K:-编译器错误和警告

3728“无效地址:'<地址>'”

PLC 配置不支持此地址。检查 PLC 配置或修改地址。

3729“在地址'<Name>'处键入'<name>'无效”

此 变 量 的 类 型 不 能 放 在 给 定 的 地 址 上 。 示 例 : 对 于 使 用“对 齐2”的 目 标 系 统 , 以 下 声 明 无 效 :var1 AT


%IB1:WORD;此错误消息还可能指示将数组分配给直接变量的地址,这是不允许的。

3740“无效类型:'<名称>'”

变量声明中使用了无效的数据类型。

3741“预期型式规格”

使用关键字或运算符代替有效的类型标识符。

3742“预期的枚举值”

在枚举类型的定义中,左括号后或括号之间的逗号后缺少标识符。

3743“应为整数”

枚举只能使用 INT 类型的数字进行初始化。

3744“枚举常量'<name>'已定义”

检查枚举值的定义是否遵循了以下规则:
在一个枚举定义中,所有值都必须是唯一的。
在所有全局枚举定义中,所有值都必须是唯一的。
在所有本地枚举定义中,所有值都必须是唯一的。

3745“子范围只允许在整数上!”

子范围类型只能基于整数数据类型进行定义。

3746“子范围'<name>'与类型'<name>'不兼容”

为子范围类型范围设置的限制之一超出了对基本类型有效的范围。

3747“未知字符串 度:'<name>'”

有一个无效的常量用于定义字符串 度。

10-126 CoDeSysV2.3版本
附录 K:-编译器错误和警告

3748“数组不允许超过三个维度”

数组的定义中给出了超过允许的三个维度。如果适用,请使用
数组的数组。

3749“下限'<名称>未定义”

有一个未定义的常量用于定义子范围或数组类型的下限。

3750“上限'<名称>未定义”

有一个未定义的常量用于定义子范围或数组类型的上限。

3751“字符串 度<字符数>无效”

此处定义的字符串 度超过了为当前设置的目标系统定义的最大值。

3752“嵌套数组不允许超过 9 个维度”

数 组 可 以 是1、2或3维 的 。 嵌 套 数 组 所 达 到 的 维 数 ( 例 如“arr:ARRAY [0..2,0..2,0..2,0..2] OF ARRAY


[0..2,0..2,0..2]OFARRAY[0..2,0..2,0..2] , OFDINT” 最大值可能为 9 ,并且在当前错误情况下超过该
值。适当减少到最多 9 个尺寸。

3760“初始值错误”

使用与类型定义相对应的初始值。要更改声明,您可以使用变量的声明对话框(Shift/F2 或“编辑”、“自
动声明”)。

3761“'VAR_IN_OUT'变量不得有初始值。”

删除 VAR_IN_OUT 变量声明处的初始化。

3780
“应为'VAR'、'VAR_INPUT'、'VAR_OUTPUT'或'VAR_IN_OUT'”
POU 名称后面的第一行必须包含以下关键字之一。

3781“'END_VAR'或标识符应为”

在声明窗口中给定行的开头输入END_VAR的有效标识符。

第3782章“意想不到的结局”

在声明编辑器中:在声明部分的末尾添加关键字END_VAR。
在编程部分的文本编辑器中:添加一条终止最后一个指令序列的指令(例如END_IF)。

3783“应为END_STRUCT”或标识符”

确保类型声明已正确终止。

CoDeSysV2.3版本 10-127
附录 K:-编译器错误和警告

3784“当前目标不支持属性<属性名称>”

目标系统不支持这种类型的变量(例如 RETAIN、PERSISTENT)

3800“全局变量需要太多内存。增加项目选项中的可用内存。

增加“项目”、“选项”、“构建”对话框中设置中给出的段数。

3801“变量'<Name>'太大了。(<大小>字节)”

该变量使用大于 1 个数据段的类型。段大小是特定于目标的参数,可以在目标设置 / 内存布局中进行修


改。如果您在当前目标设置中找不到此内容,请联系您的 PLC 制造商。

3802“内存不足。变量 '<name>',<number> 字节。

可用于 Retain 变量的内存空间已用尽。可以在目标设置 /memory 布局中设置特定于目标的内存区域的大


小。如果您在对话框中找不到设置字段,请联系您的 PLC 制造商。(请注意:如果在功能块实例中使用
了 retain 变量,则完整的实例 POU 将存储在 retain 内存区域!

3803“全局数据存储器不足。变量 '<name>', '<number>' 字节。

可用于全局变量的内存空间已用尽。可以在目标设置 /memory 布局中设置特定于目标的内存区域的大


小。如果您在对话框中找不到设置字段,请联系您的 PLC 制造商。

3804“锣石数据描述的当前大小为<'数字'>字节,超过了<'数字'>字节的最大值。”

将持久性数据减少到目标系统允许的大小。

3820“函数中不允许使用'VAR_OUTPUT'和'VAR_IN_OUT'”

在函数中,不能定义任何输出或in_output变量。

3821“函数至少需要一个输入”

至少添加函数的输入参数。

3840“未知的全局变量'<name>'!”

在 POU 中,使用VAR_EXTERNAL变量,没有为其声明全局变量。

3841“'<名称>的声明与全球声明不符!”

VAR_EXTERNAL变量声明中给出的类型与全局声明中给出的类型不同。

10-128 CoDeSysV2.3版本
附录 K:-编译器错误和警告

3850“不允许在已打包的结构'<name>内声明解压缩的结构'<name>'!”

这种结构定义会导致内存中的错位。适当修改定义。

3900“标识符中的多个下划线”

删除标识符名称中的多个下划线。

3901“地址中最多允许 4 个数字字段”

有一个直接分配给一个有四个以上级别的地址。(例如 %QB0.1.1.0.1)。

3902“关键字必须为大写”

使用大写字鯦作为关键字,或在“项目”“选项”中激活选项“自动格式”。

3903“无效的持续时间常量”

常量的表示法不符合 IEC61131-3 格式。

3904“持续时间常数溢出”

用于时间常数的值不能以内部格式表示。可表示的最大值是 t#49d17h2m47s295ms。

3905“无效的日期常量”

常数芯片的表示法不符合 IEC61131-3 格式。

3906“无效的时间常量”

常量的表示法不符合 IEC61131-3 格式。

3907“无效的日期和时间常量”

常量的表示法不符合 IEC61131-3 格式。

3908“无效的字符串常量”

字符串常量包含无效字符。

4000“应为标识符”

在此位置输入有效的标识符。

4001“变量'<名称>未声明”

声明变量 local 或 global。

CoDeSysV2.3版本 10-129
附录 K:-编译器错误和警告

4010“类型不匹配:无法将'<Name>转换为'<Name>'。”

检查运算符所需的数据类型(浏览联机帮助以获取运算符的名称)并更改导致错误的变量的类型,或选择
其他变量。

4011“'<Name>'的参数'<Name>中的类型不匹配:无法将'<Name>转换为'<Name>'。

实际参数的数据类型无法自动转换为形式参数的数据类型。使用类型转换或使用其他变量类型。

4012“'<Name>'的参数'<Name>中的类型不匹配:无法将'<Name>'转换为'<Name>'。

将类型<Typ2>无效的值分配给输入变量“<Name>”。将变量或常量替换为类型 <Typ1> 之一,或分别使


用类型转换和带有类型前缀的常量。

4013“'<Name>'的输出'<Name>'中的类型不匹配:无法将'<Name>'转换为'<Name>'。

将类型无效 <Typ2> 的值分配给输出变量“<Name>”。将变量或常量替换为类型 <Typ1> 之一,或分别使


用类型转换和带有类型前缀的常量。

4014“键入文本:无法将'<name>'转换为'<name>'”

常量的类型与前缀的类型不兼容。
示例:SINT#255

4015“数据类型'<name>'非法用于直接位访问”

直接位寻址只允许用于整数-位字符串数据类型,而根本不允许直接变量。您正在使用 TypREAL/LREAL
类型的变量 var1 或位访问 <var1>.<bit> 中的常量,或者您正在尝试对直接变量进行位访问。

4016“'<name>' 类型变量的位索引'<number>'超出范围”

您正在尝试访问未为变量的数据类型定义的位。

4017“'MOD'不是为'REAL'定义的”

运算符 MOD 只能用于整数和位字符串数据类型。

4020“'ST'、'STN'、'S'、'R' 需要具有写入访问权限或直接地址的变量”

将第一个操作数替换为具有写入访问权限的变量。

4021“不允许对变量'<name>'进行写入访问”

将变量替换为具有写入访问权限的变量。

4022“预期操作数”

在命令后面添加操作数。

10-130 CoDeSysV2.3版本
附录 K:-编译器错误和警告

4023“'+'或'-'之后的预期数字”

输入数字。

4024“期待<操作员 0> 或<操作员 1>或......在'<姓名>'之前

在指定位置输入有效的操作数。

4025“在'<姓名>'之前出现':='或'=>'”

在指定位置输入两个运算符之一。

4026“'BITADR'需要位地址或位地址上的变量”

使用有效的位地址(例如 %IX0.1)。

4027“预期的整数或符号常量”

输入整数或有效常量的标识符。

4028“'INI' 运算符需要功能块实例或数据单元类型实例”

检查使用 INI 运算符的变量的数据类型。

4029“无法对同一函数进行嵌套调用。”

在非重入目标系统中,在仿真模式下,函数调用可能不包含作为参数的自身调用。

示例:fun1(a,fun1(b,c,d),e);
使用中间表。

4030“表达式和常量不允许作为'ADR'的操作数”

将常量或表达式替换为变量或直接地址。

4031“'ADR'不允许在位上!请改用'BITADR'。

使用 BITADR。请注意:BITADR 函数不返回物理内存地址。

4032“'<number> 操作数对于'<name>'来说太少了。至少需要'<number>'”

检查命名运算符需要多少个操作数,并添加缺少的操作数。

4033“'<number> 操作数对于'<name>'来说太多了。至少需要'<number>'”

检查指定运算符需要多少个操作数,并删除多余的操作数。

CoDeSysV2.3版本 10-131
附录 K:-编译器错误和警告

4034“除以0”

您在常量表达式中使用除以 0。如果要引发运行时错误,请使用值为 0 的变量(如果适用)。

4035“如果激活了'替换常量',则不得对'VARCONSTANT'应用ADR”

无法对使用直接值的常量进行地址访问。如果适用,请停用“项目”“选项”“构建”中的“替换常量”选项。

4040“标签'<名称>未定义”

定义名称为 <LabelName> 的标签,或将名称 <LabelName> 更改为已定义标签的名称。

4041“标签'<name>'的重复定义”

标签“<名称>”在 POU 中是多个定义的。重命名标签或删除其中一个定义。

4042“允许按顺序使用不超过<个>号标签”

跳转标签的数量限制为“<Anzahl>”。插入虚拟指令。

4043“标签格式无效。标签必须是名称(可选)后跟冒号。

“标签名称无效或定义中缺少冒号。

4050“未定义 POU'<名称>'”

使用命令“Project”“AddObject”定义名称为“<Name>的 POU,或将”<Name>“更改为已定义 POU


的名称。

4051“'<名称>'没有功能”

使用在项目或库中定义的函数名称,而不是<Name>。

4052“'<name>'必须是 FB'<name>' 的声明实例”

使用项目中定义的数据类型为“<Name>”的实例,或将<实例名称>的类型更改为“<Name>”。

4053“'<名称>'不是有效的框或运算符”

将“<Name>”替换为项目中定义的 POU 或运算符的名称。

4054“POU 名称应作为'INDEXOF'的参数”

给定的参数不是有效的 POU 名称。

10-132 CoDeSysV2.3版本
附录 K:-编译器错误和警告

4060“'<name>' 的 'VAR_IN_OUT' 参数 '<name>' 需要具有写入访问权限作为输入的变量”

要VAR_IN_OUT参数,必须移交具有写入访问权限的变量,因为可以在 POU 中修改VAR_IN_OUT。

4061“必须使用'<name>'的'VAR_IN_OUT'参数'<name>'。”

VAR_IN_OUT参数必须移交给具有写入访问权限的变量,因为可以在 POU 中修改VAR_IN_OUT。

4062“无法从外部访问'<name>'的'VAR_IN_OUT'参数'<name>'。”

VAR_IN_OUT 参数只能在 POU 中写入或读取,因为它们是通过引用移交的。

4063“'<name>' 的 'VAR_IN_OUT' 参数 '<name>' 不得用于位地址。”

位地址不是有效的物理地址。交出变量或直接非位地址。

4064“'VAR_IN_OUT'不得在本地操作调用中被覆盖!”

删除在本地操作调用中为 VAR_IN_OUT 变量设置的参数。

4070“POU 包含过于复杂的表达式”

通过将表达式划分为多个表达式来减小嵌套深度。为此,请使用中间变量。

4071“网络太复杂”

将网络划分为多个网络。

4072“FB 类型('<name>')和实例('<name>')中操作标识符的使用不一致。”

您已经定义了功能块 fb 的两个操作:例如 a1 和 a2,但在调用 FBD 中的一个操作时,您使用的是类型(


框内的字符串,例如 fb.a1 与实例名称中使用的字符串不同(例如,inst.a2,上面的框)。将名称相应地
更正为所需操作的名称。

4100“'^' 需要指针类型”

您正在尝试取消引用未声明为指针的变量。

4110“[<index>]'需要数组变量”

[<index>] 用于未使用 ARRAYOF 声明为数组的变量。

4111“数组的索引表达式必须为'INT'类型”

使用正确类型的表达式或类型转换。

CoDeSysV2.3版本 10-133
附录 K:-编译器错误和警告

4112“数组的索引过多”

检查为其声明数组的索引(1、2 或 3)的数量,并删除多余的索引。

4113“数组的索引太少”

检查为其声明数组的索引(1、2 或 3)的数量,并添加缺少的索引。

4114“其中一个常量不在数组范围内”

确保使用的索引在数组的边界内。

4120“'.' 需要结构变量””

点左侧的标识符必须是 STRUCT 或 FUNCTION_BLOCK 类型的变量,或者是 FUNCTION 或


PROGRAM 的名称。

4121“'<名称>'不是<对象名称>的组成部分”

组件“<Name>”不包含在对象<对象名称>的定义中。

4122“'<名称>'不是被调用功能块的输入变量”

检查被调用功能块的输入变量,并将“<name>”更改为其中之一。

4200“'LD' 预期”

在 IL 编辑器中的跳转标签后插入至少一条 LD 指令。

4201“应使用 IL 操作员”

每个 IL 指令必须以运算符或跳转标签开头。

4202“括号中文本的意外结尾”

在案文后插入右括号。

4203“<姓名>不允许在括号内使用”

运算符 <name> 在 IL 括号表达式中无效。


(无效的有:'JMP'、'RET'、'CAL'、'LDN'、'LD'、'TIME')

4204“没有相应开口支架的闭合支架”

插入一个打开的支架或取下关闭的支架。

4205“')'后不允许使用逗号”

删除右括号后的逗号。

10-134 CoDeSysV2.3版本
附录 K:-编译器错误和警告

4206“不允许在括号内使用标签”

移动跳转标签,使其位于括号之外。

4207“'N' 修饰符需要类型为'BOOL'、'BYTE'、'WORD'或'DWORD'的操作数”

N 修饰符需要数据类型,可以对其执行布尔否定。

4208“条件运算符需要类型'BOOL'”

确保表达式给出布尔值结果或使用类型转换。

4209“此处不允许使用函数名称”

将函数调用替换为变量或常量。

4210“'CAL'、'CALC'和'CALN'需要一个功能块实例作为操作数”

声明要调用的功能块的实例。

4211“在 IL 中,只允许在行尾添加注释”

将注释移到行尾或多出一行。

4212“累加器在条件语句之前无效”

未定义 accu。如果前面的指令没有提交结果(例如“CAL”),就会发生这种情况。

4213“'S' 和 'R' 需要 'BOOL' 操作数”

在这个地方使用布尔变量。

4250“预计会有另一个'ST'声明或POU结束”

该行不以有效的 ST 指令开头。

4251“函数'<name>'中的参数过多”

给出的参数多于函数定义中声明的参数。

4252“函数'<name>'中的参数太少”

给出的参数少于函数定义中声明的参数。

4253“'IF'或'ELSIF'要求'BOOL'表达作为条件”

确保 IF 或 ELSIF 的条件是布尔表达式。

CoDeSysV2.3版本 10-135
附录 K:-编译器错误和警告

4254“'WHILE' 需要 'BOOL' 表达式作为条件”

确保“WHILE”后面的条件是布尔表达式。

4255“'UNTIL' 需要 'BOOL' 表达式作为条件”

确保“UNTIL”后面的条件是布尔表达式。

4256“'NOT' 需要 'BOOL' 操作数”

确保“NOT”后面的条件是布尔表达式。

4257“'FOR' 语句的变量必须为'INT'类型”

确保计数器变量是整数或位字符串数据类型(例如 DINT、DWORD)。

4258“'FOR'语句中的表达式没有具有写访问权限的变量”

将计数器变量替换为具有写入访问权限的变量。

4259“'FOR'语句中的起始值没有具有写访问权限的变量”

“FOR”指令中的起始值必须与计数器变量的类型兼容。

4260“'FOR'语句的结束值必须为'INT'类型”

“FOR”指令中的结束值必须与计数器变量的类型兼容。

4261“'FOR'语句的增量值必须为'INT'类型”

“FOR”指令中的增量值必须与计数器变量的类型兼容。

4262“'EXIT' 在循环之外”

仅在“FOR”、“WHILE”或“UNTIL”指令中使用“EXIT”。

4263“期待数字,'ELSE'或'END_CASE'”

在“CASE”表达式中,您只能使用数字或“ELSE”指令或结束指令“END_CASE”。

4264“'CASE' 需要整数类型的选择器”

确保选择器是整数或位字符串数据类型(例如 DINT、DWORD)。

4265“','之后的预期数字”

在 CASE 选择器的枚举中,必须在逗号后插入另一个选择器。

10-136 CoDeSysV2.3版本
附录 K:-编译器错误和警告

4266“至少需要一份声明”

插入一条指令,至少一个分号。

4267“功能块调用需要功能块实例”

功能块调用中的标识符不是实例。声明所需功能块的实例或使用已定义实例的名称。

4268“预期的表达式”

插入表达式。

4269“'END_CASE'应在'ELSE'分支之后”

在“ELSE”部分之后用“END_CASE”终止“CASE”指令。

4270“'CASE'常量'<name>'已使用”

“CASE”选择器在“CASE”指令中只能使用一次。

4271“范围的下边界大于上限。”

修改选择器的区域边界,使下边框不高于上边框。

4272“在调用'<name>'时,在位置<位置>期待参数'<>name'!”

您可以以这种方式编辑函数调用,同时包含参数名称,而不仅仅是参数值。但是,参数的位置(序列)必
须与函数定义中的位置(顺序)相同。

4273“CASE”-Range'<range>' 的部分已在 Range'<range>' 中使用

确保 CASE 指令中使用的选择器区域不重叠。

4274“'CASE' 语句中的多个 'ELSE' 分支”

一个 CASE 指令不能包含多个“ELSE”指令。

4300“Jump 需要'BOOL'作为输入类型”

确保跳转的输入分别是 RETURN 指令的布尔表达式。

4301“POU'<name>' 需要正好<number> 输入”

输入的数量与 POU 定义中给出的 VAR_INPUT 和 VAR_IN_OUT 变量的数量不对应。

CoDeSysV2.3版本 10-137
附录 K:-编译器错误和警告

4302“POU'<name>' 需要正好 %d 个输出”。

输出的数量与 POU 定义中给出的VAR_OUTPUT变量的数量不对应。

4303“'<name>' 不是运算符”

将“<Name>”替换为有效的运算符。

4320“与联系人一起使用的非布尔表达式'<name>'”

触点的开关信号必须是布尔表达式。

4321“与线圈一起使用的非布尔表达式'<name>'”

线圈的输出变量必须为 BOOL 类型。

4330“在'<name>框的输入'EN'时预期的表达式”

将输入或表达式分配给 POU“<Name>”的输入 EN。

4331“在'<名称'框的输入'<number>'时应有表达式>”

未分配运算符 POU 的输入<编号>。

4332“在'<Name>'框的输入'<name>'处应有表达式”

POU 的输入类型为 VAR_IN_OUT,未分配。

4333“预期跳转中的标识符”

给定的跳转标记不是有效的标识符。

4334“跳转输入时预期的表情”

将布尔表达式分配给跳转的输入。如果为 TRUE,则将执行跳转。

4335“返回输入时预期的表达式”

将布尔表达式分配给 RETURN 指令的输入。如果为 TRUE,则将执行跳转。

4336“输出输入时预期的表达式”

为输出框分配合适的表达式。

4337“预期输入的标识符”

在输入框中插入有效的表达式或标识符。

10-138 CoDeSysV2.3版本
附录 K:-编译器错误和警告

4338“框'<名称>'没有输入”

对于运算符 POU'<Name> 的任何输入,都不会分配有效表达式。

4339“输出时的类型不匹配:无法将'<name>'转换为'<name>'。

输出框中的表达式类型与应分配给它的表达式的类型不兼容。

4340“Jump 需要'BOOL'作为输入类型”

确保跳转的输入是布尔表达式。

4341“返回需要布尔输入”

确保 RETURN 指令的输入是布尔表达式。

4342“在'<name>'框的输入'EN'处应有表达式”

将有效的布尔表达式分配给框的 EN 输入。

4343“常量的值:'<name>'”

框“<Name>”的输入“<Name>”声明为VAR_INPUT常量。但是对于此 POU 框,已在“编辑参数”对话框


中分配了一个表达式,该表达式与类型不兼容。

4344“'S' 和 'R' 需要 'BOOL' 操作数”

在 Setresp.Reset 指令后插入一个有效的布尔表达式。

4345“'<name>' 的参数'<name>'的类型无效:无法将'<type>'转换为'<type>'。”

表达式分配给类型不兼容的 POU 框“<Name> 的输入 <Name>”。

4346“不允许使用常量作为输出”

您只能将输出分配给具有写入访问权限的变量或直接地址。

4347“'VAR_IN_OUT'参数需要具有写入访问权限的变量作为输入”

要VAR_IN_OUT参数,只能移交具有写入访问权限的变量,因为这些变量可以在 POU 中修改。

4348“程序名称'<name>'无效。已存在同名变量。

您已在 CFC 编辑器中插入了一个程序框,该框与项目中已存在的(全局)变量同名。您必须相应地重命


名。

CoDeSysV2.3版本 10-139
附录 K:-编译器错误和警告

4349“POU<name>中的输入或输出已删除:检查与盒子的所有连接。此错误消息仅在编辑 CFC 后消失”

适当更正 POU。

4350“证监会行动不能从外部访问!”

只能在定义这些操作的 SFCPOU 中调用 SFC 操作。但是,如果您从 SFCPOU 中调用操作(这是允许


的),但在 iecsfc.lib 仍包含在项目中时未使用 IEC 步骤,则此错误也将被转储。在这种情况下,请在库
管理器中删除库并重新生成项目。

4351“步骤名称不是标识符:'<name>'”

重命名步骤或选择有效的标识符作为步骤名称。

4352“有效步骤名称后面的额外字符:'<Name>'”

删除步骤名称中无效的字符。

4353“步骤名称重复:'<名称>'”

重命名其中一个步骤。

4354“跳转到未定义的步骤:'<名称>'”

选择一个现有的步骤名称作为跳转的目标,插入名称为“<name>”的步骤。

4355“过渡不得有任何副作用(分配、FB-Calls 等)”

转换必须是布尔表达式。

4356“在没有有效步骤名称的情况下跳转:'<Name>'”

使用有效的标识符作为跳跃的目标(标记)。

4357“找不到 IEC 库”

检查库管理器中是否插入了库 iecsfc.lib,以及 'Project''Options''Paths' 中定义的库路径是否正确。

4358“未宣布的行动:'<名称>'”

确保在对象管理器中,IEC 步骤的操作插入到 SFCPOU 下方,并且在编辑器中,操作名称插入到限定符


右侧的框中。

4359“无效的限定符:'<name>'”

在操作名称左侧的框中,输入 IEC 操作的限定符。

10-140 CoDeSysV2.3版本
附录 K:-编译器错误和警告

4360“限定符'<name>'之后的预期时间常数”

在操作名称左侧的框旁边输入限定符后面的时间常量。

4361“'<名称>'不是行动的名称”

在限定符右侧的框旁边输入操作的名称或项目中定义的变量的名称。

4362“操作中使用的非布尔表达式:'<name>'”

插入布尔变量或有效的操作名称。

4363“IEC 步骤名称已用于变量:'<名称>'”

请重命名步骤或变量。

4364“转换必须是布尔表达式”

转换表达式的结果必须为 BOOL 类型。

4365“限定符'<name>'之后的预期时间常数”

打开步骤“<名称>”的“步骤属性”对话框,然后输入有效的时间变量或时间常数。

4366“并行分支的标签不是有效的标识符:'<名称>'”

在标记跳转标签的三角形旁边输入一个有效的标识符。

4367“标签'<name>'已被使用”

已存在具有此名称的跳转标签或步骤。请相应重命名。

4368“动作'<name>'用于多个步骤链,其中一个步骤链包含另一个步骤链!”

操作“<Name>”用于 POU 以及 POU 的一个或多个操作。

4369“转换只需要一个网络”

有多个 FBD 或 LD 网络用于转换。请减少到 1 个网络。

4370“在正确的 IL 转换后找到的其他行”

删除过渡结束时不需要的行。

4371“有效表达式后面的无效字符:'<name>”

删除过渡结束时不需要的字符。

CoDeSysV2.3版本 10-141
附录 K:-编译器错误和警告

4372“步骤'<name>':时间限制需要键入'TIME'”

通过使用 TIME 类型的变量或正确格式的时间定义(例如“t#200ms”),在步骤属性中定义步骤的时间限


制。

4373“IEC操作仅允许使用SFC-POU”

有一个操作分配给非 SFC-POU(请参阅对象管理器中),该操作在 SFC 中编程并包含 IEC 操作。将此


操作替换为不包含 IEC 操作的操作。

4374“预期步骤而不是转换'<名称>'”

SFCPOU 已损坏,可能是由于任何导出-导入操作所致。

4375“预期转换而不是步骤'<name>'”

SFCPOU 已损坏,可能是由于任何导出-导入操作所致。

4376“转换'<名称>'后预期的步骤”

SFCPOU 已损坏,可能是由于任何导出-导入操作所致。

4377“步骤'<名称>'之后的预期转换”

SFCPOU 已损坏,可能是由于任何导出-导入操作所致。

4400POU'<name>'的导入/转换包含错误或不完整。

POU 无法完全转换为 IEC61131-3。

4401“S5 时间常数<数字>秒太大(最大 9990 秒)。”

accu 中没有有效的 BCD 编码时间。

4402“仅允许在 I/O 上直接访问。”

确保仅访问定义为输入或输出的变量。

4403“STEP5/7 指令无效或不可转换为 IEC61131-3。”

某些 STEP5/7 命令不能转换为 IEC61131-3,例如 MAS 等 CPU 命令。

4404“STEP5/7 操作数无效或不可转换为 IEC61131-3。

某些 STEP5/7 操作数不能分别转换为 IEC61131-3,因此缺少操作数。

4405“STEP5/7 定时器的复位无法转换为 IEC61131-3。”

相应的IEC定时器没有复位输入。

10-142 CoDeSysV2.3版本
附录 K:-编译器错误和警告

4406“STEP5/7 计数器常数超出范围(最大 999)。”

accu 中没有有效的 BCD 编码计数器常量。

4407“STEP5 指令不可转换为 IEC61131-3。”

某些 STEP5/7 指令无法转换为 IEC61131-3,例如 DUF。

4408“计时器或计数器字的位访问不可转换为 IEC61131-3。”

特殊定时器/计数器命令不能转换为 IEC61131-3。

4409“ACCU1 或 ACCU2 的内容未定义,不可转换为 IEC61131-3。”

连接两个 accu 的命令无法转换,因为未定义 accu 值。

4410“叫 POU 不在项目中。”

导入被调用的 POU。

4411“全局变量列表中的错误。”

请检查 SEQ 文件。

4412“内部错误编号11”

请联系 PLC 制造商。

4413“数据块中行的格式错误”

在应该导入的代码中,有一个错误的日期。

4414“FB/FX 名称缺失。”

在原始 S5D 文件中,缺少(扩展)POU 的符号名称。

4415“不允许在区块结束后进行指令。”

无法导入受保护的 POU。

4416“无效的命令”

S5/S7 命令无法反汇编。

4417“评论未关闭”

用“*)”结束评论。

CoDeSysV2.3版本 10-143
附录 K:-编译器错误和警告

4418“FB/FX 名称太 (最多 8 个字符)”

(扩展的)POU 的符号名称太 。

4419 “ 行 的 预 期 格 式 ” ( * 名 称 : <FB/FX 名 称 > * ) “ ”

相应地更正该行。

4420“缺少 FB/FX 参数的名称”

检查 POU。

4421“FB/FX 参数类型无效”

检查 POU。

4422“缺少 FB/FX 参数类型”

检查 POU。

4423“无效的 FB/FX 调用参数”

检查POU的接口。

4424“警告:FB/FX 用于调用缺失或参数无效或具有”0“参数”

调用的 POU 尚未导入或不正确或没有参数(在最后一种情况下,您可以忽略错误消息)。

4425“标签缺失的定义”

未定义跳跃的目标(标签)。

4426“POU 没有有效的 STEP5 块名称,例如PB10”

修改 TO 名称。

4427“未声明计时器类型”

在全局变量列表中添加计时器的声明。

4428“超出打开的 STEP5 支架的最大数量”

您不能使用超过七个开放括号。

4429“形式参数名称错误”

参数名称不能超过四个字符。

10-144 CoDeSysV2.3版本
附录 K:-编译器错误和警告

4430“形式参数类型不可 IEC 转换”

在 IEC61131-3 定时器中,计数器和 POU 不能转换为形式参数。

4431“STEP5STL 中的调用的'VAR_OUTPUT'参数过多”

A 不能包含超过 16 个形式参数作为输出。

4432“不允许在表达式中使用标签”

在 IEC61131-3 中,跳线标签不得插入任何所需位置。

4434“标签太多”

A 包含的标签不得超过 100 个。

4435“跳转/呼叫后,必须开始一个新的表达式”

跳转或调用 Load 命令后,必须遵循 LD。

4436“位结果未定义,不可转换为 IEC61131-3。”

VKE 使用的命令无法转换,因为 VKE 的值未知。

4437“指令类型和操作数不兼容”

A 命令用于单词操作数,反之亦然。

4438“未打开数据块(之前插入指令 CDB)”

插入“ADB”。

4500“无法识别的变量或地址”

监视变量未在项目中声明。通过按 <F2> 您可以获得列出声明变量的输入助手。

4501“有效监视表达式后面的额外字符”

去除多余的标志。

4520“Pragma 中的错误:在'<Name>'之前应显示标志!”

编译指示不正确。检查“<Name>”是否为有效标志。

4521“Pragma 中的错误:意外元素'<Name>'!”

检查编译指示是否正确。

CoDeSysV2.3版本 10-145
附录 K:-编译器错误和警告

第4522章 “FlagOff'PragmaExpected!”

Pragma 尚未终止,请插入“flagoff”指令。

4523 “<Name>' 类 型 的 接 口 中 不 允 许 使 用 Pragma {<Pragmaname>}”

DasPragma 不能在此位置使用。请参阅 CoDeSys 在线帮助或用户指南,关键字“pragma”以正确使用编


译指示。

4550“索引超出定义范围:可变 OD”编号>,行<行数>”。

确保索引位于目标设置/网络功能中定义的区域内。

4551“子索引超出定义范围:变量 OD”数字>,行<行数>”。

确保子索引位于目标设置/网络功能中定义的区域内。

4552“索引超出定义范围:参数 OD”number>,行<行号>”。

确保索引位于目标设置/网络功能中定义的区域内。

4553 “ 超 出 定 义 范 围 的 子 索 引 : 参 数 OD”number> , Line <line number>.”

确保子索引位于目标设置/网络功能中定义的区域内。

4554“变量名称无效:变量 OD<number>,行<行号>。”

在归档的“变量”中输入有效的项目变量。使用语法 <POUname>.<variablename> 或者全局变量


.<variable name>

4555“空表条目,输入非可选:参数 OD<编号>,行<行号>

您必须在此字段中输入。

4556“空表条目,输入非可选:变量 OD<number>,行<number>”

您必须在此字段中输入。

4557“所需的参数内存太大”

已超过可通过Parameters类型的参数列表加载到控制器的最大数据大小。此大小由目标系统定义。有关
数据大小的信息在编译时显示在消息窗口中。减小参数列表大小。

4558“所需的变量内存太大”

已超过可通过变量类型的参数列表加载到控制器的最大数据大小。此大小由目标系统定义。有关数据大小
的信息在编译时显示在消息窗口中。减小参数列表大小。

10-146 CoDeSysV2.3版本
附录 K:-编译器错误和警告

4560
无效值:字典'<名称>',列'<名称>',行'<行号>'”

检查此条目。这取决于当前使用的列(属性)定义,哪些条目对此字段有效。此定义由参数管理器的特定
于目标的 XML 描述文件或标准设置给出,如果没有描述文件,将使用该设置。

4561
“列未定义:'<Name>'”
参数列表的某一列中的条目引用另一列,但未定义该列。列定义由当前目标的参数管理器的描述文件(
XML)给出。如果描述文件不可用,则使用标准设置。

4562
“已使用的索引/子索引:字典'<名称>',行'<行号>'”
索引/子索引组合在所有参数列表中必须是唯一的,因为它可用于参数访问。相应地更正索引。

4563
“标识符'<Name>'已使用:字典'<Name>',行'<行号>'”
该名称在所有参数列表中必须是唯一的,因为它可用于参数访问。

4564
“索引'<名称>'超出范围:字典'<名称>',行'<行号>'”
输入在目标设置中定义的范围内的索引,在字段“索引范围...”中类别网络功能用于相应的列表类型(变
量、参数、映射)。

4565
“子索引'<Name>'超出范围:字典'<Name>',行'<行号>'”
输入在目标设置中定义的范围内的子索引,在字段“子索引范围”中对网络功能进行分类。

4566
“导入参数管理器时出错”
您已导入一个导出文件,其中包含有关参数管理器的错误信息。检查 *.exp 文件。

4600
“Networkvariables: '<name>' 表达式不是来自 bool 类型!”
确保在选项“事件时传输”的网络变量列表的属性对话框中定义的变量的类型为 BOOL。

4601“
“网络变量'<name>':未找到网络变量交换的循环或随心所欲的任务”

在使用给定列表的CAN或UDP类型的网络变量的项目中,没有循环或自由PLC_PRG任务(仅声明是不够
的!您必须注意在适当的任务或PLC_PRG中使用变量。如果要在多个任务中使用它们,请注意,在数据
交换时,将考虑具有最高优先级的任务。

CoDeSysV2.3版本 10-147
附录 K:-编译器错误和警告

4602
“'<网络变量列表的名称>':对象使用 UDP 端口'<端口号>而不是'<端口号>'”

在命名网络变量列表的“设置”中,使用的端口号与全局变量文件夹中的第一个网络变量列表中使用的端口
号不同。请注意,所有网络变量列表都使用相同的端口!

4604
“网络变量'<name>':基本标识符已被多次使用。”
在多个网络变量列表的配置设置(“对象”、“属性”)中使用相同的 COB-ID。分配唯一 ID。

4605
“网络变量'<name>':重复的 CANCOBID。”
在网络变量列表(“对象”“属性”)的配置中,使用了COB-ID,该ID也在CANPLC配置中指定。分配唯一
ID。

4620
在项目中发现了未使用的变量。请参阅第 4.3 章,了解命令“Project”“检查”未使用的变量的描述。

4621
通 过 “AT” 声 明 将 变 量 分 配 给 内 存 区 域 时 存 在 重 叠 。 参 第 4.3 章 , 了 解 命 令 'Project' 'Check'
'Overlappingmemoryareas' 的描述。

4622
分配给同一内存区域的 IEC 地址在多个任务中被引用。有关命令“Project”、“Check”、“ConcurrentAccess”
的描述,请参 第 4.3 章。

4623
项目在多个位置获得对同一内存区域的写入访问权限。有关命令“Project”、“Check”、“Multiplewritetooutput”的
描述,请参 第 4.3 章。

4650“AxisGroup'<Name>':任务'<Name>'不存在。

在 PLC 配置中,在轴组的定义中(对话框“模块参数”,列“值”),为任务定义了一个名称,用于控制该
轴组的数据传输,这在任务配置中是未知的。正确的任务配置和相应的PLC配置。

4651
“AxisGroup'<Name>':未设置周期时间(dwCycle)。
在轴组的“模块参数”对话框中,输入循环时间(dwCycle)的值。

4656
“驱动器'<name>':缩放因子不得为 0。
打开 PLC 配置并检查驱动器配置对话框中的 Scale 条目。所有字段的条目必须不等于“0”。

4670
“CNC 程序'<名称>':找不到全局变量'<名称>'。”

10-148 CoDeSysV2.3版本
附录 K:-编译器错误和警告

在CNC程序中,使用全局变量(例如$glob_var$),该变量未在项目中定义。添加适当的声明或更正
CNC程序中变量的赋值。

4671“CNC 程序'<名称>':变量<名称>'具有不兼容的类型。”

在CNC程序的指令中分配了一个变量,该变量被声明为在这个地方无效的数据类型。使用另一个变量或
更正类型规范。

4685“CAM'<名称>': CAM 表类型未知。”

检查在 CAM 编辑器对话框“编译选项...”中指定的数据类型,以获取等距或单元优化点表。

4686“CAM'<名称>':CAM 点超出数据类型范围。

在此 CAM 中,使用点,这些点超出了为点表指定的数据范围。有关当前范围定义,请参 CAM 编辑器


中的“编译选项”对话框。

4700“'<Number>' ('<Name>'):观察表达式 '<Name>' 不是数值变量。

在可视化的配置中,使用了一个变量,该变量不是数字,正如这里所要求的那样(例如,在配置 XOffset
或 Angle 值等时)。

4701“'<Name>' ('<Number>'):监视表达式'<name>'不是 BOOL 类型。

在可视化的配置中,使用了一个不是 BOOL 类型的变量,如本文所述。

4702“'<Name>' ('<Number>'):监视表达式 '<name>' 不是 STRING 类型。

可视化包含一个不属于 STRING 类型的变量,尽管这在这个地方是必需的(例如,在工具提示配置中


)。

4703“'<Name>' ('<Number>' ):监视表达式 '<Name>' 无效”

可视化包含无效变量。

4704“'<Name>'('<Number>'):监视列表'<Name>'中的初始值无效。

在此监视列表中,用于可视化(类别“输入”中的 INTERN 命令)中,存在错误的初始值。检查已使用列


表。

4705“'<名称>'('<编号>'):未为警报表分配有效的警报组。

在告警表(类别告警表)的配置对话框中输入有效的告警组。

4706“'<名称>'('<编号>'):使用报警表需要激活目标设置'控制器中的报警处理'。

在“资源”选项卡中打开目标设置,在“可视化”对话框中激活选项“PLC中的报警处理”。否则,警报表元
素将无法在目标可视化中工作,该目标可视化当前也在目标设置中激活。

CoDeSysV2.3版本 10-149
附录 K:-编译器错误和警告

4707“'<Name>' ('<Number>'):当前目标不支持警报表。请从目标可视化中删除这些元素。

目标系统不支持报警处理(无法激活目标设置“PLC 中的报警处理”)。因此,要运行目标可视化(当前
在“可视化”选项卡的目标设置中激活),必须从可视化中删除警报表元素。

4708“'<Name>' ('<Number>'):使用趋势需要激活目标设置”PLC 中的趋势记录”。

在“资源”选项卡中打开目标设置,在“可视化”对话框中激活选项“将趋势数据存储在 PLC 中”。否则,趋


势元素将无法在目标可视化中工作,该目标可视化当前也在目标设置中激活。

4709“'<Name>' ('<Number>'):当前目标不支持趋势。请从目标可视化中删除这些元素。

目标系统不支持趋势数据的处理(无法激活目标设置“在 PLC 中存储趋势数据”)。因此,要运行目标可


视化(当前在“可视化”选项卡的目标设置中激活),必须从可视化中删除趋势元素。

4712“'<Name>'('<number>'):所选目标不支持密码输出””

可视化元素中的文本输出配置为通过动态文本或 Unicode 文本工作。此外,在“输入”类别中激活了“隐


藏”选项。Target-Visualization 不支持此功能。

4900“转换类型无效”

您正在使用当前选择的代码生成器不支持的类型转换。

4901“内部错误:阵列访问溢出!”

对于 32 位变量,数组边界很大。减小数组索引范围。

10-150 CoDeSysV2.3版本
11 - 索引

11 指数
8
ALARM_TASK 10-97
8.3 文 件 格 式 10-97 PLC 中的报警处理 10-97 报警
8051 10-91 6-9
别名10-37
一个 指针访问处的对齐方式 10-35 备选分
支 2-21SFC 中的备选分支 2-21,
接受访问权限 4-42 接受更改 4-41 接受更改的项 5-42 表 达 式 分 析 10-61 分 析 New.lib
目 4-41 接受属性 4-41 访问冲突 4-45 访问保护 10-61
4-24, 4-46 访问权限 4-46DeviceNet-Slave参数
的访问权限 6-49 访问权限 4-58 确认 6-10 警报确
和 10-4AWL 中的 AND 运算
认 6-9 证监会中的行动助理 5-47 作业控制中的操
符 2-9 附加程序调用 6-54 附
作 2-7、2-16、4-59 作业控制中的操作添加 5-43 加任务 6-51、6-52 反余弦
缩放 5-44 超时错误时的操作 6-48 操作隐藏程序 10-23 反正弦 10-2610-23
4-12 激活心跳消费者 6-43 激活心跳消费者 6-39 反正切 10-23 过刊浏览
激活心跳生成 6-43 激活心跳制作器 6-39 激活系 10-72 过刊浏览 ZIP4-25 参
统变量 CurrentVisu10-97 激活 6-33 活动步骤 数 2-1、2-3 参数 2-5 排列符
2-17 号 4-83“数组声明”对话框
5-8

阵列10-33
数组\Access10-33 数组\初始化 10-33
参数管理器中的数组 6-73 步骤属性
5-45 、 5-46 跟 踪 的 ASCII 格 式 6-69
ASD 文件4-4

ASIN 10-23
添加 10-1 添加配置文件 6-24 为并行分支添 询 问 项 目 信 息 4-5 asl.-file \*
加标签 5-43 添加对象 4-54, 4-55AWL 中 MERGEFORMAT4-5 作业
的 ADD 运算符 2-9 添加共享对象 4-52 加入 2-11, 5-33 作 业 梳 理 5-33
查看列表 6-61 其他 CoDeSys 功能 1-2 附加 FBD 中的作业 5-31 作业运算符
在 线 功 能 1-1 地 址 DeviceNet-Master 6-45 2-13
DeviceNet-Slave6-46PLC配置地址检查
10-94 地址10-29
AT5-6AT 声明5-6

阿坦10-23
附加手表变量 6-61 自动清除
模式 6-30 自动删除 6-48 自动
加载 4-5 自动复位 6-48 自动
保存 4-4 编译前自动保存 4-5
自动声明 4-6, 5-8 自动套用
ADR10-13 实例地址10-13 格式 4-6 自动启动 6-43 自动
启动 6-30 可用连接
DeviceNet-Slave 6-49
阿德林斯特10-13
报警确认 6-10 报警等级 6-13 报警等级
6-10 报警配置 6-10、6-13 报警配置设置
6-16 报警配置\在线设置 6-16 报警停用
6-13 报警评估停用 6-16 报警事件 6-9 报
警组 6-13 报警信息 6-13 报警优先级
6-9、6-13 报警保存 6-15 报警状态 6-9
报警类型6-13
B
返回一个宏级别 5-59 自动备
份 4-4 烘焙文件 4-4 基本参数
DeviceNet-Master6-45 基本
参数位通道 6-29CAN主机
6-36CAN模块 6-37 通道

CoDeSysV2.3版本 命令行界面
11 - 索引

6-28 DeviceNet-Slave 6-46 AWL2-9 中的 CAL 运算符


DP 主 站 6-30 DP 从 站 6-32 CALC 2-9
I/O模块 6-25 基本设置 CALCN 2-9
CanDevice6-42 批处理命令
10-69 波 特 率 CAN Master 计算地址 6-23, 6-30 呼叫 10-72 调用程序
6-36 波特率 6-31 波特率 2-5 调用树 4-59 回调函数 6-55 调用函数 2-1
DeviceNet-Master6-46 波 调用功能块 2-4, 2-11 在 ST 中调用功能块
特率 6-42BCD 转换10-50 2-13 在文本编辑器中调用 POU5-22 调用栈
6-57CAN主站基本参数 6-36CAN参数 6-36
模 块 参 数 6-37 CAN 模 块 从 站 模 块 选 型 6-39
CAN模块基础参数 6-37CAN参数 6-38 模块化
从站模块选型 6-39PDO映射 6-39CAN模块
6-36 CAN 参 数 CAN 主 站 6-36 CAN 模 块 6-38
CAN设置 CanDevice6-42CAN设置 6-3 网络
变量列表的CAN设置 6-4CanDeviceBase 设
置 6-42CAN设置 6-42 配置 6-41 默认PDO映
射 6-43 CANopen 库 6-41 CANopen 节 点 6-41
CANopen-Slave6-41 级联4-83

BCD_TO_INT 10-50
二进制应用程序文件 4-12 二进
制符号信息 4-20ST算子的绑定
2-11 位寻址 10-28 位选通 6-48
位访问5-13, 10-28 位寻址变量
5-29 位寻址变量5-22

比塔德尔10-13
位通道 6-29 位函数
10-50 位值4-7

眨眼10-57
5-39座
布尔10-31
BOOL 常数 10-25BOOL_TO 转换 10-14 启动项目
4-5、 4-7 、 4-12 、 4-71 、 4-82 、 10-76 、 10-94 框 5-32
LD 中带 EN 输入的框 5-38 断点删除 5-24 设置 5-23 断
点 1-1、2-24、5-22 断点 5-24“断点”对话框 4-73 断点
位置 4-72 文本编辑器中的断点位置 5-23 广播 6-3 浏览
器 ini-文件 6-81 构建 4-11, 4-30、4-69、10-71 总线标
识符 6-42 总线参数 DP 主站 6-31BusDiag.lib6-26 总线 案例2-14
诊断 6-26BY2-14 字节 10-31 字节对齐 10-86 字节常量 CASE指令 2-14CASEFOR循环 2-11CFC 返回一个/所有宏级
别 5-59 更改连接 5-54 连接标记 5-54 复制元素 5-53 创建宏
10-26 字节寻址模式 10-94 字节函数10-50 5-58 创建连接 5-53 光标位置 5-49 删除连接 5-54 显示顺序
5-55 编辑宏 5-58EN/ENO5-52 扩展宏 5-59 反馈路径 5-59 插
入框 5-50 插入注释 5-51 插入引脚 5-51 插入输入 5-50 插入框
的输入 5-51 插入输入/输出 5-55 插入跳转 5-50 插入标签 5-51
插入销 5-51 插入输出 5-50 插入返回 5-51 移动元件 5-53 否定
5-51 顺序-一个向后 5-56 顺序-一个前进 5-56 顺序-到开头
5-56 顺序-到最后 5-56 根据数据流排序 5-56 执行顺序 5-55 拓
扑顺序 5-55POU的特性 5-52 选择元素 5-53 设置/重置 5-51 氟
氯化碳 2-21 在线模式下的 CFC5-59CFG 文件 6-24 状态变更
6-48 在线更改值 2-24通道 6-28通道通道参数 6-29 自定义参数
6-29 通道 6-28 通道 ID6-28 通道参数 6-29 字符曲线 10-59 检
查 10-71 登录时检查 4-8 自动检查 4-13 检查重叠地址 6-23 入
住 4-19 入住 4-49 退房 4-18 退房 4-49 检查 DeviceNet-Slave
的产品代码 6-46 检查 DeviceNet-Slave 的产品版本 6-46 检查
项目并发访问 4-45 输出上的多个写入访问 4-45 重叠的内存区
域 4-44 未使用的变量 4-44检查项目 4-44 检查
DeviceNet-Slave 的 供 应 商 ID 6-46 检 查 边 界 10-34
CheckDivReal 10-2 CheckPointer 函 数 10-35
CheckPointerAligned 函数 10-35 检查范围已签名 10-37 检查
范围无符号 10-37 检查 DeviceNet-Slave6-46 校验和 4-82CI
文件 4-25 空白 10-71 全部清理 4-31 全部关闭 4-83 关闭文件
4-23 CMS 优 先 级 组 6-39 COB-ID 6-36 、 6-39 COB-ID 6-4
CoDeSys1-1 线圈 2-22、5-38 颜色 4-9PLC-Browser中的命令
条目 6-81 命令文件 10-70命令行 10-69 嵌套注释 4-11 注释
I/O 模块 6-25 注释 5-1、5-9、5-27CFC 中的注释 5-51 通信
DDE8-1 符号接口 4-15 通讯 4-15 通讯周期 6-36 通讯参数登
录时检查 4-8 对话框 4-81, 4-82 不保存在项目中 4-8 快速检
查 4-82 使用项目保存 4-8 通讯参数 4-78 通讯超时 4-8 下载通
讯超时 4-8 比较 4-38 比较项目在比较中工作模式 4-41 比较项
目 4-41 比较项目 4-38、4-39 与ENI-Project比较 4-38 比较项目
4-38 比较结果 4-39 编译 4-69 编译 10-71 编译文件选项 4-19
编 译 文 件 目 录 4-10 编 译 器 版 本 4-12 压 缩 6-68 压 缩 10-98
CONCAT10-40 串联 10-40 并发访问 4-45 配置文件 6-24 配置
文件目录 4-10CAN模块的配置 6-36Profibus模块的配置 6-29
配置弹性网卡 4-17 配置符号文件 4-15 配置的输入连接
DeviceNet-Slave 6-49 CFC 中 的 连 接 标 记 5-54 连 接 5-54
CFC 中的连接 5-53、5-54 常数 5-5 联系方式 2-22、5-37 内容
C 运算符 10-14、10-34 上下文菜单 4-3 上下文相关帮助 4-84 连
续功能图编辑器 2-21 连续功能图编辑器(CFC) 5-49 受控变
量 10-54、10-55 控制器索引 6-4 控制器状态 4-82 整数类型的
C 2-9 中的 C 修饰符 转换 10-16 的转换类型 10-14 转换对象 4-56 转换旧的 PLC 配
置 6-24 将 S5 转换为 IEC1131-310-80 复制 4-62 复制对象
CAL 10-14

命令行界面 CoDeSysV2.3版本
11 - 索引

4-56, 10-73 复制 CFC 中的元素 5-53 在 FBD 中复制 5-34COS10-22 余弦 10-22 创建备
份 4-4 创建应用程序的二进制文件 \*MERGEFORMAT4-12 创建二进制符号信息 4-20 创建
启动项目 4-20, 10-76 创建启动项目 4-82 在 CFC 中创建宏 5-58 创建翻译文件 4-32 创建基
础 SDO6-39 创建通信 6-39 创建映射SDO6-39 交叉引用列表 4-60 交叉引用列表 4-59,
6-59 交叉引用列表 5-2CTD10-46CTU10-45CTUD10-46 当前Visu10-97FBD 中的光标
位置 5-30CFC 中的光标位置 5-49LD 编辑器中的光标位置 5-36FBD 中的光标设置 5-31 自
定义参数 I/O 模块 6-28 自定义参数 6-24, 6-29 切割 4-61FBD 切割 5-34 循环独立强迫)
10-94 循环 6-48 循环任务6-53

CoDeSysV2.3版本 CLIII系列
11 - 索引

AT5-6 自动 5-8 新品 5-10 编译指示 5-11 声明 5-3 声明 5-13 声明 5-14


声明编辑器行号 5-9 在线模式 5-10 声明编辑器 5-3 声明关键字 5-6 变量
的声明 5-6声明第 2-1、5-3 部分声明窗口 5-1 表4-6、5-9的声明声明变量
4-66 Decrementer 10-46 DeviceNet-Slave 参 数 默 认 值 6-49 default.chk
4-82default.prg4-82default.sts4-82 定义 4-48 延迟 10-73 删除 4-62,
10-41 删除标签 5-44SFC 中的删除操作 5-44 删除对象 4-54SFC 中的
删除步骤和转换 5-42 删除过渡 5-44 删除监视变量 6-61 在 FBD 中删除
5-34 演示模式 9-1 取消引用 10-14, 10-34 导数 10-51 桌面 4-8 设备在
配置中处于活动状态 6-46 设备 GUID10-74 设备实例 10-74 设备参数
10-74 设备类型 6-42DeviceNetPLC配置 6-45DeviceNet-Master 基本
参数 6-45 模块参数 6-46DeviceNet-Master6-45DeviceNet-Slave 基本
参 数 6-46 I/O 连 接 配 置 6-47 模 块 参 数 6-49 参 数 6-49 DeviceNet-Slave
6-45 诊断总线状态 6-27 诊断状态 6-26, 6-50 诊断地址 6-26 诊断消息
6-50 诊断地址 6-37DINT10-31DINT 常量 10-26 目录选项 4-10 通过批
处理命令设置 10-72 禁用任务 6-57 显示流量控制 4-77 显示高度 10-97
显示顺序在 CFC5-55 显示宽度 10-97DIV10-2AWL 中的 DIV 操作员
2-9DO2-15 不在项目中保存通信参数 4-8 文档文件 6-7, 6-8 文档框
4-28 文档框文件 6-7、6-8 文档 4-28、4-36 文档框 6-7、6-8 项目文档
4-36 下载 4-14、4-69、4-71、4-82 下载为文件 10-94 下载信息 4-82 下
载信息 4-31、4-82 下载信息文件 4-71 下载参数表 6-78 下载PLC组文件
10-94 下载符号文件 10-94DP主站基本参数 6-30 总线参数 6-31DP参数
6-30DP大师 6-30DP主控 6-30DP参数 DP主站 6-30DP从站 6-33DP
从站基本参数 6-32 组 6-35 输入/输出 6-34 模块参数 6-36 属性 6-36DP
从 站 6-35 DP 系 统 6-29 拖 放 4-53 DSP301 6-36 DSP306 6-36 DT 10-32
DT_TO转换 10-18 转储 XML 符号表 4-15DWORD10-31DWORD 常量
10-26 Dynamc 文 本 10-75 DynamicTextFiles 开 / 关 10-75
DynamicTextHideElements 开/关 10-75DynamicTextHide 开/关10-75

D
数据库链接添加共享对象 4-52 签
入 4-49 签出 4-49 定义 4-48 获取
所有最新版本 4-51 获取最新版本
4-49 标签版本 4-52 登录 4-48 多
次签入 4-51 多次签出 4-51 多次定
义 4-51 多次撤消签出 4-51 项目版
本历史 4-51 刷新状态 4-53 显示差
异 4-49 显示版本历史记录 4-49 撤
消签出 4-49 数据库链接 4-46 数据
类型 5-7 数据类型名称 10-105 数
据类型 2-8、4-2 数据库项目 4-17
数据控制时间6-31

日期10-32
DATE 常 量 10-25 报 警 日 志 文 件 中 的 日 期 / 时 间 6-16
DATE_AND_TIME 10-32 DATE_AND_TIME 常 数 10-26
DATE_TO 转换 10-18DCF 文件 6-36 用于创建全局变量列表的
DCF 文件 6-3DCF 写入 6-38DDE8-1DDE 查询数据的一般方法
8-1DDE 查询 8-1DDE 接口使用 Intouch 访问变量 8-2 激活 8-1
使用 EXCEL 链接变量 8-2 使用 WORD 链接变量 8-1 可以读取哪
些变量? 8-1DDE接口 8-2 在线模式下停用告警评估 6-16 停用任
务生成 10-98 停用变量 6-13 调试任务 6-57 调试 1-1、2-23、
4-11、5-22、5-29 在多任务环境中调试 10-85 声明 10-103 声明

克利夫 CoDeSysV2.3版本
11 - 索引

E
编辑自动声明 4-66 复制 4-62
在 CFC 中复制/粘贴 5-53 剪切
4-61 在 FBD 中剪切 5-34 删除
4-62 查找 4-63 查找下一个
4-63 输入助手 4-64 宏 4-67 下
一个错误 4-67 粘贴 4-62 粘贴
FBD5-34 上一个错误 4-67 重
做 4-61 删除库 6-18 替换 4-63
撤消 4-61 编辑许可信息 9-1 在
CFC 中编辑宏 5-58 编辑功能
4-61 编辑器正文 5-1 评论 5-1
声明部分5-1

IL5-25 打印边距 5-1 快捷方式 5-7 语法


着色 5-7 编辑器 5-1 结构化文本编辑器
5-26 编辑器选项 4-6 编辑器 5-1EDS
文 件 6-36 、 6-39 、 6-41 、 6-42 、 6-45
DeviceNet-Slave 的 EDS 文 件 6-46
EDS 文件生成6-42

其 他 2-13 , 2-14
ELSIF 2-13
紧急电报 6-39、6-43EN 输入
2-23、5-38、5-39
EN POU 2-23 CFC 中 的 EN/ENO
5-52 启用任务 6-57 加密的
CoDeSys 项目 4-24 加密的外部
库 4-24 加密的内部库 4-24 加密
4-14 加密 4-24 项目的加密4-46

END_CASE 2-14 END_FOR


2-14 END_IF 2-13
END_REPEAT 2-15 END_TYPE
10-35 、 10-36 、 10-37 END_VAR
5-4END_WHILE2-15ENI
4-16、4-23、4-46

ENI 凭据 4-5 弹性网卡


数据库 7-1 弹性网卡参
数 10-75 弹性网卡服务

CoDeSysV2.3版本 CLV型
11 - 索引

器 7-1 弹性网卡服务器套 Extras 时间概述 5-45SFC 中的附加选


件 7-1 进入操作 2-17, 项 5-46 附加操作关联操作 5-47 附加功
5-43 进入或退出操作 能使用 IEC 步骤 5-47 附加功能在 CFC
中否定 5-51 附加功能在 CFC 中设置/重
2-17 枚举10-35 置 5-51 额外服务
均衡器 10-12AWL 中的 EQ 运
算符 2-9 错误 10-70 任务 6-53
的事件任务 6-53 事件时间 6-41
从生成 4-12 中排除对象排除对
象 4-12 从生成 4-30 中排除对象
执行比较 4-38 退出4-30

2-11、2-16号出口
退出操作 2-17 退出指
令 2-16 退出操作5-43

经验值 10-21 在 CFC 中扩展宏 5-59 预期数据


包速率 6-48DeviceNet-Slave 的专家设置 6-46
指数函数 10-21 幂 10-24 输出 6-79, 10-71 导
出数组条目 4-16 导出数据条目 4-15 导出用于创
建全局变量列表的文件 6-3 导出模块 6-23 导出
项目 4-37 导出结构组件 4-15 导出对象变量
4-15 表达式2-11

经验10-24
DeviceNet-Slave6-48 的扩展设置
DeviceNet-Slave6-46 的扩展设置
外部5-5
外部事件 6-53 外部库 4-23、6-17 外
部跟踪配置从文件 6-66、6-70 加载
从 PLC 加载 6-66 从目标 6-70 加载 EN/ONE 和 CFC 5-52
保存到文件 6-66、6-69 保存到目标 附加功能 CFC5-52 中的属性附加功能在 CFC 中
6-70 设置为项目配置 6-70 外部变量 全选 5-53 附加功能 CFC 中的连接标记 5-54 附加
5-5 功能在 CFC 中显示顺序 5-55 附加功能在 CFC
中按拓扑顺序排序 5-55 附加功能顺序-一个转发
5-56 附加功能顺序-一个向后 5-56 附加功能顺
序-到开头 5-56 附加功能顺序-到最后 5-56 附加
功能根据数据流对所有内容进行排序 5-56 附加功
能在 CFC 中创建宏 5-58 附加功能在 CFC 中编
摘录10-50 辑宏 5-58 附加功能将宏展开到CFC5-59 附加功
附加功能显示交叉引用 5-2 附加 能返回一个宏级别 5-59 附加功能在 CFC 中缩放
功能接受访问权限 4-42 接受更 到 POU5-61 附加功能制作 Docuframe 文件 6-8
改 4-41 接受更改的项目 4-41 接 附加功能制作 Docuframe 文件 6-8 附加功能链接
受属性 4-41 下一个区别 4-41 打 文档文件 6-8 附加功能报警配置设置 6-16 附加功
开实例 5-2 以前的区别 4-41 缩 能库的属性 6-18 附加功能替换元素 6-22 附加功
放到 POU5-2 附加功能监控选项 能计算地址 6-24 附加功能添加配置文件 6-24 附
5-22 附加选项 5-27 附加功能在 加功能标准配置 6-24 附加功能转换 6-24 附加功
FBD 中否定 5-33 附加功能在
FBD 中设置/重置 5-33 附加功能
能设置调试任务 6-57 附加功能启用/禁用任务
在 FBD 中查看 5-34 附加功能在
6-57 附加功能调用堆栈...6-57 额外内容加入查
FBD 中打开实例 5-34 附加功能 看列表 6-61 额外内容进入新的查看列表 6-62 额
在 LD5-40 附加功能中粘贴在 外内容重命名监视列表 6-62 额外内容保存监视列
LD5-40 附加功能中粘贴粘贴在 表 6-62 额外内容加载监视列表 6-62 额外内容监
LD5-40Extras 中 LD5-40 中的 控活动 6-62 额外内容编写食谱 6-62 额外内容阅
否定 Extras 在 LD5-40Extras 读食谱 6-63 额外功能开始跟踪 6-66 额外功能读
中 设 置 / 重 置 Paste Parallel 取跟踪 6-66 额外功能外部跟踪配置 6-66 附加功
Branch (右) 5-43Extras 将标 能停止跟踪 6-67 附加功能光标模式 6-67 附加功
签添加到并行分支 5-43Extras 能多通道 6-68 附加功能显示网格 6-68 附加功能
在 5-44Extras 缩放操作/过渡后 Y 缩放 6-68 附加功能拉伸 6-68 附加功能压缩
粘贴 5-44Extras 清除操作/过渡 6-68 附加功能保存跟踪值 6-69 附加功能保存跟
5-44 Extras 步 骤 属 性 5-45

CLVI型 CoDeSysV2.3版本
11 - 索引

踪 6-69 附加功能菜单取消命令 6-84 历


史倒退 6-84 历史前进 6-84 打印最后命
令 6-84 保存历史记录列表6-84

F
F_TRIG 10-44
F_TRIG in LD 5-39
F4 4-8
F4 忽略警告 4-8 下降沿
10-44 下 降 沿 检 测 5-39
FBD 分配 5-31 框 5-32 复制
5-34 光标位置 5-30 剪切
5-34 删除 5-34 输入 5-33
跳转 5-31 否定 5-33 输出
5-33 粘贴 5-34 返回 5-32
设置光标5-31

FBD2-21FBD 编辑器 5-30CFC 中的反馈路径


5-59 字段 2-1 文件关闭 4-23 退出 4-30 新建 4-22
新建表单模板 4-22 打开 4-22 从源代码管理器打开
项目 4-23 打印 4-28 打印机设置 4-28 保存 4-23 另
存为 4-23 保存/邮件存档 4-25 文件关闭 10-70 文件
新建 4-22, 10-70 文件打开 4-22, 10-70 文件保
存10-70

找到 4-63,10-42
查找下一个 4-63 标志 5-11 浮球处理
器 10-85、10-86、10-88 流量控制

FBD5-35IL5-25
流量控制 4-77 文
件夹 4-53、4-54
字体 4-6 字体
10-97

FOR2-14FOR 循环 2-14 力
值 4-75, 6-64 分段超时
6-48 随心所欲的任务 6-53

CoDeSysV2.3版本 CLVII型
11 - 索引

冻结模式 6-30,6-35

FREQ_MEASURE 10-57
频率测量 10-57 功能插 5-21 功能 2-1 功能
块 5-18 功能块插 5-22 实例 2-3 功能块 氟氯化碳 5-49FBD5-30LD5-35 图形
2-3 功能块 2-3 功能块调用 2-4 功能块图在线 编辑器 5-26DP 从站的组分配 6-35 组
模式 5-35 功能块图(FBD) 2-21 功能块图 DP 从站 6-35 组6-30
编辑器 5-30LD中的功能块 2-23 功能块实例
地址 10-13 功能块实例 2-3 功能块名称
10-105 梯形图中的功能块 2-23 函数调用
2-1 功能声明 2-1 函数名称10-105

GT10-11AWL2-9 中
GT 操作员保护时间6-39

H
硬件扫描 6-50 心跳 6-39 心跳消
费者时间 6-43 心跳大师 6-36 心
跳制作时间 6-43 心跳设置 6-43
心跳率 DeviceNet-Slave6-49 帮
助 上 下 文 相 关 4-84 日 立 SH
10-90

FUNCTION_BLOCK 2-3
参数管理器中的功能块6-73

G 滞后10-60

差距更新因素 6-31 网关通道设置 4-80


网关系统原理 4-78 快速检查 4-82 服务 我
器设置 4-79 网关 4-78 网关 10-73 网关 DeviceNet-Slave 的 I/O 完成 6-48I/O
DDE服务器处理 8-2 网关DDE服务器
8-2 网关DDEServer 命令行选项 8-4 连接配置 DeviceNet-Slave6-47I/O模块
数据的一般方法 8-3 使用 WORD 链接 自定义参数 6-28I/OModuleModule 参
变量 8-4 可以读取哪些变量? 8-3 网关 数 6-28 标识符离线工具提示 5-2 标识符
DDEAWL2-9中的8-1GE算子 5-6, 10-103 可视化标识符 10-106 识
别号6-33

IEC 61131-3 2-26


IEC 步 骤 2-17 、 5-47
IEC 步 骤 2-18
IECSFC.lib 2-17
IF2-13IF 指令 2-11,
第 10-57 代获取所有最新版本 4-51 获取最 2-13IL 在线模式5-25
新 版 本 4-18 获 取 最 新 版 本 4-49
GetBusState6-25 全局常量 5-5 全局常量
6-6 全局替换 4-44 全局保留变量 6-6 全局
IL2-3、2-9IL 编辑器 5-25IL 运算符
搜索 4-43 全局变量列表\对象属性 4-57 全
局变量常量 6-6 网络变量 6-6 对象 6-2 持 2-9 负载时隐式 4-14SFC 中的隐式变
久变量 6-6 剩余变量 6-6 全局变量 6-2 全 量 2-19 导入 10-71 导入 4-37、6-79 从
局变量列表创建 6-3 编辑 6-5 图形编辑器 S5 项目文件导入 10-80 从 SEQ 符号
文件导入 10-79 导入模块 6-23 导入项
目 4-37 导入 子文件 4-37 包括宏库
4-21 增量器 10-45 索引范围10-96

CLVIII型 CoDeSysV2.3版本
11 - 索引

索引10-4
Infineon C16x 10-87
DeviceNet-Slave 信息 6-46 抑制时间
6-40INI 运算符 10-24 初始化 5-6,
5-11 保留变量的初始化 10-24 初始化
运算符 10-24 零初始化 10-94 初始化
输入 10-94 初始化零 10-94 引脚内
5-51 引脚内 CFC5-51 输入地址
6-25、6-37 输入输出变量 5-4 输入助
手 6-60 输入助手结构化 4-64 结构显
示 4-65 非结构化 4-64 非结构化显示
4-64 输入助理 4-64 可视化中的输入
处理 10-98CFC 输入 5-50FBD 输入
5-33CFC 中盒子的输入 5-51 输入变
量 5-3 DP 从 站 的 输 入 / 输 出 6-34
DeviceNet-Slave 的输入字节 6-48 输
入 DeviceNet-Slave6-49 输入/输出配
置 DeviceNet-Slave6-47 插入添加入
口操作 5-43 添加退出操作 5-43 附加
库 6-17 所有实例路径 6-7 备用分支(
左) 5-42 备用分支(右) 5-42 附加
程序调用 6-54 附加子元素 6-22 追加
任务 6-52 分配 5-31 附加监视变量
6-61CFC 中的盒子 5-50FBD 中的盒
子 5-32EN 的盒子 5-39LD 中带有
EN 的盒子 5-38 线圈 5-38 评论
5-27, 5-28 在 CFC 中的评论 5-51 插入10-41
联系方式 5-37 声明关键字 5-6 下降沿 插入地址范围 6-62 插入声明 5-9 插入功
检测 5-39 功能 5-21 功能块 5-22、 能 5-21 在文本编辑器中插入功能块 5-22
5-38 引 脚 内 5-51 CFC 输 入 5-50 文本编辑器中的插入功能 5-21 在 CFC 中
FBD 输入 5-33CFC 中盒子的输入 插入输入/输出 5-55 在文本编辑器中插入
5-51 在块 5-39 插入元件 6-22插入新 操作数 5-21 插入程序调用 6-51、6-54 插
入标准命令 6-81 插入任务 6-51、6-52 插
的监视列表 6-61 插入程序调用 6-54 入监视变量 6-61 插入变量 5-2 实例打开
插入任务 6-52 插入监视变量 6-61 跳 5-2, 5-34 实例 2-3 实例 6-73 实例名称
入 CFC 5-50 跳 入 FBD 5-31 跳 入 LD 2-3, 2-4VAR_CONFIG的实例路径 6-7
5-40 跳入 SFC5-43CFC 标签 5-51 指令 2-9, 2-11 指令列表 2-3 指令列表(
网络(后) 5-29 网络(前) 5-29 新 IL) 2-9 指令列表编辑器5-25
声明 5-10 新观察列表 6-61 操作数
5-21 运算符 5-21 引脚外 5-51CFC
输出 5-50FBD 输出 5-33 平行分支(
左) 5-43 平行分支(右) 5-42 平行
触 点 5-37 返 回 在 氟 氯 化 碳 中 5-51
FBD 中的返回 5-32LD 中的返回
5-40 上升沿检测 5-39 阶跃过渡(之
后) 5-42 阶跃过渡(之前) 5-42LD
中的计时器 5-39 过渡跳跃 5-43 类型
5-7

INT10-31INT 常数
10-26
INT_TO_BCD10-50
积分10-52
英特尔 38610-85Intel 字节
顺序 10-88、10-90 英特尔
StrongARM 10-88
Intellisense 函 数 5-2
Intellisense 函数 4-6 内部库
4-23, 6-17 间隔
DeviceNet-Slave6-49 任务
6-53 的间隔进入新的监视列
表6-62

J
AWL 中的 JMP 运算符

CoDeSysV2.3版本 克利克斯
11 - 索引

2-9 跳 跃 2-21 , 5-31 管理添加许可证信息 9-1 在 CoDeSys 中创建许


CFC 中 的 跳 跃 5-50 LD 可库 9-1 许可证管理 9-1 许可信息 9-1 许可库
5-40 跳跃 SFC5-43 跳 4-25 寿命系数6-39
跃标签 5-43,5-44

K
键 4-14、4-24 组合键 10-99 表
10-75 的键盘用法表 10-98 键盘
使用 10-99 关键字5-6

L
标签 5-43 网络标签 5-27CFC 标签
5-51 标签版本 4-52 梯形图插入注释
5-28 梯形图 2-22 梯形图(LD) 2-22
在线模式下的梯形图 5-41 梯形图编辑
器 5-35 语言 10-75 语言“显示项目已
翻 译 ”4-35 “ 切 换 翻 译 ” 4-36

限位 10-10 限位报警
10-61 LIN_TRAFO
10-52
行号字段 4-77 文本编辑器中的行号字段
5-23 文本编辑器中的行号 5-24 声明编
辑器中的行号 5-9 链接文档文件 6-8 链
接杂注 5-13 链接 POU5-13 使用
语言6-16 EXCEL 链接变量 8-4 列表组件 4-6 列
语言文件 10-74 语言文件开/关 10-74 可视 表标识符 6-4 列表类型6-73
化语言 10-75 语言切换 4-32 语言 2-9LD 光
标位置 5-36 插入块 5-39 带 EN 输入的插入
框 5-38、5-39 插入线圈 5-38 插入触点
5-37 插入功能块 5-38 插入跳转 5-40 插入
平行触点 5-37 插入返回 5-40 粘贴 5-40 在
LD5-40 后粘贴粘贴 5-40 以下

LN10-21 加载和保存 4-4 加载下


载信息 4-31 从控制器加载文件
4-83 加载模块说明 6-25 加载模
块状态 6-50 加载值 6-69 加载监
视列表 6-62 局部变量 5-4 发送锁
定时间 6-48 日志 6-18 日志存储
6-20

LD 2-22 LD 作 为 FBD
2-23 LD 编 辑 器 5-35
AWL 中的 LD 操作员2-9 日志 2-25、4-10 日志 10-21
项目日志文件 6-18 日志菜单
6-19 对数 10-21 登录 10-71
EL10-11AWL 中的 EL 登录 4-69、10-70 登录数据
运 算 符 2-9 lecsfc.lib 2-17 库 4-48 登录弹性网卡数据库
4-17 注销 4-71、10-70、
左 10-39 左 10-71 循环2-11
10-39
度(字节) 6-49DeviceNet-Slave 的连接 度
6-49 库目录 4-10 库分析New.lib10-61 定义
6-17 外部 4-23, 6-17 插入 6-17 内部 4-23,
6-17 许可 4-25 链接 10-73 属性 6-18 删除 6-18
标准.库 6-17 用户定义 6-17 图书馆 2-8 库声明部 LREAL10-31LREAL
分 5-13 库元素 10-63 库管理器用法 6-17 库管理 作 为 REALs 4-12
器 6-16 库路径 6-17 图书馆专用 5-13 公共图书 LREAL 常数 10-26LREAL_TO
馆 5-13 许可证信息 4-43许可证信息 6-18 许可证 转换 10-17LT10-11LTAWL 中

CLX系列 CoDeSysV2.3版本
11 - 索引

的运算符2-9

M 移动10-3
宏 4-13、4-20 编译后的宏 4-13 编 CFC5-53 中的移动元件
译前的宏 4-13CFC 中的宏 5-58 宏 MUL10-2AWL 中的 MUL 算子 2-9
库 4-21 宏 4-67PLC-Browser中的 多通道 6-68 组播轮询 6-48 多次签入
宏 6-83 主程序 2-7 制作文档框文件 4-51 多次检出 4-51 多重定义 4-51
4-28 制作文档框文件 6-8 管理项目 多次撤消检出 4-51 输出 4-45 多任务
4-22 操纵变量 10-54, 10-55 映射 处理环境 10-85 多用户操作7-1
索引范围 6-44 映射 6-73, 10-96
标记 4-7SFC 中的标记块 5-41 主
布局4-57

多路复用器10-10

N
AWL2-9 中的 N 修饰符可视化
最大 10-9 最大重试限制 6-31 最大站延迟 6-31 最 的名称 10-106 标识符的命名
大评论大小 5-27 最大全局数据段数 10-92 最大 10-103
POU 数 10-92MDI 表示 4-8 内存布局 10-92 内存 NE10-12AWL 中的 NE 运
位置 10-30 菜单日志 6-19 在线菜单 4-67 合并 算符 2-9CFC 中的否定
4-42 消息文件 10-71 消息窗口 4-2、4-43、4-83 5-51 FBD 中 的 否 定 5-33
消息 10-71 消息4-83
LD 中的否定 5-40 嵌套注释
4-11
NetVarUdp_lib_V23.lib6-5
网络评论 5-27 网络 5-27 网
络 5-30 网络(后) 5-29 网
络(之前) 5-29 网络评论
5-27 网络编辑器在线模式
5-29 网络功能 6-2FBD 中
的网络 2-21LD 中的网络
2-22 间作业控制中的网
络 2-16 网络编号 5-27 网络
中度 10-40 分钟 10-9 分钟从站间隔 6-31 分钟 编号字段 4-77 网络类型
/DeviceNet-Slave 参数的最大值 6-49 最小站延迟 6-4 网络变量编辑 6-5 网络
6-31 最小评论量5-27 变量 6-2, 6-3 网络变量
6-6 网络变量 10-96 网络功
能 10-96 新声明 5-9 新声明
5-10 模板 4-22 新增内容监
MIPS 10-89 视列表 6-61 下一个错误
MOD 10-3 4-67 未初始化 6-38 节点
修饰符 2-9IL 中的修饰符和运算符 ID6-42 节点编号 6-25 节
2-9 模数 ID6-37 模块诊断 6-50 模块 点守卫电报 6-43 节点守卫
ID 6-25 模 块 参 数 DeviceNet-Slave 6-39 节 点 ID 6-38 节 点 ID
6-49DP主站 6-30DP从站 6-36I/O模 6-36 非持久性5-18
块 6-28 模块参数 CAN主控 6-37 设备
网主站 6-46 模块状态 6-50 监控声明
编辑器 5-10 编译指示 5-11 文本编辑
器 5-22 监视和食谱管理器 6-63 监控
2-24 监控活动 6-62 复杂类型的监控
4-7 监控选项 5-22 更多设置
DeviceNet-Slave 6-48 摩 托 罗 拉 68K
10-86

NOT10-6

CoDeSysV2.3版本 CLXI系列
11 - 索引

负载时的通知 4-14 数字常量


10-26 数据段数4-12

CFC5-59 声明编辑器
5-10
O FBD5-35LD5-41 网络
对象访问权限 4-58 添加 4-54 转换 编辑器 5-29PLC 配置
4-56 复 制 4-56 删 除 4-54 6-49
DeviceNet-Slave6-49 拖放 4-53 文件
夹 4-53, 4-54 管理项目中的对象 间作业控制 5-47 任务配置 6-55 文本编辑器
4-53 打开 4-56 属性 4-57 重命名 4-55 5-22 报警配置的在线设置 6-16 从 PLC4-22 打
工具提示 4-53 对象 2-1 对象 4-53 对象 开项目打开实例 4-59, 5-2 在 FBD 中打开实例
4-53 对象管理器折叠节点 4-54 展开节 5-34 打开对象 4-56 打开 POU4-59 操作数
点 4-54 新建文件夹 4-54 对象管理器 2-1, 5-21 文本编辑器中的运算符 5-21 优化
4-2 对象属性 4-57 对象模板4-55 10-87 优化 6-31 优化跳转 10-85 优化加载操作
10-85 使用常量 10-85 优化操作可选设备 6-38
生成选项 4-11 颜色选项 4-9 目录选项 4-10编辑
器 选 项 4-6 加 载 和 保 存 选 项 4-4 日 志 选 项
4-10“宏”选项 4-20 项目选项 4-3 项目对象选项
4-16 项目源代码管理选项 4-16“符号配置”选
项 4-15 桌面选项 4-7 用户信息选项4-5

共 2-14 离线模式 10-74“联机断点”对话框


4-73 通讯参数 4-78 创建启动项目 4-82 显
示流控制 4-77 下载 4-71 力值 4-75 从控制
器加载文件 4-83 登录 4-67 注销 4-71 释放
力 4-75 重设 4-72 复位(冷) 4-72 复位(
原件) 4-72 运行 4-71 显示调用堆栈 4-77
模拟 4-78 单周期 4-74 源码下载 4-82 单步
执行 4-73 跨步操作 4-73 停止 4-72 切换断
点 4-72 写入文件控制器 4-82 写入值 4-74
写入/强制对话框 4-76 在线更改提示 4-69
RI 文件 4-71 目标设定 10-94 在线更改 OR10-5ORAWL 中的运算符 2-9 顺序-在 CFC
4-67、4-69 多个控制器的在线更改 4-70 在 中向后一个 5-56 顺序-在 CFC 中向前一个 5-56
线功能 1-1 在线功能 4-67 安全模式下在线 顺序–到开头 5-56 顺序–到最后 5-56 根据数据
4-7 来自控制器的在线消息 4-71 在线模式 流对所有内容进行排序 5-56CFC 中的执行顺序
10-74 在线模式 5-55 CFC 中 的 拓 扑 顺 序 5-55 原 始 订 单 5-10
CFC 中的引脚 5-51 输出地址 6-25, 6-37CFC
输出 5-50FBD输出 5-33 输出参数 5-22FBD输
出 复 位 5-33 输 出 集 5-33 输 出 变 量 5-4
DeviceNet-Slave 的输出字节数 6-48 输出
DeviceNet-Slave6-49 重叠的内存区域4-44

P
包装10-51
包装变量 6-4 并行分
支 2-21SFC 中的并

CLXII系列 CoDeSysV2.3版本
11 - 索引

行分支 5-43SFC 中的并行分支 2-21、 10-55 PID_FIXCYCLE 10-56 报 警 消 息 的 占 位 符 6-10


5-42、5-43 平行触点 5-37 并联触点 2-22 PLC配置添加配置文件 6-24 地址检查开/关 10-94 位通道
程序调用时的参数分配 2-5 参数列表随项目 6-29 CAN 配 置 6-36 CanDevice \* 合 并 格 式 6-41
下载 6-76 类型 6-73 参数管理器阵列 6-73 CANopen-Slave6-41 通道 6-28CoDeSys 可编程 PLC
复制清单 6-76 切割清单 6-76 剪切/复制/粘 作 为 CANopen-Slave 6-
贴行 6-76 删除第 6-76 行删除列表 6-76 导
出 6-79 淡出和淡入第 6-76 行格式十进制/
十六进制 6-76 功能块 6-73导入 6-79 插入
行 6-76 插入列表 6-75、6-76、6-77 实例
6-73 实例列表 6-736-76 之后的行列表类
型 6-73 映射 6-73 监控值 6-78 在线模式
6-78 参数 6-73 粘贴列表 6-76 重命名列表
6-76 排序列表 6-77 结构变量 6-73 系统参 41 兼容性 6-20 转换旧配置 6-24 自定义
数 6-73 模板 6-73 上传和下载 6-78 变量 参数对话框 6-24 设备网 6-45 诊断
6-73 写入值 6-78 参数管理器 5-14 参数管 6-50 下载为文件 10-94 导出模块 6-23
理 器 编 辑 器 6-72 参 数 DeviceNet-Slave
6-49 参数管理器 6-73目标设置 10-96 任务 常规设置 6-23 硬件扫描 6-50I/O模块
6-54 的参数密码 4-13, 10-70 通过命令文 6-25 导入模块 6-23 插入/附加元素
件 输 入 密 码 10-74 密 码 4-46 粘 贴 在 LD 6-22 在线模式 6-49Profibus 模块
5-40 中粘贴在 LD5-40 之后在 SFC 中粘贴 6-29 更换/切换元件 6-22 选择 6-22 服
5-44 粘贴在 LD5-40 下面粘贴平行分支 务数据对象 6-41 标准配置 6-24 符号名
5-43 粘贴 4-62 粘贴 FBD5-34P 控制器 称 6-22 在6-21中工作, 6-22PLC配置
10-55 V2.1 6-21

PLC_PRG 2-7
PLC-浏览器取消命令 6-84 命令 6-81 功能 6-80 历史 6-84ini-文件
6-81 宏 6-83 打印最后命令 6-84 保存历史记录列表 6-84PLC浏
览器 6-80PLC浏览器 10-94PLC浏览器选项 6-83 指针地址检查
10-35 对齐检查 10-35 指针 10-34 轮询 6-48 轮询超时 6-31
POU(程序组织单位) 1-1、2-1、4-2POU 名称 10-105 电源电
脑 10-88 编译说明 Bitaccess5-13 链接 5-13 非持久性 5-18 符号
5-12 编译指示 5-11 编译指示 5-13 编译指示 5-14编译指示 5-11
库声明部分的编译指示 5-13 非持久数据类型的编译指示 5-18 参
数管理器的编译指示 5-14 抢占式多任务处理 10-94 先前的区别
4-41 先前的错误 4-67 打印 4-28 打印边距 5-1 打印范围 4-8 打印
机设置 4-28 打印机设置 10-71PRM文件 6-79Profibus 地址 6-30
模式 6-30Profibus 通道 6-34Profibus 主总线参数 6-31DP参数
6-30 模块参数 6-30ProfibusSlaveBase 参数 6-32DP参数 6-33
分组作业 6-35 输入/输出 6-34 模块参数 6-36 属性 6-36 用户参数
6-35 程序 2-5 程序调用 2-5 程序名称 10-105 项目添加操作 4-59
添加对象 4-54 构建 4-30 勾选 4-44 全部清理 4-31 比较 4-38、
4-39 转换对象 4-56 复制对象 4-56 数据库链接 4-46 删除对象
4-54 文档 4-36 导出 4-37 全局替换 4-44 全局搜索 4-43 导入
4-37 加载下载信息 4-31 合并 4-42 对象访问权限 4-58 打开实例
4-59 打开对象 4-56 选项 4-3 项目信息 4-42 属性 4-57 全部重建
4-31 重命名对象 4-55 显示调用树 4-59 显示交叉引用 4-59
子导入 4-37 翻译成另一种语言 4-31 用户组密码 4-46 项目 1-1,
2-1 项目代码 4-82 项目数据库 7-1 项目数据库类别 7-2 项目数据
库 7-2CoDeSys 中的项目数据库使用 7-2CoDeSys 中的项目数据
库 7-2项目目录 4-10 项目信息 4-5, 4-42 项目对象选项 4-17 项
目源代码管理 4-16 项目版本 1.54-23 项目版本 2.04-23 项目版本
2.14-23 项目版本历史记录 4-51CFC属性 5-52DP从站在
Profibus从站操作中的属性 6-36 库的属性 6-18 任务的属性 6-53
工具的属性 6-84 项目保护 4-24,4-46

PD 10-54 PDO 6-39 PDO 映 射 6-43


CAN 模块的 PDO 映射6-39

持久性5-4
持久性全局变量 6-6 持久变量
5-4 持久性变量 6-6PI 控制器
10-56

PID的

CoDeSysV2.3版本 CLXIII系列
11 - 索引

普比特10-51

Q
限定符 2-17、2-18
查询 10-72 安静时
间6-31

R
R 2-9 中的 R 运算符
R_TRIG 10-44
R_TRIG in LD 5-39
RAMP_INT 10-59
RAMP_REAL 10-60
读取配方 6-63 读
取跟踪6-66
真实10-31
REAL 常数 10-26REAL_TO 转换 10-17 全部重建
4-31 地址的重新计算 6-32 模块地址的重新计算
6-24, 6-30 配方 6-60 配方管理器 6-57 配方值
6-58 重做 4-61 刷新状态 4-53 释放力 4-75 剩余
变量 5-4 退出时提醒启动项目 4-5 删除库 6-18 重
命名对象 4-55 重命名监视列表 6-62 重复 2-11,
2-15 重复循环 2-15 替换 4-44、4-63、10-41 替
换常量 4-11 更换PLC配置中的元件 6-22 重设
4-72 复位(冷) 4-72 复位(原件) 4-72FBD 复
位 5-33 复位节点 6-38LD复位输出 5-40 资源全局
变量 6-2 库管理器 6-16 日志 6-18 网络变量 6-2 变
量配置 6-2, 6-6 资源 2-8, 4-2, 6-1 保留 2-3,
5-4 保留强制 10-94 保留变量 5-4 返回 2-11、
2-13、5-32 以 CFC 返回 5-51 以 LD 返回 5-40 返
回指令 2-13 返回标准配置 6-24 版本控制 7-1RI
文件 4-31、4-71、4-82 右 10-39 上升沿 10-44 上
升沿检测 5-39ROL10-7ROR10-8 旋转 10-7、
10-8RS10-43RTC10-49 运行 4-71,10-70

CLXIV的 CoDeSysV2.3版本
11 - 索引

S
S 2-9 中的 S 运算符 证监会 2-16 证监会编辑器
S510-80 采样迹线 6-64 保存(强制) 5-41 证监会标志 2-19 证监会
10-94 另存为 4-23 另存为模板 4-55 在 库 2-17 SFCctionType 2-19
SFCC 客 户 步 骤 2-19
项目中保存配置文件 6-23 保存弹性网卡 SFCEnableLimit2-19SFC错
凭据 4-5 保存文件 4-23 保存邮件/存档 误 2-19 SFCError 分 析 2-19
4-25 保存跟踪值 ASCII 文件中的值 SFCErrorPOU2-19SFCError
6-69 保存跟踪值 6-69 保存监视列表 步 骤 2-19 SFC 标 准 2-19
6-62 保存警报 6-15 使用项目保存 4-8 SFCPause 2-19
扫 描 模 块 配 置 6-50 屏 幕 分 隔 器 4-2 SFCQuitError 2-19
SDB 文件4-20 SFCReset 2-19
SFCStepType 2-19 SFCTip
2-19 SFCTipMode 2-19
SFCTrans2-19 共享对象
4-16 共享对象选项 4-19 移位
10-6

SDO6-38、6-41 禁止创建 SDO6-39 安全模式


4-7 选择配置目录 6-24 选择配置文件 6-24 选择
的 I/O 连接 6-48 在 CFC 中选择元素 5-53PLC配
置中的元素选择 6-22 任务看 狗灵敏度 6-54 顺 SHL10-6 工具中的快捷方式新建
序功能图 2-16 顺序功能图编辑器 5-41 在线模式 6-87 工具中的快捷方式 6-87 快
下的顺序功能图 5-47 业务数据对象 6-41 在FBD 捷方式 5-7 工具快捷方式 6-84 显
中设置 5-33 设置语言文件 10-75 在LD中设置输出 示调用堆栈 4-77 显示交叉引用
5-40 设置/复位线圈 2-23 在 CFC 中设置/复位 5-2 显示诊断信息 6-50 显示差异
5-51setreadonly10-73 设置报警配置 6-16 可视 4-49 显示网格 6-68 显示 POU
化设置 10-74PLC配置中的设置 6-23SFC 添加 符号 4-7 显示打印区域边距 4-8
Entry-Action5-43 添加 Exit-Action5-43 为并行 显示已翻译的项目 4-35 显示版本
分支添加标签 5-43 替代分支(左) 5-42 替代分 历史记录4-49
支(右) 5-42 关联操作 5-47 清除操作/过渡 5-44
删除跳转标签 5-44 删除步骤和过渡 5-42 步骤的
执行 5-47IEC步骤 5-47 跳转 5-43 标记块 5-41 在
线模式 5-47 选项 5-46 平行分支(左) 5-43 平行
分支(右) 5-42 粘贴后粘贴 5-44 粘贴平行分支
5-43 步骤属性 5-45 步骤转换(后) 5-42 步骤转
换(之前) 5-42 时间概述 5-45 过渡-跳跃 5-43 缩 SHR10-7 子进口 4-37,
放操作5-44 10-79 简化的输入处理 10-98 模拟
2-25, 4-67, 4-78,10-70

SIN10-22 正弦 10-22
单周期 2-24, 4-74 单步

CoDeSysV2.3版本 CLXV系列
11 - 索引

2-24, 4-73 多任务处理中的单


任务10-94
信序10-31
信噪比常数 10-26 尺寸 10-4 插槽时间 6-31 软动
作 10-94 按地址排序 5-10 按名称排序 5-10 按类
型 排 序 5-10 在 表 格 编 辑 器 中 排 序 5-9
sorucecode下载 10-70 源代码管理 4-16 源代码
下载 4-82 源下载 4-14 平方米 10-20 平方根
10-20SR10-42ST2-11, 5-26ST 编辑器
5-26ST 操作数 2-11ST 运算符 2-11AWL 中的
ST 运算符 2-9 标准命令 6-81 标准配置 6-24 标
准功能 6-17 标准库 6-17 标准POU2-1 标准库
6-17 开始跟踪 6-66 状态 6-50 站地址 6-30,
6-33 统 计 4-42 STATISTICS_INT 10-53
STATISTICS_REAL 10-53 状 态 栏 4-3 , 4-7
PLC 状态 6-50SFC 中的状态扫描 2-19 步骤
2-16 步骤属性 5-45 单步执行 4-73 步进初始化
2-17 步骤名称 5-42 跨步 4-73 步骤过渡(后)
5-42 步骤过渡(之前) 5-42 步进 5-22, 5-29
停止 10-70 停止 4-72 停止跟踪 6-67 在 PLC 中
存储趋势数据 10-97 拉伸 6-68 字符串 10-31 字
符串常量 10-26 字符串函数 10-39STRING_TO
转换 10-19 结构 10-36结构 5-18 结构 10-36 参
数管理器中的结构变量 6-73 结构\访问 10-36 结
构化文本 5-26 结构化文本(ST) 2-11 结构\初
始化 10-36 结构 2-1SUB10-2AWL 中的 SUB
运算符 2-9 子范围类型 10-37 目标中支持的字体
10-97禁止对复杂类型的监视 4-7 符号配置 4-15
符号文件 4-15、5-12 符号文件下载 10-94 符号 T
接口 4-15 符号名称 6-22 符号文件 4-20 同步模
式 6-30 同 步 。 模 式 6-35 Sync.COB-ID 6-36 表 格 编 辑 器 5-9
Sync.Window 度 6-36 同步 6-41 语法着色 tablekeyboardusage_codesys 开 / 关 10-75
5-3, 5-7 SysLibAlarmTrend.lib 10-97 tablekeyboardusage_web开/关 10-75 制表符
SysLibTime.lib6-55SysTaskInfo.lib6-55 系统调 宽度4-6
用 10-74 系统事件 6-51 任务配置中的系统事件 TAN10-22 切线 10-22 目标
6-55 系统标志 10-27 系统参数 6-73 系统状态 6-79 目 标 文 件 6-79 目 标 ID
10-74 10-74 目标旋转时间 6-31“目
标设置”对话框 6-80 一般规定
10-94 网络功能 10-96 目标平
台 10-92 可视化 10-97 目标设
置 6-79 目标系统 805110-91
日立 SH10-90 英特尔
StrongARM 10-88

MIPS10-89型
目标系统 InfineonC16x10-87 目标系统
Intel386 兼容 10-85 目标系统摩托罗拉
68K10-86 目标系统 TriCore10-91 目标系
统 PowerPC10-88 目标可视化 10-97 目标
支持包 6-79 任务 6-51 任务属性 6-52 任务
配置追加任务 6-52 调用堆栈 6-57 执行顺
序 6-57 插入程序调用 6-54 插入任务 6-52
设置调试任务 6-57 系统事件 6-55 在 6-51
中工作任务配置 6-51 任务启用 6-57 任务
优先级 6-52 任务属性 6-53 任务类型 6-53
在线模式下的任务配置 6-55 任务状态
6-55 时间流 6-55EDS 文件模板 6-42、
6-73EDS 文件模板 6-42 对象模板 4-55 文
本编辑器断点 5-23 文本编辑器 5-23 可视
化文本 4-32 连续功能图编辑器(CFC)
2-21 标准2-26

CLXVI系列 CoDeSysV2.3版本
11 - 索引

然后2-13
瓷砖水平 4-83 瓷砖
垂直4-83
时间:10-32
TIME 常 量 10-25 任 务 看 狗 的 时 间 6-54
SFC 中的时间管理 5-45SFC 中的时间扫描
2-19TIME_OF_DAY10-32TIME_OF_DAY
常数 10-25TIME_TO 转换 10-17TIME-函数
10-30 超时 4-8 超时 DeviceNet-Slave6-48,
6-49 定时器 10-47LD 中的定时器 5-39TLT
文件 4-32TNF 文件 6-79 至 2-14TO_BOOL
转 换 10-15 TOD 10-32 TOD_TO 转 换 10-17
TOF10-49 切换断点 4-72 切换平移 4-36 吨
10-48 吨 LD5-39工具栏 4-7 工具创建新的快
捷方式 6-87 执行快捷方式 6-88 常 问题
6-88 对象属性 6-84 保存工具快捷方式 6-88
快捷方式 6-84 工具 6-84 工具提示 SFC5-47
工具提示 4-53、5-22、5-29、5-35、5-41 注
释 工 具 提 示 5-1 标 识 符 工 具 提 示 5-2 TP
10-47 跟踪从文件加载 6-70 从目标加载 6-70
保存到文件 6-69 保存到目标 6-70 保存跟踪值
6-69 设置为项目配置 6-70 跟踪 10-94 跟踪
缓冲区 6-64, 6-67 跟踪配置 ASCII 文件
6-69 压缩 6-68 光标模式 6-67 负载值 6-69
多通道 6-68 读取跟踪 6-66 保存值 6-69 跟踪
变量的选择 6-66 显示网格 6-68 开始跟踪
6-66 停止跟踪 6-67 拉伸 6-68 跟踪缓冲区
6-67ASCII 文件中的值 6-69Y 缩放 6-68 跟
踪变量 6-66 转换 10-52 过渡条件 5-44 转换
条件 2-17SFC 缩放中的过渡 5-44SFC 中的
过渡 2-17 转换名称 5-42 过渡超时 6-48 过渡-
跳跃 5-43 翻译成另一种语言 4-31 翻译项目(
翻译成另一种语言) 4-35 翻译文件 4-32 翻译
文件制作 4-32 编辑 4-34 翻译文件 4-31 传输
类型 6-40 将LREAL视为真实 4-12 趋势数据
10-97TREND_TASK10-97TriCore10-91
触发变量 6-15 截断 10-19TSDR6-33 茶匙
6-79 关 断 延 迟 10-49 开 启 延 迟 10-48
DeviceNet-Slave参数典型值 6-49 类型 5-7 类
型 10-35, 10-36, 10-37 类型转换 10-14 类
型文字5-5

U
UCMM 6-46
UDINT 10-31
UDINT 常量 10-26 网络变量列表的 UDP 设置
6-4UINT10-31UINT 常量 10-26 撤消 4-61
撤消检出 4-49 开箱 10-51 直到 2-15 未使用的
变量 4-44 更新任务 6-42 上传文件目录 4-10
上传参数列表 6-78 使用输出位 6-49 使用源代
码管理(ENI) 4-16 使用
VISU_INPUT_TASK10-98 用户组 4-45 用户
组密码 4-46 用户信息 4-5 用户等级 10-74 用
户参数 DPslave6-35 用户密码 10-74用户定

CoDeSysV2.3版本 CLXVII系列
11 - 索引

义的库 6-17USINT10-31USINT 6-62 加载监视列表 6-62 在线模式


常量10-26 6-63 阅读食谱 6-63 重命名监视列
表 6-62 保存监视列表 6-62 编写食
谱 6-62 监视和食谱管理器 6-57 观
看列表 4-60、6-57、6-59 监视列表
10-73 监视变量 5-10、5-35 看
狗 6-33 任务看 狗 6-54 看 狗时
间 6-54 看 狗 时 间 6-31
WebVisuactivation 开 / 关 10-75
Web可视化开/关10-75

V
DeviceNet-Slave参数值6-49
VAR 5-4 VAR 持 久 性 5-4 , 6-6 虽然2-15
VAR 保 留 5-4 , 6-6 WHILE 循环 2-11、2-15 窗口排
VAR_CONFIG 6-2 , 6-6 列符号 4-83 级联 4-83 全部关闭
VAR_CONSTANT 5-5 , 6-6 4-83 库管理器 6-16 日志 6-18
VAR_EXTERNAL 5-5 消息 4-83 水平平铺 4-83 垂直平
VAR_GLOBAL 6-2 铺 4-83 窗口 4-83 窗口设置
VAR_IN_OUT 5-4 , 10-94 4-83 带参数 2-5 字 10-31 字常
VAR_INPUT5-3VAR_INPUT常 量 10-26 工作空间 4-2 写访问权
数 5-52VAR_OUTPUT5-4 编 限 4-16 将文件写入控制器 4-82
辑器中的变量插入 5-2 变量 5-2 写保护 4-24、4-46 写保护密码
变量配置插入实例路径 6-7 变量 4-13 编写配方 6-62 写入值
配置 6-6 变量声明编译指示 4-74, 6-64 写入/强制对话框
5-13 变量声明 5-11 变量声明 4-76
5-14 变量名称 5-6 变量 6-73,
10-96 变量声明5-6

方差10-53
供应商 ID9-1 在
FBD5-34 中查看
X
VISU_INPUT_TASK 10-97 AWL2-9 中的 XE1-1XML
VISU_TASK 10-97 编码 4-8XOR 运算符
视觉设置 10-74 可视 WebVisu激活开/关
10-75 可视化 10-97 可视化名称 10-106
可视化文本 4-32 无主布局的可视化4-57
Y
Y 缩放6-68

Z
W
用 于 Web 可 视 化 的 zip 文 件 10-98
观察和食谱管理器添加到观察列 SFC 中的缩放操作 5-44 放大图形编
表 6-61 附加监视变量 6-61 创建 辑器 5-26 缩放到 POU5-2 缩放到
监视列表 6-59 交叉引用列表 POU 5-2 缩 放 到 CFC 中 的 POU
6-59 删除监视变量 6-61 强制和 5-61 缩放过渡5-44
写入值 6-64 插入地址范围 6-62
插入新的监视列表 6-61 插入监视
变量 6-61 进入新的监视列表

CLXVIII系列 CoDeSysV2.3版本
11 - 索引

CoDeSysV2.3版本 CLXIX系列

You might also like