APP下载

基于组态软件和人脸识别算法的电梯运行仿真设计

2021-03-16章国华

船电技术 2021年2期
关键词:组态王组态人脸识别

章国华

应用研究

基于组态软件和人脸识别算法的电梯运行仿真设计

章国华

(武汉船舶职业技术学院,武汉 430050)

以OpenCV 4.0.0和KingView 6.5.5软件为设计基础,提出了组态软件下的电梯人脸识别仿真系统的设计方法,通过仿真程序验证了人脸识别算法的可行性,OpenCV4.0.0和KingView 6.55软件间的通信用虚拟串口软件实现,最后加入了数据管理,完整地实现了电梯的人脸识别电梯仿真系统。

人脸识别 组态 电梯 仿真

0 引言

人脸识别,是用摄像机或摄像头采集含有人脸的图像或视频流,并在图像中自动检测和跟踪人脸,进而对检测到的人脸进行识别,是一种基于人的脸部特征信息进行身份识别的生物识别技术。

在楼宇中人们最主要的搭乘工具是电梯,出于安全考虑,有电梯进入的控制需求,因此把人脸识别技术应用在电梯系统中,专门针对楼宇电梯安全防范而设计电梯控制系统,给楼宇电梯的安全性和实用性带来重大的变化[1]。

1 仿真系统的实现

1.1 OpenCV+VS2019环境构建

首先是OpenCV的版本选择。不同版本的Visual Studio需配置不同版本的OpenCV,通过查阅资料,其对应关系:VC15->VS2016 ( VS高版本可以配置低的VC,但低的VC版不能配置高的VS),这里我选择安装的是VS2019,安装的OpenCV版本是OpenCV4.0.0。

接着就是下载OpenCV,双击下载的OpenCV4.0.0.exe,选择你熟悉的路径解压,也就是安装路径,根据VS2019工程的要求配置Path系统环境变量,即编辑path,把之前解压好的OpenCV路径下的bin路径添加到Path系统环境变量中。接着在VS2019中配置OpenCV。软件环境准备好后,就开始新建工程,设计人脸识别程序。主要结构如下:

int main(void)

{

VideoCapture capture(0);//加载相机

init_comm();//串口初始化

UpdateDatabase(capture);//更新数据库

Train_model();//训练

FaceRecog(capture);//识别

return 0;

}

本控制软件使用了AT&TFacedatabase人脸数据库,人脸库中有40个文件夹,分别对应着40个人,其中每人10张表情不同的照片。每张照片在不同时间、不同光照、不同表情(睁眼闭眼、笑或者不笑)、不同人脸细节(戴眼镜或者不戴眼镜)下采集。其中所有的图像都在一个黑暗均匀的背景下采集的,而且正面竖直人脸(有些有轻微旋转)。在更新数据库时(UpdateDatabase(capture)),将新增的人脸数据按顺序依次加入到原始数据库中,增加相应的编号,这新增的编号是后面识别时要用到的编号,同时更新标签数据库。数据库更新采用手动方式或自动两种方式,采集10张人脸图片,手动方式便于使图片有不同的表情,增加识别可靠性,自动方便程序的调试运行。

接着就是对扩展了的人脸数据库进行训练(Train_model()),OpenCV现有三种训练方式,分别是Eigenfaces特征脸,Fisherfaces线性判别,LocalBinary Patterns Histograms局部二值直方图。本次将三种算法都加入到软件中,可以验证不同算法适用性。

有了数据库的训练后,最终目标就是识别(FaceRecog(capture)),当摄像头采集到含有人脸的视频时,会选取一张图片进行识别,如果识别到是数据库中的图片,则输出其相应的编号,随后到标签数据库中找到相应图片对应的名字,显示在视频中的人脸上,完成了识别。

本控制软件还有简单的数据管理,在文本文件中录入电梯乘客的个人信息,包括姓名、所去楼层、使用电梯的期限等必备信息,这些信息便于两个软件关于乘客信息的交流和相应功能的实现,识别出人脸后,在数据库中查找是否有此人,数据库中有,则判断此人外出还是回家,决定所要去楼层,这时就将电梯要运行楼层信息发给电梯运行系统,实现电梯定向和选层。

1.2 组态王电梯控制仿真系统设计

由于是电脑仿真,受界面大小的影响,电梯设计成三层楼的形式,技术上三层与多层基本原理没有多大差别,只是复杂性增加而已。规划好电梯结构后,在组态软件中实现过程如下。

