当前位置:首页 > 软件设计 > 正文内容

PLC结构化文本(ST)——接口(Interface)

邻居的猫1个月前 (12-09)软件设计1011

PLC Structured Text Object Oriented Programming

PLC结构化文本(ST)——接口(Interface)

接口界说

接口界说了一切类承继接口时应遵从的语法合同。接口界说了语法合同 "是什么" 部分,派生类界说了语法合同 "怎样做" 部分。
接口界说了特色、办法和事情,这些都是接口的成员。接口只包括了成员的声明。成员的界说是派生类的职责。接口供给了派生类应遵从的规范结构。---C# 接口(Interface)|菜鸟教程

接口特色

  • 接口使得完成接口的类或结构在形式上保持一致。---C# 接口(Interface)|菜鸟教程
  • 接口自身并不完成任何功用,它仅仅和声明完成该接口的目标缔结一个有必要完成哪些行为的契约。---C# 接口(Interface)|菜鸟教程
  • 接口能够承继接口,一个接口能够承继多个不同的接口。
  • 接口成员默许是Public,也有必要是Public。
  • 接口变量能够接纳完成该接口类型的类的目标。

接口与笼统类差异

  • 笼统类在某种程度上与接口类似,可是,它们大多仅仅用在当只要少量办法由基类声明由派生类完成时。---C# 接口(Interface)|菜鸟教程
  • 笼统类不能直接实例化,但答应派生出详细的,具有实践功用的类。---C# 接口(Interface)|菜鸟教程
  • 笼统类的成员不一定都是笼统的,但如果有一个类的成员是笼统的,那么这个类一定是笼统类。

Tips : 以上关于接口笼统界说、特色和差异,在IEC61131-3 PLC编程规范中相同适用。

接口的完成

// 界说一个接口
INTERFACE I_StringBuilder EXTENDS __SYSTEM.IQueryInterface
// 接口的办法 Append
METHOD Append : I_StringBuilder
VAR_INPUT
	sText : STRING;
END_VAR
// 接口的办法 Clear
METHOD Clear : I_StringBuilder
VAR_INPUT
END_VAR
// 接口的办法 ToString
METHOD ToString : STRING
VAR_INPUT
END_VAR
// 功用块 FB_StringBuilder 完成 接口 I_StringBuilder
FUNCTION_BLOCK FB_StringBuilder IMPLEMENTS I_StringBuilder
VAR
	sContent : STRING; // Store temporary strings;
END_VAR
// 增加接口办法的完成 Append
METHOD Append : I_StringBuilder
VAR_INPUT
	sText : STRING;
END_VAR
--------
sContent := CONCAT(STR1 := sContent, STR2 := sText);
Append := THIS^;
// 增加接口办法的完成 Clear
METHOD Clear : I_StringBuilder
VAR_INPUT
END_VAR
--------
sContent := '';
Clear := THIS^;
// 增加接口办法的完成 ToString
METHOD ToString : STRING
VAR_INPUT
END_VAR
--------
ToString := sContent; // return internal content

界说一个接口I_StringBuilder包括三个办法:Append(作用:在字符串后边增加新字符)、Clear(作用:清空当时字符串)、ToString(作用:输出字符串)。
界说一个功用块FB_StringBuilder完成接口I_StringBuilder并给办法增加详细完成细节。

Tips : 示例接口 I_StringBuilder承继了 __SYSTEM.IQueryInterface,其间 __SYSTEM.IQueryInterface 为体系内置接口,无其它成员,首要作用是为了能够做接口与接口的转化或许接口与指针的转化,所以在PLC ST OOP中一般以它作为接口的基类(最小粒度)以此派生。关于 __SYSTEM.IQueryInterface 接口详细用法可查阅官方材料。
1.Codesys运算符__QUERYPOINTER
2.倍福在线协助体系

运用接口完成Fluent

Main(PRG)程序中声明FB_StringBuilderI_StringBuilder两个目标,然后声明sResult1sResult2用来接纳成果。

PROGRAM MAIN
VAR
	// 字符拼接,输出'Hello world'
	fbStringBuilder : FB_StringBuilder;
	iStringBuilder	: I_StringBuilder := fbStringBuilder;
	sResult1 : STRING;
	sResult2 : STRING;
	bTest : BOOL;
END_VAR

接口目标iStringBuilder在初始化时传入的是fbStringBuilder目标。

  • 1.运用目标完成Fluent
