首页专业论文技术应用政策标准解决方案常用资料经验交流教育培训企业技术专家访谈电力期刊
您现在的位置:北极星电力网 > 技术频道 > 常用资料 > 从珞璜电厂打印系统的改造谈异构系统间的通讯

从珞璜电厂打印系统的改造谈异构系统间的通讯

北极星电力网技术频道    作者:佚名   2008/6/20 9:22:09   

 关键词:  通讯 系统


文章标题:从珞璜电厂打印系统的改造谈异构系统间的通讯
摘要:本文通过珞璜电厂打印系统改造的实例详细介绍了一种破解串行通讯规约的方法,给出了如何用pc机在windows环境下通过visualc 6.0编程实现模拟打印机的具体方法。并在此基础上提出了异构系统间实现通讯的一种简易方法,为类似老工业系统的技术改造提供了一个可行的思路。
关键词:串行通讯模拟打印机异构系统


1引言
  华能珞璜电厂是西南地区最大的火力发电厂(360mw),其中的31#和32#机组是80年代引进法国(alstom公司)技术建造的,限于当时的计算机存储技术,对要求保留的数据都采用打印方式进行存储。其中的事件记录是最重要的见证数据,对事故发生的责任追究是必不可少的。但是原来使用的串行打印机已近乎报废,更主要的是打印存储的数据查找很不方便,运行成本比较高,急需对打印系统进行改造。但是在系统内部进行改造势必破坏了系统的完整性和稳定性,实现起来也很困难。如果用pc机取代打印机直接从系统终端接口来进行数据接收,既保持了系统的整体性,又达到了改造的目的。由于通讯机制使用的是标准的rs232接口[1],用pc机来替代打印机硬件实现简单方便,不需要增加额外的设备,只通过软件即可实现通讯,并且一台pc机可以模拟多台打印机(如图1)。为达到改造的目的就必需要弄清楚打印机与系统的通讯机制,并要对收到的数据进行处理。
500)this.style.width=500;" onmousewheel="returnbbimg(this)">

图1
2建立通讯与数据处理的研究与设计
  原系统使用的是法国alstom公司的t20系统,通过p4终端接口与打印机进行通讯,采用标准的25芯rs232串行通讯方式,使用modem以延长通讯距离。由于上位机只暂存少量数据,为了保证数据不丢失,对每一个机组的记录都采用三台打印机接受数据。p4口负责选择打印机,保证正常的打印机优先级为最高,若其中某一台打印机发生故障,则立即选用其他打印机,所以要实时向打印机发送测试信息,并且得到打印机正确应答信息后才发送数据给打印机,这样就必须要有通讯协议,为此首先要建立起通讯,然后才能对数据进行处理。
2.1电器特性
  t20与打印机之间使用的是25芯的通讯线,而pc机的com口是标准的9针接口。这里只使用了4根线,对照表一可以轻松剖析出使用的是rxd、txd、gnd和dtr四个引脚线,从而实现由25针到9针的转换。打印机内部使用了一块串并转接卡以实现从串行到并行的转换,对此板卡的设置进行分析,参照板卡使用说明书,可以确定采用的工作方式是波特率1200hz、偶校验、8个数据位、1个停止位的异步通讯。
500)this.style.width=500;" onmousewheel="returnbbimg(this)">

2.2分析破译通讯协议
  打印机中使用了alstom公司专用的串并转接卡,通讯协议也用的是公司内部定义的非标准协议,并且没有提供这个通讯协议的资料,在此必须要对其进行破译。
  首先确保串口的设置正确,使用串口调试软件通过pc的com口直接接收来自上位机的数据,这时只能收到上位机对打印机的查询信息,待查询代码出现循环后,记录下来完整的查询信息码。停止数据接收,再使用串口调试工具把这个查询信息码完整的发送给打印机,于是可以得到打印机的应答信息,每发送一次查询码就都得到一个回应码,固定的查询码对应固定的回应码,于是得到了一对握手协议。再用回应码来回答上位机的对应查询码(需要注意的是,必需要在请求时间内回答,否则上位机不响应回答信息。),得到应答后上位机则继续传输数据给打印机,等待下一个中断发生后,又可得到第二对握手协议,重复这个工作就可以建立一个通讯协议的问答表,利用这个问答表就可以轻而易举地通过软件建立起通讯。于是可以接受到来自上位机的数据。
2.3数据处理方式
接收到的数据包括四个部分:
  ⑴、通讯协议查询码;
  ⑵、打印控制命令符;
  ⑶、数据包信息码;
  ⑷、有效的字符信息。
  通讯协议查询码要求快速给出正确的应答信息,才能确保通讯的畅通;打印控制命令只负责打印方式的控制,对打印效果进行某些艺术处理,并不影响具体的数据信息,同时数据包信息码也只是对数据打包的标志,也不影响有效信息,在此对两者只需进行剔除处理;有效的字符信息是我们期望得到的,要对它进行整理并存储到磁盘。利用空格和换行标志,基本再现了页面打印的效果,再利用数据中的日期标志对数据进行分类存盘。每当日期标志发生变化就动态创建新的存储路径,把内存中已经整理好的数据信息存储成以日期命名的文件(比如文件030712.doc,代表存储的是2003年7月12日的数据),实现了数据处理的自动化。查找数据也非常方便,当天数据可以直接查看,历史数据也能够通过文件名很快查找出所需日期的数据。

