基于VB的机房计算机电源监控系统

最新更新时间:2011-03-29来源: 互联网关键字:串行通信  单片机  Visual  Basic 手机看文章 扫描二维码
随时随地手机看文章

为了能实时、高效、方便地监控、管理机房计算机电源设备,并实现对机房的计算机集中监控、少人值守的目标,本文提出了一个机房计算机电源集中监控系统方案。本系统的目标是:通过相关软件、硬件的设计,实现由1台主机(上位机)通过单片机(下位机)监控多个机房中多台计算机的开关情况。即利用主机的监控软件与单片机进行通信,以实现对计算机电源的监控功能。本系统应具备如下功能:

(1)通过键盘或鼠标对多台计算机进行开关控制并对整个机房的所有计算机进行开关状态的检测。

(2)上位机与下位机能进行可靠、实时的通信。

(3)界面设计清晰,功能齐全。备有菜单及各机房的电脑分布图,并带有右键快速菜单。

(4)能根据不同机房中不同电脑台数自动调整布局。

1 软硬件的选取及上下位机间通信协议的定义

基于上述目标与功能,要实现本系统,首先要解决以下几个问题:

1.1 主机与单片机之间通信信道的选取

串行通信一次只传1个位,处理的数据电压只有一个准位,因此不容易漏失数据。如果再加上一些防范措施,数据漏失就更不容易发生了。串行通信端口(RS-232)是每部计算机上的必要配备,通常含有COM1与COM2 2个信道,一般的计算机将COM1以9 Pin的接头接出,而以25 Pin的接头将COM2接出。新一代的计算机均以9 Pin的接头接出所有的RS-232通信端口。通常与计算机连接的沟通接口是RS-232,它不仅实用简单,而且价格便宜。因此本系统采用RS-232串行通信方式用于上、下位机间的通信。

1.2 监控软件开发平台的选取

Visual Basic是Windows环境下的一个可视化软件开发平台。由于开放式的结构,Visual Basic允许外挂控件,因此有更多的厂商为Visual Basic撰写控件,供系统开发者选用,从而为开发者提供了更方便的系统开发方案。这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效地提高了应用程序的运行效率和可靠性。所以,本系统采用Visual Basic作为监控软件平台。

MSComm是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件。MSComm控件提供了二种处理通信的方法:事件驱动法及查询法。

(1)事件驱动法:OnComm事件是MSComm控件提供的惟一的事件。当有数据到达端口或端口状态发生改变或有通信错误产生时,都将触发OnComm事件,以捕获和处理这些通信事件和通信中产生的错误信息。通过查询CommEvent属性值,可以获得关于通信事件和通信错误的完整信息,进而进行处理。这是一种功能很强的处理串行口活动的方法,具有程序响应及时、可靠性高等优点。

(2)查询法:MSComm控件的CommEvent属性返回通信中产生的事件和错误类型,由通信控件自动检测和跟踪通信状态后设置。因此,在小程序中,程序员可以在每个重要的程序功能之后通过检查CommEvent属性值来检测事件和通信错误。本系统采用查询法作为处理通信的方法。

1.3 单片机型号以及芯片的选取

单片机主要采用Intel公司MCS-51系列8031单片机,并使用MCS-51汇编语言开发。

1.4 监控软件与单片机之间通信协议的定义

主机与单片机要进行实时、可靠的通信,必须定义一套良好的通信协议。

本系统的通信参数设置如表1所示,采用的通信协议如表2所示。

其中:Roomadd:机房代码(即单片机的地址码),1个字节,由01H开始编码。

Command:命令码,1个字节(命令码的格式见表3)。

Byte count:数据长度,要监控的计算机总数量+1(最后1帧1为校验帧),1个字节。

Pcadd:PC编号,每个PC编号1个字节,由01H开始编码。

Checksum:算术校验和,1个字节,是所有PC编号的算术相加后对256取模而得到的。

Cmdresponse:单片机回应的采集数据,具体格式见表4。

其中:D7为1,表示该PC状态为“开”;D7为0,表示该PC状态为“关”。PC地址由01H开始编码。约定00H为接收成功反馈信号。

2 系统总体设计模块

根据本系统要实现的功能,可以将系统划分为如图1所示的3个模块。

