高可靠平台计算机设计(精选3篇)
高可靠平台计算机设计 篇1
引言
随着航天技术的不断发展, 对控制的要求也越来越高, 需要具备更高的反应速度和更强的数据处理能力。在航天领域, 一旦控制发生错误, 将会造成难以估计的损失。因此, 如何提高控制的可靠性是长期以来的一个重要问题。本文介绍了SOC应用方式的一种实际开发方案, 重点讨论了平台计算机的高可靠性的设计和实现方法。
高可靠平台计算机主要任务
本高可靠平台计算机主要完成以下主要任务:实时录取惯性测量仪表输出的转动角增量和视速度增量;接收机载导航系统给出的初始位置、速度以及姿态数据;实时接收定位卫星测量数据;实时完成制导、姿控方程的运算, 按照控制律及制导律要求, 对采集的信息进行变换、综合, 形成控制/制导指令, 控制舵机;集成1553B总线通信功能, 进行总线通信与控制;4路D/A输出姿态控制指令;具有8级可屏蔽中断;通过1553B接口与地面计算机通信, 进行信息交换;提供三个带光电隔离的RS422接口。
平台计算机采用FPGA+S698 IP核的方案 (简称SOC) , 以欧比特公司的S698 IP核做为主CPU, 另外再把1553B总线控制器、VME总线控制器、3个带F I F O的U A R T整合在一起。体现了欧比特公司S698 IP核灵活、优越性能。并且支持多操作系统。采用SOC设计节省昂贵的流片费用、增加系统设计的灵活性、方便修改、大大缩短设计开发的周期。
高可靠平台计算机
高可靠平台计算机功能框图示于图1。
高可靠平台计算机采用F P G A+S 6 9 8IP核的SOC形式实现, FPGA采用ALTERA公司Cyclone系列EP1C20。
高性能的S698 IP核作为内核, 集成了大量的外围设备, 并将这些所有的模块全部集成到一个FPGA器件当中, 降低了整个板级系统的成本, 缩小了板级系统的体积, 器件等级选用工业级以上器件, 大大提高了系统的可靠性。
S698 IP核的功能框图示于图2。
S698 IP核特点如下:内部使用了5级流水线, SPARC V8指令集;硬件乘法器和除法器;支持2条DSP指令 (MAC&UMAC) ;浮点运算:双精度 (64位) ;具有分开的指令和数据cache结构 (哈佛结构) , 可以根据需求灵活的配置c a c h e的容量, 大小范围是1~64kbyte;片上总线规范使用了AMBA2.0规范, 支持APB和AHB标准;外设可裁减, 包括U A R T, 定时器, 中断控制器, 存储器管理单元, I/O端口, 看门狗等;采用AMBA AHB/APB总线结构的用户设计新模块, 可以很容易加入到S698 IP核中, 完成用户的定制应用;集成调试支持单元 (DSU) , 支持硬件调试功能。
高可靠平台计算机系统板具有如下硬件资源:FPGA (集成S698、1553B、VME IP核) ;1553B部分;VME部分;4MB FLASH;4MB SRAM;4路+10V~-10V, 12位DA输出;3路光电隔离RS422, 其中2路具有16字节FIFO, 1路1K字节FIFO;频标频率可配置;定时器;8级中断;FPGA提供JTAG、AS接口;1路U A R T;D S U (硬件调试单元) 。
S698 IP核高可靠设计
为了适用于航空航天的高可靠性应用, S698 IP核采用多层次的容错策略;奇偶校验、T M R (三模冗余) 寄存器、片上E D A C (检错和纠错) 、流水线重启、强迫Cache不命中等。尽管现在几乎所有CPU都有一些常规的容错措施, 如奇偶校验、流水线重启等, 像I B M S/390 G5还采用了写阶段以前的全部流水线复制技术。IntelItanium采用的混合ECC和校验编码等技术;但远没有S698 IP核那样, 采用如此全面的容错措施。
S698 IP核将时序 (存储) 单元的状态翻转作为数字容错的主要内容, 根据时序逻辑的不同特点和性质, 采用了不同的容错技术和手段。
·Cache的容错。大的Cache对高性能CPU来说是至关重要的, 而且位于处理器的关键 (时间) 通路上。为了减少复杂性和时间开销, 错误检测的方法采用2位的奇偶校验位, l位用作奇校验, l位偶校验, 因此可以检查所有的错误情况, 在读Cache的同时进行校验。当校验出错误, 强制Cache丢失, 并从外部存储去获取数据。
·处理器寄存器文件的错误保护。寄存器文件是处理器内部的寄存器堆, 内部的寄存器对于指令的运行速度和用户程序设计的灵活程度都是很重要的。内部寄存器的使用频率很大, 其状态的正确性也是很关键。S698 IP核采用1、2奇偶校验位和 (32.7) BCH校验和进行容错。
·触发器的错误保护。处理器的2500个触发器均采用三模冗余的方式进行容错, 通过表决器来决出正确的输出。
硬件高可靠设计
3个RS422接口和1553B接口是系统对外接口, RS422采用光电隔离, 工作时以光作为媒介来传递信息, 无触点, 寿命长, 响应速度快, 输入和输出在电气上是完全隔离的, 采用了高等级隔离电源, 给光耦单独供电, 抗干扰能力强。
1553B是一种具有可确定性的、传输可靠的数据总线, 为双冗余设计, 广泛地应用于不同的军事平台 (航空系统、地面车辆系统、舰艇系统) 系统, 已经发展成国际公认的数据总线标准。
底板数据总线为VME (Versa Module Eurocard) , VME总线是一种通用的计算机总线, 它定义了一个在紧密耦合 (closely coupled) 硬件构架中可进行互连数据处理、数据存储和连接外围控制器件的系统。经过多年的改造升级, VME系统已经发展的非常完善, 围绕其开发的产品遍及了工业控制、军用系统、航空航天、交通运输和医疗等领域。
整体的可靠性设计
SPARC微处理器最突出的特点就是它的可扩展性, 这是业界出现的第一款有可扩展性功能的微处理器, 它的无穷扩展能力能够应付各种变化的数据处理要求。具有高结构化设计, 容错及程序保护等设计。由于其独到的性能, 在航天领域得到了青睐。由于采用SOC方式, 内部集成度高, 外部扩展工作少, 此本身具有较强的抗干扰能力;同时通过外部硬件电路以及软件的抗干扰设计, 平台计算机可以实现非常高的可靠性。
RS422
3个UART控制器在SOC中实现, 通过RS422收发芯片将LVTTL电平转换为RS422电平, 其中1路RS422带接收/发送中断。
UART1具有16 byte的FIFO, 可产生中断, 取数后, 清中断, 并同时清空F I F O。UART2具有1K byte的FIFO, 数据发送时由独立管理器管理, 不占用C P U时间。UART3具有16 byte的FIFO, 可产生中断。
采用RS422总线接口, 最大传输距离:1000m。为了提高抗干扰能力和较高的EMI防护性能, 采用了光电隔离方式, 提高了节点的稳定性和安全性。
频标和5 m s中断
频标和5ms中断功能在SOC中实现。频标默认频率1ms, 兼容TTL电平, 50%占空比。在SOC中可通过配置不同的值输出不同频率的频标, 其启动和关闭均可由软件操作相应寄存器来控制。
5ms定时器模块用于产生周期性的中断请求, 默认周期为5ms, 其启动和关闭均可由软件操作相应寄存器来控制。
1553B部分
1553B总线与S698 IP核集成在一起, 在S O C中实现。传输速度为每秒1M比特, 字的长度为20个比特, 数据有效长度为16个比特, 信息量最大长度为32个字, 传输方式为半双工方式, 传输协议为命令/响应方式, 故障容错有典型的双冗余方式, 第二条总线处于热备份状态;可通过软件配置实现3个不同的终端, 有总线控制器 (BC) 、远置终端 (RT) 和总线监听器 (BM) ;信息格式有BC到RT、RT到BC、RT到RT、广播方式和系统控制方式;能挂31个远置终端, 传输媒介为屏蔽双绞线, 总线耦合方式采用直接耦合方式。平台计算机实现了完整的1553B总线的通讯, 其包括BC、RT、BM, 其功能、通信以及操作方式同BU-6158X芯片基本一致。一片能实现1 5 5 3 B功能的专用芯片DDC61580价格不菲, 而且全面依赖进口。全面依赖进口的产品用在特殊领域也不适合, 而我们在一款性价比很高的F P G A里就实现了DDC61580同样的功能。
1553B总线控制器的主机接口有两种:A P B和A H B。主机 (即S P A R C V 8处理器) 通过APB接口 (包括输入总线A P B I和输出总线A P B O) 访问寄存器, 通过A H B接口 (包括输入总线A H B I和输出总线A H B O) 访问存储器。M a n c h e s t e r CODEC的输出/输入为互补曼彻斯特码, 码速率为1 M b p s。信号R X A、R X A N、T X A、T X A N、T X A E N、R X B、R X B N、T X B、T X B N和T X B E N为1 5 5 3 B总线控制器同外置收发器芯片的接口信号。
本计算机平台可以通过对1553B控制器寄存器进行配置, 可以分别实现BC、RT、BM的功能。可以灵活应用在不同的场合。
V M E部分
V M E总线是一种应用较为普遍的计算机接口总线, 技术成熟。目前国内外很大一部分的星载计算机并行总线都采用V M E总线结构。VME总线是一种高速、异步并行数据传输总线, 可在非多路、32位数据和地址通路上支持八位、十六位和三十二位的传输, 通讯协议是异步和全挂钩方式的。它包括的功能模块有:主模块、从模块、中断模块和中断管理模块, 另外还有两个模块:总线定时模块和IACK菊花链驱动模块辅助上述各个功能模块。
本平台计算机V M E总线控制器在S O C中实现标准V M E总线, V M E总线信号从SOC出来后, 经总线驱动电路, 输出到背板连接器。总线芯片采用74ALVC164245, 实现3.3V~5V电平转换。VME接口与底板连接器有96个引脚, 排列成三排, 每排32引脚。VME控制器挂接在处理器外部存储控制器总线上, 映射的区域为I/O区, 为其分配的地址区域为:0x24000000~0x24FFFFFF, 共1 6 M空间。
D/A转换模块
D/A转换模块由三部分组成:D/A转换芯片、基准、运放。12位D/A转换精度, 可输出4路+10V~-10V电压。
软件编程
S698 IP核可以支持ucLinux, RTEMS, Vxworks等多种操作系统;也可不使用操作系统, 支持标准C编程。而且开发了Linux和W i n d o w s下图形化集成开发环境, 支持流行的调试方法;开发环境支持离线仿真调试和目标板在线调试。
结语
这种高可靠平台计算机, 不再采用体积大、笨重而又功耗巨大的处理器芯片 (如DSP) , 而是直接将S698 IP核放进FPGA。同时在硬件、软件以及制板布线等方面采用多种提高系统可靠性的设计措施。系统将大部分的处理功能硬件化, 利用F P A G的丰富资源, 将整个系统放入一片F P G A芯片内。其中的S698 IP核进行控制管理和一些必须的计算处理。这样的一款国产的高性能的处理器, 具有自主的知识产权, 应用在一些特殊的领域, 对于国家安全来说尤为重要。S698I P核在性能上也绝不逊色于其他同类处理器, 丰富的外设, 为用户搭建了一个芯片级的高可靠计算机平台, 使用起来极为方便。
参考文献
[1]. 金永德等, 导弹与航天技术概论, 哈尔滨工业大学出版社, 2002
[2]. 华容茂, 数字电子技术及逻辑设计, 中国电力出版社, 2003
[3]. 美国国家标准-通用背板总线:VME总线IEEE标准
[4]. MIL-HDBK-1553A (美国军方1553标准)
[5]. 周明光、马海潮, 计算机测试系统原理与应用, 电子工业出版社, 2005
[6]. 沈颂华, 航空航天器供电系统, 电子工业出版社, 2005
[7]. 1553 User’s Guide. DDC公司, 2003
[8]. MIL-STD-1553 DESIGNED’S guide, DDC公司, 2003
[9]. OBT-1553B User’s Guide, 欧比特公司, 2004
[10]. 平台计算机User’s Guide, 欧比特公司, 2004
基于桥联模型的高可靠计算机设计 篇2
随着机载电子设备综合化程度的不断深化和出勤率指标的不断提高,越来越多的与生命安全攸关的机载系统运行依赖于计算机,如飞行管理系统、机电综合管理系统、环境与生命防护系统及发动机控制系统等。对于此类关键系统,机载计算机工作的任务可靠性将直接关系飞机飞行安全,机载计算机一旦运行错误,将造成巨大的生命财产损失。提高机载计算机任务可靠性的一个有效措施就是进行容错设计。容错技术分为软件容错技术和硬件容错技术。软件容错技术[1]主要包括恢复块(RB)、多版本技术(NVP)、N版本自检(NSCP)、分布式恢复块(DRB)和异常处理等(EH)。硬件容错技术主要是依靠增加额外资源的方法来换取系统的可靠性。硬件级容错通道设置主要通过双余度、三余度或四余度等措施来实现。对于机载设备而言,从效费比考虑,目前大多使用双余度(双通道)容错架构。本文从研究两种常用的双余度容错模型出发,在对工作模型的故障容错机制分析的基础上,将桥联模型应用于机载计算机设计,在不增加额外硬件资源的情况下,有效提高了计算机的可靠性。
1 双余度容错模型
对于双余度系统而言,常用的两种双余度容错
模型为并-串模型和串-并模型[2,3],分别如图1和2所示。A和B代表两个余度通道,n代表每个余度通道的n个分系统或分组件。并-串模型和串-并模型在实践中被广泛应用,极大提高了原有单余度系统的任务可靠性,任何子系统和组件的故障均不会影响到系统工作的安全。然而并-串模型和串-并模型在实际使用过程中也存在很多不足的地方。并-串模型由于过多考虑了系统维护和在线监控的需要,系统成本较高,而且在“串”的环节可能存在单点故障,影响系统安全。串-并模型从整个系统角度满足双余度容错的需要,但是余度切换颗粒度太大,任何单点故障将引起整个通道的故障切换。为了克服上述缺点,我们在不增加双余度系统资源的基础上,将桥联模型(图3所示)应用于机载计算机的双余度设计,该模型不仅避免了并-串模型中单点故障的影响,又可以显著降低双余度切换的颗粒度。
2 机载计算机功能模型
可靠性是指在错误存在的情况下,系统持续服务的能力,反映了系统一段时间的特性。应用于机载领域或其他生命安全关键领域的计算机都要求是高可靠的,能实时采集外部传感器的数据,通过内部逻辑运算或控制率计算得出控制响应,在系统要求的时间点之前将指令送至外部作动器或伺服机构,完成整个控制回路,同时可将系统的工作状态信息进行显示。基于上述需求,机载计算机的内部功能可以分解为数据计算和信息处理单元和接口采集和控制单元,如图2所示。数据计算机和信息处理单元主要用于对机载计算机控制率进行精确解算,并将解算结果传送到接口采集与控制单元进行输出控制,同时将机载计算机的工作状态和品质通过总线传送到信息显示系统进行显示。接口采集和控制单元主要用于采集外部传感器的工作状态和性能,并将采集到的外部数据通过背板总线传送到数据计算机和信息处理单元进行数据计算和控制率解算,同时接收数据计算机和信息处理单元传送的控制数据进行输出控制。另外,接口采集和控制单元同时作为系统工作的监控器和模糊控制器,当接口采集和控制单元采集到系统响应出现发散状态或没有按时获得数据计算机和信息处理单元的有效数据,接口采集和控制单元会启用逻辑控制或模糊规则控制,确保系统工作安全。
3 高可靠计算机容错设计
依据上文提出的机载计算机的功能描述,可将图2所示的“接口采集与控制单元”定义为输入输出模块(简称IOM),“数据计算机与信息单元”定义为数据处理模块(简称为DPM),则DPM和IOM串联组合可以独立完成机载计算机要求的采集、控制及显示功能。为了提高系统的任务可靠性,采用双余度设计。图3所示的计算机构型采用独立双通道同构型结构,为了抑制故障的蔓延和组合效应,双余度计算及采用通道间独立冗余和物理隔离模式。
图3双余度计算机构型(参见右栏)
正常情况下,输入采集双通道同时工作,输出控制A通道优先工作,B通道热备份,随时响应切换需求。但是当A通道的模块与B通道的模块出现交叉故障的情况下(DPMA与IOMB故障或DPMB与IOMA故障)将出现该双余度计算机无法工作的情况。针对此情况,本文将桥联模型应用于上述图3的构型中,形成图4的构型。由图4可以看出,实现该基于桥联模型的高可靠计算机的关键是ARINC659串行背板总线。
ARINC659总线是一个线型多点串行通信总线[4,5],使用4条串行总线同时半双工传输和交叉校验的通信方式,在时间上和空间上具有高容错性和坚固性划分的高完整性底板总线。ARINC659串行总线总线接口单元BIU采用双重备份,形成一对接口,互连总线采用四重备份(AX,AY,BX和BY)。ARINC659总线的大多数功能,如时钟同步、信息调度和传输等都是在接口上执行。每对接口作为它伙伴的监控器,控制它对互连介质的访问。接口对中的每一个接口驱动一对不同的互连总线,且能读取4个数据。每个互连总线由两个数据线和一个时钟线组成,当多个BIU同时驱动同一总线发生冲突时,通过或门来解决。ARINC659总线采用采用表驱动比例访问协议(TDPA),保证了数据时间和空间上的确定性。ARINC659总线特有的主/备工作模式使双余度切换的颗粒度大大降低。
对于本双余度机载计算机的容错分析,本文主要从接口级故障、模块级故障和总线级故障来分析。对于输入接口故障,通过在线监控电路回绕测试进行故障定位,将正确的输入采集结果传送到下级处理;对于输出接口故障,也是通过在线监控电路定位故障,并通过通道故障逻辑电路进行接口电路电气切换,保证机载计算机的正常工作;对于模块级故障,均启用ARINC659总线的主/备工作模式切换,相关模块涉及的比较监控界面降级为单余度工作,不影响机载计算机的安全工作;对于总线故障(仅针对AX和BY、AY和BX或三条及以上的背板总线故障,其余故障ARINC659总线的容错机制可自我保障),机载计算机采取第3节所描述的接口采集和控制模块(IOM)逻辑控制或模糊规则控制模式,保证关键系统安全和飞机平台的飞行安全。
4 结论
通过对双余度机载计算机的容错能力分析,得出目前这种双余度模型可以有效解决目前可能存在的故障,可以满足提高目前任务可靠性的目标,本设计方法具备工程实用价值。
参考文献
[1]张晓艳,於二军.高可靠计算机容错技术的研究[J].计算机技术与发展,2008,6,18.
[2]熊峻江,王甲峰,袁立,等.余度设计中的系统可靠性最优分配模型[J].航空学报,2004,25(1):45-48.
[3]陈宇.高可靠容错实时系统的支撑技术研究[D].成都:电子科技大学,2002.
[4]任秀丽,张翠华.实时嵌入式系统总线的容错技术[J].仪器仪表学报,2005(S2):586-589.
高可靠平台计算机设计 篇3
1 Android平台架构介绍
Android平台自底向上由四个层次组成:Linux内核层、Android运行时库和其他库层、应用框架层、应用程序层[2]。如图1所示。
(1)Linux内核层:
Android基于Linux version2.6.23内核来开发的,主要是添加了一个名为Goldfish的虚拟CPU以及Android运行所需的特定驱动代码。该层用来提供系统的底层服务,包括安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块。作为一个虚拟的中间层,该层位于硬件与其他的软件层之间。需要注意:这个内核操作系统并非类GNU/Linux的,所以其系统库、系统初始化和编程接口都和标准的Linux系统有所不同。它没有采用虚拟内存文件系统,而是采用YAFFS2文件系统。YAFFS(Yet AnotherFlash Rle System)文件系统是一个开源的,专门为NAND Flash设计的文件系统,具有很好的可移植性,也是一种日志型文件系统,能够在Linux,uCLinux,和Windows CE上运行。
(2)Android运行时库和其他库层:
Android运行时库分为核心库和Dalvik虚拟机两部分。 核心库提供java语言,核心库的大多数功能,主要通过JNI的方式向应用程序框架层提供调用底层程序库的接口。
Dalvik虚拟机是为了同时高效的运行多个VMS而实现的,Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化,Dalvik虚拟机是基于寄存器的,所有的类都由java汇编器编译,然后通过SDK中的dx工具转换为.dex格式并由虚拟机执行,Dalvik虚拟机依赖Linux的一些功能,比如线程机制和底层的内存管理机制。
(3)应用框架层:
Android的应用程序框架为应用程序层的开发者提供APIs,它是一个应用程序的框架[3]。由于上层的应用程序是以Java构建的,因此本层次提供的首先包含了UI程序中所需要的各种控件:例如: Views (视图组件)包括 lists(列表), grids(栅格), text boxes(文本框), buttons(按钮)等。甚至一个嵌入式的Web浏览器。
一个Andoid的应用程序可以利用应用程序框架中的几个部分:Activity (活动);Broadcast Intent Receiver (广播意图接收者);Service (服务); Content Provider (内容提供者)。
(4)应用程序层:
Android平台不仅仅是操作系统,本身会附带一些核心的应用程序,包括e-mail客户端、短信程序、日历、地图、浏览器、通讯录等等,目前所有的应用程序都是由Java语言开发的。并且这些应用程序都是可以被开发人员开发的其他应用程序所替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。
(5)应用程序在手机上的安装:
首先要在电脑上安装手机的驱动程序,使手机能与电脑正常连接。然后将Android手机应用安装工具——APK安装器安装到手机上,使得手机能够安装所设计的应用程序。
在Android应用程序的生成过程中,输入就是我们在eclipse或源码中监理的工程及其下面的源文件,输出就是处理后的APK文件。
APK是Android Package的缩写,即Android安装包。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
一个APK文件结构为mete-INF(Jar文件中常可以看到);res(存放资源文件的目录);AndroidManifest.xml(程序全局配置文件);classes.dex Dalvik(字节码);resources.arsc(编译后的二进制资源文件)。
2 系统设计
2.1 网络通信
本系统基于C/S模型,使用Socket类进行网络通信。Java为TCP协议提供了Socket类。Socket类是网络上两个程序间通过一个双向的信息连接实现数据交换的通道,是Java实现流式Socket通信的主要工具。创建一个Socket对象就是建立一个Client与Server间的连接。应用程序通常通过套接字向网络发出请求或者应答网络请求[4]。
在本系统中Android终端作为Client,在硬件电路板上的CC2530芯片中下载通信协议,是作为Server端。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤[4]:
(1)服务器监听,客户端请求,连接确认;
(2)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态;
(3)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。
2.2 双向可靠通信协议
在硬件设备所遵循的通信协议的基础上,根据系统控制过程对安全可靠性的需要,我们设计了应用层双向可靠通信协议[5],以实现对系统硬件资源的可靠控制,协议的具体实现过程如下:
(1) 软件层向Server发送连接请求;
(2) Server发送接收确认0x00-正确接收 0x01-错误的消息;
(3) Server若发送确认消息是0x00,则继续向软件层发送设备消息;否则等待软件层重新发送连接请求;
(4)软件层若接收到的确认信息是0x01,则重新发送连接请求,否则软件层向Server发送接收确认0x00-正确接收 0x01-错误的消息;
(5)软件层若发送0x00,则继续层向Server应答设备识别消息,并发送设备序号;否则等待Server端重新发送设备消息;
(6)Server若接收到的确认信息是0x01,则重新发送设备消息;否则发送接收确认0x00-正确接收 0x01-错误的消息;
(7)Server若发送确认消息是0x00,则继续向软件层发送设备序号应答;否则等待软件层重传应答设备识别消息和设备序号;
(8)软件层若接收到的确认信息是0x01,则重新发送应答设备识别消息和设备序号;否则向Server发送接收确认0x00-正确接收 0x01-错误的消息;
(9)软件层若已发送确认消息0x00表示已收到Server应答后,建立连接,定时向中间服务发送心跳;否则等待Server重新发送设备序号应答;
(10)双方建立连接后,软件层向Server发送后续的来自用户的控制信息;
(11)Server向软件层发送对控制信息的确认0x00-正确接收 0x01-错误的消息,并返回各个继电器的开关状态。
注:当A方向B方发送消息后,等待B方发送确认消息ACK,启动定时器,一段时间后若未接收到ACK消息,则自动重发消息。
2.3 系统运行流程
前台程序的Activity类设计交互界面并处理用户的各种控制命令,包括输入信息和按键命令。后台程序的Declare类和Wsn类等接收前台程序发送的控制消息,并与硬件电路之间的通信,如图2所示。
2.4 系统的具体实现
将硬件电路板的网络接口配置IP地址和端口号后,连接入路由器。Android手机终端连接WIFI,如图3。
终端启动程序后,在主Activity中初始化一个Application即Declare类的对象,该对象用于实现多个Activity之间数据的共享[6],及记录当前各个继电器的状态。实现语句如下:
declare=(Declare)this.getApplication();Android终端通过Wsn类与Server进行消息传递。在Wsn对象中开启了多个线程[7],线程WsnTask 定时发送心跳;线程WsnReceiveTask定时对硬件反馈的数据进行处理;处理用户控制信息的线程;线程Mysocket在Socket套接字建立基础上实现网络通信,建立套接字语句如下:
public void SocketInit(String ip, int port)
{
try{
sd = new Socket(InetAddress.getByName(ip), port); //根据服务器的ip地址及端口号建立一个套接字实例
is = sd.getInputStream(); //获取输入数据流
os = sd.getOutputStream(); //获取输出数据流
thread = new Thread(this); //把当前类实例化为一个线程
thread.start(); //启动线程
}catch(Exception e){
e.printStackTrace();
}
在Declare类中实例化一个Wsn对象,Declare对象将从Activity得到的各种按键命令通过Wsn对象转换成可与硬件电路板的通信的消息。实现将前台程序中调用后台程序的部分代码:
connect.setOnClickListener(new Button.OnClickListener()
{//单击按钮响应函数
public void onClick(View v) {
if(declare.connected == false)
{
declare.connect(); //调用declare类中的connect方法
connect.setText("disconnect"); //设置按钮的标识文字
}
else
{
declare.disconnect(); //调用declare类中的disconnect方法
connect.setText("connect"); //设置按钮的标识文字
}
}
});
通过Socket发送的一般消息格式由消息头、消息长、会话ID、消息代码、节点地址及校验和组成。以Wsn类中实现发送设备连接的方法为例进行说明:
protected void SendFirstDeviceConnect()
{
short session = 0;
byte messageCode = SServiceToCoordinator; //设备识别号
byte[] sendBufferF = new byte[6]; //准备发送的消息字节
sendBufferF[0] = FRAME_HEAD; //消息头
sendBufferF[1] = 6; //消息长
sendBufferF[2] = (byte) (session & 0x0ff); //会话ID
sendBufferF[3] = (byte) ((session >>> 8) & 0x0ff); //消息代码
sendBufferF[4] = messageCode; //节点地址
sendBufferF[5] = CountCheckSum(sendBufferF, 6); //校验和
mySocket.send(sendBufferF); //发送数据
}
同时,硬件电路向Wsn返回的状态信息通过Declare对象反馈给Activity。
3 Android终端界面设计
本应用程序设计了四路可选择通道,可以控制四路电器。用户输入IP及port信息后,点击“connect”按钮后,可以用spinner控件选择想要控制的通路,进入该通路控制页面后,可以查看灯的开关状态,并可对其进行控制[8]。
3.1 主界面
选择4路电器界面:
3.2 控制页面
界面实时显示实际电路的开关状态
4 结束语
远程控制系统在物联网的发展中得到了越来越广泛的应用,但同时也面临这可靠性和稳定性的问题,本文提出了一个双向可靠通信方案,并基于Android平台开发了一个高可靠的远程控制系统。在本系统中,后台程序是利用Socket网络通信技术,因而Server端需要配置IP地址及端口号,在Client端登陆WIFI,通过所设计的Android访问界面连接Server端的IP及端口,然后可对Server端的继电器进行控制。本系统可独立应用于需要进行远程移动监控的需求中,也可应用于智能家居、智慧校园等物联网环境下。
参考文献
[1]袁华,杨泽,安李振,宁张凌.基于Android的视频会议终端智能遥控器的设计和实现[J].广西大学学报,自然科学版,2011(10):234-251
[2]詹成国,朱伟,徐敏.基于Android的测控装置人机界面的设计与开发[J].电力自动化设备,2012(1):119-122
[3]耿东久,索岳,陈渝,文军,吕勇强.基于Android手机的远程访问和控制系统[J].计算机应用,2011(2):559-571
[4](美)卡尔费特(Calvet,K.L.),(美)多纳霍(Donahoo,M.J.)著,周恒民译.Java TCP/IP Socket编程[M].北京:机械工业出版社,2009.
[5]任长清.王晓峰,吴平东,等.基于TCP/IP网络的远程控制系统的研究[A],中国电工技术学会第七届学术年会论文集[c].北京:中国电工技术学会,2001,5:193-197
[6]韩超,梁泉.Android系统原理及开发要点详解[M].北京:电子工业出版社,2010.
[7](英)梅尔(Meirer,R)著,王鹏杰,霍建同译.Android高级编程[M].北京:清华大学出版社,2010.
【高可靠平台计算机设计】推荐阅读:
可靠性评估平台08-27
嫦娥一号卫星数据高可靠性保护设计10-19
高可靠应用10-25
高可靠性供电05-30
高可靠性网络11-12
计算可靠性07-30
计算机网络可靠性分析08-06
网络可靠性设计论文10-14
农机产品可靠性设计07-10
可靠性设计和验证11-12