首页 > 其他分享 >PLC结构化文本(ST)——属性(Property)

PLC结构化文本(ST)——属性(Property)

时间:2024-09-03 14:47:43浏览次数:3  
标签:name C# ST PLC VAR Property 属性

PLC Structured Text Object Oriented Programming

PLC结构化文本(ST)——属性(Property)

属性的定义

C# 中的属性(Property)是类和结构体中用于封装数据的成员。它们提供了一种方式来定义类成员的访问和设置规则,通常用于隐藏字段(Fields)的内部实现细节,同时提供控制数据访问的机制。---C#属性

在PLC ST中属性的定义与高级语言相同,或者说ST中属性这一概念就是仿照高级语言中属性设计的。此处引入一个概念字段(Fields),在POU内部声明的成员变量可以统称为字段(Fields)这是高级语言中的概念,同样适用于PLC ST。

属性的特点

  • 属性可以看作是对字段的包装器,通常由 get 和 set 访问器组成。
  • 属性(Property)不会确定存储位置。相反,它们具有可读写或计算它们值的 访问器(accessors)。
  • 例如,有一个名为 Student 的类,带有 age、name 和 code 的私有域。我们不能在类的范围以外直接访问这些域,但是我们可以拥有访问这些私有域的属性。---C#属性

Tips : IEC61131-3并没有对OOP支持的很完善,例如POU内部声明的变量在实例化之后仍然可以通过“对象.组件”访问POU内部成员,这表明POU内部声明的变量默认是Public且Readonly。这点目前与高级语言C#稍有不同。

属性实现方式

C#代码示例:

public class Person
{
    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}
或者
public class Person
{
    public string Name { get; set; }
}

TwinCAT3 ST代码示例:

// 创建类(FB)
FUNCTION_BLOCK FB_Person
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    name : STRING;
END_VAR
-------------------------
// 创建属性
PROPERTY Name : STRING
-------------------------
// Get方法(访问器)
VAR
END_VAR
-------------
Name := name;
------------------------
// Set方法(访问器)
VAR
END_VAR
-------------
name := Name;

与C#属性相比,只是结构上有点区别,程序本质上没有任何区别。若想实现属性的只读只写删除对应的GetSet方法即可。

Tips : PLC经常在线监控变量当前值,但是属性变量并不显示当前状态值,需要使用断点来监控及其不方便。官方提供了两种特性来解决这个问题。{attribute 'monitoring' := 'variable'}{attribute 'monitoring' := 'call'} 详细使用方法查阅官方文档:https://content.helpme-codesys.com/zh-CHS/CODESYS Development System/_cds_pragma_attribute_monitoring.html

总结

C#中属性与PLC ST属性并无太大区别,都是对内部字段的包装,都有getSet访问器,属性在OOP中的使用非常频繁,所以各位工程师需要好好研究学习。

标签:name,C#,ST,PLC,VAR,Property,属性
From: https://www.cnblogs.com/JSheng/p/18394586

相关文章

  • 基于FPGA的QPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不
    1.算法仿真效果       本系统在以前写过的QPSK调制解调系统的基础上,增加了高斯信道模块,误码率统计模块,可以验证不同SNR情况下的QPSK误码情况。 vivado2019.2仿真结果如下(完整代码运行后无水印): SNR=15DB   SNR=10DB   SNR=5DB   SNR=1DB ......
  • 基于FPGA的QPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不
    1.算法仿真效果本系统在以前写过的QPSK调制解调系统的基础上,增加了高斯信道模块,误码率统计模块,可以验证不同SNR情况下的QPSK误码情况。vivado2019.2仿真结果如下(完整代码运行后无水印):SNR=15DBSNR=10DBSNR=5DBSNR=1DB系统RTL结构图:2.算法涉及理论知识概要QPSK是一种数......
  • 开源模型应用落地-qwen2-7b-instruct-LoRA微调&合并-ms-swift-单机多卡-RTX 4090双卡(
    一、前言  本篇文章将使用ms-swift去合并微调后的模型权重,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。二、术语介绍2.1.LoRA微调  LoRA(Low-RankAdaptation)用于微调大型语言模型(LLM)。 是一种有效的自适应......
  • Java高级编程—Stream流(从0到1详解,附有代码+案例)
    文章目录Stream流26.1获取Stream流26.2Stream流中间方法26.3Stream流终结方法(一)26.4Stream流终结方法(二)Stream流相当于把数据源加载到一条流水线上,即在一条传输管道中对数据进行操作,26.1获取Stream流获取方式方法名说明单列集合defaultStreamstream()Col......
  • ModbusTCP 转 Profibus DP(M)网关,型号 SG-TCP-Profibus(M),详细介绍
    一、功能概述1.1设备简介本产品是ModbusTCP和DP(ProfibusDP)网关,使用数据映射方式工作。本产品在ModbusTCP侧作为ModbusTCP从站,接PLC、上位机、wincc屏等;在DP侧做为DP主站,接ProfibusDP设备,如编码器、流量计、显示屏等;通过增加DP/PA耦合器可接入Profi......
  • PLC数据采集网关,型号 SSF-BOX-200,详细介绍
    第一章  产品概述PLC数据采集网关型号SSF-BOX-200,是天津三石峰科技有限公司推出的工业级PLC数据采集网关(以下简称盒子或网关),主要用于各种品牌PLC数据采集,数据通过MQTT和ModbusTCP协议上传服务器、MES/ERP/SCADA等软件平台,为用户提供一种简单可靠的数据采集方案。该网关不......
  • elasticsearch数据导出和导出
    数据导入和导出依赖于命令elasticdump数据导出#!/bin/bashES=http://ip:portED=数据保存位置datename=$(date+%Y-%m-%d)#datename=2021-08-20index=导出的索引名echo"elasticdump--input=$ES/$index--output=$ED/$index.json"elasticdump--input=$ES/$......
  • Rust高级类型概述
    Rust作为一种现代的、强类型的系统级编程语言,其高级类型特性为开发者提供了丰富的编程工具和手段,使得Rust在编写高性能、并发、安全的系统时具有显著优势。以下是对Rust高级类型的详细探讨。一、Rust高级类型概述Rust的高级类型特性主要包括Newtype模式、类型别名、never......
  • 【已解决】Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.
    一、问题描述Invalidvaluetypeforattribute‘factoryBeanObjectType‘:java.lang.String二、解决方案更新本地的Mybatisplus版本<dependency>  <groupId>com.baomidou</groupId>  <artifactId>mybatis-plus-spring-boot3-starter</artifactId> ......
  • 点亮须弥【UUST】
    问题描述原神 3.03.0 版本马上就要到来,须弥地图即将开放。神秘少女纳西坦答应荧,如果她能以最快的速度点亮须弥所有的传送点,就可以和小吉祥草王贴贴。岩之魔神摩拉克斯非常好心地送来了须弥的地图,地图上有 nn 个传送点,分别标注为 1∼n1∼n,旅行者荧可以在已经点亮的传送......