采用编程技术提高电厂设计专业的设计自动化水平

(整期优先)网络出版时间:2018-12-22
/ 2

采用编程技术提高电厂设计专业的设计自动化水平

米景平吴乾王振海

(青岛鸿瑞电力工程咨询有限公司山东青岛266100)

摘要:本文论述了用EXCELVBA编程技术,开发电气二次专业直流负荷计算软件的开发过程。软件的开发有利地提高了专业的设计能力,很好地解决了在设计过程中众多表格标准化、众多计算公式多次查验造成的设计效率低下及错误率解决效果不佳的问题。加快了设计速度、提高了设计质量,从开发软件过程中找出了一些编程技巧,在文章中进行一些阐述。

关键词:编程,直流计算,软件,自动化

一、前言

EXCELVBA是一个很好的编程工具,掌握它的方法及技巧,应用在我们的专业设计中,会起到意想不到的效果。现以开发电气二次专业直流负荷计算软件的例子来说明。

直流负荷计算是电气二次专业进行火力发电厂、变电站、核电站、光伏发电厂、风力发电厂等设计中非常重要的计算。计算结果决定最终蓄电池容量的大小,这关系到蓄电池重量、尺寸等参数的确定,如果结果算错或者偏差较大将影响到蓄电池房间的布置,对建筑、结构等其他专业的设计带来不便。更为严重的是,如果蓄电池容量计算偏小,放电时间不足,在发生交流电源失电、解列、停机等故障时,将导致电气保护、控制、DCS(分布式控制系统,作为电厂的控制中枢,通常具有数万条信息)等工作时间过短,对电厂、电站的安全可靠运行带来危害。由此可见直流负荷计算的重要性。

二、主要采用的技术及方案

为使软件能够自动提取参数、系数,自动完成计算,首先要完成直流计算流程框图。流程框图如下:

1、可以灵活地、实时地调取多个EXCEL文件中的内容

我们常规的应用一般是在一个EXCEL文件行列的单元格中进行程序编写、来调用本文件中的资源及计算,没办法涉及其他文件。但在很多应用情况下,我们需要调用未打开的EXCEL文件中的内容或需要将数据由打开的文件中写入到未打开的EXCEL文件中。

实现文件间数据互相调用,这牵扯到了EXCEL与EXCEL间数据传输的问题,为解决这一问题我们编写完成编程环境与EXCEL文件间接口程序,编写了传输间的协议,了解EXCEL文件存放机制,确定了存放位置。

要能实现EXCEL与EXCEL文件中数据信息的传送,还涉及到主程序如何做到打开调用文件取参数,取完后又能自动关闭调用文件。

为完成这一点我们主要采取如下方法:

①事先建立分析文件缓冲区,在缓冲区内设置存取标志。

②建立文件参数指示器,设置文件打开及文件状态指示器。

③设置系统运行环境变量指针。

设置主程序及被调用文件的环境变量指针,两个指针分别指向各自的程序运行环境。因为主控程序一方面要在主程序内运行进行数据的校核,另一方面要打开调用文件,在调用文件的环境中取数,所以运行环境要交叉变化,利用这两个指针,使程序自动的不加干预的分别在两个环境中切换,保证程序运行的正确。

通过以上措施,实现了EXCEL文件的信息自动转送。

解决这一问题的实用目的是了将运行程序、设计输入及设计输出分别独立分开存放。

1.2将计算程序文件与计算结果输出文件分开,避免了错误发生的同时主体程序的安全性得到了保证

一般程序将数据录入、运行程序、输出结果放在一个EXCEL表中(注:程序语句也没放入到后台),这种做法弊端:

①界面复杂,各种数据掺杂在一起,数据难找,结果输出数据多,关键数据需人工手动再一次摘出、整理才能形成最后结果,摘出、整理过程极易发生错误且速度缓慢。

②计算程序的原理及过程容易外传,不能很好的保护知识产权。目前我公司参与的大多是国外工程,国外业主要求提供详细直流计算书,由于原EXCEL表中计算程序与结果输出不能分开,导致我们的计算程序、计算方式很容易泄露出去。

计算程序文件、计算结果输出文件全部独立分开,好处:

①程序可以自动、快速生成标准化的结果文件,设计成品以只交出输出文件即可,原计算程序并没给出,从而起到很好的保护知识产权。

