多优先级报文接发的制作方法

文档序号:6570113阅读:204来源:国知局
专利名称:多优先级报文接发的制作方法
技术领域
0002本公开涉及信息系统。
背景技术
100003某些系统在系统组件间传输具有各种重要等级的信息。更重 要的信息可以在处理中被给予更高的优先级。例如,在传统的机器人 辅助手术系统中,控制和反馈信号一般在处理中被给予更高的优先级。 其它的信号类型,诸如常规的系统状态消息,在处理中一般被给予较 低的优先级。系统一般适应低优先级信号的延迟。
10004在机器人辅助手术系统中使用的一个传统通讯系统使用数百 个路径(例如电线)以把外科医生的控制台连接到机器人手臂。使用 数百个路径允许对每一种信号类型的专用路径,该专用路径在设计时 适应特定信号。然而,对数百个路径的使用导致对系统的建造和维护 麻烦,而且需要可观的空间来布线所有的路径。
20

发明内容
0005在一方面,提供包含可编程处理器和第一数据缓冲器的系统, 该可编程处理器可操作为执行指令,该第一数据缓冲器耦连到该可编 程处理器。该可编程处理器响应指令,将第一优先级数据传送到第一 数据缓冲器。该第一数据缓冲器仅与该第一优先级数据一起使用。第
25二数据缓冲器与该可编程处理器耦连,而且该可编程处理器响应指令,
传送第二优先级数据到该第二数据缓冲器。该第二数据缓冲器仅与第
二优先级数据一起使用。该系统也包含数据链路和传输逻辑,该传输 逻辑与第一缓冲器和第二缓冲器耦连而且耦连到该数据链路。该传输
逻辑依照消息/报文接发协议(massaging protocal)通过数据链路优先
于第二优先级数据传输第一优先级数据。
0006特定的实施方式可包含一个或多于一个下面的特征。第一优 先级数据可以含有用来控制机器人手臂的运动的命令,以及第二优先 级数据可以包含非关键的状态信息和错误日志信息中的至少一个。第 5三数据缓冲器可以被耦连到可编程处理器。该可编程处理器可以响应 指令,而传送第三优先级数据到第三数据缓冲器,以及该第三数据缓 冲器可以仅与第三优先级数据一起使用。第一优先级数据可以是高优 先级数据,第二优先级数据可以是低优先级数据,以及第三优先级可 以是中优先级数据。
100007消息接发协议可以要求传输逻辑优先于来自第二数据缓冲器
的第二优先级数据,传输来自于第一数据缓冲器的第一优先级数据。 消息接发协议可以要求传输逻辑优先于来自第三数据缓冲器的第三优 先级数据,传输来自第一数据缓冲器的第一优先级数据。消息接发协 议可以要求传输逻辑优先于来自第二数据缓冲器的第二优先级数据, 15传输来自第三数据缓冲器的第三优先级数据。优先于第二优先级数据
传输第一优先级数据可以包含先于任何可用的第二优先级数据传输 任何可用的第一优先级数据。优先于第二优先级数据传输第一优先级 数据可以包含相比于可用的第二优先级数据,分配给可用的第一优
先级数据较多的传输时隙(transmit slot)。可编程处理器可以包含传 20输逻辑。
0008在另一方面,提供包含产生第一优先级数据和第二优先级数 据的方法和计算机程序产品。该第一优先级数据被放置在第一数据缓 冲器中,并且第一数据缓冲器仅与第一优先级数据一起使用。该第二 优先级数据被放置在第二数据缓冲器中,并且第二数据缓冲器仅与第 25 二优先级数据一起使用。通过数据链路从第一数据缓冲器和第二数据 缓冲器传输第一优先级数据和第二优先级数据。第一优先级数据比第 二优先级数据优先传输。
0009特定的实施方式可含有一个或多于一个下面的特征。第三优 先级数据可以被生成,其中第一优先级数据是高优先级数据、第二优 30先级数据是低优先级数据以及第三优先级数据是中优先级数据。第三 优先级数据可以被放置在第三数据缓冲器中,并且第三数据缓冲器仅与第三优先级数据一起使用。可以通过数据链路传输来自第三数据缓 冲器的第三优先级数据。第一优先级数据可以优先于第三优先级数据 而被传输,并且第三优先级数据可以优先于第二优先级数据而被传输。 消息接发协议可以被识别,并且优先传输可以包括依照该消息接发协 5议优先传输。优先于第二优先级数据传输第一优先级数据可以包含 先于任何可用的第二优先级数据传输任何可用的第一优先级数据。优 先于第二优先级数据传输第一优先级数据可以包含相比于可用的第二 优先级数据,分配较多的传输时隙给可用的第一优先级数据。第一优 先级数据可以包含时间一关键消息。第二优先级数据可以包含非关键
10的状态信息和错误日志信息中的至少一个。
0010特定的实施方式可以被实施以实现下面优点的一个或多于一 个。被分配给不同的优先级层级的多个独立的数据流可以通过使用点 对点串行连接在整个系统内被传输。相同的消息接发协议可以被用于 系统中具有不同的类型和速度的多个通信链路。
10011本发明的一个或多于一个实施例的细节将通过附图和下面的 描述阐明。本发明的其它的特征、方面和优点从描述、附图和权利要 求书中将变得明显。