2.1 监控部分

监控部分可以分为监测和控制2个模块。监测模块的主要功能是对整个机房的所有计算机或某几台计算机进行开关状态的检测。主机通过串口向单片机发送监测信号,然后根据单片机的反馈信号(即模拟的计算机开关状态数据)在界面上显示出模拟状态。若没有收到单片机的反馈信号,则提示操作失败。控制模块的主要功能是对机房的所有计算机或某几台计算机进行开/关控制。主机通过串口给单片机发开/关信号。若主机收到单片机反馈的操作成功信号,则表示操作成功,在界面上显示对应计算机的开/关状态。若没有接收到单片机的操作成功反馈信号,则提示操作失败。

2.2 系统设置部分

该模块对本系统进行一些设定。如机房配置:包括机房代码、机房名称、机房计算机数量的设定,定时监测时间的设定,生成报告的设定等。这些设定使系统能适应不同需要,更灵活地在不同场合运作。

2.3 历史记录查询管理部分

该模块的主要功能是记录每间机房中所有计算机的开机、关机时间,并提供查询功能,使管理人员知道某台计算机开关时间及在某一时刻某台计算机开关状态。

3 主界面设计

用户界面应具备如下的特性:

(1)使用简单:界面简洁明了、操作方便。

(2)具有容错能力:具有错误诊断、修正错误以及出错保护的功能;

(3)系统能够按照用户的希望和需要,提供不同详细程度的系统响应信息,包括反馈信息、提示信息、帮助信息、出错信息等;

(4)在完成特定功能的前提下,使用户界面越简单越好。用户界面应能保证用户正确、可靠地使用系统,保证有关程序和数据的安全性。

为方便管理人员监控,在用户界面设计中采用图形化人机界面,力求简单灵活。在系统主屏幕中,以1个图标表示机房的1台电脑,并用不同颜色的图标来表示电脑开关的不同状态。

4 初始化设计

在进行功能设计之前,首先要对系统进行初始化设计,主要初始化流程如图2所示。

4.1 通信控件MSComm的设置

本系统对控件的具体设置如下:

MSComm1.CommPort=1      //使用COM1作为通信端口

MSComm1.PortOpen=True     //打开通信端口

MSComm1.InputMode=comInputModeBinary

//以二进制方式读取数据

MSComm1.InputLen=0//每次读取接收

//缓冲区的全部内容

MSComm1.Rthreshold=0    //使用查询方式,关中断

MSComm1.Settings=″9600,n,8,1″ //通信参数设置,波

//特率9600,不作奇偶校验,8位数据位,1位停止位

由于每次发送和接收的数据长度都不相同,所以很难确定Rthreshold的属性值,以产生中断;另外,由于系统采用面向对象编程,每次是以某个事件触发发送和接收数据的,因此系统采用查询InBufferCount的值来决定是否接收数据,而不采用中断的方式。

此外,对于微机与单片机组成的数据采集处理系统,由于数据的传输多采用十六进制方式,所以将MSComm设置为以二进制方式读取数据。

4.2 根据机房配置数据表对系统进行初始化

因为本系统是采用动态方式显示数据的,机房的配置(机房代码、机房名、计算机数量)是存储在数据库(“机房监控.mdb”)中的机房配置数据表中,所以在装载系统时要取出数据表中的数据来初始化系统。

本系统定义了一个二维全局数组Public pcroom(1 To 100,1 To 2)As Variant来存储机房配置数据表中的机房数据。第一维表示机房代码,设定为最多可以有100间机房,并可以根据需要更改数组的下标来增加或减少机房的数量。Pcroom(I,1)表示机房名,Pcroom(I,2)表示该机房的计算机数量,i表示机房代码(1≤i≤100)。

4.3 界面中与机房有关的控件的初始化

在本系统中,与机房名有关的控件有4个,其中2个是ComboBox(Combo1,用来显示当前机房列表),一个在主界面(Form1),一个在历史记录查询窗口(frmhistory);另外2个是ListBox,它们在定时监测机房设定窗口(fixchkset),名称为lstall和lstsel。

5 功能设计

5.1 监测模块

