admin 管理员组

文章数量: 1184232


2024年3月9日发(作者:datedif excel找不到)

尚择优选

'工程''显示交叉参考'

使用这个命令,打开一个对话框,此对话框可以列出所有变量、地址或POU的输出点。

执行这个命令前,工程必须先编译(请参看

首先选择类别“变量”,“地址”,或“POU”,然后输入期望的元素的名字(或F2),在名

字中输入一个"*"可以得到相应类别的所有元素。

如果在上次编译后,工程作了修改,那么在对话框的标题中显示'未更新'.在这种情况下,

如果不重新编译,那么在交叉参考列表中将不包含修改部分.

按'获得参考'按钮,得到所有应用位置的列表,和POU相连的是行号或网络编号、变量

名和绑定的地址,范围空间显示了变量是局部的还是全局的;访问列显示了变量在当前位置

上是能读还是能写,列的宽度根据条目的长度自动调整。

当选择了交叉引用列表中的一行并按'转到'按钮或在行上双击,包含此行的POU在编辑

器中显示,通过这种方式你不需要耗时的搜索就能跳转到所有的应用位置。

为是使处理过程简化,使用发送到消息窗口按钮把当前的交叉引用列表移到信息窗口,

- 100

尚择优选

4.5编辑功能

在所有的编辑器中你能使用下面的命令和在对象管理器中使用部分命令,命令位于菜单

“编辑”下面和鼠标右键打开的上下文菜单中。

如果计算机上安装了IntelliPoint软件,CoDeSys支持微软智能鼠标的所有功能。所有

的编辑器具有缩放功能:按键并滚动鼠标轮来放大,想缩小的话,按键并向后

滚动鼠标轮。

参照:

'编辑''撤消'

快捷方式:+

这个命令用来取消在当前打开的编辑器窗口中或在对象管理器中最近执行的动作;重复

使用取消动作,所有的动作后退到窗口刚打开时的动作。这个命令适用于编辑器中对POU,

数据类型,可视化和全局变量所做的操作,和在对象管理器中所做的操作。

用你可以恢复一个已经撤消的动作。

注意:命令撤消和重复适用于当前窗口。每个窗口带有自己的动作列表。如果你想在几

个窗口中撤消动作,那么必须激活相应的窗口。当在对象管理器中撤消和重复时,焦点必须

位于这里。

'编辑''重复'

快捷方式:+

在当前打开的编辑器窗口或在中使用这个命令时,能恢复已经撤消的动作()。

每当你先前执行了命令“撤消”,你可以执行命令“重复”。

注意:命令撤消和重复适用于当前窗口。每个窗口带有自己的动作列表。如果你想在几

个窗口中撤消动作,那么必须激活相应的窗口。当在对象管理器中撤消和重复时,焦点必须

位于这里。

'编辑''剪切'

符号:快捷方式:+or+)

执行这个命令,可以把当前的选择对象从编辑器转移到剪贴板中。即选择的对象从编辑

器中移除。

此命令也可以在中应用,不是所有的对象都能剪切,如。

并不是所有的编辑器都支持剪切命令,它在某些编辑器中应用时会受到限制。

选择的形式依赖各自的编辑器:

在文本编辑器,和中,选择的是一列字符。

在和编辑器中,选择的是由虚线框包围的网络、带输入的框、框和操作数。

在中选择的是虚线框包围的一系列步。

使用命令来粘贴剪贴板的内容,在SFC编辑器中你也能使用命令”或来做这些。

使用命令复制选择到剪贴板上而不删除它。

101 - -

尚择优选

为了不改变剪贴板的内容而移除选中的区域,使用命令来完成。

'编辑''复制'

符号:快捷方式:+

执行这个命令,可以将当前的选择从编辑器复制到剪贴板上,它不改变编辑器窗口的内

容。

这个命令同样应用于被选择的对象,不是所有的对象都被复制。例如,PLC配置。

不是所有的编辑器支持复制,它在某些编辑器中应用时会受到限制。

对于选择的类型与使用命令“编辑”“剪切”具有相同的规则。

选择的形式依赖于各自的编辑器:

在文本编辑器(和)中选择是一列字符。

在和中,选择的是由虚线框包围的网络、带输入的框、框和操作数。

在中选择的是虚线框包围的一系列。

使用命令来粘贴剪贴板的内容,在SFC编辑器中你也能使用命令”或来做这些。

使用命令“编辑”“复制”复制选择到剪贴板上而不删除它。

为了删除一个选中区域同时把它放到剪贴板上,使用命令来完成。

'编辑''粘贴'

符号:快捷方式:+

在编辑器窗口中把剪贴板上的内容粘贴到当前位置上,在中当插入产生一个正确的结构

时命令才执行。

可以使用来从剪贴板上粘贴内容。

不是所有的编辑器都支持粘贴,它在某些编辑器中应用时会受到限制。

根据编辑器的类型不同,当前位置也有不同的定义。

在文本编辑器中(,)当前位置是光标闪烁(一个垂直的直线)的地方,可以单击鼠标

把光标定位到这里。

在和中,当前的位置是在网络编号区域中带虚线框的的第一个网络,剪贴板的内容插入

到这个网络的前面,如果复制一部分结构,它将插入到选中元素的前面。

IntheSFCeditorthecurrentpositionisdeterminedtheselectionwhichissurroundedbya

ingupontheselectionandthecontentsoftheclipboard,theseconte

ntsareinsertedeitherinfrontoftheselectionorintoanewbranch(paralleloralternative)

totheleftoftheselection.

在中,当前位置是由虚线框包围处决定,依赖于选择和剪贴板的内容,这些内容或者插

入到选择的前面或者作为一个分支(平行或可选分支)插入到选择位置的左边。

在SFC中可以使用命令或来插入剪贴板的内容。

用命令来复制选择到剪贴板上而不删除它的内容。

用命令来删除一个选中的区域而不改变剪贴板内容。

'编辑''删除"

快捷方式:

从中删除选中的区域,这不改变剪贴板中的内容。

对于选择的类型,与使用命令“编辑”“剪切”的规则相同。

- 102

尚择优选

选择的形式依赖于各自的编辑器:

在文本编辑器中(,)选择的是一列字符。

在和中,选择的是在网络编号区域内的虚线框包围的许多网络。

在中选择的是虚线框包围的一系列。

在中选择是当前选中的库名。

使用命令来删除一个选中的区域同时把它的内容放到剪贴板上。

'编辑''查找'

符号:

用这个命令你可以在当前的编辑器窗口中搜索文本段。查找对话框一直打开,直到按取

消键关闭。

在区域查找内容中输入你要查找的内容。

另外,你能决定要查找的文本是否完全匹配,或区分大小写,和从当前光标位置开始是

向上搜索还是向下搜索。

按钮查找下一个开始在选中的位置上继续按选择的方向搜索。

如果找到文本信息,它被加亮显示,如果文本没有找到,出现消息说明未发现信息。搜

索能连续地被重复执行,直到编辑器窗口中内容的开始或最后。在CFC编辑器中将会考虑元

素的集合顺序,搜索将从窗口的左上角开始到右上角结束,请注意FBD中POU是从右到左处

理的。

'编辑''查找下一个'

符号:快捷方式:

用这个命令与最后执行的使用相同的参数执行搜索。

请注意在FBD中,POU的搜索顺序是从右到左!

'编辑''替换'

用这个命令与使用命令一样查找一特定的信息,用其它的信息来替代它,在你选择了命

令后查找和替换的对话框出现,直到按取消或关闭按钮才关闭这个对话框。

在编辑器中你标记过的字符自动作为查找内容,也可手工输入搜索字符串,按‘替换’

将会用在区域替换为给出的字符串替换当前的,用‘查找下一个’找到下一个符合的字符。

请注意,在FBD中,POU是从右到左处理的。

按钮全部替换,将找到的字符全部替换,在处理过程最后报告替换了多少处。

103 - -

尚择优选

'编辑''输入助手'

快捷方式:

在编辑器窗口中使用这个命令将打开一个变量输入对话框,在左边列出了可选的输入类

别,在右边列出了此类别下的条目,按‘确认’将选择插入到当前光标位置。

提供的类别依赖于当前光标在编辑器窗口中的位置。例如,那些可以在此处输入的

(如,变量、操作数、POU、转换等)。

如果选项'带自变量'激活,当被选择元素插入时,元素所带变量也将插入,例如:功能

块fu1被选中,它定义了输入变量var_in,则在当前位置插入fu1(var_in:=);功能func1

的插入使用var1和var2作为传递变量:func1(var1,var2)。

按还是按来显示变量可以通过激活选项'结构化显示'来切换。

注意:也能使用功能来插入标识符.

非结构化显示

在每个类别中POU、变量或数据类型只是简单地按字母顺序列出。

在不同的地方(比如,在监控列表中),需要多阶段变量,在那种情况下,输入帮助对

话框显示所有POU列表和以点方式显示全局变量列表,在每个POU名字后有一个点。如果双

