PLC结构化文本(ST)——类(Class)
PLC Structured Text Object Oriented Programming
PLC结构化文本(ST)——类(Class)
一、什么是类
百度百科释义:
类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
---类(编程术语)_百度百科
面向对象的基础概念同时也应用于结构化文本(ST):
- 类:定义对象的蓝图,包括属性和方法。
- 对象:类的实例。
二、ST类与C#或Java的区别
其它高级语言如C#或Java中的类采用Class来定义类,而在PLC ST中与之相对应的则是我们习以为常的 Function Block(FB) 中文简称:功能块。
- C#代码示例
using System;
namespace BoxApplication
{
class Box
{
public double length; // 长度
public double breadth; // 宽度
public double height; // 高度
}
}
- Java代码示例
public class MathUtils {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
- PLC ST 代码示例
FUNCTION_BLOCK Dog
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
size : INT;
age : INT;
colour : STRING;
END_VAR
--------
METHOD PUBLIC name
METHOD PUBLIC eat
明显可以看出PLC ST编程语言和高级语言写法上的区别。目前市面上大多PLC ST都遵循IEC61131标准,所以这很大程度上是使用不同平台标准造成的结果。但它们的编程核心以及基础语法上还是有很多相似的地方,所以在学习ST或者C#或者Java编程,一定要学会触类旁通。
Tips:个人建议在使用结构化文本面向对象编程的时候,创建Function Block(FB)通常不需要在变量声明区VAR_INPUT或VAR_OUTPUT下面声明变量,也可以直接删除VAR_INPUT和VAR_OUTPUT。
FUNCTION_BLOCK Dog
VAR
size : INT;
age : INT;
colour : STRING;
END_VAR
三、类的实例(对象)
PLC ST中创建类的实例(对象)
- 在PROGRAM(PRG)中创建对象
PROGRAM Animal
VAR
dog:Dog;
END_VAR
---------
dog.eat(); // Dog 在吃食物
- 在FUNCTION_BLOCK(FB)中创建对象
FUNCTION_BLOCK Animal
VAR
dog:Dog;
END_VAR
---------
dog.eat(); // Dog 在吃食物
当然还有很多其它的地方都是可以创建对象(实例化),这里不再一一举例,重要的是能明白PLC ST OOP中类是什么?对象是什么?这些概念可能在工作学习中经常遇到只是在PLC中有自己常见的叫法,和高级语言不统一而已。
四、概念统一
学习结构化文本OOP最好与高级语言中的某些概念/叫法统一,那样更方便交流学习。
以上述PLC程序为例,VAR...END_VAR中间声明的变量习惯叫法:本地变量/局部变量,在高级语言中称为:字段。所以在之后的文章中作者会更加详细介绍以下几个概念:
- 1.字段
- 2.属性
- 3.方法
- 4.函数
- 5.程序
- 6.接口
- 7.其它
五、总结
PLC ST中FB就是类,实例化FB就是对象,FB是引用类型(以后会介绍),FB中Var...End_var区域声明的变量称为字段。

浙公网安备 33010602011771号