一种智能多协议通信适配器的设计
扫描二维码
随时随地手机看文章
0 引言
目前电力系统的通信、监控和数据采集系统采用的是一种分布式的通信结构。伴随着新设备、新技术的应用,在当前我国的电力系统内,对终端单元的通信、监控和数据采集存在着三大问题:一是分布式系统的工作效率较低;二是终端种类繁多,并且通信协议互不兼容;三是主站的数据采集前端子系统(工控采集板、协议转换板等)适应性较差,实际使用效果难以令人满意。
电力系统所需要的,应该是这样一种主站数据采集前端子系统:首先它应该可以实现与多种类型的终端单元进行通信与数据采集;其次,它应该可以兼容多种通信协议;然后,最为重要的是它可以智能地、自动地完成对终端单元的数据采集和协议转换任务;最后,这个子系统还应该价廉物美,具有良好的经济性。
1 采集与监控系统结构
在变电站和工业现场的微机监控应用系统中,要采集许多远程现场数据点,这时主站PC机与下位机通过串行通讯来完成命令与现场采集数据的传输。目前比较通用的是在PC机或工控机内安装数据采集板卡,如A/D卡及422、485卡。这些数据采集设备存在以下缺陷:安装麻烦、价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。通用串行总线(Universal Serial Bus,简称USB)是1995年康柏、微软、IBM、NEC等公司为了解决传统总线的不足推广的一种新型串行通信标准。该总线接口具有安装方便、高带宽、易扩展等优点,已经逐渐成为现代数据传输的发展趋势。基于USB的数据采集系统充分利用USB总线的上述优点,有效解决了传统数据采集系统的缺陷。本设计就是将RS-232、RS-485与传输距离短但高速、可靠易扩展的USB相结合,形成了能够多点、快速、可靠、低成本的远距离数据采集系统。
2 适配器的硬件电路实现
通信适配器硬件结构如上图1所示。微控制器采用AT89C52,该控制器具有运算速度快、兼容MCS51指令集的特点,内部集成 8Kflash,性价比高。外接看门狗电路MAX706,可为微控制器提供可靠的保护。为了防止外界干扰对MCU的影响,单片机与下位机通讯的接口采用光耦隔离,控制接口的隔离采用TLP521-2,收发的RXD、TXD采用6N137隔离。
USB接口采用PHILIPS的USB控制芯片PDIUSBD12,该控制芯片能够实现微控制器的并行总线到USB口的总线接口功能,而且编程方便,适用于多种微控制器,内部集成实现USB功能的PLL、SIE、FIFO模块,与普通的微控制器配合就可以实现功能完备的USB外设。对于一个微控制器而言,PDIUSBD12就象一个带8位数据总线和一个地址位(占两个位置)的存贮器件。与USB的连接是通过1.5kΩ上拉电阻将D+(用于高速 USB器件)置为高来实现的。1.5kΩ上拉电阻集成在PDIUSBD12内部,默认状态下不与VCC相连。连接的建立通过外部/系统微控制器发出命令来实现。这就允许系统微控制器在决定与USB建立连接之前完成初始化时序。USB总线连接可以重新初始化而不需要拔出电缆。
考虑到现在工业领域常用的总线有RS232、RS485等,采用MAXIM公司的MAX232、MAX485接收发送器实现电平转换。与外界的接口采用光电开关,通过上位机初始化设置总线类型选择与外界的接口方式,从而有效的避免了设置值与实际操作中接法的不一致。又因为RS-485总线为并接式二线制接口,一旦有一只芯片故障就可能将总线“拉死”,因此对其二线口VA、VB与总线之间应加以隔离。通常在VA、VB与总线之间各串接一只 4~10Ω的PTC电阻,同时与地之间各跨接5V的TVS二极管,以消除线路浪涌干扰。如没有PTC电阻和TVS二极管,可用普通电阻和稳压管代替,同时在该芯片外接0.1uf的电容,也可以有效的防止外界的干扰。
3 适配器的软件设计
适配器的软件主要包括AT89C52微控制器的软件以及上位机的管理软件。考虑到上位机的处理速度优势,将协议转换的工作交由上位机的客户服务程序来完成。单片机AT89C52主要实现智能的终端与协议识别以及与下位机的通信和数据转存。由于采用USB接口与上位机通信不占用上位机系统的CPU 时间,这样即把上位机从通信瓶颈中解脱出来,又充分利用了上位机的速度优势。
3.1 单片机控制程序设计
单片机的控制程序由三部分组成:首先是初始化部分,完成单片机和所有外围电路(包括PDIUSBD12)的初始化以及终端和协议的识别;其次是主循环部分,等待来自数据采集或上位机的数据并实现数据的转存;最后是中断服务程序,完成相应的中断处理功能。
设备安装完后准备运行前,操作人员可利用上位机管理软件提供的用户界面初始化一些系统参数,如总线类型、终端类型等等。当选择智能搜索终端时,单片机按次序调用储存在其内部闪存中的各种相关协议,并通过通讯接口向外发出握手指令等待终端响应。如果终端返回信号并且信号格式与单片机发出的相同(即二者的协议相同),则认为该终端有效;如果终端返回信号与单片机发出的不同,或者连接超时,则认为该终端无效或不存在。单片机将最终搜索结果即终端信息表写入存储器指定单元,并通知微机读取,以备随后的通信使用。
当选择从智能终端采集数据时,单片机通过顺序查询上述储存的搜索结果,得到终端的类型。然后,根据不同的终端调用相应的协议,发出采集数据的指令。适配器上的CPU与下位机之间是一对多的通信模式,默认状态下,采用循环采集,各终端有一预先指定的固定的通信地址。对一个固定的终端而言,CPU发出握手信号,远方终端响应,则相应的信息经RS232/RS485接收,由CPU存入RAM62256的指定地址;接收完成后,CPU将接收到的数据经 D12传给上位机;上位机的客户服务程序对上传上来的数据进行解码、校验,如有误,通知终端重传;如无误,则将解码后的信息转存入计算机指定的内存,并备份到相应的文档,供其他的客户服务程序使用。根据系统的特点,还可以采用定点采集方式对指定终端进行数据采集与监控。以下给出单片机主程序流程图(图 2)。
图2:微控制器主程序流程图
3.2 上位机的程序设计
从上位机来看,适配器为它的一个USB外设。因此上位机必须提供USB外设的驱动程序。上位机的管理软件包括客户服务程序以及USB驱动程序。
客户服务程序(Client software)是驻留在上位机的与USB系统软件交互作用的软件。它确定需要与功能(即USB外设)进行什么样的传输,当它需要与功能进行传输时,提出一个请求,并生成一个IRP(I/O中断请求包),然后进行USBD(USB Driver)调用,把IRP通过USBD接口传送给USBD。当该传输请求被服务后,客户服务软件接收IRP完成状态的通知。如果该传输涉及功能到主机的数据传输,则客户服务软件可以访问与该IRP有关的数据缓冲区中的数据。
USB驱动程序(USBD)是驻留在上位机的为客户提供通用服务的软件实体,它管理主控制器上的一个或多个功能。它通过调用适当的主控制器驱动程序(HCD)将用户IRP中的数据转化为设备端点的数据,或通过回调适当的HCD将设备端点的数据转化为客户IRP中的数据。USBD接收来自配置软件的配置请求,该配置软件是驻留在上位机上的负责配置USB设备的软件,它描述所希望的设备配置:端点、传输类型、传输周期、数据规模等。USBD基于带宽有效性以及总线容纳该请求类型的能力,接受或拒绝配置请求。如果它接受了一个请求,则USBD为所希望类型的请求者创建一个管道。一旦设备被配置,软件客户可以请求IRP在它与其功能端点之间进行数据传送。
主控制器驱动程序(HCD)是从主控制器中抽象出来的USB软件层,它提供了一个SPI(系统编程接口)与主控制器交互作用,并隐藏了主控制器的硬件实现细节。当用管道传送IRP时,HCD把它们添加到事务表中。当一个IRP完成时,HCD会通知发出该请求的软件客户IRP已经完成。如果IRP 包括从功能到软件客户的数据传送时,则把数据放在客户指定的数据缓冲区。
USB驱动程序的编写往往是USB设备开发过程中最困难的,通常采用Windows DDK来实现。目前有许多软件厂商提供各种各样的驱动程序生成工具,如Computerware的DriverStudio,BlueWaters的 DriverWizard等。本设计中笔者就是采用DriverStudio软件生成的程序框架,添加了适当的用户代码,完成了适合与本设计的驱动程序的编写。
上位机的客户服务程序是用VC++6.0编写的,协议转换是根据智能终端与协议识别所形成的终端信息表调用相应的协议转换程序来实现的。用户可以很方便的扩展用户所需的协议。
4 结语
USB由于其连接的方便性、通信速度的快速性、接口的简单性,必将在计算机技术应用领域得到广泛的应用。本文提出的智能多协议通信适配器可以广泛地应用于实时监控、实时数据采集等场合,也可以增强协议辨识和增加协议转换功能,使它能自适应地应用于与具有标准通信协议和规范化的数据格式而又缺少详细技术资料的智能终端通信中。