②层次分明,设计人员只需接触输入文件,将文件中的内容填写清楚不出错,那么输出文件将不会出错,并能自动生成,极大地减小了对设计人员的要求,大大节省了计算工时。

1.3将所有源程序写到后台,保证了程序安全性

原来的做法,程序写在EXCEL表格中,所有的用户都可见到,有时工况条件改变,需要用户在程序中更改。这就造成了程序不安全及错误发生概率。现所有源程序代码全放到了后台,用户根本接触不到,避免了上述情况发生。

2、将所有手动查表,转为计算机自动查找。

原程序手动查表次数多达12次,每次查表需查找的数据有55个,总供需查表数据为660个。之所以不能自动查表,其原因是只有知道某类蓄电池在某一放电阶段的放电终止电压的前提下,才可以根据这两个值查找相关的设计手册,找出需要的数值。问题是每种蓄电池的每个终止放电电压,都要根据好多输入条件组合,经多个计算过程,才能得到这个值,所以这个值是动态的,事先不知道,每次计算都需要12次程序中断,定出数值,手动查表,每次中断都需将55个容量换算系数值填入适当表格中,然后再继续计算(这些数值来源是要考虑11个放电阶段,每个放电阶段选取的时间有5秒,1分钟,30分钟,直到8小时共18档的数据,加起来有660个数据)。仅列出了计算过程的最后一个阶段,图中各个放电时间段及参数以及电流数值均需一一手动输入。

3、通过解析录入数据文件,将各部分数据分类放置到各自计算输入界面

录入数据文件包括六大类的输入数据:动力1,动力2,控制1,控制2,动力及控制1,动力及控制2

编程原理是:首先,计算程序文件调取录入数据文件的全部数据,并利用逐行扫描输入数据,分别一行一行的调入到计算程序数据存取缓冲区。然后,扫描数据存放缓冲区,根据数据类的关键标志,逐类分放到各部分输入数据区。

4、利用专家智能设计分析方法确定重要参数。

原来计算没有专家智能分析方法,每当程序运行到中间关键数据,必须停下来,由设计人员根据自己经验填写数据后,程序才能继续运行。这样的弊端,不是每个设计人员都是专家,有些设计人员遇到某种情况,不知道该如何做,还要找本专业经验丰富的人员请教,确定需填入的数据。

这样一方面耽误时间,另一方面由于见解不同,可能结果不是最佳数据。

在编写这类程序时,充分考虑到可能出现的人为填数情况,每种情况,收集了专家的见解,将专家智能选取方法,转为计算机可执行语言,无间断完成设计全过程。如下图:经过了层层计算后,选取蓄电池的电压及容量时,程序根据事先专家提供的三点选择原则,自动选取电压、电流值。

5、程序提供自动循环、反复再算功能,直到达到满意的输出结果

原计算方法没有重复自动计算功能,当算出结果不满足要求,就必须手动更改部分设计输入参数,从头开始重新一步一步的计算。因为程序以试算法输入数据,输入数据有变动结果就不同,有经验的设计人员可能试算两三次就合格,没有经验的可能要试算五六次,甚至更多。

现编写的程序可以循环反复计算,计算过程全由计算机完成,每次连带输入数据,在数分钟内即可全部完成。可原手算一次要八九天时间。

实现上步的做法:

程序每当算到关键点要判断中间结果数据是否满意,都会有提示数据是否可行,需要更换吗?此时可以做到更改,如输出结果不满意(不是输入数据错误造成结果部满意,而时组合的工况条件不是最佳时),修改终止放电电压,敲击重选确认键返回重算。

三、小结

上述只是用了开发电气二次专业直流负荷计算软件的例子,进行说明了几种程序的开发方法及技巧,这些方法完全可用在其它专业的程序编制中,以达到提高各专业的设计水平。本软件已获得国家颁布的软件著作权证书。

作者简介

米景平:高级工程师,工作单位:青岛鸿瑞电力工程咨询有限公司。职务:设总;吴乾:本科,工程师,工作单位:青岛鸿瑞电力工程咨询有限公司。职务:电气二次室副主任工程师;王振海:本科,工程师,工作单位:青岛鸿瑞电力工程咨询有限公司。职务:电气二次工程师。