软件工程标准化在PLC程序设计中的应用

2021-03-04 07:42卢紫华
港口装卸 2021年1期
关键词:程序代码功能块程序设计

卢紫华

上海振华重工(集团)股份有限公司

1 引言

PLC(Programmable Logic Controller,可编程逻辑控制器)广泛应用于港口大型机械电气控制、自升式海洋石油钻井平台电气控制、大型工程起重船电气控制等方面,积累了大量的实际经验和数据。但是这些经验和数据往往得不到有效的整理和总结,加之这些大型设备大多属于小批量定制化产品,形成了产品间设计非标的现象。因此,如何从中找到共性,提出适应性广的标准化设计方法,成为提高产品生产效率、增强产品竞争力的关键所在。在标准化设计方法的探索过程中,发现软件工程标准化有着更为系统和深入的研究,由于PLC本身是一类特殊的计算机,故而可以从软件工程标准化中借鉴方法,运用于PLC程序设计中,从而达到PLC程序设计标准化的目标。

2 PLC程序设计标准化方法

PLC程序设计的标准化方法先从内容或者方法层面进行流程的分解,将分解的内容称为要素,要素的有机结合便构成了标准化的设计。流程标准化设计完成之后需要对各个要素分别进行标准化的设计。

2.1 PLC程序设计的要素分解与有机结合

根据软件程序设计的一般性方法结合PLC程序设计的特点,可以按以下5个要素对PLC程序设计进行分解:文档的建立与管理、PLC系统的外部接口、变量定义、程序架构、软件检验。

程序的架构是PLC程序设计的核心,其他要素都围绕其展开和为其服务;文档为程序设计提供依据、指导、检验以及数据关系;变量是程序设计的数据流表达;外部接口为PLC系统和执行机构、人机界面以及第三方系统提供通讯;而软件的检验则为程序的准确率提供保障。通过以上这4个要素,基本能够确立程序要实现的目标,以及设计程序所需要的“原材料”,接下来便是通过适当地方式也即标准化的程序架构来实现程序的功能[1-3]。

程序要素的有机结合就是从流程上来完成程序的设计,可以分为5个步骤,分别为确定所需文档、需求表及变量表等内容,开始程序代码设计、联调联试、试车(见图1)。按照这样的流程,PLC程序设计标准化的设计问题实际上转化成要素的标准化设计问题。

图1 程序设计流程图

2.2 PLC程序设计的要素标准化设计

不同的程序设计所需要的文档种类和数量是不同的。根据不同的功能、时间节点、文档对于程序的作用,可以把所需的文档归成几类,从功能角度分类可将文档分为:功能/工况说明类文档、变量信息类文档、接口类文档、程序设计辅助类文档以及检验类文档。

实现接口的标准化,首先得根据具体的项目情况确定应用哪种通讯协议,确定好通讯协议之后,需要确定具体的传输数据,包括数据的方向性和数据的数量以及数据的实时性要求。

变量的标准化则分为输入输出变量的标准化和中间变量的标准化。对于输入变量,由于不同项目的不同要求,某一部件的物理地址往往会产生变化。这些地址一旦更改,将导致对程序也需要相应进行修改,修改量通常较大。鉴于这种情况,需要在物理地址和变量名称之间引入一组中间变量,通过输入输出变量和中间变量的地址映射,以应对物理地址的变动和变量名称的固定。采用现行软件设计较多的做法,中间变量采用变量名而非物理地址作为变量的寻址方式。为了解决映射程序的实现问题,在下节中提出了程序代码的自动化生成的方法。

从程序的设计过程来看,软件检验可以分为3个内容:单个功能块的检验,联调检验以及测试检验,并针对各自特点,分别制定标准化检测方法。

2.3 PLC程序的架构

