ABB的PLC的编程资料

ABB的PLC的编程资料
ABB的PLC的编程资料

第5章CoDeSys程序平台

完成PLC的硬件及网络配置即可进入CoDeSys编程平台,进行变量声明、程序编写、下载及调试等工作。

本章将对CoDeSys的编程环境进行概述,并主要介绍程序组织单元(POU)。程序组织单元是一个非常重要的概念,是组成工程的基本结构。任何复杂的工程都是由若干POU组成的。POU包括程序、功能块和功能。

5.1CoDeSys简介

CoDeSys是AC500 PLC基于Windows平台的编程工具,具有以下主要功能及特点:

●符合IEC61131-3标准,采用积木式结构单元POU进行编程;

●支持LD、IL、ST、FBD、SFC、CFC等六种编程语言;

●指令丰富,支持多种数据类型;

●支持用户自定义库;

●具有软件仿真、断点调试及程序检查等功能;

●具有可视化界面、变量跟踪功能,从而可以实现控制过程的可视化;

5.1.1编程界面

激活CoDeSys后,进入以下编程主界面。编程界面由如下部分组成:

工具栏变量区

程序区

消息区

对象组织器

状态栏

●菜单栏:包括文件、编辑、工程、附加、高级、联机、窗口、帮助等菜单。

●工具栏:提供快捷图标(或快捷按钮)。

●状态栏:用于显示工程目前的状态及诊断信息。

●变量区:声明及显示程序中声明的变量。

●程序区:程序编辑和修改区域。

●对象组织器:包含“POUs”、“数据类型”、“可视化界面”和“资源”四部分。

●消息区:显示工程和当前命令的相关信息。

5.1.2对象组织器

主界面左侧的竖条窗口称为对象组织器,由“POUs”、“数据类型”、“可视化界面”和“资源”四部分组成,包含了一个工程所必需的基本对象。

1.POUs

“POUs”部分采用树状结构方式显示文件夹和POU。

2.数据类型

在对象组织器中,选中“数据类型”,弹出“数据类型”定义界面。在此用户可自定义数据类型,如结构体(STRUCT)等,详见6.5章节。

- 69 -

3.可视化界面

在对象组织器中,选中“可视化界面”,弹出“可视化界面”组态画面。界面左侧为可视化界面列表,右侧为可视化编辑区。详细内容见本手册第9章。

4.资源

在对象组织器中,选中“资源”,弹出“资源”管理器。

“资源”部分的主要组成部分如下:

●库:显示当前工程所调用的库,详见5.10.2章节。

●全局变量:声明、显示整个工程中都能使用的全局变量,详见6.3.2章节。

●PLC浏览器:通过输入命令获得诊断结果,详见8.8.4章节。

●采样跟踪:跟踪变量值的变化,详见8.7章节。

●监视和配方管理器:用于“联机模式”下,集中监控同一工程不同程序的变量值,详见8.5章节。

●库文件管理器:为当前工程添加或删除所需的库,显示当前工程所调用的库,详见,详见5.10.3章节。

其功能与“窗口(W)”菜单下“库管理器(L)”的内容一致。

●目标系统设置:进行CPU设置,设定目标平台、存储配置、一般配置、网络功能和可视化。

●任务配置:用于创建任务调用程序,详见5.9章节。

5.1.3界面语言

CoDeSys的界面语言通过执行“工程(Project)/选项(Options)/桌面(Desktop)/语言(Language)”完成设置,其中“Chinese”为中文。如下图所示。(界面语言和联机帮助显示语言统一设置)

5.2程序组织单元(POU)

POU是程序组织单元(Program Organization Unit)的简称,是CoDeSys平台的基本构成元素。POU彼此间能够带有或不带有参数地相互调用。

POU按其功能性的递增顺序,可分为功能(Function),功能块(Function Block)和程序(Program)三种类型。它们在某些特性方面有所不同。

●功能(Function)

可以赋予参数但没有记忆的POU。功能本身不能单独执行,只能由程序或功能块调用执行。当以相同的输入参数调用时,它只是生产相同的结果作为输出且只有一个输出。功能的编程语言是LD、FBD、IL、ST 及CFC,不能选用SFC语言。

●功能块(Function Block)

