首页 > 其他分享 >PLC结构化文本(ST)——临时&静态&实例-变量(TEMP&STAT&INST)

PLC结构化文本(ST)——临时&静态&实例-变量(TEMP&STAT&INST)

时间:2024-09-06 14:36:41浏览次数:9  
标签:STAT 变量 TEMP iCounter 静态 ST 实例 VAR

PLC Structured Text Object Oriented Programming

PLC结构化文本(ST)——临时&静态&实例-变量(TEMP&STAT&INST)

临时变量(VAR_TEMP)

  • 临时变量在每次调用POU时都会初始化。
  • 用在程序(PRG)功能块(FB) 中。
  • 方法(Method)函数(Function) 中的内部变量都是临时变量。
PROGRAM MAIN
VAR
    iResult : UINT; // STATIC
END_VAR
VAR_TEMP
    iCounter : UINT; // TEMP
END_VAR
----------------------------
iCounter := iCounter + 1; // 无法实现累加,每次调用都会被初始化。
iResult  := iResult + 1; // 可以正常累加。

静态变量(VAR_STAT)

  • 静态变量只在POU的第一次调用时被初始化。
  • 静态变量声明赋值后,值不会丢失。
  • 可用在 方法(Method)函数(Function) 中。
  • 程序(PRG)功能块(FB) 中声明的变量都是静态的。
FUNCTION F_Counter : UINT
VAR
    iTemp : UINT; // TEMP
END_VAR
VAR_STAT
    iCounter : UINT; // STATIC
END_VAR
----------------------------
iCounter := iCounter + 1; // 静态变量,可以实现累加。
iTemp := iTemp + 1; // 临时变量,每次调用都会被初始化,无法实现累加,因此每个周期计算后的值都是1。
F_Counter := iCounter;

Tips : 需要强调一点,若在功能块内部(非方法内部)声明静态变量,并且在程序中实例化了多次(创建多个对象),此时需要注意不同对象的静态变量地址是相同的,也就是说如果同一个类型的不同实例,改变其中一个静态变量值,其它实例的对应静态变量值也会跟着改变。这就是C#Java中的单例。有关静态变量单例的详细内容自行谷歌百度。

实例变量(VAR_INST)

  • 实例变量(VAR_INST) 只能方法(Method) 中使用,可以在方法的声明区在线监控实例变量值。
  • 不保存实例变量(VAR_INST)在方法栈中,但在功能块的实例栈中。
  • 实例变量与功能块实例的其它变量一样,每次调用方法时不会重新初始化。
METHOD M_Counter : INT
VAR_INPUT
    iVar : INT;
END_VAR
VAR_INST
    iCounter : INT := 0;
END_VAR
iCounter := iCounter + 1; // 可以实现自增,iCounter只有首次调用会被初始化。
M_Counter := iCounter;

总结

在使用临时变量、静态变量和实例变量时,需要清楚对应POU的内部变量原本的类型以及变量的生命周期。

标签:STAT,变量,TEMP,iCounter,静态,ST,实例,VAR
From: https://www.cnblogs.com/JSheng/p/18400179

相关文章

  • 快速理解视频内容并回答问题,视频理解描述模型 Flash-VStream 上线!
    Flash-VStream是一种模拟人类记忆机制的视频语言模型。它能够实时处理极长的视频流,并同时响应用户的查询。与现有模型相比,Flash-VStream显著降低了推理延迟和VRAM消耗,这与执行在线流视频的理解密切相关。使用云平台:OpenBayeshttp://openbayes.com/console/signup?r=sony_0m6v登录到......
  • AI绘画Stable Diffusion常用插件合集
    宝子们,早上好啊~StableDiffusion常用插件,已经给大家整理好了,自取就好。拥有这些SD常用插件,让您的图像生成和编辑过程更加强大、直观、多样化。以下插件集成了一系列增强功能,覆盖从自动补全提示词到高分辨率图像放大,从双语界面到无边图像浏览,为用户提供了无缝的StableDif......
  • STM32学习笔记——GPIO
    GPIO——GeneralPurposeInputOutput——通用输入输出出口特点:通用性、快速翻转、中断支持、支持多种工作模式。8种输入输出模式模式性质特征应用标识浮空输入数字输入可读取引脚电平,若引脚悬空,则电平不确定适用于需要读取外部信号的场景,但外部信号状态......
  • debian11 申通 无感考勤 mysql postgresql nacos集群
     echo"nameserver114.114.114.114nameserver8.8.8.8">/etc/resolv.conf echo"debhttps://mirrors.aliyun.com/debian/bullseyemainnon-freecontribdeb-srchttps://mirrors.aliyun.com/debian/bullseyemainnon-freecontribdebhttps://......
  • 【AI绘画】Stable Diffusion 喂饭教程来啦!价值上万的模特AI换装方法
    大家好,我是爱绘画的彤姐。在电商领域,最近AI模特换装特别火,结合网上的教程和实战,总结了一个最简单性价比最高的方法。今天我们就一起学起来!!一思路整体的思路其实很简单,分为三步:获取模特服饰的蒙版获取模特的姿势特征图通过图生图局部重绘(上传蒙版)出图在整个过程......
  • 回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出
    回归预测|MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出目录回归预测|MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出预测效果基本介绍模型介绍PSO模型LSTM模型PSO-LSTM模型程序设计参考资料致谢预测效......
  • 蓝桥杯-STM32G431RBT6工程创建和程序烧录(保姆级图文详解)
    文章目录前言蓝桥杯嵌入式赛道所使用的开发板为STM32G431RBT6 CT117E-M4开发板(新版),如下图:一、需要安装的环境keilMDK,stm32cubemx,官方提供的资源包二、使用步骤(STM32cubemx部分)1,首先打开STM32cubemx注:蓝桥杯用HAL库更节省比赛时间,也更方便修改2,创建项......
  • <Rust>egui学习之小部件(九):如何在窗口中添加下拉列表combobox部件?
    前言本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析,主要讲解egui的源代码、部件属性、如何应用。环境配置系统:windows平台:visualstudiocode语言:rust库:egui、eframe概述本文是本专栏的第九篇博文,主要讲述下拉列表部件combobox的使用。事实上,类似于iced,egui......
  • 策略模式【Strategy Pattern】,什么是策略模式?核心思想?角色?优缺点?应用场景?略模式实现案
    目录设计模式专栏目录(点击进入…)策略模式【StrategyPattern】,什么是策略模式?核心思想?角色?优缺点?应用场景?略模式实现案例?目录什么是策略模式?策略模式核心思想策略模式的角色(1)策略接口(Strategy)(2)具体策略类(ConcreteStrategy)(3)上下文类(Context)策略模式的优缺点优点(1)......
  • 一次了解所有功能!超详细【Stable Diffusion界面】大揭秘!
    对于AI绘画的初学者而言,一看到SD的UI界面肯定是一脸懵,因为有太多陌生词汇,什么大模型、什么提示词、什么什么采样迭代,和传统的画图方式完全不在一个层面上,学习起来就无从下手~今天给大家详细做一个介绍,一起来学吧~SD整合包资源可扫描下方,免费获取01模型设定菜单栏①Sta......