在组态王KingView软件中设计仿真电梯时,根据电梯结构确定电梯控制的输入输出变量,并在组态软件的数据词典中定义。定义了变量后,就可在画面中设计电梯并作动画连接,最后组态王的命令语言设计控制程序,电梯的所有功能都是由程序控制完成的,根据功能要求去设计程序,这需要对电梯的运行原理非常清楚。电梯控制程序逻辑正确是电梯正常运行的必要保证,根据电脑显示屏分辨率确定电脑中仿真电梯的层数,通常三层就具有代表性,不能少于三层。接着就是要实现电梯平层的方式,本文用了上下平层感应器实现平层,用动画图形运行的距离来分别触发上下平层感应器,而且触发边与运行的方向有关。电梯平层时有一个平层触发信号,这个信号在PLC程序中是一个执行周期,在组态软件程序实现时用计数方式替代,效果也一样。再就是开关门延时和停站延时等,也要用计数的方式替代实现。本文电梯控制程序大致分为:传感器触发、轿内指令、门厅呼叫、定向、启动、开关门、停站、平层和加减速等几个部分。部分程序如下:

1.3 串口通信的实现

在VS2019中实现的人脸识别结果是乘客在基站应识别所去楼层,乘客不在基站,则要去基站,这些信息要传给组态王软件,用串口通信实现,所以要设计这两个软件的串口通信程序,用组态王的ascii码串行通信方式在VS2019中实现串口通信,根据组态王的串行通信协议来编写相关程序,仿真时,用Virtual Serial Port Driver(虚拟串口驱动vspd)软件来实现两个软件的串行通信,程序设计好后,运行前首先要指定好相应的端口,程序结构参数如下:

bool RecOk = 0; //

unsigned char ch[9];

uchar RecBuf[24];

uchar SendBuf[16] = { 0x40,0x30,0x32,0x30,0x31,0x36,0x35,0x30,0x31,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d };//接收组态王读的命令后要发的数据

uchar SendBufErr[8] = { 0x40,0x30,0x32,0x2a,0x2a,0x36,0x35,0x0d };//接收错误

uchar SendBufAck[8] = { 0x40,0x30,0x32,0x23,0x23,0x36,0x35,0x0d };//接收组态王写的数据正确

uchar SendDat0[NUM_BYTE] = { 0 }, RecDat0[NUM_BYTE];//这是程序中准备传递给组态王的,可以自行更改

uint SendDat1[NUM_UINT] = { 0 }, RecDat1[NUM_UINT];// VS2019中各有10个变量与组态王的对应寄存器

float SendDat2[NUM_FLOAT] = { 0 }, RecDat2[NUM_FLOAT];

串口通信与乘客相关的数据是电梯乘客在注册时录入,包括姓名,所住楼层,使用电梯的期限等。

2 仿真系统的功能

本电梯实现的功能:全集选控制运行功能(无司机,顺向截梯),超载保护功能,超载报警功能,安全触板保护功能,位置异常自动校正功能,轿顶检修功能,轿内检修功能,机房同检修功能,无呼梯自动返基站功能,泊梯功能,消防功能,消防迫降和消防员功能,轿内指令取消功能,司机操作功能,最远反向截梯功能,轿内优于轿外功能,安全触板保护功能,基站开门待客功能,满载直驶功能,人脸识别运行功能。功能的实现核心在于弄清人脸识别算法及做合理的选择。

3 结论

本文从仿真的角度出发,介绍了电梯人脸识别系统的设计方法,通过程序调试验证了算法正确性和有效性,用程序完整地实现了电梯人脸识别仿真系统,该系统可用于人工智能(机器学习)教学和电梯系统工程开发验证。

[1] 章国华. 机电控制技术实用教程[M]. 天津大学出版社, 2009.

Simulation Design of Elevator Operation based on Configuration Software and Face Recognition Algorithm

Zhang Guohua

(Wuhan Institute of Shipbuilding Technology, Wuhan 430050, China)

4.0.06.5.54.0.0

TP391

A

1003-4862(2021)02-0015-03

2020-09-24

章国华(1964-),男,副教授。研究方向:机电一体化技术教学与研究。E-mail: zhangguohua64@outlook.com

猜你喜欢

组态王组态人脸识别
人脸识别 等
基于PLC及组态技术的恒温控制系统开发探讨
揭开人脸识别的神秘面纱
基于PLC和组态的智能电动拧紧系统
基于组态王软件和泓格PIO-D64 板卡的流水灯控制
PLC组态控制在水箱控制系统的应用
铸造行业三维组态软件的应用
MATLAB实现组态王中TCP/IP读卡器监控方法
基于类独立核稀疏表示的鲁棒人脸识别
基于PLC与组态王煤矿压风机的设计研究