3用vc 编程实现
  应用vc 开发串行通信通常采用两种方法:利用windowsapi通信函数和使用microsoft的通信控件(mscommactivex)[3]。api编程方式支持多线程,速度快,但是原理上比较复杂,需要编程人员对串口的硬件工作原理有较深入的了解,尤其是在使用多线程时,线程的同步较难,适用于要求较高的实时监控系统。而在一般场合使用activex控件实现串口通信比较简单,便于掌握,容易编程。由于打印机的数据传输速度不快,实时性要求不高,故在此使用了activex控件,非常方便地实现了对串口的访问以及计算机端口与上位机的数据交换,使得编程效率大大提高。
  3.1首先打开端口进行属性配置,如波特率、校验、数据位等,控件提供了一系列标准通信属性和方法,使用它可以建立起应用程序与串行端口的连接。当串口捕捉到数据,接收缓存区得到数据状态就会引发oncomm事件,在事件函数中进行数据处理,流程图如图2。串口初始化的具体方法如下:
500)this.style.width=500;" onmousewheel="returnbbimg(this)">

图2流程图
m_ctrlcom.setcommport(n);//选择串口n
m_ctrlcom.setportopen(true);//打开串口
m_ctrlcom.setsettings("1200,e,8,1");//波特率1200,偶校验,8个数据位,1个停止位
m_ctrlcom.setdtr(true);//设置dtr引脚为有效
m_ctrlcom.setinputmode(1);//1:表示以二进制方式检取数据
m_ctrlcom.setrthreshold(1);//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的oncomm事件
m_ctrlcom.setinputlen(0);//设置当前接收区数据长度为0
m_ctrlcom.getinput();//先预读缓冲区以清除残留数据
3.2然后在oncomm事件函数中对数据进行处理并存盘,实现如下:
if(strtemp=="查询信号")
m_ctrlcom.setoutput(“应答信号”);//得到查询信息后立即发送应答信息
if(strtemp=="数据包信息码")
strtemp.empty();//直接丢弃数据包信息码
if(strtemp=="控制命令字")
strtemp.empty();//直接丢弃控制命令字
if(日期标志变更)
①以日期标志创建新的存盘路径:
createdirectory("盘符:/31#机组/" yearvar "年" monthvar "月"+dayvar "日",null);//以日期标志为文件夹命名
②以新建的方式打开文件并把内存中的字符串写入磁盘:
file.open(文件名字符串,cfile::modenotruncate|cfile::modecreate|cfile::modewrite,null);
file.write(string,string.getlength());//将归档的内容存盘
file.close();//关闭文件
string =strtemp;//非特殊字符时将临时字符串变量归档(放在内存中)

4构思异构系统间的通讯
  通过对珞璜电厂打印系统的改造,发现对于老的工业体系往往需要对其中的某些设备进行改造,使用新设备和新技术以提高生产效率和产品质量,但是这样就破坏了原系统的完整性,新设备与老的系统之间形成了异构系统,无法进行数据交换。老的工业体系一般使用的都不是标准的通讯协议,经常使用的是开发商自己内部定义的标准,为系统的局部改造带来了困难。不过限于当时的计算机水平,原来的通讯机制比较简单,使用现代的计算机技术可以方便地测试出其通讯机制。
500)this.style.width=500;" onmousewheel="returnbbimg(this)">

  本文只是对打印机一种设备进行更新,如果是一组新设备或者是一个新系统要与老的工业体系进行通讯,我们则可以将此处的pc机扩展成为网关,一端使用旧的数据格式和旧的通讯协议与老系统进行信息交换,另一端则使用新的数据格式和新的通讯协议与新系统进行数据交换,整个网关的构思如图3。利用本文介绍的方法通过截取破译老体系的通讯协议,可以实现网关一端的功能,另一端由于使用新的通讯协议,一般都有现成的标准软件和硬件,实现起来比较容易。用此方法实现的局部改造或系统间对接,对于那些使用非标准通讯机制的老工业体系不会破坏原来系统的稳定性和整体性,而且实现起来比较容易。

5结束语
  本文从通讯的基层入手,在破解黑箱系统的握手协议上取得了成功,实现了在原来系统中的设备更新。本系统已在珞璜电厂成功使用,运行稳定可靠。经改造后实现了对数据的数字化管理,查找信息方便快捷,同时比原来的打印方式,既节约了运行成本,又提高了效率,为进一步地实现系统的网络管理带来了方便。同时本文提出了在基于此方法上的异构系统间通讯的实现策略,为企业中的类似问题的解决具有普遍的参考意义,很有推广价值。◎

参考文献
[1]朱庆保,张正兰,微型计算机系统及接口应用技术[m],南京大学出版社,1997。
[2]韩中合,丁常富,齐凤慧,用activex控件实现串口通信编程[j],山东电力技术,2003,130(2),15~17.
作者介绍
刘卫华(1976-),男,硕士研究生,研究方向为检测理论及自动化装置。email:cqulwh@sohu.com
刘时鹏(1978-),男,硕士研究生,研究方向为模式识别与智能系统。
陈今润(1949-),男,副教授,主要从事自动化仪表及现场总线的研究。

来源:电气商情网
友情链接
北极星工程招聘网北极星电气招聘网北极星火电招聘网北极星风电招聘网北极星水电招聘网北极星环保招聘网北极星光伏招聘网北极星节能招聘网招标信息分类电子资料百年建筑网PLC编程培训

广告直拨:   媒体合作/投稿:陈女士 13693626116

关于北极星 | 广告服务 | 会员服务 | 媒体报道 | 营销方案 | 成功案例 | 招聘服务 | 加入我们 | 网站地图 | 联系我们 | 排行

京ICP证080169号京ICP备09003304号-2京公网安备11010502034458号电子公告服务专项备案

网络文化经营许可证 [2019] 5229-579号广播电视节目制作经营许可证 (京) 字第13229号出版物经营许可证新出发京批字第直200384号人力资源服务许可证1101052014340号

Copyright © 2022 Bjx.com.cn All Rights Reserved. 北京火山动力网络技术有限公司 版权所有