监测模块的主要功能是发监测信号给单片机,要求读取特定计算机的电源开关状态。监测部分根据操作方式可分为定时操作与非定时操作(人工操作);根据所监测的计算机数量分类,可以分为监测全部和部分监测(要监测的计算机数量大于等于1,小于机房的计算机总数)。

定时监测功能是为了使机房管理人员能够及时了解特定计算机的开关状态而设置的。它允许使用者通过设定时间间隔及选取要操作的计算机,实现每隔一段时间驱动一次监测事件,从而返回特定计算机在当前时刻的开关状态。此项功能不但免去了人工操作的麻烦,而且提高了系统的实时性。使用者不必长时间在电脑面前观察每台计算机的状态。只要设置了定时监测功能,系统就会每隔一段时间自动进行监测,管理人员只要查看历史记录就可以知道这些计算机的使用情况。定时监测实际上利用一个定时器控件,当到达定时器的时间间隔时,就触发一次监测事件。

5.2 控制模块

控制部分要实现的功能是发开/关信号给下位机,要求将特定计算机的状态设为开/关。若接收到下位机的正确反馈信号,则在界面上将相应计算机的图标置为开/关;若接收出错,则给出出错提示。根据要控制的计算机数量,可以分为部分控制(开/关)和全部控制(全部开/全部关)二类,前者控制一台或多台计算机,后者控制当前机房的所有计算机。

5.3 设置部分

5.3.1 修改密码

本系统在启动时要求管理员输入正确的密码才能登录系统。在登录之后可以重新修改密码。

5.3.2 生成报告设定

本系统提供了将机房计算机当前时刻的状态、相关数据生成报告的功能。报告的格式为以机房名命名的文本文件。使用者可以根据需要选择不同的报告生成方式。

5.3.3 定时监测机房设定

除了提供定时监测功能外,本系统还提供了定时监测机房功能,以方便管理者定时自动监测多间机房的计算机。

5.3.4 生成报告设定

本系统提供了将机房计算机当前时刻的状态及相关数据生成报告的功能。报告的格式为以机房名命名的文本文件,使用者可以根据需要选择不同的报告生成方式。

5.3.5 定时监测机房设定

除了提供定时监测功能外,本系统还提供了定时监测机房功能,以便管理者能定时自动监测多间机房的计算机。

5.3.6 机房配置

本系统可以根据不同的机房配置来动态改变界面的相关显示。本系统提供了机房配置功能以方便管理者在系统运行时更改机房的配置。

5.4 历史记录查询管理

本系统能够对所有计算机的开关机时间做系统记录。每台计算机只要经过了开机→关机这个过程,就将它的数据存放到数据库中。这些记录有助于管理人员管理机房,了解计算机的使用情况。

6 系统的安全性、可靠性和实时性

6.1 系统的安全性

本系统运行时有二种登录方式,一种是一般用户,以用户名guest登录;另一种是管理员,以用户名administrator登录。第一种登录方式不需要登录密码,但它的功能有限,只能进行监测和监测机房操作,不能做其他操作,也不能对系统进行设定或者查询历史记录;第二种登录方式的登录者为管理员,需要输入正确的密码才能登录,登录成功后可以使用系统的全部功能,包括监控、设定和查询功能。

当使用者试图以其他用户名登录的时候,系统会弹出提示框,提示用户要以guest或administrator用户名登录。当使用者以用户名administrator登录,但输入了错误的密码时,系统会提示输入密码错误,让用户重新输入。如果连续3次输入错误,则强行退出系统。登录密码存放在当前路径的psw.txt文件中,并进行了简单的加密,其他人可以打开该文本文件,但是看到的是加密后的字符,不是原文,所以具有一定的安全性。

6.2 系统的可靠性

6.2.1 通信可靠性

本系统对各机房进行了编码(机房代码),并将它作为下位机的地址码,编号从01H开始。上位机与某下位机通信时,先发送地址码,待握手成功后再发送监控命令码。若在限定时间内收不到单片机的正确响应信号或收到的信号不是00H,则转出错处理。

第一次握手成功后,上位机继续发监控命令码和数据长度(要监控的计算机数量+1,1为校验和帧)给下位机。发送完毕后,就等待单片机回送正确响应信号00H,若在限定时间内收到正确反馈信号,则第二次握手成功。否则,转出错处理。

