pLC程序编写在哪接私活,PLC程序编写要求?

前段时间同事问我,什么样的程序才算是一个好的程序?说实话,关于程序的判断标准我一直没有认真总结过。简单想了想,程序好不好,我觉得有下面几个简单标准可以标准可以用来判断。

1、命名:变量及程序模块的命名遵循一定的规范,而不是看上去很随意的样子,至于英文还是中文倒无关紧要。

2.结构清晰,可读性强:接手的工程师不需要花太多时间就能理解架构和逻辑。

3.隔离:输入输出信号与逻辑隔离;

4.复用性:面向对象编程,基础组件有很强的复用性。

5.快速实现:开发效率高,调试周期短;

6.高质量:没有明显的、低级的程序Bug,尽量复用经过实践反复验证过的组件;

7.容错性:轻微故障以及不是特别重要的联锁失效不会导致停车。

8.易于维护,可以快速排除故障:人机界面上有完整的诊断信息,在故障时有比较完整的诊断信息,便于维护人员快速定位故障点。

命名规范

上面的第一点,关于命名,大家可以借鉴高级编程语言中的一些命名规范。但是工业自动化中的PLC编程不同于C、C#这些语言,因此也可以在借鉴现有的一些命名规范基础上每个公司内部约定一些自己的规范。举个例子,在具有多个远程I/O站的项目中,我们的I/O点命名可以带上I/O站的编码作为前缀,这样我们在调试时可以根据前缀很容易知道信号来自哪个I/O站。

程序结构

小项目如果不重视程序结构的划分,那问题不是很大。但如果一个大项目的程序结构乱糟糟,那对调试及后续维护绝对是一场噩梦。

为了保证结构清晰,我们在写程序时通常会划分好几层目录来规划程序,第一层我们会根据用途来划分。

pLC程序编写在哪接私活,PLC程序编写要求?

图1 按功能划分的目录

在上图中,文件夹OBs用于存放各个OB块,文件夹MES用于存放和MES交换数据的程序,文件夹Zone用于存放各个控制区域的程序,文件夹Common提供一些公共功能,文件夹HwLib.PLC是我们的组件库。

有的文件夹还具有第二层目录,比如存放控制程序的Zone。第二层目录我们通常会根据区域或者工艺段来划分。

pLC程序编写在哪接私活,PLC程序编写要求?

图2 根据区域划分的目录

在上图中,我们根据工艺特性将整个生产过程分为原料、处理、输送和仓储四部分来进行规划。而每个工艺段我们又根据功能及面向组件的原则划分为若干模块。

pLC程序编写在哪接私活,PLC程序编写要求?

图3 根据功能及面向组件的原则划分

在每个工艺段的程序处理上,我们又分为单体设备控制、信号处理、诊断等。如果该工艺段的设备较多的话,还可以按设备种类划分,比如驱动器、变送器等。

信号隔离

原则上,在控制逻辑中是不允许直接使用输入输出信号的,其弊端无需多言。有很多人的做法是用M或者DB来转换。实际上,如果我们采用面向组件的编程模式就无需考虑这个问题,因为它实际上已经完成了信号隔离。

设备组件化后,我们在控制逻辑中只需要访问对象的属性、方法,而无需使用I/O点。

pLC程序编写在哪接私活,PLC程序编写要求?

图4 顺控逻辑中访问对象属性

在上图中,“U2/G102.QRunning”就是实例化后的对象“U1/G102”的属性,该属性用于表示设备U1/G102是否在运行。这样控制逻辑就无需关注该设备相关的I/O点了,实现了逻辑和信号的隔离。

复用性

程序的复用性需要借助面向组件编程来实现。组件编程的灵魂在于封装,封装的核心在于抽象。封装可以隐藏对象的控制细节,通过开放接口的方式使调试工程师将更多精力集中在工艺方面,而无需太多关注一些底层细节。

封装通常分为两个层次,分别为设备级和工艺级,设备级是针对单个设备的封装,比如阀门、驱动器等。而工艺级是针对由若干设备组成的相对独立的一个工艺单元的封装,比如汽包压力控制单元、补水单元等。工艺级组件是通过对设备级组件的继承而来。具体请参见我们的《TIA Portal高级编程》技术教程。

pLC程序编写在哪接私活,PLC程序编写要求?

图5 设备与工艺单元

快速实现

只有在大量成熟的、可复用的组件基础上才可能达到快速实现。对于小项目,规划好程序结构后,我们首先对项目使用到的各个设备进行实例化,并分配I/O信号。

pLC程序编写在哪接私活,PLC程序编写要求?

图6 设备对象实例化

对于HMI也是同样的方式,根据PLC使用的组件,将相应的视图组件拖到画面上,从设备实例中将接口变量拖进去就可以了。

pLC程序编写在哪接私活,PLC程序编写要求?

图7 接口变量

如果是比较大的项目,设备比较多,那么我们可能会首先使用框架配置表来配置。

pLC程序编写在哪接私活,PLC程序编写要求?

图8 HwLib.GCF框架配置表

然后使用项目生成器来生成程序。

pLC程序编写在哪接私活,PLC程序编写要求?

图9 项目生成器

设备实例化后,然后只需要关注具体的工艺实现就可以了,整个项目效率可以提升60-70%左右。

诊断与容错

快速诊断是指我们的程序要提供完善的诊断信息,帮助维护人员快速定位故障点。我见过很多程序在运行多年后,出了故障依然需要维护人员打开笔记本监控程序才能找到故障点,这样的程序我个人觉得是失败的。一个良好的程序在故障时应该只需要凭借人机界面上提供的信息就可以定位故障点。

容错性,是指软件检测应用程序所运行的软件或硬件中发生的错误并从错误中恢复的能力。这里的容错性指的我们的程序需要足够的健壮,比如在某些已经确认、不会对系统安全有重大隐患、一时无法恢复的故障允许采用临时屏蔽的方式继续运行,而不至于造成系统停机。

以上是对好程序的几个必备条件的简单解释。当然也可能有考虑欠周的地方,欢迎大家补充。

HwLib(慧兰博)技术团队专注于高端自动化技术,如果您对我们的技术教程感兴趣的话,可以X宝上搜索店铺“hwlib”或者“慧兰博”

pLC程序编写在哪接私活,PLC程序编写要求?

pLC程序编写在哪接私活,PLC程序编写要求?

关于HwLib(慧兰博)技术团队的更多信息:www.hwlib.com.cn

HwLib(慧兰博)技术团队技术资料:

https://www.jianguoyun.com/p/DR20ZAEQq_K3CBivk5kD

或者

https://pan.baidu.com/s/1EQ3imuMKVzHCDc3iCXDuaQ?pwd=1234

提取码:1234

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 sumchina520@foxmail.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.summeng.com/49719.html