PLC的程序设计更多的属于结构化的程序设计,即整个程序由一系列功能块构成,功能块则是程序的最基本单元。这种结构的好处是能够使一些大的复杂的软件问题分解成诸多小的简单的软件问题[4]。然而经常使用的PLC程序模块有很多并不能做到功能的相对独立,有许多的互锁、状态等需要在程序中使用,根据它的这种特点,程序的架构可以分为3层。第一层是基本功能块,包括I/O输入输出处理、外部接口处理等,这些功能块的内部功能较为简单,但重复度高,且不受不同设备的不同工况的影响;第二层是机构功能块,根据基本功能块得到的数据来实现各个机构的功能,包含的内容有输入命令,运行允许,驱动器控制,接触器控制以及特殊故障检测;第三层是系统功能,是对控制系统的功能实现和处理,包括全局的运行允许,通讯检测等[5]。以基本功能块为基础,机构功能块为主要控制内容,系统功能实现了各个机构的整合以及全局的控制,实现了整个电气控制系统的功能。

3 程序代码的自动化生成方案设计

程序设计就能够适用这种代码自动化生成方法的前提是:PLC程序代码具有高度重复性,执行的是相同数据处理或者逻辑判断,而相关变量组是离散的,没有规律可循。以I/O变量和中间变量的地址映射程序为例,程序代码为赋值语句,高度重复;IO变量和与其对应的中间变量构成一个数据组,它们之间的组合具有离散性,没有规律可循。因此这样的映射程序可以采用程序代码的自动化生成方法。

该方案的原理是借助第三方软件生成PLC程序源代码,可利用VISUAL BASIC APPLICATION(VBA),以I/O地址映射为例,逐条将对应I/O地址赋值给中间变量,以下通过程序伪代码对循环代码的方案进行说明[6]。其中,i表示变量对应表中的行;j,k表示结果生成表中的行;Result.Cells表示结果生成表中的单元格。

j=2

k=3

n=Application.WorksheetFunction.CountA(Range("b:b"))′统计B列中非空单元格的数量

Fori=7 Ton+5 ′从第7行开始,到第5+n行结束

If第i行第F列单元格中的值不为空Then

Result.Cells(j,第B列)=源代码语言“A”+第i行第F列单元格中的值

Result.Cells(k,第B列)=源代码语言“=”+第i行第A列单元格中的值

j=j+2

k=k+2

End If

Nexti

生成的源代码复制到PLC程序中即可。

4 工程应用案例

以自升式石油钻井平台的抬升控制系统为例,从故障列表、程序代码的自动生成和程序架构的重新建立等方面进行案例分析。

标准化的故障列表主要优点为:

(1)故障通过统一的故障名寻址,便于识别和读取,无需关注物理地址。

(2)统一的PLC与人机界面接口表,有利于接口的标准化。

(3)通过标准的分类和故障级别的识别,能够方便地进行程序代码的自动化生成。

程序代码的自动化生成结果见图2。

图2 代码自动生成结果

程序架构的层次见图3,从重新设计的程序架构中可以看出该架构具有很清晰的层次和组织形式,在程序设计阶段,具有很明确的操作步骤,易于修改和扩展。

图3 抬升控制程序架构图

5 结语

立足于现代软件工程理论,从工作流程、程序设计的具体内容出发,概括出了程序设计过程中的几个要素,分析了这几个要素之间的关系,介绍了如何通过这几个要素的有机结合完成程序的设计,分别研究讨论了各个要素的标准化设计方法,从而形成一套完整的标准化程序设计方法。文章在提出方法后,就标准化设计方法的实现做了详细介绍,最后结合实际的工程应用案例做了分析。通过实际项目的操作,证明了该标准化方法以及相应的程序代码自动化生成方法的可行性,获得了良好的效果,为程序设计的标准化信息化提供了很好的方案,具备推广价值。

猜你喜欢
程序代码功能块程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
计算机网络信息安全未来发展趋势
Ovation系统FIRSTOUT和FIFO跳闸首出比较
基于图元装接模式由程序流程图自动生成源代码
高职高专院校C语言程序设计教学改革探索
自定义功能块类型在电解槽联锁中的应用
PLC梯形图程序设计技巧及应用
基于MACSV6.5.2的锅炉燃尽风开关量调节门控制功能块设计
PLCopen运动控制功能块的研究与开发