可以赋予参数并具有记忆的POU。当以相同的输入参数调用时,功能块(例如定时器或计数器)的输出取决于其内部变量(V AR)和外部接口变量的状态,这些状态存储在功能块的实例中。功能块的输入量可以是一个或多个,输出量也可以是一个或多个。功能块的编程语言是LD、FBD、IL、ST、SFC及CFC。

●程序(Program)

程序是唯一可执行的用户程序的主体,程序可以调用功能块、功能和其他程序。“主程序”是该类型POU 的代表。程序是最高层的POU,能存取赋予PLC直接地址的变量,并使它们能为其它POU所存取。程序可以通过任务组态来激活,也可以通过其他程序来调用。程序的编程语言是LD、FBD、IL、ST、SFC及CFC。

- 71 -

一个POU包含类型及名称部分、变量声明部分和代码部分,如下图。用户创建POU时,必须编辑这三部分。

以下为一功能块的实例:

●类型及名称部分:变量区的首行。创建POU时系统自动完成生成。

●声明部分:在变量区创建、显示POU变量。用户可在引用变量之前进行声明,也可以在引用时利用

变量声明对话框随时声明。具体的说明请参见第6章。

●代码部分:在程序区创建,是POU的主体,用户可以选用LD、FBD、IL、ST、SFC及CFC编程语言

进行编写。具体的编程方法请参见第7章。

- 73 -

变量用于初始化、处理和存储用户数据。在每个POU 的声明部分声明变量。对于变量的特性,请参见第6章的详细介绍。

5.4.1 POU 变量的类别

从表中可以看出,程序可以使用所有的变量类别,功能块不能提供全局变量给其他POU ,而功能只允许使用局部和输入变量,它使用功能返回值返回其计算结果。

5.4.2 POU 接口变量的特性

POU 的变量中,除局部变量外,其它类别变量都可用于将数据输入到一个POU 或从一个POU 输出数据,这使得POU 之间可进行数据交换,即POU 接口。

POU 接口可分为以下三部分: ● 调用接口:形式参数(输入和输入/输出变量)。 ● 输出接口:输出变量或功能返回值。 ● 全局接口:全局变量。

5.5 POU 的调用

POU 的调用有以下两种方法: ● 被其他已经调用的POU 来调用。 ● 通过任务配置来调用,这种方法仅限于程序调用。当程序中没有进行任务配置时,系统会自动调用

主程序“PLC_PRG ”。此时,程序中必须有PLC_PRG ,且其不能改名。 POU 的调用遵循以下原则,如下图所示。 ● ● ● 功能可以调用功能。

5.6功能

功能通过代码部分作用于输入变量产生唯一的功能值。功能通常可用作PLC运算指令的扩展。

5.6.1功能的返回值

功能具有一个或任意数量的输入参数,但没有输出参数,只是返回一个功能返回值,即“功能名”。功能返回值可以为任意的数据类型,包括用户自定义的数据类型。

相同的输入只是产生相同的功能返回值。这与调用的频繁程度及何时调用无关。这是因为功能不存储状态信息或内部数据,也就是说它们进行“无记忆”的操作。

5.6.2创建功能

创建功能可选择LD、FBD、IL、ST或CFC编程语言,创建步骤如下:

1.在对象组织器中选中“POUs”,在程序列表中点击鼠标右键,弹出POU管理菜单,选择“添加对象(A)”,

弹出“新建POU”对话框,如下图所示。

2.在弹出的“新建POU”对话框中,“POU类型(Y)”选择“功能(U)”并定义返回类型,“POU语言(G)”可

以选择IL、LD、FBD、ST和CFC之一,“新POU的名称(N)”为功能名,名字尽量采用能反映其实际功能的字符,便于识别。点击“确认”,完成定义关闭“新建POU”对话框。

3.编写功能的具体算法。

本例中创建功能“FUN_TEMP_LD”,返回类型为“REAL”类型,语言选择“LD”。其功能主要是完成比例系数的计算。

●变量区的首行“FUNCTION FUN_TEMP_LD : REAL”是系统自动生成的,其中关键字FUNCTION

为功能标识,FUN_TEMP_LD为功能名称,REAL为返回值类型;

●在“V AR_INPUT”和“END_V AR”之间定义输入变量及其类型;

●在“V AR”和“END_V AR”之间定义局部变量及其类型

编写完毕保存。编译通过后,可以在其它POU中直接调用。调用方法在不同的编程语言中有所不同,请参见第7章的详细介绍。

- 75 -

5.7功能块

功能块是构成PLC用户程序的主要积木式部件。功能块可被程序和功能块调用,自身也可调用功能和其它功能块。

5.7.1创建功能块

功能块本身没有返回值,必须具有输入变量和输出变量。

功能块的编程语言LD、FBD、IL、ST、SFC及CFC可选,功能块的创建和功能类似。

1.在对象组织器中选中“POUs”,在程序列表中点击右键,弹出POU管理菜单,选择“添加对象(A)”,

弹出“新建POU”对话框,如下图所示。

2.在弹出的“新建POU”对话框中,“POU类型(Y)”选择“功能块(B)”,然后进行编程语言的选择和命名。

点击“确认”,完成定义关闭“新建POU”对话框。

3.编写功能块的具体算法。

本例中创建功能块“FBD_TEMP_LD”,其功能主要是产生OFF/ON脉冲,OFF时间由输入变量T1_OFF 设置,ON时间由输入变量T2_ON设置。

- 77 -

变量区的首行“FUNCTION_BLOCK FBD_TEMP_LD ”是系统自动生成的,其中关键字FUNCTION_BLOCK 是功能块标识。

● 在“V AR_INPUT ”和“END_V AR ”之间定义输入类别变量及其类型 ● 在“V AR_OUTPUT ”和“END_V AR ”之间定义输出类别变量及其类型 ●

在“V AR ”和“END_V AR ”之间定义局部类别变量及其类型

5.7.2 功能块的实例

调用功能块,必须对功能块进行实例声明,称为实例化。功能块的实例化与变量的声明是相同的。例如下图显示在POU 的说明部分,FB 实例“LED1”被声明为用户定义的功能块(FB 类型)“FBD_TEMP_LD ”的一个实例。进行实例化后,在声明该实例的POU 中,便可以使用和调用该FB (作为一个实例)。

功能块的调用,只改变功能块实例中的值。并且可通过输入“实例名.变量名”,来调用功能块中的变量。调用方法在不同的编程语言中有所不同,请参见第7章的详细介绍。

5.7.3 功能块实例的作用

我们可以为某功能块声明多个实例,这些实例是独立的。这是因为,在PLC 存储器内部,为每一个实例建立一个存储器。这些存储器包含局部变量值(V AR )和输入或输出变量值(V AR_INPUT ,V AR_OUTPUT ),但不包括输入输出变量值(V AR_IN_OUT )(这些只是指向变量的指针,不是变量值自身)。

对于功能块来说,存储器很主要,因为对于功能块诸如定时器或计数器而言,它们的的特性取决于其内部变量和外部接口变量的状态,而且它们可能会被频繁调用。

例如为上节范例“FBD_TEMP_LD

”声明两个实例,并同时调用,其结果是独立的。见下图,程序中对

功能块输出的上升沿进行加一计数。

此外,大量的输入和输出参数会导致功能块实例过多的存储器开销,使用V AR_IN_OUT代替V AR_INPUT 和V AR_OUTPUT有助于减少对存储器的需要。

5.8程序

功能和功能块构成“子程序”,“子程序”组成PLC的“主程序”。与功能块相比程序具有如下特点。

●程序中允许说明存取与PLC直接地址相关的变量(%I/%Q/%M/%R)

●可以使用全局变量(VAR_GLOBAL)

●程序可以通过其他程序来调用,也可以通过任务组态来激活。

5.8.1创建程序

程序的声明开始于关键字PROGRAM,结束于END_PROGRAM。

程序的编程语言是LD、FBD、IL、ST、SFC及CFC,创建、编写和调试程序的步骤如下:

1.在对象组织器中选中“POUs”,在程序列表中点击鼠标右键,弹出POU管理菜单,选择“添加对象(A)”,

弹出“新建POU”对话框,如下图所示。

2.在弹出的“新建POU”对话框中,“POU类型(Y)”选择“程序(P)”,然后进行编程语言的选择和命名。

点击“确认”,完成定义关闭“新建POU”对话框。

3.编写程序的具体算法。

本例中创建程序“PRG_TEMP1_LD”,其功能主要是产生OFF/ON脉冲,OFF时间由输入变量T1_OFF 设置,ON时间由输入变量T2_ON设置,与5.7.1章节创建的功能块相同,见下图。

●变量区的首行“PROGRAM PRG_TEMP1_LD”是系统自动生成的,其中关键字PROGRAM是

程序标识,PRG_TEMP1_LD是程序名。

●在“V AR_INPUT”和“END_V AR”之间定义输入类别变量及其类型

●在“V AR_OUTPUT”和“END_V AR”之间定义输出变类别量及其类型

●在“V AR”和“END_V AR”之间定义局部类别变量及其类型

编写完毕保存。编译通过后,可以在其它程序中直接调用。调用方法在不同的编程语言中有所不同,请参见第7章的详细介绍。

5.8.2调用程序

程序是唯一可执行的POU。程序可以被其它程序调用,但不允许在功能中调用程序。

程序在工程文件中是全局的,因此它只需使用一次。需要多次同时调用的POU不应声明为程序。例如程序中多次调用上例程序“PRG_TEMP1_LD”,其结果不是独立的,见下图。

- 79 -

结果之间的干扰是由于程序“PRG_TEMP1_LD”含有局部变量,而且系统不会为程序的每次调用创建独立的存储区。

5.8.3主程序PLC_PRG

新建工程时系统默认建立程序“PLC_PRG”,该程序是一个特殊的POU。当用户不进行任务配置时,系统默认该程序为主程序,以10ms为周期调用该POU(优先级为10)。此时,工程必须以PLC_PRG为主程序,不能删除和更改其名称,通过它来实现对其他程序的调用,如下图所示。

调用其它程序

5.9任务配置

通过任务配置,实现对工程中任意程序的调用,是CoDeSys编程平台软件程序调用的另一种方式。

系统在任务调度时,工程既可调用单一的任务并由该任务调用任意程序,再由该程序调用其他程序;也可以调用多个任务,每个任务调用不同的程序。

对于AC500-eCo CPU,除了中断任务只支持1个任务调用,因此一般采用系统默认的调用方式,即以10ms 为周期调用主程序PLC_PRG,由该程序调用其他POU。当用户程序较大,CPU的负荷超过70%时,应该在任务配置中延长任务周期时间。

5.9.1配置任务

在“资源”选项卡中双击“任务配置”,右侧弹出任务配置窗口。将鼠标移到右侧窗口中的“任务配置”项上,点击鼠标右键,弹出菜单,如下图所示。

点击“添加任务”,弹出任务属性窗口,如下图所示。在该窗口中,分别填入“名称”、“优先权”、“类型”、“属性”等信息。

1.名称

任务的名字,以字母加数字的方式填写,如所示的任务名称Task。

2.优先权

●任务的优先级通过1-31的数字体现,1为最高优先级,31为最低优先级。

● 1 – 9: 用于高优先级任务,这些任务一般由外部事件触发,且要求其执行时间较短。

●10 – 31: 常规任务。

- 81 -

3.类型(触发条件)

●周期():周期地处理任务,运行周期通过“属性”中的“间隔”定义,如上图。

●自由循环():只要启动,就处理任务,运行一次后自动重新启动。

●事件触发():某个全局变量出现上升沿(0 / 1)称为一个事件,此事件发生后立即启动配置的

对应任务。事件通过“属性”中的“事件”定义,如下图。点击提示按钮“”,打开“输入助手”对话框,选择所需的全局变量,点击“确认”按钮返回,配置完成。

●外部事件触发:某个中断通道出现上升沿(0 / 1)称为一个外部事件。此外部事件发生后立即启动

配置的对应任务。外部事件用于触发具有较高优先级的任务,且要求任务的服务程序短小简单。外部事件通过“属性”中的“事件”定义,如下图。可用的外部事件的种类和多少取决于AC500 PLC CPU的型号。

4.属性

●间隔:当“类型”中选择“周期”时,用于填入运行周期。任务包含的程序运行的周期根据控制速

度的需要填写,填写时注意在前面加“t#”(时间变量的固定格式)此处不区分大小写,单位可选ms(毫秒)、s(秒)、m(分钟)、h(小时)、d(天)等。

●事件:当“类型”中选择“事件触发”或“外部事件触发”时,用于选择事件的优先级属性。

5.任务监视

可为每个任务配置一个时间监视器。

●激活看门狗: 一旦任务处理时间长于设定时间(看门狗时间设定),任务终止并产生错误状态。