击或按'确定'选中一个POU,将打开它所包含的变量列表,如果POU中存在实例和数据类

- 104

尚择优选

型,可以按级打开各自的变量列表,按'确定'选中的变量。

通过激活能切换到结构化显示。

结构化显示

如果选中结构化显示,POU、变量或数据类型将按层次排列。对标准程序、标准功能、

标准功能模块、用户定义的程序、用户定义的功能、用户定义的功能模块、全局变量、局部

变量、定义的数据类型、监控变量也能按层次排列。可视化界面和它的层次显示与对象管理

器中的显示相同;如果引用了库中的元素,这些元素按字母表的顺序插入在相应类别的最上

面,并且相关层次显示与在库管理器中一样。

功能模块中被定义为局部或全局变量的输入输出变量在实例名下的“局部变量”或“全

局变量”里列出,选择实例名(例如,Inst_TP)按'确定'。

如果功能模块的实例被选中,可以选中选项'带自变量'。在文本语言ST,IL以及任务配

置过程中,将插入功能模块的实例名和输入参数。

例如,如果选中Inst(DeklarationInst:TON;),将插入:

Inst(IN:=,PT:=)

如果选项没有被选中,只有实例名插入。在图形化语言编辑器或监控窗口中,通常只插

入实例名。

结构组件的显示与功能模块实例类似。

对于枚举变量,单个的枚举值在枚举类型下面下列出。顺序是:库的枚举变量、数据类

型的枚举变量、POU的局部枚举变量。

通常的规则是包含子对象的行是不可选的(除了实例,参看上面),只能对自己的层次

进行扩展显示或合拢,这与多阶段变量名使用一样。

如果在监控和配方管理器中或在采样跟踪配置对话框中选择跟踪变量时使用输入助手,

有多种选择方式,按住键时,你能选择一个范围的变量;当按住键时,你能

选择许多单个的变量,选中的变量被标记。在范围选择过程中不包含被选中的无效变量行,

105 - -

尚择优选

这些行将不会包含在选择中,当单个选择选好后,这些行不能被标记。

在监控窗口和采样跟踪配置中能够从输入助手对话框中选择结构,数组或实例。双击鼠

标将展开和合拢所选元素的层次,在这些情况下只能按'确定'进行选择。

然后,选中的变量按行插入在监控窗口中,也就是说每个选中的变量独占一行。对于采

样跟踪变量,每个变量在采样跟踪变量列表中独占一行.

允许的采样跟踪变量最多20个,如果选中的变量超过了20,会出现一个错误的信息“只

允许20个变量”,其余的选中变量不再插入列表中。

通过取消选项'按结构显示'来切换到。

注意:一些条目只有在编译之后在输入助手对话框中才更新。

'编辑''变量声明’

快捷方式:+

这个命令打开一个对话框,使用菜单或当在声明编辑器中使用一个新的未定义的变量

时,这个对话框会自动打开。

'编辑''下一个错误'"

快捷方式:

工程编译出错后,这个命令用于显示下一个错误.执行此命令后显示包含错误的编辑器

窗口并且标记出错误的位置,同时在显示相应的错误信息。

'编辑''前一个错误'"

快捷方式:+

工程编译出错后,这个命令用于显示前一个错误.执行此命令后显示包含错误的编辑器

窗口并且标记出错误的位置,同时在显示相应的错误信息。

'编辑''宏'

