PLC结构化文本(ST)——特点(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#特色比较,仅仅结构上有点差异,程序本质上没有任何差异。若想完成特色的只读或只写删去对应的Get
或Set
办法即可。
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特色并无太大差异,都是对内部字段的包装,都有get
和Set
拜访器,特色在OOP中的运用十分频频。