PLC编程必学手把手教你创建和调用子程序附代码案例

at 2026.03.16 09:23  ca 设备销售区  pv 1378  by 工控设备哥  

PLC编程必学!手把手教你创建和调用子程序(附代码案例)

宝子们!今天要聊的可是PLC编程中的核心技能——子程序!作为工业自动化圈的新手,如果你还在为程序臃肿、调试困难而头秃,这篇干货必须收藏!✨

图片 PLC编程必学!手把手教你创建和调用子程序(附代码案例)1

💡 为什么必须掌握子程序?

1️⃣ **代码复用率翻倍**:同一功能模块重复使用,告别重复造轮子

2️⃣ **调试效率提升80%**:模块化设计让故障定位快人一步

3️⃣ **代码可维护性增强**:修改只需改一处,牵一发而动全身

4️⃣ **职业竞争力加成**:大厂面试必考知识点,升职加薪神器!

📌 先看一张流程图(文字版)

创建子程序 → 修改参数 → 调用子程序 → 返回主程序

🔧 创建子程序的3大黄金步骤

【步骤1:定义子程序结构】

• 西门子S7-1200语法:

```

组织块1: block 1

变量声明区:

VAR input1 DB0.0; 输入变量

VAR output2 DB0.1; 输出变量

VAR temp DB0.2; 工作寄存器

END organized_block

```

• 三菱FX系列语法:

图片 PLC编程必学!手把手教你创建和调用子程序(附代码案例)2

```

组织块0: sub FNC_01

输入:X0,X1

输出:Y0,Y1

常数:K100

```

【步骤2:编写核心逻辑】

重点技巧:

1. 使用局部变量替代全局变量(减少信号干扰)

2. 添加延时函数避免竞争冒险

3. 优先使用位操作指令(如MOMR)

4. 关键位置插入调试断点(调试神器!)

【步骤3:编译验证】

• 西门子:双击打开子程序 → 右键"编译" → 检查语法错误

• 三菱:在工程管理器中右键编译 → 查看错误代码

🎯 调用子程序的5种高阶用法

【基础调用】

• 无参调用:

```

组织块0:

L DB0.0 ; 调用子程序1

JMP FNC_01

```

• 有参调用(西门子):

```

组织块0:

L DB0.0

L DB0.1

JMP block1

```

【进阶技巧】

1. **条件调用**:X0=1时自动触发

```

IF X0=1

JMP block1

ENDIF

```

2. **嵌套调用**:子程序中再调用子程序(嵌套深度≤5层)

3. **定时调用**:使用T定时器触发

4. **计数器触发**:C0>10时调用

5. **事件触发**:HMI信号改变时触发

⚠️ 常见踩坑指南(血泪经验)

【错误1:变量未声明】

```

错误代码:L X0

JMP block1 ; X0未声明会导致编译错误

```

正确写法:

VAR input X0; 需要显式声明

【错误2:返回值冲突】

```

错误案例:主程序返回值M0和子程序返回值重复

```

解决方案:使用临时寄存器或全局变量区

【错误3:参数类型不符】

```

错误代码:L DB0.0 ; 带符号数传给无符号参数

应改为:A DB0.0

```

🛠 案例实战:电机启停子程序

【需求】实现电机启停控制(含互锁)

```

组织块0:

VAR IN1 DB0.0; 启动按钮

VAR IN2 DB0.1; 停止按钮

VAR M0 DB0.2; 电机状态位

VAR M1 DB0.3; 过载报警

```

【子程序代码】block1

VAR local M2 DB0.4; 局部变量

L DB0.0

A DB0.1 ; 启动互锁

JNB L1

L DB0.5 ; 闭合接触器

JMP L2

L DB0.6 ; 检测过载

JNB L3

M2:=1 ; 报警标志

L2:

JMP 组织块0

L3:

M2:=0

【调用方法】

组织块0:

L DB0.0

A DB0.1

JNB L1

L DB0.5

JMP block1

L DB0.6

JNB L2

M2:=1

L2:

JMP 组织块0

💡 调试技巧:

1. 在子程序入口插入OB35(诊断中断)

2. 使用西门子S7-PLCSIM V5.5模拟调试

3. 三菱GX Developer添加断点监控

📚 延伸学习资源:

1. 《PLC高级编程技巧(第3版)》第7章

2. 西门子官方视频《子程序应用实例》

🔥 文末彩蛋:

关注并私信"子程序案例包",免费领取:

✅ 西门子/三菱/欧姆龙全系列子程序模板

✅ 50+工业场景调用代码

✅ 子程序调试checklist

PLC编程 工业自动化 电气工程师 智能制造 工业控制 技术干货 编程技巧 电气知识

相关阅读