CODESYS 新建工程、任务调用、编译、调试

发布时间 2024-01-05 10:41:10作者: 一杯清酒邀明月

一.新建工程

1.打开软件(我用的版本是CODESYS V3.5 SP14,后续文章都会基于这个版本)。点击新建工程。

 2.选择工程模板–填写工程名字–选择工程存储位置–点击确定

 3.选择设备(有设备需要添加设备描述文件,没有设备仿真的话就选默认即可)–选择编程语言–点击确定

 4.然后就进入到工程中,可以进行编程操作

 

工程管理栏包括:
PLC_PRG:程序由结构化文本编辑;
任务配置:用来定义控制 PLC_PRG 程序的“MainTask”;
库管理器:包含“I/O Standard.library”及“Standard.library”;“I/O Standard.library”用来进行 I/O 配置;“Standard.library”提供所有符合 IEC 61131- 3 标准的所有函数和功能块,作为 IEC 编程系统的标准 POUs。

二:编写程序
1.设置
Codesys是支持中文编程的,我们点击“工程-工程设置-编译选项-勾选标识符允许非编码字符”-点击确定,就可以支持自定义中文变量名。

 实例:声明了INT类型,变量名为输入;声明了INT类型,变量名为input;

 

2.新建程序组织单元(POU)
程序组织单元(Program Organization Unit, POU)由声明区和代码区组成,是用户程序的最小软件单元,它相当于传统编程系统中的块(Block),按功能程序组织单元(POU)可分为函数(FUN)、功能块(FB)、程序(PRG)。

 (1)函数

 (2)功能块

 (3)对比

 (4)程序

 

 (5)创建原则

 (6)命名

 右键Application-添加对象-POU

 确定程序名-选择类型-选择实现语言(ST语言)-点击打开

 

3.任务配置

一个应用程序只允许有一个任务配置,一个任务配置可以通过配置多个不同优先级的任务来调用不同的程序。

 新建的程序要想运行,需要添加到任务配置
右键任务配置-添加对象-任务

 确定任务名称-点击打开

 设置优先级-设置类型-设置间隔

 a.任务的优先级

 在任务优先级等级分配时,请勿分配具有相同优先级的任务。
a.1不同任务不同优先级不同循环时间分析

 结论:实时性要求越高,优先级越高,时间间隔越小。
b.任务的执行类型有循环、惯性滑行、事件、状态。

 c.1循环时间间隔设置(固定周期循环)

 

固定周期循环可以保持一定的循环时间反复执行程序,即使程序的执行时间发生变化,也可以保持一定的刷新间隔时间。 如果程序实际执行时间在规定的固定周期循环设定时间内执行完,则空余时间用作等待。如应用中还有优先级较低的任务未被执行,则剩下的等待时间用来执行相对低优先级的任务。
c.2惯性滑行

 

该执行方式因为没有固定的任务时间,所以每次执行的时间可能都不一样,不能保证程序的实时性。
d.看门狗
看门狗是一种控制器硬件式的计时设备,看门狗的主要功能是监控程序执行时出现的异常或内部时钟发生的故障。当程序进入死循环时,看门狗计时器就会对系统发出重置信号或停止PLC当前运行的程序。

 

遵循如下时间设定关系以保障程序执行的稳定性和实时性:
看门狗触发时间>固定周期循环时间>程序最大循环时间
注:Codesys采用多任务的方式来执行用户程序的“任务”,而每个“任务”分配了不同的执行周期,有些全局变量可能要在不同的POU之间被访问和修改,于是需要对全局变量进行交互同步,也是在任务的“时间对准点”进行的,在设置循环类型的任务的周期时,呈整数倍数的关系。
f.多子程序的调用
在实际的工程项目中,通常可以将程序按控制流程或者按照设备的对象分割成很多子程序,可以按照各处理单元分别进行编程,这样做主要是使主程序条理更清晰,而且方便今后的调试。

 右键Test_Task-添加对象-程序调用

 

4.掉电保持变量(一个工程只能添加一个)

右键Application-添加对象-persistent变量

 确定变量名为PersistentVars,点击打开。

 

三:编译

3.1无控制器,仿真情况下测试

 点击编译,确保程序没有报错

 在线–点击仿真

 点击登录到

 

结果显示

3.2下载到控制器中运行

 

 

四:调试

 

 

 通过点击单循环、跳过、跳入(单步,快捷键F8)、跳出实现逐行调试;