PLC通用报警规划
PLC功能的标准化对于系统开发和后期运营维护都能起到事半功倍的效果。
1、 标准化编程,使得程序的复用效果特别明显,节约开发周期,也利于团队成员见的合作,常用的变量名命名规则有骆驼命名法和帕斯卡命名法。本人在程序规划中常用变量名采用缩写形式,在注释中用准确的预言进行描述。
例如:FC 的input接口
变量名 数据类型 默认值 注释
Active bool Alarm Message
CBFW bool Control Bit Warning/Fault ( 0=Warning /1=Fault)
2、 块标题是块的标题。它与块名称不同,块名称是在创建块时分配的。 块标题的长度被限制为一行。 可以为打开的块和已关闭的块输入块标题。通常情况我们采用简要的语言描述块的功能。
为了进一步说明块的功能和版本信息可以进行详细描述。
New(表示新建块)
Last Modification: ( 最后编辑人员)
Modified On: (编辑日期)
还可以声明块的版权信息,比如来自那个公司,分享和复制是否有法律要求。
Copyright (c) 1998-2020(公司名称等进一步信息)
This Software is protected by international law.Unauthorized copying is prohibited.
3、 一个报警功能块可以从使用场景进行划分为故障 警告 提示 程序以此递减,提示系统可以正常运行但是需要重点关注。故障和警告都会造成系统停机,故障可以来自modules 和 sensor 的一般情况通过复位不容易消除,警告可以通过复位进行消除。
一个报警功能块应该包含以下这些结构:
a) 载入信号到功能内部,也就是将形参传入临时变量。
b) 设置一个信的报警和上一个的报警
c) 复位报警
d) 复位一个新的报警
e) 报警输出到监控
f) 采集故障
g) 采集故障输出到监控
h) 采集一个新的故障
i) 采集一个新的提示
j) 采集提示输出到监控
k) 采集一个新的提示
l) 将程序内部的信号返回给输入信号
4、 常用报警功能结构化变量
操作: 触发报警 确认报警 静音
PLC-HMI基于框架的编程(1)
什么是框架
框架在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)语法检查功能比较强,这些和数据类型相关的错误它可以自己检测出来,所以匈牙利命名法已无必要,所以也不推荐。
相关问答
工业机器人编程难学吗?
机器人的开发语言一般为C、C++、C++Builder、VB、VC等语言,主要取决于执行机构(伺服系统)的开发语言;而机器人编程分为示教、动作级机器人编程语言、任务级...
台州油压机公司,台州液压机厂家有哪些靠谱液压机厂家?
[回答]买油压机,选东莞银通的,液压机是根据帕斯卡原理制成的用于实现加工工艺的机器,它是一种以液体为工作介质,通过压强的改变,利用液体的静压力来加工金...
问一下,南京静压打桩机租赁怎么选,静压打桩机租赁xxx怎么样...
[回答](1)在选用五金配件时,尽量选择质量有保证的产品,五金配件的质量等级应与门窗的质量等级相一致,五金配件的结构、形状应与型材相吻合,色彩协调美观、...