2026/4/15 16:21:17
网站建设
项目流程
网站要流量有什么用,我想给网站网站做代理,wordpress 首页图没了,效果图制作公司哪家好前言上一篇我们已经完成了 CoDeSys 工程的创建#xff0c;这次要进入核心环节 —— 编写 PLC 程序#xff01;本次将用结构化文本#xff08;ST 语言#xff09;实现 “输入值 2 输出” 的功能#xff0c;全程拆解变量声明、功能块创建、程序代码编写的完整流程#xff…前言上一篇我们已经完成了 CoDeSys 工程的创建这次要进入核心环节 —— 编写 PLC 程序本次将用结构化文本ST 语言实现 “输入值 2 输出” 的功能全程拆解变量声明、功能块创建、程序代码编写的完整流程每个步骤都配详细说明新手也能轻松跟上一、核心目标本次编写的程序包含两部分主程序 PLC_PRG声明计数器变量、功能块实例调用 FB1 并接收输出结果功能块 FB1接收输入值加 2 后输出给 PLC_PRG。最终实现逻辑输入值11 → FB12→ 输出结果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会自动识别配置变量信息变量名系统已自动识别无需修改类型分别选择INTivar、erg、FB1fbinst初始值默认留空即可计数器 ivar 无需初始值会自动从 0 开始注释可输入变量说明如 “计数器变量”无需加//系统会以 XML 格式自动添加到声明区方便后续文档生成点击「确定」系统会自动在声明区补全所有变量声明注释也会同步添加效率超高ivar : ivar 1;fbinst(in:11, outerg);三、第二步编写 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 时传入in11FB1 内部计算11213再通过out变量将 13 返回给 PLC_PRG 的erg变量。编译无报错五、完整代码汇总1. 主程序 PLC_PRG 完整代码PROGRAM PLC_PRGVARivar: INT; // 计数器变量每次执行自增1fbinst: FB1; // FB1功能块实例erg: INT; // 接收FB1输出的结果变量END_VAR// 计数器自增ivar : ivar 1;// 调用FB1输入11输出结果存入ergfbinst(in:11, outerg);2. 功能块 FB1 完整代码FUNCTION_BLOCK FB1VAR_INPUTin: INT; // 输入变量END_VARVAR_OUTPUTout: INT; // 输出变量END_VARVARivar: INT : 2; // 内部固定值2END_VAR// 核心计算逻辑输入值2输出out : in ivar;六、关键语法 注意事项新手必看变量声明规则变量名区分大小写ivar和Ivar是两个不同变量数据类型必须匹配如 FB1 的输入变量是 INTPLC_PRG 传入的 11 也是整数不能传字符串功能块实例的类型必须与功能块名称一致fbinst: FB1不能写成fbinst: fb1。ST 语言基础语法赋值用:不能用在 ST 中是比较运算符语句结尾必须加封号;否则编译报错注释用//单行注释多行注释用(* ... *)。功能块与主程序的关系功能块是可复用的 “模块”可以被多个主程序调用调用功能块时输入参数用:赋值输出参数用接收结果功能块的内部变量如 FB1 的 ivar仅在内部生效外部无法修改。编译检查代码编写完成后点击工具栏的「编译」按钮图标为锤子如果有语法错误编辑器会在下方提示错误位置和原因按提示修改即可。七、下一步程序下载与监控代码编写完成后就可以将程序下载到 PLC或软件自带的模拟运行系统中运行了下一篇我们将详细讲解如何通过 Gateway Server 连接设备程序下载与运行操作在线监控变量变化查看 ivar 的计数过程和 erg 的输出结果。