CoDeSys入门实战一起学习(二):从概念到创建并运行第一个 CoDeSys 工程
前言上一篇我们已经完成了 CoDeSys 工程的创建,这次要进入核心环节 —— 编写 PLC 程序!本次将用结构化文本(ST 语言)实现 “输入值 + 2 输出” 的功能,全程拆解变量声明、功能块创建、程序代码编写的完整流程,每个步骤都配详细说明,新手也能轻松跟上~
一、核心目标
本次编写的程序包含两部分:
主程序 PLC_PRG:声明计数器变量、功能块实例,调用 FB1 并接收输出结果;功能块 FB1:接收输入值,加 2 后输出给 PLC_PRG。
最终实现逻辑:输入值11 → FB1(+2)→ 输出结果13,同时 PLC_PRG 中的计数器变量自动累加。
二、第一步:在 PLC_PRG 中声明变量(两种方式可选)
PLC_PRG 是工程默认创建的主程序,所有变量需在声明区(VAR-END_VAR 之间)定义,支持手动声明和自动声明两种方式,下面分别讲解:
方式 1:手动声明变量(推荐新手先掌握)
打开 PLC_PRG 编辑器:在设备视窗的设备树中,找到「应用」下的「PLC_PRG」,双击打开 ST 语言编辑器;
认识编辑器布局:编辑器上半部分是「声明部分」(用于定义变量),下半部分是「实现部分」(用于写执行代码),中间有可调分割线;
[*]手动声明变量:
将光标移到VAR和END_VAR之间,按回车插入空行;依次声明 3 个变量,语法格式:变量名: 数据类型;(注意冒号后有空格,结尾必须加封号):
注释用//开头,会被编译器忽略,仅用于说明变量功能,建议养成写注释的习惯。
FB1未创建报错
方式 2:自动声明变量(高效快捷,推荐熟练后使用)
如果不想手动写声明,可直接在实现部分写代码,系统会自动补全声明,步骤如下:
直接在 PLC_PRG 的「实现部分」输入代码(先不用管变量是否声明):输入完成后按回车,系统会弹出「自动声明」对话框 —— 未声明的变量(ivar、fbinst、erg)会自动识别;
[*]配置变量信息:
变量名:系统已自动识别,无需修改;类型:分别选择INT(ivar、erg)、FB1(fbinst);初始值:默认留空即可(计数器 ivar 无需初始值,会自动从 0 开始);注释:可输入变量说明(如 “计数器变量”),无需加//,系统会以 XML 格式自动添加到声明区,方便后续文档生成;
点击「确定」,系统会自动在声明区补全所有变量声明,注释也会同步添加,效率超高!
ivar := ivar + 1;
fbinst(in:=11, out=>erg);
三、第二步:编写 PLC_PRG 的实现代码(主程序逻辑)
变量声明完成后,在编辑器的「实现部分」(分割线下方)输入执行代码,实现计数器累加和功能块调用:
1. 代码编写
直接复制以下代码到实现部分,每行都附详细注释:
2. 代码语法说明
赋值运算符::= 表示 “将右边的值赋给左边变量”(ST 语言特有,区别于 C 语言的=);功能块调用格式:实例名(输入参数:=值, 输出参数=>接收变量),输入用:=,输出用=>,参数之间用逗号分隔;注释:// 后面的内容为单行注释,编译器不执行,用于说明代码功能,必须加在代码行末尾或单独一行。
四、第三步:创建功能块 FB1(核心逻辑实现)
功能块(FB)是可复用的编程单元,本次 FB1 的功能是 “输入值 + 2 输出”,创建步骤如下:
1. 新建功能块 FB1
点击顶部菜单栏【工程】→【添加对象】,打开「添加对象」对话框;
[*]左侧选择「POU」(编程对象),右侧配置:
POU 名称:输入FB1(必须与 PLC_PRG 中声明的实例类型一致);类型:选中「功能块」(Function Block);实现语言:选择「结构化文本 (ST)」;
点击「打开」,系统会自动创建 FB1 的编辑窗口。
2. 声明 FB1 的变量(输入 / 输出 / 内部变量)
功能块的变量分为输入(VAR_INPUT)、输出(VAR_OUTPUT)、内部变量(VAR)三类,需分别声明:
[*]语法说明:
VAR_INPUT:仅用于接收外部输入的变量,不能在功能块内部修改;VAR_OUTPUT:用于向外部输出结果的变量,由功能块内部赋值;VAR:功能块内部使用的变量,外部无法访问,这里给 ivar 赋初始值 2(:= 是赋值运算符)。
3. 编写 FB1 的实现代码(核心逻辑)
在 FB1 编辑器的「实现部分」输入以下代码,实现 “输入值 + 2” 的功能:
out := in + ivar; // in(外部输入) + ivar(内部固定值2),结果赋给out输出
逻辑解读:当 PLC_PRG 调用 FB1 时,传入in=11,FB1 内部计算11+2=13,再通过out变量将 13 返回给 PLC_PRG 的erg变量。
编译无报错
五、完整代码汇总
1. 主程序 PLC_PRG 完整代码
PROGRAM PLC_PRG
VAR
ivar: INT; // 计数器变量,每次执行自增1
fbinst: FB1; // FB1功能块实例
erg: INT; // 接收FB1输出的结果变量
END_VAR
// 计数器自增
ivar := ivar + 1;
// 调用FB1,输入11,输出结果存入erg
fbinst(in:=11, out=>erg);
2. 功能块 FB1 完整代码
FUNCTION_BLOCK FB1
VAR_INPUT
in: INT;// 输入变量
END_VAR
VAR_OUTPUT
out: INT; // 输出变量
END_VAR
VAR
ivar: INT := 2; // 内部固定值2
END_VAR
// 核心计算逻辑:输入值+2输出
out := in + ivar;
六、关键语法 & 注意事项(新手必看)
[*]变量声明规则:
变量名区分大小写(ivar和Ivar是两个不同变量);数据类型必须匹配(如 FB1 的输入变量是 INT,PLC_PRG 传入的 11 也是整数,不能传字符串);功能块实例的类型必须与功能块名称一致(fbinst: FB1不能写成fbinst: fb1)。
[*]ST 语言基础语法:
赋值用:=,不能用=(=在 ST 中是比较运算符);语句结尾必须加封号;,否则编译报错;注释用//(单行注释),多行注释用(* ... *)。
[*]功能块与主程序的关系:
功能块是可复用的 “模块”,可以被多个主程序调用;调用功能块时,输入参数用:=赋值,输出参数用=>接收结果;功能块的内部变量(如 FB1 的 ivar)仅在内部生效,外部无法修改。
[*]编译检查:
代码编写完成后,点击工具栏的「编译」按钮(图标为锤子);如果有语法错误,编辑器会在下方提示错误位置和原因,按提示修改即可。
七、下一步:程序下载与监控
代码编写完成后,就可以将程序下载到 PLC(或软件自带的模拟运行系统)中运行了!下一篇我们将详细讲解:
如何通过 Gateway Server 连接设备;程序下载与运行操作;在线监控变量变化(查看 ivar 的计数过程和 erg 的输出结果)。
页:
[1]