0012图1A是系统的框图,该系统包含由链路连接的多个节点。 200013图1B是单个节点的框图。
0014图1C是在节点处执行的传输过程的流程图。
0015图2是硬件层级数据包的结构图。
0016图3是节点间的包传输的时序图。
0017图4是差错恢复方案的时序图。 20018图5是差错恢复方案的时序图。
0019图6是节点处执行的过程的流程图。
0020图7是消息/报文的结构图。
0021图8是消息的结构图。
0022在多个附图中相似的参考数字和命名表示相似的元件。 30
具体实施例方式
0023描述了一种用于在系统中进行数据消息通信的方法和架构(包 含数据结构),该方法和架构允许具有不同优先级的消息/报文通过两 个系统节点间的单个的串行通路被传输。节点可包含,例如,计算机、 可编程处理器、现场可编程门阵列(FPGA)或其它数据处理装置。可 5以使用任何合适的链路层传输该数据消息(例如软件消息)。在本申 请中,描述在两个节点间传输基本连续的全双工串行数据流的实施方 式。该数据消息/报文被分成一个或多于一个段,这些段的每一个在固 定长度的硬件层级包中被传输。在本申请中,该数据消息一般被简单 地称为"消息/报文"。
100024不管是否消息数据是否可用来传输,该固定长度的包连续地 在两个节点间传输。当没有数据可用来传输时,包的数据字段可被"填 充"数据所填充,该"填充"数据可在接收节点处被丢弃。被发送的 包包含对先前所接收的包的应答,发送节点会发送第一个包,并且在 接收来自接收节点的对该第一个包的应答之前开始发送至少一个后续
15包。在节点处对包的发送和接收是互锁的,这将在下面进行更详细的 阐述。
0025如图1A所示,通过在串行链路上多路复用数据,来自第一节 点110的消息数据/报文数据可被发送到多个目标节点,例如,第二节点 120、第三节点130和第四节点140。第一节点110和特定的目标节点之
20间的节点可以路由该数据。第一节点110可以通过第一链路125传输发 往第二节点120的数据。第一节点110也可通过第一链路125将发往第三 节点130的数据传输到第二节点120,第二节点120可以通过第二链路 135路由该数据到第三节点130。类似地,第一节点110可以通过第一链 路125传输发往第四节点140的数据,第二节点120可以通过第三链路
25 145路由该数据到第四节点140。
0026在一个实施方式中,在被发送的消息数据中可以控制对目标 节点的指定。在该实施方式中,在发送含有部分消息的硬件层级包到 目标节点之前,第二节点120—般处理从第一节点110发送的消息的至 少一部分。如果第二节点120本身是目标节点,那么该消息无须再进一
30步被传输。
0027在一些系统中,第一节点110和第三节点130以及第一节点110
和第四节点140之间的通信相对于第三节点130和第四节点140之间的 通信发生得更频繁。在这样的系统中,第一链路125相对于第二链路135 或第三链路145可以是更高速的链路,以对通过第一链路125传输更大
量的数据提供足够的容量。 0028节点IIO、 120、 130和140可包含一个或多于一个硬件数据缓 冲器152—164,该硬件数据缓冲器接收消息且一直保存消息,直到在 各自的节点上或在与各自的节点通信的数据处理装置上执行的软件准 备好接收该消息。该硬件数据缓冲区152—164也可以从与各自的节点 关联的软件程序处接收消息并且保存该消息,直到该节点准备好发送 io 该消息。
0029如图1B所示,节点170的一个实施方式包含消息管理器174、 发送/接收逻辑178、发送缓冲器182和接收缓冲器184。该发送缓冲器182 和接收缓冲器184的每一个被分为多个部分,这些部分被指定给消息的 不同优先级(例如,分别创建不同的发送缓冲器182 — 1、 182—2、 182 15 —3和接收缓冲器184—1、 184—2、 184 — 3),其将在下文解释。在一 个实施方式中,提供多个发送缓冲器182,并为每一个优先级提供一个 或多于一个发送缓冲器182的。为了下面讨论的目的,参考含有多个发 送缓冲器和接收缓冲器的实施方式。其它的配置是可能的。每个缓冲 器可单独地寻址,这样消息管理器174和发送/接收逻辑178可以将字节
20放置到任何缓冲器中或者从任何缓冲器中读取字节,而不受其它缓冲 器影响。
0030消息管理器174可以将消息或部分消息放置到发送缓冲器182 —1、 181 — 1和182 — 3中的任何一个中。在一个实施方式中,消息管理 器174将高优先级消息放置在高优先级发送缓冲器182—l中,将中优先
25级消息放置在中优先级发送缓冲器182—2中,并将低优先级消息放置 在低优先级发送缓冲器182 — 3中。尽管在该例子中示出三个优先级层 级,但是更少(例如2个)或更多的优先级层级可以由系统分配和处理。0031发送/接收逻辑178依照消息接发协议从发送缓冲器182通过串 行链路186发送消息或部分消息。该消息接发协议可以为不同的优先级
30层级的消息(例如,基于该消息被分配的缓冲器)提供规定的服务质 量而在对应的节点间创建通信通道。在一个实施方式中,每个通道具
有不同的优先级层级。 一旦足够的数据被写入到缓冲器而填满硬件层 级包,发送/接收逻辑178可以自动发送部分消息。这就是说,当数据可 用时,消息传输可被执行而无须等到整个消息被写入到缓冲器。
0032可以实施该消息接发协议以提供可选择的(例如用户或其它
5定义的)服务质量。在一个实施方式中,当具有不同优先级的消息可
用于发送时(例如消息存在于高优先级发送缓冲器182—1和中优先级 发送缓冲器182—2中时),发送/接收逻辑178优先于其它较低优先级消 息发送最高优先级消息或部分消息。例如,发送/接收逻辑178在发送来 自中优先级182 — 2或低优先级182 — 3的消息或部分消息之前,发送来 10自高优先级发送缓冲器182 — 1的消息。类似地,来自中优先级发送缓 冲器182—2的消息或部分消息先于存储在低优先级发送缓冲器182 — 3 的消息而被发送。
0033在另一个实施方式中,发送/接收逻辑178可以实施复用消息的 消息接发协议。在该实施方式中,发送/接收逻辑178限定用于在节点间 15传输的时隙(slot)。该传输时隙可以依照规定的服务质量被填充。例 如,在髙优先级发送缓冲器182 — 1中的可用消息或部分消息相比于在 中优先级发送缓冲器182 — 2或低优先级发送缓冲器182 — 3中的可用的 消息或部分消息,可以被分派更多的传输时隙。
0034在另一个实施方式中,发送/接收逻辑178可以实施以循环方式 20服务(例如发送)发送缓冲器182中可用的消息或部分消息的消息接发 协议,但是,相比于中优先级缓冲器(例如,2个)或低优先级缓冲器 (例如,l个),提供更多高优先级发送缓冲器(例如,4个)。0035发送/接收逻辑178也从串行链路186处接收消息或部分消息, 并且放置该消息或部分消息到接收缓冲器184中的适当的缓冲器中。发 25送/接收逻辑178使用通过串行链路186 (在下面阐述)传输的硬件层级 包中的通道指示,来判断给定消息或部分消息所属的优先级层级。在 一个实施方式中,发送/接收逻辑178将接收到的消息传给消息管理器 174而没有使用接收缓冲器184。在替代性实施方式中,接收到的消息 没有根据在接收缓冲器184中的优先级而被分隔。 300036消息管理器174和发送/接收逻辑178的每一个可以是计算机、 可编程处理器、FPGA、引擎或者其它数据处理装置。尽管消息管理器174和发送/接收逻辑178被图解说明为分离的部件,但它们可以被组合 为单个部件。发送/接收逻辑178也可以被分为分离的发送或接收逻辑单元。
0037发送缓冲器182和接收缓冲器184可以是先入先出(FIFO)的 5数据缓冲器或者可以是带有读和写指针的循环缓冲器。发送缓冲器182 和接收缓冲器184的每一个可以在分立的设备(例如,分立的集成电路)
上被实施或可以在单个设备的部分上被实施。在一个实施方式中,包 含缓冲器在内的节点170的所有的部件被实施在单个FPGA中。0038图1C示出用于发送具有不同优先级的消息的过程102。在该示
10例中,包括三个消息优先级高优先级消息、中优先级消息和低优先 级消息。作为初始步骤,要发送的消息(例如,通过在图1B中的消息 管理器174上运行的软件)被识别和分类(步骤190)。根据类型,该 消息被放置在相应的发送缓冲器中(步骤192),高优先级消息放置在 高优先级发送缓冲器中,中优先级消息放置在中优先级发送缓冲器中,
15而低优先级消息放置在低优先级发送缓冲器中。识别消息接发协议(例 如,发送/接收逻辑178为每个消息类型确定服务质量(步骤193))。 然后,依照识别的消息接发协议(例如高优先级消息优先于中优先级 消息和低优先级消息被发送(步骤194),以及中优先级消息优先于低 优先级消息被发送(步骤196)),该消息(例如,通过发送/接收逻辑
20 178)被发送。消息可以被优先发送的可能的方式在关于发送/接收逻辑 178的上下文中被讨论。
0039如图2所示, 一个实施方式的固定长度的包200可包括多个字 节201—240。虽然示出的是40字节的包,该固定长度的包可以是其它 长度。在示出的实施方式中,控制信息被置于40字节的8个字节中,并
25且数据被置于剩下的32字节中。第一字节201是同步字段,其可被用于 在接收包的节点处保持字节帧结构。附加的同步字节可被周期性地添 加到包上(例如每128字节一次),以补偿节点间的时钟漂移。第二字 节202是应答字段,其指示发送包200的节点所接收的上一个包是否被 正确地接收(例如包括有效差错校验信息)。第二字节202可被设置为
30用于指示上一个包被正确接收的肯定应答(ACK)的一个值(例如 OxAC),以及被设置为用于指示上一个包没有被正确接收(否定应答,
或NAK)的相反值(例如0x53)。在一个实施方式中,任何异于该肯 定应答值的值都可被解释为否定应答。在该实施方式中,如果NAK值 是ACK值的相反值,则需要8位差错来将被传输的NAK转换成为ACK。0040第三字节203是响应字段,其含有多个控制位,诸如指示系统 5处于诊断测试模式的测试模式位,和多个消息通道(例如低优先级、 中优先级和高优先级通道)中的每一个消息通道的XOFF位。控制位也 可以包含重发位,当其被置位时指示包200是较早的包的重发。 一个或 多于一个控制位也可以是故障位,其指示在系统中发生了错误。0041第四字节204是头字段。头字段可以包含多个子字段,诸如通
10道选择子字段和命令子字段。所述通道选择子字段用于指示在哪个优 先级通道中发送包200中的数据。命令子字段可以包含用于刷新缓冲器 和重启消息流的指令。命令子字段可以包含请求通过硬件通道发送的 特定数据的指令或识别这种数据的代码。该命令子字段也可以被用来 同步系统。例如,在同步循环的开始,可以发送含有同步命令的包,
15使系统中的子系统保持同步(例如,在10毫秒内)。第五字节205是顺 序号字段,其含有可被接收节点用来检测传输差错的硬件层级包顺序 号。第六字节206到第37字节237属于数据字段,其包含32字节数据, 诸如消息或部分消息。
0042第38字节238是包结束字段,其可以指定数据字段中对应于消 20息的字节数量,和填充字节的字节数量。该包结束字段也可以包含消 息结束指示位,其在数据字段中的字节结束消息时被置位。该消息结 束指示位可以在接收节点处触发中断。第39字节239和第40字节240是 差错校验字段的一部分,在一个实施方式中,其可含有16位CRC (循 环冗余校验)值(例如使用CCITT 16位CRC算法来计算)。当节点接 25收包时,该节点可以使用差错校验字段来判断在所述包被发送或被接 收时是否发生了错误。
0043包200的结构允许指示节点中故障的故障反应逻辑(FRL)信 号以多种方式来通信。例如,FRL信号可以在包控制信息(例如在包200 的响应字段的控制位中)和/或在消息中被传输。直接在包控制信息中 30传输FRL信号允许故障信息在系统范围内被非常迅速地传输,并且在很 低的层级被处理。系统范围的故障信号可以在没有软件介入的情况下
被传播,并且故障反应硬件可以在故障信号被接收时将系统置于安全 状态。 一旦导致该故障的问题已被解决(例如,通过人类操作员的介 入),该故障信号可被清除,并且所述系统可以返回到操作状态。当
所述故障信号被清除时,指示故障的FRL信号直到另一个故障发生之前 5 —般不会在包控制信息中传输。冗余的FRL信号可以在高优先级消息和 中优先级消息中被传输。
0044被描述的硬件包结构允许在单个通道上或在串行链路上多路 复用的多个通道上发送消息。特定的消息在哪个通道上被发送由包200 中的通道选择子字段来指示。时间一关键(time —critical)消息可在高 10优先级通道上被传输,而相对不重要的消息可在低优先级通道上被传 输。
0045在其中传输具有不同优先级层级的消息是有利的系统的例子 是机器人辅助手术系统。这种系统可包含持有手术器械或设备(诸如 腹腔镜、内窥镜、灯、照相机和吹入器)的多个机器人手臂,其中的
15 —些可以在病人体内。该机器人手臂一般由坐在控制台处的外科医生 远程地操纵。外科医生操作的控制与控制该机器人手臂的节点之间的 通信可以使用本公开中描述的方法、系统和装置。来自外科医生的用 于控制机器人手臂运动的命令一般在高优先级通道上被传输,这样在 命令的发布和产生运动之间的时延被最小化。来自机器人手臂的响应
20 (例如,来自于在手臂上的传感器的手臂的实际运动的测量)也可以 在高优先级通道上传输,以允许手臂对命令的响应的迅速反馈。异步 系统消息,诸如非关键的状态信息和差错日志信息可以在中优先级通 道或低优先级通道上被传输。
0046在第三字节203中的XOFF位控制通道中的数据流。每个节点 25可以包括多个硬件缓冲器,这些硬件缓冲器接收在多个通道的相应一 个通道上发送的消息。例如,高优先级消息被存储在高优先级缓冲器 上,而低优先级消息被存储在低优先级缓冲器上。当发送包200的第一 节点置位包200中的XOFF位时,该第一节点指示接收包200的第二节点 停止在相应的数据通道上发送数据到第一节点。例如,当第一节点放 30置来自该数据通道的消息的缓冲器变满时,第一节点的硬件可以自动 地置位数据通道的XOFF位。在一个实施方式中,节点何时置位给定通
道XOFF位的阈值被设置为等于节点中相应通道的接收缓冲器的大小
(例如512字)减去32个字(4个包)。该32个字的余量范围给予接收 节点时间来接收和处理带有误差的余量范围的XOFF信号。其它阈值水 平是可能的。当大量(例如12)消息位于接收缓冲器时,第一节点的 5硬件也可以置位数据通道的XOFF位。 一旦从缓冲器移除包或消息,硬 件可以自动地清除数据通道的XOFF位。每一个优先级通道可以在节点 中具有相应的接收缓冲器。因为XOFF位在每个包中被传输,差错校验 字段施加于XOFF位并且防止对XOFF位的破坏。0047通信的多个通道可以通过使用上述的通道选择子字段而在链
10路层可用。例如,硬件通道、高优先级通道、中优先级通道和低优先 级通道可以被实现。消息的长度可变(例如在3字和128字之间),并 且可根据消息的长度,在一个或多于一个包中被发送。系统硬件可以 在发送节点处将消息分段为多个包,并且在接收节点处重组消息。如 果消息没有填满包的数据部分,则填充数据可被插入到数据部分的剩
15余部分。消息的发送和接收缓冲器可以在硬件中被实施。例如,节点 可包含每个通道(例如,高优先级通道、中优先级通道和低优先级通 道)的硬件发送和接收缓冲器。在一个实施方式中,通道的发送和接 收缓冲器是最大消息大小的1.5倍。
0048图3示出使用诸如在图2的上下文中讨论的那些包在两个节点 20之间通信的概念性的时序图。包301—304从主节点顺序地发送到次节 点。包311 — 314在次节点被接收,并且对应于包301—304,虽然在发 生传输错误的情况下,包311—314可能是相应的包301—304的损坏形 式。由于包沿着链路的有限的传播时间,对包311—314的接收在时间 上相对于包301—304的发送被延迟。在图3示出的例子中,包的传播时 25间小于包的持续时间(主节点发送包所需要的时间总量)。
0049次节点将包355 — 358发送到主节点。包365 — 368在延迟后在 主节点处被接收,并且对应于包355 — 358。包356包含施加于包301的 应答字段。如果包311 (其对应于包301)在次节点处被正确地接收, 则包356包含对包301的ACK。如果包31 l没有被正确地接收,则包356 30包含NAK。包357包含对应于包302的应答字段。类似地,包303包含指 示包365是否在主节点处被正确地接收的应答字段,并且包304包含对
包366的应答字段。
0050在一个实施方式中,次节点直到从主节点接收到第一应答字 段之后才开始发送包。例如,次节点直到其接收到包311中的应答字段 之后才开始发送包355。为便于在主节点和次节点之间的初始同步,在 5主节点发送包301之前,两个节点可以相互发送多个顺序的同步字节。0051图3图解说明在主节点和次节点之间的两个包"流水线"的例 子。包356含有对包301的应答字段。如果该应答字段含有ACK,则主 节点发送包303。然而如果包356的应答字段含有NAK,则主节点可以 对包301和302进行再成帧(reframe)和重发包301和302。在这个实施
10方式中,当接收到两个包中的第一个包的NAK时,两个包被重发,以 便再同步系统。如果没有正确地接收到两个包中的第一个包,则可以 重发第二个包,而无须检査第二个包是否在其第一次被传输时被正确 地接收。在第一个包中的差错是由在两个节点之间的同步丢失而导致 的情况下,第二个包可能含有差错,所以第二个包被先占性地重发。
5发送NAK的节点也会重发在发送NAK之前它发送的最后两个包。图3 被描述为在主节点和次节点之间的两个包流水线,这是因为仅在另一 个包被发送之后才接收对给定包的应答字段。在主节点和次节点之间 的往返时间等于或稍小于发送一个包所需的时间,这就是说,主节点 在它停止发送包301之前开始接收包365。该往返时间一般取决于链路
20上的传输延迟和节点处的处理时间。更长的往返时间(绝对时间更长 或相对于包持续时间较长)也可被用在系统中,并且导致比两个包更 深的流水线。
0052包在主节点和次节点之间基本连续地传输,不管有无消息被 放置在包的数据字段内。如图3所示,包被以互锁的方式传输。固定长 25度包的互锁传输引起在节点处被接收的包和在此节点处被发送的包之 间的固定的相位偏移。在发送先前发送的包之后的预定时间量,节点 从远程节点接收含有对先前发送的包的无错接收的肯定应答的包。互 锁包的连续传输容许节点之间精确同步的高带宽、低时延的通信。此 夕卜,包的连续传输容许系统精确地和基本连续地计算在节点之间的连 30接的误码率(BER)。
0053如图4所示,当次节点接收来自于主节点的包411并且判断导
致包411中的数据被毁坏的传输错误发生过,该次节点停止发送包,而
不是发送下一个包,次节点将NAK和再成帧(reframing)序列456发送 到主节点。该再成帧序列456被发送,以重建在主节点和次节点之间的 同步,因为包411可能已被毁坏的一个原因是在主节点和次节点之间的 5同步可能已被削弱或丢失。该再成帧序列可以包括交替同步字段和链 路字段,其中该链路字段可以是预定的代码(例如0xA3)。在一个实 施方式中,在节点被认为要被再成帧之前,必须接收四个链路字节。 主节点接收NAK和再成帧序列466,并且发送再成帧序列403。在主节 点已发送再成帧序列403之后,该主节点重发送在接收NAK之前被发送 10的最后的几个包。在N个包流水线的情况下,最后的N个包被重发送。 一旦次节点接收到第一重发的包414中的ACK,该次节点也开始重发 包。
0054如图5所示,当主节点接收到来自于次节点的包565,并且判 断发生了导致包565中的数据被毁坏的传输错误时,该主节点将NAK和 15再成帧序列503发送到次节点。该次节点接收NAK和再成帧序列513, 并且发送再成帧序列557。在主节点已发送NAK和再成帧序列503之后,
该主节点重发送在接收到被毁坏的包之前发送的最后的几个包。 一旦 次节点接收到第一重发的包514中的ACK时,该次节点也开始重发包。0055差错计数器可以跟踪发生在节点中的硬件传输错误的数量。
20当计数器达到阈值时,中断可被开启。在一个实施方式中,该差错计 数器可以被节点中的软件读取,并且该软件可以设置中断阈值。差错 检测和校正可以在该系统中很低的层级中处理,并且在所描述的链路 层之上运行的软件层不需要实现附加的差错检测和校正。0056图6图解说明在一个实施方式中在节点处执行的过程600。该
25节点开始接收第一个包(步骤610),并且接收第一个包中的应答字段 (步骤615)。该节点判断该应答字段是ACK还是NAK (步骤620)。 如果该应答字段是NAK,则该节点发送再成帧序列(步骤625),并且 重发接收到的NAK所对应的包以及在该包之后被发送的任何包(步骤 630)。如果该应答字段是ACK,则该节点开始发送第二个包(步骤635),
30并且例如,通过检验包中的CRC值,来检测第一个包的差错(步骤640)。 如果在第一个包中检测到差错,该节点停止发送第二个包(步骤645),
并且发送NAK和再成帧序列(步骤650)。
0057如果没有在第一个包中检测到差错,该节点判断在第一个包 中的故障位是否被置位(步骤655)。如果故障位被置位,则该节点被 置于故障模式或安全状态(步骤660)。如果故障位没有被置位,或者 5 —旦该节点被置于故障模式,则该节点停止发送第二个包(步骤665), 并且开始发送第三包(步骤670)。
0058图7示出可以通过在图2 —图6描述的链路层传输的消息700, 该链路层用于系统中节点间的通信。消息700也可以通过其它的连接传 输,诸如USB、 RS-232或者IEEE 802.3 (以太网)。同样的消息700可
10以通过各种类型的连接传输,消息700适当地被包裹在特定连接的包装 中。例如,在包200 (图2)的第六字节206到第三十七字节237中传输 的消息是被包裹在包装中的消息700,其将在图8的上下文中进行阐述。 因为消息700在整个系统使用共有的格式,因此消息700可以被传输到 系统中的任何节点而无须转换。
10059消息700包含多字节701—708。消息700的开头的六个字节701 一706构成头,最后的字节707 —708构成消息体。最后的字节707 — 708 中的消息体的长度可以变化(字节707和字节708之间的字节未示出)。 头的第一字节701包含随后字节的校验和字段。第二字节702包含命令 字段,该命令字段可以包含,例如,同步命令或配置检测命令。节点
20可以响应另一个节点发出的命令(例如,报告命令的执行状态),而 且命令字段可以包含响应位。响应节点可以设置响应消息中的命令字 段的响应位,该响应消息要发送到发出命令的节点。该响应位指示此 消息是对命令的响应而且不含有新的命令。
0060消息700的第三字节703包含源字段,该源字段指示发送消息 25 700的节点。第四字节704包含目的字段,该目的字段指示消息700应发 送到的节点(或多个节点)。第五节点705包含状态字段。当发送响应 消息时,响应节点可以在状态字段中包含关于命令的执行的信息(例 如,指示成功或失败)。第六字段706包含长度字段,该长度字段指示 消息700的主体的长度。 300061如图8所示,使用上述的链路层传输的消息800包含多个字节 801—810。开头的四个字节801 — 804构成头,最后的四个字节807 — 810
构成尾,以及中间字节805 — 806构成主体,该主体含有消息700(图7)。 头的第一字节801包含长度字段,该长度字段指示消息的主体的长度。 头的第二字节802包含说明消息类型的类型字段。头的第三字节803包 含源字段,该源字段指示发送消息800的节点。头的第四字节804包含 5目的字段,该目的字段指示消息800应发送到的节点(或多个节点)。0062中间字节805 — 806的长度可以变化(字节805和字节806之间 的字节未示出)而且含有消息700 (图7)。尾的第一字节807可以是为 将来使用而保留的填充字节。尾的第二字节808可以是顺序号字段。尾 的第三字节和第四字节809-810可以是消息800的头和主体的校验和字 io 段0
0063尾的第二字节808中的顺序号字段可以包含消息800的顺序号, 该顺序号指定消息800要在其上传输的优先级通道。这就是说,系统可
以独立于其它优先级通道为给定优先级通道上传输的消息分配顺序 号。该顺序号也可以依赖形成和开始消息800的传输的节点。这样,系
15统中的每一个节点可以对在该节点上的每一个优先级通道具有不同的 开始顺序号。在消息从特定的节点在特定的优先级通道上被成功地发 送之后,给定节点和优先级通道的顺序号递增。
0064尾的第三字节和第三字节809 — 810中的校验和字段可以是头 和主体中的字节的总和。该校验和字段可以用来检测消息800中的差 20错。为了更强健的差错检测,消息800的主体也可以包含CRC校验和。
0065当系统加电时,主节点(例如机器人辅助手术系统中的外科 医生的控制台处)中的软件可以为系统中的每一个节点分配节点标识 符(ID),该节点标识符用于在消息800的源字段和目的字段中识别相
应的节点。 一个或多于一个特殊的标识符可以被保留,并且用来识别 25在目的字段中包含该特殊的标识符的消息是否要被广播到多个节点。0066主节点中的软件可以査询系统中的其它节点,以确定其它节 点在运行的软件的版本。如果系统中的节点在运行未预料的软件版本 (例如,该版本与主节点的版本不匹配或与存储在主控制器中所要求 的版本消息不匹配),则故障被触发,并且系统的节点可以被置于安 30全状态,直到操作员在该节点上装载了软件的正确版本或者用安装有 正确版本的软件的不同节点替代该节点。
0067当系统中发生故障时,该故障的原因一般被存储在故障发生 所在的节点上的错误日志中。故障原因的信息一般地也被发送到主节 点,以便被记录在该处。
0068在一个实施方式中,节点可以包含使用上述的链路层通信的 5端口,通用串行总线USB端口、 RS-232端口和以太网端口。 一些或全 部的端口可以用来与其它节点通信,以及一些或全部的端口可以用来 连接测试或更新系统的装备。当测试或更新系统的装备与端口连接时, 系统可能要求该装备提供安全密码。
0069消息可以用于系统维护和更新。例如,消息可以被用来从一 10个节点或从与多个节点中的一个节点耦连的更新装备(例如膝上型电 脑)发送软件更新到另一个节点。耦连到节点的诊断或更新装备可以 与该节点通信,并且也可以通过使用该设备连接到其上的节点来转发 消息到期望的节点(例如,通过在消息800的目的字段中指定期望的节 点),来与系统中的其它节点通信。在整个系统中对消息700使用共有 15格式允许诊断或更新装备以直接一转发的方式与系统中的任何节点通 信。
0070本发明的实施例和在本说明书中描述的所有功能性的操作可 被实施在数字电子电路中,或在计算机软件、固件或硬件中,其包含 本说明书中公开的结构和它们的结构等价物,或被实施在它们中一个 20或多于一个的组合中。
本发明的实施例可被实施为一个或多于一个计算机程序产品,即 在计算机可读介质上编码的一个或多于一个计算机程序指令模块,用 以由数据处理装置执行或用于控制数据处理装置的操作。所述计算机 可读介质可以是机器可读的存储设备、机器可读的存储衬底、存储器
25设备、影响机器可读传播信号的物质的合成,或者它们中的一个或多
于一个的组合。术语"数据处理装置"包含所有用于处理数据的装置、 设备和机器,例如包括,可编程处理器、计算机或多处理器或计算机。 除了硬件之外,所述装置还可以包含为所讨论的计算机程序创建执行 环境的代码,例如组成处理器固件、协议栈、数据库管理系统、操作
30系统或它们中的一个或多于一个的组合的代码。传播信号是人工生成 的信号,例如机器生成的电子的、光学的或电磁的信号,该信号被生
成以编码要被发送到合适的接收装置的信息。
0071计算机程序(也被称为程序、软件、软件应用、脚本或代码) 可以用包括编译语言或解释性语言的任何形式的编程语言来编写,并 且计算机程序可以任何形式来部署,包含作为独立程序或作为模块、 5组件、子程序或适合在计算环境中使用的其它单元。计算机程序不必 对应于文件系统中的文件。程序可被存储在保存其它程序或数据的文 件(例如,存储在标记语言文档中的一个或多于一个脚本)的一部分 之中,存储在所讨论的程序专用的单个文件中,或存储在多协调文件 (例如,存储一个或多于一个模块、子程序或部分代码的文件)中。 10计算机程序可被部署,从而在一台计算机上或在位于一个地点或分布 在多个地点而被通信网络相互连接的多台计算机上被执行。
0072在本说明书中描述的处理和逻辑流程可以由执行一个或多于
一个计算机程序的一个或多于一个可编程处理器来实现,从而通过操 作输入数据和生成输出来实现功能。该处理和逻辑流程也可由专用逻 15辑电路实现,并且装置也可被实现为专用逻辑电路,该专用逻辑电路
例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。0073适合执行计算机程序的处理器包括,例如,通用微处理器和 专用微处理器,以及任何种类的数字计算机的任何一个或多于一个处 理器。 一般地,处理器会从只读存储器或随机存取存储器或两者中接
20收指令和数据。计算机的主要元件是执行指令的处理器和用于存储指 令和数据的一个或多于一个存储器设备。 一般地,计算机也可包括, 或可操作地被耦连用以从其中接收数据或发送数据到其上的、或既接 收又发送数据到其上的、用于存储数据的一个或多于一个海量存储器 设备,例如磁盘、磁光盘或光盘。然而,计算机不必具有这种设备。
25此外,计算机可被嵌入到另外的设备中,例如移动电话、个人数字助 理(PDA)、移动音乐播放器、全球定位系统(GPS)接收器,仅试举 几例。适合存储计算机程序指令和数据的计算机可读介质包含所有形 式的非易失性存储器、介质和存储器设备,例如包括半导体存储器设 备,例如EPROM、 EEPROM和闪速存储器设备;磁盘,例如内部硬盘
30或可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。该处理器和存储 器可由专用逻辑电路补充或被合并到专用逻辑电路中。
0074为提供与用户的交互,本发明的实施例可以在计算机上被实 施,该计算机具有显示设备,例如CRT (阴极射线管)或LCD (液晶 显示器)监控器,用以给用户显示信息,并且具有用户可以对计算机 提供输入的键盘或点击设备,例如鼠标或轨迹球。也可使用其它类型 5的设备来提供与用户的交互;例如提供给用户的反馈可以是任何形式 的传感器反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且来自用 户的输入可以任何形式接收,包括声学输入、语音输入或触觉输入。0075虽然本说明书含有很多细节,它们不应构成对本发明范围的 或要求保护的范围的限制,而是对本发明的特定实施例的具体的特性
10描述。在本说明书中的以不同的(多个)实施例的方式描述的特定的 特征也可以在单个的实施例的组合中实施。相反地,以单个的实施例 方式描述的各种特征也可以在多个实施例中分别实施,或者在任何合 适的子组合中实施。此外,尽管特征可能在前面被描述为特定组合甚 至起初这样被要求保护,要求保护的组合中的一个或多于一个特征在
15 —些情况下可从该组合中被去除,且该要求保护的组合可能会是子组 合或子组合的变体。
0076类似地,虽然在附图中以特定的顺序对操作进行描述,但这 不应被理解为,要求以示出的特定的顺序或以相继的顺序来执行这种 操作,或者要求执行所有图解说明的操作,以实现所需的结果。在特 20定的状况下,多任务和并行处理可能是有利的。此外,在上述的实施 例中的各种系统组件的分隔不应理解为在所有的实施例中都要求这种 分隔,其应被理解为描述的程序组件和系统可以一般地在单独的软件 产品中被集成到一起或打包为多软件产品。
0077因此,本发明的特定的实施例已被阐述。其它的实施例在权 25利要求的范围内。例如,在权利要求中描述的动作可以不同的顺序被 执行,并且仍然实现所需结果。上述的方法、系统和装置可以与各种 物理的传输机制一起使用,包括光纤(例如,运行在160兆位每秒)、 低压差分信号(运行在122兆位每秒),源同步串行和异步背板线。在 一个实施方式中,当这些包含有可容错的数据时,被毁坏的包不必被 30重发。例如,在视频或音频流中偶尔的假信号是可被接受的。在这个 实施中仍然可以使用差错检测和再成帧,以允许从帧差错中快速的硬
件实现的恢复。
权利要求
1.一种机器人辅助手术系统,其包括可操作为执行指令的可编程处理器;耦连到所述可编程处理器的第一数据缓冲器,所述可编程处理器可操作以响应所述指令而传送第一优先级数据到所述第一数据缓冲器,所述第一数据缓冲器仅与所述第一优先级数据一起使用;耦连到所述可编程处理器的第二数据缓冲器,所述可编程处理器可操作以响应所述指令而而传送第二优先级数据到所述第二数据缓冲器,所述第二数据缓冲器仅与所述第二优先级数据一起使用; 数据链路;以及 耦连到所述第一缓冲器和所述第二缓冲器以及所述数据链路的传输逻辑,所述传输逻辑可操作以依照消息接发协议通过所述数据链路优先于所述第二优先级数据而传输所述第一优先级数据。
2.根据权利要求1所述的机器人辅助手术系统,其中所述第一优先级数据包含用来控制机器人手臂的运动的命令;以及所述第二优先级数据包含非关键的状态信息和错误日志信息中的至 少一个。
3.根据权利要求1所述的机器人辅助手术系统,其进一步包括耦连到所述可编程处理器的第三数据缓冲器,所述可编程处理器可 操作以响应所述指令而传送第三优先级数据到所述第三数据缓冲器,所 述第三数据缓冲器仅与所述第三优先级数据一起使用,其中所述第一优 先级数据是高优先级数据,所述第二优先级数据是低优先级数据,并且 25所述第三优先级数据是中优先级数据。
4.根据权利要求3所述的机器人辅助手术系统,其中 所述消息接发协议要求所述传输逻辑优先于来自于所述第二数据缓 冲器的所述第二优先级数据而传输来自于所述第一数据缓冲器的所述第 一优先级数据。5
5.根据权利要求4所述的机器人辅助手术系统,其中所述消息接发协议进一步要求,所述传输逻辑优先于来自于所述第 三数据缓冲器的所述第三优先级数据而传输来自于所述第一数据缓冲器 的所述第一优先级数据。10
6.根据权利要求5所述的机器人辅助手术系统,其中-所述消息接发协议进一步要求,所述传输逻辑优先于来自于所述第 二数据缓冲器的所述第二优先级数据而传输来自于所述第三数据缓冲器 的所述第三优先级数据。15
7.根据权利要求4所述的数据处理装置,其中相比于所述第二优先级数据,优先传输所述第一优先级数据包含.-先于任何可用的第二优先级数据传输任何可用的第一优先级数据。
8. 根据权利要求4所述的数据处理装置,其中20 相比于所述第二优先级数据,优先传输所述第一优先级数据包含相比于可用的第二优先级数据,分配更多的传输时隙给可用的第一优先 级数据。
9. 根据权利要求1所述的数据处理装置,其中所述可编程处理器包 25含所述传输逻辑。
10. —种方法,其包括 提供机器人辅助手术系统,所述机器人辅助手术系统包含多个节点, 所述多个节点包含由数据链路耦连到接收节点的至少一个传输节点,以 及在所述传输节点处生成第一优先级数据和第二优先级数据;放置所述第一优先级数据到第一数据缓冲器中,所述第一数据缓冲器仅与第一优先级数据一起使用;放置所述第二优先级数据到第二数据缓冲器中,所述第二数据缓冲器仅与第二优先级数据一起使用;通过所述数据链路传输来自于所述第一数据缓冲器和第二数据 缓冲器的所述第一优先级数据和所述第二优先级数据,所述第一优 先级数据优先于所述第二优先级数据而被传输。
11. 根据权利要求10所述的方法,其进一步包括,在所述传输节点处 生成第三优先级数据,其中所述第一优先级数据是高优先级数据,所述第二优先级数据是低优先级数据,并且所述第三优先级数据是中优先级数据;放置所述第三优先级数据到第三数据缓冲器,所述第三数据缓冲器仅与第三优先级数据一起使用;以及 20 通过所述数据链路传输来自于所述第三数据缓冲器的第三优先级数据,所述第一优先级数据优先于所述第三优先级数据而被传输,所述第 三优先级数据优先于所述第二优先级数据而被传输。
12. 根据权利要求10所述的方法,其进一步包括,在所述传输节点 处识别消息接发协议,其中优先传输包含依照所述消息接发协议优先 传输。
13. 根据权利要求IO所述的方法,其中相比于所述第二优先级数据,优先传输所述第一优先级数据包含 先于任何可用的第二优先级数据传输任何可用的第一优先级数据。
14. 根据权利要求10所述的方法,其中相比于所述第二优先级数据,优先传输所述第一优先级数据包含 相比于可用的第二优先级数据,分配更多的传输时隙给可用的第一优先 级数据。10
15. 根据权利要求10所述的方法,其中所述第一优先级数据包含时间一关键消息。
16. 根据权利要求IO所述的方法,其中15 所述第二优先级数据包含非关键的状态信息和错误日志信息中的至少一个。
17. —种计算机程序产品,其被有形地嵌入在计算机可读介质上,所 述计算机可读介质被包含在机器人辅助手术系统的传输节点中,所述传20输节点由数据链路耦连到接收节点,所述计算机可读介质包括指令,所述指令可操作以使可编程处理器执行下述操作.-生成第一优先级数据和第二优先级数据;放置所述第一优先级数据到第一数据缓冲器,所述第一数据缓冲器 仅与第一优先级数据一起使用;25 放置所述第二优先级数据到第二数据缓冲器,所述第二数据缓冲器仅与第二优先级数据一起使用;以及通过同一个数据链路传输来自于所述第一数据缓冲器和第二数据缓 冲器的所述第一优先级数据和所述第二优先级数据,所述第一优先级数 据优先于所述第二优先级数据被传输。
18.根据权利要求17所述的计算机程序产品,其进一步包括指令, 5所述指令可操作为执行下述操作生成第三优先级数据,其中所述第一优先级数据是高优先级数据, 所述第二优先级数据是低优先级数据,以及所述第三优先级数据是中优 先级数据;放置所述第三优先级数据到第三数据缓冲器,所述第三数据缓冲器 10仅与第三优先级数据一起使用;以及通过所述数据链路传输来自于所述第三数据缓冲器的所述第三优先 级数据,所述第一优先级数据优先于所述第三优先级数据而被传输,所 述第三优先级数据优先于所述第二优先级数据而被传输。15
19.根据权利要求17所述的计算机程序产品,其进一步包括指令,所述指令可操作为执行下述操作识别消息接发协议,其中优先传输包含依照所述消息接发协议优先 传输。20
20.根据权利要求17所述的计算机程序产品,其中相比于所述第二优先级数据,优先传输所述第一优先级数据包含 先于任何可用的第二优先级数据传输任何可用的第一优先级数据。
21.根据权利要求17所述的计算机程序产品,其中25 相比于所述第二优先级数据,优先传输所述第一优先级数据包含相比于可用的第二优先级数据,分配更多的传输时隙给可用的第一优先 级数据。
22. 根据权利要求17所述的计算机程序产品,其中 所述第一优先级数据包含时间—关键消息。
23. 根据权利要求17所述的计算机程序产品,其中 所述第二优先级数据包含非关键的状态信息和错误日志信息中的至
全文摘要
用于传输第一优先级数据和第二优先级数据的方法、系统和计算机程序产品。该第一优先级数据和第二优先级数据被存储在不同的数据缓冲器里,而且该第一优先级数据优先于该第二优先级数据而被传输。
文档编号G06F12/00GK101366010SQ200680047983
公开日2009年2月11日 申请日期2006年12月20日 优先权日2005年12月22日
发明者M·德吕克, P·格拉韦斯, T·沃尔克 申请人:直观外科手术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1