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.mzph.cn/news/1215872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

先过滤后关联的优化经验分享

1、问题语句 最近遇到一个问题,发现开发人员比较喜欢单一的将表放一块一起做关联。如果有了先过滤后关联的思维,大部分语句的性能会获得提升。 以下是真实项目简化而来的例子 select * from ( select a.c1, a.mid, a.bcode,c.ttime ,row_number()over( p…

【视觉大模型论文精读】带你逐段解析 (持续更新)——总览

【视觉大模型论文精读】带你逐段解析 (持续更新)——总览 (2021)(DINO)Emerging Properties in Self-Supervised Vision Transformers论文精读(逐段解析) (2023)(SAM&a…

「LUCKY STUN穿透」使用UptimeRobot使UPnP映射的TCP规则保持活跃

「LUCKY STUN穿透」使用UptimeRobot使UPnP映射的TCP规则保持活跃「LUCKY STUN穿透」使用UptimeRobot使UPnP映射的TCP规则保持活跃 2024.05.04 在之前的教程中我们通过UPnP映射 webhook等功能配合STUN穿透 实现了在无IP…

AI应用架构师详解:智能供应链预测系统模型服务化设计(TensorFlow Serving实践)

AI应用架构师详解:智能供应链预测系统的模型服务化设计——基于TensorFlow Serving的实践指南 一、引言:从"模型训练完成"到"生产可用"的最后一公里痛 作为AI应用架构师,我曾遇到过这样的场景: 数据科学家花了3个月训练出一个供应链销量预测模型——…

A. Perfect Root

time limit per test1 secondmemory limit per test256 megabytesA positive integer x is a perfect root if there exists an integer y such that y√x. For example, 5 is a perfect root because 25−−√5.For each test case, output n distinct perfect roots. Note th…

曲线Curve

曲线Curve1.setFromPoints .setFromPoints()是几何体BufferGeometry的一个方法,通过该方法可以把数组pointsArr中坐标数据提取出来赋值给几何体。具体说就是把pointsArr里面坐标数据提取出来,赋值给geometry.attribu…

「LUCKY STUN穿透」在Docker中使用MiniUPnP为BT客户端自动添加内外端口不同的映射规则

「LUCKY STUN穿透」在Docker中使用MiniUPnP为BT客户端自动添加内外端口不同的映射规则「LUCKY STUN穿透」在Docker中使用MiniUPnP为BT客户端自动添加内外端口不同的映射规则 2024.04.23 关于本教程 在之前的教程中我们…

【论文学习】重新审视面向持续图像分割的基于查询的 Transformer || 用于二分类图像分割的多视图聚合网络

Rethinking Query-based Transformer for Continual Image Segmentation 重新审视面向持续图像分割的基于查询的 Transformer 理解 针对 “持续图像分割” 任务,重新分析并优化 “基于查询的 Transformer” 模型的应用逻辑 基于查询的 Transformer:图…

基于STM32的智能停车场系统设计(实物设计)

基于STM32的智能停车场系统设计摘要随着城市化进程加快与汽车保有量激增,传统停车场管理c效率低下、信息不透明、安全隐患突出等问题日益显著。为解决上述痛点,本文设计了一套基于STM32微控制器的智能停车场系统,实现车辆出入计数、环境参数监…

Kafka与RabbitMQ相比有什么优势? - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

MiniMax的全球化之路:中国AI公司出海的新样本

MiniMax成立4年即实现73%海外收入,以Talkie、海螺AI为核心产品,凭借“生而全球化”战略,从底层架构适配全球市场,通过文化本地化运营和高效市场推广,在全球200多个国家及地区拥有2.12亿用户,为中国AI公司出…

C++工程师的前端之旅:前后端对话 - 实时通信篇 02 - WebSocket订阅(观察者模式实现)

日期 内容 1 20260125 初版 作为一名C++工程师,我们理解观察者模式的核心:当对象状态改变时,自动通知所有依赖它的对象。今天,我用最简单的例子——LED灯的开关状态,展示如何将这一经典模式应用于Web实时通信。 一:为什么需要订阅机制? 想象一个工厂有100个LED灯,每个…

动态注册RBAC

1.PermissionPolicyProvider:每次[Authorize(Policy="xxx")]调用时动态生成Policy using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.DependencyInjection;namespace Infrastructure.…

YOLO26改进 - 采样 | ICCV 顶会技术:WaveletPool 小波池化强化采样,保留小目标细节

前言 本文介绍了基于小波变换的池化方法——Wavelet Pooling,作为传统最大池化与平均池化的有效替代方案。该方法通过两级小波分解丢弃高频子带,保留更具代表性的低频特征,从而在减少信息丢失的同时提升模型的正则化能力。我们将 Wavelet Po…

深度测评10个AI论文平台,研究生高效写作必备!

深度测评10个AI论文平台,研究生高效写作必备! AI 工具如何重塑研究生的学术写作之路 在当今科研与学术写作日益数字化的背景下,AI 工具正逐步成为研究生们不可或缺的得力助手。从初稿生成到内容优化,再到降重处理,这些…

图神经网络分享系列-GGNN(GATED GRAPH SEQUENCE NEURAL NETWORKS)(三)

目录 七、相关研究 八、讨论 GG-NN模型学到了什么? 逻辑推理与模型学习的对比 任务编码与背景知识 实验结果与局限性 动态推理优化 未来应用展望 A 收缩映射示例 限制更新以定义欧几里得度量下的收缩映射 GNN模型中的节点标签与信息传播 信息衰减与长程依…

音视频学习(八十六):宏块

什么是宏块(Macroblock)? 在传统的视频编码标准(如 MPEG-2 或 H.264)中,宏块是进行预测、变换、量化和编码的基本单元。 基本组成: 一个标准的宏块通常涵盖 16x16 个像素的亮度(Luma…

完整教程:(数据结构)栈和队列

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

day11|150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素

150. 逆波兰表达式求值 150. 逆波兰表达式求值 | 代码随想录 栈的最后表演! | LeetCode:150. 逆波兰表达式求值_哔哩哔哩_bilibili 笔记 逆波兰式表达式就是二叉树的左右中遍历顺序;我们正常看见的表达式就是左中右…

求多个乘法逆元(模板)

线性算法 用于求一连串数字对于一个modp的逆元。洛谷P3811 只能用这种方法&#xff0c;别的算法都比这些要求一串要慢。 首先我们有一个,1−1≡1(modp) 然后设 pk∗ir,(1<r<i<p) 也就是 k 是 p/i 的商&#xff0c;r 是余数 。 再将这个式子放到(modp)意义下就会得…