此菜单项将列出所有在工程中定义的宏(更多的信息请参看'工程''选项''宏'.当选中一

个可执行的宏后,将打开对话框“执行宏”,对话框中显示宏的名字和当前执行的命令行,

可以按'取消'按钮来取消宏的处理,当前命令的处理过程将无条件终止,在信息窗口中显示

一条消息并且在联机操作过程中的日志中记录:“:执行被用户终止”。

可以联机或离线执行宏指令,但是只有在相应模式下允许的命令可以执行.

4.6联机功能

菜单项“联机”下面包含了在联机时用到的命令,某些命令的执行依赖于当前激活的编

辑器。

联机命令在登录之后可用,下面的章节将进行详细讲述。

“联机修改”功能能够对控制器上运行的程序做在线修改,参看。

参看此处,它表明了工程-编译生成、工程-下载、在线修改和登录到目标系统之间的

关系。

'联机''登录'

符号:快捷方式:+

这个命令把编程系统和PLC结合起来(或启动程序)并使程序进入联机模式。

如果当前的工程自从打开或自从上次修改后还没有编译,将先进行编译。如果在编译过

- 106

尚择优选

程中有错误,CoDeSys不会进入联机模式。

如果当前的工程在上次下载后在控制器上做了修改,并且上一次下载信息还没有用命令

“工程”“全部清除”删除,那么在执行登录命令之后弹出一个对话框:“程序已修改,是

否下载新程序吗?”,按'是'按钮后,工程中修改的部分将加载到控制器中(相关信息参看

此处,它表明了工程-生成、工程-下载、在线修改和登录到目标系统之间的关系。),若

选择'否',程序不发生任何变化加载到控制器中,按'取消'取消命令,<全部加载>将把整个

工程重新加载到控制器中。

如果选中'工程'-'选项'-'桌面'中的“安全模式下联机”,并且目标系统支持这个功

能,按'详细'按钮后会扩展这个对话框:它将显示在CoDeSys中当前打开的工程的工程信息

和当前加载到控制器中的工程的工程信息。

注意:联机登录对话框打开的样式依赖于哪个按钮设置为默认按钮。

注意:修改任务配置或PLC配置,或插入一个库以及执行命令“工程”“全部清除”

(参看下面)后将不能进行联机修改。

注意:联机修改将不对变量进行重新初始化.当联机修改执行后保留变量一直保持它们的

值,当工程重新下载后重新初始化它们(参看"联机""下载")。

在成功登录后,所有的联机功能都能使用(如果在“工程”“选项”中的类别中相应的

设置都已经设置),将可以监控中所有变量的当前值。

使用命令来退出联机模式。

登录、生成、下载和在线修改之间的关系

下图表明了登录、生成(编译)、下载和在在线修改之间的关系:

使用的术语如下:

源代码 当前CoDeSys工程(*.pro文件,本地PC)

107 - -

尚择优选

编译

下载

PLC

上次生成过程中的编译信息将用于补充编译.(*.ci-文件,本地PC)

最后一次加载到PLC中的信息(*.ri-文件,本地PC)

在PLC中可获得的工程(*.prg文件,目标系统)

在线修改说明

在修改任务配置或PLC配置、插入一个库文件、执行'工程''全部清除'后,在线修改功

能无效.(参看下面说明).

如果删除了上次下载(或在线修改)时创建的工程下载信息文件(文件<工程名><目标标

识号>.ri),例如:执行命令'工程''全部清除',那么在线修改功能不再起作用,除非在另外

一处保存了ri-文件或重命名了它,这样你仍然可以得到上次下载的信息或通过'工程''加

载下载信息'获得.相关内容可参看下面'工程的在线修改....'.

在线修改不重新初始化变量,因而在线修改不考虑初始值的修改!

执行在线修改后保持变量保持原值,工程重新下载也一样(参看下面,'联机''下载').

当一个工程在多个PLC上运行时在线修改程序:

如果在两个同样的PLC1和PLC2(相同的目标系统)上运行一个工程,为了确

保使用在线修改功能使得工程的更新在两个控制器上都能实现,方法如下:

(1)在PLC1中加载并启动工程,保存PLC1的下载信息

1.建立CoDeSys工程与控制器PLC1的连接(联机/通讯参数),将工程

- 108

尚择优选

加载到PLC1(联机/登录,下载).在工程目录中将创建包含下载信息的文件

.

2.重命名文件,如为了清楚起见改为proj00000001_.改名保存

这个文件是非常必要的,因为再下载后新的下载信息将覆盖原来的信息,这样

PLC1的下载信息将丢失。

3.启动PLC1上的工程然后退出('联机''运行','联机''退出').

(2)在PLC2中加载并启动工程,保存PLC2的下载信息:

1.与PLC2建立连接(使用与PLC1相同的目标系统,并将下载到PLC2.因此在

工程目录中将再次创建包含下载信息的文件.

2.为了清楚起见将新文件改名为proj00000001_.

3.启动PLC2上的工程然后退出('联机''运行','联机''退出').

(3)在CoDeSys中线修改工程:

在CoDeSys中修改,然后使用在线修改功能传送到两个PLC中.

(4)对PLC1中的程序进行在线修改,为PLC1重新保存下载信息:

1.在登录时CoDeSys查找文件,因此为了对PLC1做在线修改,你必须

首先恢复在PLC1中的下载信息文件,它现在保存在文件proj00000001_.

有两种方式:

(a)将proj00000001_改回.这样在登录到PLC1时,相应的下

载信息可自动获得,CoDeSys将询问你是否做在线修改.

(b)在登录前使用命令'工程''加载下载信息'加载文件proj00000001_。在这种

情况下你不需要给ri-文件改名.

(5)对PLC2中的程序进行在线修改,为PLC2重新保存下载信息:

方法同上。只是下载信息文件在proj00000001_中.

如果系统报告

错误:

“选中的控制器配置与目标系统中的不匹配……”

确保在目标系统设置(资源)中输入的目标系统与在命令中输入的变量匹配。

错误:

“通讯错误,执行退出”

检查控制器是否工作,检查在“联机”“通讯参数”中输入的变量是否与控制器中的变

量匹配。特别是,应该检查是否输入了正确的端口;控制器和编程系统的波特率是否匹配;

如果使用了网关服务器,检查通道设置是否正确。

错误:

“程序已经被修改!要加载新程序吗?”

在编辑器中打开的工程和在PLC(或程序正在运行的模式)中的当前工程不兼容,因而

不能进行监控和,你既可以选择‘否’来退出,然后打开所需的工程,也可以选择‘是’,

在PLC中加载当前的工程。

信息:

“程序已经改变,加载改变的部分吗?(联机改变)”。

工程正在控制器上运行,目标系统支持联机修改并且工程在控制器上随着最新下载或最

109 - -

尚择优选

新联机改变而改变,你可以决定这些变化是否要加载或命令是否要取消,也可以选择全部加

载按钮加载这个编译过的代码。

'联机''退出'

符号:快捷方式:+

和PLC的连接中断或模式程序终止,转换到离线模式。

使用命令可以转换到联机模式。

'联机''下载'

这个命令把编译过的工程加载到PLC中。

如果你使用C代码产生,在下载之前调用创建下载文件的C编译器,如果不是C代码产

生的,在编译过程中创建下载文件。

下载的信息存储在文件<工程名>之中,在过程中用来比较当前程序和最近

加载到控制器中的程序,因而只有改变的程序部分才重新加载,用命令可以删除这个文件。

关于在多个PLC上做联机修改,参看:'联机'登录'.注意:在联机修改时*.ri-file也将

被更新.

在离线模式下,依据创建引导工程时的目标系统设置,可以重新生成*.ri文件。

在下载后,只有永久变量保持它们的值(不重新初始化)。

参看此处,它表明了工程-编译生成、工程-下载、在线修改和登录到目标系统之间的

关系。

'联机''运行'

符号:快捷方式:

这个命令启动在PLC中或模式中的程序。

在命令'联机''下载'或在PLC中的用户程序被命令终止后,或用户程序停在一个断点

处,或当执行了命令后,这个命令开始执行。

'联机''停止'

符号:快捷方式:+

在两个循环周期内,终止PLC中或模式下的程序执行。

使用命令来继续程序运行。

'联机''复位'

这个命令把除了保持变量(VARRETAIN)之外的所有变量(包括VARPERSISTENT变量)的当

前值复位成初始化值,如果变量设置了初始化值,这个命令使变量恢复到初始化值,所有的

其它变量赋予系统默认值(如整型变量默认值是0)。作为一个预防措施,在覆盖所有的变量

之前CoDeSys会询问你来确认你的操作,在电源故障或关闭了控制器情况下,那么程序运行

时将复位系统。

使用命令重新启动程序。

请参看和“。

'联机''复位(冷)'

这个命令使除了永久变量之外的所有变量也包括保持变量到它们的初始化值。这种情况

发生在加载到PLC中之前已经下载的程序启动时(冷启动),只有永久变量在复位之前保留

- 110

尚择优选

它们的值。

相关的信息查看和和变量重新初始化概述-。

'联机''复位(初始状态)'

这个命令把所有的变量包括(保持变量和永久变量)复位到它们的初始化值并在控制器

上删除用户程序,控制器恢复到它的最初状态。

相关请查看和和变量重新初始化概述-。

'联机''设置断点'

符号:快捷方式:

这个命令用来在活动窗口的当前位置设置一个,如果在当前位置已经设置了断点,将取

消这个断点。

设置断点的位置依赖于在活动窗口中用什么语言编写POU。

在(IL,ST),如果要在某行设置断点(可以设置断点的行的号码区是深灰色),断点设

置在光标定位的地方,你也可以文本编辑器中的行号码区单击设置或删除一个断点。

在和中,断点设置在当前选中的网络上。在FBD或LD编辑器中也可以在网络号码区单

击设置和删除一个断点。

在中,断点设置在当前选中的上,在SFC中你也能使用加双击来设置或删除一

个断点。

如果一个断点已经设置,行号区、网络号码区或步的背景色将会改变成高亮蓝色。

程序运行到断点,会自动暂停,相应的区域显示为红色背景色,为了继续运行程序,使

用命令、、或。

也可以用断点对话框来设置和删除断点。

'联机''断点对话框'

执行这个命令将打开整个工程的编辑对话框,对话框也显示当前设置的所有断点。

为了设置一个断点,在POU组合框中选择一个POU,在断点位置组合框中选择相应的行

或网络,然后按添加按钮,断点将添加到列表中。

为了删除一个断点,在断点列表中点击选择要删除的断点并按删除按钮。

全部删除按钮用来删除所有的断点。

为了在编辑器中定位到断点设置的位置,在断点列表中点击选择断点并按转到按钮。

可以使用命令来设置或删除断点。

111 - -

尚择优选

'联机''单步跳过'

符号:快捷方式:

使用这个命令,可以执行程序,如果程序在调用一个POU,程序在调用的POU执行后暂

停,在SFC中将执行一个完整的。

如果当前的指令是调用一个功能或功能模块,那么功能或功能块将全部执行完。如果要

运行到调用的功能或功能块的第一条指令,使用命令。如果到达了最后一条指令,程序将会

返回到POU中的下一条指令继续运行。

'联机''单步进入'

使用这个命令时进行执行,程序暂停在调用的POU的第一条指令。

如果必要,可以转变到一个打开的POU中。

如果当前的位置是调用一个功能或功能块,那么光标停在调用的POU的第一条指令上。

在其它情况下,此命令和功能一样。

'联机''单循环'

快捷方式:+

这个命令执行并在这个循环后停止。此命令可以连续使用。

当执行命令后,单循环结束。

'联机''写入新值'

快捷方式:+

用这个命令可以在循环开始时写入用户为变量设置的新值。(参看命令为变量设置永久

值)。

只要单元素变量在监控窗口中可见,就可以改变的它们的值。

在命令“写入新值”执行之前。要为变量设置新值。

对于非布尔型变量,双击变量声明的行或选中变量所在行后按<回车>键,弹出对话框

“写变量”,可在此对话框中输入变量的新值。

对布尔型变量,通过双击变量声明的行来设置新值(它只在TRUE和FALSE之间切换,

而没有其它值);不出现对话框。

要写入的值以青绿色显示在变量旧值后面的一个括号中。例,a=0<:=34>。

提示:在FBD和LD编辑器中值在变量名后面以青绿色显示但不带括号。

要写入新值的变量的数目不受限制。

可以用同样的方式纠正和删除要输入的变量新值。

要写入的值在写入、删除或通过命令“强制新值”转移到强制列表之前,先存储在写入

列表(监控列表)中。

有两种方法进入写入新值对话框:

•在菜单“联机“”写入新值“

- 112

尚择优选

•点击对话框“编辑写入列表和强制列表“中的按钮”写入新值“。

当执行“写入新值“命令时,在写入列表中的变量新值将在循环开始时写到控制器中,

然后从写入列表中删除。(如果执行了命令”强制新值“,要写入新值的变量也将从写入列

表中删除,并转移到强制列表中!)

注意:在顺序功能图语言中,当变换是一个组合表达式时,不能对组合中的单个值用

“写入新值“来改变,这是因为监控的是表达式的值,而不是单个变量的值(例如,

“aANDb”,如果两个变量都是'真'时显示TRUE)。

另外,在FBD中,例如如果一个表达式用做一个功能模块的输入,只有表达式的第一个

变量才被监控,因而“写入新值”命令只能对这个变量写入新值。

'联机''强制新值'

快捷方式:

使用这个命令,可以对一个或多个变量进行永久性赋值。(参看命令,在循环开始为变

量设置一次新值)。

赋值在运行系统中进行,在循环的开始处和循环的结束处新值生效。

一个循环的时序为:1.读入输入量2.强制赋值3.处理代码,4.强制赋值5.写输出。

此项功能一直保持有效,直到被用户取消(用户使用命令“联机”“解除强制”)或退

出编程系统。

为了设置新值,首先要创建一个写入表(参看“联机”“写入新值”的描述)。写入表中

包含的变量在监控中被标记出来。当执行命令“联机”“强制新值”后,写入表转换为强制

写入表。如果当前已经激活了一个强制写入表,那么系统根据要求更新。写入表被清空,同

时新值用红色表示(红色表示是强制值)。下次执行“强制新值”时将强制写入表中的修改

部分写入到程序中。

注意:强制写入表的修改通过使用命令下一个“强制新值”来传递程序中。

注意:在写入表中包含的变量写入新值之前,当写入表存在的同时创建强制写入表为写

入表中的变量强制新值。

为变量强制新值的方法有两种:

1、在菜单“联机“中的命令”强制新值“

2、使用对话框中的按钮”强制新值“

注意:在顺序功能图语言中,当变换是一个组合表达式时,不能对组合中的单个值用

“强制新值“来改变,这是因为监控的是表达式的值,而不是单个变量的值(例如,

“aANDb”,如果两个变量都是'真'时显示TRUE)。

另外,在FBD中,例如如果一个表达式用做一个功能模块的输入,只有表达式的第一个

变量才被监控,因而“强制新值”命令只能对这个变量强制新值。

'联机''解除强制'

快捷方式:+

这个命令用于解除控制器中变量的强迫赋值。变量值采用正常的方式进行更改。

被强制赋值的变量能通过红色显示在监控器中进行识别。可以删除整个强制列表,也可

以根据需要选择要解除强制的变量。

删除整个强制列表,对所有的变量进行强制释放,可以选择下面方式中的一个:

•菜单“联机”中的命令“解除强制”。

113 - -

尚择优选

•使用对话框中的按钮“解除强制”。

•在对话框“移动写入/强制值列表”中使用命令“解除强制”来删除整个强制列表,

如果你选择命令“解除强制”的同时存在将打开这个对话。

•对单个变量解除强制,首先用下面的方法来标记这些变量,标记的变量后面将出现提

示“<解除强制>”。

•在一个非布尔型变量所在行上双击鼠标,打开对话。选中<解除此变量的强制>,然后

按“确定”。

•在布尔变量声明的行上双击后在行的末端显示<解除强制>。

•使用菜单“联机”"写入/强制对话框"命令打开写入/强制对话框,删除列编辑字段中

的值。

设置成"<解除强制>"的变量将在声明窗口显示,执行命令“强制新值”将把修改的强制

列表传递到程序中。

在执行命令“解除强制”时,如果当前写入列表(查看)是非空的,对话框“删除写入

/强制值列表”将会打开,用户可以决定是释放强制还是想删除写列表或把两个列表都删

除。

'联机''写入/强制对话框'

这个命令打开一个对话框,在这个对话中显示了选项卡写入列表和强制列表,在表中列

出了写入或强制的变量的名字和数值。

- 114

尚择优选

通过命令,可以把变量加进写入列表中。通过命令,变量被转移到强制列表中。单击某

变量的列“新值”或“强制值”来编辑新值。如果输入值的类型与定义的不一致,将显示一

个错误消息。如果删除一个数值,条目也将从写入表中删除。或者变量被强制中止,并不需

要退出指令而关闭对话框。

下面的命令,与联机菜单中的一样,可以通过按钮来使用它们:

:当前写入列表中的全部变量将转入到强制列表,控制器中变量被强制赋值。所有标记<

解除强制>的变量都不再被强制。然后关闭对话框。

:当前写入列表中的变量新值被写入到控制器中。然后关闭对话框。

:在强制列表中的所有变量将被删除,或如果写入列表存在,将打开“删除写入/强制列

表”对话框,由用户根据需要做选择是解除强制、删除写入列表还是两者都选。单击确定

后,两个对话框同时关闭。

'联机''显示调用堆栈'

当在一个停止时,可以使用这个命令,出现一个POU调用栈的列表的对话框。

115 - -

尚择优选

最先的POU通常是,因为这是执行的开始。

最后的POU通常是正在执行的POU。

在选择了POU并按了‘转到’按钮,选中的POU加载到编辑器中来显示,显示的是正在

处理的行或网络。

'联机''显示流程控制'

依据目标系统的设置,用户可以激活或不激活流程控制功能。如果激活了它,在菜单项

目的前面出现一个对勾。PLC循环中正在执行的每一行或每一个网络将会被标记。

正在运行的行的行编号区域或网络编号区域将显示为绿色。一个附加的区域将添加到IL

编辑器中,在这里显示当前累加器中的内容。在功能模块图和梯形图编辑器中,不传递布尔

型值的连线上都将插入一个框。在框中显示变量值。当连线上传输的布尔变量值为TRUE

时,连接线将显示成蓝色,这可以监控信息/数据的流向。

注意:

1、使用流程控制后将增加程序的运行时间。这可能会造成以时间为周期的程序出现超

时错误。

2、在激活的断点处不显示流程控制。

3、如果定义了与任务有关的看门狗,当激活流程控制时将关闭此功能。

'联机''仿真模式'

如果选择了仿真模式,在菜单的前面出现一个对勾。

在仿真模式中,用户程序运行在PC机的windows操作系统下,这个模式用来测试工

程。PC和仿真模式的通讯使用的是Windows的消息机制。

如果程序不处于仿真模式,程序将运行在PLC上,PC和PLC的通讯通常采用串口。

这个标记的状态和工程一起存储。

请注意:外部库的POU将不能运行在仿真模式下。

'联机''通讯参数'

当本地PC和实时系统之间的通讯运行在系统中的网关服务器中时(如果使用了OPC或

DDE服务器,在配置中必须输入相同的通讯变量),使用配置通讯参数对话框来设置通讯参

数。

参看下面的项目:

- 116

尚择优选

网关系统的原理

网关系统的原理:

在我们解释对话的操作之前先来解释一下网关系统的原理:

网关服务器可以允许本地PC和一个或多个实时系统之间进行通讯,网关服务器可以和

实时系统一起运行在本地PC上。如果我们要处理在其它计算机上运行的网关服务器时,我

们必须保证它已经运行。本地安装的网关服务器,当登录到目标实时系统时,它自动启动。

你可以通过在任务栏右下的CoDeSys符号的出现来识别它是否启动。在符号上单击鼠标右

键,可以得到Info和Finish菜单项。

下面是一个网关系统图:

PC_local是本地计算机,PC_x是另外的计算机,PC_gateway是网关服务器,PC_PLC1

到PC_PLC4是运行实时系统的计算机。图表显示了分离的模块,实际上,网关服务器可以和

实时系统一起安装在本地计算机上。

重要:和网关服务器之间的通讯只能建立在TCP/IP上,要保证你的计算机的配置的正

确性。

从网关到不同的实时系统计算机可以运行在不同的协议上(TCP/IP、Pipe等等)。

建立期望的网关服务器和通道

1.在通讯变量对话中建立期望的网关服务器和信道。

为了定义与期望的网关服务器之间的连接,按网关按钮来打开对话“网关信息参数”。

在这里你可以输入或编辑下面的部分:

•从你计算机到正在运行的网关服务器计算机之间的连接类型,如果网关服务器在本地

计算机上运行,连接通过共享内存或通过TCP/IP都是可以的;如果需要连接到不同的计算

117 - -

尚择优选

机上,只能使用TCP/IP协议。

•正在运行的网关服务器的地址:IP地址或正确的符号名比如localhost。在初始化,

标准的'localhost'作为计算机名字(地址),可以访问本地安装的网关。名字'localhost'

与IP地址172.0.0.1在大部分情况下相同,在某些情况下必须在地址区域中直接输入名

字。如果你想访问其它计算机上的网关服务器,你必须用它的名字或IP地址来替换

'localhost'。

•为选中的网关服务器设置密码,如果它在一个远程计算机上。如果它不正确的输入,

或没有输入完整,出现一个错误消息。注意这个连接:你可以通过以下步为本地安装的网关

服务器设置密码:在工具栏右下部分的网关符号上单击鼠标右键并选择“改变密码”。出现

一个改变或输入密码的对话。如果你访问本地网关服务器不要求输入密码。

•网关服务器正运行的计算机的端口,作为一个规则已经给出了选中的网关服务器端

口。

按OK键关闭对话,相应的条目(计算机地址)出现在在“通信参数”对话的顶部信道

区域中,在它下面是网关服务器可用的信道。

2.在选中的网关服务器上建立期望的信道

用鼠标在条目上单击选择其中的一个信道,相应的变量随后显示在表中。如果没有能和

选中的网关地址建立连接,可能是因为还没有启动它或地址不正确,在地址之后的括号中显

示‘没有连接’并出现一个消息‘不能找到网关的设置’。

一旦建立了期望的信道,按OK关闭对话。设置和工程一起保存起来。

为本地网关联机新的通道

可以为当前连接的网关服务器设置一个新的信道,这样可以从服务器上建立更多的连

接,例如,和一个控制器的连接。可用的选择依赖于计算机上安装的设备驱动程序的数目的

选择。

在通讯变量对话中,按新建按钮,打开对话:新通道。

•Name输入区域自动包含最近输入的信道的名字,如果没有定义信道,将会提供当前的

网关名字,后跟一个下划线字符,例如,“localhost_”,可以在这里编辑信道的名字,信

道的名字不必有一个唯一的名字,但是推荐使用唯一的名字。

•在Device下面的表中列出了网关计算机上用到的设备驱动程序,在名字列中,用鼠

标单击来选择一个可用的驱动程序,相应的注释,如果有的话,将出现在信息列中。

- 118

尚择优选

如果按OK键关闭了“...新信道”对话,新定义的信道出现在“通信参数”对话中,在

信道中作为在减号下面的最下位置一个新条目,它只保存在本地工程中。你可以编辑列(查

看下面的提示),按OK来确认输入的参数,然后退出“通信参数”对话。

为了使网关服务器xy能识别新输入的网关信道和它的变量,同时也为了使其它的计算

机能访问这个网关,必须先登录到实时系统中,再打开“联机”“通信参数”对话时,新信

道出现在信道树形结构中,不但在它的先前位置,而且网关服务器xy的名字或地址下面,

这表明了它已经存在于网络中。

除了本地计算机外,也可以在其它计算机上打开通讯变量对话,选择网关xy并使用它

的新信道。

如果登录时出现通讯错误,可能是接口不能打开(例如,串行连接的端口COM1),可能

是因为端口被其它设备使用了,也可能是控制器没有运行。

网关服务器已经识别的信道的变量在配置对话中将不能编辑,变量区域显示为灰色,当

它未激活时,可以删除这个连接。

重要:删除一个信道是不可逆的,当按按钮移动时,它就被删除了。

如何在本地PC表示通信参数菜单

这个对话用来,而且可以为安装在本地计算机上的网关服务器,这些信道能够被网络上

的其它计算机访问。

使用按钮更新可以在任何时候调用当前的设置。

如果根据例子''已经配置了通讯变量,将出现下面的对话:

标题Channels下列出了两个类别的连接:

一方面显示出的安装在当前连接的网关服务器上的所有连接称为“本地主机”。这个网

关的地址或名字位于在减号后面的最上位置,在我们的例子中运行在本地计算机上。在通常

情况下“本地主机”对应于本地计算机的IP地址127.0.0.1。它的下面,是网关信道设置

到的(PC_PLC1to3)实时计算机的三个地址,它们可能在本地计算机或其它的没有连接到网关

服务器的计算机上设置过。

第二个类别的信道包括所有连接到从本地计算机上设置的网关的连接,它们在减号下面

119 - -

尚择优选

直接创建了分支PC_PLC1和PC_PLC4。这些地址不需要在网关上识别。对于例子中的

PC_PLC4,配置变量存储在本地中但下次登录到实时系统时,首先被网关识别。对于

PC_PLC1这个已经出现,相关的网关地址已经作为一个子分支出现在了信道树形结构中。

在对话的中间部分可以看到左边选中的信道和Name、Value和Comment下相关变量的说

明。

在通信参数菜单中编辑参数的Tips

只能编辑值列下的文本区域。

用鼠标选择一个文本区域,通过双击或按空格键进入编辑模式,文本输入完成时按

确认。

你可以使用+来跳转到下一个或先前切换或编辑中。

为编辑数字值,可以用方向键或PageUp/Down键来分别地改变值一个或十个单位。鼠标

双击也能增加一个单位,为数字值安装了输入检查:++可以为

问题中的变量类型输入最低或最高值可能值。

快速检查连接网关的不成功连接

如果连接到选中的网关计算机不成功,应该有一个下面的检查(在信道区域中网关服务

器地址之后对话中出现消息“没有连接”):

•网关服务器已经启动了吗?(工具栏的低部右边部分出现三色符号)

•在通讯变量对话中输入的IP地址是不是网关运行的计算机的?(使用“ping”来检

查)

•TCP/IP连接工作吗?错误可能在于TCP/IP。

'联机''源代码下载'

这个命令将工程的源代码加载到控制器系统中,不要与工程编译时产生的代码相混淆!

在对话框中设置下载选项(时间,大小)。

'联机''创建引导工程'

使用这个命令,在控制器上为已编译的工程创建引导工程,当重新启动时可以自动加载

它。引导工程的存储依赖于目标系统而不同。例如,在386系统上创建三个文件:

包含工程代码,包含代码检验,包含了重新启动之

后的控制器状态(启动/停止)。

在离线模式下,也可以对编译没有错误的工程使用命令“联机”“创建引导工程”,在

这种情况下,在工程目录中创建下面的文件:保存引导工程代码的<工程名>.prg和包含检

验的<工程名>.chk,这些文件可以重命名,然后复制到PLC中。

依据目标系统的设置,在离线模式下创建引导工程时,可能会创建一个新的,如果这个

文件已经存在,依据目标系统设置会出现一个对话框。

注意:如果激活了工程-选项-源代码下载-,在使用命令“联机”“创建引导工程”

时,选中的资源自动加载到控制器中。

'联机''文件写入PLC'

这个命令可以把任何期望的文件加载到控制器中,在打开的对话框“在控制器中写入文

件”中可以选择期望的文件。

在使用“打开”按钮关闭对话框后,文件加载到了控制器中并用同一名字保存,在加载

- 120

尚择优选

过程中有一个进度提示。

使用命令可以取回先前加载到控制器中的文件。

'联机''从PLC中读取文件'

用这个命令将打开对话框“从控制器中读取文件”,用于读取回先前使用命令加载到控

制器中的文件。在文件名下面,提供了期望文件的名字,在选择窗口中输入它加载的目录,

按“保存”按钮关闭对话。

4.7设置窗口

窗口设置

在“窗口”菜单下,能找到管理窗口的所有命令,有自动设置窗口命令、有打开的命

令、有切换打开窗口的命令,在菜单的最后你会找到一个按它们打开时的顺序打开的所有窗

口的一个列表,在相关的条目上单击鼠标能切换到期望的窗口,在活动窗口的附近出现一个

√。

参照:

'窗口''水平平铺'

用这个命令你能在工作区水平的排列所有的窗口使它们不重叠并且占据整个工作区间。

'窗口''垂直平铺'

用这个命令你能在工作区垂直的排列所有的窗口使它们不重叠并且占据整个工作区间。

'窗口''层叠窗口'

使用这个命令你能在工作区间中以层叠的方式排列所有的窗口,一个窗口跟着一个窗

口。

'窗口''最小化排列'

使用这个命令你能在工作区间排列所有的最小化窗口使它们在工作区间的底端排成一

列。

'窗口''关闭所有窗口'

使用这个命令能关闭工作区间的所有窗口。

'窗口''信息'

快捷方式:+

用这个命令你能打开和关闭带有来自最近编译,校核,或比较过程的消息的

如果消息窗口是打开的,在命令的附近会出现一个√。

4.8帮助

'帮助''内容'和'搜索'

使用‘帮助’菜单下的‘内容’或‘搜索’,打开帮助主题窗口。此窗口中的文件也可

以借助HTML帮助查看器(InternetExplorerV4.1或更高版本)。

内容选项卡显示帮助手册的目录。通过双击或点击‘+’/‘-’可以打开或关闭书。在

窗口右侧显示所选目录的帮助信息。具有不同颜色和下划线的文本表明此处有超级链接,即

查看更多相关内容。在这些文字上单击将打开链接或图片。例如,点击在这页下面的‘帮助

主题窗口’,将显示帮助主题窗。点击‘上下文帮助’将打开相应的帮助信息页。

121 - -

尚择优选

在索引选项卡上,可以寻找特定词的帮助信息。在搜索选项卡上,在所有帮助信息中查

找搜索词。

参看:.

上下文关联帮助

快捷方式:

为了打开,在活动窗口中、在一个对话框中,或菜单命令上按键。

你也可以选中文本(例如:关键字或一个标准功能),然后按‘F1’,则显示相关的帮

助。

s中的编辑器

5.1关于所有的编辑器

编辑器的组件

POU的所有编辑器由声明部分和主体部分组成,主体可以由其它的文本或图形编辑器组

成;声明部分通常是文本编辑器。主体和声明部分通过能拖动的屏幕分割器来分开,通过用

鼠标点击它并朝上或朝下移动它到希望的位置。

打印范围

如果在工程选项中的对话“工作区域”中的选项“显示打印范围”被选中,编辑器内容

打印时用到的水平和垂直的页边空白用红色虚线显示。打印机的属性和打印版面的尺寸在菜

单中选择。如果没有打印机设置或打印版面输入,应用默认设置(和默认打印

机)。

注意:当放大因数选择100%时,打印页边空白原样显示。

注释

用户注释必须封套入特殊的符号序列中(“*”和“*”)。例如,(*这是一个注释

*)。

在所有的文本编辑器中,在任何期望的位置、在所有的声明、和语言和在自定义数据类

型中都允许使用注释。如果工程使用一个模板来打印输出,在变量声明过程中输入的注释出

现在每个变量后的基于文本编程组件中。

在和图形化编辑器中,可以为每个网络输入注释。

搜索你想添加注释的网络并激活“插入”“信息”,如果在菜单中相应的选项激活,在

- 122

尚择优选

梯形图编辑器中可以为每个特殊的触点和线圈添加附加的,在中有特殊注释的POU可以按自

己的意愿放置。

在中,你能在编辑步属性对话中输入关于步的注释。

在中的合适的选项激活,允许使用嵌套注释。

在联机模式,如果鼠标在变量上停留,在内容提示中将显示变量和地址的注释。

切换到POU

快捷方式:+

用这个命令选中的POU加载到它的编辑器中,如果光标放置在文本编辑器中的POU名字

上或如果POU框在图形编辑器中被选中,在内容菜单()或在“附加”菜单中可用到这个

命令。

如果你从库中处理一个POU,那么库管理器被调用,相应的POU显示。

'附加''打开实例'

这个命令与“相同。

如果光标放置在文本编辑器中的功能模块的名字上或如果功能模块框在图形编辑器中被

选中,在内容菜单()或在'附加'菜单中可用到这个命令。

智能功能

如果选项列在工程选项对话中为类别“编辑器”激活,智能功能将在所有的编辑器中、

在监控和配方管理器中、在可视化和采样跟踪中可用:

•如果插入一个圆点“.”来代替一个标识符,出现一个选择框,列出了工程中的所有

本地和全局变量,在这里可以选择这些元素中的一个并按“返回”来插入到圆点之后,你也

能通过双击在列表条目上来插入元素。

•如果在圆点后输入了一个或一个变量,选择框列出了相应功能模块的所有输入和输出

变量或列出结构化组件,在这里可以能选择期望的元素并按“Return”或双击来输入它。

脱机状态下的标识符

在脱机状态且所有的编辑器被如下申请:如果指针被放置在可编辑的标识符上,变量被

按数据类型划分(如VAR_GLOBAL),变量特征(如RETAIN),地址和注释将被显示

5.2声明编辑器

声明编辑器用来声明POU变量和全局变量、声明数据类型,它能使用通常的窗口功能,

如果安装相应的驱动程序还能使用智能鼠标的功能。

在改写模式下,“OV”在状态栏上显示为黑色,通过键可以在插入和改写模式之

间切换。

句式颜色支持变量的声明。

123 - -

尚择优选

在内容菜单(鼠标右键或+)中有最重要的命令。

声明部分

数据类型

BOOL

BYTE

WORD

DWORD

LWORD

下限

FALSE

上限

TRUE

位数

1 Bit

8 Bit

16 Bit

32 Bit

64 Bit

8 Bit

8 Bit

16 Bit

16 Bit

32 Bit

32 Bit

64 Bit

64 Bit

32 Bit

64 Bit

16 Bit

前缀

x

b

by

w

dw

lw

si

usi

i

ui

di

udi

li

uli

r

lr

s

tim

tod

dt

date

e

注释

保留

位串,不用于算

术运算

位串,不用于算

术运算

位串,不用于算

术运算

位串,不用于算

术运算

SINT -128 127

USINT 0 255

INT -32.768 32.767

UINT 0 65.535

DINT -2.147.483.648 2.147.483.647

UDINT 0 4.294.967.295

LINT -263 263 - 1

ULINT 0 264 - 1

REAL

LREAL

STRING

TIME

TIME_OF_DAY

DATETIME

DATE

ENUM

只有在

这个POU中

的所有将要

使用的变量

才在POU的

声明部分中

声明,这些

变量包

括:、、、

、和。声明

格式是基于

IEC61131-3

标准。

关于使

用创建全局

变量、数据

类型、功

能、功能模

块或程序类

型的对象的

可能性,查

看4.3章节

“File'Newf

romtemplate

”。

下面是

在CoDeSys

编辑器中正确声明变量的例子:

- 124

尚择优选

推荐的标识符命名方式

在变量声明(变量名称),用户定义的数据类型和创建POUs(功能,功能块,程序)和可视化

界面时定义标识符.为了保证标识符的唯一性,你可以使用下面的标识符命名方法..

(1)变量名称

在应用程序和库文件通常采用匈牙利符号法:

对于每个变量,主名称的命名应该直观,简短.每个词的第一个字母应该大写,其它的小

写.(例如:FileSize).如果需要,可以创建其它语言的翻译文件.

对应于变量的数据类型,可以在主名称前增加前缀,以表明变量的类型,最好用小写字母.

为了区别于BYTE和易于IEC编程人员的理解(参看赋地址%IX0.0),强烈推荐在BOOL变

量前使用x作为前缀.

例如:

bySubIndex:BYTE;

sFileName:STRING;

udiCounter:UDINT;

在嵌套声明中,按声明顺序增加前缀:

类型

POINTER

ARRAY

例如:

pabyTelegramData:POINTERTOARRAY[0..7]OFBYTE;

功能块实例和用户定义的数据类型的变量的前缀可以分别使用FB和数据类型名(例

如:sdo).

例如:

cansdoReceivedTelegram:CAN_SDOTelegram;

TYPECAN_SDOTelegram:(*前缀:sdo*)

STRUCT

125 - -

下限

上限

存储空间

前缀 注释

p

a

尚择优选

wIndex:WORD;

bySubIndex:BYTE;

byLen:BYTE;

aby:ARRAY[0..3]OFBYTE;

END_STRUCT

END_TYPE

对于局部常量(c)开头以c为前缀,后跟下划线(_),然后是类型前缀和变量名.

例如:

VARCONSTANT

c_uiSyncID:UINT:=16#80;

END_VAR

对于全局变量(g)和全局常量(gc)附加的前缀+'_'被附加到库库前缀:

例如:

VAR_GLOBAL

CAN_g_iTest:INT;

END_VAR

VAR_GLOBALCONSTANT

CAN_gc_dwExample:DWORD;

END_VAR

(2)用户定义的数据类型(DUT)

每个结构数据类型的名称组成方式是:库名前缀(如:CAN),下划线'_'和结构的恰当的描

述(如:SDOTelegram).对于这个结构所使用的变量,相关的前缀应该直接放在冒号后.

例如:

TYPECAN_SDOTelegram:(*前缀:sdo*)

STRUCT

wIndex:WORD;

bySubIndex:BYTE;

byLen:BYTE;

abyData:ARRAY[0..3]OFBYTE;

END_STRUCT

END_TYPE

枚举以库名前缀开始(如:CAL),后跟下划线'_'和大写字母的标识符.

注意:在CoDeSys老版本中,枚举值大于16#7FFF会发生错误,因为它们不能自动转换成

INT型数值.由于这个原因枚举(ENUM)应该使用正确的INT型数值定义.

例如:

TYPECAL_Day:(

CAL_MONDAY,

CAL_TUESDAY,

CAL_WEDNESDAY,

CAL_THIRSDAY,

- 126

尚择优选

CAL_FRIDAY,

CAL_SATURDAY,

CAL_SUNDAY);

声明:

eToday:CAL_Day;

(3)功能,功能块,程序(POU)

功能,功能块和程序的名称组成是库前缀(Example:CAN),下划线'_'和POU的恰当描述

(如:SendTelegram).与变量声明一样,POU名的第一个词的第一个字母应该大写,其它是小写.

建议POU名由动词和名词组成.

例如:

FUNCTION_BLOCKCAN_SendTelegram(*前缀:canst*)

在声明部分,为POU注释一个简短的描述.同时为所有的输入和输出加注释.在功能块下,

对于创建的实例,相关的前缀应该直接放在名称后面.

动作可以没有前缀;因为他只是内部调用,即由POU本身调用,以prv_开头.

由于要与CoDeSys老版本兼容,每一个功能至少要有一个参数.外部功能不能使用结构作

为返回值.

(4)可视化界面的名称

注意:你必须避免可视化界面的名称不能与工程中的POU具有相同的名字.否则在可视化

界面之间转换时会出现错误.

输入变量

在关键字VAR_INPUT和END_VAR之间,所有定义的变量作为POU的输入变量,在调用位

置,可以随着调用赋予变量值。

例如:

VAR_INPUT

in1:INT(*ariable*)

END_VAR

输出变量

在关键字VAR_OUTPUT和END_VAR之间,定义的所有变量作为POU的输出变量,也就是

说调用后值返回到POU。

例如:

VAR_OUTPUT

out1:INT;(*variable*)

END_VAR

输入输出变量

在关键字VAR_IN_OUT和END_VAR之间,定义的所有变量作为POU的输入和输出变量。

使用这个变量,传递变量的值被改变。那意味着变量的输入值不能为常量。

正是这个原因,所以不能通过来从外部

直接地读或写功能模块的输入和输出变量。

例如:

VAR_IN_OUT

127 - -

尚择优选

inout1:INT;(*1.输入输出变量*)

END_VAR

局部变量

在关键字VAR和END_VAR之间定义了POU的所有局部变量,它们没有外部的连接,换句

话说,它们不能从外部写入。

例如:

VAR

loc1:INT;(*1.局部变量*)

END_VAR

保持变量

Remanent变量能在程序运行期间始终保持它们的值,这些变量包括保留变量和永久变

量。

保留变量用关键字RETAIN来识别,这些变量保持它们的值即使是在控制器的非正常关

闭时和正常的关闭和其中的一个控制器或在命令时。当程序重新运行时,存储的值将进行进

一步的处理。一个具体的例子是生产线上的饼形计数器在电源故障后重新开始计数。

所有其它的变量从新初始化,不是用它们的初始化值或标准初始化的值。

与永久变量相反,保留变量在程序的一个新的下载时重新初始化。

永久变量通过关键字PERSISTENT来识别。不象保留变量,这些变量在一个重新下载或

在执行命令“联机”'或“Online”之后保留它们的值,但在关闭和控制器开不保留它们的

值,因为它们不保存在保留区。如果永久变量需要在控制器的非正常关闭后保留它们的值,

那么它们必须另外定义为保留变量。永久保留变量的一个具体例子是一个操作定时器在电源

故障之后重新定时。

例如:

VARRETAIN

rem1:INT;(*1.保持变量*)

END_VAR

注意:

1.如果一个局部变量定义为保留变量,变量将保存在保留区(象一个全局保留变量)

2.如果在功能模块中的一个局部变量定义为保留变量,功能模块的整个实例将会保存在

保留区(POU的所有数据),因而只有定义的保留变量才处理为保留变量。

3.如果在功能中的局部变量定义为保留变量,这不起任何作用,变量将不保存在保留区

内!如果一个局部变量在功能中定义为永久变量,这也不起任何作用。

常量

常量用关键字CONSTANT来识别,它们能定义为局部或全局变量。

句式:

VARCONSTANT

::=;

END_VAR

例如:

VARCONSTANT

- 128

尚择优选

con1:INT:=12;(*1.常量*)

END_VAR

外部变量

要导入到POU的全局变量用关键字EXTERNAL来指定,它们也出现在联机模式中声明部

分的观察窗口中。

如果外部变量声明与全局变量声明在各方面不匹配,出现下面的消息:“变量的声明和

全局变量的声明不匹配”。

如果全局变量不存在,出现下面的错误消息“不能识别的全局变量”

例如:

VAREXTERNAL

var_ext1:INT:=12;(*外部变量*)

END_VAR

关键字

在所有编辑器中书写为大写字母,关键字不能用作变量。例如关键字:VAR、

VAR_CONSTANT、IF、NOT、INT。查看.

声明变量

变量的声明采用下面的句式:

<>{

}:{:=};

{}中的部分是可选择的。

关于标识符,是一个变量的名字,需要注意的是它不能包含空格或变元音字符,它不能

重复定义并且不能与关键字相同。不区分大小写,VAR1、Var1andvar1是相同的变量。在标

识符中的下划线是有意义的,例如,A_BCD和AB_CD在解释的时候认为是不同的变量。不允

许在标识符前面或在标识符中有多个连续的下划线。标识符的长度是不限制的。

变量的所有声明和数据类型元素能包含初始化值。它们通过“:=”来操作。对于基本

类型的变量它们的初始化值是常量,所有的声明的默认的初始化值是0。

例如:

var1:INT:=12;(*整型变量,初始值是12*)

如果你想让变量直接使用明确的地址,那么必须用关键字AT来定义变量。

为了快速输入声明,使用快捷方式模式。

在你能指定变量不完整的地址描述,为了在本地中使用这样的变量,在中必须使用它的

条目。

也可以。

AT声明

如果你想让变量直接使用明确的地址,那么必须用关键字AT来定义变量。

这样做的好处是你能给地址赋予一个恰当的名字,输入和输出信号的任何改变只要在一

个地方修改就可以了。

要求输入的变量不能被写操作访问。

例如:

counter_heat7AT%QX0.0:BOOL;

129 - -

尚择优选

lightcabinetimpulseAT%IX7.2:BOOL;

downloadAT%MX2.2:BOOL;

注意:如果布尔变量被赋予了字节,字,或DWORD地址,它们只占一个字节而不是在偏

移后的第一个位。

‘插入'‘声明关键字'

你能用这个命令来打开一个在POU的声明部分用到的关键字的列表,在选中后并且确认

了选择,关键字插入在当前光标位置。

当你打开()并选择了'声明'类别时,你也能查看关键字列表。

‘插入'‘类型'

用这个命令你能接收一个为变量的声明的可能类型,当你访问输入帮助()后你也能

接收列表。

类型分为下列类别:

标准类型布尔,字节,等等。

结构体,枚举类型,等等。

实例声明的标准功能模块

实例声明的已定义的功能模块

CoDeSys支持IEC1131-3的所有:

语句颜色

在所有的编辑器中你能在变量的应用和声明中使用可视化的帮助。可以避免错误,或很

快查出错误,因为文本用颜色显示。

注释解释指令,迅速显示;关键字不会偶然拼错,等等。

将会用到下面强调的颜色:

蓝色 关键字

绿色 文本编辑器中的注释

粉红色 特殊常量(例如,TRUE/FALSE,T#3s,%IX0.0)

红色 输入错误(例如,无效时间常量,关键字,小写……)

黑色 变量,常量……

快捷模式

CoDeSys的允许你使用快捷模式。

当你使用结束一行时这个模式激活。

支持下面的捷径:

所有的标识符一直到最近的标识符将成为变量声明标识符

声明的类型由行的最近的标识符决定。在本书中,使用到以下快捷:

BorBOOL

IorINT

RorREAL

Sorstring

声明为

声明为

声明为

声明为

BOOL

INT

REAL

STRING

如果通过这些规则还没有建立类型,类型是BOOL并且最近的标识符将不会用作一个类

型。(例1.)

- 130

尚择优选

每个常量,依赖声明时的类型,将会变成一个初值或字符串。(例2和3)

在分号后面的文本成为一个注释(例4.)

所有在行中的其它字符被忽略(例如,例5.的感叹号)

例如:

快捷方式

A

ABI2

STS2;Astring

B!

自动声明

如果在选项对话框的编辑器类别中选中选项,在没有定义的变量输入后在所有编辑器中

出现一个对话框,在对话框帮助下,现在可以声明变量。

声明

A:BOOL;

A,B:INT:=2;

ST:STRING(2);(*字符串*)

B:BOOL;

X%MD12R5RealNumber XAT%MD12:REAL:=5.0;(*实数*)

在CLASS组合框包含有局部变量(VAR)、输入变量(VAR_INPUT)、输出变量

(VAR_OUTPUT)、输入/输出变量(VAR_INOUT)或全局变量(VAR_GLOBAL),选择你要处理的类

型。

通过常量、保持变量、永久变量选项,你能决定要处理常量还是保持变量。在编辑器中

输入的变量名添加到了'名称'区域,BOOL已位于'类型'区域。用来打开输入助手对话框,

你可以选择所需的数据类型。

数组的声明:

如果选择了数组作为变量的类型,输入数组边界的对话框出现:

通过用鼠标在相应的区域单击打开编辑区域可以在'起始'和'结束'下输入数组边界,数

组的数据类型输入在'类型'区域。为了做这些,用按钮

131

来调用输入助手对话框。

- -

尚择优选

按OK按钮来退出数组边界对话框,在IEC格式中的变量声明建立在对话中的Type区域

中的条目。例如,整型数组ARRAY[1..5,1..3],在区域'初始值'中,可以输入声明变量的

初始化值。如果这是一个数组或结构体,通过按钮或打开其它类型变量的输入帮助对

话,你将可以打开一个特殊的初始化对话框。

在数组初始化对话中,出现一列数组元素;在“:=”前的空白处单击打开一个编辑区

域来输入元素的初始化值。

为结构体和单个元素初始化的对话显示在一个树状结构中,类型和默认的初始化值出现

在变量后面的括号中;每个后面跟着“:=”。在“:=”后面的区域单击打开一个编辑区

域,在这里可以输入期望的初始化值。如果元素是数组,数组中单个区域的显示可以通过鼠

标在加号上单击来扩展开并且可以用初始化值来编辑这些区域。

按'确定'键退出初始化对话框后,数组或结构体的初始化值出现在在IEC格式中的声明

对话框中的'初始值'区域中。

例如:x:=5,field:=2,3,struct2:=(a:=2,b:=3)

在'地址'区域中,可以绑定声明到IEC地址的变量。

如果需要,可以输入一个注释,注释可以通过使用组合键+来形成换行格

式。

按'确定'键,声明对话关闭并且根据IEC的句法变量输入到相应声明编辑器中。

注意:变量声明的对话框,也可以通过命令来得到。在联机模式下,如果光标停留在一

个变量上,用可以打开自动声明的窗口,在这个窗口中,当前变量的相关设置

显示在这里。

声明编辑器中行号

在脱机模式下,在一个特定的行号码上单击将标记整个文本行。

在联机模式下,若此行显示的是结构变量,那么在行号上单击将会展开或隐藏结构变量

中的变量。

按表格形式声明

在选项对话框如果声明表格选项激活,声明编辑器象一个表格,就象一个卡片索引框,

你能选择各自变量类型的选择卡并编辑变量。

每个变量有下面的条目区域。

名字: 变量的输入标识符。

地址: 如果必须,变量的输入地址()

类型: 变量的输入类型。(当例示为功能模块时,

输入功能模块)

初始输入变量的值(与赋值符号":="相同)

化:

注释: 在这里输入一个注释。

声明编辑器的两个显示类型之间可以切换,在联机模式下,显示没有区别。

选择命令来编辑一个新变量。

- 132

尚择优选

‘插入'‘新声明'

使用这个命令,将在声明编辑器的中加入一个新变量,如果当前的光标位置在表格中区

域,新变量将会粘贴在行的前面;否则,新变量粘贴在表格的最后。而且,通过使用右箭头

或在表格最后的区域中使用TAB键,也能在表格的最后粘贴一个新声明。

你会得到一个变量名字位于'名称'区域、“Bool”值位于'类型'区域,作为它的默认设

置。可以改变这些值为自己期望的变量完整定义所需的值、名字和类型。

联机模式中的声明编辑器

在联机模式中,变为一个监视窗口。在每个行中变量后面跟着等号(=)和它的值,如果

在这个点上的变量是未定义的,会出现三个问号???。对于功能模块,只有打开的实例

(命令:“工程”“打开实例”)才显示变量的值。

在每个多元素变量附近有一个加号,按键或在变量上双击之后,打开变量。如

例子交通信号结构将打开。

当打开一个变量,它的所有变量在它后面列出,减号出现在变量附近。如果你双击或按

键,变量将会关闭,加号将重新出现。

在单变量上按键或双击将打开一个对话框来写变量,这里可以改变变量的当前

值,在布尔变量的情况下,不出现对话框;这些变量被触发。

新值显示在变量之后,在突出的括号中颜色为青绿色并保持不变,如果执行了命令,所

有的变量被放于选中的列表中并显示为黑色。

如果使用了命令,所有的变量将被设置为选中的值,直到执行了命令。在这种情况下,

强制值的颜色改变为红色。

5.3声明编辑器中的预处理pragma指令

编程指令影响编译和预编译过程中变量的属性,在的编程行中或在它自己的行中可以使

用辅助的文本。

编程指令写在{}中,不区分大小写,如{}。

如果编译器不能解释指令文本,这个程序作为一个注释处理并读取一次,出现一个警

告:“编译器忽略指令‘’!”。

依赖于程序的类型和内容,Pragma在它所在的行上操作,或在pragma结束前的所有行上

操作,或执行了相同的带有不同参数的pragma前的所有行上操作,或到达文件末尾。这里的

133 - -

尚择优选

文件是声明部分,执行部分,全局变量列表和类型声明.

左括号应跟在变量名后面,左和右括号应在同一行中。

在CoDeSys中可用到下面的Pragma:

用来创建变量管理器中的条目

.

初始化,追踪,符号创建,位存取的预处理Pragma指令

Pragma{flag[][off|on]}

可以是下面标记的组合:

noinit:

nowatch:

noread:

nowrite:

变量将不初始化

将不再监视变量

变量导出到一个非读权限的符号文件中

变量导出到一个非读权限的符号文件

noread,nowrite: 变量将不导出到符号文件中

{flagon}开始Pragma对所有随后的变量声明操作直到{flagoff}结束,或直到被其它

{flagon}pragma覆盖。

没有{flagon}和{flagoff}时,Pragma只对当前变量声明起作用(变量声明被下一个分

号关闭)。

使用pragma{flag}的例子:

变量的初始化和监视:

变量a将不初始化和被监视,变量b将不初始化:

VAR

a:INT{flagnoinit,nowatch};

b:INT{flagnoinit};

END_VAR

VAR

{flagnoinit,nowatchon}

a:INT;

{flagnoiniton}

b:INT;

{flagoff}

END_VAR

两个变量都不初始化:

{flagnoiniton}

VAR

a:INT;

b:INT;

END_VAR

{flagoff}

- 134

尚择优选

VAR

{flagnoiniton}

a:INT;

b:INT;

{flagoff}

END_VAR

把变量添加到符号文件:

使用“noread”和“nowrite”,在POU中有读和/或写权限,来为选中变量提供严格的

访问权限。变量的默认的访问权限和变量定义的POU中的设置一样。如果一个变量没有读写

权限,它不会导出到符号文件。

例如:

VAR

a:INT{flagnoread};

b:INT{flagnoread,nowrite};

END_VAR

VAR

{flagnoreadon}

a:INT;

{flagnoread,nowriteon}

b:INT;

{flagoff}

END_VAR

变量a和b都不导出到符号文件:

{flagnoread,nowriteon}

VAR

a:INT;

b:INT;

END_VAR

{flagoff}

VAR

{flagnoread,nowriteon}

a:INT;

b:INT;

{flagoff}

END_VAR

pragma指令对后面的变量声明做附加操作..

例如:(所有使用的POU将会导出读和写权限)

a:afb;

...

FUNCTION_BLOCKafB

135 - -

尚择优选

VAR

b:bfb{flagnowrite};

c:INT;

END_VAR

...

FUNCTION_BLOCKbfB

VAR

d:INT{flagnoread};

e:INT{flagnowrite};

END_VAR

“a.b.d”:将不会被导出

“a.b.e”:导出后只具有只读权限

“a.c”:导出后具有读写权限

}用于位访问

这个pragma可以用来正确显示,在全局常量、输入帮助、智能功能变量在声明窗口监

视的帮助之下进行位访问操作的变量。当在特殊的POU的声明窗口中监视这个变量时,使用

的全局常量在各自结构体变量下面。

注意:必须激活工程->选项->->'替换常量'!

Pragma必须插入到结构体的声明中的一个单独的行。这个行不能用分号终止。

句式:

{bitaccess'<注释>'}

:全局常量的名称,它必须在全局变量列表中定义.

:全局常量数值,在全局变量列表中定义.

例如,

Pragma{link}用于在代码产生过程中联接POU

通常情况下,在工程中不被调用的POU(程序,功能,功能块)或数据类型定义(DUT),在代码

产生中不被联接.

但是如果一个通过库包含在工程中的功能,即使不被应用程序直接使用(例如,检查操作),

那么在下载到运行系统后也应该可以使用.由于这个原因,为了与POU联接,你可以在POU或

DUT声明部分的任一位置添加{link}pragma指令.

参数管理入口的Pragma指令

Pragma指令可以插入到变量声明中为了在变量管理器中处理的变量列表中为这些变量创

建条目。它依赖于目标系统,变量管理器在CoDeSys编程系统中是否可用。它必须在目标设

置的类别网络功能中激活。

句式:

Pragma指令写在{}号中,不区分大小写:{}。如果它包含在标准变

量的声明中,它必须在声明的分号之前设置。

在界面VAR_CONFIG中使用的Pragma在每个单独的行上设置并且不用分号结束!

关键字定义由空格字符隔开,其它的包括在方括号中。

:在变量管理器中列出的变量的名字。如果列表不存在,它将会被创建。

- 136

尚择优选

:属性的名字,例如,在变量列表中的列标题;例如,"Name"、"Value"、

"Accesslevel"等等;它依赖于变量列表类型的定义,键可以在pragma中定义。

:用定义的属性的值。

请注意:pragma指令在焦点改变后有效,在预编译之后有效。例如,错误的输入直到工

程被编译才显示出错消息。

1.在参数列表中类型'变量'的输入项

(a)来自程序和全局变量列表的声明部分:

句式:{parameterlist=[==...furtherkeys]}

例如:

VAR

bvar:INT{parameterlist=parlist1[name=bvar1value=102index=16#1200

subindex=16#1]};

END_VAR

(b)借助VAR_CONFIG接口中的一个声明:

通过放置一个pragma在VAR_CONFIG窗口中,可以在变量列表中类型'Variables'中为

变量创建一个条目。(变量配置的独立性,也可以在VAR_CONFIG界面来完成):

句式:

{parameterlist=path=[==...furtherkeys]}

例如:对于变量var_x在参数列表"varlist1"创建一个输入项,符号名称是

xvar".

VAR_CONFIG

{parameterlist=varlist1path=PLC__x[name=xvar]}

END_VAR

2.借助于功能块和结构,在参数列表中类型'模板'的输入项

在类型'Template'的变量列表中能使用Pragmas来创建条目,Pragmas在功能模块和结

构体的变量声明中。

句式:{templatelist=[==...furtherkeys]}

例如:变量strvar是结构体"stru1"的一个元素,它应该输入到类型'Template'的变量

列表"templ1"中;条目的符号名字是“struvar1”,访问级别为"low":

TYPEstru:

STRUCT

ivar:INT;

strvar:STRING{templatelist=vorl1[member=struvar1accesslevel=low]};

END_STRUCT

END_TYPE

3.在参数列表中类型'实例'的输入项(用于数组,功能块或结构变量)

(a)来自程序和全局变量列表的声明部分:

在程序中或在全局变量列表中定义数组、功能模块或结构体变量时可以直接创建类型

'Instance'的变量列表:

句式:{instancelist=template=