时间:2023-03-22 17:38:05
序论:写作是一种深度的自我表达。它要求我们深入探索自己的思想和情感,挖掘那些隐藏在内心深处的真相,好投稿为您带来了七篇接口设计论文范文,愿它们成为您写作过程中的灵感催化剂,助力您的创作。
1.1接口描述当传感器网络的Zigbee网关节点不断地将网络节点中监测到的温度、烟雾等信息发送给上位机时,上位机的通信模块必须及时响应接收数据。数据监测上位机通信接口采用VB6.0中MSComm控件,利用串行端口传输和接收数据,为应用程序提供串行通信功能,具体包括2种处理通讯方式,一种是事件驱动通讯,利用OnComm捕获并处理通讯时间;另一种是通过检查CommEvent的值,来查询事件和错误[5]。设计中采用第1种方式,在用户界面设置好相应的控制参数,如波特率为38400bps、无校验位、8数据位、1位停止位等。当传感器网络节点监测的的温度、烟雾等信息发送给上位机时,将触发监测程序中MSComm控件的OnComm事件,进而改变ComEvent的值,程序根据ComEvent的值执行相应的操作,如解析数据、发送数据、错误分析等,然后更新内存节点树中当前节点的实时数据、采集信息(如温度、烟雾等)存入数据库。
1.2实现方法MSComm控件可以设置以二进制或者以文本方式接收,若设置为二进制接受,控件会自动将其转变成十进制。在该系统中,数据帧的数据是十六进制的,设置以二进制方式进行接收,从接收缓存中获取到的是十进制的数据。
2数据结构与数据解析
2.1内存中节点多叉树的建立图2节点数据结构图通信监测模块接收数据后,为了便于以图形方式实时显示网络拓扑和节点监测信息,以及提高查询数据的运行速度,需要在内存中构建一个动态多叉树,用于存储节点最新的数据信息。节点数据结构图如图2所示。在内存中建立一个关于节点的动态多叉树,节点的唯一标识是它的自身ID,根据数据帧中包含的父子关系可构建出一棵多叉树。首先定义一个名为treeNode的类,它的每一个实例都代表着一个节点,里面包含节点的属性(例如ID、温度、烟雾等)和方法(例如获取类中节点数据的getData方法)。为了将节点间的父子关系表现出来,可在类treeNode中定义一个类型为treeNode的动态数组NodeChild(),用于存放子节点。如某节点ID为0000,子节点ID为0001,将子节点0001存放在节点0000的NodeChild()数组中,即可完成节点间的连接。当需要找某个节点时,从根节点开始查找,若根节点的孩子没有要找的节点,则查找根节点的孩子的孩子,直到遍历完所有节点。当某数据帧发送到上位机时,解析出来的原始数据分别放在相应的变量,假设原始的温度数据是3F4A,数据结构中温度变量名为Temperature,类型为String,则直接将3F4A转换为String类型存在Temperature中。按上述方法构建的动态多叉树能够适应网络拓扑动态变化的应用场景,相比于定长的数组,其更为节省内存,不足之处是查询算法较复杂。
2.2数据解析通信监测模块接收到Zigbee网关节点发送来的一组数据(数据帧)后,需要对收到的数据进行协议解析,然后根据解析数据建立当前动态多叉树。由于通信中难以避免数据帧出错、截断、丢失等情况,故数据解析部分根据数据帧的格式制定了一套协议,丢弃异常数据帧。数据帧的部分格式如下:FFXXXXXXXXFF01XXXX02XXXX2FF之间,开头2个字节为节点ID,紧跟的2个字节节点的父ID01代表温度类型,后面2个字节是温度数值02代表烟雾类型,后面2个字节是烟雾值,依次类推…。2个FF后的字节都是数据,其格式如下:数据类型(01,温度类型)+2个字节的数据(XXXX)。具体操作流程如图3所示。首先检验从串口进来的数据帧开头一个字节是否FF,若是,则开始解析。直到下一个FF,则节点ID部分解析结束,后面都是数据。继续读取下一个字节,若为01,则将后面紧跟的两个字节存进相应的温度变量,读取下一个字符;若该字节所表示的数据类型未定义则跳过该字节及后面紧跟的两个字节,继续读取下一个字符。该过程一直执行直到解析完整个数据帧。由于数据帧是不定长的,而且没有结束字符,所以每收到一个数据帧程序便立即从缓存中读取并解析,以避免多个帧合并为一个数据帧导致解析错误。当出现多个数据帧并合情况时,则丢弃后继的帧。在帧解析完毕后,可以对解析出来的监测数据信息进行处理,将数据信息一份存进内存中节点多叉树,一份存进数据库,实现实时更新数据和记录当前信息。以下是有关串口通信事件响应及数据解析的部分代码:
3数据库的构建与连接
3.1数据库关系数据库关系图如图4所示。由于每个节点都有大量历史数据,所以每一个节点都创建一个表;USERS表用于保存监测系统的用户信息;NodeTran用于保存数据帧转发路径;Nodelist用于保存节点列表;Limit用于保存监测系统的阈值管理设置值;Node_XXXX为节点XXXX的历史数据表。除了用户表,所有数据都采用varchar类型。
3.2存储过程的创建为了提高通信监测模块与数据库之间通信的效率,将一些常用且较为复杂的SQL语句存放在数据库中,使用时只需要调用存储过程,输入必要的参数即可完成相应的SQL语句操作,这样可以大大减少程序与数据库之间的通信量。
3.3使用ADO将VB6.0与SQL2005连接ADO是为Microsoft最新和最强大的数据访问范例OLEDB而设计的,拥有一个易于使用的应用程序层接口。通过使用ADO2.0对象模型中的Recordset和Connection对象实现两者连接和数据的存取。Connection对象包含关于某个数据提供程序的信息,如数据库用户、密码、数据库名等;Recordset对象包含某个查询返回的记录,可以创建一个Connection对象,在同一个连接上打开多个Recordset对象[8]。操作流程图如图5所示。
4结语
地面测试台的测试对象为某采编存储器。测试台的主要功能包括向采编存储器提供模拟信号供其采集,向采编存储器下发控制命令,接收采编存储器下发的高速LVDS实时数据并进行后续处理。测试台的整体结构如图1所示。CPCI总线上挂有3个CPCI板卡,分别为CPU卡、接口卡、信源卡。其中,CPU卡为处理系统,接口卡和信源卡为功能卡。本文将以接口卡为主要依据来介绍如何以FPGA逻辑控制来实现CPCI局部总线接口和高速LVDS接口。
2LVDS高速数据接口实现
2.1LVDS接口硬件电路设计由于趋肤效应和介质损耗,高速信号在传输过程中会衰减。因此,当传输距离较长时,往往要使用电缆驱动器和均衡器来保证高速数据传输的准确性。电缆驱动器将信号以最大功率耦合到电缆上[4],延长信号的传输距离,电缆均衡器可以对传输的信号进行高频补偿,以至达到标准逻辑电位。本设计中,LVDS串行器/解串器分别选用TI公司的SN65LV1203和SN65LV1224,信号驱动器/电缆均衡器分别选用NS公司的CLC001和CLC014。LVDS接口电路结构如图2所示,采编存储器的FPGA控制LVDS串行器将10bit并行数据转换成差分串行数据,再通过电缆驱动器将信号耦合到电缆上。地面测试台的电缆均衡器对接收到的信号进行高频补偿之后传送给解串器,解串器根据参考时钟将差分串行数据转换成10bit的并行数据,由FP-GA进行后续的处理。
2.2FPGA逻辑控制LVDS数据接收由于CPCI接口传输的时钟和LVDS数据接收电路的时钟不匹配,为了保证数据传输的可靠性,在编写VHDL语言程序时FPGA内部调用一个异步时钟控制的缓存FIFO[8]IP核来对接收到的LVDS高速数据进行缓存,如图2所示。上位机通过配置PCI9054的传输计数寄存器,将一次DMA传输的数据量设置为2kbyte。写FIFO的时钟为18.432MHz,读FIFO的时钟为36.864MHz,当FIFO内数据量达到2kbyte时,FPGA立即通知上位机启动一次DMA传输。经计算,从FIFO内读走2kbyte数据大约耗时54μs,在这个时间段内写入FIFO的数据量大约为1kbyte,所以,当DMA传输结束时,FIFO内数据不足2kbyte,上位机直到FIFO内数据量再次达到2kbyte时才会启动下一次的DMA传输。为了避免PCI9054不能立即执行DMA传输而导致FIFO数据溢出,FIFO容量要大于2kbyte。本设计中选择容量为4kbyte的FIFO,经验证,不会出现FIFO溢出现象。
3CPCI局部总线接口实现
实现CPCI接口协议一般有两种方法。其中一种方法为:利用FPGA实现接口逻辑。这种方法虽然可以充分利用FPGA的资源,减小成本,但PCI逻辑十分复杂,可靠性不能得到保证,且开发周期长。另外一种方法为:采用专用的PCI接口控制芯片。专用接口芯片功能强大,性能稳定,设计方便,很大程度上减少了设计者的工作量,缩短了开发周期。所以,本设计中选择使用PCI9054接口控制芯片与FPGA配合工作的方式来实现CPCI局部总线接口通信。
3.1EEPROM的配置在Windows环境下,为有效管理多块CPCI板卡资源,实现多卡协同工作。通过设置EEPROM配置选项中的ClassCode/REV值,解决使用同一驱动情况下,多块CPCI板卡识别问题。地面测试台含信源卡和接口卡两块CPCI功能板卡,图3为接口卡的EEPROM配置文件截图,各板卡需要设置不同的ClassCode/Rev(图中红色选框部分),上位机程序通过识别不同的ClassCode/Rev达到控制不同板卡的目的。ClassCode/Rev为一个32bit数据,规定高8bit作为不同板卡区分标志,低24bit保留。其中D31~D28功能标识,区分是否为信源卡、接口卡等功能卡。D27~D24数量标识,区分当前功能卡的数量,具体约束如下表1所示。
3.2CPCI局部总线实现方法
3.2.1PCI9054工作模式选择PCI9054总线控制芯片有3种工作模式,即M模式、C模式、J模式。其中,C模式最为简单,类似于单片机的工作方式,它的地址线和数据线分开使用,可以很方便地控制本地时序。所以本设计中PCI9054工作于C模式,由FPGA逻辑控制本地时序来完成CPCI局部总线与功能板卡之间的通信。
3.2.2CPCI总线访问本地总线PCI9054的访问方式选择DMA方式。PCI9054作为主控设备,通过内部的DMA控制器来实现局部总线上数据与CPCI总线上数据的传输。在DMA访问方式下,一个总线周期的时序如图4所示。当CPCI总线访问本地总线时,PCI9054内部的DMA控制器发出LHOLD信号来申请控制局部总线,当其收到响应信号LHOLDA后,才获得局部总线的控制权。当ADS#信号有效时,局部总线上的地址信号LA为有效地址;当BLAST#信号有效时,代表一次单周期访问开启;READY#为本地总线的状态反馈信号,只有当其有效时,表示本地总线已经准备好,才可以进行访问;当LW/R#为高时,代表单周期访问为写操作,当LW/R#为低时,代表单周期访问为读操作。在本设计中,FPGA通过识别地址信号LA来判断具体的操作类型。当上位机向接口卡下发控制命令时,为CPCI总线到本地总线的数据传输,具体的工作流程为:当上位机下发命令时,启动一次单周期写访问,同时下发特定的写地址LA1,FPGA反馈READY#信号,并判断到LW/R#信号为高,即得知上位机要下发数据,便从该特定地址LA1将命令代码读出,进行解码之后将命令下发给采编存储器。当接口卡向上位机传输LVDS高速数据时,为本地总线到CPCI总线的数据传输,具体的工作流程为:当图1中所示的LVDS数据缓存FIFO内数据量达到2kbyte,启动一次DMA传输,即一次DMA传输将2kbyte的数据上传给上位机进行实时显示与处理。上位机通过下发特定地址信号LA2来向FPGA查询FIFO内数据量是否达到2kbyte,一旦其得到缓存FIFO内数据量满足要求的信息,立即启动一次单周期读访问,并向FPGA下发数据传输地址LA3,FPGA反馈READY#信号,并判断到LW/R#信号为低,便将LVDS数据通过地址LA3上传给上位机。
4设计验证
将信源卡和接口卡分别插到背板上的2号和3号物理槽中,1号物理槽为系统槽,打开计算机系统,安装驱动之后,两块功能板卡均能够被识别。分别对两块板卡进行操作,均能实现各自的功能且互不影响,说明EEPROM的配置正确可行。以接口卡为例,用Chipscope来监测CPCI总线对本地进行读、写操作的实际过程,图5和图6分别为单周期读访问时序截图和单周期写访问截图。如图5所示,当FIFO内数据量达到2kbyte时,信号f_fifo_hf变高,此时启动一次单周期读访问,LW/R#为低,通过地址0008h将数据87h上传给上位机。实际时序与第3节介绍的本地总线向CPCI总线传输数据的理论时序一致,对接收到的数据文件进行分析,数据结构完整,数据包计数连续,没有丢数现象,验证了本设计中本地总线向CPCI总线传输数据的正确性。如图6所示,上位机向FPGA下发控制信号,此时启动一次单周期写访问,LW/R#为高,FPGA通过地址0004h获得命令代码67h。实际通信时序与第3节介绍的CPCI总线向本地总线传输数据的理论时序一致,且命令下发正确,验证了本设计中CPCI总线向本地总线传输数据的正确性。
5总结
现场总线是安装在生产过程区域的现场设备/仪表与控制室内的自动控制装置/系统之间的一种串行数字式多点双向通信的数据总线,多用于工空等领域,应用现场总线技术不仅可以降低系统的布线成本,还具有设计简单、调试方便等优点,同时,由于现场总线本身还提供了灵活而又功能强大的协议,这就使得用户对系统配置,设备选型具有强大的自,可以任意组合多种功能模块扩充系统的功能。在众多的现场工业总线中,CAN总线是一种具有国际标准而且性能价格比又较高的现场总线,它在当今自动控制领域中的应用极为广泛,并发挥着重要的作用。一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。CAN可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。
CAN通讯协议描述了在设备之间信息如何传递。它对层的定义与开放系统互连模型(OSI)一致。每一层与另一设备上相同的那一层通讯。实际的通讯是发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连。CAN的结构定义了模型的最下面的两层:数据链路层和物理层。应用层通过不同的新型协议层(专门用于特殊的工业领域加上由个别CAN用户定义的任何合适的方案)和物理层连接。物理层和数据链路层对于设计者来说是透明的,并包含在所有执行CAN协议的部件中。
实际中,许多设备是RS-232接口,为了实现CAN总线数据和RS-232接口设备数据的传输,设计完成了CAN总线与RS-232转换接口电路设计。
1.CAN总线协议分析
1.1CAN总线主要特点
CAN总线是一种多主式的串行通信总线,具有极高的实时性和可靠行,最高通信速率可以达到1Mbit/s,是一种十分优秀的现场工业总线。CAN总线具有如下特点:
结构简单,只有2根线与外部相连,且内部集成错误探测和管理模块。
通信方式灵活。可以多主方式工作,网络上的其他节点发送信息,而不分主从。
可以点对点、点对多点或者全局广播方式发送和接收数据。
网络上的节点信息可分成不同的优先级,以满足不同的实时要求。
CAN总线通信格式采用短帧格式,每帧字节最多为8个,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8字节也不会占用总线时间过长,从而保证了通信的实时性。
采用非破坏性总线仲裁技术。当两个节点同时向总线上发送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传送数据。这大大的节省了总线仲裁冲突的时间,杂网络负载很重的情况下也不会出现网络瘫痪。
直接通信距离最大可达10Km(速率5Kbit/s以下),最高通信速率可达1Mbit/s(此时距离最长为40Km),节点数可达110个,通信介质可以是双绞线、同轴电缆或光导纤维。
CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检测、优先级判别等多项工作。
CAN总线采用CRC进行数据检测并可提供相应的错误处理功能,保证了数据通信的可靠性。
1.2CAN总线协议
CAN总线协议主要描述设备之间的信息传递方式,从结构上可分成3个层次,分别对应OSI网络模型的最低两层数据链路层和物理层。CAN总线协议层次结构由高到低如表1-1所示。
表1-1CAN总线协议层次结构
协议层
对应OSI模型
说明
LLC
数据链路层
逻辑链路控制子层,用于为链路中的数据传输提供上层控制手段
MAC
媒体访问控制子层,用于控制帧结构、仲裁、错误界定等数据传输的具体实现
物理层
物理层
物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输
LLC层和MAC层也可以看作是CAN总线数据链路层的两个子层。其中LLC层接收MAC层传递的报文,主要完成报文滤波、过载通知以及恢复管理等工作。而MAC层则为数据报文的传输进行具体的控制,包括帧结构控制、总线仲裁、错误检测、出错界定、报文收发控制等工作。
物理层定义了信号是如何实际传输的,因此涉及到位时间、位编码、同步的解释,CAN总线协议并未对物理层部分进行具体的规定。
1.3CAN总线报文传输结构
报文传输由以下4个不同的帧类型所表示
1.数据帧:数据帧携带数据从发送器至接收器。
数据帧由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾。数据场的长度可以为0。数据帧(或远程帧)通过帧间空间与前述的各帧分开。
2.远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。
远程帧由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧末尾。通过发送远程帧,作为某数据接收器的站通过其资源节点对不同的数据传送进行初始化设置。
3.错误帧:任何单元检测到总线错误就发出错误帧。
错误帧由两个不同的场组成。第一个场用作为不同站提供的错误标志(ERRORFLAG)的叠加。第二个场是错误界定符。
为了能正确地终止错误帧,"错误被动"的节点要求总线至少有长度为3个位时间的总线空闲(如果"错误被动"的接收器有本地错误的话)。因此,总线的载荷不应为100%。有两种形式的错误标志,主动错误标志(Activeerrorflag)和被动错误标志(Passiveerrorflag)。
4.过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
过载帧包括两个位场:过载标志和过载界定符。
有两种过载条件都会导致过载标志的传送:
(1)接收器的内部条件(此接收器对于下一数据帧或远程帧需要有一延时)。
(2)间歇场期间检测到一"显性"位。
由过载条件1而引发的过载帧只允许起始于所期望的间歇场的第一个位时间开始。而由过载条件2引发的过载帧应起始于所检测到"显性"位之后的位。
1.4CAN总线错误处理
1.4.1错误检测
有以下5种不同的错误类型(这5种错误不会相互排斥)
1.位错误(BitError)
单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相合,则在此位时间里检测到一个位错误。但是在仲裁场(ARBITRATIONFIELD)的填充位流期间或应答间隙(ACKSLOT)发送一"隐性"位的情况是例外的。此时,当监视到一"显性"位时,不会发出位错误。当发送器发送一个被动错误标志但检测到"显性"位时,也不视为位错误。
2.填充错误(StruffError)
如果在使用位填充法进行编码的信息中,出现了第6个连续相同的位电平时,将检测到一个填充错误。
3.CRC错误(CRCError)
CRC序列包括发送器的CRC计算结果。接收器计算CRC的方法与发送器相同。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误。
4.形式错误(FormError)
当一个固定形式的位场含有1个或多个非法位,则检测到一个形式错误。(备注:接收器的帧末尾最后一位期间的显性位不被当作帧错误)
5.应答错误(AcknowledgmentError)
只要在应答间隙(ACKSLOT)期间所监视的位不为"显性",则发送器会检测到一个应答错误。
1.4.2错误标定
检测到错误条件的站通过发送错误标志指示错误。对于"错误主动"的节点,错误信息为"主动错误标志",对于"错误被动"的节点,错误信息为"被动错误标志"。站检测到无论是位错误、填充错误、形式错误,还是应答错误,这个站会在下一位时发出错误标志信息。只要检测到的错误的条件是CRC错误,错误标志的发送开始于ACK界定符之后的位(其他的错误条件除外)。
2.CAN控制器SJA1000分析
2.1CAN节点结构与SJA1000操作模式
SJA1000独立的CAN控制器有2个不同的操作模式:
BasicCAN模式(和PCA82C200兼容);
PeliCAN模式
BasicCAN模式是上电后默认的操作模式。因此用PCA82C200开发的已有硬件和软件可以直接在SJA1000上使用,而不用作任何修改。
PeliCAN模式是新的操作模式,它能够处理所有CAN2.0B规范的帧类型。而且它还提供一些增强功能,例如,SJA1000支持一些错误分析功能,支持系统诊断、系统维护和系统优化,而且这个模式里也加入了对一般CPU的支持和系统自身测试的功能。使SJA1000能应用于更宽的领域。
本设计采用PeliCAN模式,因此只给出PeliCAN模式增强功能。如表2-1所示。
表2-1PeliCAN模式的增强功能
CAN2.0B(active)
CAN2.0Bactive支持带有29位标识符的网络扩展应用
发送缓冲器
有11位或29位标识符的报文的单报文发送缓冲器
增强的验收滤波器
两个验收滤波器模式支持11位和29位标识符的滤波
可读的错误计数器
支持错误分析在原型阶段和在正常操作期间可用于:诊断、系统维护、系统优化
可编程的出错警告界限
错误代码捕捉寄存器
出错中断
仲裁丢失捕捉中断
支持系统优化包括报文延迟时间的分析
单次发送
使软件命令最小化和允许快速重载发送缓冲器
仅听模式
SJA1000能够作为一个认可的CAN监控器操作,可以分析CAN总线通信或进行自动位速率检测
自测试模式
支持全部CAN节点的功能自测试或在一个系统内的自接收
通常,每个CAN模块能够被分成不同的功能块,如图2-1所示。
CAN控制器执行在CAN规范里规定的完整CAN协议。它通常用于报文缓冲和验收滤波。
通用CAN收发器实现从CAN控制器到CAN总线物理层的电气连接。
而所有这些CAN功能都由一个模块控制器控制,它负责执行应用层的功能。
元器件清单
表3-3CAN总线与RS-2232接口电路设计元气件清单
序号
元件名称
数量(个)
单价(元)
总价(元)
1
AT89C51
1
7.50
7.50
2
SJA1000
1
25.00
25.00
3
HM6116
1
1.00
1.00
4
MAX232
1
5.00
5.00
5
74HC373
1
1.00
1.00
6
PCA82C250
1
6.50
6.50
7
X25045
1
1.00
1.00
8
TLP113
2
3.00
6.00
合计
53.00
结论
本设计完成了CAN总线与RS-232转换接口设计。由于CAN总线与RS-232接口数据通信速率以及通信帧格式都不同,本设计最大优点是解决了这两点不同,实现了数据在CAN总线与RS-232接口之间的传输。且设计中由于使用了CAN总线进行数据传输这就使得通信方式多主性。网络上任意节点可以任意时刻主动地向网络上其他节点发送信息而不分主从。可以点对点,点对多点或全局广播方式发送和接收数据。
由于CAN总线标准没有定义应用层,数据链路层提供与信息内容相应的寻址能力,消息的内容完全由应用解释。且CAN总线的每个数据帧最多只能承载8个字节的数据,因而只适应提供短的变量服务。许多功能还需要扩展。
综上所述,通过此次设计,我们感受到CAN总线带来的各种便利。而且,由于CAN总线具有结构简单、实时性极高、可靠性强且本身具有强大的纠错能力。使得它在当今自动控制领域中的应用极为广泛。由于CAN协议参考OSI开放系统互联模型,可由用户定义应用层协议,通过相关的CAN转接设备,将CAN与计算机相连,利用CAN232B转换器组建一个CAN控制网络,能够很方便的实现RS-232多点组网、远程通讯,并且,不需要更改原有RS-232通讯软件,用户可直接嵌入原有的应用领域,使系统设计达到更先进的水平。
摘要............................................................................................................Ι
ABSTRACT..................................................................................................................................ΙΙ
引言1
1.CAN总线协议分析2
1.1CAN总线主要特点2
1.2CAN总线协议2
1.3CAN总线报文传输结构3
1.4CAN总线错误处理3
1.4.1错误检测3
1.4.2错误标定4
2.CAN控制器SJA1000分析5
2.1CAN节点结构与SJA1000操作模式5
2.2SJA1000内部结构及其功能分析6
3.CAN总线与RS-232转换接口电路设计11
3.1CAN总线与RS-232转换接口电路总体设计11
3.2主控制模块电路设计12
3.2.1AT89C51与6116电路设计13
3.2.2看门狗电路设计14
3.3AT89C51与RS-232转换接口电路设计16
3.3.1RS-232-C标准分析16
3.3.2RS-232与AT89C51接口电路设计18
3.4SJA1000与AT89C51接口电路设计19
3.4.1SJA1000与AT89C51接口电路设计19
3.4.2物理层接口电路设计21
3.5元器件清单22
结论22
关键词:PCI总线TM1300以太网通信接口pSOS+内核pNA+
1概述
TM1300是Philips公司推出的新一代高性能多媒体数字信号处理器芯片。基于TM1300的DSP应用系统适合于实时声音、图像处理,可广泛应用于会议电视、可视电话、数字电视等应用场合。它不仅具有强大的处理能力,同时还具有非常友好的音频和视频以及SSI和PCI等I/O接口,因此可以根据应用的需要灵活地构造各种视频通信系统。鉴于目前计算机网络的普及和网上视频业务的发展,很有必要为TM1300视频编码系统开发一个以太网接口以拓宽其应用范围。开发以太网接口的一种合理思路是利用TM1300集成的PCI接口来驱动专用的以太网接口芯片。由于目前多数以太网接口芯片(如Real-tek8029,Realtek8139等)都采用PCI接口,因此,可以用PCI总线将数据从TM1300传输到这些专用的以太网接口芯片后,再由它们发送数据,而且TM1300可以在嵌入式操作系统pSOS中运行,同时由于系统pSOS带有TCP/IP协议栈因此可以方便地完成编码码流的TCP/IP封装。
根据以上思路笔者在进行了前期测试的基础上进行了电路板的设计并顺利完成了调试。目前这个以太网接口已经基本开发成功。本文将对这个设计的技术要点从硬件和软件两个方面进行详细介绍。
2TM1300及PCI总线接口
该系统的硬件结构框图如图1所示。本系统硬件设计的重点是PCI总线接口。PCI总线根据数据位的宽度有32位和64位之分,64位的数据线与32位是兼容的。PC机中常见的是32位PCI总线,它的有用引脚总数是110个,可以分成3组。第一组是基本功能信号线,包括32位共享数据地址线AD〔00..31〕、接口控制线、仲裁线、时钟线、系统复位线、中断线;第二组是附加功能信号线,包括错误报告线、cache功能支持线、JTAG边界扫描线;第三组是电源线,包括设备耗电量标识线、3.3V电源线(12根)、5V电源线(13根)、地线(22根)。
因为Realtek8029不具备PCI的附加功能信号线所支持的cache功能和JTAG边界扫描功能,同时虽然它具有奇偶校验错误报告功能引脚,但该脚可以悬空不用。所以,设计时只需考虑第一组功能信号线的连接即可。
PCI接口的设计有以下几个要点:
(1)PCI总线的仲裁
这里先说明两个概念。首先,PCI总线是多设备共享的,由于PC机里可以有多个PCI设备,所以需要使用仲裁器;其次,PCI设备有主设备和从设备之分,主设备可以发起PCI数据的传送从设备只能被动地响应主设备的操作以对读操作和写操作做出响应。PCI的仲裁引脚是REQ和GNT,分别为请求线和授权线,而且只有PCI主设备有这两个引脚。一般情况下,REQ通常和GNT成对地连到仲裁器,而设备与设备的REQ和GNT通常是互不相连的。
PCI总线的仲裁过程是这样的:PCI主设备把REQ电平拉低以表示向仲裁器请求占用总线。经仲裁获准后,仲裁器把这个设备的GNT电平拉低以表示请求获准,此后该设备便可以使用总线了。当它不再使用总线时,应使REQ信号变为高电平仲裁器就不再给它分配总线资源。在本系统中,TM1300是PCI主设备,而Realtek8029是PCI从设备。由于它们不存在共享总线的问题,所以不需要仲裁器,而只是简单地把REQ和GNT短接即可,这就相当于TM1300自己给自己授权。
(2)PCI_IDSEL信号线在设备的PCI配置读写中的作用
PCI有一种特殊的读写周期,称为配置读写。这是因为在系统引导时,如果没有给设备配置I/O或内存地址,软件就只能通过配置来读写访问设备。配置读写有两种,分别称为0型和1型具体采用哪一种取决于总线的硬件连接。配置读写操作不经过PCI桥时,使用0型,当需要经过PCI桥时,则要用1型,0型读写的地址直接就是总线上的地址,1型读写的地址则要经过PCI桥的译码才能成为最终的总线地址。本设计中,TM1300和Realtek8029是用PCI总线直连的,所以使用0型配置读写。
AD〔00..31〕是PCI总线的共享地址和数据线,每一次PCI传送都分为地址周期和数据周期。在地址周期,采用0型读写时,AD〔00..31〕的内容如下,AD〔00〕和AD〔01〕总为“00”,因为配置读写是以双字为单位的,AD〔02〕~AD〔07〕是要读写的PCI配置空间的寄存器号AD〔08〕~AD〔10〕是设备的功能号在一块PCI卡上有多个功能设备时,为了进一步区分不同的设备就要用到这几位,由于Realtek8029是单功能设备,故这几位全为0,AD〔11〕~AD〔31〕是设备选择位,其中必须有且仅有一位为“1”,如图2所示,这在物理上表现为总线的AD〔11〕~AD〔31〕中有一根为高电平如果输出高电平的这根线与某块PCI卡的PCIIDSEL引脚相连,这块卡就会被激活,这样,在紧接着的数据周期中,它就会将其PCI配置空间相应寄存器中的内容放到总线上以供读取。
(3)PCI_FRAME、PCI_DEVSEL、PCI_IRDY、PCI_TRDY引脚的处理
上述四个引脚均是低电平有效,因此需要接上拉电阻,以保证在设备未驱动该引脚时处于稳定的无效状态,上拉电阻的阻值在1kΩ~10kΩ范围内,阻值越小,则将该信号驱动为有效的时间越短,但太小又会导致电流过大,所以,要权衡考虑,本设计选用4.7kΩ。
上述三点对脱机情况下PCI设备的互连具有较普遍的参考意义,除此之外,本设计还有以下比较特殊的几点:
应将TM1300的PCI,INTA引脚配置为输入,以便接收Realtek8029的中断;
PCI时钟由TM1300提供;
Realtek8029的复位信号也就是TM1300的复位信号,该信号由外部电路提供;
TM1300的PCISTOP、PCISERR引脚悬空,表示Realtek8029不具备相应的附加功能。另外,TM1300的PCIINTB、PCIINTC、PCIINTD引脚可以用作用户中断。
3软件设计
该接口设计的软件结构框图如图3所示。其中TM1300运行于pSOS,它是一个简单的实时多任务嵌入式操作系统,带有pNA+网络组件,其pNA+相当于TCP/IP协议栈的扩展,它向上可提供应用程序编程的socket接口,向下可定义一个与网络接口层交互的接口,其中包括8个函数,分别是:ni_init(接口芯片初始化)、ni_broad-cast(发送广播分组)、ni_send(发送普通分组)、ni_getpkb(申请发送缓冲区)、ni_retpkb(归还接收缓冲区)、ni_ioctl(I/O控制操作)、ni_pool(统计量查询)、Announce(网络接口驱动调用它把接收到的数据包提交给pSOS)。其中网络接口层在本应用中就是Realtek8029的驱动程序,它通过硬件抽象层来驱动Realtek8029(硬件抽象层是PCI总线的配置读写和I/O读写指令集的总称)。
软件执行的流程大致是:系统首先启动pSOS,并由它加载网络接口驱动程序,然后调用驱动程序的ni_init函数,同时初始化Realtek8029的PCI配置空间并设置Realtek8029的工作参数,之后启动用户任务。在这里,用户任务为H.263编码进程。它对VI口读入的源图像进行压缩编码后,将调用socket的接口函数sendto(sendto是UDP套接口专用的发送函数),然后把码流发送给pSOS由pSOS根据UDP协议进行封装后,再调用ni_send函数,并由ni_send完成数据包从系统主内存到Realtek8029片上RAM的拷贝,然后启动Realtek8029发送数据。在接收情况下,Realtek8029收到一个完整的数据包后会用中断通知CPU,然后由CPU执行中断服务程序。当中断服务程序将数据包从Realtek8029片上RAM中拷贝到系统的主内存后,系统将调用Announce函数并把数据块的指针、数据长度和其它信息提交pSOS,最后由pSOS将数据包沿协议栈一层层上传并作出相应的处理。
软件的设计和pSOS操作系统的关系比较密切,限于篇幅,本文不对pSOS作详细介绍,。本文接下来重点介绍PCI配置空间的配置过程,这部分对于类似的设计有较普遍的参考意义。PCI配置空间有64个字节,PCI片内的这些寄存器存储了该芯片的厂商号、设备号、设备类型等重要代码,还包括命令寄存器、基地址寄存器等控制其总线行为的寄存器,它们必须在设备初始化时正确配置,否则设备不能工作。
对Realtek8029PCI空间的配置需要三个步骤:
首先是扫描总线,这一步的目的是找到Real-tek8029的配置地址,直观地讲,就是找到它的PCI_IDSEL引脚和哪根AD线相连,因为后续的配置写要根据这个地址来寻址。扫描总线时,要对AD〔11〕到AD〔31〕每根线进行一次扫描,如果哪根AD线连接了一个PCI设备的PCIIDSEL引脚,那么用配置读函数读取PCI配置空间的0号寄存器时,应该返回该设备的设备和厂商代码,如果这根线实际未连接设备,则返回值是0。已知Realtek8029的设备和厂商代码是“0x802910ec”,如果返回值与之相同,说明找到了Realtek8029,这时要记下这根AD线的序号。例如,在硬件上把Realtek8029的PCIIDSEL和AD〔20〕相连,则扫描到的序号就应该是“20”。
其次,用配置写函数配置I/O读写使能,即在command寄存器中写入“0x1”。
最后,用配置写函数配置I/O地址,也就是在I/OBaseAdddress寄存器写入分配给该设备的I/O地址(例如“0xe400”)。具体程序流程图如图4所示。
4调试结果
根据以上设计,笔者在原TM1300视频编码硬件系统的基础上加入了PCI接口,并编写了pSOS下Realtek8029的驱动程序。然后,在这个硬件平台上对Realtek8029的驱动部分进行了数据传送测试。
笔者首先用一个单独的UDP发送任务进行发送速率测试。这个任务主要是高速地向网络上的一台PC发送数据包,数据包的大小是变长的。PC接收并对丢包数进行统计的结果如表1所列。实验表明,在用网线直连的各种测试速率情况下都没有出错,而当接入局域网后,在发送速率为4.5Mbps时有突发的少量错误。由于UDP是不可靠的传输方式,所以这种错误是正常的。测试中,UDP发送的最高速率可以达到5Mbps左右,它与硬件的最高速率(10Mbps)相比还有一定差距,主要原因是数据从系统主内存到Realtek8029片上RAM的拷贝过程目前尚未采用DMA方式,这是需要改进的地方。
表1丢包数统计表(单位:丢包个数/分钟)
连接方式发送速率
800kbps1.8Mbps4.5Mbps
网络直连000
接入局域网002.5
接下来笔者进行了编码和传送的联合测试。编码任务执行H.263数据压缩后,把码流从以太网接口发出,然后在网络上的另一台PC上接收这个码流,并进行解码播放。通过调整编码器的量化步长可以控制编码的输出码率。在实验环境下发现在量化步长大于等于5、码率在700kbps以下时,基本没有丢包现象,解码得到的图像比较稳定,而当量化步长进一步减小,码率接近1Mbps时,就会出现丢包现象,解码的图像会出现彩色方块。出现这种现象是因为H.263编码器对CPU资源的消耗很大,而且数据在主内存和Realtek8029片上RAM之间的复制采用I/O读写方式也需要一定的CPU资源。这样,当量化步长小于5时,处理的复杂度超过了CPU的能力从而产生了一定的误码。解决的途径一方面是改进数据的传送方式(采用DMA),另一方面是需要对编码任务进行优化。
2:吉林省森工集团信息化发展前景与规划.
3: 吉林省林业设计院网络中心网络改造与发展规划.
4: 吉林省林业系统生态信息高速公路构建课题.
二、论文撰写与设计研究的目的:
吉林省的林业分布十分广泛,以长白山系为主要脉络的山地广泛分布各种森林资源,而作为林业及林业环境的发展,林业生态信息则是一个更为庞大的系统,快捷,准确,合理,系统的采集,处理,分析,存储这些信息是摆在我们面前的十分现实的问题.在信息交流的这个世界中,信息好比货物,我们需要将这些货物(信息)进行合理的处理,其中以硬件为主的计算机网络系统是这些货物(信息)交流的"公路"和"处理厂",我做这个题目,就是要为它画出一条"公路"和若干"处理方法"的蓝图.
由于森工集团这样的特定企业,其一,它是一个统一管理的企业,具有集团化的特点,网络的构建具有统一性.其二,它又在地理上是一个分散的企业,网络点也具有分散性.然而,分散中还具有集中的特点,它的网络系统的设计就应该是板块化的.从信息的角度来讲,信息的种类多,各种信息的采集传输处理角度也不尽相同,我们在设计的过程中不仅要考虑硬件的地域布局,也要考虑软件平台的配合.
没有最好,只有更好;更新观念,大步向前.我相信,在导师的精心指导下,经过我的努力,我将为它们创造出一条平坦,宽阔的"高速公路".
1,论文(设计)研究的对象:
拟订以吉林省林业系统为地理模型,以林业网络综合服务为基本需求,以网络拓扑结构为设计方向,以软件整合为应用方法,开发设计一套完整的基于集散集团企业的企业网络系统.
2,论文(设计)研究预期达到目标:
通过设计,论文的撰写,预期达到网络设计全面化,软件整合合理化,网络性能最优化,资金应用最低化,工程周期最短化的目标.
3,论文(设计)研究的内容:
一),主要问题:
设计解决网络地域规范与现有网络资源的利用和开发.
设计解决集中单位的网络统一部署.
设计解决多类型网络的接口部署.
设计解决分散网络用户的接入问题.
设计解决远程瘦用户网络分散点的性能价格合理化问题.
设计解决具有针对性的输入设备的自动化信息采集问题.
合理部署网络服务中心的网络平衡.
优化网络服务系统,营造合理的网络平台.
网络安全问题.
10,基本应用软件整合问题.
[nextpage]
二),论文(设计)包含的部分:
1,地理模型与网络模型的整合.
2,企业内部集中部门网络设计.
3,企业内部分散单元网络设计——总体分散.
4,企业内部分散单元网络设计——远程结点.
5,企业内部分散单元网络设计——移动结点.
6,企业网络窗口(企业外信息交流)设计.
7,企业网络中心,服务平台的设计.
8,企业网络基本应用软件结构设计.
9,企业网络特定终端接点设计.
10,企业网络整合设计.
5,论文(设计)的实验方法及理由:
由于设计的过程并不是工程的施工过程,在设计过程中详尽的去现场建设肯定有很大的难度,也不是十分可行的,那么我们在设计的阶段就应该进行仿真试验和科学计算.第一步,通过小型网络测试软件平台,第二步,构建多个小型网络搭建全局网络模拟环境,第三步,构建干扰源利用小型网络集总仿真测试.
6,论文(设计)实施安排表:
1.论文(设计)阶段第一周次:相关理论的学习研究,阅读参考文献资料,制订课题研究的实施方案,准备试验用网络硬件和软件形成试验程序表及试验细则.
2.论文(设计)阶段第二周次:开始第一轮实验,进行小型网络构建试验,模拟网络服务中心,模拟区域板块,模拟远程及移动网络.
3.论文(设计)阶段第三周次:进行接口模拟试验,测试软件应用平台,完善课题研究方案.
4.论文(设计)阶段第四周次:完成第一轮实验,提交中期成果(实验报告1).
5.论文(设计)阶段第五周次:进行第二轮实验,模拟环境(干扰仿真)实验,提交实验报告2.
6.论文(设计)阶段第六周次:完成结题报告,形成论文.
三,论文(设计)实施工具及参考资料:
小型网络环境,模拟干扰环境,软件平台.
吴企渊《计算机网络》.
郑纪蛟《计算机网络》.
陈济彪 丹青 等 《计算机局域网与企业网》.
christian huitema 《因特网路由技术》.
[美]othmar kyas 《网络安全技术——风险分析,策略与防火墙》.
其他相关设备,软件的说明书.
1、论文(设计)的创新点:
努力实现网络资源的全面应用,摆脱将单纯的网络硬件设计为企业网络设计的模式,大胆实践将软件部署与硬件设计阶段相整合的网络设计方法.
题目可行性说明及预期成果:
黄统奎,张艳红
(广东技术师范学院 天河学院,广东 广州 510540)
摘要:该文研究基于Struts2 + Spring + Hibernate的高校毕业设计管理系统的设计与实现。该系统按照毕业设计工作流程实现管理端,教师端,学生端相应的功能。重点实现了业务流程管理、用户权限管理、选题管理、文档管理、文档在线编辑、成绩评定、在线交流、数据备份等功能。该系统具有界面简洁、易用性强,交互性好、功能完善、同时又考虑到数据安全和系统功能的扩充。
关键词: Struts2;Spring;Hibernate;毕业设计;文档管理
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)19-4384-03
1 课题背景
随着大学的扩招,毕业生数量的逐年递增,高校毕业设计教学活动中需要处理的数据和信息也越来越大,在毕业设计管理工作中遇到工作效率低,交互性差,工作量大等问题,这已经成为高校每年毕业设计管理过程中急需处理的问题。同时课题资源过于零散,容易重复, 进一步加大了课题资源整合的难度。综上所述,该文研究基于 Java EE的高校毕业设计管理系统,使用该系统实现快捷高效的毕业设计管理工作。
2 系统分析
通过需求分析,系统确定有三种角色:学生、教师、管理员。
2.1功能模块划分
在具体设计实现毕业设计管理系统时,主要考虑了系统的以下主要功能和模块。
1) 公用模块
(1) 登录模块:验证帐号密码是否正确。
(2) 修改个人信息模块:修改账号密码。
(3) 师生互动模块:师生交流平台。
(4) 浏览信息模块:查看信息。
2) 毕业生模块
(1) 选报课题模块:选择指导老师与课题。
(2) 上传论文模块:上传各阶段的论文。
(3) 下载文件模块:下载指导老师的资料。
3) 指导教师模块
(1) 申报课题模块:申报自己的课题。
(2) 分配课题模块:选择毕业生与其对应的课题。
(3) 上传论文模块:上传各个阶段的论文。
(4) 审批论文模块:审批上传的论文。
(5) 下载文件模块:下载毕业生上传资料。
4) 管理员模块
(1) 公告模块:信息。
(2) 课题管理模块:管理课题。
(3) 账号管理模块:管理毕业生与指导教师账号。
(4) 日常维护模块:数据库备份还原。
2.2业务流程图
2.2.1 管理员业务流程图
管理员定期对系统的信息进行更新和维护,可以对公告、课题、帐号信息进行查看、增加、修改、删除等操作,以及配置系统的参数。业务流程图如图1所示。
图1 管理员业务流程图
图2 教师业务流程图
2.2.2 教师业务流程图
教师登录系统后,可以对课题进行管理,审核选题信息。教师可以查看学生的选题情况和学生个人信息,并确定是否录用学生提交的课题。在选题完毕之后,教师可以在系统中批阅该课题的上交文件,并给出评价及评分。业务流程图如上图2所示。
2.2.3 学生业务流程图
学生登录系统后,可以查看公告,修改个人资料。学生在选题中,可以自由选择教师及其提供的课题,也可以自己选取导师并自定义课题。选题后,学生允许提交各个时期的文档文件,并将上传信息显示在教师端界面。学生的业务流程图如图3所示。
图3 学生业务流程图
3 详细设计与实现
为了系统开发以及后期的维护更方便和明确,实现对项目的分割,将项目分为DAO、Service、Action层。根据面向对象思想,建立实体类,实现实体关系,将后台的数据表映射出来到这实体类中,提供给DAO、Service、Action层使用。
在web.xml添加Struts、Spring、Hibernate的filter和listener。在WEB-INF文件夹里面编写Spring的application.xml,整合Spring和Hibernate,实现Spring的IoC和AOP功能。将spring与struts的整合在一起,使用了自动扫描技术和注解的方式为每个类自动配置映射文件,使得程序的可读性变强。
利用Hibernate编写DAO层,为每个模块建立DAO接口,在接口中实现了增删改查等方法,实现JAVA与数据库的数据交互,供Service层调用。
为每个模块建立独立的Service接口,每个接口将实现不同模块的逻辑。Service层是实现系统业务逻辑的接口。利用之前编写的DAO层的接口,编写Service层,实现业务逻辑。合理规划Service的分类,在进行系统维护时会非常便利。
Action层用于处理页面信息,根据不同的处理结果返回不同的页面到客户端。设计Action层,调用Service层方法进行逻辑处理,然后根据处理结果为客户端返回页面,最后对界面进行美化。实现过程如下:
在创建具体的Action时,应当先创建抽象类BaseAction,继承Struts2中的ActionSupport抽象类,声明一个map变量session,这样以后每当实现一个Action,只要继承BaseAction,便可使用到session进行权限控制。同时也要创建PageAction,继承Struts2中的ActionSupport抽象类,并在该类中声明一个分页技术所需要的参数,包括了记录总条目、当前页码和总的页数等参数。
客户端每向服务器提交一次请求,都会先被相应的拦截器(interceptor)拦截并进行校验,拦截器会检验session中的key为actor保存的对象是哪一个对象(Admin、Teacher、Student),若满足拦截器的通过条件,将允许继续进行操作,否则将强制跳转到登陆页。不同的Action将根据设计时规划好的权限设置不同的拦截器。
在线word文件的预览功能,使用的是PreviewAction里面的默认方法获取当前的文件内容,通过里面的execute方法将内容在pageOffice的插件上显示出来,并且如果我们修改里面的内容后直接通过插件的poCtrl1.setSaveFilePage()方法将数据保存起来。那么下次我们点开文件就可以看到保存后的最新内容。
数据管理功能,所要调用到的是DataManageAction里面的execute方法跳转到数据管理界面。其中每当我们点击备份时,我们将数据库名、登陆账号、密码、安装路径等参数传递给DataManageAction里面的backup方法,将数据进行备份出来并弹出备份是否成功的提醒消息,然后将数据库还原时,我们需要先选择备份的文件,最后将页面的参数传递给DataManageAction里面的restore方法,将数据还原并弹出是否还原成功消息。
日志管理功能,所调用到的是LogManageAction里面的execute方法跳转到日志管理界面。其中当我们点击“导出日志”时,我们将调用LogManageAction里面的export方法,将服务器上项目的HTK.log日志文件以流的形式将其下载到客户端,并弹出保存的窗口让用户选择存放的路径。当我们点击“清空日志”时,那么程序将会调用LogManageAction里面的clean方法,将服务器上的HTK.log日志文件里面的内容清空并弹出清空成功消息。
4 总结
设计难点:保证上传信息的导入正确的添加到后台数据库中,对导入的xls文件是通过暂存在服务器读取还是直接从客户端读取。评分功能中,如何确定角色并且实现正确评分。在进行系统详细设计时,必须从一个宏观的角度,考虑某一功能模块设计会不会对其他的功能模块造成不良影响。本系统设计中充分考虑到数据安全性和功能的可扩展性,按照软件测试流程完成了软件测试,确保系统最终满足用户需求。
参考文献:
1.1.数据格式
宏观经济数据是多样式显示功能的基础数据。就目前来看,宏观经济主要的来源是统计报表、城市卡片和县卡片。另外,基本单位汇总数据、人口普查汇总数据也是宏观经济数据的一部分。基本年鉴数据一般是报表数据经过处理后的结果,年鉴数据在统计局的业务位置不是很重要,但年鉴数据也是将来系统中可能需要处理的一部分,应该也作为一种宏观经济的数据来源来考虑。
宏观经济数据的组织形式是多种多样的,但透过复杂的数据组织结构,它们也存在着共性,就是每一个统计数据都可以通过空间、时间、指标来确定,用数据库的语言描述就是可以分为地址码字段、时间字段、指标字段,只要数据表中存在这几个字段,就可以完整的描述统计数据。
系统的宏观经济数据存储在SQLServer2005中,表1为典型的宏观经济数据表结构,其中的地址码与空间数据中的地址码(DZM)相对应,实现空间数据与统计数据的统一。查询后的宏观经济数据如2所示。
1.2.功能需求分析
论文重点研究多地区、多年、多指标的宏观经济数据查询结果的多种表格方式显示,具体有以下五种。(1)普通样式:原始表数据显示(2)地区分类样式:以地区为主,显示各个时间的各种指标信息。(3)时间分类样式:以时间为主,显示各个地区的各种指标信息。(4)指标分类样式:以各类指标为主,显示各个地区、不同时间的信息。(5)时间-指标样式:以时间加各类指标为主,显示各个地区的信息。
2.详细功能设计
2.1.界面设计
多样式表格显示模块需要以上述五种方式显示数据。其中,普通样式可以直接显示,不需要进行复杂处理。论文主要论述其他四种样式,具体显示效果如图3所示。如图1所示,时间分类样式为跨时间(年)的多地区、多指标数据显示;地区分类样式为跨地区的多时间(年)、多指标数据显示;指标分类样式为跨指标的多地区、多时间(年)数据显示;时间_指标分类样式为时间+指标的多地区数据显示。
2.2.核心组件设计
本身提供了一个数据绑定控件DataGrid[3]。可以直接将数据绑定到该控件中来显示所有数据,这样就避免的使用for循环实现数据显示,大大提高了程序的开发效率。总体上DataGrid控件是一个二维的数据网格,用表格形式显示数据源数据,并且支持选择、编辑、删除、分页显示和排序等功能。但是DataGrid控件只能显示单列数据,样式简单。SourceGrid组件具有很强的重绘功能,通过简单的命令,如rowspan=2,就可以实现跨行显示。系统基于开源组件SourceGrid开发出SuperGrid控件,如图2所示,可以轻松实现各种表格的跨行、跨列显示。
该组件提供了四个数据多样式显示接口、一个数据处理接口和五个数据输出接口,详细功能如下所示。>SpanState是实现跨地区显示的接口;>SpanYear是实现跨时间显示的接口;>SpanIndicator是实现跨指标显示的接口;>IndividualQuery是实现时间指标样式的显示接口;>ReduceDumensionality是实现降维处理的接口;>ExporHTML是实现HTML格式输出的接口;>ExporWord是实现Word格式输出的接口;>ExporExcell是实现Excel格式输出的接口;>ExporXML是实现XML格式输出的接口;>OutPutTable是实现表格输出的接口。其中,SpanState、SpanYear、SpanIndicator需要提供统一入口参数,即原始表格信息,表格格式为(DZM、MC、YEAR、I1、……、In)。实现时间-指标样式的显示效果,需要首先对原始数据进行降维处理,控件提供ReduceDumensionality方法实现此功能。
3.结论