第二次握手成功后,上位机开始发送要监控的PC地址,并累加求校验和。发送完毕后,再发一帧校验和帧。然后等待单片机回送正确反馈信号00H(第三次握手)。若超时或信号错误,则转出错。

第三次握手成功后,上位机接收单片机传来的一帧数据,这帧数据的值表示下位机即将要向上位机发送的数据长度。上位机接收单片机回送的数据并累加校验和,若接收正确,则向单片机发送00H信号,表示此次操作成功。

上述三次握手,为上位机与下位机的通信提供了较高的可靠性。

6.2.2 系统可靠性

本系统提供了较完善的出错处理机制及丰富的提示信息,从而提高了系统操作的可靠性。如:输入出错提示,包括文本框输入非法字符,输入错误密码等等。

6.3 系统的实时性

在上位机与下位机通信时,系统根据要接收的数据长度定义了不同的超时时限,以保证系统的实时性。

7 总 结

在本系统中,单片机负责采集电源的模拟开关量,主机通过该系统的监控软件,可以得到单片机采集到的监测信号,在界面上显示出来。同时,该监控软件能对多台电脑进行开关控制,将这些控制信号发送到单片机。当单片机接收到这些控制信号之后,能驱动相应的模拟器件,将这些信号在硬件上反映出来并反馈信号给主机,从而在软件界面上显示出模拟状态。本系统界面菜单结构清晰,布局合理,功能齐全,响应实时;电路部分设计合理,芯片选择恰当,调试方便;主机与单片机通信可靠,数据的实时采集和传输次序正确。

关键字:串行通信  单片机  Visual  Basic 编辑:神话 引用地址:基于VB的机房计算机电源监控系统

上一篇:智能电池系统的应用
下一篇:自制镍氢电池充电器电路图

推荐阅读最新更新时间:2023-10-13 10:48

