当前位置: 首页 > news >正文

22-5. PLC的程序控制指令(子程序)

22-5. PLC的程序控制指令(子程序)
在 PLC(可编程逻辑控制器)编程中,子程序指令是一种用于结构化编程的核心指令。它的核心思想是“模块化”:将复杂的程序分解成若干个独立的功能块,按需调用。
简单来说,子程序就像是程序里的“工具箱”,你把常用的逻辑放进去,主程序需要时就拿出来用一下,用完再放回去。

1. 子程序的三大核心指令

一套完整的子程序控制通常由以下三部分组成:
指令名称
英文缩写 (常见)
功能说明
子程序调用
CALL/JSR
在主程序中发出指令,要求 CPU 暂时离开主程序,转去执行指定的子程序。
子程序入口
SBR/LBL
标记子程序的开始位置,通常带有编号(如 P1, SBR_1)。
子程序返回
RET/SRET
标志子程序的结束。执行到此处后,CPU 会跳回刚才主程序中断的地方,继续往下运行。

2. 工作原理(扫描过程)

在正常的扫描周期中,PLC 是从上到下执行主程序的。
  1. 遇到调用指令:当CALL指令的触发条件满足时,扫描仪会“瞬移”到对应的子程序入口。
  2. 执行子程序:PLC 开始执行子程序内部的梯形图。
  3. 遇到返回指令:执行到RET时,PLC 知道任务完成了,立刻回到主程序中CALL指令的下一行继续执行。
  4. 不满足条件时:如果CALL指令的触发条件不满足,PLC 会直接跳过子程序,子程序内的代码完全不被扫描(这可以节省运行时间)。

3. 为什么要用子程序?

使用子程序不仅是为了让程序看起来“整洁”,还有以下实际好处:
  • 减少重复劳动:如果一套报警逻辑在 10 个地方都要用,你只需要写一个子程序,然后在 10 个地方执行CALL即可。
  • 优化扫描时间:对于一些不是每时每刻都需要运行的逻辑(比如:只有在手动模式下才运行的调试程序),放在子程序里只在需要时调用,可以显著缩短 PLC 的扫描周期(Scan Time)。
  • 便于调试:你可以独立地测试某一个功能块,而不受其他逻辑干扰。
  • 实现嵌套:高级 PLC 支持“嵌套调用”,即主程序调子程序 A,子程序 A 里面又调子程序 B。

4. 注意事项(新手易错点)

  • 状态保持问题:如果子程序在执行过程中突然停止调用(CALL条件断开),子程序内部的非自保持线圈(Out)通常会保持在最后一次执行的状态,而不会自动复位。这可能导致设备无法关机。
  • 双线圈冲突:如果在主程序和子程序中同时操作同一个物理输出点(如 Y0),会导致逻辑混乱。
  • 嵌套层数限制:不同品牌(西门子、三菱、欧姆龙等)对子程序嵌套的层数有限制,通常不能无限叠加。
http://www.jsqmd.com/news/299660/

相关文章:

  • 先过滤后关联的优化经验分享
  • 【视觉大模型论文精读】带你逐段解析 (持续更新)——总览
  • 「LUCKY STUN穿透」使用UptimeRobot使UPnP映射的TCP规则保持活跃
  • AI应用架构师详解:智能供应链预测系统模型服务化设计(TensorFlow Serving实践)
  • A. Perfect Root
  • 曲线Curve
  • 「LUCKY STUN穿透」在Docker中使用MiniUPnP为BT客户端自动添加内外端口不同的映射规则
  • 【论文学习】重新审视面向持续图像分割的基于查询的 Transformer || 用于二分类图像分割的多视图聚合网络
  • 基于STM32的智能停车场系统设计(实物设计)
  • Kafka与RabbitMQ相比有什么优势? - 详解
  • MiniMax的全球化之路:中国AI公司出海的新样本
  • C++工程师的前端之旅:前后端对话 - 实时通信篇 02 - WebSocket订阅(观察者模式实现)
  • 动态注册RBAC
  • YOLO26改进 - 采样 | ICCV 顶会技术:WaveletPool 小波池化强化采样,保留小目标细节
  • P1948 [USACO08JAN] Telephone Lines S
  • 深度测评10个AI论文平台,研究生高效写作必备!
  • 图神经网络分享系列-GGNN(GATED GRAPH SEQUENCE NEURAL NETWORKS)(三)
  • 音视频学习(八十六):宏块
  • 完整教程:(数据结构)栈和队列
  • day11|150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素
  • 求多个乘法逆元(模板)
  • 语义分割实战——基于EGEUNet神经网络印章分割系统3:含训练测试代码、数据集和GUI交互界面
  • 语义分割实战——基于EGEUNet神经网络印章分割系统2:含训练测试代码和数据集
  • 语义分割实战——基于EGEUNet神经网络印章分割系统1:数据集说明(含下载链接)
  • 强烈安利!本科生毕业论文必备TOP8 AI论文网站测评
  • STM32F0实战:基于HAL库开发【2.3】
  • 工信部教考中心《系统可靠性工程师(高级)》开课通知
  • 机房U位管理别瞎忙!这套系统让运维效率翻倍
  • 告别设备束缚 RetroArch-web 把童年游戏装进口袋,cpolar解锁全场景游玩
  • 使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 44--Pytest框架钩子函数