方志辉,任存杰,崔立卿,方 驰,房旭雪
(国网浙江省电力公司岱山县供电公司,浙江岱山316200)
随着“物联网+”发展模式的不断推进,人工智能技术的逐日普及,配网运行管理正在由人工粗放管理模式逐渐向人机协同智能管理模式转变。微电网、分布式电源以及各类电力设备的不断接入,使配电网设备管理变得更加复杂,故设备基础台账直接影响着智能电网建设的安全。
为适应配电网发展,规范统一配电网设备命名,确保电网安全运行,提高配电网调度运行管理水平[1],公司发布了《国网浙江省电力公司配电网设备调度命名规范》。而在制度落地执行中,发现在大量设备的投运和退役,命名不断更新变化中,人工记录经常会造成各类纰漏等问题。加之近几年来公司通过安装小电流接地故障报警装置、三遥开关,改造配网自动化等措施来提升配电网供电可靠性。系统高度集合和智能化大幅度减轻了人工操作的压力,但对系统基础台账的管理提出了更高要求,必须确保地区内配网设备不重名。
现新设备申报流程无系统保障,无良好的闭环环节,导致设备重命名、不规范及现场设备与系统命名不一致等情况时有发生,台账由各部门各自人工存档,易丢失,难追溯命名源头,给设备管理带来很大不便。
再则,合理安排电力设备检修是保障电网安全稳定运行的关键所在,可将检修成本降至最低[2],目前虽推行了设备全寿命周期管理制度,但缺乏自动预警功能。
本系统已申请了一项计算机软件著作权及两项外观专利,通过对设备命名的建档管理,既做到了对配网设备命名的统一管理、解决命名重复性问题,还加入了设备寿命告警等功能,为配网自动化系统以及AI智慧调度系统的应用提供了有力基础。
改进现有设备命名流程,实现设备命名闭环管理。新设备命名申请人根据相关资料上报设备建议命名,运行单位主管及调度部门对该命名进行层层审核,经确认无误后,正式下发设备命名文件。新设备正式投运时,由现场人员拍摄完现场命名牌并上传信息,系统自动进行数据核对,完成设备命名闭环管理,如图1所示。
图1 设备命名流程图
如小白胶支线C0467开关需投运,经上述流程发文后,在投运当日,运行人员拍摄完现场命名牌,由客户端上传图片,系统自动将图片设备名称与数据库内设备名称进行核对,如不一致弹出“错误对话框”,提示“现场设备命名与发文设备命名不一致!请核对现场命名牌正确性!”,如一致,则自动填报该设备的投运日期,如图2所示。
图2 现场设备命名核对图
本系统是利用QT Creator和SQlite数据库开发的一款应用程序[3]。
QT Creator是一款轻量级集成开发环境,能使开发人员能够利用Qt这个应用程序框架更加快速及轻易的完成开发任务,具有优良的跨平台特性、良好封装机制、丰富的API、支持2D/3D图形渲染,支持OpenGL和拥有大量的开发文档等优势。
SQLite是一款轻型的嵌入式数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中,占用资源非常低,能够支持Windows/Linux/Unix等主流的操作系统,并能跟很多程序语言相结。
登录系统后,主界面对6大类设备进行命名、退役管理维护,分别为开关、熔断器、刀闸、环网单元、开关站、配电室;用户设置项可以切换登录用户;帮助文档可以查看系统使用方法、版本号等相关信息。单击设备管理树的任一设备,看到该设备的基础信息、管理信息图,见图2。
设备编号查重功能是本系统特色之一。一是通过导入历史数据,系统将自动识别是否存在设备重复命名的情况,如有,则将列出所有重复命名或编号的设备信息。二是新录入设备,当客户端输入用户自定义编号时,系统将自动与已有数据库内的编号进行校对,如发现重复命名,则会提示“该编号已被使用”,无法进行信息录入。三是可全面查看设备编号使用情况,红色的代表已被使用,白色的代表未使用。运行单位可以直接从中选择需要的编号(实现某一个开关站、环网单元或一片区域内设备保持编号连续性),如图3所示。
图3 编号查重及选择图
电力设备在整个使用寿命周期内呈浴盆曲线[4]。该曲线是设备在运行寿命时间内,故障发展的规律,表现了故障率变化的三个阶段:早期故障期,偶然故障期,严重故障期。它是以使用时间为横坐标,以失效率为纵坐标的一条曲线。据调查设备运行状态发现早期故障失效时间比较短,例如油开关五年内设备运行良好,6~8年开始腐蚀、机械指示故障、开关拉不开等情况开始出现,大于9年,开关基本无法使用、属于危急,通过绿色、橙色、红色分别表示设备寿命全过程的三个阶段,系统将自动对橙色和红色设备进行预警提示,如图4所示。
图4 设备年限预警图
运行单位根据设备预警合理安排设备检修计划,降低设备故障率,提高供电可靠性。
除了上述功能外,还具有新增、修改、删除和统计功能。对精益化配网业务起了支撑作用,每一项操作都应事出有因,都能“追本溯源”。为相关部门统计新设备投运情况、设备状态分析等提供统一数据来源。
本系统基于Qt Creator环境下进行发开,它提供了完善的窗口模板,QMainWindow具有有菜单栏、工具栏、按钮、滚动条、框架等控件[5-6]。如图5为系统开发调试时的界面。
图5 系统开发调试界面图
main()主函数实现系统初始化,用户信息存储,调用QDialog::LoginWindow(登录界面)对话框,正确输入用户名及密码,则login.exec()为0,退出登录界面,显示MainWindow(主界面)对象,它继承QMainWindow类,最后等待各类事件发生。主函数代码如下:
int main(int argc,char*argv[])
{ //设置程序崩溃处理回调函数
SetUnhandledExceptionFilter(exceptionFilter);
QApplication a(argc,argv);
SQLiteControl::instance();//初始化
UserInfo::instance();//用户信息存储实例
LoginWindow login;
if(!login.exec())return 0;
MainWindow w;
w.show();
return a.exec();
}
输入用户名及密码错误,显示错误信息对话框,在登录按钮的单击信号槽添加代码:
errordlg->setWinowTitle(“错误信息对话框”);
errordlg->showMessage(“请检查用户名或密码!”);
MainWindow窗口是核心部分,完成创建界面头部、左侧菜单栏及右侧页面内容三方面工作。
void loadSetting(); //从数据库加载数据
void onUpdateSetting();//用户变更刷新
1)界面头部设计
调用 void initHeader()函数,设置 QMenuBar、QTitleBar窗口部件,显示窗体的菜单栏、标题栏具体效果。
2)左侧菜单栏设计
调用void initMenu()函数,显示设备管理树下的开关、跌落式熔断器、刀闸、环网单元、开关站、配电室6类设备,及用户设置、帮助文档。部分代码如下:
QStringList listItem;
listItem.append(QStringLiteral("开关"));
listItem.append(QStringLiteral("熔断器"));
listItem.append(QStringLiteral("刀闸"));
listItem.append(QStringLiteral("环网单元"));
listItem.append(QStringLiteral("开关站"));
listItem.append(QStringLiteral("配电室"));
listItem.append(QStringLiteral("用户切换"));
listItem.append(QStringLiteral("帮助文档"));
d->menu->setData(listItem);
3)右侧页面内容设计
当单击左侧菜单栏的选项按钮,调用void init-Body()函数,显示右侧页面内容,右上方四个功能按钮指向一容器类:
QStringList names={QStringLiteral("新增"),QStringLiteral("修改"),QStringLiteral("删除"),QStringLiteral("编号")};
并设置按钮样式、固定高度、图标:
btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//设置按钮样式
btn->setFixedSize(100,35);//设置固定高度
btn->setIcon(QIcon(iconsNames[id]));//设置图标
右其余部分为自定义风格表格模板:
StyledTableView::StyledTableView(QWidget*parent) :QTableView(parent)
该类用来显示每一类设备的基础信息。
4)信号与槽机制
信号与槽实现Qt组件对象之间的通信。当某个事件发生之后,如按钮检测到被点击,发出signal。如果有对象对此信号感兴趣,就会使用connect函数,将要处理的信号和自己的一个slot槽函数绑定,实现线程间的通信。系统中各按钮与窗口均用到了信号与槽机制,实行互相切换。登录界面,有一登录按钮QPushButton*login,被按下时,调用下面该按钮的connect函数:
connect(d->login,&QPushButton::clicked,this,&LoginWindow::check);
登录界面的登录按钮发出信息,登录界面接受到信息,调用槽函数LoginWindow::check,判断账号与密码是否正确。
5)防程序崩溃机制
建立了防程序崩溃机制,在系统调试运行时,如遇突发情况导致程序奔溃,会弹出CrashDialog对话框,并执行内部函数,关闭原程序,重新打开登录界面,并发送导致程序奔溃的消息,根据收到的消息不断改正完善系统。部分代码如下:
QLabel*msg=new QLabel(this);
msg->setText(QStringLiteral("抱歉!应用程序崩溃. 请点击[奔溃文件路径]并把文件发送给我们 以帮助我们找到错误 谢谢 "));
const QString email="***********@qq.com";
emailaddr->setText(QStringLiteral("联系我们-电子邮件:")+email);
emailaddr->setAlignment(Qt::AlignCenter);
restartButton->setText(QStringLiteral("重启"));
closeButton->setText(QStringLiteral("关闭"));
gotoButton->setText(QStringLiteral("奔溃文件路径"));//重启程序
void CrashDialog::restartApp()
{
qApp->closeAllWindows();Process::startDetached(qApp->applicationFilePath(),QStringList());
}
本系统具有很强的实际应用功能。2017年至2019年,岱山公司调度员累计发现重复命名及设备不规则30起。使用系统后,又发现历史重复命名28起,避免了设备重复命名4起,设备命名编号不一致3起,有效避免了误操作误调度,大大提高配网安全性与可靠性。系统目前已经集成了《国网浙江省电力公司配电网设备调度命名规范》,可实现该文件要求的功能,将人工执行规范变为计算机自动执行规范,杜绝了人工记录经常会造成各类纰漏等问题。设备名称与编号重复性、配网管理粗略的问题不仅在舟山市内存在,其他省市也存在,尤其落后地区,有的设备甚至还没有编号及名称,故具有推广性。下一步将继续开发一些实用功能,如改善目前纯年限预警功能,结合开关承受负荷大小、地理环境、绝缘接地、开关操作次数及已使用时间,利用数据融合手段,自动设置安全与危险不同标志,增强设备运维管理水平与电网安全性。