时间:2023-03-16 17:43:14
引言:寻求写作上的突破?我们特意为您精选了12篇接口设计论文范文,希望这些范文能够成为您写作时的参考,帮助您的文章更加丰富和深入。
2OPC数据接口
(1)主要采用OPCServer嵌入控制软件或单独调用OPCServer程序。程序代码(略)。(2)燃气炉加载OPC接口数据见表1,电阻炉、离心机等设备的数据接口类似。
3应用效果
在电阻炉群控软件中,对每台炉窑添加多功能电量表,对每台炉的用电情况(三相电压、三相电流、瞬时功率、累计电量)进行实时监控,并对每炉次的用电量进行统计。为此,电阻炉的实时上传数据为:炉次,炉内各控制偶温度,炉内各监测偶温度,工件上各铠装偶温度,各区设定温度,各区输出功率,设定工艺参数,工艺运行参数,设备报警信息,电量信息等。在燃气炉群控软件中,对没有煤气流量计的炉窑添加了流量计,对每台炉的煤气用量情况(瞬时流量、累计流量)进行实时监控,并对每炉次的煤气用量进行统计。为此,燃气炉的实时上传数据为:炉次,炉内各控制偶温度,炉内各监测偶温度,工件上各铠装偶温度,各区设定温度,各区输出功率、设定工艺参数,工艺运行参数,煤气压力,助燃风压力,炉膛压力,设备报警信息,每支烧嘴控制大小火情况,每支烧嘴大小火信息,煤气消耗量信息等。通过以上实时数据的统计、分析和传递,在生产管理和设备管理等方面可达到以下效果:(1)生产调度方面。生产管理者可以快速了解各热处理设备的使用及运行情况,可以优化设备的使用率和生产工艺流程的顺畅。(2)能源调度调配方面。能源管理者可以快速了解设备的能源消耗情况,并可对能源消耗费用进行控制(对于电阻炉,可以实现错峰用电,实现能源成本的节约),对整个厂内耗能的热处理设备实现监控与调配,防止供电负荷变化过大和煤气消耗量不稳。(3)设备管理方面。设备管理人员可对炉窑设备进行实时监控,对存在的设备隐患和问题及时发现并处理,设备维修保养更快捷,设备运行更顺畅。(4)成品管理及质量跟踪方面。对出现问题的工件可以查看其在锻造加热和热处理工艺过程中各种工艺参数和温度参数,追溯到存在问题的环节。(5)安全管理方面。对于容易出现安全问题的设备进行实时监控,及时发现安全隐患并消除,防止安全事故的发生。对于发生安全事故的设备,通过查看其报警记录及其它相关参数,方便查找事故原因,并进一步针对事故原因进行分析解决。(6)成本管理方面。通过对炉窑设备的实时数据记录,可计算单支产品在加热锻造和热处理工艺流程中的能源消耗,实现单支产品的成本统计分析。(7)通过个人办公室全过程信息化联网计算机可以查看任何一个产品当前所在的生产流程位置、状态、已消耗费用等,另外设备总体使用率,各产品生产周期和生产成本等也一目了然。从而可根据生产数据信息化分析处理系统了解是否满足市场及客户需求,企业内部的运行效率如何,优化内部管理,企业系统如何有效的适应外部的变化。为企业发展管理决策提供第一手参考资料和依据。
2信息接口设计
在第2节中,对系统应用的信息接口进行了介绍,并对其功能进行了较为详细的描述,根据其功能和作用位置的不同,可以将其分为信息接收接口、信息交付接口和信息扩展接口3类。
2.1信息接收接口信息接收接口的主要功能是:接收由硬件提交的信息,并对信息的格式进行检验和分类,最终递交给中央处理模块。其主要结构和工作流程如图5所示。如图5所示,在信息接收接口中,收到的信息首先存储在消息缓冲中,信息格式模式匹配单元通过预先定义的合法消息格式,对消息缓冲中的信息进行匹配,监测其合法性,当出现异常时,反馈控制单元调度消息缓冲,根据异常消息的来源,向相应的硬件接口做出反馈,进而将异常消息丢弃或封闭/重置相应的硬件接口。合法的消息被送入消息分类单元,该单元维护若干个列表,列表中存储格式化的消息数据。当中央处理模块或其他模块,调用相应的功能时,则通过相应的功能子接口,将对应的数据取出并交给相应的功能。信息接收接口是基础硬件设施和软件处理单元之间的桥梁,通过扩展消息格式化的适配功能,能够有效拓展支持的硬件种类,从而使得系统的功能更加强大。
2.2信息交付接口信息接收接口面向的是底层硬件设备和系统,而信息交付接口面向的是上层的用户和用户界面,其功能是:将中央处理模块处理完毕的数据和信息,按照不同的种类递交给用户界面,在用户界面中进行集成和显示。其主要结构和工作流程如图6所示。与信息接收接口的不同之处在于,交付接口担负了双向的信息传递功能。首先,通过数据调用单元可以将处理完成的数据交付给用户界面使用,根据类型的不同有图形化数据、字节化数据、GIS数据等,用户界面通过调用这些不同种类的数据,即可按照实际需求,合成和显示出包含丰富内容的导航信息图示。同时,用户通过用户界面对导航信息系统进行控制、设置或调用其需要的单个数据,此时用户指令被传递到用户指令解释单元,若用户指令合法,则通过编译器对指令进行解释,产生针对系统每个模块的具体指令,并通过控制信息产生单元将具体指令转换为系统模块能够识别的具体控制信息。然后利用系统控制接口,对系统的软件和硬件进行直接的控制或设置等操作。信息交付接口是实现用户界面的基础,其并不关心用户界面如何实现,终端用户有着怎样的具体需求,仅仅是提供了一系列标准化的数据交付接口,这样就可以根据不同类型的船舶和不同的应用场景,设计不同的用户界面,而不需要受到核心软件系统的束缚。
2.3信息扩展接口与前2种接口不同,信息扩展接口是向外部开放的接口,通过这个接口,例如卫星通信网、GIS系统、AIS系统等,均可以连接入导航信息系统,为系统提供更加丰富的信息和更加强大的功能。其主要结构和工作流程如图7所示。信息扩展接口同样需要担负数据的双向传递任务,一方面其运行有相应数据交换/传输协议的协议栈,如AIS数据传输协议栈、VSAT卫星通信协议栈等,以便通过相应系统的接口下载和传输消息,同时将接收到的消息转换为系统能够识别的数据结构,供中央处理模块处理。另一方面,系统根据需要,提出相应的信息下载请求,该请求通过请求处理单元,转换为相应系统的控制和请求指令,封装为合适的控制消息后,发送给对应的外部系统。信息扩展接口可以通过扩展外部数据交换协议栈来扩展其可以支持的外部系统种类,从而能够综合更多的外部信息,丰富导航信息系统的内容。
3仿真与实现
根据以上研究和设计,本文采用软件实现的方法对导航信息系统进行仿真和模拟。采用的环境是Corei31.8GHz,4G内存,Win764bit,采用Java作为程序开发语言。仿真的重点在于实现各个接口的功能,验证各个接口工作的有效性和高效性,依托当前较为成熟的中央处理模块[7],实现对信息的处理和存储,并使用Java语言开发整个模拟系统,模拟系统界面如图8所示。通过编写相应的代码,模拟各种硬件设备,信息接收接口成功地收集和转换了不同种类的消息,并通过信息交付接口递交给用户界面,从图8可以看出其成功地实现了信息的收集和显示。如图9所示,进行信息设置的测试,通过设计控制面板,设置相应的参数,观察能否对系统进行有效控制。通过以上实践证明,在理论上本文所设计的接口能够发挥相应的功能,实现导航信息的收集、处理和交付等功能,说明了本文提出的方案具有一定的可行性。
2软件设计
本接口设计选用开发环境MDK,在MDK环境下可以使用C/C++方便地开发Cortex-M3的应用程序.与其他开发程序相比,MDK具有入门容易、使用方便,并在调试程序、软件仿真方面也有很强大的功能.以太网收发数据程序流程如图3所示.主程序通过查询的方式发送数据,采取通过判断函数返回值方式是否接收到数据,若接收到数据,通过指针把数据包传递给上层的LwIP协议栈进行处理,完成数据包的收取.收发数据主程序主要包括系统及外设的初始化、以太网控制器的初始化、发送数据、接收数据和应用处理等部分.
2.1STM32库STM32库是由ST公司针对STM32提供的函数接口,即API(ApplicationProgramInterface),开发者可以调用这些库函数接口来配置STM32的寄存器,使开发人员得以脱离最底层的寄存器操作,有开发速度快、易于阅读、维护成本低等优点.实际上,库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关配置,向上为用户提供平配置寄存器的接口[3].本设计采用最新的STM32的3.5版库文件,相对于以往版本的库文件兼容性更好.
2.2LwIP协议栈要实现TCP/IP协议栈,代码可以自行编写,但一般都会移植更加稳定优良的代码.LwIP是LightWeightInternetProtocol的缩写,是由瑞士计算机科学院AdamDunkels等开发的适用于嵌入式领域的轻量级TCP/IP协议栈,它可以移植到含有操作系统的平台中,也可以在无操作系统的平台下运行.由于其开源,占用的RAM和ROM比较少,支持较为完整的TCP/IP协议,且十分便于剪裁、调试,被广泛地应用于中、低端的32位操作平台[4].该协议栈提供了一组API函数应用程序调用,编程方便[5].LwIP通过pbuf建立了与底层硬件收发数据包的数据结构,可以实现数据的管理;netif结构体则保存了网卡地址、IP地址、网关等设置的这些信息.下面例举部分LwIP_Init()函数,其主要功能是初始化LwIP协议栈,主要是把ENC28J60与LwIP连接起来,包括IP,MAC地址,接口函数。
3仿真与应用
MDK仿真工具强大,本设计软件调试部分利用MDK软件针对STM32进行仿真,执行工程中的代码.仿真结果如下图4所示.构成网络应用的软件有不同的结构,有B/S结构(浏览器/服务器)和C/S(客户端/服务器).本网络接口设计中HTTP服务器其是基于B/S结构的,用户运行应用程序时通过访问Web调用服务器的应用程序,并通过浏览器把结果显示给用户.该以太网接口应用于校园能耗监控系统中,所以设计出一款可以远程控制LED灯亮灭的简单应用,其运行结果如图5所示.
双向端口操作 接口部分采用地址和数据总线复用的方式以减少所需要的端口引脚数。当传输数据时低位地址保持在一个锁存器中,“Data1”用作数据输入总线输出总线和部分地址总线,对总线的复用需要对端口的配置进行动态改变使端口按需要设置为输入或输出。为了将一个端口引脚配置为输入,必须将其相应的端口配置寄存器位(PRTnCF.x)设置为“0”使其输出方式为“漏极开路”,寄存器锁存位(Pn.x)必须设置为“1”,使其输出状态为高阻态。例如下面的代码将端口0的所有引脚配置为输入:movPRT0CF,#00h;漏极开路输出方式movP0,#0ffh;高阻抗下面的代码将端口0的所有引脚配置为推挽输出方式:movPRT0CF,#0ffh;推挽输出方式SRAM_Read子程序(见程序代码部分)给出改变端口方向的一个例子,在程序执行的前一阶段“DATA1”口被配置为输出,将低字节地址输出到端口锁存器,在程序执行的第二阶段“DATA1”口被配置为输入,从外部SRAM读取数据。
二、接口电路程序控制实现
该程序控制系统由初始化SRAM接口逻辑程序、读外部SRAM程序、写外部SRAM程序等组成,功能是通过该接口电路程序实现硬件间的有效连接,实现稳定的通信,从而实现对记录盘的各种配置以及对记录数据进行精确管理。程序代码中的主程序概述了如何对该外部128KBSRAM的每一个字节进行读写,该程序向外部SRAM写入一个字节,再从写入的地址读回,然后比较回读的值与写入的值是否一致,程序接着处理下一个地址,直到整个64K的存储块写完,一旦低存储块写完,程序将“A16位”置1(见示例代码中“常数和声明”一节),切换到高存储块。程序将接着对高存储块的每个字节进行同样的读、写和校验操作。
2软件设计
数据处理接口模块的软件主要由硬件初始化、自测试程序、周期数据收发和命令响应四大功能组成。其中周期数据的收发包含消息层和数据层两个层次。消息层负责命令的辨识和数据的组织搬运,数据层负责协议的执行和发送接收等底层任务。数据层基本数据帧的格式见图4所示。这里的同步字、数据长度、校验方式由主机在初始化时确定。其中校验方式可选择两种,若采用和校验,则检验位占用1字节;若使用CRC校验,校验位占2字节。在周期数据收发的数据层中,RS422链路分为测控链路和任务链路两部分。测控链路用于检测设备的连通性和硬件的正确性,任务链路用于任务系统之间的通信。因此,将用于测控通信的链路设计为无链接协议链路,将用于任务通信的链路设计为有链接协议链路。有链接协议的任务链路的状态转移图见图5所示。任务链路的工作原理是:上电后首先进行通信测试,主端首先发送LTST,若从端回复ALTST为正常,测试完成后,转入空闲工作状态;空闲状态时主从定期进行握手操作,当主机存在发送命令时,转入消息发送状态,当从端发来数据帧前导码LHDR时主端转入消息接收状态;消息发送完成后会进行发送检查,如果从接收无误会发来ACK握手信号,当出现超时或从发来NACK信号时进行重新发送状态,重试超过门限进入通信测试状态;消息接收状态时若消息正确则进入空闲状态,若接收超时或消息错误时发送NACK通知主端重新发送,当错误次数超门限时进入通信测试状态。
3低功耗设计
简易无人机携带燃料有限,而实际任务中往往又要求其尽可能长时间的滞空,这就要求各类设备尽可能地以较小的功耗完成较多的功能。因此本文从硬件软件等不同层面设计来降低模块的功耗。降低功耗总的来说有关闭无用功能、减少无用操作和合理器件选型三个方法。在不使用DSP内部的AD、eCAN、SCI等资源时,可将对应的资源的时钟HSPCLK和LSPCLK关闭,同时不使能这些资源,以达到降低功耗的目的。作为降压型线性电源,TPS74401芯片的耗散功率PD=(VIN-VOUT)×IOUT,即电源的转换效率取决于输入输出电压差的大小,因此在电源转换电路的设计上应在满足电源芯片的最小dropoutvoltage的情况下尽量减小LDO器件输入输出电压差,可提高转换效率减少发热功耗,本文中1.8V电源由最接近1.8V电压的3.3V电源转换而来。为保持较好的信号完整性,模块上的印制板走线阻抗均按照单端50Ω差分100Ω控制。在RS422的发送端和接收端进行阻抗匹配以优化信号质量。在发送端使用33Ω串联匹配方式,接收端采用120Ω并联匹配方式,由于正常工作时差分电平约±5V,为降低直流功耗在并联匹配电阻处串接一10pF电容,这样既满足瞬态的信号完整性要求,也可在稳态时达到隔离直流,减小匹配电阻上直流功耗的目的。详见图6所示。在软件设计方面,采用定时查询和中断接收相结合的方式,减少DSP对外设的多余操作,避免不必要的轮询操作所产生的功率消耗。本文介绍的串行数据接口板在今后的改进设计中,可以注意合理的器件选型,以达到降低功耗的目的。例如:现设计中1.8V电源转换效率为54%,今后可结合实际电流消耗状况选用合适的开关电源代替线性电源[4],并使开关电源工作在中等或较重负载状态,可提高电源效率至80%左右;现有设计中CPLD动态功耗约为0.7W,由于该模块中逻辑占用资源并不多,因此后期可考虑用更小功耗的中小规模可编程逻辑器件替换。目前现有设计中未考虑模块的睡眠唤醒功能,今后可结合主机实际的需求,添加相应功能的电路,以降低待机功耗。
带有I2C总线接口的器件可以十分方便地将一个或多个单片机及器件组成单片机系统。尽管这种总线结构没有并行总线那样大的吞吐能力,但由于连接线和连接引脚少,因此其构成的系统价格低、器件间总线连接简单、结构紧凑,而且在总线上增加器件不影响系统的正常工作,系统修改和可扩展性好。即使有不同时钟速度的器件连接到总线上,也能很方便地确定总线的时钟。
如今,为了提高系统的数据处理精度和处理速度,在家用电器、通讯设备及各类电子产品中已广泛应用DSP芯片。但大多数的尚未提供I2C总线接口,本文将介绍一种基于CPLD的已实现的高速DSP的I2C总线接口方案。
图1I2C总线接口电路结构
1I2C通信协议
I2C总线是一种用于IC器件之间的二线制总线。它通过SDA(串行数据线)及SCL(串行同步时钟线)两根线在连到总线上的器件之间传送信息,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的扩展与控制。I2C总线接口电路结构如图1所示,I2C总线时序图如图2所示。
I2C总线根据器件的功能通过软件程序使其可工作于发送(主)或接收(从)方式。总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于数据传送的方向。SDA和SCL均为双向I/O线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路的,以具有线“与”功能。I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。
在数据传送过程中,必须确认数据传送的开始和结束信号(也称启动和停止信号)。当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平则定义为“开始”信号;当SCL为高电平时,SDA由低电平跳变为高电平则定义为“结束”信号。开始和结束信号都由主器件产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲状态。
在I2C总线开始信号后,依次送出器件地址和数据,I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ACK)。从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。
2设计方案
本文以DSP芯片ADSP21992与时钟芯片PCF8583的控制接口为例,说明基于CPLD的I2C总线接口设计方案。
ADSP21992是2003年最新推出的160MIPS、带CAN通信接口的适合于高精度工业控制和信号处理的高性能DSP芯片。它带有48K片内RAM、SPORT通信接口、SPI通信接口、8通道14位A/D转换器以及PWM等。
PCF8583是一款带有256字节静态CMOSRAM的时钟/日历芯片。地址和数据严格按照双向双线制I2C总线协议传输。内置地址寄存器在每次读/写后自动递增。
2.1系统结构设计
系统的基本功能是通过CPLD的I2C总线接口完成ADSP21992(主控芯片)与PCF8583的数据交换。系统框图如图3所示。
系统主要由两个部分组成:一是DSP与CPLD的接口;另一是I2C核。为了能在DSP指定的时刻读/写PCF8583的数据,使用DSP的读写信号、同步时钟和最高位地址控制数据的传输。最高位地址作为控制信号是因为DSP的I/O口比较少,必须优先供应给其它外设,因此用它来产生DSP提供给I2C核的片选信号。而DSP的地址总线位数较多,最高位一般使用不到,这样正好可以充分利用资源。
2.2I2C核
I2C核原理示意图如图4所示。
整个I2C核由控制模块和I/O模块构成。其中,控制模块包括控制信号发生部分和时钟开关,I/O模块包括数据缓存和同步时钟缓存。
当DSP的最高地址位出现一个有效信号时,便会使I2C核内的触发器产生一个全局使能信号EN?熏它将会启动时钟、计数器和其它控制信号,但数据不会出现交换。如果此时DSP的读/写同步产生,则会启动相应的读/写进程,进行数据传输。
I2C核的关键技术是:
①用计数器和全局使能信号EN配合触发进程。
由于I2C核的片选信号EN是由触发产生的,不能象电平信号一样由DSP的I/O控制,因此只能通过精确的计数器定时和读/写使能信号共同判别控制。
读/写使能信号WR_EN/RD_EN也象EN那样由触发产生,因此也要用同样的方法判别。
②同步时钟的产生。
从图2中可以看到,数据在同步时钟的高电平脉冲时必须保持稳定,如果此时发生变化将会被视为一个控制信号,而通信也会被中断。因此,同步时钟的高电平脉冲一定要在有效数据的中间出现。而所需的控制信号必须在同步时钟正脉冲的时候出现。
③对数据总线进行三态设置。
因为SDA和DSP_DATA都是双向数据线,在写SDA和DSP_DATA的进程中必须设置高阻态,否则会出现数据线状态“不确定”。
图5I2C核工作时序图
2.3DSP与CPLD的接口模块
根据DSP的时序,DSP与CPLD之间必须根据双方(ADSP21992和PCF8583)的时序制定一个握手协议。当读程序时,由于I2C总线协议只能支持最高400kbit/s的传输速率,而DSP的同步时钟可达几十兆赫。因此,DSP必须等到I2C核把PCF8583的数据读到CPLD后才能获得正确的数据(这里可以通过设立一个忙标志来实现)。而当写程序时,为了节约CPLD的资源(数据缓存特别占用资源),可以设置DSP定时输出数据给I2C核,让I2C核的一次只送一个数据。
2.4硬件设计
此I2C核可外挂多个带有I2C总线接口的芯片,可以通过发送不同的器件地址来选择。SDA和SCL线必须接上拉电阻。此外,同步时钟不能太高,否则会影响数据传输的稳定性。
2.5时序
(1)I2C核时序
以写为例,I2C核时序如图5所示。
(2)PCF8583时序
PCF8583的数据是8bit一个存储单元,共256个字节,所以只需要8位地址,而且器件本身有两种寻址方式:一种是从指定地址开始递增寻址,另一种是从首地址开始递增寻址。两种寻址方式的时序是不一样的,如图6所示。
图6PCF8583时序图
近年来,随着嵌入式系统的快速发展及其对硬件可靠性要求的提高,特别是带有多个运动控制卡的网络运动控制系统的发展,对运动控制卡提出了新的要求。运动控制卡应具有带热插拔功能的CompactPCI总线接口。在这样的运动控制系统中,采用可靠性高的嵌入式系统软件,上位机只需对被控对象实施总体的控制和管理;而位置反馈信号的采集、闭环控制的计算及控制量的输出则均可由以DSP为核心的运动控制卡完成,极大地提高了运算速度和控制响应速度。通过带热插拔功能的CompactPCI总线接口的上下机联接,使系统具有更高的可靠性和带电更换故障板卡的能力。
1CompactPCI接口总线概述
CompactPCI接口总线定义了更加坚固耐用的PCI版本。在电气、逻辑和软件方面,它与PCI标准完全兼容。CompactPCI接口卡安装在支架上,并使用标准的Eurocard外型。CompactPCI虽然与标准PCI属同一标准,二者还是有很大的不同。CompactPCI相对PCI来讲具有很多优点:(1)具有更好的机械特性。它增强了PCI系统在电信或其它条件恶劣的工业环境中的可维护性和可靠性。(2)采用Eurocard封装,系统中气流均匀。(3)CompactPCI连接器的电源和信号引线支持热插拔规范,这对于容错系统是非常重要的,也是标准PCI所不能实现的功能。(4)总线易于扩展,可同时支持多达256个标准的PCI总线设备。(5)CompactPCI背板的连接器插针分为长针、中长针和短针。长针是一些电源针,最短的针是BD-SEL#,其它总线信号和部分电源信号是中长针。连接器插槽J1插孔有长针插孔、中长针和短针插孔,而J2插槽都是中长针插孔。
2系统的硬件结构概述
开放式四轴DSP运动控制卡经12位DAC驱动四个伺服电机,并通过CompactPCI总线背板连接器与主机通信。其中DSP处理器与CompactPCI接口采用PLX公司的PCI9030接口芯片使之和双口RAM缓冲区进行通信。
PCI9030是业界首个支持热交换的PCI目标接口芯片,为CompactPCI接口提供了优秀的解决方案。它采用SMARTarget技术,可以保证高性能的热交换实施功能,可以支持具有热交换功能的PICMG2.1目标设备,并且符合PCIv2.2规范所规定的32位33MHz目标接口功能,可以获得高达132Mbyte/s的PCI突发传输速度,局部总线操作速度最高可达60MHz,支持5个局部地址空间到PCI总线地址空间的映射(空间0、1、2、3、4以及1个扩展的ROM),传输等待周期及总线宽度可编程。另外,PCI9030内含预充电BIOS、早期电源支持、热交换控制/状态寄存器(HS_CSR)和附加引脚资源,可利用这些资源以及ENUM#输出信号、弹出开关和表示用户插入/取出状态的LED灯实现运动控制板卡的带电热插拔的软硬件控制。
图1
其硬件结构框图如图1所示。该系统由以下几部分组成:
·核心处理器TMS320LF2407,主要完成位置速度PID控制、插补迭代运算、开关量输入和输出、PLC控制等对实时性要求高的任务,另外还完成程序和数据存储和上下机的通信任务。
·模拟量控制电路,将数字量速度信号经四路12位数/模转换芯片DAC7725转换为-10V~10V的模拟信号,输出到电机伺服驱动模块。
·反馈电路,由两片CPLD元件EPM7128SLC84构成四路12位可逆脉冲计数器,对差分光电编码器的编码脉冲进行循环计数,可实现编码器Z相点硬件中断。
·FLASH电路,用于存储数控参数和数控指令代码,也用于紧急情况下保护数据。
·开关量电路,包括通用8/8I/O点、4个电机使能输出、4个轴的左右极限输入和原点中断输入等电路。
·通讯电路,通过PCI接口从模式使3.3V芯片PCI9030和双口RAM芯片70V24与PC机的CompactPCI总线相连,可以进行高速数据传输。
本系统是一个闭环多轴运动控制硬件系统,具有快速精确的计算能力以及较强的数据通讯能力,是良好的复杂数控系统平台。
3CompactPCI接口的设计
CompactPCI接口的设计要点在于在硬件插拔过程中,不能对CompactPCI总线产生较大的冲击,不能影响CompactPCI总线上数据传输的正确。所以应具有良好的热电源切换控制电路和相应的总线电路以及便于软件处理热插拔过程的控制信号。
电源控制和PCI9030的接口原理框图如图2所示。
3.1PCI9030芯片热插拔控制信号的作用
在CompactPCI规范中规定:(1)板卡插入后,硬件初始化过程中应点亮蓝灯;(2)板卡即将拔出,软件能获知板卡即将拔出,并做好善后工作后,点亮蓝灯。
PCI9030芯片有BD_SEIL#输入信号引脚、ENUM#输出信号引脚、CPCISW输入信号引脚和LEDON#输出信号引脚,均用作CompactPn接口热插拔控制信号。其功能分别如下:
PCI9030的BD_SEL#输入信号引脚同运动控制卡CompactPCI接口的引脚BD_SEL#相连,当BD_SEL#信号变高时,使PCI9030输出引脚成高阻态,保护芯片。PCI9030的ENUM#信号是送到背板的带上拉的集电极开路信号;它通知背板主机CPU板卡是刚刚插入,还是即将拔出。并通知CPU系统配置改变,使CPU同时执行相关必要的软件操作(在板卡安装时,安装设备驱动程序;在移出板卡前,卸载设备9B动程序)。板卡的插入/拔出状态是由CPCISW信号送到PCI9030完成的,这时,PCI9030通过ENUM#信号通知背板主饥硬件配置改变情况,同时主机CPU执行相关必要的软件操作。当操作结束时,主机CPU通过PCI9030将CPCISW信号写入HS-CSR寄存器的相应位中,使LEDON#信号变化,点亮或熄灭蓝灯,通知板卡可安全取出或已安全插入。另外,PCI9030将板卡插入/拔出的状态(即CPCISW信号)写入HS_CSR寄存器的相应位中,软件可以通过这些位来查询板卡插入/拔出状态,使软件可采取各种切换措施,也可以通过向寄存器的相应位写1来清除该位。
3.2热插拔电源电路的原理设计
3.2.1热插拔电源管理器的确定
热插拔电源电路需在插拔过程中和正常工作时,对CompactPCI接口板电源进行监控,按一定的速率及时地上电和断电,把该电源的情况及时通知背板系统以便通过软件进行处理;同时需对CompactPCI接口板的总线信号提供预充电电压,使CompaetPCI接插件的插针点的预充电电压达到1V,保证CompactPCI接口板在插拔过程中,对CompactPCI总线的冲击很小;另外需对背板的PCIRST信号和CompaetPCI接口板的电源好坏情况进行逻辑处理来产生该接口板上的LOCAL_PCI_RST信号。为此,热插拔电源电路采用了芯片LTCl646作为CompactPCI热插拔电源管理器。它能够使线路板在运行中的CompactPCI总线插槽内安全地插入和拔出。两个外部N沟道通路晶体管IRF7413控制3.3V和5V电源,使电源能在电流限制或可设置速率上电。电子电路断路器可保护两组电源不受过流故障情况的损害。
图2
3.2.2LTCl646芯片的主要引脚功能
·LTCl646的3.3V和5V输入主要来自中等长度的电源插针。3.3V和5V连接器长插针在CompactPCI插卡上与中等长度的3.3V和5V电源插针短接在一起,为LTCl646的预充电电路、VI/O上拉电阻和PCI9030芯片提供初期电源。
CompactPCI背板的连接器插针中有引脚BD_SEL#、HEALTHY#用于热插拔电源电路。
·芯片PWRGD#信号引脚输出指示何时所有电源电压都在容许范围内,连接于PWRGD#引脚的HEALTHY#信号把板卡电源情况通知背板主机,当HEALTHY#信号变高时,说明板卡电源情况出了问题。
·芯片OFF/ON#输入信号引脚连接于板卡的BD_SEL#引脚,用来控制开关板卡电源或将电源断路器复位。而BD_SEL#信号应通过1.2kΩ电阻上拉至PCI9030的I/O工作电压VI/O。
·芯片PRECHARGE引脚用于产生1V的预充电电压。可在板卡插拔过程中对总线I/O引脚施加偏置。板卡上需要进行预充电的CompactPCI总线引脚(即接插件J1、J2与CompactPCI接口器件PCI9030连接的引脚)包括:ADO~AD31、C/BEO#~C/BE3#、PAR、FRAME#、IRDY#、TRDY#、STOP#、LOCK#、IDSEL、DEVSEL#、PERR#、SERR#。LTCl646产生的预充电信号经过较大的10kΩ电阻上拉至预充电电压(PRECHARGEOUT)。而BD_SEL#、ENUM#、INTA#信号应上拉至PCI9030的I/O工作电压VI/O。
·芯片的RESETIN#引脚输入信号PCI_RST#,在片内与HEALTHY#信号进行逻辑结合,从而在引脚RESETOUT#生成LOCAL_PCI_RST#信号送到PCI9030芯片的PCI_RST#信号引脚,用来在任一组电源超出范围时对板卡和芯片PCI9030进行复位。
3.2.3在LTCl646芯片控制下CompactPCI接口板的上电顺序
当插卡插入时,长3.3V和5V连接器插针以及长GND插针首先接触。LTCl646预充电电路在插入阶段将总线I/O插针偏置为1V。3.3V和5V中等长度的电源插针在插入的下一个阶段接触,但只要OFF/ON#引脚被1.2kΩ上拉电阻拉到VI/O,线路板电源则被关断。在线路板插入的最后阶段,BD_SEL#短连接器插针开始接触,OFF/ON#引脚被拉低。这使得通路晶体管导通;并且在内部有一个5μA电流源与TIMER引脚连接。时每个通路晶体管的电流开始增加,直至增加到各自的电流限值;然后,3.3V和5V电源被允许按一定的速率上电,一旦两组电压都在容差范围之内,HEALTHY#将拉低,LOCAL_PCI_RST#可自由跟随PCI_RST#。
3.2.4在LTCl646芯片控制下CompactPCI接口板的断电顺序
当BD_SEL#被拉高时则开始一个断电过程。LTCl646内部开关被连接于每个输出电源电压引脚,使旁路电容器向地放电。TIMER引脚立即被拉低。GATE引脚被一个200μA的电流源拉低,以防止3.3V和5V电源上的负载电流同时变为零从而对电源电压造成干扰。当任一输出电压跌落在门限以下时,HEALTHY#引脚被拉高,LOCAL_PCI_RST#将被确定为低。
一旦断电过程完成,插卡就可以从插槽内取出。在拔出期间,预充电电路继续将总线I/O插针偏置为1V,直到5V和3.3V长连接器插针分开。
3.3CompactPCI接口设计的其它电气措施
·热插拔板卡在带电拔插过程中,为了保护板卡免遭静电损坏,必须进行静电放电。所以,必须在板卡上设计放电条。
IC卡(IntegratedCircuitcard)即集成电路卡,是将一个集成电路芯片镶嵌于朔料基片中,封装成卡的形式,外形与常用的覆盖磁条的磁卡相似。IC卡芯片具有写入和存储数据的能力。IC卡存储器中的内容根据需要可以有条件地供外部读取,或供内部信息处理和判定。根据卡中所镶嵌的集成电路的不同,可以分成存储器卡、逻辑加密卡、CPU卡三类。其中CPU卡即为由中央处理器CPU、EEPROM、随机存储器RAM以及固化在只读存储器ROM中的片内操作系统COS(ChipOperationSystem)组成的IC卡。IC卡按与外界数据传送的形式来分,有接触式和非接触式两种。
图1T=0的CPU卡APDU指令实现流程
1CPUIC卡T=0的协议介绍
目前大多数CPUIC卡采用T=0模式。所谓T=0,即CPUIC卡与接口设备(即读写器)中数据传输方式为异步半双工字符传输模式。
从T=0协议的功能出发,该协议的实现可以分为物理层、数据链路层、终端传输层和应用层。其中物理层和数据链路层可以具体参看ISO7816标准。在T=0协议应用,终端传输层和应用层实际上是不易分割来说明的,下面简单说明。
终端传输层根据卡片返回的过程字符和状态字节执行相应的操作,使读写器对数据的处理过程明朗清晰。卡片返回的过程字节和状态字节跟应用层发送给卡的APDU(ApplicationProtocolDataUnit,应用协议数据单元)和VPP使用等有关。表1为VPP未用时的终端传输层中返回的过程字节。
表1
字节值结果
ACKINSVPP空闲,所有其余的数据字节相继续被传送
INS+''''FF''''VPP空闲,下一个数据字节随后被传送
SW1SW2VPP空闲,接口设备等待SW2字节
应用层即为由CLA、INS、P1、P2、P3作为命令头组成的命令消息体的APDU响应和应答处理层。其中CLA为指令类别,INS为指令码,P1、P2为参数,P3为根据APDU的不同格式为发送给卡的数据长度或期望响应的数据长度。APDU的几种情况如表2所列。
表2
命令头发送数据长度发送的数据期望应答的数据长度
通用APDUCLAINSP1PLCDataLE
情况一CLAINSP1P
情况二CLAINSP1PLE
情况三CLAINSP1PLCData
情况四CLAINSP1P2LCDataLE
CPU卡对接口设备(即读写器)的应答APDU情况如表3所列。
表3
体尾
数据DataSW1SW2
其中体中的数据字节数由命令APDU中的LE指出;SW1、SW2是必备的,可以指明命令APDU执行正确或执行出错的错误类型。
2基于T=0传输协议的CPUIC的APDU指令流程
根据目前CPU卡的常用T=0协议、自带编程升压电路的应用情况,以及本读写器接收IC卡数据报文直接发送PC机处理的特点,本读写器可行的APDU命令和响应的处理流程如图1所示。
3读写器的硬件组成
读写器的硬件部分主要由IC接口管理芯片TDA8007、MCUAT89C52、外部数据存储器W24257S、串口电平转换芯片MAX3226、安全IC卡座(即SAM卡座)、应用IC卡座、键盘口供电的串口通信线及其它相关元器件组成。
图2所示为通过PC机控制管理的外置于PC机的接触式CPUIC卡读写器。通过定制的数据线,该读写器的5V直流电源可直接由键盘口提供,同时数据线还负责PC机与读写器的串行数据交换。在大部分IC卡读写应用中,都涉及到IC卡的认证和数据读写的国解密问题,所以本读写器除了提供一个供用户使用的IC卡接口卡座外,还内置了一个SAM卡,即安全IC卡卡座,以方便安装SAM卡,保证应用IC卡读写时的数据安全,保护用户的利益。
硬件的其它组成部分,如处理器,目前采用Atmel的89C52。其4KB的Flash程序存储器可以满足读写器的程序空间需要。由于PC机与89C52、89C52与TDA8007的数据交换要求的暂存数据空间比较大,89C52提供的256字节不够,需外加一片数据存储器。本读写器中使用的是华邦的W24257S。其有32KB存储容量,IC接口部分的主要芯片为Philips的TDA8007。
4IC卡接口芯片应用
下面介绍一下TDA8007及其应用。TDA8007的原理结构如图3所示。
TDA8007芯片能够提供两个能同时满足ISO7816标准及EMV和GSM11-11标准的IC卡读写接口。在本读写器中,一个用于与应用IC通信,另一个用于与安全IC卡通信。与上文CPU卡的触点图相对应,CLKi、RSTi、VCCi、I/Oi、GNDCi、PRESi、C4i、C8i(其中i=1,2;C4i、C8i未用;PRESi可用于检测IC卡是否插入。具体应用可参看TDA8007的技术文档)都直接由TDA8007提供给IC卡接口相连,MCU只需通过其接口控制并行通信来管理TDA8007,便可实现对IC卡的上电、下电及读写数据处理。其中,微处理器既可以通过总线复用把TDA8007内部的所有寄存器作为外部存储器,用MOVX寻址,也可以通过非总线复用方式访问,此时TDA8007用AD0~AD3来区分内部各寄存器。另外,TDA8007的片选信号和外部中断信号线可以方便读写器处理多个IC卡头。TDA8007的特别硬件ESD处理、接口短路处理、电源出错处理等也给IC卡和IC卡读写器提供了比较高的安全保护;同时,TDA8007内部集成的电源管理功能允许TDA8007的供电范围可达2.7~6.0V,并且TDA8007通过电源管理可以给IC卡提供5.0V、3.0V及1.8V的电源,以适合不同工作电压的IC卡应用。
图3IC卡接口芯片TDA8007的原理框图
本读写器是通过总线复用对TDA8007的寄存器进行控制的。其中MCU的P1.5为TDA8007的片选,P0口为与之通信的8位数据线,TDA8007的各寄存器预先被宏定义的成微处理器的一个外部数据单元(下面电程序处的定义),从而方便MCU访问。下面结合TDA8007寄存器的定义和位分配,给出应用TDA8007接口芯片对IC卡进行上电激活和下电的程序。TDA8007的寄存器主要三类。第一类,通用寄存器:①卡槽选择CSR;②硬件状态HSR;③定时器TOR1、TOR2、TOR3。第二类,ISO7816串行处理寄存器:①串行状态USR;②混合状态MSR;③串行发送UTR;④串行接收URR;⑤队列控制FCR。第三类,卡专属寄存器:①可编程分频PDR;②保护时间GTR;③串行控制UCR1、UCR2;④时钟配置CCR;⑤上电控制PCR。注意:对于卡专属的寄存器,即卡接口1、卡接口2分别对应的寄存器,逻辑上具有相同的名及访问地址,因而,对不同的瞳操作,需要通过CSR选择对应的卡槽来切换卡专卡属寄存器的映射的物理空间。所以,接口设备每次从一个卡的上下电或读写转向另一卡,都需要访CSR设定对应的卡槽。对于每个寄存器的位定义不再多述,主动性者可参看TDA8007的技术文档。
5上下电过程及具体程序
图4为IC卡的上电时序图。要实现之,需对PCR进行写操作。其中START=PCR.0,RSTIN=PCR.2,VUP上升表示激活了TDA8007中的电压转换电路。当START置高时,只要能检测到选定卡槽中的IC卡存在,且没有TDA8007能检测到并在HSR中指示的硬件错误出现,则对应IC卡接口的VCC1或VCC2将能被提供响应的电平(5V、3V或1.8V)。随后对应卡的I/O数据线被置成高状态(Z状态),给IC卡提供设定的时钟信号,常用为3.5712MHz。大约在START置高108ETU后,RSTIN置高。因为RST为RSTIN的拷贝,则对应卡的RST被置高。然后,用TDA8007提供的定时器TOR3、TOR2设定对ATR(AnswerToRequest)即复位应答首字节的最大等待时间120ETU(ElementTimeUnit),TOC设定定时器工作方式,便开始等待ATR首字节到来后做相应处理。至此,IC卡上电激活工作完成,随后可以根据ATR字节的要求的工作方式对IC卡进行相应的读写处理。具体见上电程序。
图4TDA8007产生满足ISO7816标准诉IC卡上电激活时序
TDA8007寄存器访问的预定义
#include<absacc.h>
#defineXXXXBYTE[0x8000]//XXX表示CSR等各寄存器上电程序如下:
P1.5=0;//片选TDA8007
CSR&=0xf8;
CSR|=ncard;//选择卡,ncard=1,2
CSR&=0xf7;
CSR|=0xf7;
CSR|=0x08;//复位UART的寄存器
UCR2&=0xf7;//异步模式,SAN=0
CCR&=0xdf;//时钟停止于低电平
UCR2|=0x60;//关闭附加中断及收发中断
GTR=0xff;//保持时间12ETU
If(v==1)//v为函数变量
PCR|=0x08;//1.8V卡用
elseif(v==3)
PCR|=0x02;//3V卡用
Else
PCR&=0xfd;//5V卡用
UCR2&=0xfc;//CKU=PSC=0,--31
FCR=0x00;//1奇偶校验1FIFO
PDR=0x0c;//Divider=12
CCR=0x00;//不分频
PCR&=0xfb;//RSTIN=0
UCR2|=0x04;//不自动转换
UCR1=0x01;//正向约定
UCR1&=0xf7;//接收模式
flag3=0;//复位定时标志
flagatr=0;//接收ATR首字节定时标志
PCR|=0x01;//激活
TOR2=0x6c;
TOR3=0x00;
TOC=0x61;//RST拉高前等待108ETU
while(flag3==0);//定时时间到,在中断中设置flag3=1
TOC=0x00;//关闭定时器
PCR|=0x04;//给复位拉高
TOR2=0x78;
TOR3=0x00;
TOC=0x61;//RST拉高前等待
flagatr=1;
ATR();//复位应答处理函数
图5为IC卡的下电时序图。相对于上电时序,下电过程对时间的要求不是很严格,只要设计者控制TDA8007按照一定的顺序置低START、RSTIN和停止CLK即可,然后TDA8007会自动逐步释放RST、I/O、Vcc及VUP。具体处理见下电程序。
下电程序:
P15=0;
PCR&=0xfe;//START=0;下电
PCR&=0xfb;//卡的复位脚保持0
CCR&=0xdf;//停止时钟于低
CCR|=0x10;//停止时钟
P15=1;
6使用TDA8007应当注意的问题
TDA8007对于Vcc、RST出错,芯片过热(如图IC卡为电源短路卡或金属片),或IC卡插入拔出时都会产生中断输出。每次中断处理结束,应注意把HSR中的值读入一个临时地址,以便清楚HSR中的标志。
每次发送数据到IC前,即接收IC卡的最后一个数据之前,应设置寄存器UCR1中的LCT位,以便接收完IC卡的数据后,自动切换成发送状态。
对TDA8007部分布线时应注意,时钟信号线与其它线的隔离:最好被地线包围。
对于电路板上TDA8007部分的电容应尽量靠近TDA8007,其中电容Cap、Cbp、Cup尤其如此,并最好不要在这些电容连向TDA8007引脚过程中使用过孔;同时,Cap、Cup、Cbp电容的ESR要尽量小。
对TDA8007处理的两个IC卡座中的任何一个执行上电、下电、读写卡操作之前,必须执行选择卡座的操作函数,以便选中具体的IC卡进行处理。
1USB协议和芯片选择
理解好USB协议是USB系统开发的第一步。USB协议版本包括1.0、1.1和2.0,USBOTG是对2.0版本协议的补充。虽然USB协议内容繁多且复杂,然而,对USB开发影响较大的却只是少数部分,以下对协议版本1.1[1]中这些部分进行介绍。
1.1USB协议
一般,每个USB设备由一个或多个配置(Configuration)控制其行为。使用多配置原因是对操作系统的支持;一个配置由接口(Interface)组成;接口则是由管道(Pipe)组成;管道与USB设备的端点(Endpoint)对应,一个端点可以配置为输入输出两个管道。在固件编程中,USB设备、配置、接口和管道都用描述符报告其属性。
图1为USB多层次通信模型。端点0默认配置为控制管道,用来完成所规定的设备请求(USB协议第九章)。其它端点可配置为数据管道。对开发而言,主要的大数据传输都是通过数据管道完成的[2]。
USB传输类型包括批量传输、等时传输、中断传输和控制传输,每种传输类型的传输速度、可靠性以及应用范围都不同[3]。控制传输可靠性是最高的,但速度最慢;等时传输速度快,满足实时性,但可靠性低。在具体应用中,端点传输类型可根据传输速度和可靠性选择。
在USB通信协议中,主机取得绝对主动权利,设备只能是“听命令行事”,通过一定的命令格式(设备请求)完成通信。USB设备请求包括标准请求、厂商请求和设备类请求。设备的枚举是标准请求命令完成的;厂商请求是用户定义的请求;设备类请求是特定的USB设备类发出的请求,例如海量储存类、打印机类和HID(人机接口)类。固件编程中设备请求必须遵循一定的格式,包括请求类型、设备请求、值、索引和长度。
1.2USB接口芯片选择
USB接口芯片的类型有:
(1)按传输速度的高低:低速(1.5Mbps)和全速(12Mbps)可选USB1.1接口芯片,例如Philips公司的PDIUSBD12和Cypress公司的EZ-USB2100系列;高速(480Mbps)可选USB2.0接口芯片,例如Philips公司的ISP1581和Cypress公司的CY7C68013。
(2)是否带MCU(微控制器):一般Philips公司的都不带MCU,Cypress公司大多都带,例如AN2131。
(3)是否带主控器功能:不需要主机参与,主从设备间可进行数据传输,芯片有Philips公司的ISP1301和Cypress公司的SL811HS等。
还有专门用途USB芯片,例如闪存专用芯片IC1114。工程中用户可根据自己的需求选择一款性价比高的芯片。另外可用开发资源也是要考虑的重要方面,例如开发板和芯片厂商提供的网上资源,可大大降低开发的难度。
2基于USB接口的数据采集系统的设计
2.1系统简介
该系统能够实现16路温度数据自动采集,系统的组成框图如图2所示。主要包括8个组成部分:中央处理器选用AT89C52芯片,完成各部分控制功能和USB传输协议;实时时钟记录当前测量温度的时间;温度传感器和接口电路主要完成温度采集,并读入MCU处理;复位电路完成对MCU的上电复位和电源电压监视;看门狗电路用来监视MCU是否工作;存储电路主要存储采集到的温度数据以及采集的实时时间;电源电路主要为各部分提供要求的电源;外设与主机间的通信电路采用USB接口。
2.2接口芯片选择
接口电路采用Philips公司的PDIUSBD12[4](以下简称为D12)芯片。主要因为D12芯片信息、开发资源丰富,具有较高的性价比。
D12芯片的主要特点包括:
·符合USB1.1版本规范;
·可与任何外部微控制器/微处理器实现高速并行接口(2MB/s);
·采用GoodLink技术的连接指示器,在通信时使LED闪烁;
·主端点的双缓冲配置增加了数据吞吐量并轻松实现实时数据传输;
·在批量和等时模式下均可实现1MB/s的数据传输率;
·完全自治的直接内存存取DMA操作。
2.3接口硬件设计
由D12接口组成的通信电路原理如图3所示。关于D12的各引脚说明见参考文献[4]。多路地址/数据总线ALE接单片机的ALE脚,这样使用MOVX指令可以与D12接口,对D12操作就象对RAM操作一样,此时忽略A0(命令口和数据口地址线)的输入。因为没有使用DMA传输方式,所以没有用到DMACK_N、EOT_N和DMREQ_NDMA引脚。INT_N是USB中断请求脚,发出USB中断请求;GL_N是GoodLink指示灯,在调试过程中非常有用,在通信时会不停闪烁。如果一直亮或者一直暗,表示USB接口有问题,如果D12挂起,则LED关闭。CLKOUT是D12的时钟输出,可以通过固件编程改变其频率,在调试固件时,可作为参考。
2.4接口程序设计
USB接口程序设计是USB开发的核心。USB接口程序设计包括三部分:单片机程序开发、USB设备驱动程序开发、主机应用程序开发。三者互相配合,才能完成可靠、快速的数据传输。
2.4.1单片机程序设计
单片机程序(又称固件)采用模块化程序设计,主要模块包括:数据采集模块、数据处理、监控模块和数据通信模块。模块化设计的优点是可靠性高、可读性好、升级简单。
通信模块固件结构如图4所示。主循环和中断服务程序之间的数据交换可通过事件标志和数据缓冲实现。图3中USB中断引脚INT_N发出中断请求,中断服务程序根据中断请求类型操作,设置事件和填充数据缓冲区再传输给主循环;标准设备请求程序是对标准请求进行处理;用户可以根据实际需要编写厂商请求,例如发出启动或停止数据采集命令。
图3USB接口连接示意图
2.4.2驱动程序设计
驱动开发工具有DDK和第三方开发工具。其中DDK开发难度最大,第三方开发工具有DriverStudio和Windriver等。DriverStudio难度适中,而Windriver则属于应用层驱动开发,难度小,但效率低,并存在问题。
DDK驱动程序开发工作包括:开发环境设置(VC编译环境)[5]、驱动程序设计[6]、安装文件(INF文件)设计。
驱动程序设计采用WDM(WindowsDriveMode)。WDM设备驱动程序提供了一个参考框架,大大降低了由DDK书写驱动程序带来的难度。
D12驱动使用的例程包括:DriverEntry、AddDevice、DispatchPnp、DispatchRead、DispatchWrite和DispatchDeviceControl例程,以下是D12的WDM驱动程序函数:
DriverObject->MajorFunction[IRP_MJ_CREATE]=D12_Create;
DriverObject->MajorFunction[IRP_MJ_CLOSE]=D12_Close;
DriverObject->DriverUnload=D12_Unload;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL;
=D12_ProcessIOCTL;
DriverObject->MajorFunction[IRP_MJ_WRITE]=D12_Write;
DriverObject->MajorFunction[IRP_MJ_READ]=D12_Read;
DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL;
DriverObject->MajorFunction[IRP_MJ_PNP]=D12_Dispatch;
DriverObject->MajorFunction[IRP_MJ_POWER]=D12_Process-PowerIrp;
DriverObject->DriverExtension->AddDevice=D12_PnPAddDevice;
驱动程序与应用程序和硬件之间通信都是IRP(I/O请求包)完成的。IRP_MJ_PNP主要是实现USB即插即用,例如设备的添加、删除和资源的分配;IRP_MJ_POWER实现电源管理,例如设备的挂起和唤醒;IRP_MJ_CREATE(创建)、IRP_MJ_CLOSE(关闭)、IRP_MJ_
DEVICE_CONTROL(设备控制)、IRP_MJ_WRITE(读)和IRP_MJ_READ?穴写?雪是主要完成数据通信的函数,实现管道的创建、关闭和数据读写。其中设备控制具有输入输出缓冲区,可实现读和写功能;AddDevice和DriverUnload实现设备管理,在设备添加和卸载时,创建和删除设备,以及管理资源分配。
驱动程序通过安装文件(.inf文件)中PID(产品识别号)和VID(厂商识别号)识别USB设备。
2.4.3应用程序设计
主机应用程序的编写使用VC编译环境中的API函数实现。
应用程序的编程方法与串口编程类似。首先必须查找设备,打开设备的句柄;然后进行读写和控制操作;最后是关闭设备句柄。为了提高效率,可使用多线程技术实现读写。
应用程序通过GUID(注册表驱动唯一识别号)查找驱动程序。
2.5调试
首先是固件调试,可用仿真机完成,驱动开发工具Windriver也是很好的固件调试工具,例如测试标准请求、厂商请求和管道读写。其次是驱动调试,这是USB接口开发最困难的部分,调试工具可用DriverStudio中Softice工具和文献[6]中DebugPrint跟踪工具,监视工具BusHound可监视USB的实际数据传输情况。需要注意的是,驱动调试必须在应用程序正确调用的前提下。
1.2城市配电通信网以所提出的三层网络基本构架为基础,本文所设计的城市配电通信网整体结构如图2所示,其中,骨干网采用的通信技术为光纤通信技术,并采用光纤环作为基本的网络结构。图2城市配电通信网结构考虑到城市用户集中,10kV变电站分布均匀,适合采用以太网无源光网络(EthernetPassiveOpticalNetwork,EPON)+以太光纤环接入网。其中,EPON接入网主干是由子站汇聚交换机组成的以太网光纤环。每个35/110kV高压变电站可以连接一个或者多个以太网光纤环。每个子站汇聚交换机连接一个光线路终端(OpticalLineTerminal,OLT),或者子站汇聚交换机与OLT集成为一个OLT交换机。每个OLT对应一个10kV的变电站,下面分接多个光网络单元(OpticalNetworkUnit,ONU)。每个ONU单元都负责收集一个或者多个驻地网络的信息。城市配网驻地网可以为无线网络或者有线网络,无线网络可以是ZigBee[16]、红外、WiFi等局域网,而有线网络一般是总线网络。无线网络包括一个协调器和若干个节点。节点即为用户家中的智能电表、智能插座等,而协调器则负责组建此无线网络,汇聚各个节点的信息并转换成适合接入至ONU的接口(如RS485)传输至ONU。同时,也负责将从ONU接收到的数据信息广播至各个节点。有线网络一般为总线网络,如RS485总线。
1.3农村配电通信网本文所设计的农村配电通信网整体结构如图3所示,其中,农村配网骨干网与驻地网的功能与结构与城市配网相同。考虑到农村用户分散,覆盖面广,10kV变电站分布稀疏,农村配网接入网并不适合采用EPON+以太光纤环接入网。由于农村用电信息监测实时要求不高,也没有严格的可控性要求,因此采用GPRS/3G/4G接入方式网络结构最为简单。采用此方式主要租用网络运营商的无线网络,将数据送回网络运营商的后台系统,然后该后台再通过专线和配网系统进行互联。GPRS/3G/4G接入方式对用户的数量没有限制,用户无需建网和维护,具有建设周期短、业务开展快、网络成本低等特点。
2异构配电通信网多址与数据聚合方法
2.1多址与数据聚合方法基于上述异构配电通信网,本文采用驻地网网关来解决配网通信系统中的多址与数据聚合问题,其位于驻地网与接入网之间,作为多个异构驻地网与接入网中一个接入点的连接,如图4所示。图4驻地网网关在网络中位置在上行通信中,驻地网网关首先接收来自挂接在该网关上的N个驻地网的短数据包,并按照驻地网进行分类存储。例如,来自驻地网n的短数据包存储在第n号存储器,n=1,2,…,N。每个短数据包含有其在本驻地网的地址和数据包长度。然后,每接收短数据t秒,驻地网网关将接收到的存储于N个存储器中的短数据包进行封装。在封装帧的过程中,帧头包括驻地网网关ID和子帧个数,如图5所示。帧体由各子帧组成,每一个子帧封装来自同一个驻地网的所有已经接收到的短数据包,即存储于同一个存储器中的所有短数据包。值得指出的是,有可能t秒内某驻地网没有数据包发送,此时对应的存储器为空。因此,子帧的个数可能小于N。子帧帧头包括驻地网网关下面驻地网ID和短数据包个数,如图5所示。子帧帧体由若干个数据包组成。这些数据包即是在t秒内接收到该子帧所对应的驻地网的所有数据包。驻地网网关将帧封装好后,将其传送给该网关所连接的接入点。随后,驻地网网关再次接收并分类存储N个驻地网的短数据包,并对短数据包进行封装及传送,如此循环。在下行通信中,驻地网网关首先接收来自接入点的数据帧。该数据帧的封装结构与如图5所示的上行通信时封装帧结构完全一致。然后,驻地网网关按照图5所示结构,对数据帧进行解析,分别得到各个子帧。最后,驻地网网关依次解析每一个子帧。根据子帧中的驻地网ID,将该子帧内所有的数据包发送至该驻地网协调器。值得说明的是,上述介绍的通信方式中,一个网关下的多个驻地网回传时间间隔(t秒)是相同的。然而,在实际使用中,更为普遍的情况是多个驻地网的采样间隔和回传间隔是各不相同的。这种情况下,网关需要根据每个驻地网的回传间隔和采样间隔进行处理。网关的回传将是以驻地网为单位进行。这样就不需要使用图5所示的帧结构。
2.2驻地网网关的软硬件实现驻地网网关的硬件设计并无特殊要求。根据上述驻地网网关的基本功能,硬件系统需要包括RS485接口、CPU和RJ45接口,如图6所示。其中,RS485接口用于连接驻地网网关与驻地网,接口数量视驻地网数量而定;RJ45连接驻地网网关与接入网,一般为1个。CPU处理驻地网数据的采集、存储和回传。驻地网网关的实现重在软件设计。这里考虑更为一般的情况,即每一个驻地网都有独立的采样间隔和回传间隔。由于串口对象与文件都是独占式的,软件设计的重点在于如何处理好资源的调配。下面以微软的VS2010平台为例进行详细介绍。(1)整体思路在整体设计上,采用定时器进行处理。CPU为每个子网设定一个采样定时器,周期性采样数据,保存到本地缓存txt文件中。此外,CPU为每个子网另设一个回传定时器,周期性向服务端发送缓存的txt文件,发送完毕后该文件清空。(2)串口收发处理CPU通过CMSComm类对象访问串口。由于只有一个串口对象,需管理多个异步串口,故采用抢占式设计,即“先到先得,后到跳过”。当某一个子网采样定时器触发时,先判断当前串口对象是否被使用。如果否,即串口空闲,则将串口占用,执行该定时器内的行为,当串口信息接收完毕时解除串口占用;如果是,即串口当前被占用,则本次定时器跳过。采样定时器触发时,如果串口并未被抢占,则将串口配置成驻地网对应的参数,然后打开串口,根据当前设备号,配置设备地址,并获取相应指令,将其转换为十六进制格式向串口发送,从而实现对当前设备的数据采集。如有多条数据需要采集,则短暂间隔后更新设备地址重复发送采集命令。串口接收到驻地网上传的采集数据就会触发接收函数。接收函数被触发时,首先将数据转换为字符串类型保存在数据缓存中,并判断此时缓存中的数据是否可以提取出完整指令。若否则继续接收数据;若是则提取出完整指令,存储在对应的最新数据变量中,以供服务端查询,并且根据需要写入缓存txt文件中或发送到服务端。(3)文件操作驻地网网关管理着多个缓存txt文件,每个驻地网网关对应一个文件。网关采集到数据之后需要存储在文件中;同时,网关需要将文件传输到服务器。显然,由于采样定时器和回传定时器是异步的,读写文件也是异步的。因此,也需要对文件操作进行异步管理。将网关回传采集到的数据至服务器的过程称为缓存同步。缓存同步采用调用子线程的方式执行。所有子网文件对应同一个子线程。当某一子网的缓存同步定时器触发时,将先判断当前子线程是否被调用,若未被调用,则调用该子线程。在子线程内,文件发送将分3部分进行:1.发送文件名,以便服务器创建该文件。2.发送文件内数据。3.发送文件发送完成信号,通知服务器文件发送完成。同时,为了避免同一文件被多次打开,规定缓存同步的优先级高于缓存文件写入,即在缓存文件进行同步的时候不允许写入数据到该文件。(4)Socket操作通过CSocketClient类对象访问Socket端口(RJ45)。当收到来自服务端的消息时,调用指令解析函数分析其数据包头,根据协议判断其含义,响应对应行动。Socket消息响应包括:a.停止查询:停止向服务端发送采样数据。b.开始查询:向服务端发送采样数据。首先将最新数据变量中的数据发送至服务端以供显示,然后每次都将当前的采样数据发送。c.配置采样/回传时间:设置各子网采样/同步缓存的周期。当回传定时器触发时,判断同步缓存子线程是否已被调用,如果否则跳过,如果是则配置好当前数据包头信息,并调用缓存同步子线程。该线程将根据协议向服务端发送相应缓存文件,并重建该文件。
3实例与分析
为进一步说明所提出的三层异构网络体系结构及多址与数据聚合方法,针对城市异构配电通信网络,图7给出了一种基于驻地网网关的配电网络。其中,骨干网部分只给出了总服务器,对应110/35kV高压变电站,用于收集、监控本高压变电站下属所有中、低压变电站和用户的信息。EPON接入网的以太光纤环网节点直接采用4个OLT交换机用光纤呈环状连接,每个OLT交换机兼具OLT单元与子站汇聚交换机的功能,每个OLT下面挂接若干个ONU。ONU与OLT交换机之间、以及OLT交换机之间都是光接口。ONU与驻地网网关之间以及OLT交换机与总服务器之间均采用高速的RJ45以太网接口。图7基于驻地网关的城市配网通信系统在图7中,驻地网网关与3个驻地网相连,连接接口均为RS485,因为RS485是工业领域最为常用的接口。3个驻地网中有两个ZigBee网络和一个485总线网络,每个ZigBee子网由一个ZigBee协调器和若干个节点。协调器则负责组建ZigBee子网,汇聚各个节点的信息并转换成适合接口接入至驻地网网关。同时,协调器也负责将从驻地网网关接收到的数据信息广播至各个节点。ZigBee协调器与驻地网网关之间的接口为RS485。此实例采用的3种驻地网具有不同网络结构、不同传输媒质、不同业务类型,充分体现了驻地网络的异构特点。3种驻地网涉及典型的智能插座、智能电表和无源温度传感监测,都是电力领域典型应用。通过驻地网网关的解析与统一封装,服务器端不仅能够清晰地知道是哪个驻地网中的哪个用户发来的信息,而且大大减少了短数据包的数量。如果这3个驻地网中每个驻地网有L个节点,t秒内共收集到3L个短数据包。驻地网网关将这3L个短数据包封装成1个,使得服务器端的解析处理数据包的频率降低了3L倍,大大提升了服务器端的处理效率。
①焊接坡口应在胎架上进行,工件应放平,防止因焊接内应力产生扭曲变形。②先焊接隔板与腹板的立焊缝(隔板与内侧腹板之间的熔透焊缝先少量焊接,待顶板安装焊接及横梁接头安装焊接完成后再全部焊完),再焊接隔板与底板的平焊缝,最后焊接箱内腹板与底板之间的角焊缝。焊接顺序应从中间往两边,由下往上依次对称焊接。③顶板安装完成后,采用富氩气体保护焊对插入部位坡口焊缝进行焊接。焊接时,两侧应对称同时焊接。④焊接杆件棱角焊缝和T形坡口角焊缝时,采用富氩混合气体保护焊打底,埋弧自动焊填充盖面。⑤24小时后对插入部位的焊缝全长范围进行超声波探伤检查。
2杆件的划线
①工件找正:将工件平卧放置在支撑平台上,插入顶板的腹板面朝下,另侧腹板面朝上。腹板面应平行于划线平台。以划线平台为基准,用水准仪对工件进行抄平,误差应小于1mm。②划出杆件两端系统中心线。③划出腹板上各向系统中心线。④对照施工图及划线图,划出钻孔胎模十字对位线,并检查。⑤划出另一侧腹板各向系统中心线。
3杆件的钻孔
①采用覆盖式钻孔胎模钻出节点板上及腹板一端的部分孔群。剩余孔群可采用补孔样板钻出。②采用覆盖式钻孔胎模,通过腹板上一端已钻孔群定位,钻出另一端部分孔群。其余孔群采用补孔样板钻出。③对无法在杆件外面用台式钻床钻制的腹板孔群,可采用磁力钻在杆件箱内通过补孔样板补钻出剩余孔群。④采用覆盖式钻孔胎模钻出杆件顶板箱体部位两端孔群。伸出桥面板部位两端孔群,待横梁接头、桥面板纵肋等附连件安装焊接完成后,再钻出。⑤采用局部钻孔胎模钻出底板两端孔群及一处横梁底板连接孔群。⑥采用小覆盖胎模,通过已钻的一处横梁底板连接孔群定位,依次钻出其余底板连接孔群。
4附属件的组焊
①采用组装胎膜,通过底板已钻孔群定位出腹板位置并焊接;②安装桥面板纵肋,并从中间往两边焊接。如焊接后对极边孔距不能保证,可将纵肋两端1000mm处断开,先安装和焊接中间部位,焊后安装和焊接纵梁两端1000mm段。③采用组装胎膜,通过节点板上已钻孔群,定位腹板接头板,并进行焊接。
1引言
数字电视图文信息服务系统建立的目的主要是为了更好的给用户提供所需的关于医疗卫生、教育教学、农产品价格和供求等相关信息,对信息资源做到集中管理、共享访问,最终形成一个有一定规模的图文信息服务系统。论文参考,图文信息。为了使各部分模块之间能够顺畅的衔接,本文介绍了数字电视图文信息服务系统接口的设计方案。
2图文信息服务系统外部接口的设计
2.1与门户的接口
图文资源中心作为一个独立的平台,与门户登陆系统之间通过接口传送机顶盒登陆数据信息,如图1所示。
图1 门户系统接口结构图
门户系统接口:功能是获得当前机顶盒的MAC地址。论文参考,图文信息。
接口协议:通信采集用HTTP协议,通信的数据格式采用XML1.0标准。
2.2与合作方网站的接口
对于开放站点数据库的合作方,由于不同的合作方其数据库结构也不尽相同,因此在图文采集子系统的数据迁移模块中,分析合作方数据库结构的协议需要与开放站点做接口。
传输数据:合作方向资源中心提供的信息数据。
接口协议:合作方数据源的数据格式协议。论文参考,图文信息。与开发站点数据库的通信采集JDBC2.0标准;与XML格式数据源通信,数据格式采用XML1.0标准。
2.3短信平台接口
此接口留待扩展,当用户选择接收手机短信时,有新的留言信息会有手机短信提示,可和现有的短信平台对接,实现图文的短信增值。
传输数据:留言发件人、留言标题、留言正文。
接口协议:与留言系统数据库的通信采集JDBC2.0标准;与短信平台接口数据格式符合短信平台的协议。
2.4与中小学教育信息系统(PSTIM)接口
2.4.1数据同步
数据同步部分主要功能是基于TCP协议建立socket连接的方式,将中小学教育信息系统中的年级、年级所学科目、年级所学科目版本、知识点、教学周等信息传递过来,并将此信息转化为图文栏目层次的数据关系,通过此关系可以对学习资料图文信息进行组织。在图文中PSTIM传递而来的数据将组成为图文中一个子系统进行管理。
1.接口结构图
图2PSTIM门户系统接口结构图
2.协议和规范:
TCP协议:从PSTIM中获取数据采用的协议。
JDBC:数据转入图文数据库中遵守的规范。
HTTP:接口程序与图文数据库通信采用的协议。
3.接口实现:
接口实现分为五个模块(类):中间表、socket通信模块、传输数据分析模块、数据结构转化模块、图文库操作模块。论文参考,图文信息。
1) 中间表:
图3 接口图文与中小学教育数据结构图
2) Socket通信模块:
采用成熟的基于TCP协议的socket通信的代码搭建。根据双方沟通和《教学管理系统与EPG等系统的接口协议.》文档,接口同步程序作为socket通信的客户端。论文参考,图文信息。根据配置的IP和PORT向服务端发送数据请求。论文参考,图文信息。服务端数据发生变化由系统外通知,数据通信请求由手动方式触发。
3) 传输数据分析模块:
传输数据分析类根据文档《教学管理系统与EPG等系统的接口协议》制定数据传输协议编写。
4) 数据结构转化模块:
数据结构转化完毕后在栏目表中层次结构为:中小学教育信息系统->年级->年级所学科目->年级所学科目版本->知识点->图文学习资料。转化完毕在图文中中小教学系统传递而来的数据作为一个图文中一个子系统进行管理。
数据同步完毕后在接口图文与中小学教育表中层次结构为年级->年级所学科目->年级所学科目版本->知识点。
5) 图文库操作模块:
该模块主要由操作栏目和操作接口图文与中小学教育两个表。功能分为:
a) 对这两个表进行插入、修改、更新操作。
b) 获得同步数据在图文中所属的rootid。
c) 删除栏目(删除其下所有子栏目和信息)。
3总结
数字电视图文信息服务系统为数字电视增值业务的发展提供了更为广阔的平台,设计适合信息服务平台各类信息模块联接的接口,是图文信息服务系统中的重中之重。本文所设计的方案,满足了各模块之间的信息交互,为数字电视增值业务的发展奠定了坚实的技术基础。
参考文献: