




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
井下机车上位机监控系统的研究井下机车上位机监控系统的研究/wznr-65.html井下机车上位机监控系统的研究作者:摘 要:本文着重进行井下机车监控系统的上位机研究开发,利用上位机的方便的通信接口,实现上位机对井下机车系统的实时监控,对保证行车安全,提高运输效率和运营管理水平起到关键作用。介绍了井下机车监控系统的结构及功能,使用控件SPCOMM 实现了上位机串口通信。关键词:上位机系统;串行通信;Spcomm.1 引言随着计算机技术的快速发展和广泛应用,上位机和下位机的主从工作方式为数据采集系统和工矿业监控系统所采用。上位机通常就是PC 机,微机的分析能力较强,处理速度快,扩展功能相对完善,可维护性强,但是上位机对工作环境和工作时间要求比较苛刻,而下位机PLC 虽然功能相对简单,却使用起来安全方便,能适应较恶劣的环境,正事两者的优势互补,形成了现在工矿业监控系统的主流技术发展方向1。本文着重进行井下机车上位机系统的研究开发,利用上位机的方便的通信接口,实现上位机对辅助运输铁道系统的实时监控,对保证行车安全,提高运输效率和运营管理水平起到关键作用。2 监控系统概述2.1 机车监控系统的演变二十世纪六十年代,我国在引进苏联矿井信集闭系统基础上,开发出国产继电器逻辑控制的信集闭系统;八十年代引进了匈牙利机车监控系统以及加拿大森投里昂机车监控系统,两个系统主要特点是主站带多个分站控制结构以及采用微波和红外传感方式,尽管技术较为先进,但国内应用不理想,主要是现场环境恶劣,对传感器电干扰及机械损坏较高,造成一点故障影响局部甚至整个系统正常进行。二十世纪八十年代,国内出现三种计算机控制的机车监控系统。一是以单片机为控制主机的分级计算机实时监控系统,如KJ3 系统;二是以三级计算机或二级计算机网络为核心,在地面主控室对井下大巷的矿车运输实现监控和调度的系统,如KJ15 系统;三是采用PLC作为控制主机及模拟显示的集中控制系统,系统不设分站,主机置于井下,地面设上位机管理系统,如KJ35,KJ41 等系统。Kj41 系统对传感器和通讯技术进行了创新,且主机故障时系统可人工操作而不影响生产。2.2 机车的发展现状和所面临问题以及发展建议2.2.1 机车的发展现状和所面临问题煤炭机车监控系统又称“信,集,闭”系统。信号是指示列车运行和调车等作业的命令,集中是通过技术方法使信号,道岔和进路按一定程序并且满足一定条件才能动作的相互制约关系;闭塞是指用信号或凭证保证列车按空间间隔制运行的技术方法。由于煤矿的井底车场,运输大巷及交叉点,采区车场轨道线路布置和机车运行方式差异较大,尽管开发的新系统主机选用PC 或微机,大大简化了设计,在系列化,通用化方面取得进展,但仍未摆脱依据每个矿井轨道运输具体情况编程模式。大多数系统使用电缆较多,施工,维护工作量较大。系统硬件质量,性能有待进一步提高。如机车车号传感器的稳定性,多数系统的列车位置传感器还不能真实的反应列车位置(占用轨道区段状态);电动转辙机在道岔的尖轨与基本轨的间隙超过4mm 时,不能发出故障显示而错发开放信号,常发生掉道事故等,另外,由于巷道潮湿,煤尘大,特别雨季,设备损坏叫严重。2.2.2 发展井下机车监控系统几点建议1.积极研究开发新系统(1)研究开发实现故障安全原则的新系统。(2)进一步实现标准化,通用化。(3)大幅度减少电缆。2.开发新品种,提高系统设备硬件质量(1)列车位置传感器,该传感器经历了极化继电器,干簧管继电器及超声波,辅助导线,载荷压力,无线感应,红外线,计数记轴传感器等。(2)煤矿井下信集闭系统是实现机车运辆全面自动化得基础,若煤仓煤位传感器,仓门自动控制,机车车号认别等硬件性能质量过关,就可以按各采区和井底煤仓储煤,列车分布及运行等情况选择最优运输方案指挥,若再实现机车无人驾驶,即可真正达到机车运辆全面自动化2。2.3 信集闭系统的介绍与框图信集闭系统是机车监控系统的基础,信集闭系统框图如下图2.1:所谓“信集闭”是指铁路信号集中闭塞,信号表示系统配备的行车设备如信号机等;集中表示系统的信号集中控制方式工作;闭塞表示受控信号间的联锁关系。系统控制对象是机车,现场控制设备有道岔转辙机,信号机以及传感器。调度室设有模拟盘,控制台及继电器柜等集控设备,电缆完成信号的传输。3 上位机实现串口通信3.1 Delphi7.0 具有的特点1、可视化的集成环境Delphi 是一个运行于Windows 环境下的可视化开发工具,提供易于使用的图形化工具供编程者创建程序中的可视化部分,从而使你得到最高的开发效率,真正达到了“所见即所得”。2、向对象的编程概念面向对象的程序设计(OOP)是Delphi 诞生的基础。Delphi 是以面向对象的方式设计程序代码的。一些早期的具有OOP 性能的程序语言如C+、Pascal、Smalltalk 等,虽然具有面向对象的特征,但不能轻松地画出可视化对象,与用户交互能力较差,程序员仍然要编写大量的代码。Delphi 则把可视化和面向对象这两个优秀的概念结合起来,使生成美观的界面和结构良好的程序已经不再是一件痛苦的事情。Delphi 所采用的底层编程语言是Object Pascal,它风格简洁、语法严格、结构清晰、可读性强、代码效率高,尤其适合于可视化的程序设计。3、创建新的模板和组件进行扩展的能力Delphi 提供了VCL(可视化组件库)。VCL 指构成Delphi 组件结构基础的对象类层次,包括可视化部件、非可视化部件、不能作为组件的类以及不能视为对象的通用函数等。用户可以定制组件模板,为其增加页面或者新的组件。4、卓越的数据库引擎和快速报表工具Delphi 结合了传统的编程语言Object Pascal 和数据库语言的强大功能,可以用于传统的数值运算类编程又可以用于数据库编程。利用Delphi 强大的数据库功能,不需要编写任何代码便可以创建一个简单的数据库应用。Delphi 支持开发桌面或者客户机/服务器结构的数据库应用程序和报表。通过窗体和报表,允许用户创建能访问dBASE、Paradox 和Local InterBase 服务器的数据库应用,也可以访问远程数据库服务器上的数据库,或任何经ODBC 可访问的数据库管理系统中的数据库。5、优秀的消息处理机制Windows 本身是一个消息驱动的操作系统,它也通过消息的发送、接受和处理本来和应用程序打交道。Delphi 提供了对Windows 消息处理的方法,各条消息都有一个便于记忆的名称,而且这个名字与Windows SDK 中基本不同,它通过为一个应用程序的所有组件注册一个Main WndProc 的方法,将其作为窗体过程进行消息流跟踪。与VB 等可视化工具相比,Delphi 的消息要全面得多,而且开发者还可以根据自己的需要,另外自定义非标准信息,因而更加靠近Windows 的底层,能完成更强劲的功能3。6、真正独立的可执行文件和动态链接库德创建用 Delphi 创建的EXE 和DLL 文件不需要任何额外的OCX。VBX 或者其它DLL,除非在程序中非要使用这些文件不可。Delphi 的库编译以后是打包到可执行文件中的,因此生成的EXE 拷贝到任何机器上都可以直接运行,不需要再附带其它任何文件。这与用他很多可视化工具开发出的伪代码相比,具有显而易见的优越性。3.2 控件SPCOMM 的使用3.2.1 Spcomm 串口通信组件简介用 Delphi 实现串口通信,常用的方法有:使用控件,如Mscomm 和Spcomm 控件等;使用API 函数;在Delphi 中调用其它串口通信程序。使用API 方法的优点是比较适合于编写较为复杂的低层次通信程序,但缺点是编写串口通信程序较为复杂,需要掌握大量通信知识。Spcomm 是Small-Pig Team 开发的一个第三方Delphi 串口控件,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作,且编程简单、通用性强、可移植性好。在Delphi 软件开发中已经成为一个被广泛应用的串口通信开发控件。Spcomm 共实现了三个类:串口类Tcomm、读线程类TreadThread 以及写线程类TwziteThread1。Tcomm 的某个实例在方法StartComm 中打开串口,并实例化了一个读线程ReadThread 和一个写线程WriteThread,它们和主线程之间进行消息的传递,实现串口通信。在Delphi7.0中安装Spcomm串口通信控件的方法为:选择Delphi7.0的“Component”菜单,点击“Install Component.”菜单项,然后在弹出的Into existing package 属性页中Unit file name输人框中选择SPCOMM.pas 文件,单击两次 “OK”按钮后,就可以将Spcomm 控件安装到Delphi7.0的System 组件页上。3.2.2 Spcomm 控件串口通信的实现1.Spcomm 控件的基本属性、方法和事件Spcomm 串口通信控件的基本属性、方法和事件说明如下:CommName 属性:计算机串口端口号的名字,COM1、COM2等,在打开串口前,必须填写好此值。Parity 属性:校验位 None、Odd、Even、Mark、Space 等。BaudRate:设定支持串口通信用的波特率9600,4800等,根据实际需要来定,在串口打开后也可更改波特率,实际波特率随之更改。ByteSize 属性:表示一个字节中,使用多少个数据位收发数据,根据具体情况设定5、6、7、8等。StopBits 属性:表示一个字节中,使用停止位的位数,根据具体情况设定1、1.5、2。SendDataEmpty 属性:布尔属性,为True 时表示发送缓存为空,或者发送队列里没有信息;为False 时表示表示发送缓存不为空,或者发送队列里有信息。StartComm 方法:用来打开通信串口,开始通信。如果失败,则会导致串行口错误。错误类型大致分为串行口己处于打开状态,所以不能打开串行口,不能创建读写进程,不能建立串行口缓冲区等。StopComm 方法:用来停止通信串行口的所有进程,关闭串口。WriteCommData(pDataToWrite:PChar;dwSizeofDataToWrite:Word) 方法是带有布尔型返回值的函数,其中参量pszStr-ingToWrite 是要写入串行口的字符串, DwSizeaf-DataToWrite 是要写入的字符串的长度。该函数通过一个写线程向串行口输出缓冲区发送数据。发送操作将在后台默认执行。如果写线程 PostMessage 成功,则返回值是True,若写线程失败,返回值是False。OnReceiveData(Buffer:Pointer;BufferLength:Word),其中 Buffer 是指向输入缓冲区的指针。 BufferLength 是从缓冲区收到的数据长度。当输入缓冲区收到数据时,该事件被触发。当输入缓存有数据时将触发该事件,对从串口收到的数据进行处理。182.Spcomm 串口通信的实现Spcomm 串行通信控件具有多线程的特性,接收和发送数据分别在两个线程内完成,接收线程负责收到数据时触发 OnReceiveData 事件;用 WriteCommData()函数将待发送的数据写入输出缓冲器,发送线程在后台完成数据发送工作。在接收和发送数据前需要初始化串口,用 StartComm 方法打开串口,退出程序时用StopComm 方法关闭串口。实现 PC 机与单片机之间的数据发送及接收需要以下步骤:(1)初始化并打开串口需要选择本次通信使用的串口,确定通信协议,即设置波特率、校验方式、数据位、停止位等属性,打开该串口。示例代码如下:/初始化并打开串口Comm1.BaudRate:=9600;/波特率9600bpsComm1.Parity:=None;/奇偶检验无Comm1.ByteSize:=8;/数据位8Comm1.StopBits:=1;/停止位1Comm1.StartComm; /打开串口(2)建立握手信号实现 PC 机与单片机之间的通信,首先要调通它们之间的握手信号,握手信号可以随意选择某特定字符串, 当PC 发出这样一帧数据后,通过接收事件能收到单片机返回的这一帧数据或特定的某字符串,则表示握手成功,系统通信正常。两者之间就可以按照协议相互传输数据。否则需重新建立握手信号4。(3)发送数据在编写基于串口的计算机工业测控时,通常需要由PC 机向下位机发送命令以控制下位机的行为,同时向下位机发送有关数据。利用Spcomm 串口控件向下位机发送数据示例代码如下:/发送数据和控制字程序procedure senddata;vari:integer; commflg : Boolean;begincommflg:=true ;for i:=1 to 8 dobeginif not fcomm comml writecommdata(sendbutter,i) thenbeginCommflg=false;break;end;end;end;(4) 接收数据在编写基于串口的计算机工业测控时,通常需要由下位机向PC 机发送数据以使PC 机了解系统的测试数据或下位机的运行状态,并进而控制下位机的行为。利用Spcomm 串口控件接收下位机发送的数据信息的示例代码如下:/事件驱动方式接收数据程序procedure TForm1.CommlReceiveData(Sender:Tobject;Buffer:Pointer; bufferLength:Word);varreceivedata:array of byte;beginsleep(100);/等待100ms,保证接收到所有数据move(buffef ,receivedata,bufferlength);/将接收缓存区中的数据转移到数组中end;(5) 关闭串口在系统开发中,应注意在不使用串口时应及时关闭串口,释放系统资源,否则可能会影响系统的其它应用。关闭串口的代码如下:procedure TForm1.FormClose(Sender;TObject:var Action:TCIoseAction);Begincomml.StopComm ;end;3.3 调用Win95 下的API 函数3.3.1 基于WINN95/NT 的串行通信机制Windows 操作系统的机制禁止应用程序直接访问计算机硬件,但它为程序员提供了一系列的标准API 函数,使得应用程序的编制更加方便并且免除了对有关硬件的调试麻烦。在Windows98 中,原来Windows3.X 的WM-COMMNOTIFY 消息已被取消,操作系统为每个通信设备开辟了用户可定义大小的读/写缓冲区,数据进出通信口均由操作系统后台完成,应用程序只需对读/写缓冲区操作即可。Win98 中几个常用的串行通信操作函数如下:CreatFile 打开串行口Closehandle 关闭串行口SetupComm 设置通信缓冲区的大小ReadFile 读串口操作WriteFile 写串口操作SetCommState 设置通信参数GetCommState 获取默认通信参数ClearCommError 清除串口错误并获取当前状态串行通信需要利用多线程技术实现,其主要的处理逻辑可以表述如下:进程一开始先由主线程做一些必要的初始化工作,然后主线程根据需要在适当时候建立通信监视线程监视通信口,当指定的串行口事件发生时,向主线程发送WM-COMMNOTIFY 消息,主线程对其进行处理。若不需要WM-COMMNOTIFY 消息,则主线程终止通信监视线程。多线程同时执行,将会引起对共享资源的冲突。为了避免冲突,就要用同步多线程对共享资源进行访问。WIN95 提供许多保持线程同步的方法,笔者采用创建事件对象来保持线程同步。通过CreateEvent( )创建事件对象,使用ET Event( )或Pulse Event( )函数将事件对象设置成信号同步。在应用程序中,利用WaitSingleObject( )函数等待同步的触发,等到指定的事件被其它线程设置为有信号时,才继续向下执行程序。3.3.2 Delphi 下的具体实现方法Delphi 的强大功能和支持多线程的面向对象编程技术,使得实现串行通信非常简单方便。它通过调用外部的API 函数来实现,主要步骤如下:首先,利用CreatFile 函数打开串口,以确定本应用程序对此串行口的占有权,并封锁其它应用程序对此串口的操作:其次,通过GetCommState 函数填充设备控制块DCB,再通过调用SetCommState 函数配置串行口的波特率、数据位、校验位和停止位。然后,创建串行口监视线程监视串行口事件。在此基础上就可以在相应的串口上操作数据的传输:最后,用Closehandle 函数关闭串行口。203.4 调用其他函数编写的DLL由于这里所说的其它语言包含面很广,可以是开发人员所熟悉的编程语言,如C 和C+等,所以如何编写DLL 就不再详述了。将编写好地DLL 进行编译,然后把编译通过后的DLL 放在C:WindowsSystem 子目录下,在Delphi 下打开1 个单元文件,将DLL 里的所有函数在单元文件中声明,格式如下:Unit UitNameInterfaceProcedure pl(paraml:typel:param2:type2:-);Stdcall:External DLLName;-ImplementationEnd其中UnitName 为单元文件名,PL 为调用过程民,paramal、param2 为参数名,typel、type2 为参数类型名,DLLName 为DLL 名。串行通信时,只要将此单元包含进遍程单元就行了。3.5 使用行间汇编对于硬件的控制,汇编语言是最方便的了,而Delphi 中又允许使用行间汇编那么来看一下怎样使用行间汇编接收下位机传来的数据,在下面的例子中我们简化了问题,比如我们通过COM2 接收400 个传来的字符并将这些内容保存在AAA.DAT 文件中当接收完毕后显示Receive end。但是为什么说我们简化了问题呢,因为实际情况中双方通信可能是约定传送字符的个数,也可能约定的是规定好的起始字符和结束符,或是多种条件同时约定待各种条件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 饭店小额入股协议书
- 饭店招聘厨师协议书
- 酒吧卡座外包协议书
- 2025年员工培训计划全攻略
- 农家乐入股合同协议书
- 项目文明施工协议书
- 养老院老人退养协议书
- 判决书双方协商协议书
- 酒店转让居间协议书
- 设备临时使用协议书
- 2025年商法知识竞赛考试试卷及答案
- 2025年山东省临沂市平邑县中考一模语文试题(含答案)
- 2025年电子信息工程专业考试试题及答案
- 【威海】2025年山东省威海技师学院公开招聘工作人员29人笔试历年典型考题及考点剖析附带答案详解
- 2025年第六届全国国家版图知识竞赛题库及答案
- 机械租赁投标服务方案
- 2025年北京市朝阳区九年级初三一模英语试卷(含答案)
- Unit1-Unit2重点短语(背诵版+默写版)外研版英语新七年级下册
- 《抗休克药物治疗》课件
- 《2024 3572-T-424 重大活动食品安全保障规范 第 3 部分:供餐》知识培训
- 2025年中考语文总复习:八年级下册教材字词打卡练
评论
0/150
提交评论