CN101052937A - 从数据队列中丢弃部分接收的消息 - Google Patents
从数据队列中丢弃部分接收的消息 Download PDFInfo
- Publication number
- CN101052937A CN101052937A CNA200580037695XA CN200580037695A CN101052937A CN 101052937 A CN101052937 A CN 101052937A CN A200580037695X A CNA200580037695X A CN A200580037695XA CN 200580037695 A CN200580037695 A CN 200580037695A CN 101052937 A CN101052937 A CN 101052937A
- Authority
- CN
- China
- Prior art keywords
- message
- reception
- data
- message object
- pointer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/403—Bus networks with centralised control, e.g. polling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
- H04L49/9073—Early interruption upon arrival of a fraction of a packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40221—Profibus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Small-Scale Networks (AREA)
Abstract
在进程控制系统中的设备在通信介质分段上对数据消息进行通信。每个设备包括通信控制器,通信控制器包括接收数据存储器和多个接收消息对象。当接收到消息时,激活接收消息对象并且将接收数据存储器中的写入指针的初始位置存储在接收消息对象中。在接收消息期间,如果硬件设备确定要忽略所述消息,则使接收消息对象无效,因此防止再将消息写入接收数据存储器。然后优选地使写入指针返回至存储在接收消息对象中的它的初始位置。
Description
技术领域
本发明涉及用于进程控制系统的现场仪表和其它设备中的通信控制器。特别地,本发明是一种用于从接收数据存储器中丢弃部分接收的消息的系统和方法。
背景技术
在典型的工业工厂中,采用分布式控制系统(DCS)来控制在工厂执行的许多工业进程。典型地,该工厂具有集中式控制室,该控制室具有带有如计算领域中已知的用户(I/O)、盘I/O和其它外设的计算机系统。与计算系统相连的是控制器和进程I/O子系统。
所述进程I/O子系统包括多个I/O端口,I/O端口连接至遍及工厂的各种现场设备。控制领域公知的现场设备包括各种类型的分析仪器、硅压力传感器、电容性压力传感器、电阻性温度探测器、热电偶、应变计、限位开关、通/断开关、流量变送器、压力变送器、电容电平开关、磅秤、传感器、阀门定位器、阀门控制器、执行器、螺线管和指示灯。如这里所使用的,该术语“现场设备”涵盖了这些设备以及在分布式控制系统中执行功能的控制领域公知的任何其它设备。
传统上,模拟现场设备通过二线双绞线电流环路连接至控制室,且各设备由单独的二线双绞线连接至控制室。模拟现场设备能够在指定范围内响应或发送电信号。在典型的结构中,通常在双绞线的二线之间具有大约20-25伏特的电压差,而流经环路的电流为4-20毫安。将信号发送至控制室的模拟现场设备调节流经电流环路的电流,而且该电流与所感应的进程变量成比例。另一方面,在控制室的控制下执行操作的模拟现场设备由经过环路的电流的强度所控制,该电流强度由受控制器所控制的进程I/O端口调节。传统的具有有源电子器件的二线模拟设备也可以从环路接收高达40毫瓦的功率。典型地,使用四线将需要更高功率的模拟现场设备连接至控制室,四线中的二线向设备提供能量。正如二线设备一样,作为四线设备的这类设备在本领域中是已知的而且功率不受限制。
相反,传统的分散现场设备发送或响应二进制信号。典型地,分立的现场设备以24伏特信号(或直流或交流)、110或240伏特交流信号或5伏特直流信号运行。当然,可以设计分立设备,使其根据特殊控制环境所需的任何电力规范而运行。分立输入现场设备仅仅是一个开关,其接通或中断与控制室的连接,而分立输出现场设备将根据来自控制室的信号的存在或不存在而进行操作。
从历史上看,大多数传统的现场设备已具有直接与现场设备所执行的主要功能相关联的信号输入或信号输出。例如,由传统的模拟电阻温度传感器所实现的唯一功能是通过调节流经二线双绞线的电流来传送温度,而由传统的模拟阀门定位器所实现的唯一功能是基于流经二线双绞线的电流强度在打开和关闭位置之间定位阀门。
最近,将数字数据添加到电流环路上的混合系统已经用在分布式控制系统中。控制技术领域中已知的一种混合系统是高速可寻址远程传感器(HART),其与Bell 202调制解调器的规范类似。该HART系统使用电流环路中的电流强度来感测进程变量(如在传统系统中一样),并且还将数字载波信号添加到电流环路信号上。所述载波信号相对较慢,并且可以提供每秒大约2-3次更新的速率的二级进程变量的更新。通常,数字载波信号用于发送二级和诊断信息,而不用于实现现场设备的主控功能。载波信号上所提供的信息包括例如二级进程变量、诊断信息(包括传感器诊断、设备诊断、接线诊断和进程诊断)、运行温度、传感器温度、校准信息、设备ID号、结构材料、配置或编程信息等等。因此,单个混合现场设备可以具有多个输入和输出变量,并且可以实现多种功能。
HART是产业标准的非专有系统。然而,它相对较慢。产业中其它企业已经开发了更快的专有数字发送方案,但是通常竞争者不能使用或无法获得这些方案。
最近,由美国仪表协会(ISA)规定了一种更新的控制协议。这种新协议一般被称为现场总线(Fieldbus)。现场总线是一种多分支串行数字双向通信协议,旨在将分布式控制系统中的现场仪器和例如监视和仿真单元的其它进程设备连接。现场总线实现了比之前的进程控制环路方法更强的数字通信,同时保持了向与现场总线环路相连的进程设备供电并同时满足固有的安全要求的能力。
两种合理标准化的工业现场总线协议是基础现场总线(FoundationFieldbus)和现场总线(Profibus)。现场总线协议的物理层由美国标准ISA-S50.02-1992的仪表协会规定,其草案2扩展发表于1995年。该现场总线协议规定了两个子协议。H1现场总线网络以高达每秒31.25千比特(Kbps)的速率发送数据并向与该网络相连的现场设备供电。H1物理层子协议由1992年9月批准的ISA标准第二部分的11条所规定。H2现场总线网络以高达每秒2.5兆比特(Mbps)的速率发送数据,但是不向与该网络相连的现场设备供电,而且具有冗余的传输介质。
现场总线具有用于对海量进程数据进行数字通信的显著性能。因此,不断地需要开发能够将现场总线通信效力最大化的进程控制设备。
发明内容
本发明是一种系统和方法,用于从能够存储多个消息的数据队列中丢弃部分接收的消息。当接收消息时,将写入指针的初始位置存储在数据队列中。然后从写入指针的初始位置开始,将所述接收消息写入数据队列。当将接收消息写入数据队列时,写入指针的位置递增。如果要丢弃该消息,则使写入指针返回至初始位置,以便由通信设备接收的下一消息将盖写接收消息。
在优选实施例中,数据队列被存储在通信控制器的接收数据存储器中。所述通信控制器还包括多个接收消息对象。当接收消息时,激活接收消息对象,并且将接收数据存储器中的写入指针的初始位置存储在有效接收消息对象中。然后,从写入指针的初始位置处开始,将接收消息写入接收数据存储器。当将消息写入接收数据存储器时,递增写入指针位置。如果硬件设备确定将忽略消息,则禁用有效接收消息对象,因此防止再将消息写入接收数据存储器。然后优选地,写入指针返回至存储在接收消息对象中的其初始位置。
附图说明
图1是通信介质分段上设备之间的数字通信的进程控制系统的示意图。
图2示出了图1的进程控制系统的设备之间的通信的消息格式。
图3是进程控制系统的设备的方框图。
图4是图3的设备的通信控制器的功能方框图。
图5是用于处理在通信介质分段上所接收的数据分组的接收/发送事件管理器的功能方框图。
具体实施方式
进程控制系统概况
本发明涉及用于进程控制系统的现场装置和其它设备中的通信控制器。所述通信控制器的目的是执行消息链路层处理和定时器管理的实际部分,并因此释放应用处理器或CPU以执行其它功能。为了进行详细描述,将在使用基础现场总线通信协议的系统的背景下描述所述通信控制器,虽然它具有对于基于分组的通信协议的一般适用性。
所述现场总线物理层定义了以物理层协议数据单元(PhPDU)的格式对通信协议数据进行发送和接收的物理装置的电子特性。此外,现场总线物理层规定符号编码、消息帧化和错误检测方法。ISA现场总线标准定义了三种信号收发的速度和两种连接模式。为了对此进行描述,将在ISA S50.02标准第2部第11条中所定义的H1物理层的背景下描述本发明。该条涵盖31.25Kbps、电压模式、有线介质和低功率选项。该选项使得连接至通信介质的设备能够从通信介质接收它的操作功率。所述物理层能够符合对于危险环境的内部安全要求。所述协议根据由标准定义的电压和电路限制,在低等级双绞线上运行并支持多个设备。
图1示出了一种典型的进程控制系统10,包括分段12、电源14和五个设备:链路活动调度器(LAS)设备20、链路主设备(LM)22以及基础设备24、26和28。分段12可以在单独一对线路上支持多达32个设备。典型地,基于环路执行速度、功率和内部安全要求,分段12将具有4-16个设备。
LAS设备20为分段12上的设备之间的所有通信保持中央调度。通过将强制数据(CD)数据链路协议数据单元(DLPDU)发送至每个设备以发送后周期数据,然后调度每个设备发送后周期数据,LAS设备20改进了整体通信的可靠性。LAS设备20用作分段12上的数据链路时间(DL-time)的本地来源。DLPDU是通过分段12传送的PhPDU消息的数据内容。
LM设备22被配置成如果LAS设备20发生故障或变得不可操作,则承担LAS设备20的责任。虽然图1只示出了LM设备22,但是在分段上可存在两个以上链路控制设备。这使得下列情形成为可能,如果链路活动调度器和第一链路主设备二者均发生故障,则第二链路主设备可以承担链路活动调度器的责任。在链路活动调度器发生故障之后,链路主设备承担链路活动调度器的功能。
每个设备都具有被称为V(TN)的唯一地址,它代表本地节点ID(此节点)。在图1所示的例子中,LAS设备20具有地址V(TN)=20;LM设备22具有地址V(TN)=22;基础设备24具有地址V(TN)=A5;基础设备26具有地址V(TN)=F3;以及基础设备28具有地址V(TN)=F5。
LAS设备20将传递令牌(PT)和探测节点(PN)消息发送至分段12上的所有设备。其它设备(LAS设备22和基础设备24、26、28)中的每一个适当地将返回令牌(RT)和探测响应(PR)消息发回至LAS设备20。
每个基础设备24、26、28只需要查看其自己的由LAS设备20发送的PT和PN消息。PT和PN消息具有编码在DLPDU的第二字节中的指定地址(DA)。LAS设备20向分段12上的所有设备一次发送一个记号(PT)或探测一个节点(PN)。
如果在基础设备24、26或28接收到带有与设备的唯一地址相等的指定地址(DA=V(TN))的PT消息,则它将向LAS设备20反馈RT消息。如果基础设备24、26或28接收具有DA=V(TN)的PN DLPDU,则需要它反馈PR消息。
从LAS 20发送PT和PN消息以及向LAS 20发送RT和PR消息在分段12上创建了若干消息,特定的基础设备24、26、28并不需要接收这些消息并对其采取行动。每个基础设备24、26、28只需要响应于寻址到该特定设备的PT和PN消息。持续地受到来自LAS 20的寻址到其它设备的PT和PN消息以及来自其它设备的寻址到LAS设备20的RT和PR消息的干扰,会产生过度的处理时间来解决这些“多余中断”。利用基础设备24、26和28,DLPDU过滤可以用于减少基础设备必须处理的中断的数量。另一方面,LAS设备20必须处理分段12上的每个消息。
分段12上的所有设备将数据作为曼彻斯特编码基带信号发送到分段12上。由于曼彻斯特编码,“0”和“1”分别表示比特周期中间发生的从低到高和从高到低的转换。对于现场总线,标称比特时间是32微秒(μsec),转换以16μsec的频率发生。曼彻斯特编码规则已经被扩大至包括两种附加符号,即非数据加(N+)和非数据减(N-),其中在比特周期过程中不发生转换,而且曼彻斯特编码基带信号保持高(N+)或低(N-)。
消息格式
图2示出了用于在分段12上发送消息的物理层协议单元(PhPDU)的格式。PhPDU包括前同步、开始分隔符(SD)、数据链路协议数据单元(DLPDU)和结束分隔符(ED)。所述前同步是PhPDU消息的前面若干比特。现场总线规范允许1-8个字节的前同步。接收消息的设备使用前同步,以与输入的消息同步。如图2所示,前同步的首字节序列是10101010。
开始分隔符(SD)紧接着前同步。这里每个消息有一个SD。现场总线规范要求SD具有非字符数据(N+和N-),其总是以互补对的方式出现在SD消息中。此编码方案使得SD唯一并且不可能与消息的数据部分(DLPDU)混淆。图2中所示SD的序列为1N+N-10N-N+0。
DLPDU是长度可变的消息。它以帧控制(FC)字节作为第一字节以及以帧校验序列(FCS)校验和作为其最后两个字节。DLPDU的长度可变,最小是三个字节(在RT消息的情况下),大到例如大约300字节的超时传输(jabber)限制。
结束分隔符(ED)在DLPDU之后。它表示在分段12上的发送PhPDU消息的最后字节。类似于SD,ED包括呈互补对的非字符数据。这个编码方案使得ED唯一并且不可能与DLPDU混淆。图2中所示结束分隔符的序列为1N+N-N+N-101。
图2还示出了载波检测信号。载波检测信号的目的是指示:何时(a)分段12上存在输入的PhPDU消息,或(b)设备正在将消息发送到分段12上。
发送开始(SOT)发生在这样的时刻:发送使能(TxE)变得有效,即当PhPDU的前同步被首先提供给分段12时。
活动开始(SOA)发生在载波检测信号变得有效而且已经稳定了至少一个比特时间或两个比特时间(大约16-31μsec)之后。这个时间取决于载波检测相对于接收消息的设备的内部时钟何时变得有效。这使得设备的通信控制器可以忽略在前同步的前端十分容易发生的噪音干扰。附加时间用于与比特边界同步,以消除分段12上的短噪声脉冲被误译为有效的可能。对于发送消息,在发送使能变得有效之后发生SOA(即PhPDU的前同步被提供给分段12)。
消息开始(SOM)发生在针对接收消息检测到FC字节时的第一比特的开始处。
SOM_xmt是消息发送开始,其发生在针对发送消息检测到FC字节时的第一比特的开始处。
SOMf是所接收已过滤的DLPDU的SOM。这发生在当设备中的通信控制器已经检测到足够的信息以确定过滤输入消息的时候。
消息结束(EOM)发生在接收消息中遇到的ED的最后比特的结尾。发送结束(EOT)发生在发送消息的ED的最后比特的结尾。
有效结束(EOA)发生在载波检测已经变得无效的时候。发送DLPDU和接收DLPDU二者均发生EOA。
设备结构
图3示出了基础设备24的通信部分的方框图,其表示每一个设备20-28中的结构。基础设备24包括中央处理器(CPU)30、随机存取存储器(RAM)32、闪存34、通信控制器36和媒体连接单元(MAU)38。
在图3所示的实施例中,CPU 30是微处理器,例如摩托罗拉68LC302、摩托罗拉Mcore 2075、摩托罗拉PowerPC 850、Atmel Thumb处理器AT91M40800和其它。CPU30是8比特或更高的处理器。
在图3所示的实施例中,通信控制器36是特殊应用集成电路(ASIC),其作为MAU 38和CPU 30之间的接口工作。它向连接至现场总线分段12的外部模拟电路发送和从连接至现场总线分段12的外部模拟电路接收已编程的曼彻斯特数据。在从MAU 38接收到串行数据之后,通信控制器36对数据解码,将数据形成为字节,去掉前同步、SD和ED(和可选地FCS字节),并为链路层提供消息数据以供读取。对于数据发送,通信控制器36从链路层接收DLPDU数据的字节,并添加前同步、SD,可选地产生FCS,以及添加ED。接着通信控制器36串行形成已编码的曼彻斯特数据,将所述数据发送至MAU 38以供在现场总线分段12上发送。
通过下列四种信号提供通信控制器36和MAU 38之间的通信:RxS、RxA、TxS、TxE。RxS是所接收的曼彻斯特编码串行数据。RxA是接收数据的载波检测信号。TxS是发送的已编码串行数据。TxE是发送使能信号。
在本发明的其它实施例中,可以在具有CPU 30的公共集成电路上形成通信控制器36。而且,在有些实施例中,RAM 32和闪存34也可以和CPU 30合并。在LAS设备20的情况下,CPU 30、RAM 32和闪存34可以是进程控制系统10的主计算系统的一部分。
MAU 38向现场总线分段12提供网络连接。MAU 38可以是集成电路,或者是可用于形成MAU 38的分立组件。
通信控制器36
图4是通信控制器36的功能方框图。在此实施例中,通信控制器36包括反跳电路42、数字锁相环(PLL)44、前端状态机46、接收消息过滤48、接收先入先出(FIFO)存储器50、发送状态机52、发送FIFO存储器54、发送驱动器电路56、接收/发送事件管理器58、寄存器60、时钟生成电路62、振荡器64、定时器68和CPU接口电路70。
当MAU 38检测到输入消息时,在RxA输入处向通信控制器36提供载波检测信号,而且在RxS输入处提供输入的异步曼彻斯特数据。将RxA和RxS输入提供给前端状态机46。数字PLL 44从输入的串行曼彻斯特编码数据中再生和重建时钟。然后将此重建的时钟用于对前端状态机46计时。
前端状态机46检测输入的串行比特流RxS。它去掉前同步、SD和ED,并将DLPDU存储至接收FIFO存储器50中。前端状态机46和接收消息过滤48一起可以被配置用于滤除特殊帧控制,并加上寻址到其它设备的探测节点(PN)及传递令牌(PT)。前端状态机46跟踪已经被写入接收FIFO存储器50中的字节数量。在每个消息的结尾处自动验证FCS,并且可选地可以将FCS存储至接收FIFO存储器50中。
前端状态机46还提供表示它已经检测的特殊事件的信号。这些包括SOM、SOMf、EOM、SOA和EOA事件脉冲。
当RxA链路变得有效时前端状态机46被激活。然后前端状态机46与前同步字段的沿同步,并将RxS信号的曼彻斯特编码数据解码。SOA事件指示前端状态机46已经启动。
在检测到前同步之后,前端状态机46等待开始分隔符(SD)序列。在已经检测到SD之后,前端状态机46将串行数据流转换为八位组,并以8比特字节将其写入接收FIFO存储器50。前端状态机46继续将数据的新八位组写入接收FIFO存储器50中,直到检测到结束分隔符(ED),或直到接收FIFO存储器50满为止。
当已经检测到ED时,前端状态机46等候RxA线路变得无效,而这是由EOA事件指示的。
当RxA线路无效时,前端状态机46返回其初始状态。它在现场总线分段12上的下一次有效之前(即在RxA处再次提供载波检测信号之前)保持在此初始状态中。
过滤电路用于基础设备,以减少加载在对于设备不重要的消息上的IRQ。相反地,配置作为LAS的设备必须接收分段上的所有消息,并因此必然过滤被禁止。当过滤被禁止时,所有接收到的消息将被存储在接收FIFO存储器50中,并将被传递至寄存器60然后至CPU 30。SOMf是对于接收到的已过滤DLPDU的消息开始信号。它发生在前端状态机46已经确定已经对接收消息检测到足够的信息以确定输入的消息将被过滤的时候。
由于可以过滤,则不将被过滤的消息存储在接收FIFO存储器50中。对于已过滤的消息,将不产生SOMf,因此将不发生事件或IRQ。
已过滤的消息的例子有返回令牌(RT)、空闲、请求间隔(RI),并且总是丢弃探测响应(PR)DLPDU消息。根据帧控制(FC)字节来识别这些消息。如果消息中的目标地址与设备地址匹配,则接收传递令牌(PT)和探测节点(PN)消息。如果消息中的目标地址与设备地址不匹配,则丢弃PT和PN消息。
基于FC字节和根据目标地址来过滤消息字节的能力通过限制CPU30必须处理的中断请求(IRQ)的数量,减少了软件中断的加载。
前端状态机46和接收FIFO存储器50用于解析来自MAU 38的串行数据帧。CPU 30从接收FIFO存储器50读取数据,并将其放置在它的本地存储器空间以对接收DLPDU进行解码。
接收FIFO存储器50具有8比特宽的63字节。接收FIFO存储器50将存储多达3个完整的接收消息的所有DLPDU字节(总体多达63字节)。前端状态机46将来自己过滤RxS信号的串联数据流解码,并将其转换为8比特并行格式字节。在形成该字节之后,前端状态机46创建写入脉冲,其将已编码数据存储在写入指针所指向的位置。在写入操作完成之后,使写入指针递增以存储下一个DLPDU字节。
CPU 30通过读取指针与接收FIFO存储器50连接。任何来自寄存器60的接收FIFO寄存器(其包含实际的DLPDU数据)的读取将来自接收FIFO存储器50的8比特数据立即放置在供CPU 30读取的数据总线上。在读取操作完成之后,使读取指针递增。在接收FIFO存储器50为空之前可以继续上述操作。
为了防止在接收FIFO存储器50中发生上溢情况,在寄存器60中有这样一个寄存器,其可以在接收FIFO存储器50接近满的情况下产生IRQ。用于产生IRQ的阈值是可配置的。
发送状态机52读取将从发送FIFO存储器54发送来的DLPDU数据。自动插入前同步、SD和ED。为了启动发送状态机52,可选地需要激活interPDU事件触发器或下一调度事件触发器,以开始发送操作。发送状态机52跟踪已经发送的字节的数量。如果存在下溢或发送计数破坏(violation),则将指示错误状况。可选地,可以自动将FCS作为DLPDU的最后两个字节进行发送。
发送状态机52对通过TxS线路上的接口电路70提供给MAU 38的曼彻斯特串行数据进行编码,以提供在现场总线分段12上。发送状态机52还在发送第一前同步的第一比特的时刻维护发送使能(TxE)线路,直到ED的最后字节出现。当发送状态机52维护TxE线路时,它还产生发送开始(SOT)事件信号,并在TxE线路返回至无效时产生发送结束(EOT)事件信号。
发送FIFO存储器54将存储待发送消息所需要的所有DLPDU字节,总体多达63字节。可以设定可配置的阈值,以在发送FIFO存储器54几乎空的时候发送IRQ来通知CPU 30。这样,如果需要发送多于63字节,则通知CPU 30以便其可以向发送FIFO存储器54添加更多的数据。在所有DLPDU字节被写入之前继续上述操作。CPU 30使用写入指针来向发送FIFO存储器54写入,而发送状态机52使用读取指针从发送FIFO存储器54读取字节。
通信控制器36作用于事件,并必须能够处理多个事件的发生。事件的例子包括SOM、EOM、或接收消息的EOA或发送消息的EOT。接收/发送事件管理器58管理总体上多达3个接收消息和一个发送消息所发生的所有事件。
如图4所示,接收/发送管理器58包括三个接收消息对象,标为rcvmsg1、rcvmsg2和rcvmsg3,以及一个发送消息对象,标为xmtmsg。此外,接收/发送管理器58包括消息队列管理器(MsgQmngr)80、事件管理器(EventMngr)82、发送管理器(xmtmngr)84和事件MUX 86。
接收FIFO存储器50能够存储多达三个完整的接收消息的DLPDU字节。这三个消息的每一个具有相应的对象,即rcvmsg1、rcvmsg2和rcvmsg3。每个对象包含其相应接收消息发生的所有IRQ的状态、消息错误和时间记录。这些信息构成该消息的事件数据。
将发送消息发生的所有IRQ的状态、消息错误和时间记录存储在xmtmsg对象中。所存储的信息构成发送消息的事件数据。
MsgQmngr 80控制三个接收消息的选择和使能。一次只能有一个rcvmsg对象是有效的。MsgQmngr 80使事件与有效的接收消息相关联。在CPU 30已确认其它三个消息之前接收到第四个消息的情况下,MsgQmngr 80在读取或确认事件数据之前,禁止接收其它任何消息。EventMngr 82管理事件发生的顺序。随着事件发生,EventMngr 82给每个事件分配一个发生顺序标识(OOO_ID)。这使得CPU 30能够按照事件发生的顺序一次读取一个事件。CPU 30必须在每个事件发生时确认每个事件。在已经确认第一事件之后,接下来的事件将就绪以供CPU 30读取。
Xmtmngr 84监视interPDU触发器(InterPDU_trig)和下一调度事件触发器,并将发送触发器命令(Xmt_Trig_Cmd)引入到发送状态机52以开始发送下一个消息。
通信控制器36包括寄存器60。这些标为REG00-REG3F的寄存器可以由CPU 30读取和写入。通过寄存器60还可以操纵中断(IRQ)。
时钟生成电路62接收外部时钟,并且或者使用该时钟或者使用来自其内部振荡器64的时钟,来生成通信控制器36所需的所有时钟信号。
时钟生成电路62优选地具有及时地调整其节点定时器和其八位组定时器时钟速率的能力。这使得通信控制器能够使其节点时间与链路地址调度器(LAS 20)同步。八位组时间用于内部消息的定时,而节点时间用于在现场总线分段12上共享公共的时间感。
定时器68分为两组,代表不同的时间感。被称为分段定时器的第一组定时器在来自CPU 30的软件控制下,基于由时钟生成电路62产生的可变的时钟速率而运行。被称为消息定时器的第二组定时器以固定速率时钟运行。
在通信控制器36中存在两个分段定时器。第一分段定时器是节点定时器,其具有31.25μsec(32kHz)的时钟报时速率。节点定时器用于实现下一功能块执行时间、链路调度时间V(LST)和数据链路时间(DL-Time)。
第二分段定时器是八位组定时器,其具有2μsec(500kHz)的时钟报时速率。八位组定时器用于下一调度事件触发器(其与发送状态机52连接以便在特定时间发送消息)。当调整时钟速率时,节点和八位组定时器将以相同的速率相互跟踪。这是因为驱动节点定时器和八位组定时器的时钟信号是由公共可变时钟得到的。
基于现场总线消息事件(发送和接收)而开始和停止消息定时器。消息定时器包括无效定时器、interPDU延迟定时器、接收应答定时器、发送应答定时器和代表令牌(delegated token)恢复定时器。
无效定时器是递减计数器。它用于测量两个PhPDU之间的空闲时间。无效定时器作用于已过滤的和未过滤的接收消息以及现场总线分段12上的任意发送消息。当被命令开始时,无效定时器每16μsec递减一次。无效定时器的开始点是根据载入寄存器60之一的可配置预加载设置点确定的。通过与接收或发送消息相关的事件可以取消或停止无效定时器的递减。如果定时器达到0或者期满,将生成IRQ。在确认IRQ之前无效定时器将保持为0。如果IRQ保持为高,则在确认IRQ之前将不会发生影响无效定时器的附加消息事件。
interPDU延迟定时器是递增计数器。它用于与V(MID)阈值寄存器结合以实现现场总线V(MID)最小-interPDU延迟,其确保在发送或接收消息之间的无传输的最小持续时间(或间隙时间)。interPDU定时器受到现场总线分段上的已过滤的和未过滤的接收消息、以及任意发送消息的作用。当不存在现场总线活动时,interPDU定时器将持续递增。如果计数值等于或超过寄存器60中所存储的预定值,则interPDU_trig信号将变得有效。该信号用于确定已经满足了interPDU延迟时间。信号与xmtmngr 84相连以给出发送DLPDU可以开始的命令。
接收应答定时器是递减计数器。它用于订阅设备以监视对强制数据(CD)DLPDU的及时响应。它还由设备用于在设备进入链路上时监视其自己的地址。当被命令开始时,接收应答定时器每16μsec递减一次。接收应答定时器的开始点是根据载入寄存器60之一的可配置预加载16比特设置点确定的。通过SOM或SOT事件,可以取消或停止接收应答定时器的递减。如果接收应答定时器达到0或者期满,将生成IRQ。接收应答定时器需要启用IRQ以生成IRQ。在确认IRQ之前接收应答定时器将保持为0。如果IRQ保持为高,则在确认IRQ之前将不会发生会影响接收应答定时器的附加消息事件。
发送应答定时器是递减计数器。它使得设备能够在发送若干DLPDU(例如强制数据、传递令牌)之一后监视及时响应。当被命令开始时,发送应答定时器每16μsec递减一次。发送应答定时器的开始点是根据载入寄存器60之一的可配置预加载设置点确定的。通过除了探测节点(PN)外的任何发送DLPDU的SOM事件或SOT事件,可以取消或停止发送应答定时器的递减。如果发送应答定时器达到0或者期满,将生成IRQ。在确认IRQ之前发送应答定时器将保持为0。如果IRQ保持为高,则在确认IRQ之前将不会发生会影响发送应答定时器的附加消息事件。
代表令牌恢复定时器是递减计数器。它用于监视从另一个设备接收代表令牌的空闲时间。代表令牌恢复定时器作用于已过滤的和未过滤的接收消息以及现场总线分段12上的任意发送消息。当被命令开始时,代表令牌恢复定时器每16μsec递减一次。代表令牌恢复定时器的开始点是根据载入寄存器60之一的可配置预加载设置点确定的。通过与接收或发送消息相关的事件,可以取消或停止代表令牌恢复定时器的递减。如果代表令牌恢复定时器达到0或者期满,将生成IRQ。在确认IRQ之前发送反馈定时器将保持为0。如果IRQ保持为高,则在确认IRQ之前将不会发生会影响代表令牌恢复定时器的附加消息事件。
丢弃部分接收的消息
典型地,通信硬件负责对从网络接收的消息进行过滤,并且只将那些感兴趣的消息发送至软件。消息过滤对硬件造成一种特殊问题,即在决定是否过滤消息之前消息过滤器可能需要部分接收消息。如果消息过滤器决定过滤消息,则需要丢弃部分接收的消息。如果消息过滤器决定不过滤消息,则硬件需要将整个消息发送至软件,包括已经部分接收到的部分。
图5是用于管理对由通信控制器36所接收的数据分组进行处理的接收/发送事件管理器58的功能方框图。接收/发送事件管理器58包括消息队列管理(MsgQmngr)80、事件管理器(EventMngr)82、事件MUX 86、接收消息对象队列100和多路复用器102、106和108。接收消息对象队列100包括用于三个标为rcvmsg1、rcvmsg2和rcvmsg3的接收消息对象的空间。接收/发送事件管理器58还包括当前位置指针(CurPosition)116、指针使能逻辑118、写入指针120和读取指针122。图5中还示出接收FIFO存储器50和用于存储与接收和发送消息对象相关的事件数据的寄存器60的一部分(Reg15-Reg1F)。
接收/发送事件管理器58允许CPU 30依次读取与已经发生的各个消息相关联的接收消息对象(rcvmsg1、rcvmsg2和rcvmsg3)。每个接收消息对象包含消息属性的分类,包括消息IRQ、错误状况和普通消息信息。与接收消息对象相关的DLPDU数据被存储在接收FIFO存储器50中。
发送消息对象(xmtmsg)接受来自发送管理器(xmtmngr)84、发送状态器52、发送FIFO存储器54和定时器68的输入。从这些输入,CPU 30可以读取在寄存器60的寄存器Reg16、Reg17和Reg1B中的发送IRQ、错误状况和时间记录信息。为了简明,从图5中略去图4中的接收/发送事件管理器58示出的xmtmngr 84、发送FIFO存储器54和发送状态器52,因为它们只与发送消息相关。
MsgQmngr 80允许特殊接收消息事件与来自分段12的有效接收消息相关联。这经由MUX 102进行控制,形成信号RcvMsg1_sel、RcvMsg2_sel和RcvMsg3_sel。一次只有这些选择信号中的一个是有效的。因此,一次只有一个接收消息对象(rcvmsg1、rcvmsg2和rcvmsg3)具有与它相关的接收事件,同时消息是有效的。多个输入进入接收消息对象队列100。这些信号包括读取指针122的当前位置值、写入指针120、GetDataByte in(用于读取RcvFIFO)和来自前端状态机46的信号、以及来自定时器68的当前时间值。这三个选择信号(RcvMsg1_sel、RcvMsg2_sel和RcvMsg3_sel)允许输入信号适当地只与一个接收消息对象相关联。
如果在接收消息之后发生EOA事件脉冲同时在接收消息对象队列100中仍然存在3个未确认的接收消息对象,则MsgQmngr 80通过强制使RcvMsgQMux_enb信号为低(无效)来禁止接收第四个消息。还将MsgQ_over信号发送到指针使能逻辑118。这防止第四个接收消息破坏接收FIFO存储器50中的DLPDU数据。为了再次启用RcvMsgQMux_enb信号,CPU 30必须确认发生第一个接收消息对象(即时间上最早发生的消息)。CPU 30写入寄存器60中的寄存器Reg15,产生Event_Ack信号(事件确认),并且随后根据OR门110的输出来产生RcvMsg_Ack信号。
EventMngr 82控制事件MUX 86的选择,以在三个接收消息对象(rcvmsg1、rcvmsg2和rcvmsg3)和发送消息对象(xmtmsg)之一的读取中进行多路复用。CPU 30可经由寄存器60的寄存器Reg15-Reg1F,读取有效消息的接收消息对象。CPU 30读取寄存器Reg15的两个较低比特,以确定下一个待处理的事件是否是接收消息(“01”)、发送消息(“10”)或是否不存在要处理的事件(“00”)。对于接收消息,MUX106形成6个信号:RcvMsg1_visible、RcvMsg2_visible、RcvMsg3_visible、RcvMsg1_Ackn、RcvMsg2_Ackn和RcvMsg3_Ackn。前面3个信号互相排斥,选择三个接收消息对象的一个以通过事件MUX 86传送以供CPU30处理。因此,一次只可以处理一个接收消息对象的相关事件信息和属性数据。以与从分段12接收的顺序相同的顺序来处理所述事件。
信号RcvMsg1_Ackn、RcvMsg2_Ackn和RcvMsg3_Ackn用于在CPU30已经处理所有事件数据之后确认当前可视的接收消息对象。这三个信号被输入OR门110,并且在OR门110的输出产生RcvMsg_Ack信号。RcvMsg_Ack信号作为输入被提供给MsgQmngr 80和读取指针122。
MsgQmngr 80还控制MUX 108,其用于创建信号CurMsg_Ack(当前消息确认)。所述“当前消息”是分段12上的有效接收消息,CPU 30正在处理该消息的事件数据(即消息对于CPU 30可视)。CurMsg_Ack由MsgQmngr 80使用,并(通过指针使能逻辑118)控制写入指针120和当前位置(CurPosition)116。当接收消息对象是可视的并且接收消息对象的相应选择信号是有效的时(例如RcvMsg1_visible=RcvMsg1_sel=l),CurMsg_Ack是有效的。
经由GetDataByte_in信号,CPU 30将读取指针122与接收FIFO存储器50连接。通过当前对于CPU 30可视以供读取的接收消息对象,CPU只可以访问读取指针122(即对于接收消息对象,RcvMsg_visible信号是有效的)。当CPU 30准备从接收FIFO存储器50读取存储的DLPDU数据时,经由寄存器60的寄存器Reg1D,CPU中的软件生成GetDataByte_in命令。任何从寄存器60的寄存器Reg1D中的读取将来自接收FIFO寄存器的数据立即放置在数据总线上以供CPU 30读取。将GetDataByte_in信号发给所有三个接收消息对象,但是一次三个接收消息对象中只有一个对于CPU 30是可读取(或可视)的。EventMUX_sel(2:0)信号经由MUX 106,选择当前可视的接收消息对象以供CPU 30读取。例如,如果RcvMsg1_visible是有效的,则通过接收消息对象rcvmsg1生成GetDataByte1。GetDataByte1、GetDataByte2和GetDataByte3作为输入被提供给OR门114,其输出是全局GetDataByte信号。当激活全局GetDataByte信号时,接收FIFO存储器50的读取指针122递增一个位置。当从rcvmsg1执行读取操作时,将读取指针122与rcvmsg1的结束位置值相比较。这使得CPU 30知道对于与rcvmsg1相关的消息,接收FIFO存储器50中的字节数量。
前端状态机46将串行数据流解码,并将其转换为8比特并行格式的字节。在形成所述字节后,前端状态机46创建写入脉冲(经由RcvDataByte),其将已编码数据存储至由写入指针所指向的接收FIFO存储器50中的位置。写入脉冲使写入指针120递增,以准备写入下一个DLPDU字节。在将有效接收消息的DLPDU数据写入接收FIFO存储器50中时,接收FIFO存储器50中的写入指针的当前值被连续地传送到当前位置116。由于以和将接收消息对象加入接收消息对象队列100相同的顺序将DLPDU数据加入接收FIFO存储器50,所以在接收FIFO存储器50和接收消息对象队列100之间保持一致的排序。
接收FIFO存储器50中存储的数据包含多达3个完整的接收消息的DLPDU数据(总体多达63字节)。每个接收消息对象包含用于存储可由软件读取的与有效接收消息的接收状态有关的若干属性(如由MsgQmngr 80选择的)。这些属性包括上溢、下溢、数据准备好、消息结束位置(EndPosition)和有效标记。
上溢是Boolean属性,当设定它时,指示在存储来自分段12的接收消息的DLPDU数据时发生接收FIFO存储器50的上溢。如果在由CPU30从接收FIFO存储器50读取DLPDU数据之前接收FIFO存储器50满了,则接收FIFO存储器50向所已接收消息对象激活指示已经发生上溢条件的信号。这将防止在从接收FIFO存储器50中读取一个DLPDU数据字节之前,再将数据写入接收FIFO存储器50。当上溢条件发生时,针对可视的接收消息对象,设定上溢属性。当具有上溢属性设置的接收消息对象对于CPU 30可视以供其读取时,由CPU 30读取并处理上溢条件。CPU 30通过向寄存器Reg16的合适比特进行写入而确认设置上溢属性(并且随后清除上溢属性)。
下溢是Boolean属性,其指示由于缺乏数据最后一次对接收FIFO存储器50进行读取的尝试失败。这发生在当接收FIFO存储器50为空(即没有DLPDU字节供读取)时CPU 30试图产生GetDataByte_in信号的时候。如果发生了上述情况,则将不增加读取指针122,因此保持读取指针122的合适定位。当发生下溢条件时,针对可视的接收消息对象,设定下溢属性。CPU 30通过向寄存器Reg16的合适比特进行写入,确认设置下溢属性(并且随后清除下溢属性)。
对于所有接收消息,当从前端状态机46发送数据以写入接收FIFO存储器50时,接收FIFO存储器50连续地监视它是否接近它的63比特存储限制。数据准备好是可配置的Boolean属性,它指示接收FIFO存储器50接近满的状态,并且需要由CPU 30对其进行读取以防止接收FIFO存储器50的上溢。如果接收FIFO存储器50中的未读取DLPDU数据字节的数量等于或大于数据准备好阈值,则在有效的接收消息对象中生成IRQ。当接收消息对象对于CPU 30可视以供其读取时,CPU 30可以读取并处理所述数据准备好属性。CPU 30通过对寄存器Reg16的合适比特进行写入,确认设置数据准备好属性(并随后清除数据准备好属性)。
结束位置是整数属性,它在为当前有效消息写入DLPDU数据时存储接收FIFO存储器50的写入指针120的位置。当写入指针120递增时,持续地更新当前有效接收消息对象的接收位置属性。当从接收FIFO存储器50读取DLPDU数据字节时,读取指针122递增。当读取指针122的值等于结束位置值时,对于当前可视的接收消息对象,在接收FIFO存储器50中未存储其它数据。当对于可视接收消息对象没有可获得的数据时,设定空标记,以防止生成可视接收消息对象的GetDataByte输出。这有助于保持读取指针122的合适定位和DLPDU数据关联整体性。每个接收消息对象的结束位置属性向MUX 112提供输入,并且可视接收消息对象的结束位置属性值被发给读取指针122。
有效标记是Boolean属性,其指示还(经由信号RcvMsg_sel)选择由CPU 30正在处理的接收消息对象(即可视接收消息对象)。当针对接收消息检测到EOA时,有效标记返回低。当从分段12接收到消息时,当前所选的接收消息对象更新它的相关消息数据。例如,如果当MAU 38接收消息时在接收FIFO存储器50中不包含DLPDU数据,则由MsgQmngr 80设定信号RcvMsg1_sel,因此在接收消息对象rcvmsg1中激活有效标记属性。当针对接收消息对象设定了有效标记时,将写入指针120的当前位置存储在所选接收消息对象的结束位置属性中。
对于某些接收消息,在将消息的所有DLPDU数据存储在接收FIFO存储器50中之前,CPU 30可以确定是否有必要处理整个消息。例如,假设分段12上的20字节的消息正在被接收的进程中,并且接收消息对象rcvmsg1被选择(RcvMsg1_sel=1)并且是可视的(RcvMsg1_visible=1)。在将一些DLPDU字节写入接收FIFO存储器50中之后,CPU 30可以读取寄存器Reg1F,并且针对已经写入接收FIFO存储器50中的rcvmsg1,确定DLPDU字节的数量。从寄存器Reg1F读取的值是rcvmsg1的结束位置属性值与读取指针122的值的比较。然后,CPU 30可以经由寄存器Reg1D,读取存储在接收FIFO存储器50中的部分消息。由所述部分消息,CPU 30可以确定不需要对余下的字节进行处理,并且可以丢弃(即过滤)消息的余下部分。在这一点上,CPU 30通过对寄存器Reg15执行写入操作,发起Event_Ack信号。所述Event_Ack信号通过MUX 108生成CurMsg_Ack信号。
Event_Ack信号的发起产生要发生以为下一接收消息准备接收FIFO存储器50的事件的次序。首先,当生成CurMsg_Ack信号时,将通过MsgQmngr 80禁用信号RcvMsgQMux_enb。当RcvMsgQMux_enb信号为低时,将忽略任何在有效接收消息对象的输入处发生的附加事件。CPU30保存读取接收消息的余下部分的处理时间,这使CPU 30能够在设备24中执行其它处理。然后,由相应的RcvMsg_Ackn信号(如接收消息对象rcvmsg1的RcvMsg1_Ackn)清除针对有效接收消息对象所设定的属性状态(如上溢、下溢等)。随后,CurMsg_Ack信号禁用指针使能逻辑118,指针使能逻辑118控制接收FIFO存储器50的写入指针120的递增。该行为防止将与有效接收消息对象相关的有效接收消息的附加DLPDU字节写入接收FIFO存储器50。由前端状态机46对余下的DLPDU数据进行解码,但并不存储。CurMsg_Ack信号还使CurPosition116的当前值复制到写入指针120。RcvMsg_Ack信号(从OR门110输出)启动MUX 112输出的有效接收消息对象的结束位置值的采样(例如接收消息对象rcvmsg1的结束位置1),并且随后启动向读取指针122复制所采样的结束位置值。因此,写入指针120和读取指针122被重新定位至相同值。
当部分接收的已丢弃的消息发生活动结束(EOA)事件脉冲时,接收消息对象队列100中的下一接收消息对象的RcvMsg_sel信号变得有效。当在分段12上接收新消息时,将它写入接收FIFO存储器50。将下一接收消息对象的DLPDU数据的第一字节存储在写入指针120的新的重定位值处。结果,由新消息盖写了已丢弃的消息的部分接收部分。
总之,消息过滤向硬件提出了特殊问题,因为消息过滤器在决定是否对消息进行过滤之前需要部分地接收消息。如果软件消息过滤决定对消息的余下部分进行过滤,则需要丢弃部分接收的消息。本发明是一种系统和方法,用于从接收数据存储器中丢弃部分接收的消息。当接收消息时,激活接收消息对象,而且跟踪接收数据存储器中的写入指针120的当前位置,并将其存储在有效接收消息对象中。然后从写入指针120的初始位置处开始,将所述接收消息写入接收FIFO存储器50。当向接收FIFO存储器50写入消息时,写入指针120的位置递增。如果CPU 30确定将忽略所述消息,则禁用有效接收消息对象,因此忽略与所述消息有关的余下事件。此外,禁用接收数据存储器,因此防止进一步向接收FIFO存储器50写入与被忽略消息相关的DLPDU数据。当忽略所述消息时,将读取指针122定位在接收FIFO存储器50中的当CPU 30决定过滤余下消息时的点处。然后优选地,将写入指针120重新定位至接收FIFO存储器50中与读取指针122相同的位置。
在针对消息接收到所有DLPDU数据之前,通过使软件软件忽略消息,为CPU 30节约了宝贵的处理时间。此外,由于接收FIFO存储器50可能包含多达三个接收消息对象的DLPDU数据,所以重要的是,使硬件适当地跟踪和控制写入指针120和读取指针122的定位,以保持DLPDU数据与适当的接收消息对象的关联。在CPU处理时间十分关键的情况下,使写入指针120和读取指针122正确对准的重要性显得尤为明显,例如当丢弃具有大量与它相关的DLPDU数据的接收消息时,或者在对于低功率应用以较低时钟进行操作的CPU中。
虽然已经参照优选实施例描述了本发明,但是本领域技术人员将认识到可以在形式和细节上进行改变,而不脱离本发明的精神和范围。
Claims (13)
1.一种用于在通信介质上通信的设备,所述设备包括:
介质连接单元(MAU),用于在通信介质上接收和发送消息;
中央处理单元(CPU),用于处理接收消息中所包含的数据和创建将包含在发送消息中的数据;和
通信控制器,用于连接在MAU和CPU之间,所述通信控制器包括数据队列和接收消息对象的队列,所述数据队列用于存储在通信介质上接收的多个消息,每个接收消息对象与数据队列中存储的消息相对应;
其中,当在通信介质上接收到消息时,激活第一接收消息对象,并且将写入指针的初始位置存储在数据队列中;和
其中,如果要忽略所述消息,使第一接收消息对象无效。
2.如权利要求1所述的设备,其中,设定有效标记以激活接收消息对象,清除有效标记以使接收消息对象无效。
3.如权利要求1所述的设备,其中当接收消息对象无效时,将写入指针移动到接收消息对象中所存储的初始位置。
4.如权利要求1所述的设备,其中当接收到消息的有效结束信号时,激活第二接收消息对象。
5.如权利要求1所述的设备,其中数据队列存储在环形缓冲器中。
6.一种在接收整个消息之前对通信设备中的消息进行过滤的方法,该方法包括:
启用第一接收消息对象;
将接收数据存储器中的写入指针的初始位置存储在第一接收消息对象中;
从写入指针的初始位置开始,将消息写入接收数据存储器;
当将消息写入接收数据存储器时,写入指针的位置递增;和
当通信设备确定将忽略所述消息时,在消息接收期间禁用第一接收消息对象。
7.如权利要求6所述的方法,其中,在从消息接收到有效开始信号时,启用所述第一接收消息对象。
8.如权利要求6所述的方法,还包括:
使写入指针返回至初始写入指针位置。
9.如权利要求8所述的方法,其中使写入指针返回至初始写入指针位置包括:将写入指针移动至存储在第一接收消息对象中的初始写入指针位置。
10.如权利要求8所述的方法,还包括:
当接收到消息的有效结束信号时,启用第二接收消息对象。
11.如权利要求6所述的方法,其中启用第一接收消息对象包括:设定第一接收消息对象的有效标记。
12.如权利要求6所述的方法,其中禁用第一接收消息对象包括:清除第一接收消息对象的有效标记。
13.一种从通信设备的数据队列中清除接收消息的方法,所述数据队列用于存储在通信介质上接收的多个消息,所述方法包括:
将写入指针的初始位置存储在数据队列中;
从写入指针的初始位置开始,将接收消息写入数据队列;
当向数据队列写入接收消息时,写入指针的位置递增;和
如果将清除所述消息,则使写入指针返回至初始位置,以便由通信设备接收的下一消息盖写所述接收消息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/936,142 | 2004-09-08 | ||
US10/936,142 US7694061B2 (en) | 2004-09-08 | 2004-09-08 | Discarding a partially received message from a data queue |
PCT/US2005/029198 WO2006028670A2 (en) | 2004-09-08 | 2005-08-15 | Discarding a partially received message from a data queue |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101052937A true CN101052937A (zh) | 2007-10-10 |
CN101052937B CN101052937B (zh) | 2011-06-08 |
Family
ID=36036807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200580037695XA Active CN101052937B (zh) | 2004-09-08 | 2005-08-15 | 从数据队列中丢弃部分接收的消息 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7694061B2 (zh) |
EP (1) | EP1810118B1 (zh) |
JP (1) | JP4938667B2 (zh) |
CN (1) | CN101052937B (zh) |
WO (1) | WO2006028670A2 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200717246A (en) * | 2005-06-24 | 2007-05-01 | Koninkl Philips Electronics Nv | Self-synchronizing data streaming between address-based producer and consumer circuits |
US10819791B2 (en) * | 2013-10-11 | 2020-10-27 | Ge Aviation Systems Llc | Data communications network for an aircraft |
US9679347B2 (en) | 2014-02-18 | 2017-06-13 | Qualcomm Incorporated | Shader pipeline with shared data channels |
US9960853B2 (en) * | 2016-10-04 | 2018-05-01 | The United States Of America As Represented By The Secretary Of The Navy | System and method for a differential pulse position modulation encoder and decoder |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4507760A (en) * | 1982-08-13 | 1985-03-26 | At&T Bell Laboratories | First-in, first-out (FIFO) memory configuration for queue storage |
US4682284A (en) * | 1984-12-06 | 1987-07-21 | American Telephone & Telegraph Co., At&T Bell Lab. | Queue administration method and apparatus |
JPS61234149A (ja) * | 1985-04-09 | 1986-10-18 | Nec Corp | 受信バツフア装置 |
US5016221A (en) * | 1989-12-01 | 1991-05-14 | National Semiconductor Corporation | First-in, first-out (FIFO) memory with variable commit point |
US5533034A (en) * | 1992-06-26 | 1996-07-02 | Matsushita Electric Industrial Co., Ltd. | High speed data transfer device having improved efficiency |
JPH0713881A (ja) * | 1993-06-28 | 1995-01-17 | Hitachi Ltd | 通信処理装置 |
US5485572A (en) * | 1994-04-26 | 1996-01-16 | Unisys Corporation | Response stack state validation check |
JPH08307617A (ja) * | 1995-05-10 | 1996-11-22 | Canon Inc | 通信装置 |
US6219728B1 (en) * | 1996-04-22 | 2001-04-17 | Nortel Networks Limited | Method and apparatus for allocating shared memory resources among a plurality of queues each having a threshold value therefor |
US5860119A (en) * | 1996-11-25 | 1999-01-12 | Vlsi Technology, Inc. | Data-packet fifo buffer system with end-of-packet flags |
US6385672B1 (en) * | 1997-05-30 | 2002-05-07 | 3Com Corporation | System to optimize packet buffer utilization via selectively partitioned transmit and receive buffer portions |
US6307860B1 (en) * | 1998-04-03 | 2001-10-23 | Mmc Networks, Inc. | Systems and methods for data transformation and transfer in networks |
US6327615B1 (en) * | 1998-09-30 | 2001-12-04 | Stmicroelectronics, Inc. | Method and system of controlling transfer of data by updating descriptors in descriptor rings |
US6246682B1 (en) * | 1999-03-05 | 2001-06-12 | Transwitch Corp. | Method and apparatus for managing multiple ATM cell queues |
US6564268B1 (en) | 1999-03-17 | 2003-05-13 | Rosemount Inc. | Fieldbus message queuing method and apparatus |
US6539024B1 (en) * | 1999-03-26 | 2003-03-25 | Alcatel Canada Inc. | Method and apparatus for data buffer management in a communications switch |
US6496885B1 (en) * | 1999-07-14 | 2002-12-17 | Deere & Company | Method for processing network messages |
JP3608441B2 (ja) * | 1999-07-15 | 2005-01-12 | セイコーエプソン株式会社 | データ転送制御装置及び電子機器 |
US6799229B1 (en) * | 2000-09-05 | 2004-09-28 | Lsi Logic Corporation | Data-burst-count-base receive FIFO control design and early packet discard for DMA optimization |
KR100403620B1 (ko) * | 2001-02-28 | 2003-10-30 | 삼성전자주식회사 | 채널 활용율을 높이는 통신 시스템 및 그 방법 |
JP4217386B2 (ja) * | 2001-05-15 | 2009-01-28 | 株式会社リコー | Fifo装置 |
JP3961371B2 (ja) * | 2002-08-21 | 2007-08-22 | 富士通株式会社 | 情報処理装置 |
US6754744B2 (en) * | 2002-09-10 | 2004-06-22 | Broadcom Corporation | Balanced linked lists for high performance data buffers in a network device |
CN1222882C (zh) * | 2002-12-05 | 2005-10-12 | 华为技术有限公司 | 一种任务间通信的实现方法 |
-
2004
- 2004-09-08 US US10/936,142 patent/US7694061B2/en active Active
-
2005
- 2005-08-15 JP JP2007531182A patent/JP4938667B2/ja active Active
- 2005-08-15 WO PCT/US2005/029198 patent/WO2006028670A2/en active Application Filing
- 2005-08-15 EP EP05786561.0A patent/EP1810118B1/en active Active
- 2005-08-15 CN CN200580037695XA patent/CN101052937B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
EP1810118A2 (en) | 2007-07-25 |
US20060070079A1 (en) | 2006-03-30 |
CN101052937B (zh) | 2011-06-08 |
EP1810118B1 (en) | 2020-04-15 |
WO2006028670A3 (en) | 2006-11-30 |
JP4938667B2 (ja) | 2012-05-23 |
JP2008512943A (ja) | 2008-04-24 |
WO2006028670A2 (en) | 2006-03-16 |
US7694061B2 (en) | 2010-04-06 |
EP1810118A4 (en) | 2013-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101052938A (zh) | 低等待时间的数据分组的接收和处理 | |
CN100557582C (zh) | 在消息接收期间阻止发送的系统、方法和设备 | |
CN1228723C (zh) | 在高速数据总线上并行传输数据的方法和设备 | |
CA2124452C (en) | Method and apparatus for processing data within stations of a communication network | |
EP1002275B1 (en) | A universal serial bus device controller | |
CN101438245A (zh) | 网络上事件发生顺序的管理 | |
CN101390072A (zh) | 具有自动时间加戳的通信控制器 | |
US9076491B2 (en) | Audio data inputting apparatus and audio data outputting apparatus | |
US20070248118A1 (en) | Adaptive Speed Control for MAC-PHY Interfaces | |
KR20060063693A (ko) | Usb 무선 데이터 전송을 스케줄링하는 시스템 및 방법 | |
CN1346468A (zh) | 高性能通信控制器 | |
WO2006020054A2 (en) | Communication controller for coordinating transmission of scheduled and unscheduled messages | |
EP1606912B1 (en) | Preempting low-priority traffic with high-priority traffic | |
CN1496515A (zh) | 同步多个ttcan总线的全局时间的方法以及相应的总线系统 | |
CN101052937A (zh) | 从数据队列中丢弃部分接收的消息 | |
KR100741179B1 (ko) | 메시지 데이터의 무결성 보장 방법 및 can 장치 | |
CN106664231A (zh) | 具有检验功能的传输单元 | |
US20060026243A1 (en) | System and method for preventing transmission during message reception | |
CN100578971C (zh) | 通过通用串行总线通道进行传输的装置及方法 | |
GB2503881A (en) | Adjusting the base address for relative addressing in a hierarchical on-chip debug network | |
CN1266883C (zh) | 一种网口流量控制的方法 | |
WO2014009323A2 (en) | Debug architecture | |
US7272194B1 (en) | Method to transmit bits of data over a bus | |
Afsin et al. | C 3: configurable can fd controller: architecture, design and hardware implementation | |
CN110460455B (zh) | 一种通信控制方法及控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |