CoDeSys是可编程逻辑控制PLC的完整开发环境(CoDeSys是Controlled Developement System的缩写),在PLC编程时,CoDeSys为强大的IEC语言提供了一个简单的方法,系统的编辑器和调试器的功能是建立在高级编程语言的基础上(如Visual C++)。
如何构建一个工程?
一个工程放在以工程命名的文件中,新工程中创建的第一个程序组织单元POU自动命名为PLC_PRG,程序从这里开始执行(相当于C程序中的主函数),从这一点能够访问其它的POUs(程序, 功能块 和 功能)。
一旦定义了一个任务配置,就不必创建程序PLC_PRG 了。
在工程中有不同的对象:POUs、数据类型、可视化和资源。
对象管理器中包含了工程中的所有对象。
一个项目置于一个在项目后期命名的文件内。首先打开一个默认的 “Task
Configuration(任务配置)”。任务名是“Standard(标准)”。在一个新
项目中建立的第一个 POU (程序组织单元)将自动地命名为 “MAIN <主程
序)”。可以在任务配置中重新命名这个 POU。
Codesys PLC Control 能够区分项目中不同类型的对象:POU,数据类型和资源。对象管理器 (ObjectOrganizer)包括一个表,该表列出了项目中所有的对象。
首先,你应该选择目标系统。然后配置任务。可以建立解决你的问题所需要
的 POU。现在你可以应用所期望的编程语言对你所需要的 POU 进行编程。一旦编
程完成,你就可以编译该项目,并修改可能存在的任何错误。一旦修改完成所有的错误,联机 PLC 并将你的项目“下载”到PLC内。Codesys PLC Contro1 处于“联机”模式。测试项目是否为正确顺序。为此,手动设置输入变量并观察输出是否为期望值。你还可以观察 POU 中本地变量的数值顺序。在“Watch and Receipt Manager(监视和接收管理器)”中,可以配置想要检查的数据记录。
如何测试工程?
一旦排除了所有的错误,激活仿真模式,登录仿真的PLC并在PLC中“加载”工程文件,此时处于联机模式。
现在打开一个PLC配置的窗口测试工程的时序正确性,手动为此输入输入变量,观察输出变量是不是所期望的。可以观察POU中的局部变量的序列值,在监视和接收管理器中可以配置你希望检查的值的数据记录。
调试
可以在程序出错的地方设置断点。当程序运行后停在断点处时,可以及时检查在这个点处所有变量的值,通过一步一步(单步) 执行,可以检查程序的逻辑正确性。
附加的联机功能
可以设置程序变量并输入输出某些值。
可以通过流程控制来检查那些程序行已完成运行。
日志文件按照时间的顺序记录了联机模式下的操作以及用户行为和内部进程的情况。
如果在目标设置中激发了采样追踪,那么允许在一个较长的过程中来追踪和显示变量值的真实变化过程。
PLC浏览器是目标系统的一个特殊功能,它能够用来向PLC请求某些信息。
当工程完成了建立和测试后,它也能够装载到硬件中并进行测试。和仿真模式下有相同的联机功能。
附加的CoDeSys功能
整个工程可以在任何时候文档化或导出到一个文本文件中。
为了通讯的目的,CoDeSys有一个符号接口和一个动态数据交换(DDE)接口。网关服务器和OPC服务器和动态数据交换服务器是CoDeSys的标准安装软件包的组件。
使用恰当的目标设置能够把相同的CoDeSys工程加载到不同的目标系统中,可以通过目标文件来加载这些目标设置。
通过当前的目标设置来激活网络全局变量和参数管理器。可以在控制器网络中交换数据。
通过ENI服务器,用工程接口能够访问任何我们所期望的源代码管理程序。ENI服务器是个独立运行的程序,CoDeSys的程序组织单元和编译文件可以以文档方式存于数据库中,它们能够被ENI服务器的客户端访问到。这允许在一个工程文件的工作过程中进行多用户操作,它为CoDeSys和其它工具提供了一个公用数据缓冲池而且它使版本管理成为可能。
工具:这个功能性也是与目标有关的,它允许启动CoDeSys工程中的特殊目标执行文件,除此之外还可以定义要被装载到控制器中的这些文件,它与外部工具的联系可以在目标文件中预定义或者插入到工程资源树中。
CoDeSys的可视化可以处理象网页可视化或目标可视化,这样可以通过因特网或者PLC监视器的运行来展示可视化。
一个工程包含了PLC程序中的所有对象,工程存储在以工程命名的文件中,工程中包含下列对象:POU,数据类型,可视化,资源和库
POU(程序组织单元)
功能、功能块、程序是程序组织单元,它们能够通过动作来增补,每一个程序组织单元都包含一个定义部分和主体部分,主体部分可以用IEC的语言来编写,这些语言包括指令列表,结构化文本,顺序功能图,功能模块图,梯形图或连续功能图表。
CoDeSys支持所有IEC标准的POU,如果你想在你的工程文件中使用这些POU,必须在你的工程文件中包含标准库文件standard.lib。
POU可以调用其它的POU,但递归调用是不允许的。
功能
一个功能是一个POU,它正确地产生一个数据元素(可以包含若干元素,比如,字段或者结构体)在处理过程中,可以用文本化语言中的表达式中的一个操作数来调用它。
在声明一个功能的时候,一定要给它一个类型,这就是说,在功能名后面加上一个冒号然后跟一个数据类型。
一个正确的功能声明可以参考下面的例子:
FUNCTION Fct: INT
另外,必须分配给功能一个结果,即把功能名作为一个输出变量
功能的声明从关键字FUNCTION开始。
下例是在指令列表(IL)中的一个功能,它声明了三个输入变量:
前两个变量的相乘然后除以第三个变量。功能返回此操作的结果。
声明部分:
FUNCTION Fct: INT
VAR_INPUT
PAR1:INT;
PAR2:INT;
PAR3:INT;
END_VAR
程序部分:
LD PAR1
MUL PAR2
DIV PAR3
ST Fct