●看门狗时间设定(例如: t#200ms):在此输入任务的最大运行时间,当超过该值时,根据当前设定的敏感

性激活看门狗事件。看门狗事件属于系统事件,系统事件的配置请参见下节。

●敏感性: 看门狗事件触发前连续超过最大运行时间的次数(敏感性为0表示取消看门狗)。

- 83 -

5.9.2 配置程序

任务配置完成后,即可为任务配置所需调用的程序,步骤如下: 1. 选中任务(任务名出现方框),通过“插入/添加程序调用”菜单弹出“程序调用”窗口。如下图所示。

2. 在“程序调用”窗口中点击程序名栏右侧的按钮“ ”,得到所有程序列表,从中选择所需的调用

程序,如下图所示。点击“确认”按钮返回,程序即被任务调用。

下例图表明,程序“PLC_PRG ”被任务“T ask”调用,“T ask”的优先级为“10”,时间周期为“30ms”

5.9.3 系统事件

用系统事件而不是任务也可以调用程序。可用的系统事件的种类和多少取决于AC500 PLC CPU 的型号。当相应事件触发时,调用相应的事件。

配置系统事件的步骤如下:

1. 点击窗口中“任务配置”下的“系统事件”,右边窗口显示所有可用的系统事件,如下图所示。

2. 在右边窗口中选择需要使用的系统事件,即在系统事件的前面方框里打勾,然后在其后面的“调用的

POU”处,填入当事件触发时需要调用的程序。为此,使用功能键或者手工输入已经存在的程序的名称。也可以输入尚未存在的程序的名称,然后点击“创建POU ”按钮,系统将自动在对象管理器中插入此程序。事件需要的输入输出参数自动定义在POU 声明中。(系统事件窗口的下方,用图形显示当前选择的事件所要求的接口参数。)

5.9.4多任务处理

配置两个以上的任务称为多任务处理。AC500 系列PLC支持多任务处理,但是可处理任务的数量取决于AC500 PLC CPU的型号。

任务运行遵守以下规定

●只要条件满足,则相应的任务将被执行;

●假如多个任务具有有效的要求,那么高优先权的任务可中断那些较低优先级的任务;

●假如多个任务同时具有有效条件并且优先权相等,那么已经等待最长时间的任务被最先执行;

●程序调用的过程将根据它们在任务配置中的顺序从上到下执行。

例如,在同一时间t1,存在3个任务同时有效,执行顺序如下图。

5.9.5联机显示任务执行状态

如果PC机与PLC成功建立通讯即进入联机模式,任务配置窗口可实时显示各任务的运行状态,如下图所示。

如果某任务的扫描周期过长应及时调整任务配置,避免CPU负荷过大或引发看门狗超时。

5.9.6CoDeSys指令系统概述

可编程控制系统中,使CPU完成某种操作或实现某种功能的命令及多个命令的组合称为指令,指令的集合称为指令系统。AC500系列PLC为用户提供了丰富的指令。

- 85 -

5.9.7指令分类

AC500指令按照实现方式的不同分为功能和功能块两类。以功能方式实现的指令(以FUN标注),在使用的时候无需声明。以功能块方式实现的指令(以FB标注),在使用的时候需声明实例名。常用基本指令的实现方式可参考下表。

5.9.8指令库

库是指令的集合,所有的库文件均以“库名.lib”的方式命名。例如标准库(Standard.lib)、应用库(Util.lib)等。建立工程时有些库文件会自动加载到工程当中(如标准库(Standard.lib)及与硬件配置对应的应用库),可直接调用。而附加库文件则需要用户手动添加后才可调用。

5.9.9库文件管理器

CoDeSys中通过库文件管理器来管理库文件,库文件管理器窗口如下图所示。

库文件管理器窗口分为“库列表”、“指令”、“变量声明”和“指令图形”这四部分。

●库列表列出当前工程中已添加的所有库文件。

●指令列出所选库文件中包含的指令并按类分别列出。

●变量声明列出所选指令的变量声明。

●指令图形显示所选指令的图形,左边为输入端,右边为输出端。

通过库文件管理器可实现以下功能:

1.打开库管理器

●点击编程界面菜单拦的“窗口(W)”,鼠标左键点击“库文件管理器(L)”,如下图。

- 87 -

相关主题
相关文档
最新文档