杨 云,韦 明,何双亮,孙京霞
(中国航天员科研训练中心,北京100094)
载人航天飞行过程中,对航天员实施常规医监和定期医学检查会产生大量的医监和医学检查数据。如何采集各类医学监督设备和医学检查设备(下称医学外设)检测的数据,并按要求传输至载人航天器下行传输链路的发送端,是航天员系统医监计算机(下称医监主机)承担的主要任务。
载人航天初期,选择的医监指标、医学检查项目一般较少,医监主机配置与医学外设相对应的数据接口,与医学外设进行点对点的数据传输即可满足数据传输要求。
随着我国载人航天任务的深入开展,地面医监医生关注的检测项目、指标不断增加,需要通过医监主机下传数据的医学外设数量不断增加,医学外设传输的数据种类、数据量也呈不断上升趋势,传统的点对点数据传输模式已无法满足任务要求,医监主机经常遇到多种医学外设同时传输数据的情况,如何可靠接收医学数据,特别是满足航天员各种工况下的医学数据传输要求,成了医监主机在设计过程中主要考虑的问题。组建专门的医学数据传输网络,实施多路医学数据的网络化传输成为解决上述问题的有效办法。
通过对 RS232、RS422、RS485、CAN、1553B、Ethernet等多种串行总线的数据传输特性详细分析研究后,选择CAN总线组建交会对接任务天宫一号航天员医学信息管理网络。
CAN全称控制局域网,是德国Bosch公司20世纪80年代初为解决现代汽车中众多的控制和测试仪器间的数据交换而开发的一种通信协议[1],CAN总线规范已被ISO国际标准组织1993年制订为国际标准(ISO11898)。凭借其极高的实时性和可靠性,同时兼备成本低、速率高、抗电磁干扰性强、易扩展等优点,目前已成为最广泛的现场总线之一,应用于各领域[2-5]。CAN总线的主要特点如下:
①多主方式工作,网络上所有节点均可在任一时刻向总线发送信息,不分主从;
②采用非破坏总线仲裁技术。当多个节点同时发送信息时,优先级较低的节点退出通信,优先级高的节点不受影响,从而大大减少了总线冲突仲裁时间,尤其在网络负载很重的情况下,也不会出现瘫痪;
③基于通信数据块的编码方式使得网络内部的节点个数在理论上不受限制,数据块的标识符可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种方法还可使不同的节点同时接到相同的数据,CAN节点只需要通过对报文的标识符滤除即可用点对点、一点对多点及全局广播等几种方式传送数据。当然实际节点数仅受限于总线收发器的驱动能力;
④实时性、容错性好,报文的短帧结构以及CRC校验保证了极低的出错率和很好的校验效果,最长8Byte的数据帧不会占用总线时间过长,从而保证通信的实时性,在出现严重错误时,CAN节点可以自动关闭,而不影响总线上的其他节点工作。
交会对接任务中,需要通过医监主机向地面传送数据的医学外设多达十个。分析这些医监设备和医学检查设备存在以下特点。
设备的数据产生方式不相同。有加电工作后立即连续对外传输数据的,如用于常规生理信号监测的医学监督设备;有加电后先进行信息检测,检测完成后再传输检测结果的,如各类医学检查设备、生化检测设备、环境监测设备;还有读取存储卡中的数据后进行数据传输的。
设备的数据传输要求不相同。有些医学外设对传输速率要求较高,必须在限定时间内完成数据传输,否则,将被后续数据覆盖,造成数据丢失;有些医学外设对传输速率没有严格要求,但对总的传输时间有要求,如动态心电数据的传输要求不超过1h。
设备的数据传输容量不相同。有些医学外设一次只传输几个字节;有些医学外设一次需传输几十兆字节。
设备对数据传输的误码率要求不相同。对于实时医学监督设备,如心电、呼吸波形等,只要不影响后续心率提取或心电特异性分析,有限误码是允许的;但对于医学检查类,关键位置的误码意味着检查结果的合格与否,因此后者对数据传输可靠性的要求极高。
医学外设与医监主机的连接是随机的,设备中除个别固定安装的设备可以作为固定的接入通信点外,其余设备均是便携式的,使用时与医监主机相连,使用后需要立即断开连接。
分析上述医学外设的实际要求,交会对接任务医学信息管理网络的特点是:网络节点个数有限、信息的传递距离短、实时增强、总线调度机制要求简洁、网络结构力求简单、网络具有开放性等。参照ISO国际标准化组织颁布的OSI(Open System Interconnection)7层开放系统互联模型,采用简化的CAN总线型网络结构,以医监主机为核心,组建了一个基于CAN总线的医学信息管理网络。
由于医学信息管理网络中医学外设只与医监主机之间进行数据通信,为提高网络传输效率,避免无谓的总线冲突,确保不同优先级医学外设数据的可靠传输,网络采用一主多从的方式,医监主机作为网络主节点,各个医学外设作为从节点。网络拓扑结构如下图1所示:
图中的Node1–Node10即为与医监主机进行医学数据传输通信的医学外设。
图1 网络拓扑
为了使医学信息管理网络简单可靠,对OSI开放系统中的7层协议模式进行了裁剪,只采用物理层、链路层和应用层3层网络结构。
物理层规定了CAN总线的机械、电气和传输位时间的要求。网络内所有节点的物理层协议必须是相同的。每台设备的CAN总线的接口芯片的管脚(CANL、CANH)分别连接总线的 CANL、CANH。
链路层规定了CAN总线的传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。总线上何时开始发送数据及何时开始接收数据,均在链路层里确定。位定时的一些普通功能也可以看作是链路层的一部分。
上述物理层、链路层的功能可直接由专门的CAN总线控制器来完成,CAN控制器的作用是在CAN协议中实现物理层和链路层协议。
一方面,CAN总线控制器通过收发器(驱动器)与物理总线连接。典型的总线是双绞线,总线末端均连接120Ω的匹配电阻。医监主机选用的CAN收发器为Philips公司的PCA82C250,该芯片完全兼容ISO11898,传输位速率在1Mbps以上,具有很强的抗电磁干扰的能力,驱动能力很强,最多可驱动110个以上的节点。
另一方面,CAN总线控制器提供与微处理器的接口。通过编程,CPU可以设置其工作方式,控制其工作状态,进行数据的发送和接收,在其上实现应用层传输协议。目前一些知名的半导体厂家都生产CAN控制器芯片,类型有两种,一种是独立的CAN控制器芯片,如Intel公司的82527,Philips公司的SJA1000等;另一种是集成在微处理器之中,如TI公司 2407、2812等 DSP芯片,Cgnal公司 C8051F040系列等。根据系统硬件设计的需要进行选取,医监主机选用的就是Intel公司的82527独立CAN控制器,通过并行总线与CPU接口,借助CPU的极小开销完成报文的发送和接收、报文滤波、中断扫描等。
CAN总线帧格式分为数据帧、远程帧、超载帧。在医学信息管理网络总线通信中只使用数据帧。CAN 2.0规范中,数据帧有标准帧和扩展帧,本系统只使用标准帧。CAN标准数据帧由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、校验场、应答场、帧结束。数据帧格式见下表1所示:
表1 数据帧格式
帧起始标志数据帧和远程帧的起始,它由1个单独的“显性”(0)位构成。
仲裁场由标识符ID和远程发送请求RTR组成。标识符的长度为11bit,最高7bit(ID10~ID4)不能全为“隐性”(1);RTR 位在数据帧中为“显性”,在远程帧中为“隐性”。仲裁场决定了数据帧传输的优先级,较高优先级的标识符具有较低的二进制值。
控制场长度为6bit,包括1bit IDE位(识别符扩展位、显性)、1bit保留位 r0、4bit数据长度码 DLC3~DLC0表示数据场的字节数0~8。
数据场由数据帧中的发送数据组成,可以是0~8个Byte,每Byte包括8bit,首先发送MSB。
CRC场包括CRC序列,其后是CRC界定符。CRC是前面帧起始、仲裁场、控制场、数据场的循环冗余校验码,CRC界定符为一个单独的“隐形”位。
应答场由应答间隙和应答界定符两个隐性位组成。在应答场内,发送站发送两个隐性位,当接收器正确接收到有效报文,接收器就会在应答间隙期间,向发送器发送一“显性”位以示应答。应答界定符为一“隐形”位。帧结束由7bit隐性位组成。
应用层协议规定通信类别、数据包格式、收发规程等网络应用规则。CAN总线数据帧数据场中的数据表示通信过程中数据源地址传送至目的地址的有效数据。
3.2.1 标识符设计
CAN标准帧的帧标识符ID为11位长,可以分配给16-2032个外设,实际应用中节点数量有限,只应用其中部分位作站地址,其它位可作为优先级、数据类型等信息位使用。
医学信息管理网络中,11位帧标识符ID分成3部分,高3位表示优先级、中间5位表示站地址、低3位表示帧类型。
优先级只决定数据帧的优先级,而不决定站地址和数据包类型,在每次发送数据包过程中数据优先级保持不变。根据实时性要求不同数据包选择不同的优先级,如下表2所示:
表2 数据优先级
站地址表示节点的地址,确定数据链路层数据传输的对象,范围是0至31,CAN总线网络中每个节点的站地址必须是唯一的。医学信息网络中站地址的分配下文专门说明。
帧类型表示CAN总线数据包中数据帧的结构类型和通信节点之间的关系。医学信息网络中,该字段作为优先级字段的备份使用。
3.2.2 数据包传输协议
交会对接任务中,各医学外设向医监主机传输的航天员医学信息均是以数据包方式排列的,数据包的长度远远大于CAN总线数据帧的最大8字节长度,因此医学信息数据包必须按帧进行拆分。对于包长度小于等于8个字节的按单帧方式在医学信息网络上传送,大于8个字节的需要分成几个数据帧按多帧方式在网络上传送,必须严格按帧顺序传送到医学信息网络上。
如前所述,由于各医学外设与医监主机的连接关系是动态变化的,连接后的数据传输模式也不相同。因此应用层协议设计无法使用串行总线常用的定时通知的方式进行。同时考虑到CAN总线的特点,要尽量避免医监主机通知不在线外设的情况出现,因为该现象会引起出现CAN总线错误从而导致主节点状态逐渐向“主动错误”、“被动错误”、“主线关闭”方向转化,因此应用层协议设计必须在每个通信周期内提供一个需要进行数据传输的外设列表(简称数传列表)。
数传列表由在线医学外设协助,在医监主机节点生成,每个数据通信周期内,需要传输数据的医学外设向医监主机传输一2Byte的请求帧后,医监主机将其ID号加入到数传列表中,当所有需要传输数据的医学外设均发送完请求帧后,本周期内的数传列表也就生成了,医监主机就能在该周期内通知相应医学外设传输数据。
可见数传列表在本协议中的重要性,未发送数传请求帧或已发送但医监主机未收到数传请求帧的医学外设在网络中是不能发送医学数据的。因此,为了保证医学外设的数传请求帧及时、可靠的传输,避免优先级低的医学外设发送不出数传请求的情况出现,在协议设计时,采用静态时间分配的原则进行数传请求帧的发送,避免造成多主竞争冲突。
图2 应用层传输协议
最终生成的应用层传输协议如下图2所示:
每个通信周期开始,医监主机向CAN总线发送一帧广播帧,在线医学外设收到该广播帧后,进行相应延时,需要传输数据的医学外设向医监主机发送数传请求帧,无需传输数据的医学外设无需响应,所有响应均在每个通信周期前8ms内完成;8ms时间到,医监主机根据接收的数传请求帧,形成本通信周期内需要进行数据传输的医学外设数传列表;然后根据数传列表,发送数传通知帧,逐个通知需要传输数据的医学外设;医学外设收到数传通知帧后,向医监主机发送数据包;医监主机完成一个医学外设的数据接收后,再向下一个医学外设发送数传通知帧,该医学外设才向主机传送数据包;当最后一个医学外设数据包传输完成后,本通信周期内数据传输完毕。
医学信息网络中,各通信帧报文的主要内容如下:
广播帧报文ID高3位为 001,中间5位为医监主机站地址,低3位为001,帧长度为6,内容为6字节系统时间码。
上注帧报文ID高3位为010,中间5位为医监主机站地址,低3位为010,帧长度为8,内容为通过医监主机向某医学外设传输的专用系数。
请求帧报文ID高3位为011,中间5位为医学外设站地址,低3位为011,帧长度为1,内容为1字节外设状态遥测参数。
通知帧报文ID高3位为100,中间5位为医监主机站地址,低3位为100,帧长度为1,内容为1字节医学外设站标识,低5位为站地址,高3位保留。
数据帧报文ID高3位为101,中间5位为医学外设站地址,低3位为101,帧长度为8,内容为医学外设向医监主机发送的医学生理数据或医学检查数据。
站地址是各医学外设在数据通信过程中的节点代号,医学外设数据传输是通过数据帧来实现的,站地址占数据帧标识符的中间5位,全1地址作为广播站地址。各通信节点根据站地址设置屏蔽字,只接收与本通信节点有关的数据,包括广播数据。
4.1.1 分配原则
由于CAN总线控制器验收字和屏蔽字特殊的设置方式,使得对于接收自相关数据和广播数据的节点,从理论上还可以接收到其他站地址的数据。为避免此类节点的应用程序对非相关数据的处理,系统必须合理分配站地址。
假设所有节点均可接收自相关数据和广播数据,每个节点与其关联的站地址见下表3所示:
从表中可看出(不包括0和31)站地址的相关性,可分为4类:
① a类,自相关性最强的5个站地址(15、23、27、29、30),和其他节点不相关;
② b类,自相关性较强的10个站地址(7、11、13、14、19、21、22、25、26、28),分别和 a 类站地址中的两个站地址相关;
③ c类,自相关性较差的10个站地址(3、5、6、9、10、12、17、18、20、24),分别和 a、b 类站地址中的 6个站地址相关;
表3 地址间相关性
④ d 类,自相关性最差的 5个站地址(1、2、4、8、16),分别和a、b、c类站地址中的14个站地址相关。
因此,如果系统中接收广播的站点较多,如果大于5,就不能使用a类自相关性最强的5个站地址,如果大于10,就不能使用b类自相关性较强的10个站地址。
4.1.2 分配结果
如图1所示,当前任务中医学外设的节点数量为10,所以选用b类自相关性较强的10个站地址。同时将对数据实时性要求较高的医学外设站地址分配靠前,医学检查外设相对在后;医学检查外设中,将数据量较小的外设相对靠前,较大的靠后。基于上述考虑,医学信息管理网络中各医学外设站地址分配结果如下表4所示:
表4 站地址
医学信息管理网络设计中,为防止医学外设带电插拔,保证CAN总线医学信息管理网络数据通信的稳定、可靠,在医监主机内部对外部CAN接口医学外设电源的输入进行了控制,由医监主机通过采集外设开关电平信号来控制内部外设电源输出继电器的通断。
医监主机初始加电或复位时,软件初始化使医学外设电源统一关闭。在正常运行过程中定时查询每个医学外设的外设开关状态量。该状态量的使用情况如下:
①初始状态时,医学外设电缆与医监主机的接插件未连接时或虽已连接但医学外设开关处于关闭状态时,该端口外设开关状态量为高;
②当医学外设开关置于打开状态时,该端口外设开关信号与+5V信号回线短接,外设开关状态量为低,医监主机查询该状态量后打开该端口电源继电器开关,医学外设加电工作,该端口医学外设可与医监主机进行数据通信;
③当通信结束后,航天员关闭医学外设开关,此时该端口外设开关状态量由低变高,医监主机关闭该端口电源继电器开关。航天员此后可断开医学外设与医监主机之间电缆。
本文首次将CAN总线技术应用于载人航天任务中医监生理数据的传输,极大提高了在轨医监生理数据的传输可靠性;对前端医监及医学检查外设通过医学信息网络进行统一管理,不仅满足交会对接任务10个外设同时进行高速数据传输的要求,而且还可满足医学外设数量不断增加的需求,极大提高了医监系统的可扩充性;基于ID站地址和规范数据包的应用层网络传输协议的实现,淡化了软件实现对硬件系统的依赖性,提高了软件代码的可重用性;基于外设电源管理的热插拔技术的应用,成功解决了航天员使用过程中的即插即用问题。◇
[1]BOSCH.CAN Specification V2.0,1991.
[2]熊剑平,尤政,陆建华.微小卫星平台公共总线技术-CAN网络应用.航天器工程,2000,03.
[3]李孝同.小卫星星务管理技术.中国空间科学技术.2001.2.
[4]郭川生,潘明,于新业.基于CAN总线的汽车内部网络设计.信息技术,2008,04.
[5]千应庆,张伟军,王春香,等.基于 CAN总线的全自主移动车辆信息网络设计.上海航天,2010,02.