设备监控系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设备监控系统
一、课题内容和要求
1. 基本要求
(1)需求分析与概要设计。需求分析完成以后,对数据库表、界面及各功能模块做出概要设计。
(2)设备管理。提供需监控设备的增加、修改和删除功能。同时管理人员还可以为所管理的设备设置性能数据的告警门限值。
(3)设备监控。每隔一段时间采集保存在数据库中的性能数据,当性能数据超过告警门限值,则生成告警;当性能数据恢复正常,则取消告警。
(4)告警显示。当告警持续一段时间(该时间可以设置)后,需要向该设备的管理人员发送一个消息。每个设备可以有不同的管理人员。
(5)消息查看。管理人员可查看、删除发给他的消息。
(6)性能数据采集程序。该程序部署在需监控的设备上,用于采集该设备的CPU利用率和内存使用率,并写入到数据库中。
(7)测试。对系统中各个模块进行全面的测试,完成测试报告。
2. 扩展要求。
(1)运行日志采集。监控系统可以采集各个设备上的运行日志。监控系统管理人员通过日志查看设备的运行详情。
(2)能够较完美地显示性能数据的变化规律。
二、需求分析
在该部分中叙述每个模块的功能要求:
首先是用户界面的编写:该部分可分为两部分,即客户端与服务端。这两个部分主要是实现对于界面的编写以及为后续功能的注入编写好回调函数接口,由于是我们是使用GTK/Gnome编程,没有使用glade这样的工具,所以编写图形界面的编写代码量较大,这两部分由两人分别完成。
其次是数据库德操作与门限值的设置,我们使用MySQL数据库,门限值的设置也是使用图形化界面。由于该功能比较单一,可以独立出来,所以由一人足以完成。这部分的功能就是通过图形化界面使用SQL语句完成对数据库中对应表的对应值的修改。
另外就是完成对网络传输功能的模块,该模块主要功能就是网络信息传输与接收,
也是分为客户端与用户端的,所以由两人协作完成。目的就是完成对于数据的传输,使用的是socket套接字编程,采用的是UDP协议。
最后再由一人完成对整体模块的整合。
三、概要设计
首先,系统整体结构:
把数控机床和监控计算机通过网络设备组成一个总线式局域网,并使其运行在C \ S模式下。作为服务器端的数控机床安装有PC式的数控系统,负责工件的加工。作为客户端的监控计算机设置在生产现场或监控室内,用于显示各数控机床状态及对其进行远程控制。
进行监控作业时,监控计算机(客户端) ,向每个数控机床(服务器端)发出请求,数控机床接收请求后并做出响应,返回执行结果,监控计算机接收到信息后,经过处理,在用户界面上显示,完成一个监控流程。
服务端的软件设计和实现:
目标数控机床内安装有实时Linux操作系统及数控软件,数控软件负责控制加工,记录及显示相关的加工参数。要对其实行远程监控,需要再加入一个网络通信软模块,负责数据、指令的接收,处理和发送。该模块可以使用L inux下的Socket实现。网络模块的工作过程为:当数控软件启动时,网络模块进行初始化,首先调用系统内的socket ( )函数建立一个套接字,并获得系统返回的socket描述符,再调用bind ( )把套接字与网络参数(地址族, IP地址)进行绑定,然后使用listen ( )侦听网络。此时当客户端对其发起连接( connect ( ) )时,则调用accep t ( ) ,建立起服务器端和客户端之间的连接。部分C语言实现代码实现如下:
server_sockfd = socket (AF_ INET, SOCK_STREAM, 0) ;
/ /建立Socket,AF_ IN IET表示IP地址族, SOCK_STREAM,
表示使用TCP协议
bind ( server_ sockfd, ( struct sockaddr 3 ) &server_ address,
server_len) ;
/ /绑定Socket和IP地址
listen ( server_sockfd, 5) ;
/ /监听网络
在监控过程中,网络通信模块通过receive ( )接收客户端发送的指令,经处理和判断后,读取或修改数控软件内的相关内容和参数,并把执行结果通过send ( )发送回客户端。
客户端的软件设计和实现:
客户端软件用于向生产管理人员显示各数控机床的信息及对其进行控制, 运行在安装有W indows或Linux操作系统上。该软件将分为3相对独立的部分进行设计:网络通信,中间层,用户界面。网络通信通过Socket实现,完成发起\关闭网络连接,数据发送和接收的功能。当用户需要连接数控机床(服务器端)时,软件调用socket ( )建立一个套接字,并获得一个socket描述符,然后调用connect ( )和远端监听中的服务器进行连接,连接一旦建立,就可以通
过send ( )及receive ( )进行数据的发送和接收。需要关闭监控时,可以调用close ( )关闭连接。L inux和W indows系统都提供有Socket的相关函数,可以直接调用,在L inux下包含在sys/ socket. h,在Windows下包含在winsock2. h中,在不同系统下编译时可以通过Makefile和程序
中的宏定义选择不同的头文件,部分实现代码为:
#ifndef __W IN32__
#include < sys/ socket. h >
#else
#include
#endif
/ /头文件的选择
客户端进行网络连接时,可以通过connect ( )函数实现:
err = connect ( sock, ( struct sockaddr 3 ) &servername, sizeof
( servername) ) ;
当需要同时监控多台数控机床时,可按以上过程建立若干个连接,每新建一个socket,系
统返回的socket描述符(程序中的sock变量)都是不同的,根据该描述符即可区分各个连接,区分每一台被监控的数控机床,使数据的收发不会发生混淆。为保证数据发送和接收的可靠性和连续性,网络通信部分将以独立线程方式运行。
整个网络通信过程如图所示:
中间层处于网络通信和用户界面之间,包括几个功能:数据格式转换,提供功能\回调函数和数据暂存。由于用户界面是根据用户的需求而订制的,具有很大的可变性,为了保证界面的强可塑性和灵活性,软件接收到得数据不会直接被界面接收和显示,而是先把接
收的数据进行转换后存储在一个数据结构中,再由界面读取显示。功能\回调函数为软件提供各种控制功能,供上层界面调用。
程序中定义一个结构体( struct)来描述数控机床的各种状态:
typedef struct StrMachineState
{ char ProgramName[ 400 ];