时间:2009-03-01 16:12
人气:
作者:admin
MIL-STD-1553/1773传输协议简介
1553/1773总线上有总线控制器(BC)、远程终端(RT)和总线监视器(BM)三种类型的终端,都连接到总线上形成广播信道。每个终端同时连接到多条总线上,并从中选择一条总线用作平时通信的主总线,而其他总线则作为空闲的冗余总线,一旦主总线发生故障所有终端就切换到冗余总线继续进行通信。所有终端在总线上以1 Mb/s速度传送信息,总线上最多能连接32个终端,1553/1773总线的标准结构如图1所示。

在1553/1773总线上传送的基本信息是命令字、数据字和状态字。1553/1773总线网络是集中控制式,即总线上所有终端之间的通信都由BC组织发起,并在BC的控制下进行。其传输过程如下:BC在总线上以广播的方式发送命令字,RT通过将命令字中的地址域与自身地址比较来决定是否接收该命令字。RT根据命令字中的内容完成相应的操作(接收数据字、发送数据字或重启、自检等),同时以状态字响应BC的命令。BC通过分析RT返回的状态字来判断RT是否完成指定的操作以及RT是否工作正常。1553/1773总线上的传输分为多种类型,包括BC-to-RT传输、RT-to-BC传输、RT-to-RT传输、模式命令等各种类型的点对点传输和广播传输。协议中每一种传输类型对应一种消息格式[1,2],采用不同的消息格式就能完成各种类型的传输。消息格式类似于一种帧格式,但消息中包括了BC发出的命令字和RT返回的状态字(其中广播消息RT不返回状态字)以及在BC和RT之间传输的数据字,因此消息格式实际上规定了一套命令/响应的协议规则。
存储管理
BC通常与一台称为主机(host)的计算机相连,该计算机用于控制BC进行1553/1773总线上的数据传输,同时也搜集总线上的数据用于分析。BC自身并不产生命令字、数据字,BC在1553/1773总线上发出的所有命令字和数据字都来自主机,主机将所有待发出的数据和控制命令按照协议规定的格式翻译成BC能够理解的数据字和命令字,并合成为消息交给BC,BC依次发送这些消息以实现对1553/1773总线上其他终端的控制。由于BC在1553/1773总线上的数据传输速率与主机系统总线速率不一致,所以BC和主机之间应引入缓存,主机发往BC的数据应先保存在缓存中。根据BC自动完成传输能力的高低可将BC分为字处理控制器、消息处理控制器、帧(多消息)处理控制器三种类型[3]。要实现具有多消息处理能力的BC,需要建立具有自动读写控制能力的逻辑,能够实时从缓存中读取或写入消息数据,以满足在1553/1773总线上消息传输的连续性要求[1,2]。要实现在BC与主机之间有效传递数据及控制信息,还需要对存储空间进行规划,并制定关于数据及控制信息合理的数据结构,从而让主机和BC的硬件、软件共同遵守。上述内容主要属于存储管理的范畴,因此其设计均可归结为存储管理单元的设计。
存储管理单元的设计
存储管理单元的设计包括消息队列数据结构的设计、存储空间的规划和读写控制逻辑(控制过程)的设计三方面。另外,设计读写控制逻辑的过程中要考虑可编程的因素,可以通过设置控制字(或配置寄存器)的方式来允许主机对BC硬件逻辑的工作方式进行配置。
消息队列数据结构的设计
BC和主机必须事先约定好存储在缓存(共享存储器或共享RAM)中的格式,即数据结构,以便BC的硬件逻辑能够正确读取其中的信息。消息队列数据结构的定义包括单个消息块存储格式的定义和消息队列的存储格式两部分。可以将所有消息格式用一种统一的定长数据结构来表示或按照自然格式来存储各种格式的消息(这种数据结构是变长的)。由于采用定长数据结构容易造成存储空间的浪费,因此应采用后一种方法来表示消息。这种方法需要在消息块块首位置设置控制字来标明消息类型。这样,虽然消息块存储格式随消息类型不同而不同,但BC硬件逻辑可根据块首的控制字以及命令字中的word count域来辨别该消息块的存储类型及大小,并选取响应的控制时序来读写该消息块,采用这种方法来存储消息块的代价是增强了控制逻辑的复杂性。随着大规模集成电路的发展,可集成几十万门的FPGA/CPLD芯片已经可供使用,完全能够满足复杂控制逻辑的要求,因此在设计中可以不考虑逻辑的复杂性,图2给出了几种典型消息的存储格式。
消息队列的编排方式主要有数组和消息链表。数组是将指向各个消息块的地址指针连同控制信息以栈的形式堆放在一起,占用一整块的存储空间,只需将数据块指针顺序移动就能依次访问各个消息块。消息链表是在消息块中放置一个指向下一个消息块的地址指针,BC只需知道消息链表的头节点即可访问“消息链”上的所有消息块。
上一篇:MT1369的关仓与开仓接口电路
从profibusDP转ModbusTCP,一网打尽转换技巧!