IF bTest THEN
	// Function Block Instance
	sResult1 := fbStringBuilder.Clear()
							.Append('H')
							.Append('e')
							.Append('l')
							.Append('l')
							.Append('o')
							.Append(' ')
							.Append('W')
							.Append('o')
							.Append('r')
							.Append('l')
							.Append('d')
							.ToString();
	bTest := FALSE;
END_IF
  • 2.运用接口完成Fluent
IF bTest THEN
	// Interface 
	sResult2 := iStringBuilder.Clear()
							.Append('H')
							.Append('e')
							.Append('l')
							.Append('l')
							.Append('o')
							.Append(' ')
							.Append('W')
							.Append('o')
							.Append('r')
							.Append('l')
							.Append('d')
							.ToString();
	bTest := FALSE;
END_IF

办法Clear()Append()返回值是I_StringBuilder接口,因而能够运用“.”拜访接口内部界说的成员。
这种编程办法完成的办法不只这一种,还有其它办法也能完成这种作用,后续文章会有详细介绍。

Tips : 作者喜爱称这种编程办法为流式编程链式编程,老外习气的叫法为" Fluent "或许" Work Flow ",详细怎样描述看个人喜好吧。

总结

接口(Interface)是引证类型,与IEC61131-3界说的另一种类型(REFERENCE)类似,现在笔者想到的" 引证类型 "在IEC61131-3中只要两个" 接口(INTERFACE "和" 引证(REFERENCE ",若还有其它的引证类型,欢迎大神留言评论。

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=312

分享给朋友:

“PLC结构化文本(ST)——接口(Interface)” 的相关文章

面向对象思想的理解,面向对象思想概述

面向对象思想的理解,面向对象思想概述

面向对象思想(ObjectOriented Thinking)是计算机编程领域中的一种编程范式,它通过模拟现实世界中的对象(如人、汽车、书等)来组织和设计软件。这种思想强调的是将数据和操作数据的方法(函数)封装在一起,形成一个个独立的对象,每个对象都有自己的属性(数据)和行为(方法)。这种封装不仅提...

软件设计时应遵循什么原则,软件设计中的关键原则

软件设计时应遵循什么原则,软件设计中的关键原则

1. 模块化原则:将软件系统分解为独立、可重用的模块,有助于提高代码的可读性、可维护性和可测试性。2. 单一职责原则:每个模块或类应该只有一个职责或原因来改变,这有助于减少模块之间的耦合,提高系统的灵活性。3. 开闭原则:软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。这意味着在不修改现有代...

什么事面向对象,什么是面向对象编程?

什么事面向对象,什么是面向对象编程?

面向对象(ObjectOriented,简称OO)是一种编程范式,它将数据(属性)和操作(方法)组合在一起,以模拟现实世界中的对象。在面向对象的编程中,对象是基本的构建块,它们封装了数据和行为。面向对象编程的核心概念包括:1. 对象(Object):对象是面向对象编程的基本单元,它封装了数据(属性)...

软件设计师题库,助力备考,提升技能

软件设计师题库,助力备考,提升技能

1. Gitee Gitee提供了一个2024年软件设计师(软考中级)的备考资源库,包含视频、真题、教材、模拟卷、笔记等。你可以通过以下链接访问:。2. 51CTO题库 51CTO题库提供软考中级软件设计师的在线试题、解析及答案。包括历年试题、模拟题、章节练习、每日刷题、错题集和模拟机考...

面向对象法

面向对象法

面向对象法(ObjectOriented Methodology)是一种软件开发的方法论,它强调将软件系统视为由多个对象组成,每个对象都有自己的属性和行为。面向对象法的主要特点包括封装、继承和多态。1. 封装:封装是指将对象的属性和行为封装在一个单元中,这样可以隐藏对象的内部实现细节,只对外提供必要...

面向对象的设计模式,构建可复用、可维护的软件系统

面向对象的设计模式,构建可复用、可维护的软件系统

面向对象设计模式通常分为三大类:1. 创建型模式(Creational Patterns):对类的实例化过程进行抽象,能够将软件模块中对象的创建和对象的使用分离。为了使对象实例化的过程更加灵活,创建型模式引入了工厂、建造者、原型等概念来指导对象的创建。创建型模式包括:工厂方法模式、抽象工厂模式、单例...