admin 管理员组文章数量: 1184232
2024年3月9日发(作者:datedif excel找不到)
尚择优选
'工程''显示交叉参考'
使用这个命令,打开一个对话框,此对话框可以列出所有变量、地址或POU的输出点。
执行这个命令前,工程必须先编译(请参看
首先选择类别“变量”,“地址”,或“POU”,然后输入期望的元素的名字(或F2),在名
字中输入一个"*"可以得到相应类别的所有元素。
如果在上次编译后,工程作了修改,那么在对话框的标题中显示'未更新'.在这种情况下,
如果不重新编译,那么在交叉参考列表中将不包含修改部分.
按'获得参考'按钮,得到所有应用位置的列表,和POU相连的是行号或网络编号、变量
名和绑定的地址,范围空间显示了变量是局部的还是全局的;访问列显示了变量在当前位置
上是能读还是能写,列的宽度根据条目的长度自动调整。
当选择了交叉引用列表中的一行并按'转到'按钮或在行上双击,包含此行的POU在编辑
器中显示,通过这种方式你不需要耗时的搜索就能跳转到所有的应用位置。
为是使处理过程简化,使用发送到消息窗口按钮把当前的交叉引用列表移到信息窗口,
从
- 100
尚择优选
4.5编辑功能
在所有的编辑器中你能使用下面的命令和在对象管理器中使用部分命令,命令位于菜单
“编辑”下面和鼠标右键打开的上下文菜单中。
如果计算机上安装了IntelliPoint软件,CoDeSys支持微软智能鼠标的所有功能。所有
的编辑器具有缩放功能:按
滚动鼠标轮。
参照:
'编辑''撤消'
快捷方式:
这个命令用来取消在当前打开的编辑器窗口中或在对象管理器中最近执行的动作;重复
使用取消动作,所有的动作后退到窗口刚打开时的动作。这个命令适用于编辑器中对POU,
数据类型,可视化和全局变量所做的操作,和在对象管理器中所做的操作。
用你可以恢复一个已经撤消的动作。
注意:命令撤消和重复适用于当前窗口。每个窗口带有自己的动作列表。如果你想在几
个窗口中撤消动作,那么必须激活相应的窗口。当在对象管理器中撤消和重复时,焦点必须
位于这里。
'编辑''重复'
快捷方式:
在当前打开的编辑器窗口或在中使用这个命令时,能恢复已经撤消的动作()。
每当你先前执行了命令“撤消”,你可以执行命令“重复”。
注意:命令撤消和重复适用于当前窗口。每个窗口带有自己的动作列表。如果你想在几
个窗口中撤消动作,那么必须激活相应的窗口。当在对象管理器中撤消和重复时,焦点必须
位于这里。
'编辑''剪切'
符号:快捷方式:
执行这个命令,可以把当前的选择对象从编辑器转移到剪贴板中。即选择的对象从编辑
器中移除。
此命令也可以在中应用,不是所有的对象都能剪切,如。
并不是所有的编辑器都支持剪切命令,它在某些编辑器中应用时会受到限制。
选择的形式依赖各自的编辑器:
在文本编辑器,和中,选择的是一列字符。
在和编辑器中,选择的是由虚线框包围的网络、带输入的框、框和操作数。
在中选择的是虚线框包围的一系列步。
使用命令来粘贴剪贴板的内容,在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[
noinit:
nowatch:
noread:
nowrite:
变量将不初始化
将不再监视变量
变量导出到一个非读权限的符号文件中
变量导出到一个非读权限的符号文件
noread,nowrite: 变量将不导出到符号文件中
{flagon}开始Pragma对所有随后的变量声明操作直到{flagoff}结束,或直到被其它
{flag
没有{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
尚择优选
"Accesslevel"等等;它依赖于变量列表类型的定义,键可以在pragma中定义。
请注意:pragma指令在焦点改变后有效,在预编译之后有效。例如,错误的输入直到工
程被编译才显示出错消息。
1.在参数列表中类型'变量'的输入项
(a)来自程序和全局变量列表的声明部分:
句式:{parameterlist=
例如:
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=
例如:对于变量var_x在参数列表"varlist1"创建一个输入项,符号名称是
xvar".
VAR_CONFIG
{parameterlist=varlist1path=PLC__x[name=xvar]}
END_VAR
2.借助于功能块和结构,在参数列表中类型'模板'的输入项
在类型'Template'的变量列表中能使用Pragmas来创建条目,Pragmas在功能模块和结
构体的变量声明中。
句式:{templatelist=
例如:变量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=
137 - -
尚择优选
basesubindex=
注意:不要给关键字"Member"定义值;这个列使用数组索引值自动填充。
例如:
例子1;
为了得到类型'Instance'的变量列表"arrinst"中的条目接下来我们定义一个数组变量
"arr_1";在这个列表中所有的数组元素得到一个符号名"xname"(能在变量管理器中编辑)
和分索引从零开始计数每个条目加1。
arr_1:ARRAY[1..8]OFINT{instancelist=arrinsttemplate=ARRAYbaseindex=16#0bases
ubindex=16#0[name=xname]};
例子2:
为了在类型'Instance'的变量列表中得到条目
,象下面讲
述的一样,我们定义一个类型为"stru1"的结构体变量(包含变量a,b,c)。结构体变量
是基于模板"strulist_temp";列表得到变量a,b,c的条目,没有分配符号名,访问级别
- 138
尚择优选
实质为高并且每个通过模板定义的索引值将会增加2。确定变量管理器中的pragma中定义
的模板是可用的:
struvar:stru1{instancelist=strulisttemplate=strulist_templbaseindex=16#2base
subindex=16#0[accesslevel=high]};
(b)借助VAR_CONFIG接口中的声明
通过在VAR_CONFIG窗口(变量的独立性配置也可以在这个界面中定义)中的一个
pragma你可以直接地在类型'Instance'的变量列表中创建条目。
确定变量管理器中的pragma中定义的模板是可用的:
句式:
{instancelist=
在VAR_CONFIG窗口中,下列条目将为在基于模板"fb1_templ"的实例列表"varinst1"中
的功能模块"fb1"的所有变量创建条目。对每个条目,模板预先定义的索引将按照2(基索
引)增加来偏移,分索引偏移不会被修改。每个条目得到一个符号名"fb1var",符号名字可
以在变量管理器中编辑。
VAR_CONFIG
{instancelist=varinst1path=PLC_1template=fb1_templbaseindex=16#2
basesubindex=16#0[name=fb1var]}
END_VAR
控制库声明部分显示的语法
在CoDeSys中创建一个库时,你可以定义部分声明可视窗口和管理库中不可视的布拉
格,当库被包括在一个工程中时。库中执行部分的显示将不受影响。
因而,注解或任何可视的声明可以被用户隐藏。语法【私有库】和【公共库】每一个影
响一些线的剩余部分,后来的线,只要他们没有被其他部分过多的写入。
语法:【公共库】后续的测试将显示在管理库中。
【私人库】后续的测试将不被显示。
例子:注意在CoDeSys中被声明的部分库下。注解"(*thisisforall*)"在已经包括一个
工程库的管理库中会被显示。注解"(*butthisisnotforall*)"将不会显示出来。本地变量和
in2也不会被显示出来:
{librarypublic}(*thisisforall*){libraryprivate}(*thisisnotforall*)
{librarypublic}
FUNCTIONafun:BOOL
VAR_INPUT
in:BOOL;
END_VAR
{libraryprivate}
VAR
local:BOOL;
END_VAR
139 - -
尚择优选
{librarypublic}
VAR_INPUT
in2:BOOL;
{libraryprivate}
in3:BOOL;
{librarypublic}
END_VAR
非永久数据类型的语法
正常情况下下列将被显示:尽管在功能块中仅有一个本地变量或一个结构是持久的,在
运行时间系统中的持久信息()中一个自动存储所有成分的实例被使用。为了
保春你能使用布拉格的地方。
在功能块的分离结构声明中,它只影响那些被注明"persistent"的功能块的分离结构,
他们将会被登陆到稳定信息当中。
例如:
如果一个如下功能块的实例被注明是稳定的,只局部可变且fblevel3将要被写入到稳
定信息中。除了布拉格{nonpersistent}
所有功能块的变化将被储存到那里。
FUNCTION_BLOCKFB_Level_2
{nonpersistent}
VAR_INPUT
bvar_in:BOOL;
END_VAR
VAR_OUTPUT
bvar_out:BOOL;
END_VAR
VAR
ivar2:INT;
END_VAR
VARPERSISTENT
local:INT:=33;
fblevel3:FB_Level_3;
END_VAR
5.4文本编辑器
文本编辑器为CoDeSys的执行部分提供通用的窗口文本编辑器功能。
支持文本编辑器中的执行部分。
- 140
尚择优选
在改写模式下显示一个黑色的OV,你可以通过键来在改写模式和插入模式之间切
换
在内容菜单(鼠标右键或
文本编辑器使用下面的菜单命令:
参照:
'插入''操作符'在文本编辑器中
使用这个命令,当前语言中用到的所有运算符将显示在对话框中。如果选中一个运算符
按OK列表关闭,然后高亮度显示的运算符将插入到当前光标位置。(象在输入帮助中一样
操作)。
'插入''操作数'在文本编辑器中
使用这个命令将显示在对话框中的所有变量,你可以从全局变量、局部变量、系统变量
中选择要显示那个变量的列表。
如果选中了其中的一个操作数,按'确定'后对话框关闭,高亮度显示的操作数将会插入
到当前的指针位置(和输入助手的操作一样)。
'插入''功能'在文本编辑器中
使用这个命令在对话框中将显示所有的,你选择是显示用户定义的列表显示还是标准功
能列表显示。
如果选中了一个功能,按OK键关闭对话框,高亮显示的功能将插入到当前指针位置。
141 - -
尚择优选
如果在对话框中选中了'带形参'选项,必须的输入和输出变量也会插入进来。
'插入''功能块'在文本编辑器中
使用这个命令在对话框中显示所有的,你可以选择显示用户定义的列表还是标准功能模
块的列表。
如果选中一个功能模块,按'确定'将关闭对话框,高亮度显示的功能模块将插入到当前
指针位置。
如果在对话框中选择了'带形参'选项,功能模块的必要的输入和输出变量也将插入进
来,但是你不能强制给这些变量赋值。
在文本编辑器中调用带有输出参数的POUs
在文本语言IL和ST中,可以直接为被调用POU的输出变量赋值。
例如:
Afbinst的输出变量out1赋予变量a.
IL:CALafbinst(in1:=1,out1=>a)
ST:afbinst(in1:=1,out1=>a);
如果通过输入帮助(
个POU,它将自动和所有的变量以这个句法格式显示出来,但不能强制这些变量赋值。
联机模式下的文本编辑器
在编辑器中的联机功能是用来设置断点和单个步处理(步),和监视功能结合起来,用
户就拥有了标准语言调试器的调试功能。
在联机模式,文本编辑器窗口垂直分为两部分,在窗口左边的部分是标准程序文本,在
右边是显示的变量,它的值在各自的行上被改变。
显示与声明部分的显示一样。当PLC运行时,将会显示各自变量的当前值。当监视表达
式或位地址变量时要注意以下:在监视表达式时,通常显示整个表达式的值。例如,a和b
显示为蓝色或如果a和b的值是TRUE显示“:=TRUE”。对于位地址变量,位值通常被监视
(例如,a.3显示为蓝色或如果a有值4)。
如果你用鼠标在变量上停留一会,变量的类型、地址、注释将会在工具提示中显示出
来。
'附加''监控选项'
用这个命令可以配置监视窗口。在文本编辑器中,在监视过程中窗口被分成两部分,程
序加载在左边部分,在右边部分中,相应程序行中的变量被监视。
可以指定监视窗口的宽度和在一行中两个变量之间的距离,声明距离为1对应选中一行
字体的高度。
在文本编辑器中断点位置
在CoDeSys中多个IL行组合为一个C代码行,因此断点不能在每一行中设置。断点的
位置包括在程序中变量的值改变的地方或程序流程图中断的地方的所有位置。(例外:功能
- 142
尚择优选
调用,如果必须,功能中的断点必须设置在这里。)
在IL中提供了下面的断点位置:
•在POU开始的地方
•在每个LD、LDN处
•在JMP、JMPC、JMPCN处
•在每个标签处
•在每个CAL、CALC、CALCN处
•在每个RET、RETC、RETCN处
•在POU结束的地方
结构化文本提供下面的断点位置:
•在每个赋值处
•在每个RETURN和EXIT指令处
•在计算条件的行处(WHILE,IF,REPEAT)
•在POU结束的地方
在行号码区域处,用在工程选项中设置的颜色来标记断点位置。
如何设置断点
为设置一个断点,在你要设置断点的行的行号码区域单击,如果选中的区域是断点的位
置,行号码区域的颜色将从黑灰色转变为淡蓝色并且断点将在PLC中激活。
删除断点
相应地,为删除一个断点,在有断点的行的行号码区域单击,断点将删除。
设置和删除断点也可以通过菜单命令()、通过功能键
择。
断点处的状态
在PLC中到达断点时,屏幕上会显示断点和相应的行,行的行号码区域将显示为红色,
用户程序在PLC中停止。
如果程序到达断点,处理过程可以通过命令来继续。另外,用或命令,你可以使程序在
下一个断点位置运行。如果你所在处的指令是CAL或如果在行中直到下一个断点位置处有一
个功能调用,你可以使用命令“跳过”越过功能调用。用“进入”,将进入打开的POU分
143 - -
尚择优选
支。
在文本编辑器中行号码
文本编辑器的行号码给出了POU的执行部分的每个文本行的号码。
在脱机模式下,在一个特定的行号码上单击将会标记整个文本行。
在联机模式下,行号码的背景颜色指示了每个行的断点的状态。
颜色的标准设置有:
•黑灰色:这个行是断点的可能的位置。
•淡蓝色:断点已经在这个行中设置。
•红色:程序到达了这个断点。
在联机模式下,单击鼠标将会改变这个行中的断点状态。
5.4.1指令表编辑器
下面是在CoDeSys中相应的编辑器IL中编写POU的窗口。
POU的所有编辑器有声明和主体部分,它们被屏幕分割器分割开。
指令列表编辑器是具有文本编辑器窗口功能的文本编辑器,在内容菜单(鼠标右键或
例如:
CALCTU_inst(
CU:=%IX10,
PV:=(
LDA
ADD5
)
)
- 144
尚择优选
关于语言的信息,查看2.2.1章节,。
另见:
联机模式下的IL
用命令,附加的域插入到IL编辑器中左边部分的每一个行中。
在联机模式下关于IL的更多信息,参照
5.4.2结构化文本编辑器
下面是在CoDeSys中相应的编辑器ST中编写POU的窗口。
POU的所有编辑器有声明和主体部分。它们被屏幕分割器分割开。
结构化文本编辑器是具有文本编辑器窗口功能的文本编辑器,在内容菜单(鼠标右键或
关于语言的信息,查看2.2.2章节,。
5.5图形化编辑器
图形化导向的语言编辑器、顺序功能图SFC、梯形图和功能模块图和自由图形化功能模
块图有许多共同点。在下面的段中将总结这些特点;关于LD、FBD、CFC和顺序功能图表语
言SFC在分开的部分中讲述,句式色彩支持图形化编辑器的执行部分。
参考:
网络注释,'扩展''选项'
缩放
在语言SFC、LD、FBD、CFC和在可视化中的对象如POU、动作、转换等可是通过缩放功
能来放大或缩小尺寸,执行部分的窗口内容中的所有元素都将受到影响,声明部分保持不
变。
在标准形式中,每个对象以缩放级别100%显示,缩放级别在工程中存储为对象的属性。
145 - -
尚择优选
工程文档的打印预览通常显示为100%。
缩放级别可以在工具栏中通过选择列表来设置,它的值可以从25%到400%之间选择,在
10%和500%之间的值可以通过手工输入。
如果光标停留在在图形化语言创建的对象上或停留在一个可视化对象上,就可以选择缩
放级别。
在联机模式,每个对象根据设置的缩放级别来显示,联机功能没有任何限制。
当使用智能鼠标时,通过按
象。
网络
在LD和FBD编辑器中,程序由一系列的网络组成,每个网络都由左边的网络编号指
示,并且还包括逻辑或算术表达式的结构、程序、功能或功能模块调用、跳转或返回指令。
标签
每个网络都有一个标签,标签可以为空,通过单击网络编号旁的网络的第一行来编辑标
签,然后在冒号后面输入一个标签。
注释,网络中的行断点,'附加''选项'
每个网络都可以添加一个多行的注释,在通过命令“附加”“选项”打开的对话“功能
块和梯形图选项”中,可以设置关于注释的设置。
在最大注释尺寸区域中,可以输入注释行的最大的数字(默认值为4),在最小注释尺
寸区域中可以输入通常要保留的行数字。如果,输入了2,那么,在每个网络的开始处在标
签行后面都有两个空行,默认的值为0,这样做的优点是使更多的行显示在屏幕区域。
如果最小注释数字比0大,为了输入一个注释只需在注释行行单击然后输入注释,否
则,就需要首先选择要输入注释的网络,并使用命令“插入”“注释”来插入注释行。和程
序文本相比,注释显示为灰色。
在梯形图编辑器中可以为每个接点和线圈添加注释,只要激活选项注释每个接点并插入
- 146
尚择优选
到编辑区域变量注释行输入保留用来显示注释的行的编号,当完成这个设置时,注释区域将
显示在编辑器中每个触点和线圈的上面。
如果激活选项注释每个接点,在梯形图编辑器中可以定义哪个行编号用于接点或线圈的
变量名,这用来显示由多行组成的长名字。
在梯形图编辑器中,通过激活选项网络自动换行,在网络的长度超出给定的窗口尺寸并
且一些元素看不见的情况下可以自动换行。
输入地址后用符号替换:(只适用于梯形图编辑器):如果此项激活,那么在接点或线圈处
输入地址后,如果地址已经分配给了一个变量,地址将被变量名替换,否则保留地址.
接点注释设置成变量注释:如果此项激活,将在接点或线圈注释区内显示变量声明时编写
的注释.注释可以再编辑(参看上面的图片),为达到这个目的,必须激活'每个接点的注释'选
项.注意:即使变量在声明区没有注释,原有注释也会自动被变量声明区中的注释替换!
显示符号地址:(只适用于梯形图编辑器):如果此项激活同时接点或线圈的变量与一个地
址对应,那么将显示在变量名上面.(参看上面的图片).
打印输出时按行显示变量注释:如果此项激活,每个网络中用到的变量各占一行,被显示
在网络上面,显示的内容:名称,地址,数据类型和注释.这和变量声明一样.此项功能在工程打
印输出时很有用.例如:
147 - -
尚择优选
应用选项:
确定:按此按钮将当前设置用于当前POU并关闭对话框.
应用:按此按钮将设置用于整个工程.按此按钮后将打开一个提示框来确认是否修改设置.
'插入''网络(后面)'或者'插入'"网络(前面)
快捷方式:
为了在FBD或梯形图编辑器中插入一个新网络,选择命令“插入”“网络(后面)”或
'插入'"网络(前面)",取决于你想在当前网络之前或之后插入一个新网络。当前的网络可以
通过在网络编号上单击来改变,可以通过在编号下面的点划矩形框来识别它,使用
联机模式下的网络编辑器
在FBD和LD编辑器中只能为网络设置断点,设置断点的网络的编号区域显示为蓝色。
处理过程在断点设置的网络附近停止,在这种情况下,网络编号区域显示为红色,通过单步
处理可以在网络之间跳转。
在进入和退出网络POU(程序组织单元)时,所有的值都被监视。
当监视表达式或位地址变量时,应注意以下方面:在表达式中,例如,aANDb,作为变
换条件或功能模块输入,整个表达式的值通常显示(如果aANDb的值为TRUE时,aANDb显
示为蓝色或:=TRUE)。对于位地址变量,寻址的位值通常要被监视(例如,当a有值4
时,a.3显示为蓝色或带:=TRUE)
命令启动流程控制,使用流程控制,可以查看当前网络连接线上传递的值。如果连接线
没有传递布尔型的值,值将显示在一个特定的输入区域。未使用的变量的监视区域(例如,
在功能SEL中)显示灰色的阴影,如果连接线传递布尔型的值,当它们传递TRUE时,将显
示为蓝色。所以,在PLC运行时可以观察流程的信息。
如果用指针在变量上停留一会,在工具提示中将显示变量的类型、地址和注释。
5.5.1功能模块图编辑器
下面是在CoDeSys中相应的编辑器FBD中编写一个POU的窗口
- 148
尚择优选
功能模块图编辑器是一个图形化的编辑器,每个网络包含了显示、逻辑或算术表达式、
功能模块的调用、功能、跳转、返回指令。在内容菜单(按鼠标右键或
以找最重要的命令。
可以在FUP-和KOP之间切换FUP-POU的显示,离线模式和联机模式相同。
参照:
FBD的当前位置
每个文本是一个可能的光标位置,选中的文本以蓝色背景表示并且当前可以被修改。
通过点矩形框也能识别当前光标位置,下面是光标所有可能位置的例子:
1)每个文本区域(加黑色框的可能指针位置):
2)每个输入:
3)每个操作数、功能或功能模块:
4)输出,如果随后有赋值或跳转:
5)行在赋值、跳转、返回指令上发生交叉:
149 - -
尚择优选
6)在最外面对象的网络图的右边(“最后的指针位置”,与选择网络的指针位置相
同):
7)在赋值附近的线性交叉:
如何设置FBD的当前位置
通过单击鼠标或使用键盘可以在特定的位置放置光标,在任何时候,使用箭头键可以在
选择的方向上跳到最近的光标位置。通过这种方式可以访问所有的光标位置包括文本区域。
如果最近的光标位置被选中,就可以使用
络的最近光标位置。
空的网络只包含三个问号“???”,在它们之后单击,最近的光标位置被选中。
'插入''赋值'
这个命令插入一个赋值。
插入赋值依赖于选中的位置(参照),在选中的输入端附近(光标位置2)、在选中的
输出端(光标位置4)之后或在网络的末端(光标位置6)可以直接插入赋值。
对于一个插入的赋值随着选中输入的文本“???”被选中,赋值可以被将要赋值的变
量替代,也可以使用输入帮助。
使用命令“插入”“输出”给当前存在的赋值插入一个附加的赋值。
'插入''跳转'
符号:快捷方式:
这个命令插入一个跳转。
插入依赖于选中的位置(参照),在选中的输入端(光标位置2)附近、在选中的输出
端(光标位置4)后或在网络的末端(光标位置6)可以直接插入跳转。
对于插入的跳转,随着选中输入的文本“???”选中跳转,它可以被要赋予它的标签
替代。
'插入''返回'
符号:快捷方式:
这个命令插入一个返回指令。
插入返回指令依赖于选中的位置(参照),在选中的输入端附近(光标位置2)、在选
中的输出端(光标位置4)之后或在网络的末端(光标位置6)可以直接插入返回指令。
'插入''框'
符号:
快捷方式:
- 150
尚择优选
用这个命令能插入运算符,功能,功能模块和程序。首先,它通常插入一个“AND”运
算符,这可以通过选择和类型文本的覆盖来改变到其它操作符,功能,每个功能模块和每个
程序中。
通过使用输入帮助(
字,这些将绑定。如果新块中有输入的较小数字,最近的输入将被删除。
在功能和功能模块中,显示输入和输出的正式名字。
在功能模块中的方框上存在一个可编辑的实例区域。通过改变类型文本来调用一个没名
的功能模块,将显示带有两个输入和给定的类型的运算符方框。如果实例区域被选中,可以
通过
最新的POU插入到选中的位置:
如果选中一个输入端(光标位置2),POU插入到这个输入端的附近。这个POU的第一
个输入端连接到选中输入端左边的分支。新POU的输出连接到了选中的输入端。
如果选中了一个输出端(光标位置4),那么POU插入到输出端之后。POU的第一个输
出端与选中的输出端连接。新POU的输出端与选中的输出端连接的分支相连接。
如果POU、功能或功能模块被选中(光标位置3),旧的POU将被新的POU替代。
反之将会与它们被替代之前的相同方式相连接。
如果旧元素的输入端比新元素多,不能连接的分支将被删除,相同的分支为输出端保持
真值。
如果选中了跳转或返回指令,POU将会插入到这个跳转或返回指令之前。POU的第一个
输入端与选中元素的左边的分支相连接。POU的输出端与选中的元素的右边的分支相连接。
如果选中了网络的最近光标位置(光标位置6),POU将会插入到最后元素的后面。POU
的第一个输入端与选中位置的左边的分支相连接。
不能连接的POU的所有输入端出现文本“???”。这个文本必须改变为期望的常量或
变量。
插入的POU的右边分支,分支将会分配给第一个POU输出端。否则输出端保持不赋值。
'插入''输入'
符号:快捷方式:
这个命令插入一个输入端运算符。随着运算符,输入端的数目可以不同(例如,ADD可
以后2个或多个输入端。)
为了通过输入来扩展这样一个运算符号,你必须选择输入端,在它的附近插入附加输入
端(光标位置1);或者你必须选择运算符本身(光标位置3),如果要插入一个低输入端
(参照)。插入的输入端分配了文本“???”。这必须改变为期望的常量或变量。你也可
以使用输入帮助来做这些。
'插入''输出'
符号:
这个命令用来添加一个附加的赋值到已存在的赋值中。
'附加''取反'
符号:
快捷方式:
151 - -
尚择优选
用这个命令可以对输入、输出、跳转或返回指令进行否定操作,否定的符号是在连接处
的一个小圆圈。
如果选中了一个输入(光标位置2)(查看),随后这个输入将被否定。
如果选中了一个输出端(光标位置4),那么这个输出端将被否定。
如果一个跳转或返回被标记,那么跳转或返回将被否定。
否定可以通过重新否定来取消。
'附加''置位/复位'
符号:
用这个命令可以象设置或复位那样来定义输出,设置的输出用[S]表示,复位输出端用
[R]表示。
如果属于它的栅格返回了TRUE,输出端设置为TRUE,输出将保持这个值,即使栅格跳
回了FALSE。
如果属于它的栅格返回了FALSE,输出端设置为FALSE。输出现在保持这个值,即使栅
格跳回了FALSE。
随着重复执行这个命令,输出将在设置、复位和正常输出之间改变。
'附加'预览'
这个命令为在FBD编辑器中创建的POU选择显示在梯形图或者FBD编辑器中,离线模式
和联机模式功能相同。
'附加''打开实例'
这个命令与“相同。
如果光标放置在文本编辑器中的功能模块的名字上或如果功能模块框在图形编辑器中被
选中,在内容菜单(
剪切,复制,粘贴和删除
在菜单项目“编辑”下可以用到“剪切”,“复制”“粘贴”和“删除”
如果选中了一个交叉线(光标位置5),那么位于交叉行下面的赋值、跳转或返回将会
被剪切、删除或复制。
如果选中了一个POU(光标位置3),选中的对象自身将被剪切、删除或复制,同时也
包括在输入端的所有独立的分支和第一种情况外的分支。
否则,在光标位置附近的所有分支将会被剪切、删除或复制。
在复制或剪切之后,删除或剪切的部分位于剪贴板上,可以随意粘贴它。
首先选中粘贴点,有效的粘贴点包括输入和输出端。
如果POU被加载到了剪贴板上(这种情况下所有连接的分支除了第一条外都一块位于剪
- 152
尚择优选
贴板上),第一个输入连接到粘贴点之前的分支上。
否则,位于粘贴点附近的所有分支将被剪贴板中的内容替代。
最后粘贴的元素将连接到粘贴点附近的分支上。
注意:下面的问题可以通过剪切和粘贴来解决:一个新的操作数插入到网络的中间,分
支位于操作数的右边,现在将和第一个输入相连接,但应该和第二个输入相连接。你可以选
择第一个输入端并执行命令“编辑”“剪切”,这样,你可以选择第二个输入端并执行命令
“编辑”“粘贴”,分支就连接到了第二个输入端。
联机模式下的功能块图
在功能模块图,断点只能设置到网络上。如果已经在网络上设置了断点,网络编号区域
将显示为蓝色,处理过程将停止在设置断点的附近。在这种情况下,网络编号区域将显示为
红色。使用,你可以从一个网络跳到另一个网络。
显示每个变量的当前的值,例外:如果功能模块的输入是一个表达式,只有表达式中第
一个变量才被监视。
在变量上双击将打开写变量的对话框,在这里可以改变当前变量的值。如果是布尔变量
的情况,不出现对话框,这些变量被选中。
如果使用了命令“,新值将变为红色并保持不变。所有的变量将放入选择列表中,然后
重新显示为黑色。
用命令来开始流向控制,你可以查看当前网络上正在传递的值。如果连接线上没有传递
布尔值,值将显示在一个特殊的插入区域。如果线上传递的是布尔型的值,当它们传递
TRUE值,以暗蓝色显示。通过这个方法,你可以在PLC运行时知道流程的信息。
如果鼠标在变量上停留一会,变量的类型、地址和注释将显示在工具提示中。
5.5.2梯形图
下面是在CoDeSys编辑器LD中编写POU的窗口
POU的所有编辑器包括声明部分和主体部分,它们被屏幕分割器隔开。
梯形图编辑器是一个图形化的编辑器,在内容菜单(按鼠标右键或
153 - -
尚择优选
含有最重要的命令。
关于元素的信息,参照2.2.6章节,。
参照:
’
LD编辑器的当前位置
下面的位置是可能的光标位置,在功能模块和程序访问中可以作为触点的位置、具有EN
输入的POU和和在功能模块图一样处理的其它的POU。编辑这个网络部分可以在5.4.2章节
找到详细的信息,。
1.每个文本区域(在黑色框中是光标位置)
2.或功能模块
3.线圈
4.触点和线圈之间的连接线
梯形图以特定方式使用下面菜单命令:
元件的移动
在LD的POU中可以通过拖放来移动元素到一个不同的位置。
为了移动元素,选择期望的元素(触点、线圈、功能模块)并按住鼠标键拖动它离开当
前的位置,在POU的所有将要移动到的所有可能位置的网络内的元素,将会通过灰色填充的
矩形来指示,移动元素到这些位置中的一个并释放鼠标键,元素将插入到新位置。
- 154
尚择优选
'插入''网络
(前)'
符号:
这个命令在梯形图中插入一个。如果已经存在网络,新插入的将在当前网络前面。
'插入''网络(后)'
符号:
这个命令在梯形图中插入一个。如果已经存在网络,新插入的将在当前网络后面。
'插入''常开接点',注释
符号:快捷方式:
在LD编辑器中使用这个命令来在网络图中标记的位置插入一个。
如果是一个或在触点和线圈之间连接线,新触点将会连续地连接到先前的触点。
触点预设文本为“???”,你可以在这个文本上单击并改变它为期望的变量或期望的
常量,你也可以使用,也能激活对话'(
可以在梯形图选项中激活选项'网络自动换行'。
下面是在FBD或梯形图网络中的选项对话和结果显示的例子:
155 - -
尚择优选
'插入''常闭接点'
符号:快捷键:
这个命令插入一个。像和也可插入一个常闭接点
'插入''常开并联接点'
符号:快捷方式:
在LD编辑器中使用这个命令来在网络中标记位置处插入一个平行的。
如果是一个或接头和线圈之间的连接,新的接头将与整个先前接头连接平行进行连接。
接点预设为文本“???”,可以单击文本并改变它为期望的变量或期望的常量,你也
可以使用输入助手来做这些。
'插入''常闭并联接点'
符号:快捷键:
这个命令插入一个。像和也可插入一个常闭并联接点
'插入''线圈'
- 156
尚择优选
符号:快捷方式:
在编辑器LD中使用这个命令来插入一个与先前线圈平行的。
如果是线圈和之间的连接,新线圈将插入到最后,如果标记的位置是线圈,新线圈将直
接插入到它的上面。
线圈的默认文本是“???”。可以在文本上单击并改变它为期望的变量。也可以使用
输入帮助来做这些。
也可以为线圈添加一个单独的注释,详细的讲述参照“插入”“接点”。
'插入'''置位线圈'
符号:关键字:
这个命令插入一个。像和也可插入一个置位线圈.
'插入''复位线圈'
符号:
这个命令插入一个。像和也可插入一个复位线圈.
'插入''功能块'
快捷方式:
用这个命令来插入一个运算符、功能模块、功能或作为POU的程序。在接点和线圈之间
的连接,或触头与触头之间的连接,必须标记出来。新POU在起先有名称AND,可以改变它
为其它的名称,也能使用输入帮助来做这些。标准的和自定义的POU都是可用的。
POU的第一个输入放置在输入连接上,第一个输出在输出连接上,这些变量必须定义为
BOOL类型。POU的所有其它的输入和输出被文本“???”填充,这些优先的条目能改变为
其它的常量、变量或地址。
也可以使用输入助手来做这些。
带EN输入的POUs
如果你想使用你的LD网络作为一个PLC来调用其它的POU,必须结合一个带EN输入的
POU,这样的POU与平行连接,在这个POU之后你可以展开网络,就象在功能模块图中那
样。在菜单项目“插入”“插入块”下,在ENPOU的地方能找到插入命令。
操作符、功能模块、程序或带EN输入的功能与在功能模块图中的相应POU以相同的方
式执行操作,除了它们的执行在EN输入上控制。这个输入附加到线圈和触点之间连接的地
方,如果这个连接携带信息"On",将会计算POU的值。
如果创建的POU带有EN输入,这个POU可以用来创建网络。这意味着来自通常操作
符、功能和功能模块的数据能流进ENPOU并且ENPOU也能传送数据到这样的通用的POU中。
如果,你想在LD编辑器中编写一个网络,就象在中那样,你只需在新网络中首先插入
一个EN操作符。随后,从这个POU开始,能象在FBD编辑器中那样继续从你的网络创建。
'插入''LD中EN的框'
符号:
用这个命令可以把一个功能模块、操作符、功能或带EN输入的程序插入到LD网络中。
标记的位置是触点和线圈(光标位置4)或线圈(光标位置3)之间的连接。新POU平
157 - -
尚择优选
行插入到在线圈下面,它包含最初的名称“AND”。你也可以改变这个名称为其它的名字,
也可以使用输入帮助来做这些。
'插入''在LD中插入块’
使用这个命令你可以插入附加的元素到已经插入元素的POU(也包括带EN输入的POU)
中,在这个菜单项目下的命令就象在功能模块图中相应命令一样可以在同一光标位置执行。
用输入可以添加一个新的输入到POU中。
用输出可以添加一个新输出到POU中。
用POU,插入一个新POU,过程与“插入“”POU“讲述的一样。
用分配你能给变量插入一个值。首先,显示为三个问号“???”,可以用期望的变量
来编辑和替换,也可以使用输入帮助来做这些。
'插入''上升沿触发器'
符号:
这个命令时插入一个在引入信号中检测上升沿(FALSE->TRUE)的功能块。像一样,它也
能用于插入任何一个可用功能块。
插入下降沿检测触发器
符号:
这个命令时插入一个在引入信号中检测下降沿(FALSE->TRUE)的功能块。像一样,它也
能用于插入任何一个可用功能块。
'插入''计时器(TON)'
符号:
这个命令是插入一个计时器功能块。它负责接通延迟(延迟引入信号的通过),像一
样,它也能被用作插入TON模块。
'插入''跳转'
用这个命令能插入一个平行的跳转在选中的LD编辑器中,在平行分支中,在先前的末
端。如果引入行传递值"On",跳转将跳转到指示标签处执行,
必须是在触点和线圈之间的连接。
跳转用文本“???”表示,可以单击这个文本并改为期望的标签。
'插入''返回'
在LD编辑器中,可以使用命令来在先前线圈的末端的平行部分插入一个返回指令。如
果输入线上传递值“On”,在这个网络中POU的处理过程中断。
必须是在触点和线圈之间的连接部分。
'附加''粘贴在后面'
在编辑器中使用这个命令来粘贴剪贴板中的内容作为在标记的位置下面的连续接点,这
个命令只有在剪贴板中的内容和标记的位置是接点的网络组成时才起作用。
'附加''粘贴在下面'
快捷方式:
在LD编辑器中使用这个命令来插入剪贴板的内容作为在标记位置之下的行接点,这个
- 158
尚择优选
命令只有在剪贴板的内容和标记位置是接点的网络组成时才有效。
'附加''粘贴在上面'
在编辑器中使用这个命令来插入剪贴板的内容作为标记位置下面的平行接点,这个命令
只有在剪贴板的内容和标记的位置是接点的网络组成时才有效。
'附加''取反'
符号:快捷方式:
使用这个命令来对一个触点、线圈、跳转或返回指令,或在当前的ENPOU的输入或输出
进行否定操作。
在的圆括号或的直线之间,出现一个斜线((/)or|/|)。如果这些是跳转,返回指令,或
的输入或输出,在连接处出现一个小圆圈,和在中的一样。
线圈现在在各自的布尔型变量中写入输入连接的否定值,如果各自的布尔型变量传递值
FALSE,否定触头切换输入的状态为输出。
如果标记了一个跳转或一个返回,这个跳转的输入或返回将被否定。
可以对否定进行否定来取消否定。
'附加''置位/复位'
符合:
如果在上执行这个命令,会接收一个。这个线圈在各自布尔变量从不覆盖值TRUE。这意
味着一旦为变量设置了值TRUE,它将一直保持TRUE。设置线圈在线圈符号中用“S”表示。
如果你再次执行这个命令,会得到一个复位线圈。这个线圈在各自的布尔变量中从不覆
盖值FALSE。这就是说,一旦为这个变量设置了值FALSE,它将一直保持FALSE,复位线圈
在线圈符号中用"R"表示。
如果你重复执行这个命令,线圈将在设置和复位和常态之间改变。
联机模式下的梯形图
在联机模式下,在梯形图中的在“On”状态的触点和线圈以蓝色表示,同样地,所有传
递“On”的线也涂上蓝色,在的输入和输出处,相应变量的值显示出来。
只能在网络上设置,通过使用步,可以从网络跳到另一个网络。
如果你把鼠标在变量上停留一会。变量的类型、地址、注释将在工具提示中显示出来。
5.5.3顺序功能图表编辑器
下面是在CoDeSys中相应的编辑器SFC中编写POU的窗口:
159 - -
尚择优选
POU的所有编辑器包含一个声明部分和主体部分,它们被屏幕分割器隔开。
顺序功能图表编辑器是一个图形化的编辑器,在内容菜单(按鼠标右键或
换、跳转、跳转标签、标识符或相关的动作。离线模式和联机模式的显示一样。
详细信息参照2.2.3章节。
顺序功能图表编辑器必须与SFC的特殊编辑器相一致,下面的菜单项目将会常用到。
参照:
在SFC中标记块
标记的块是用虚线框包围的一组SFC元素。
通过移动鼠标到元素上并按鼠标左键,或使用方向键,可以选择一个元素(步、转换或
跳转)。为了标记一组中多个元素,在标记的块上按
的元素,这样就选中了包括这些元素的最小的组。
请注意,步只能和它之前或随后的转换一起!
'插入''步-转换(前)'
符号:快捷方式:
这个命令在SFC编辑器中的标记块的附近插入一个后跟转换的步。
'插入''步-转换(后)'
符号:快捷方式:
这个命令用来在SFC编辑器中的标记块附近第一个转换后的转换后插入一个
删除步和转换条件
步只能和前面或随后的转换一起被删除,移动选择框到步和转换周围并选择命令“编
- 160
尚择优选
辑”“删除”或按键。
'插入''选择分支(右)'
这个命令插入一个可选分支在SFC编辑器中作为标记块的右分支。
标记块必须开始和结束于一个变换,新的分支组成一个转换。
'插入''选择分支(左)'
符号:
这个命令插入一个可选分支在SFC编辑器中作为标记块的左分支。
这个标记块必须开始和结束于转换,新分支组成一个转换。
'插入'"平行分支(右)"
符号:快捷方式:
这个命令在SFC编辑器中插入一个平行分支作为标记块的右分支。
标记块必须开始和结束于步,新分支作成一个步。要使已创建的平行分支允许跳转,必
须提供一个跳转标签。
'插入''并行分支(左)'
符号:
这个命令在SFC编辑器中插入一个平行分支作为标记块的左分支。
标记块必须开始和结束于步,新分支作成一个步,要使已创建的平行分支允许跳转,必
须提供一个跳转标签。参照
'插入''跳转'
在SFC编辑器中用这个命令在标记块所属的分支的末端插入一个跳转,这个分支必须是
可选分支。
在插入的跳转中文本字符串“Step”可以被选中和被步名字或要跳转到平行分支的跳转
标签替代。
'插入''转换跳转'
符号:
在SFC编辑器中使用这个命令来插入一个转换,在选择分支的末端后跟一个跳转,这个
分支必须是选择分支。
在插入的跳转中插入的文本字符串“Step”能够被选中并且能被步的名字或要跳转到的
平行分支的跳转标签替代。
'插入''添加进入动作'
使用这个命令可以为步添加一个。在步之后,进入动作只执行一次,进入动作可以以你
选择的语言执行。
带进入动作的步在左下角用"E"表示。
'插入''增加退出动作'
用这个命令可以为添加一个,在步失效之前,退出动作只执行一次,退出动作可以以选
161 - -
尚择优选
择的语言执行。
带退出动作的步在右下角用"X"表示。
'附加''粘贴并行分支(右)'
这个命令粘贴剪贴板的内容作为标记块的右,标记块必须开始和结束于一个步,剪贴板
的内容同样也必须是开始和结束于步的SFC块。
'附加''增加并行分支标志'
为了提供一个新的带跳转标签的插入平行分支,跳转发生在平行分支必须被标记并且命
令“增加并行分支标志”被执行。在那个点,平行分支将会给定一个标准名字包含“并行”
和一个附加序列号,它可以按照标识符名字的规则来编辑。
删除标志
通过删除标签名可以删除标签。
'附加''粘贴在后面'
这个命令粘贴剪贴板上在第一个步之后或标记块的第一个转换后SFC块,(正常在标记
块附近复制粘贴它。)根据语言标准,如果SFC结构是正确的,这个将开始执行。
'附加''添加移动/转换'
快捷方式:
标记块的第一个步的或标记块的第一个转换的转换主体被加载到各自书写它们语言的编
辑器中,如果动作或转换主体是空的,那么书写它们的语言必须被选中。
'附加'"清除动作/转换"
使用这个命令你能删除标记块的第一个步的或第一个转换的转换主体的动作。
如果在一个步中,只执行了动作、进入动作或只执行退出动作,那么相同的将会通过命
令被删除,否则出现一个对话框,你可以选择那个或那些动作要删除。
- 162
尚择优选
如果光标位于IEC步的动作上,那么只有这个连接被删除,如果和相关的被选中,相关
连接被删除,有多个动作的IEC步,将出现一个选择对话框。
'附加''步的特性'
用这个命令能打开一个对话框,在对话框中能编辑标记步的属性。
可以利用在步属性对话框中的三个不同条目,在最小时间下,你可以输入这个步的处理
过程占用的最小时间长度。在最大时间,你可以输入这个步的处理过程占用的最大时间长
度。
条目是时间类型,因此应该使用时间常量(例如,T#3s)或时间类型的变量。
在注释下,你可以为步插入一个注释,使用命令“附加”“选项”打开“顺序功能图选
项”对话,在SFC编辑器中能决定显示步的注释还是步的时间设置。在右边,步的旁边,注
释或时间设置将出现。
如果超过了最大时间,用户可以查询设置的。
例子中显示了一个在联机模式下至少执行2秒最多执行10秒的步,除了这来两个时间
外,还显示了步已经激活了多长时间。
'附加''时间总览'
用这个命令你能打开一个窗口,在这个窗口中能编辑SFC步的时间设置:
163 - -
尚择优选
SFCPOU的所有步都显示出来,如果已经为步一个时间边界,时间界限显示在步的右边
(首先是时间下限,然后是时间上限)。你可以编辑这些时间界限。在期望的步上单击,步
的名字显示在窗口的下面,在最小时间或最大时间区域里输入期望的时间界限,如果按OK
关闭对话,所有的改动将被保存。
在例子中,步2和6有时间边界,Shift1持续最少2秒,最多10秒。Shift2持续最少
7秒,最多八秒。
'附加''选项'
用这个命令打开一个对话框,在对话框中能为SFCPOU设置不同的选项。
在SFC选项对话框中能设置五个条目,在步高下,输入在SFC中一个SFC步占多少个行
高,在这里是标准设置是4。在步宽下,可以输入一个步占多少个列,标准设置是6。也可
以预设显示步。可以有三种选择的可能性:你可以选择不显示,或显示注释,或显示时间限
制。最后两个条目与在显示的方式相同。
'附加''关联动作'
用这个命令和布尔变量可以连接到。
在IEC步右边连接一个附加的分开框,对于动作的连接,在左边的区域预设有限定词
- 164
尚择优选
“N”并且在右边区域有“Action”的名字,可以通过来改变它们。
一个IEC步最多能连接9个步。
使用命令“工程”“添加动作”在对象管理器中创建IEC步的新动作,
'附加''使用IEC步'
符号:
如果激活这个命令(在菜单项目的附近有一个对号表示),将替代简单的步插入到步和
上。
如果这个选项打开,当你创建一个新SFCPOU时初始化步设置为IEC步。
这个选项保存在文件“”中并且当CoDeSys重新启动时恢复。
联机模式的顺序功能图表
使用联机模式下的顺序功能图编辑器,当前的步显示为蓝色。如果在命令下已经设置了
它,那么步右边描述时间管理。在下和上边界已经设置的第三个时间指示器将出现,从这里
能读出步已经激活了多长时间。
在上面的图片中描述的步已经激活了8秒和410毫秒,步在退出之前至少还要激活7分
钟。
用命令“联机”“托拽断点”,将会在步上设置一个断点,或在一个动作的位置处用使
用的语言来设置,处理过程在这个步之前停止或在程序中动作位置之前停止,断点设置所在
步或程序的位置标记为亮蓝色。
如果在平行分支的数个步都激活,激活的步显示为红色,它的动作将处理下一个。
如果已经使用了,在联机模式所有激活动作将显示为蓝色。
使用命令“联机”“跳过”,它将跳到动作正在执行的下个步中。
如果当前位置是:
•在POU的线性处理中的步或在POU的最右边分支中的步,从SFCPOU的执行将返回到
调用处,如果POU是主程序,下个循环开始。
•在平行分支中除了最右边的步,执行跳转到下一个平行分支的活动步。
•最后的断点位于3S动作之内,执行跳转到SFC的调用处。
•最后的断点位于IEC动作内,执行跳转到SFC的调用处
•最后的断点位于输入或输出动作之内,执行跳转到下一个活动的步中。
使用“联机”“进入”,包括能进入动作中,如果输入、输出或IEC动作要被跳入,必
须在这里设置一个断点。在动作内,相应编辑器的所有调试功能对用户都可用。
如果光标在声明编辑器中的变量上停留一会,变量的类型、地址和变量的注释将显示在
工具提示中。
165 - -
尚择优选
请注意:如果你重命名了一个步并在步是活动的时候执行了一个联机改变,那么程序将
会停止在未定义状态
在序列中的元素的处理顺序
1.首先,在序列中使用的IEC动作中的所有动作控制块标示符将复位(然而,IEC动作
的标示符在动作内部调用)
2.所有步按顺序测试(从上到下和从左到右)
3.对于所有的步,以下部分按序列中设定的顺序来完成:
-如果可用,逝去的时间复制到相应的步的变量中。
-如果可用,任何超时都被检测并且SFC错误标示符按要求提供。
对非IEC步,相应动作开始执行。
4.在序列中用到的IEC动作按字母顺序执行,通过动作列表有两种途径来完成这个动
作,第一种是,所有的在当前循环中未激活的IEC动作开始执行。第二种途径是,在当前循
环中所有激活的IEC动作执行。
5.转变开始进行:如果在当前循环中的步是激活的并且下面的转变条件返回TRUE(如果
最小激活时间已经消逝),下面的步是激活的。
关于动作的执行部分应该注意以下部分:
动作可以在一个循环中执行多次因为它关联了重复序列。(例如,一个SFC可以有两个
IEC动作A和B,它们都在SFC中执行,并且都可以调用IEC动作C,那么IEC动作A和B
都可以在相同的循环中激活,而且在这两个动作中IEC动作C也能激活,C将被调用两
次)。
- 166
尚择优选
如果相同的IEC动作在SFC中不同的级别中同时使用,由于上述处理序列的原因将导致
不可预料的结果。因而,在这种情况下将回出现出错信息。它也可能出现在其它旧版本的
CoDeSys工程创建过程中。
注意:在转换条件中监视表达式(例如,AANDB)时,显示的是整个表达式的值
5.5.4连续功能图表编辑器
它看起来象使用编辑器产生的块:
连续功能图表编辑器中没有使用捕捉栅格,因此元素可以任意放置。连续处理列表的元
素包括框、输入、输出、跳转、标签、返回和注释。这些元素的输入和输出可以通过用鼠标
拖动连接来连接起来,连接线自动画出。最短的可能的连接线要考虑到现有的连接,当元素
移动时连接线自动调整,如果连接线因为缺乏空间不能画出,在输入和相关的输出之间出现
一个红线,这个红线只有当空间充足时才转化为连接线。
与通常的相反的连续功能图表的一个优点是反馈路径可以直接插入。
在内容菜单中可以找到最重要的命令。
CFC的当前位置
每个文本都是光标可能的位置,选中的文本渐变为蓝色并且可以被修改。
在其它的情况下当前鼠标的位置通过虚线矩形框来显示,下面是光标可能位置的例子:
1.框、输入、输出、跳转、标签、返回和注释这些元素的中继线。
2.与连接标记的文本区域一样框、输入、输出、跳转、标签、返回和注释这些元素的文
167 - -
尚择优选
本区域。
3.框、输入、输出、跳转、标签、返回这些元素的输入端
4.元素框和输入的输出端:
'插入''框'
符号:快捷方式:
通常插入一个“AND”操作符,可以通过选中操作符并用其它其它的操作符、功能、功
能模块和程序覆盖文本来修改它,输入帮助提供从支持块的列表中选出期望的块的帮助。如
果新块,有输入的其它的最小数字,这些将附加上。如果新块有输入的较小最高号码,最后
的输入将被删除。
'插入''输入'
符号:快捷方式:
这个命令用来插入一个输入,出现的文本“???”可以被选中并被变量或常量替代,输
入帮助也可以在这里使用。
'插入''输出'
这个命令用来插入一个输出,可以选中出现的文本"???"并且可以用变量替代,在这里
也可以使用输入帮助,与这个输出的输入相关的值分配给这个变量。
'插入''跳转'
符号:
快捷方式:
- 168
尚择优选
这个命令用来插入一个跳转,可以选中出现的文本“???”并用程序要跳转的跳转标签
来替代它。
使用命令“插入”“标志”插入跳转标签。
'插入''标签'
符号:快捷方式:
这个命令用来插入一个标签,可以选中出现的文本“???”并用跳转标签来替代它,在
联机模式下自动插入一个标记POU的末端的跳转标签。
用命令“插入”“跳转”可以插入跳转。
'插入''返回'
符号:快捷方式:
这个命令插入一个返回命令,注意在联机模式下带RETURN名字的跳转标签自动插入到
第一列和编辑器最后元素的后面,在分支中,它自动跳转到执行将离开POU之前的地方。
'插入''注释'
符号:快捷方式:
这个命令用来插入注释。
用
'插入''输入框'
快捷方式:
这个命令用来在方框处插入一个输入。不同的操作符有不同的输入端数(例如,ADD可
以有两个或多个输入端)。
必须选中方框才能为这个操作符增加输入端的数目,每次添加一个输入端。
’插入''输入针''插入''输出针'
符号:
为了编辑而打开宏时,这些命令是可用的,它们用来插入宏的输入或输出或输入和输
出。通过它们的显示和有没有位置索引来区分POU的输入和输出端。
'附加''取反'
符号:快捷方式:
这个命令用来对输入、输出、跳转、返回命令取反,在连接上用一个十子交叉表示否定
的符号。
元素块、输出、跳转或返回当它们被选中时,它们的输入否定。
元素块的输出或输入当它被选中时被否定(光标位置4)。
通过再次否定可以取消原来的否定。
'附加''置位/复位'
符号:快捷方式:
这个命令只能用来选择输出元素的输入端。
设置的符号是S,复位的符号是R。
169 - -
尚择优选
如果VarIn1传递TRUE,VarOut1设置为TRUE,VarOut1保持这个值,即使当VarIn1跳
回到FALSE。
如果VarIn2传递TRUE,VarOut2设置为FALSE。VarOut2保持这个值,即使当VarIn1
跳回到FALSE。
重复激活这个命令可以使输出在设置、复位和正常状态之间转换。
'附加''EN/ENO'
符号:快捷方式:
这个命令用来给选中的块添加一个附加的布尔型使能输入EN端(使能输入端)和一个
附加的布尔型使能输出ENO(使能输出端)。
在这个例子中,当布尔变量“Bedingung”(状态)为TRUE时,ADD才执行,在ADD执
行后VarOut设置为TRUE。当“Bedingung”(状态)为FALSE并且VarOut保持FALSE值时
ADD将不会执行。下面这个例子显示了ENO值是怎样为随后的块工作的:
x应该初始化为1和y初始化为0,在块的右角上的数字表明了执行的顺序。
x将会每次增加1直到值为10,块的输出LT(0)传递值FALSE并且SUB(3)和ADD
(5)将会被执行,x的值设置回1y的值每次增加1,只要x的值比10小,LT(0)就重复
执行,y记录x在值1到10之间通过的次数。
'附加''属性'
在连续功能编辑器中不显示和中的常量输入参数(VAR_INPUTCONSTANT),当你选中块的
主体并且使用命令“附加”“属性”或者在主干上双击时“特性编辑器”对话框打开,在这
里显示和修改它们的值:
- 170
尚择优选
常量输入参数(VAR_INPUTCONSTANT)的值是可以改变的,在这里你必须在列值中标记参
数值。单击鼠标或按空格键可以编辑参数值,按
确认'存储所有的改变。
选择元件
在元素的主体上单击来选中它。
为标记多个元素,按
拖动鼠标到要标记的元素上。
命令“附加”“选择所有”一次能标记所有的元素。
移动原理
一个或多个选中的元素可以通过方向键来移动就如按住
住鼠标左键拖动来移动元素。通过释放鼠标左键放置这些元素直到它们不覆盖其它的元素或
者超出编辑器的边界。否则,标记的元素跳回到它的初始位置并出现一个警告声音。
复制原理
一个或多个选中的元素可以使用命令“编辑”“复制”来复制并且可以用命令“编
辑”“粘贴”来插入。
创建连接
元素的输入端可以精确的连接到另一个元素的输出端,一个元素的输出端可以连接到其
它元素的输入端。
元素E2的输入端和元素E1的输出端的连接有多种可能性。
把鼠标置于元素E1的输出端,单击鼠标左键,按下鼠标左键并拖动鼠标指针到E2的输
入端,然后释放鼠标键,在用鼠标拖动的过程中产生从元素E1的输出端到鼠标指针的连
接,放置鼠标到元素E2的输入端,单击鼠标左键,按下鼠标左键并拖动鼠标指针到元素E1
的输出端并释放鼠标左键。
创建连接
在元素E1的输出端和元素E2的输入端之间的连接可以很容易的改变为元素E1的输出
端和元素E3的输入端之间的连接,在E2的输入端上单击,按下鼠标左键,移动鼠标指针到
E3的输入端并释放。
产出连接
171 - -
尚择优选
删除E1的输出端和元素E2的输入端之间的连接有多种方法:
选中元素E1的输出端并按
连接到了多个输入端,那么将会同时删除多个连接。
选中元素E2的输入端并按
用鼠标选中元素E2的输入端,按下鼠标左键并拖动连接从E2的输入端离开,当鼠标左
键在屏幕的自由区域中释放时,连接删除。
'附加''连接标记'
连接也可以用一个连接器(连接标记)表示来替代连接线,在这里唯一的名字连接器添
加到输出和相关的输入端。
在两个元素之间已经存在的连接现在用连接器表示,连接线的输出端被标记并且菜单中
的“扩展”“连接标记”被选中,下面图表显示一个连接在菜单点选择前后的连接情况。
程序给出一个唯一的标准化的名字,开始于M,连接器的名字存储为一个输出变量,它
可以被更改,既可以在输入端更改也可以在输出端更改。
连接器的名字是和连接的输出端的属性相关的并且和它一起保存。
1.在输出端编辑连接器:
如果在连接器中的文本被替代,在输入端的所有相关的连接器都会采用新的连接器名
字。一种情况不会采用,选择的名字已经属于另外的连接器,因为违背了连接器名字的唯一
性。
2.在输入端编辑连接器:
如果连接器中的文本被替换,在其它的POU中相应的连接器也会被替换。在标记连接的
输出端(光标位置4)并且选择菜单点“扩展”“连接标记”后,连接器表示中的连接可以
转换为正常的连接。
改变连接
元素E1的输出和元素E2的输入之间的连接可以被方便的改为元素E1的输出和元素E3
的输入。把鼠标选中E2的输入,然后按住左键移动鼠标到E3的输出位置松开左键。
删除连接
有很多方法来移除元素E1的输出和元素E2的输入:
选择元素E1的输出然后按
个输入,删除情况相同。
选择元素E2的输入然后按
用鼠标选择E2的输入,按住鼠标左键从E2处拖出,在空白处松开鼠标E2就被移除
插入输入/输出"不工作状态"
如果选中一个元素的输入或输出端,相应的输入或输出可以直接插入,编辑器区域中充
满了在键盘上输入的字符串。
执行次序
- 172
尚择优选
元素块、输出、跳转、返回和标签每个都具有一个编号表明了它们执行的顺序,在这个
连续的顺序中,每个元素在运行时被计算。
当元素的编号根据拓扑顺序自动给出(从左到右和从上到下),如果顺序已经改变了,
新元素将接收它的拓扑继承者的编号,并且所有较高的编号增加1,
当它移动时元素的编号保持不变。
顺序影响结果,在一定情况下必须改变顺序。
如果显示了顺序,相应连续执行编号在元素的右上角显示。
参照:
'附加''显示排序'
这个命令用来切换执行顺序显示的开和关闭。默认的设置是显示(在菜单点的附近用一
个ü识别)。
在块、输出、跳转、返回和标签这些元素执行编号的相关顺序出现在元素的右上角。
'附加''排序''拓扑排序'
当执行从左到右并且从上到下执行时,元素按拓扑顺序处理。编号从左到右增加并且元
素从上到下拓扑安排。连接是不相关的,只是元素的位置是重要的。
当使用命令“附加”“排序”“拓扑排序”时,所有选中的元素以拓扑结构安排。在选
择中的所有元素在这个处理过程中从连续处理列表中去掉。元素然后各自地从右下到左上输
入到保留的连续处理过程列表中。每个标记的元素在它的拓扑继承者之前输入到列表中,例
如,当编辑器中的所有元素都按拓扑顺序进行了排序,在拓扑顺序中在元素之前插入的将在
元素之后执行。可以用下面这个例子阐明。
编号为1、2、3的元素被选中。如果命令“Ordertopologically”被选中元素将首先从
连续处理列表中除去。Var3,跳转和AND操作符然后一个接一个插入,Var3放置在标签之
前并且接收编号2,跳转然后被排序并首先接收编号4但是随后在AND插入之后变为5,新
的执行顺序出现:
173 - -
尚择优选
当引入一个新产生的块时,它将在顺序处理列表中默认放置它的拓扑继承者的附近。
'附加''排序''向上移动一步'
除了在连续处理列表中开始处的元素外,用这个命令选中的所有元素将在处理列表中向
前移动一个位置编号。
'附加''排序''向下移动一步'
除了在连续处理列表中末端处的元素外,用这个命令选中的所有元素将在处理列表中向
后移动一个位置编号。
'附加''排序''移动到首前端'
使用这个命令所有选中的元素将会移动到连续处理列表的附近,在选中元素的组内顺序
保持不变,未选择元素的组内的顺序也保持相同。
'附加''排序''移动到末端'
使用这个命令所有选中元素将会移动到连续处理列表的末端,选中元素的组内顺序保持
不变。未选中元素的组内的顺序也保持不变。
'附加''排序''依照数据流排序'
这个命令影响所有的元素。执行顺序由元素的数据流向决定而不是它们的位置决定。
下面的图表显示已经按拓扑结构排列的元素。
- 174
尚择优选
下面是命令选择后的元素排列:
当选中这个命令后,元素将首先按拓扑顺序排列。创建一个新的处理列表。基于已经知
道的输入值,计算机将计算哪个未编号的元素下一步处理。在上面“network”块AND,例
如,当在它的输入端(1和2)的值都已经确定下迅速处理。在块ADD的结果处理后,块
SUB才执行。
最后插入。
'附加''创建宏'
符号:
175 - -
尚择优选
用这个命令,同时选中的多个POU可以组合到一个块中,这个块可以称为一个宏。宏只
能通过复制/粘贴来复制,每个复制的宏成为一个名字可以独立选择的单独的宏。宏不能引
用。被宏的创建删除的所有连接在宏上产生输入或输出针脚。输入端的连接产生输入针脚。
默认的名字出现在针的旁边形式为In
于宏的创建的连接,保留连接标记在宏的针脚上。
首先,宏有默认的名字“MACRO”,可以在宏使用的名字区域中来改变它。如果宏被编
辑,宏的名字跟在POU名字后面将显示在编辑窗口的标题栏中。
例如:
选择
宏:
在编辑器中:
'附加''编辑宏'
符号:
通过这个命令,或在的主干上双击,在相关的POU中的编辑窗口中宏被打开,宏的名字
跟在POU名字的后面显示在标题栏中。
为宏的输入和输出产生的针脚方框在创建过程中可以作为普通POU的输入和输出端处
理。它们也能移动,删除,添加等等,它们的不同之处在于它们怎样显示和有没有位置索
引。对于添加你可以使用按钮(输入)或按钮(输出),这些按钮在菜单栏上是可用
的,针框有圆角,在针框中的文本匹配在宏中显示的针的名字。
在宏方框中的针脚的顺序遵循宏中的元素的执行顺序,低顺序索引在高顺序的前面,高
针脚在低针脚的前面。
在宏内的处理顺序是封闭的,换句话说宏在主POU中的宏的位置处作为一个块来处理,
- 176
尚择优选
管理执行顺序的命令只在宏能起作用。
'附加''扩展宏'
使用这个命令,选中的重新展开并且它里面包含的元素在宏的位置处插入到POU中。与
宏的针脚的连接重新显示就象连接到元素的输入或输出端一样。如果在宏方框的位置处因为
缺乏空间而不能展开宏,宏将放置到右下直到空间可用。
注意:如果工程在版本2.1下保存,宏将都同样地展开。所有的宏在转化为其它的语言
前也都展开。
'附加''后退一级宏','附加''后退所有宏'
符号:
只要宏打开,这些命令在工具栏中也可用。如果彼此互相嵌入,可以转换到下一个高的
或最高的显示级别。
在CFC中的反馈路径
反馈路径只能直接显示在连续功能图编辑器中,不能在通常的功能模块图编辑器中显
示。应该注意块的输出经常携带一个内部中间变量。中间变量结果的数据类型,对于操作
数,从输入的最大数据类型。
常量的数据类型从最小可能数据类型,常量'1'采用数据类型SINT。如果有一个带加号
的反馈和常量'1'被执行,第一个输入给出数据类型SINT和因为反馈第二个是未定义的。因
而内部中间变量只分配给输出变量。
下面的图表显示了一个带反馈的加法和带变量的加法。变量x和y在这里是INT型。
两种加法的区别是:
变量y可以初始化为一个不等于零的值但这不是左边加法的中间变量的情况。
左边加法的中间变量有数据类型SINT,在右边的中间变量有数据类型INT。在调用
129th后,变量x和y有不同的值,变量x,尽管是INT型,包含值127因为中间变量已经
溢出。另一方面,变量y包含值129。
联机模式下的CFC
监视:
输入和输出的值显示在输入或输出方框中。常量不被监视。对于非布尔型变量,方框展
开来适应值的显示。对于布尔型连接如果值为TRUE,变量名和连接显示为蓝色,否则它们
保持黑色。
在TRUE状态时,内部布尔型连接在联机模式下也显示为蓝色。内部的非布尔型连接的
值在一个带圆角的小框中在连接的输出针脚上显示。
177 - -
尚择优选
宏的针脚和输入或输出方框的监视一样:
带连接标记的非布尔型连接在连接标记内显示它们的值。对于布尔型连接,如果线中传
递值TRUE,线和标记名显示为蓝色,否则显示为黑色。
流程控制:
当流程控制为开时,横越的连接标记为工程选项中选择的颜色。
断点:
在所有的有处理顺序索引的元素上设置。程序的处理各自元素的执行之前停止并且
返回标签:
在联机模式下,名字为“RETURN”的跳转标签在第一列中和编辑器中最后元素之后自动
产生,这个标签标记POU的末端,当执行前的分级离开POU时跳转到POU,在宏中没有
RETURN标记插入。
分级:
当使用时,将通常跳转到下一个较高级别索引的元素处,如果当前的元素是一个宏或
POU,那么它的执行分支当有效时,如果一个“跳过”从这里执行,将跳转到宏的顺序索引
跟随的元素处。
切换到POU
快捷方式:
用这个命令选中的POU加载到它的编辑器中,如果光标放置在文本编辑器中的POU名字
上或如果POU框在图形编辑器中被选中,在内容菜单(
命令。
如果你从库中处理一个POU,那么库管理器被调用,相应的POU显示。
6.资源
你需要用资源来配置和组织你的工程文件和追踪变量的值
•工程文件或网络中使用的。
•添加库文件到工程文件中的
•记录在线期间工作的文件
•在工程中为报警处理进行
•配置可编程控制器的资源
- 178
尚择优选
•通过任务来引导创建程序的
•显示变量值和添加默认变量值的
•选择和必要时的确定的目标系统的最终配置
•作为工程选项的
根据在CoDeSys中作出的目标系统和目标设置,在你的工程中也要用的到下列资源。
•用于变量图形显示的采样追踪
•用于在同一个网络中与其它控制器交换数据的变量管理器
•作为控制监视的PLC浏览器
•工具箱?可用性依赖对象系统?用于在CoDeSys内部调用它外部的工具程序
6.1全局变量、变量配置、文件框架
'在全局变量'中的对象
在对象管理器的资源登记卡中,在全局变量文件夹内有二类对象(对象默认值的名字在
圆括号里)。
•?
•?
在这些对象中定义的所有变量在整个工程中被公认。
如果全局变量文件夹未打开(文件夹前面有个加号),可以在该行双击或<回车>来打开
它。
选择相应的对象,用'对象添加'指令先打开以前定义的全局变量的窗口。这个编辑器跟
声明编辑器有同样的工作方式。
多个变量列表
必须在不同的对象中定义,全局网络变量(VAR_GLOBAL),全局网络变量(VAR_GLOBAL,目
标平台专用)和(VAR_CONFIG)。
如果你已经声明了许多全局变量并且想更好地构造全局变量列表,那么你可以创建更多
的变量列表。
在对象管理器中,选GlobalVariables文件夹或一个已有的全局变量的对象。然
后执行'工程''对象添加'指令。给出现在对话框中的对象一个相应的名字。有了这个名字,
将会用关键字VAR_GLOBAL来创建一个新的对象。如果你希望对某个对象进行变量配置,你
可以把相应的关键字变成VAR_CONFIG。
6.1.1全局变量
什么是全局变量
贯穿整个工程众所周知的“标准的”变量,常数或剩余的变量可以被声明为全局变量,
也可以是其他的网络用户交换数据的。
注意:在一个工程中你可以定义一个跟全局变量重名的局部变量。在这种情况下,在
POU的范围内使用局部变量。
不允许两个全局变量有同样的名字。例如,如果你在PLC配置中定义了一个变量
“var1”,同时这个变量也存在于全局变量列表中,那么你将得到编译错误。
参考:
179 - -
尚择优选
网络变量
注意:使用网络变量必须得到目标系统的支持,必须在(范畴网络功能类)中激活它。
通过自动的数据交换(与通过参数管理器的非自动的数据交换比较),在CoDeSys相互
兼容的控制器网络内的几个控制器系统上,可以更新网络变量的值。这不需要控制器特定的
功能,但是,网络用户须为工程中的网络变量使用完全一样的声明列表和相称的转移配置。
为了使前项操作成为可能,建议在创建列表时对每个控制器应用不要用手工输入变量的声
明,而是用一个独立的文件来加载(见'')。
创建全局变量列表
为了创建一个全局变量列表,打开对象管理器中的'资源',选择条目'全局变量',或者
选一个已经存在的列表。接着,选择指令来打开全局变量列表对话框。
如果在对象管理器中标明了一个存在的全局变量列表,那么也可以用指令打开它的对话
框。这个列表的配置显示如下:
创建一个新的全局变量列表的对话框
全局变量列表名称:插入列表名称
链接文件:
文件名:如果有一个输出文件(*.exp)或者是一个DCF文件,这些文件包含了想要的变
量,那么可以对这个文件建立链接。为了做到这些,要在文件名域中插入文件的路径。点击
浏览按钮将得到标准的对话框'选择文本文件'。当读入它们的时候,DCF文件被转换为ICE
格式。
如果希望在每一个工程编译之前从外部文件读取变量列表,那么就激活编译前输入选
项。如果希望在每一个工程编译之前把变量列表写到外部文件,那么就激活编译前输出选
项。
如果点击OK来关闭'全局变量列表'对话框,那么就创建了这个新对象。全局变量列表
在对象管理器中通过标志来标识。你可以用'工程''对象''道具'指令重新打开'全局变量
列表'配置对话框。
网络变量的配置
如果在目标平台设定中激活选项'',那么就可采用按钮<添加网络>。点击这个按钮,对
话框将会加长如上所示。如果没有激活这个选项,那么按钮<添加网络>不起作用。
- 180
尚择优选
连接
设置为网络内的特定变量列表定义数据交换的参数。为了在网络内按要求交换数据,必使相
同变量列表有一致的配置以便跟其他的网络用户相匹配。
如果尚未配置,点击’添加网络’按钮,就可得到一张在UDP网络的情况下,题伪'连
接1(UDP)'的表单。每按一次'添加网络'按钮,便可得到一张’连接n’表单(n是表单序
号)。
网络类型:从列表中选择希望的网络类型。以上列表是由目标系统条目定义的。例如,
"CAN"是CAN网络的缩写,或者,"UDP"是"UDP"传输系统的缩写。
设置:这个按钮用下列配置参数打开<网络类型>的设置对话框。
UDP:
使用标准:如果点击这个按钮,那么端口(port)1202定义为和其他的网络用户进行数据
交换的端口,广播/多路传输地址被设置到"255.255.255.255"上,这意味着,数据交换将在
所有的网络用户之间进行。
端口:写入要求的端口号(按照标准)。确保网络里的其他的节点定义相同的端口!如
果在工程中定义了一个以上的UDP连接,那么根据在这里的输入将自动修改所有的配置集中
的端口号。
广播/多路传输地址:如果要用标准设置,在这里写入代表子网的地址范围的地址,(例
如,如果你想与IP地址197.200.100.x的所有的节点通讯,那么其他地址应
为”197.200.100.255”)。
对于Win32系统,广播/多路传送地址必须和PC配置的TCP/IP的子网掩码相匹配。
‘UDP设置’对话框
CAN控制器索引:通过它传递变量。
在配置变量的传输特性时,下列选项可能被激活或者失效:
变量包:以网络许可的大小大包传输(报文),需要组装变量。如该选项无效,那么就
为每个变量打包。
变量电报号码:第一个信息包的标识号,默认值为1,后续信息包以升序编号。
包含检验:对每个被发送的信息包都要加上校验和接受检查校验。以便确认发送器和接
收器的变量定义是同一个。不会接收校验和不一致的信息包,并将给出否定应答。
使用公认传输:接收器将应答每一个信息。发送器在一个周期内不能得到至少一个应
答,马上就产生错误信息。
读取:读取列表中的变量;如果这个选项无效,通过网络发送的变量将被忽略。
启动时的请求:如果本地节点是个“读”节点(激活选项“读取”),那么一旦重新启
动本地节点,就马上向所有的“写”节点请求实际的变量值然后“写”节点发送这些值,它
181 - -
尚择优选
不同于通常触发通信的其它条件(时间,事件)前提条件:在写节点配置中,必须激活选项
“回复启动请求”!(参看下述内容)。
写入:写变量,应用下列选项:
回复启动请求:如果本地节点是“写”节点(“写”选项已激活)那么要回答一个
“读”节点在启动时的每一个请求(选项导入请求,见上述内容)发送的读入节点要求得到
答复,那意味着,此时,即使任何一个其他定义的传输引起物(时间,或者事件)不能被传
送,实际变量的值也将被传送。
全局传送:在一个间隔后的指定的间隔时间内写变量。(时间表示法T#70ms)。
变换传送:只有当变量的值变化时才写变量。在最小域内可以设置在两次传输之间的最
小时间间隔。
事件传送:一旦插入在可执行变量编程TRUE之后,马上就写列表中变量。
在对象管理器中,全局网络变量列表通过标志来标识。
注意:如果一个网络变量用于多个任务,对传送的时间有下列要求:当访问每个任务
时,要测试决定哪个参数要用于变量值的传输(在'全局变量列表'对话框里配置)。变量值
的传送与否依赖于规定的时间间隔是否已过去。在每个传送开始时,变量的时间间隔计数器
将复位到零。
发送总是由起作用的控制器的运行系统承担。于是不必为数据交换提供专门的控制功
能。
编辑全局变量和网络变量列表
全局变量的编辑器与声明编辑器类似。但是,注意,你不能在这个编辑器中编辑连接外
部变量列表映象的列表!外部变量列表仅仅能在外部被编辑,并且,他们将在每个次打开和
编译工程时被读取。
语句:
VAR_GLOBAL
(*Variablesdeclarations*)
END_VAR
如果目标系统允许,可以只使用网络变量。也可以在这语句中定义网络变量。
例子:用链接一个输出文件*.exp创建的一个网络变量列表,命名为
NETWORKVARIABLES_UDP用加载一个输出文件*.exp创建的一个网络变量列表,命名为
Network_Vars_UDP的网络变量列表的例子:
编辑剩余的全局变量列表
- 182
尚择优选
如果运行系统支持剩余全局变量列表,那么就可以处理剩余变量。剩余全局变量有两种
类型:
保存变量:在CoDeSys中,运行时间系统(off/on)或者''不受控制的停机后,保存变量
保持不变。运行系统(停止,开始)或者'联机''冷启动'或者受控制的停机后,变量保持不
变。
被赋给关键字RETAIN,或者PERSISTENT。
剩余变量的语句定义。
语句:
VAR_GLOBALRETAIN
(*Variablesdeclarations*)
END_VAR
VAR_GLOBALPERSISTENT
(*Variablesdeclarations*)
END_VAR
Networkvariables(targetspecific)arealsodefinedusingthissyntax.
用这个语句也可以定义(指定目标)。
全局常量
全局常量的关键字是CONSTANT。
语句:
VAR_GLOBALCONSTANT
(*Variablesdeclarations*)
END_VAR
6.1.2变量配置
如果把变量定义放在关键字VAR和END_VAR之间,在功能块中,为不完全定义的输入输
出指定地址是可能的。不完全定义的地址用星号识别。
例如:
FUNCTION_BLOCKlocio
VAR
lociAT%I*:BOOL:=TRUE;
locoAT%Q*:BOOL;
END_VAR
这里定义了两个局部I/O变量,一个是局部输入(%I*)另一个是局部输出(%Q*)。
如果你想在对象管理器资源登录卡中为变量配置设定局部I/Os,通常可以应用对象
Variable_Configuration。对象可以重新命名,并且,为变量配置可以创建其它对象。
变量配置编辑器就象声明编辑器那样工作。
局部I/O配置变量必须位于关键字VAR_CONFIG和END_VAR之间。
这样变量的名字由完整的实例路径构成,在路径中用句点把各个POUs和实例名互相分
开。在功能块中,声明必须包括一个这样的地址,它的类(输入/输出)对应于不完全指定
地址(%I*,%Q*)。数据类型也必须和功能块中的声明一致。
因为实例不存在而实例路径无效的配置变量被指示出错。另一方面,如果实例变量无配
183 - -
尚择优选
置也要报告出错。为了收到全部要配置的变量的列表,可以使用'插入'菜单里的子菜单。
变量配置的例子
假设在程序中给出功能块有下列定义:
PROGRAMPLC_PRG
VAR
Hugo:locio;
Otto:locio;
END_VAR
那么正确的变量配置如下:
VAR_CONFIG
PLC_%IX1.0:BOOL;
PLC_%QX0.0:BOOL;
PLC_%IX1.0:BOOL;
PLC_%QX0.3:BOOL;
END_VAR
Assumethatthefollowingdefinitionforafunctionblockisgiveninaprogram:
PROGRAMPLC_PRG
VAR
Hugo:locio;
Otto:locio;
END_VAR
Thenacorrectedvariableconfigurationwouldlookthisway:
VAR_CONFIG
PLC_%IX1.0:BOOL;
PLC_%QX0.0:BOOL;
PLC_%IX1.0:BOOL;
PLC_%QX0.3:BOOL;
END_VAR
参考:
'插入''所有实例路径'
用这个指令,可以产生VAR_CONFIGEND_VAR块,这个块包含了该工程中的全部有效的实
例路径。为了包含已经存在的地址,不需要再入现有的声明。如果工程已被编译(),可以在
变量配置的窗口中找到子菜单。
6.1.3文档框架
如果一个工程要接受多个文档,也许它们附有德语和英语注释,或者,如果想为几个使
用相同的变量名字的类似的工程提供文档,那么,通过用指令创建文档,可以为自己节省很
多工作。
创建的文件可以被载入所希望的文本编辑器,可以被编辑。该文件从DOCUFILE行开
始。接着,是工程变量的列表对每个变量分配了行:VAR行表示一个新变量的开始;下一行
是变量名;最后是空行,你可以用变量的注释来替换这行。你可以简单地删除任何对文档无
- 184
尚择优选
用的变量。如果愿意,可以为工程创建几个文档框架。
为了使用文档框架,给出指令。现在如果向这个工程提供文档,或者打印工程其他部
分,那么在程序文本中,可以把文本框架(docuframe)中产生的注释插入到所有的变量
中。这注释仅仅在打印输出中出现!
'附加''生成文本框架文件''
用这指令来创建文档框架。无论什么时候只要你从全局变量中选择一个对象,这个指令
都在你的控制之下。
打开一个用新名字保存文件对话框。在namefile域中,已经输入了扩展名*.txt。选择
想要的文件名。现在列出工程所有变量的文本文件已经创建完毕。
'附加''连接文本文件''
用这个指令可以选择文档框架。
打开一个用于打开文件的对话框。选择想要的文档框架,点击OK。现在如果向整个工程
提供文档,或者打印工程的某些部分,那么在程序文本中,可以把文本框架中产生的注释插
入到所有的变量中。这注释仅仅在打印输出中出现!
用指令创建一个文档框架。
6.2报警配置
报警配置综述
集成在CoDeSys中的报警系统可以检测关键的过程状态,记录下他们,并且借助可视元
件的帮助,用户可以看见他们。在CoDeSys中或者PLC中可以做报警处理。对于在PLC上的
报警处理,请看目标平台可视化()设置类目。在资源中,可以利用条目'报警配置'来配置
报警系统。
在这里定义报警类()和报警组()。报警类用于对警报的分类,这表示,它把某参数
分配给报警。报警组用于具体配置一个或几个报警(对它们分配某个类和更多的参数)。类
对于构造有效的报警是很有用的。在配置树中,用户通过在报头‘'System'下边插入适当的
条目来定义不同的报警组。
185 - -
尚择优选
在CoDeSys可视化中,为了报警的可视化,可以用报警表””。使用报警表,用户可以
监视和应答警报。
如果报警事件()的历史记录,要写到日志文件上,那么必须定义此文件,并且对每个
警报组必须定义。
当你在资源表中打开报警配置('Alarmconfiguration')的时候,打开带有双分窗口的
对话框'Alarmconfiguration',它相关的操作模式跟PLC配置或任务配置相似。在左边窗口
显示配置树,在右边窗口打开相应的配置对话框。
通过用鼠标单击条目'报警配置'前的加号,打开当前可以利用的配置树。如果你打算创
建新配置,这树将仅仅显示条目'报警分类'和'系统'。
参考:
警报的一般信息,术语
在CoDeSys里,警报系统的使用遵守下列有关报警的通用描述和定义:
•?报警:通常报警被当作特殊的状态(表达值)。
•?优先级:报警优先级,也称为“严重性”,描写报警状态的重要程度。最高的优先
级是“0”,最低的有效的优先级是“255”。
•?报警状态:为报警控制配置的表达式/变量能有下列状态:NORM(没有报警),INTO
(警报刚来到),ACK(警报已经来了,用户已经应答了),OUTOF(报警状态已经终止了,
警报“已经过去”,但是还没被应答!)
•?子状态:报警状况有极限值(Lo,Hi)和超极限值(LoLo,HiHi)。例子:一个表达式
的值上升,首先通过Hi-limit,这样引起Hi-alarm的到来。在警报得到用户应答前,如果
- 186
尚择优选
值继续上升并且超HiHi-limit,那么Hi-alarm将自动被应答,并且,只有HiHi-alarm留
在报警列表中(那是应用警报管理器的内部列表)。在这种情况下,Histate被称为子状
态。
•报警应答:报警的主要的目的是把报警的状态通知用户。在这样做的过程中,必须确
认用户已经注意到这个信息(参看在报警类配置中分配给报警的可能的动作)。为了把报警
从警报列表中除掉,用户必须应答报警。
•??报警事件:警报事件一定不要和警报状况混淆。警报状况可以在更长的时间内有
效,报警事件仅描述瞬时出现的变化,例如,从正常状态变为报警状态。在CoDeSys中事件
的三种类型的报警配置和相应的报警状态用相同的名字(INTO,ACK,OUTOF)。
在CoDeSys中支持下列特征:
•?对单一报警和报警组撤销报警的产生
•?通过定义警报组和优先级来选择要显示的报警
•?存储在警报表中所有警报事件
•?在CoDeSys可视化中的报警表('Alarmtable')元素的可视化
参考:
报警类
报警类用于某警报准则的一般描述,例如如何处理应答(用户确认警报)。一旦某种被
察觉之后,应该马上自动决定执行哪些动作,
的可视化要使用什么样的颜色和位图。在全局性地定义报警类,在配置时,报警类用作
基础配置。
报警类的配置:
在警报配置树中选择条目'报警类'。打开配置对话框'报警类':
187 - -
尚择优选
点击按钮Add创建新的警报类。随即在上边的窗口插入一行,原来在
'Acknowledgement'栏里只有条目“NOACK”(不应答)。在Name栏相应的域中,为警报类
定义一个名字(通过鼠标点击域来打开编辑框),如果必要,在Acknowledgement栏中修改
应答类型。
可采用下列应答:
NO_ACK:不要求用户应答报警
ACK_INTO:(状态"INTO",报警发生)必须由用户确认出现的报警状况。
ACK_OUTOF:(状态“OUTOF”,报警终止)必须由用户确认终止报警。
ACK_ALL:必须由用户的出现和终止。
另外,你可以输入注释(Comment)。追加的报警类条目将被添加在列表的末尾。
用Delete按钮从列表中删除当前选择的条目。
对类分配动作:
在上边窗口定义的每个报警类可以分配给一列动作,发生后,应该马上执行这些动作。
在可能的动作(Possibleactions)列表中选择一个动作,点击按钮">"把它分配给动作
(Assignedactions)域。这个域将最终包括分配给此警报类的动作。通过按钮“>>”你可
以一下子加进全部动作。通过按钮"<"和"<<"可以从已经完成的现有的选择中除去一个或者
所有的动作。对于在'Assignedactions'列表中标明的动作,通过"..."可以打开相应的对话
框,以便定义想要的e-mail设置,打印设置,过程变量可执行程序及信息正文。
支持下列动作类型(可能的动作):
- 188
尚择优选
动作 描述 在相应的对话框中要做的设置:
存储: 报警事件将保存在内部以便分在对话框内报警组定义中进行设置。
发到中。请注意:在这种情况
下必须在的配置中定义记录文
件!
打印: 把信息正文发送给打印机。 Printer:选择一个在本地系统上定义的打印
机;Outputtext:
应该打印的信息正文(见下述内容)
消息: 在当前的报警中,打开消息Message:在消息窗中要显示的消息正文
窗,显示定义的文本。
E-发送包含规定消息的电子邮From:发送者的电子邮件地址;To:接收者
Mail: 件。 的电子邮件地址;Subject:任何主题;
Mesage:消息正文(见下述内容);
Server:电子邮件服务器的名称
变量: CoDeSys程序的变量将得到警Variable:变量名称:通过输入帮助
报状态和消息正文串。 (
示报警状态NORM=0和INTO=1,一个整型变
量指示不报警状态
NORM=0,INTO=1,ACK=2,OUTOF=4;一个字符串
变量得到在域中定义的消息正文;Mesage
(见下述内容)
执行: 一旦报警事件发生后,马上就Executable:要执行的文件名称(例如
开始执行可执行文件。 ),可以使用“...”按钮得到
标准的对话框来选择文件;Parameter:调用
执行文件所需的参数
消息正文的定义:
对于动作类型'信息','打印','Email'或'变量',可以定义信息正文,在报警事件发
生时要输出信息正文。
可以用
在定义报警消息的时候,可以使用下列占位符:
MESSAGE
DATE
TIME
PRIORITY
VALUE
TYPE
CLASS
使用在的配置中为特别的警报定义的消息正文。
日警报状态到达(INTO)的日期。
警报进入的时间。
警报的优先级(对警报组定义)
表达式的当前值(见上述内容)
报警类型(在报警组中定义)
报警类(在警报组中定义)
189 - -
EXPRESSION 引起警报的表达式(在警报组中定义)
尚择优选
TARGETVALUE 报警类型目标值DEV+和DEV-(在警报组中定义)
DEADBAND 报警容差(在警报组中定义)
ALLDEFAULT 输出警报的任何信息,如同在日志文件(历史记录)中行条目描述信
息。
定义警报消息的例子:
为定义消息框,在消息窗中输入下列内容:
此外,当在报警组中定义报警时,在'Message'栏中输入"Temperaturecritical!":
最后警报消息的输出如下:
注意:如果消息正文包括在*.vis-file或内,在工程语言改变的情况下,消息正文也将
受到影响。但是:在这种情况下-象提交到可视化的正文一样,正文必须放在两个"#"之间
(例如,在上面的例子中:"#Temperaturecritical!#"和
"TIME/EXPRESSION:MESSAGE#current#:VALUE",以便将此正文输入到象ALARMTEXT_ITEMs那
样的翻译文件)
在的配置中要定义'Save'动作的日志文件(见6.3.4节)。
对动作的警报事件:
.对每一个动作,要定义在哪个下启动它。
激活要求的事件:
INTO产生报警。Status=INTO。
ACK用户应答已经完成。Status=ACK。
OUTOF报警状态结束。Status=OUTOF。
类的颜色/位图<类名>
每个警报类都可以得到自己的颜色和位图,在可视化元件中,他们将被用于区别报警。
为可能的事件INTO,ACK和OUTOF(见上述内容)选择前景颜色和背景颜色。在颜色符号上
单击鼠标,马上就打开选择颜色的标准对话框。为了选择位图,在灰色矩形框上的点击鼠标
将打开选择文件的标准对话框。
报警组
报警组用于组织可用的警报。每个报警明确的被分配到一个恰当的报警组并且由这个警
- 190
尚择优选
报组来管理。组里的所有报警逗能被分配一个公共的去激励变量(Deactivationvariable)
和若干报警存储用的公共参数。注意,即使是单个报警,也必须在报警组内配置。
通过fFolder元素定义报警组的层次结构。在配置树中选择警报组时,将自动显示对话
框Alarmgroup:
在Description域中,你可以输入警报组名称。
可以定义一个布尔工程变量作为去激励变量(Deactivationvariable)。在这个变量的
上升沿处,关闭组内的所有警报,在下降沿处它重新激活报警。
通过按钮Add,可以把报警添加到报警组。在表格窗口插入新行,并且设置下列参数:
Expression:输入工程变量或者报警设计的表达式(例如,"a+b")。为了正确输入,推
荐使用输入帮助
Type:可以使用如下所列的报警类型。对每种类型注意在该表外作出的相应注释和定
义。
DIG=0数字警报,一旦表达式得到FALSE后马上就报警。
DIG=1数字警报,一旦表达式得到TRUE后马上就报警。
LOLO模拟警报,表达式的值降到报警类型LOLO定义的值以下后马上就报警。你可以定
义一个容差死区(Deadband)。只要表达值在容差的范围内,即使LOLO值降到界限以下,
报警也不被激活。
LO与LOLO相应
HIHI.模拟警报,表达式的值超过报警类型定义的值后马上报警。你可以定义容差死区
(Deadband)。只要表达值在容差的范围内,即使HIHI值超过界限,报警也不被激活。
HI与HIHI相应
191 - -
尚择优选
DEV-目标值的偏差;一旦表达式的值降到报警类型DEV-定义的值加百分比偏差以下就立
即报警。百分比偏差=目标值*(用%表示的偏差)/100。
DEV+目标值的偏差;一旦表达式的值超过警报类型DEV+加百分比偏差定义的值。百分比
偏差=目标值*(用%表示的偏差)/100。
ROC单位时间变动率;表达式的值严重偏离前面的值后马上报警。激活警报的极限值是
通过值的每秒变化(变动率),每分钟变化,或每小时变化来定义。
分类:选择要求的。选择列表将提供所有的类,这些类是在工程的最后保存之前在报警
类配置中定义的。
优先级:可以定义优先级的范围0-152。0是最高的优先级。优先级将影响报警表范围
内的报警排序。
消息:在报警的情况下,为消息框定义正文。消息框由用户用OK来确认,但是,这OK
不会自动应答警报!为了确认(应答)报警,必须访问报警表。通过可视化元素报警表或者
通过进入该表的报警日期,确认(应答)报警是可行的。此日期可以从选择性创建的日志文
件里读取。
钝化:输入一个工程变量,在该变量的上升沿,关闭所有创建的警报。
保存报警
在对话框中,如果把一个存储动作分配给此类,对每个警报组,都可以定义存储报警事
件的文件。
在配置树中选择警报组,打开对话框表‘'Alarmsaving':
可以作下列定义:
文件路径:文件所在的目录路径,这个文件是在文件名称中定义的;通过按钮"...",
你可以得到选择目录的标准对话框。
文件名:保存警报事件的文件名称(例如,"alarmlog")。文件是自动创建的,它在这
里得到定义的名称加附属的数字及扩展名".alm".。数字表示日志文件的版本号。第一个文
件的数子是"0";往后的文件根据定义的文件变动事件创建的文件―被编号为1,2等。
(如,"",")。
文件改变事件:在这里定义引起创建新的报警存储文件的事件。可能的事件有:
Never(无),Hour(一小时后),Week(一周后),Month(一月后),
TriggerVariable(在TriggerVariable域中定义的变量的上升沿),Numberofrecord(超
过了在Numberofrecords中定义的文件记录数)
Triggervariable和Numberofrecords:文件变动事件见上述内容。
- 192
尚择优选
删除旧文件:文件创建后的天数,过了这几天后除了最新的日志文件,删除所有的报警
日志文件。
日志文件(历史)包含下列条目:
(参看栏目类型及两个报警的典型输入)
Date/TimeinDWORD Date Time
1046963332
1046963333
Event Expression Alarmtype Limit Tolerance currentvalue class
-30 5
35
-31
6.3.03 16:08:52 INTO PLC_PRG.b LO
6.3.03 16:08:53 ACK PLC_PRG.n HIHI
Alarm_h
Warnng
在日志文件中可以看到的例子:
1046963332,6.3.0316:08:52,INTO,PLC_5,HIHI,,,,9.00,a_class2,0,
1046963333,6.3.0316:08:53,INTO,PLC_4,ROC,2,,,6.00,a_class2,2,
1046963333,6.3.0316:08:53,INTO,PLC_3,DEV-,,,,-6.00,a_class2,5,
1046963334,6.3.0316:08:54,INTO,PLC_2,LOLO,-35,,3,-
47.00,warning,10,warning:lowtemperature!
1046963334,6.3.0316:08:54,INTO,PLC_1,HI,20,,5,47.00,a_class1,2,tempe
raturetohigh!Acknowledge!
'附加'菜单:设置
在报警配置中,用指令'扩展''设置'打开对话框报警配置设置:
CategorieDate/Time:
在这里设置中报警表达格式。根据下列语句定义格式。破折号和冒号要放在引号内。
日期:dd'-'MM'-'yyyy->如,"-1993"
时间:hh':'mm':'ss->如,"11:10:34"
Language:
在CoDeSys中选择当改变时应该使用的语言文件。注意,为了整个目的,语言文件必须
包括报警配置的文字串的翻译。联系上下文,见下列描述:
-
-
6.3库管理器
库管理器显示连接当前工程的所有库。库的POUs数据类型和全局变量像用户定义的
POUs数据类型和全局变量那样用相同的方式被使用。
用指令'窗口''库管理器'打开库管理器。在工程中贮存了它包含的各库的信息,并且在
‘'扩展库信息'对话框中可看到。打开对话框,选择在库管理器中相应的库的名称,并且执
行指令'附加''特性'。
193 - -
尚择优选
参照:
使用库管理器
把库管理器窗口分为3-4部分。附属于工程的库列在区域的左上方。
在这个区域的下部,根据选择的登录卡,列出了上部区域选定库的POUs,数据类型,可
视化或者全局变量。
双击行或者按
的文件夹前有一个减号。
如果点击鼠标或者用箭头键来选择POU,那么POU的声明将在出现库管理器的右上方;
在右下方是图形显示器,以黑箱的形式来输入和输出。
数据类型和全局变量的声明显示在库管理器的右边。
标准库
带有""的库总是可以使用的。它包含了IEC61131-3要求的全部功能和功
能块作为IEC编程系统的标准的POUs,标准和操作符之间的区别是操作符通过编程系统来
隐含识别,而标准的POUs必须连接到工程中()。
这些POUs的代码作为C-库而存在,是CoDeSys的一个元件。
自定义的库
如果一个工程用它的实体编译并且没有错误,那么可以用'文件'菜单里的指令'另存为'
把它保存在库中。工程本身保持不变。将产生一个附加的文件,这文件有默认的扩展名
".lib"。然后,这个库就像标准库一样可以被使用和访问。
为了达到在其它工程中使用该工程的POUs的目的,把该工程存储为内部库*.lib。然
后,使用库管理器可以把这个库插入到其它工程中。
如果你用其它的(如C语言)来实现POUs,并且想让他们进入库,那么用数据类型外部
库*.lib来存储此工程。你可以得到库文件和另一个带有扩展名"*.h"的文件。这个文件的
结构象C头文件一样并且包含所有POUs,数据类型和全局变量的声明,这些声明被库采
用。如果在工程中使用外部库,那么在仿真方式下将执行POUs程序,这执行是用CoDeSys
- 194
尚择优选
写的;但是在目标方式下,将被处理用C写的程序。
如果你想给库添加许可证信息,那么点击按钮编辑许可证信息...并且在对话框'编辑许
可证信息'里插入相应的设置。参见在在CoDeSys中和的相应的描述
'插入''添加库'
用这个指令,你可以把附加的库插入到工程里。
当执行这个指令时,出现打开文件的对话框。选择你想要的带扩展名"*.lib"的库,点
击OK关闭对话框。现在该库列出在库管理器,你可以象使用用户定义的对象那样使用这些
库对象。
一旦包含需要许可证的库,但是没有发现有效的许可证,马上就得到这样的消息:库仅
仅在仿真模式中可用或当前的设置目标得不到许可证。那时你可以忽略这消息或者启动关于
许可证的相应动作。在编译().期间,无效的许可证将产生错误。在这种情况下双击错误消
息或按
关文档)。
移除库
用指令可以从工程和库管理器中删去库。
'附加''特性'
这个指令将打开对话框'自带库(扩展库)信息'。对内部库你可以发现所有的数据,当
库在CoDeSys中已经创建完成时,这些数据已经插入到中了(包括可使用的许可证信息)。
对外部库,将显示库的名称和路径。
6.4日志记录
日志按时间顺序保存在线期间发生的动作。为达到这个目的,建立了一个二进制日志文
件(*.log)。然后,在外部日志中,用户可以贮存来自相应工程日志记录的摘录。
日志窗口在脱机或在线的模式中打开,于是可以用作直接在线监视器。
参照:
'窗口''日志'
为了打开日志,选择子菜单'窗口''日志'或者在资源表中选择条目'日志'。
在日志窗口中,当前显示的日志文件名出现在log后;如果这是当前工程的日志,将显
示单词"(Internal)"。
在日志记录窗口中显示记录的条目。最新条目总是出现在底端。只显示这样的动作:属
于在菜单的'过滤'域中被激活的类别的动作。
195 - -
尚择优选
关于当前选择条目的可用信息显示在日志窗口的下面:
种类:特定的日志条目属于的类别。可能是下列四种类别:
•?用户动作:用户已经完成了一个在线动作(一般的来自在线菜单)。
•?内部动作:在在线层中已经执行了一个内部动作(例如,删除缓冲器或开始调
试)。
•?状态变化:运行系统的状态已经变化(例如,如果达到断点那么就从运行变为中
断)。
•?异常:发生一个异常,例如通信出错。
描述:动作类型。用户动作跟他们相应的菜单指令有相同的名称;其它的动作是用英语
描述并且跟相应的OnlineXXX()功能有相同的名称。
信息:这个域包含一个在动作期间产生的错误描述。如果没有错误产生,这个域是空
的。
系统时间:动作开始的系统时间,到最近的秒。
连接时间:从在线活动开始测量的时间,到最近的毫秒。
持续时间:用毫秒表示的动作延续时间。
菜单日志
当日志窗口有输入活动时,在菜单条中出现菜单选项Log而不是'扩展'和'选项'里。
菜单包括下列子菜单:
Load…用标准的文件对话框可以加载和显示外部日志文件*.log。此指令不会改写存在
于工程里的日志。如果日志窗口关闭并且稍后再打开,或者启动新的在线活动,那么这个载
入的版本将再一次被工程日志取代。
Save…如果工程日志记录正在显示,那么只能用这个子菜单。它允许工程日志记录的摘
录贮存在外部文件里。因此,将显示下列对话框,在这里可以选择要贮存的在线活动:
- 196
尚择优选
成功的选择后,打开贮存文件的标准对话框('保存日志')。
显示工程日志如果当前显示外部日志,那么只能选择这个指令。它把显示切换到工程日
志。
贮存文件日志记录
不管日志是否贮存在外部文件(见上述内容),工程日志自动贮存在名为
同路径,那么文件保存在存储工程的目录里。
可以在对话框里输入在线活动的最大数。如果在记录期间超过了这个数,那么就删除最
早的那个活动以便为最新的腾出空间。
6.5任务配置
使用任务管理除了声明特定的PLC_PRG程序外,还可以控制工程的处理。
一个任务是一个在IEC程序处理中的时间单位。用名称,优先级和确定触发任务启动的
条件的类型来它。这条件可以通过时间(周期的,随机的)或者通过内部或外部的触发任务
的事件来定义,例如,全局工程变量的上升沿或者控制器的中断事件。
对每个任务,可以设定一串由任务启动的程序。如果在当前周期内执行此任务,那么这
些程序会在一个周期的长度内受到处理。
优先权和条件的结合将决定任务执行的时序。
每个任务可以直接。
对每个任务,可以配置一个(时间控制)。
在中,可以用图表监视任务的处理。
另外,可以把系统条件(例如,开始,停止,重启)直接与工程POU的执行连接起来。
在对象管理器的资源表中可以找到任务配置对象。任务编辑器打开在两分窗口中。
197 - -
尚择优选
在窗口的左边,用配置树描述各任务。在最顶端,你会发现'任务配置'条目。下面有'
系统事件'条目和各个用任务名描述的条目,在每个任务条目下,插入指定的程序调用。每
一行前有一个图标。
在窗口的右边,显示一个属于当前标明的配置树条目的对话框,你可以配置任务属性
(Taskproperties),程序调用(Programcall),定义系统事件(Systemevents)的连接。在配
置对话框中哪个选项可用依赖于目标系统。他们通过在目标文件中引用的描述文件定义。如
果用户特定定义扩展了标准描述,那么那些扩展会显示在窗口右边的一个附加表项'参数'
中。
注意:在几个任务中不要用相同的字符串功能(见),因为这可能由重写引
起的程序错误。
任务配置的工作状态
•在上下文菜单中可找出最重要的指令(鼠标右键)。
•任务配置标题是"任务配置",如果在标题前有加号,那么顺序列表是关闭的。通过在
列表上双击鼠标或者点击
闭列表。对每个任务,有一个附属的调用程序列表。用同样的方式可打开和关闭这个列表。
•用指令,可以插入一个任务。
•用指令,可以在配置树底端插入一个任务。
•用,可以把一个程序调用分配给在配置树中选择的实际任务。
•进而,对于配置树中的每个表项,相应的配置对话框出现在窗口的右边。选项可被激
活/关闭。对编辑域可以输入。取决于配置树中选择的表项,有定义任务属性'任务属性
'(见’)的对话框,定义程序调用'程序调用'(见)或者系统事件表格的对话框。一旦把此窗
口区设置给配置树,配置树立即接受在对话框中作出的设置。
•任务名称或程序名称也可以在配置树中编辑。为此,在名称上点击鼠标或者选择此表
项按
•可以用箭头键选择配置树中的上一个或下一个表项。
- 198
尚择优选
•通过点击任务名或程序名,或者通过按
制框。然后可在任务编辑器中直接改变名称。
'插入''插入任务'或'插入''扩展任务'
用这个指令,可以把新任务插入到任务配置。每个表项由符号和任务名称构成。
如果选择了一个任务或表项'系统事件',那么你可以用指令'插入任务',将一个新的任
务插到被选的任务之后。如果选择输入'任务配置',那么可以用'扩展任务',把一个新的任
务插入到现有的列表的表项底端。由目标系统定义任务的最大数量。注意,可能已经把某个
任务号分配给了PLC配置模块(在中定义)
在插入一个任务时,将打开设置任务属性的对话框:
插入要求的属性:
名称:任务名称,在配置树中用这个名称描述任务;在选择表项上单击鼠标或按
键后,可以编辑名称。
优先权(0-31):(0和31之间的数字;0是最高优先权,31是最低优先权)。
类型:
循环():根据在域'Interval'中的给出的时间定义,周期处理此任务(见下述内
容)。
自动循环():程序启动后,马上就处理此任务,并且在一次运行结束时,自动重启动
一个连
续循环。没有定义循环时间。
触发事件():一旦在Event域中定义的变量达到上升沿马上启动此任务。
触发附加事件():一旦在Event域中定义的系统事件发生后,马上启动此任务。在
选择列表中支持和提供哪些事件依赖于目标系统。(不要和系统事件混淆)。
属性:
间隔(用于'循环'或'自动循环'类型):任务重启动的时间周期。你只要输入一个数字,
199 - -
版权声明:本文标题:【尚择优选】CoDeSys编程教程(全) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1709994490a552738.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论