论文部分内容阅读
[摘要]发电车是空调旅客列车的能源中枢。介绍发电车监测系统的功能和主机结构及要求,接着对Windows cE.NetT~I]SQL Server CE做简单介绍,然后讨论说明其在系统中的应用方法,同时以Visual Studio.NET编程环境下的c#语言为例,介绍基于该应用环境的设计和编程方法,最后通过应用测试结果,表明该系统达到预期的设计目标。
[关键词]发电车 嵌入式系统 监测系统
中图分类号:TP3 文献标识码:A 文章编号:1671—7597(2009)0210036-02
一、引言
发电车是空调旅客列车的能源中枢。发电车监测系统由于要安装在运行着的发电车上,因此对系统的软件硬件都需要符合车载系统的特殊要求。由于主机硬件运行在存在较大震动的恶劣环境下,要求硬件不能有风扇和旋转式的硬盘这些基本要求,因此硬件性能不可能很高,而主机对通讯、数据存储、显示又有很高的稳定性与实时性要求,因此需要一种实时、高效的嵌入式平台支持。本文先介绍发电车系统的应用软件平台需求,然后讨论Windows CE.NET嵌入式系统在本系统中应用的可行性与应用编程方法,接着对SQL Server CE在本系统中的可行性和编程方法进行了探讨研究。
二、发电车监控系统的应用软件需求
(一)系统功能
监测系统实时监测与发电机组运行相关的参数,按秒记录入数据缓存,自动计算累计开机时间和累计电能,按设定时间间隔(默认15分钟)记录到数据库。对所有监测的参数均可设置上下限,参数超过规定标准值时立即报警,并将事件点前后各20秒的数据存储到日志文件和数据库中。
系统使用LCD彩屏显示,图形化展示各项参数和开关量状态,报警时以醒目方式显示报警参数状态。系统在GPRS网络允许的情况下,随时向地面系统发送完整实时数据。
要求保存近1年内的所有数据,随时可以通过u盘导出指定数据。在需要时可以与地面服务器进行数据库同步操作,以便做进一步的分析挖掘。[1]
(二)主机结构及运行环境
发电车监控系统通过485总线,与各远程监测模块通信,获取实时数据,并对数据进行存储、分析、报警和显示等操作。其主机功能结构如图1所示:
该主机为系统的核心,负责数据的采集、存储与显示等操作。主机安装在运行中的发电车中,由于工况的需求,主机密封无风扇,存储使用工业级cF卡。其中单板机与GPS模块及GPRS模块的通讯都是通过独立的Rs一232接口。
(三)软件系统平台要求
因以上需求,要求系统为嵌入式系统,较小的系统核心,较快的启动和运行速度,需要有友好的人机交互界面,且要求可以进行多线程多端口的串口通信(本系统使用4个串口)。
另外要求编程和维护尽可能方便。
(四)数据存储要求
系统的数据存储分为日志文件存储和数据库存储。其中,数据库中存储的数据主要用于简单快速的检索。数据库存储的数据量根据设计,每年150M左右,循环清除。界面操作中包括查询在内的各项数据库操作不能有明显延迟。
三、Windows CE.NET的在系统中的应用研究
(一)Windows CE.NET系统介绍与讨论
Windows CE.Net是Windows CE 3.0的后续产品,它是一个功能强大的实时嵌入式操作系统,由于有众多强大工具支持,用户利用它可以快速开发出下一代的智能化小体积连接设备。借助于完善的操作系统功能和开发工具,Windows CE.Net提供了构建、调试和部署基于Windows CE.Net的定制设备所需的一切特性。Windows CE.Net的最大好处是具有可定制性。当它自带的驱动程序不能满足用户的要求时,需要用户自己编写相应的驱动程序。Windows CE.Net的开发工具Platform Builder就可以完成系统的定制和相应的驱动程序开发。[2]根据Windows CE.Net的特性,其嵌入式系统的各种特性非常适合发电车监测系统。
(二)编程方式
本系统使用Windows CE.NET 4.2,操作系统支持Microsoft.NETCompact Framework,系统编程软件使用微软的VisuaStudio.Net 2003(也可使用更高版本,如2005版,但联机方式会有所不同),编程使用c#语言。
安装Windows cE.NET Utilities v1.1 for Visual Studio.NET20031具包后,可通过以太网方式,将编程开发的Pc机与运行WindowscE.NET 4.2的主机设备进行连接,直接进行联机编程和调试。由于有.NETFramework的支持,使得用嵌入式环境下的c#编程方法和桌面机程序基本一致,作为嵌入式应用,其支持的Microsoft.NET Compact Framework是精简版的,支持的组件比标准版少一些。
在系统软硬件定制时,设计有4个串口,1个用于与GPS设备通讯(Rs一232),1个与GPRS设备通讯(RS-232),另两个与485总线上的设备通讯。每个串口设备都在不同线程中独立打开和通讯,串口调用API接口函数CreateFile打开,同样调用API函数ReadFile和WriteFile来对串口进行数据读取和写入。
主机系统软件结构如图2所示。
软件用面向对象方法,封装各个功能模塊,并在不同线程中同步运行[3]。其中主要分两个采集数据的通信模块,和4个读取数据的后期数据处理模块。
其中,实时数据实例为一个数据缓存类的实例,为程序的数据核心[4]。在对其读取和写入过程中会发生各个线程间的并发冲突问题。因此在可能并发出现的程序代码段使用以下代码控制:
System.Threading.Monitor.Enter(对象1)://防止冲突加锁
try
{
//需要防止并发冲突的代码段
………………
)
finally
{
System.Threading.Monitor.Exit(对象1)://防止冲突解锁
)
在需要防止并发冲突的代码开始的地方使用System.Threading.Monitor.Enter方法在指定对象上加排他锁,完成后再System.Threading.Monitor.Exit方法解锁,以防止此并发问题的出现[5][6]。
四、SQLCE在系统中的应用研究
(一)SOLCE介绍与应用讨论
SOL Server cE是用作快速开发的关系型精简数据库,它将企业级数据管理能力扩展到了基于Windows cE操作系统的嵌入式移动设备上。本系统使 用Visual Studio.NET编程,通过.NET Compact Framework支持下的ADO.NET技术访问操作SOL Server cE 2.0数据库。
SOL Server cE提供远程数据访问和合并复制功能,在需要的时候,可以实现与SQL Server服务器同步。本系统在正常使用情况下不需要使用这项功能,但这个功能使得本系统具有良好的扩展性。
(二)SOL Server CE编程方法
数据库设计好后,在项目中添加对System.Data.SqlServerCe组件的引用,可以编程实现对SQL Server cE的各项操作。以下以c#语言为例实现对数据库的连接准备[7][8]:
SqlCeConnection DBConnection;
//数据库连接
SqlCeCommand DBComand;
//命令对象
DBConnection=new SqlCeConnection(AConnectStrings)://通过连接串字符定义连接
DBCommand=new SqlCeCommand():
DBComand.Connection=DEConnection;
由于程序中有多个线程同时运行(如图1,至少有3个主要模块在独自的线程中对数据库有读写操作),而SQL Server CE2.0只支持单进程单线程的读写操作,因此对数据库操作同样需要进行防止冲突的代码保护,以下以c#语言为例,对数据库提交一个SQL命令,做一个删除一个临时表的操作:
System.Threading.Monitor.Enter(this)://防止冲突加锁
try
{
DBConnection.open();
DBCommand.CommandText=“drop table tabletemp”:
int Result=DBComand.ExecuteNonQuery()://通过Result获取操作影响到的行数
}
catch(Exception E)
(
//此处进行错误处理
)
finally
(
DBConnection.Close():
System.Threading~Monitor.Exit(this)://防止冲突加锁后解锁
)
在实际运行中,因SQL Server CE的单线程访问特性,数据库操作类被编程封装,并在系统中仅创建一个实例,多个线程可以并发调用。以上代码在实践中证明,在多线程并发调用访问时,运行稳定。
在停机维护时,可能需要与地面服务器中的SOL Server数据库进行数据同步,可以使用RSQL Server cE自带的emote Data Access(RDA)对象,它为Windows cE应用程序访问远程的SQL Server数据库提供了一种简单的访问方式。使用其Push方法,可以将保存在Windows cE.NET上的数据直接写人到远程的SQI Server数据库中,使用Pull方法,可以将远程的SQL Server数据库的数据下载到Windows cE.NET中的SOL Server cE数据库中,这样就可以实现数据的交换和同步。[9]
(三)SOL Server CE在发电车监测系统中的应用
本发电车监测系统通过串口通信,实时获取各远程测量模块的测量数据,并记录在一个缓存实例中,通过界面模块实时在屏幕上显示当前各项参数,并通过人工触发方式记录数据到数据库,同时通过界面操作,对系统进行设置以及对数据库中历史数据的查询:通过数据库存储模块,按设置定时记录实时参数数据到数据库;通过事件报警分析模块判断报警,并记录到数据库;通过GPRS通讯模块实现与地面系统的数据通讯。
而SQL Server cE 2.0作为一个嵌入式数据库,在本系统的应用中,不可能记录海量数据,并进行大数据量的检索查询或其它操作,否则会造成系统运行效率下降或不稳定,因此优化数据库的设计和优化数据量在本系统设计中也很重要。
五、应用测试结果
本发电车监测系统,在Windows cE.NET~I]SQL Server cE的平台基础上完成开发,并进行了实际的装车测试,比较其他同类产品有以下优点:
1、系统稳定:嵌入式平台加上.NET Compact Framework的支持,系统运行稳定性很高,同时,由于對多线程操作的保护较好,使多线程操作更具有高效性和稳定性。
2、运行效率高:4个串口与各模块设备通讯,平均单次轮询时间为0.5s,低于系统要求的1s的时间间隔。由于嵌入式系统占资源较小,程序响应速度很快。SOL Server CE存储数据效率高,查询速度也很快,操作中无明显延迟现象,数据安全性好。
3、界面友好:Windows cE.NET的图形界面友好,在此基础上开发的程序也有同样的优点。
4、系统扩展性强:在需要时,可将数据通过SQL Server CE的同步功能,将车载主机中的数据直接同步到地面机SQL Server数据库,用于进行进一步的数据分析与挖掘。
六、结论
本文研究讨论了发电车监测系统中使用Windows cE.NET和SQL Serverce的可行性以及其使用及编程方法,并用应用测试结果证明该平台下开发的监测系统完全可以达到预期的设计目标。该系统中使用到的软件技术都是目前市场上较为成熟的技术,其应用领域也在逐渐扩大,在铁路系统的其它信息化建设中也将发挥重要作用。
[关键词]发电车 嵌入式系统 监测系统
中图分类号:TP3 文献标识码:A 文章编号:1671—7597(2009)0210036-02
一、引言
发电车是空调旅客列车的能源中枢。发电车监测系统由于要安装在运行着的发电车上,因此对系统的软件硬件都需要符合车载系统的特殊要求。由于主机硬件运行在存在较大震动的恶劣环境下,要求硬件不能有风扇和旋转式的硬盘这些基本要求,因此硬件性能不可能很高,而主机对通讯、数据存储、显示又有很高的稳定性与实时性要求,因此需要一种实时、高效的嵌入式平台支持。本文先介绍发电车系统的应用软件平台需求,然后讨论Windows CE.NET嵌入式系统在本系统中应用的可行性与应用编程方法,接着对SQL Server CE在本系统中的可行性和编程方法进行了探讨研究。
二、发电车监控系统的应用软件需求
(一)系统功能
监测系统实时监测与发电机组运行相关的参数,按秒记录入数据缓存,自动计算累计开机时间和累计电能,按设定时间间隔(默认15分钟)记录到数据库。对所有监测的参数均可设置上下限,参数超过规定标准值时立即报警,并将事件点前后各20秒的数据存储到日志文件和数据库中。
系统使用LCD彩屏显示,图形化展示各项参数和开关量状态,报警时以醒目方式显示报警参数状态。系统在GPRS网络允许的情况下,随时向地面系统发送完整实时数据。
要求保存近1年内的所有数据,随时可以通过u盘导出指定数据。在需要时可以与地面服务器进行数据库同步操作,以便做进一步的分析挖掘。[1]
(二)主机结构及运行环境
发电车监控系统通过485总线,与各远程监测模块通信,获取实时数据,并对数据进行存储、分析、报警和显示等操作。其主机功能结构如图1所示:
该主机为系统的核心,负责数据的采集、存储与显示等操作。主机安装在运行中的发电车中,由于工况的需求,主机密封无风扇,存储使用工业级cF卡。其中单板机与GPS模块及GPRS模块的通讯都是通过独立的Rs一232接口。
(三)软件系统平台要求
因以上需求,要求系统为嵌入式系统,较小的系统核心,较快的启动和运行速度,需要有友好的人机交互界面,且要求可以进行多线程多端口的串口通信(本系统使用4个串口)。
另外要求编程和维护尽可能方便。
(四)数据存储要求
系统的数据存储分为日志文件存储和数据库存储。其中,数据库中存储的数据主要用于简单快速的检索。数据库存储的数据量根据设计,每年150M左右,循环清除。界面操作中包括查询在内的各项数据库操作不能有明显延迟。
三、Windows CE.NET的在系统中的应用研究
(一)Windows CE.NET系统介绍与讨论
Windows CE.Net是Windows CE 3.0的后续产品,它是一个功能强大的实时嵌入式操作系统,由于有众多强大工具支持,用户利用它可以快速开发出下一代的智能化小体积连接设备。借助于完善的操作系统功能和开发工具,Windows CE.Net提供了构建、调试和部署基于Windows CE.Net的定制设备所需的一切特性。Windows CE.Net的最大好处是具有可定制性。当它自带的驱动程序不能满足用户的要求时,需要用户自己编写相应的驱动程序。Windows CE.Net的开发工具Platform Builder就可以完成系统的定制和相应的驱动程序开发。[2]根据Windows CE.Net的特性,其嵌入式系统的各种特性非常适合发电车监测系统。
(二)编程方式
本系统使用Windows CE.NET 4.2,操作系统支持Microsoft.NETCompact Framework,系统编程软件使用微软的VisuaStudio.Net 2003(也可使用更高版本,如2005版,但联机方式会有所不同),编程使用c#语言。
安装Windows cE.NET Utilities v1.1 for Visual Studio.NET20031具包后,可通过以太网方式,将编程开发的Pc机与运行WindowscE.NET 4.2的主机设备进行连接,直接进行联机编程和调试。由于有.NETFramework的支持,使得用嵌入式环境下的c#编程方法和桌面机程序基本一致,作为嵌入式应用,其支持的Microsoft.NET Compact Framework是精简版的,支持的组件比标准版少一些。
在系统软硬件定制时,设计有4个串口,1个用于与GPS设备通讯(Rs一232),1个与GPRS设备通讯(RS-232),另两个与485总线上的设备通讯。每个串口设备都在不同线程中独立打开和通讯,串口调用API接口函数CreateFile打开,同样调用API函数ReadFile和WriteFile来对串口进行数据读取和写入。
主机系统软件结构如图2所示。
软件用面向对象方法,封装各个功能模塊,并在不同线程中同步运行[3]。其中主要分两个采集数据的通信模块,和4个读取数据的后期数据处理模块。
其中,实时数据实例为一个数据缓存类的实例,为程序的数据核心[4]。在对其读取和写入过程中会发生各个线程间的并发冲突问题。因此在可能并发出现的程序代码段使用以下代码控制:
System.Threading.Monitor.Enter(对象1)://防止冲突加锁
try
{
//需要防止并发冲突的代码段
………………
)
finally
{
System.Threading.Monitor.Exit(对象1)://防止冲突解锁
)
在需要防止并发冲突的代码开始的地方使用System.Threading.Monitor.Enter方法在指定对象上加排他锁,完成后再System.Threading.Monitor.Exit方法解锁,以防止此并发问题的出现[5][6]。
四、SQLCE在系统中的应用研究
(一)SOLCE介绍与应用讨论
SOL Server cE是用作快速开发的关系型精简数据库,它将企业级数据管理能力扩展到了基于Windows cE操作系统的嵌入式移动设备上。本系统使 用Visual Studio.NET编程,通过.NET Compact Framework支持下的ADO.NET技术访问操作SOL Server cE 2.0数据库。
SOL Server cE提供远程数据访问和合并复制功能,在需要的时候,可以实现与SQL Server服务器同步。本系统在正常使用情况下不需要使用这项功能,但这个功能使得本系统具有良好的扩展性。
(二)SOL Server CE编程方法
数据库设计好后,在项目中添加对System.Data.SqlServerCe组件的引用,可以编程实现对SQL Server cE的各项操作。以下以c#语言为例实现对数据库的连接准备[7][8]:
SqlCeConnection DBConnection;
//数据库连接
SqlCeCommand DBComand;
//命令对象
DBConnection=new SqlCeConnection(AConnectStrings)://通过连接串字符定义连接
DBCommand=new SqlCeCommand():
DBComand.Connection=DEConnection;
由于程序中有多个线程同时运行(如图1,至少有3个主要模块在独自的线程中对数据库有读写操作),而SQL Server CE2.0只支持单进程单线程的读写操作,因此对数据库操作同样需要进行防止冲突的代码保护,以下以c#语言为例,对数据库提交一个SQL命令,做一个删除一个临时表的操作:
System.Threading.Monitor.Enter(this)://防止冲突加锁
try
{
DBConnection.open();
DBCommand.CommandText=“drop table tabletemp”:
int Result=DBComand.ExecuteNonQuery()://通过Result获取操作影响到的行数
}
catch(Exception E)
(
//此处进行错误处理
)
finally
(
DBConnection.Close():
System.Threading~Monitor.Exit(this)://防止冲突加锁后解锁
)
在实际运行中,因SQL Server CE的单线程访问特性,数据库操作类被编程封装,并在系统中仅创建一个实例,多个线程可以并发调用。以上代码在实践中证明,在多线程并发调用访问时,运行稳定。
在停机维护时,可能需要与地面服务器中的SOL Server数据库进行数据同步,可以使用RSQL Server cE自带的emote Data Access(RDA)对象,它为Windows cE应用程序访问远程的SQL Server数据库提供了一种简单的访问方式。使用其Push方法,可以将保存在Windows cE.NET上的数据直接写人到远程的SQI Server数据库中,使用Pull方法,可以将远程的SQL Server数据库的数据下载到Windows cE.NET中的SOL Server cE数据库中,这样就可以实现数据的交换和同步。[9]
(三)SOL Server CE在发电车监测系统中的应用
本发电车监测系统通过串口通信,实时获取各远程测量模块的测量数据,并记录在一个缓存实例中,通过界面模块实时在屏幕上显示当前各项参数,并通过人工触发方式记录数据到数据库,同时通过界面操作,对系统进行设置以及对数据库中历史数据的查询:通过数据库存储模块,按设置定时记录实时参数数据到数据库;通过事件报警分析模块判断报警,并记录到数据库;通过GPRS通讯模块实现与地面系统的数据通讯。
而SQL Server cE 2.0作为一个嵌入式数据库,在本系统的应用中,不可能记录海量数据,并进行大数据量的检索查询或其它操作,否则会造成系统运行效率下降或不稳定,因此优化数据库的设计和优化数据量在本系统设计中也很重要。
五、应用测试结果
本发电车监测系统,在Windows cE.NET~I]SQL Server cE的平台基础上完成开发,并进行了实际的装车测试,比较其他同类产品有以下优点:
1、系统稳定:嵌入式平台加上.NET Compact Framework的支持,系统运行稳定性很高,同时,由于對多线程操作的保护较好,使多线程操作更具有高效性和稳定性。
2、运行效率高:4个串口与各模块设备通讯,平均单次轮询时间为0.5s,低于系统要求的1s的时间间隔。由于嵌入式系统占资源较小,程序响应速度很快。SOL Server CE存储数据效率高,查询速度也很快,操作中无明显延迟现象,数据安全性好。
3、界面友好:Windows cE.NET的图形界面友好,在此基础上开发的程序也有同样的优点。
4、系统扩展性强:在需要时,可将数据通过SQL Server CE的同步功能,将车载主机中的数据直接同步到地面机SQL Server数据库,用于进行进一步的数据分析与挖掘。
六、结论
本文研究讨论了发电车监测系统中使用Windows cE.NET和SQL Serverce的可行性以及其使用及编程方法,并用应用测试结果证明该平台下开发的监测系统完全可以达到预期的设计目标。该系统中使用到的软件技术都是目前市场上较为成熟的技术,其应用领域也在逐渐扩大,在铁路系统的其它信息化建设中也将发挥重要作用。