什么是框架
框架在IT行业中使用非常广泛。框架的英文是Framework,意思是框架、机制、准则。框架的说法最早源于建筑行业。指的是一个框子-指其约束性,同时也是一个架子-指其支撑性。框架在基本概念上是一个结构,用于去解决或者处理复杂的问题。后面在其它行业中也有框架这个广泛定义,尤其在软件行业。在软件工程中,框架被定义为整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。或者框架是可被应用开发者定制的应用骨架。通俗地说,框架是实现某种功能的半成品,提供了一些常用的通用工具和一些基础通用化的组件,可以供开发人员在此基础上,更高效地满足各自的业务需求。在IT行业中,绝大部分的编程活动都是基于现成的框架,比如Web应用有Vue、React等框架。桌面应用有VCL、WinForm等框架。目前的大部分行业的业务需求的复杂程度,已经不允许程序员从头开始编程了。基于框架的编程可以大幅提高项目的交付速度和质量。
在自动化行业,框架也是由来已久,不少大厂也都有自己的框架。由于自动化行业绝大部分控制系统的可编程部件是PLC和HMI,所以我们称之为PLC-HMI编程框架。在自动化行业,PLC-HMI基于框架的编程同样可以大幅提高项目的交付速度和质量。一方面目前生产制造对自动化的要求越来越高。另一方面,国内自动化目前是个高度内卷的行业,快速的高质量交付项目是保证企业利润的基本条件。综合来看,现在的自动化行业同样不允许我们从头开始编写一个项目程序。无论是个人或者是公司,只有基于框架的编程才能使我们保持竞争力。
PLC-HMI编程框架组成
通常一个PLC-HMI框架会包含一套组件库。组件库里面有常用的设备控制功能块、画面操作面板等。除此之外,框架还会提供一个项目模板。在这个模板里面提供一个搭建好的程序结构,我们只需要根据生产工艺添加设备、单元及相关逻辑即可。对于HMI,模板里面会有一些常用画面,比如支持筛选的趋势曲线、报警视图等等。一套稳定的、开箱即用的模板可以快速提高项目交付速度,同时也能保证项目质量。
除此之外,框架还会对编程进行约束,比如命名和接口的规范,还有组件的二次开发等。这些约束的目的是为了防止团队人员对框架代码造成污染,以至于程序难以理解,或者影响复用。
面向对象及其设计原则
组件库是一个框架的核心。没有组件库的框架没有任何应用价值。因为组件库会提供大量的可复用的控制组件和视图组件。我们只需要基于组件库根据框架约束及工艺要求完成控制逻辑即可。如果没有组件库的话,大量的底层工作需要我们自己去开发完成,框架帮不上什么忙。
面向对象理念是开发组件库的核心理念。虽然目前很多PLC尚不支持完整的面向对象特性,比如不支持继承(也有少部分支持)和多态等。但是这些并不影响我们使用面向对象理念来开发编写组件。
各行各业都会有自动化需求,但是很多设备是通用的,而工艺却又不同。所以我们的组件又会分为通用的与专用的。为了避免重复造轮子,通常专用组件会继承自通用组件。这些又会涉及到面向对象的设计原则。所以如果要打造一款优秀的框架,还是需要花费很多心思的。
面向对象就是FB?
FB/FC的封装是在PLC中实现面向对象编程的手段。但是面向对象绝不仅仅只是一个FB/FC那么简单。它涉及的知识点非常多。当然并不是说FB/FC有多高的技术含量,但是合理地使用它们,可以编写出高可用的PLC框架,它们能为你带来巨大的收益。
AdvAutoFramework及其命名规范
说了这么多概念性的东西,来点实际的。命名规范是一个框架最基本的规则。AdvAutoFramework框架是我们的一款基于面向对象与整洁架构的PLC-HMI框架。下面介绍一下它的组件成员命名规范。
AdvAutoFramework框架推荐使用帕斯卡命名法,也就是大驼峰命名法。大驼峰命名法就是当方法或者变量名是由一个或者多个单词连接在一起时,每个单词(可以用英文或者拼音)的首字母大写,其它字母小写。尽量用完整单词,太长的话也可以使用缩写。比如启动命令可以写成“StartCommand”,停止命令可以写成“StopCommand”。因为PLC中功能组件的特殊性,我们最好还要区分下输入和输出。在我们的AdvLibSuite中,所有的输出都会加上前缀字符”Q”。参见下图所示。比如”QRunning”表示正在运行。这个正在运行的标记位可以作为其他设备的动作联锁,或者作为顺序控制的步序转移条件。加上前缀字符以区分输入/输出的好处是可以在我们编写程序时避免错误地引用组件成员。
同样道理,因为SCL不区分大小写,所以我们对于组件内部的临时及静态变量也要使用前缀进行区分。在我们的AdvLibSuite框架中,静态变量使用下划线”_”作为前缀,使用字符“t“作为临时变量的前缀。这样在我们的程序中,通过前缀即可看出该变量是临时变量还是静态变量。
除了组件成员的命名规范外,还有组件名称的命名规范,比如会根据其功能加上前缀DCM或者ECM等。
关于小驼峰命名法
在上位机开发中,小驼峰命名法通常用于内部成员。但是因为SCL不区分大小写,所以在同一个组件中,无法同时大驼峰和小驼峰命名法。这也是我们不推荐小驼峰法命名的原因。
关于匈牙利命名法
匈牙利命名法要求变量以一个或者多个小写字母开始,这些字母表示变量的数据类型。因为早期的代码编辑器功能比较弱,使用匈牙利命名法可以防止我们在编程中错误的对不同数据类型的变量进行互操作。但是目前PLC的程序编辑器(比如TIA Portal)语法检查功能比较强,这些和数据类型相关的错误它可以自己检测出来,所以匈牙利命名法已无必要,所以也不推荐。
转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/331990.html