清远市网站建设_网站建设公司_测试上线_seo优化
2026/1/11 15:34:45 网站建设 项目流程

前言

上一篇我们已经完成了 CoDeSys 工程的创建,这次要进入核心环节 —— 编写 PLC 程序!本次将用结构化文本(ST 语言)实现 “输入值 + 2 输出” 的功能,全程拆解变量声明、功能块创建、程序代码编写的完整流程,每个步骤都配详细说明,新手也能轻松跟上~

一、核心目标

本次编写的程序包含两部分:

  1. 主程序 PLC_PRG:声明计数器变量、功能块实例,调用 FB1 并接收输出结果;
  2. 功能块 FB1:接收输入值,加 2 后输出给 PLC_PRG。

最终实现逻辑:输入值11 → FB1(+2)→ 输出结果13,同时 PLC_PRG 中的计数器变量自动累加。

二、第一步:在 PLC_PRG 中声明变量(两种方式可选)

PLC_PRG 是工程默认创建的主程序,所有变量需在声明区(VAR-END_VAR 之间)定义,支持手动声明和自动声明两种方式,下面分别讲解:

方式 1:手动声明变量(推荐新手先掌握)
  1. 打开 PLC_PRG 编辑器:在设备视窗的设备树中,找到「应用」下的「PLC_PRG」,双击打开 ST 语言编辑器;
  2. 认识编辑器布局:编辑器上半部分是「声明部分」(用于定义变量),下半部分是「实现部分」(用于写执行代码),中间有可调分割线;
  3. 手动声明变量:
    • 将光标移到VAREND_VAR之间,按回车插入空行;
    • 依次声明 3 个变量,语法格式:变量名: 数据类型;(注意冒号后有空格,结尾必须加封号):

    • 注释用//开头,会被编译器忽略,仅用于说明变量功能,建议养成写注释的习惯。
    • FB1未创建报错
方式 2:自动声明变量(高效快捷,推荐熟练后使用)

如果不想手动写声明,可直接在实现部分写代码,系统会自动补全声明,步骤如下:

  1. 直接在 PLC_PRG 的「实现部分」输入代码(先不用管变量是否声明):
  2. 输入完成后按回车,系统会弹出「自动声明」对话框 —— 未声明的变量(ivar、fbinst、erg)会自动识别;
  3. 配置变量信息:
    • 变量名:系统已自动识别,无需修改;
    • 类型:分别选择INT(ivar、erg)、FB1(fbinst);
    • 初始值:默认留空即可(计数器 ivar 无需初始值,会自动从 0 开始);
    • 注释:可输入变量说明(如 “计数器变量”),无需加//,系统会以 XML 格式自动添加到声明区,方便后续文档生成;
  4. 点击「确定」,系统会自动在声明区补全所有变量声明,注释也会同步添加,效率超高!

ivar := ivar + 1;

fbinst(in:=11, out=>erg);

三、第二步:编写 PLC_PRG 的实现代码(主程序逻辑)

变量声明完成后,在编辑器的「实现部分」(分割线下方)输入执行代码,实现计数器累加和功能块调用:

1. 代码编写

直接复制以下代码到实现部分,每行都附详细注释:

2. 代码语法说明
  • 赋值运算符::=表示 “将右边的值赋给左边变量”(ST 语言特有,区别于 C 语言的=);
  • 功能块调用格式:实例名(输入参数:=值, 输出参数=>接收变量),输入用:=,输出用=>,参数之间用逗号分隔;
  • 注释://后面的内容为单行注释,编译器不执行,用于说明代码功能,必须加在代码行末尾或单独一行。

四、第三步:创建功能块 FB1(核心逻辑实现)

功能块(FB)是可复用的编程单元,本次 FB1 的功能是 “输入值 + 2 输出”,创建步骤如下:

1. 新建功能块 FB1
  1. 点击顶部菜单栏【工程】→【添加对象】,打开「添加对象」对话框;
  2. 左侧选择「POU」(编程对象),右侧配置:
    • POU 名称:输入FB1(必须与 PLC_PRG 中声明的实例类型一致);
    • 类型:选中「功能块」(Function Block);
    • 实现语言:选择「结构化文本 (ST)」;
  3. 点击「打开」,系统会自动创建 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;

六、关键语法 & 注意事项(新手必看)

  1. 变量声明规则
    • 变量名区分大小写(ivarIvar是两个不同变量);
    • 数据类型必须匹配(如 FB1 的输入变量是 INT,PLC_PRG 传入的 11 也是整数,不能传字符串);
    • 功能块实例的类型必须与功能块名称一致(fbinst: FB1不能写成fbinst: fb1)。
  2. ST 语言基础语法
    • 赋值用:=,不能用==在 ST 中是比较运算符);
    • 语句结尾必须加封号;,否则编译报错;
    • 注释用//(单行注释),多行注释用(* ... *)
  3. 功能块与主程序的关系
    • 功能块是可复用的 “模块”,可以被多个主程序调用;
    • 调用功能块时,输入参数用:=赋值,输出参数用=>接收结果;
    • 功能块的内部变量(如 FB1 的 ivar)仅在内部生效,外部无法修改。
  4. 编译检查
    • 代码编写完成后,点击工具栏的「编译」按钮(图标为锤子);
    • 如果有语法错误,编辑器会在下方提示错误位置和原因,按提示修改即可。

七、下一步:程序下载与监控

代码编写完成后,就可以将程序下载到 PLC(或软件自带的模拟运行系统)中运行了!下一篇我们将详细讲解:

  1. 如何通过 Gateway Server 连接设备;
  2. 程序下载与运行操作;
  3. 在线监控变量变化(查看 ivar 的计数过程和 erg 的输出结果)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询