关于单片机串口通信波特率问题
今天学习单片机串口通信,编写了单片机与PC机的通信程序,即PC机向单片机发送信息,单片机再把信息返回给PC机,并显示出来。在调试的时候总是没有结果,检查了半天,发现错误,而且很容易被忽略的错误。用串口通信计算器在确定波特率的时候,一定要注意误差,如果过大的话(我第一次设定波特率9600,误差是6%多),通信也是有问题的,一定要把误差尽量缩小,1%以内。第二次设定波特率2400,误差1%以内。 下面是代码: /************************* * 串口通信 *************************/ #include reg52.h typedef unsigned int u16; typed
[单片机]
基于AT89S52单片机的电子闹钟设计
一、系统功能要求 电脑时钟的任务要求为:系统一运行就从00点00分00秒开始计时,并在数码管上显示时、分、秒当前值。 二、系统整体方案 1、明确任务 基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;六个数码管动态显示时、分、秒的当前值。 2、 硬件和软件功能的划分 本课题要求实现的功能比较简单。百分之一秒的控制由at89s51的定时器T0完成;百分之一秒寄存器的内容加一由T0中断完成;动态显示、矩阵式键盘。 整体框图如下: 1. 单片机的选择 AT89S52,它是一个低电压,高性能CMOS8位单片机,内含4k bytes的可反复擦鞋的制度程序存储器(PEROM
[单片机]
基于AT89S52<font color='red'>单片机</font>的电子闹钟设计
基于STM32单片机启动文件的作用和启动过程解析
一、启动文件的作用是: 1.初始化堆栈指针SP; 2.初始化程序计数器指针PC; 3.设置堆、栈的大小; 4.设置异常向量表的入口地址; 5.配置外部SRAM作为数据存储器(这个由用户配置,一般的开发板可没 有外部SRAM); 6.设置C库的分支入口__main(最终用来调用main函数); 7.在3.5版的启动文件还调用了在system_stm32f10x.c文件中的 SystemInit()函数配置系统时钟,在旧版本的工程中要用户进入 main函数自己调用SystemInit()函数。 至此可以总结一下STM32的启动文件和启动过程。首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向量表,其第一个表项是栈顶地址,
[单片机]
基于STM32<font color='red'>单片机</font>启动文件的作用和启动过程解析
51单片机定时器模式2与波特率的应用
这里我们主要说的是波特率和定时器2的应用。 一般来说,我们串口通讯用到的都是异步串行通讯,工作的方式为方式1. 方式1即为发送一个完整的信号为10个bit.起始信号为低电平,终止信号为高电平,串口通讯的两根线在平常时候都是处于高电平状态,当一旦有数据要进行转发的时候,电平拉低,通讯芯片马上对信号进行监听。这样子就能正常收发数据了。 一般来说,我们都是采用定时器1的模式2(自动重装模式)来作为波特率发生器的,同理,定时器1的中断也就被我们遗弃了,因为为了波特率产生的时候不会受到干扰(如果定时器1有中断函数,那么处理中断函数会关闭定时器1中断,这时候波特率发生器就处于关闭状态了)。根据STC给我们的文档,定时器1所具有的功
[单片机]
51<font color='red'>单片机</font>定时器模式2与波特率的应用
HOLTEK单片机-8LED霹雳灯
功能说明: HT48F49E控制8个LED构成的霹雳灯 介绍: 本例以 HT48F49E 为例,模拟流水灯的功能,用 LED 显示输出。PA 口每一位输出接一个 LED,串联一个470 电阻到地,即可完成初步电路。 通过这个例子,用户可以了解到 HT48XX 单片机输入输出口的基本用法。 电路设计: PA0-PA7 用作输出,每一位连接一个电阻来控制一个 LED。通过左移(RLC)、右移(RRC)指令来控制点亮的 LED 左右移动。电路图如下: 完整版本的源程序下载地址: http://www.51hei.com/f/htpld.rar 程序: #include HT
[单片机]
HOLTEK<font color='red'>单片机</font>-8LED霹雳灯
激光治疗仪中的触摸屏接口设计
script type=text/javascript --> /script   引言   随着社会自动化程度的提高,人机交互能力急需大的转变,向着更方便使用、更直观的方向发展。激光治疗机主要应用激光的物理特性作用于人体,产生机体化学反应从而达到治疗疾病的目的。激光治疗机作为一种精密仪器需要精确的控制及防尘、防静电、防潮等方面的严格要求。激光治疗机输入设备采用触摸屏控制,既是基于以上要求也是从方便使用者操作和界面直观的角度考虑的。触摸屏的应用使得数据的显示和数据的输入结合为一体,简化了整个设备。   1 触摸屏原理   触摸屏附着在显示器的表面,与显示器配合使用。通过触摸产生模拟电信号,经过转换为数
[嵌入式]
盛群推出HT48R06xG与HT46R06xG内建OPA与比较器系列微控制器
盛群半导体推出HT48R06xG与HT46R06xG内建OPA与比较器系列MCU。I/O Type HT48R06xG系列家族成员共4颗、A/D Type HT46R06xG系列家族成员有3颗,I/O Type分别是HT48R064G、HT48R065G、HT48R066G与HT48R0662G;A/D Type分别是HT46R064G、HT46R065G与HT46R0662G,且HT46R06xG内建有12-bit A/D与8-bit PWM,可减少外围零件、缩小PCB Size及降低成本,非常适合各式小家电、需讯号放大处理的应用。 HT48R06xG与HT46R06xG的特点在于全系列工规(-40~85℃)、工作电压2.
[单片机]
单片机中最小二乘方滤波器的向量测量和功率计算
    摘要: 提供了一种每周波四点采样的最小二乘方滤波器,通过整型变换和查表求根等优化算法,可在单片机中实现相量的快速测量。分析了滤波器中相量的相位关系,并提供了两线制功率的计算方法。     关键词: 最小二乘方滤波器 向量 单片机 功率 目前,以单片机为基础的数字式电气测量、保护装置已成为主流形式。交流信号直接采样也已成为一种普通的方法。快速傅立叶算法是其中的主要算法,而最小二乘方算法,计算量很大,特别是在单片机的处理能力有限的情况下,既要保证实时性,又要保证计算速度,不经过精心设计和程序优化,很难保证二者的统一。 通过减少采样次数、使用每周滤四个采样点拟合的滤波器和一套优化措施,使该算法计算速度
[嵌入式]
小广播
最新电源管理文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关:

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved