MIL-STD-1553
总线协议

一个MIL-STD-1553多路数据总线系统由控制多个远程终端（RT）的总线控制器（BC）组成，它们通过数据总线连接在一起，在总线控制器与所有相关的远程终端之间提供单个数据路径。这也可以有一个或多个总线监视器（BM）；但是，总线监视器尤为不允许参与数据传输，仅用于捕获和记录数据用于分析等。在冗余总线实现中，使用若干数据总线来提供多于一个数据路径，即为双冗余数据总线、三冗余数据总线等。到数据总线的所有传输都可以藉由总线控制器和所有连接的远程终端取得。消息是由一个或多个16位字（命令、数据或状态）组成。包含每个字的16位元使用曼彻斯特编码发送，其中每个位元传输为0.5微秒高与0.5微秒低表示一个逻辑1，而低-高序列表示一个逻辑0。每个字前面有一个3微秒同步脉冲（数据字为1.5微秒低+1.5微秒高，对于命令和状态字则相反，不能在曼彻斯特码中出现）及尾随的奇偶校验位。实际上每个字可以視同一个20位元字：3位元用于同步，16位元用于有效负载，1位元用于奇偶校验控制。消息内的字连续传输，并且消息之间必须至少有4微秒的间隙。不过，这种消息间间隙可以并且通常远大于4微秒，甚至一些旧的总线控制器将达到1毫秒。设备必须在4-12微秒内开始将其响应发送到一个有效命令，并且如果在14微秒内没有开始响应，则认为没有接收到命令或消息。
总线上的所有通信都在总线控制器的控制下，包括从总线控制器到远程终端的接收与发送命令。用于将数据从总线控制器传输到终端的字序列（符号形式为<originator>.<word_type(destination)>，类似通信顺序进程的符号）为：
而终端到终端的通信为：
这意味着在传输期间，所有通信由总线控制器启动，并且终端设备不能自己开始数据传输。在远程终端到远程终端传输的情况下，序列如下：在远程终端接口（例如RT1）后面的子系统中的应用或功能将要发送的数据写入特定（发送）子地址（数据缓冲器）中。该数据写入子地址的时间不一定与事务的时间相关联，尽管接口确保不发送部分更新的数据。总线控制器命令作为数据目的地的远程终端（例如RT2）在指定（接收）数据子地址接收数据，然后命令RT1从命令中指定的发送子地址发送。RT1发送状态字，指示其当前状态和数据。总线控制器接收RT1的状态字，并且看到发送命令已经接收，并且操作無誤。RT2接收共享数据总线上的数据，并将其写入指定的接收子地址，并发送其状态字。接收RT接口后面的子系统上的应用或功能然后可以访问数据。同样，该读取的时间不一定与传送的时间相关。总线控制器接收RT2的状态字，并且看到接收命令和数据已经無誤接收和操作。
然而，如果远程终端无法通过设置状态字中的错误位来发送其状态或期望的数据或指示问题，则总线控制器可以重试该传输。这样的重试有几种选择，包括立即重试（在冗余数据总线对的另一数据总线上）和在传输序列中稍后重试（在同一总线上）。
序列确保终端正在工作并且能够接收数据。在序列的数据传输结束时的状态字确保数据已接收、且可接受数据传输的结果。正是这个序列使MIL-STD-1553具有高的完整性。
然而，该标准没有规定任何特定传输的特定时间——这取决于系统设计师。通常（大多数军用飞机上的做法），总线控制器具有覆盖大多数传送的传送调度，通常组织成主帧或主周期，再细分为小周期。在这种循环执行（英语：）调度结构中，在每个小周期（速率组1）中发生的传送以最高速率（通常为50Hz）发生，在每隔一个小周期发生的传送中，其中有两个组（速率组2.1和2.2）以下一个最高速率发生，例如25Hz。类似地，有四组（3.1、3.2、3.3和3.4）则例如12.5Hz等。因此，在使用该调度结构的情况下，传输全部在谐波相关的频率上，例如50、25、12.5、6.25、3.125及1.5625Hz（对于在50Hz下包括32个次循环的主帧）。虽然远程终端不能直接自己开始传送，但该标准包括远程终端需要传送、而未經总线控制器自动调度时的方法。这些传送通常称为非循环传送，因为它们在循环执行程序使用的结构之外。在此序列中，远程终端通过状态字中的一个位（“服务请求”位）请求传送。通常来说，这使总线控制器发送“传送向量字模式代码”命令。然而，当远程终端仅具有一个可能的非循环传输时，总线控制器可以跳过该部分。向量字由远程终端作为单个16位数据字发送。此向量字的格式未在标准中定义，因此系统设计人员必须指定什么值、来自什么远程终端、意味着总线控制器将采取什么操作。这可以是立即或在当前次循环结束时安排非循环传送。这意味着总线控制器必须轮询连接到数据总线的所有远程终端，通常在主要周期中至少轮询一次。具有较高优先级功能的远程终端（例如，操作飞行器控制表面的远程终端）轮询地更為频繁。低优先级功能的轮询频率较低。
在总线控制器与特定远程终端之间，或者在总线控制器与一对远程终端之间，允许六种类型的事务：
控制器到远程终端传输。总线控制器发送一个16位接收命令字，紧随1到32个16位数据字。然后，所选的远程终端发送一个16位状态字。
远程终端到控制器传输。总线控制器向远程终端发送一个发送命令字。远程终端然后发送一个状态字，紧随1到32个字。
远程终端到远程终端传输。总线控制器发出一个接收命令字，紧随一个发送命令字。发送远程终端发送一个状态字，j紧随1到32个数据字。接收终端然后发送其状态字。
无数据字的模式命令。总线控制器发送一个命令字，子地址为0或31，表示“模式代码”类型命令。远程终端用一个状态字响应。
有数据字的模式命令（发送）。总线控制器发送一个命令字，子地址为0或31，表示“模式代码”类型命令。远程终端以一个状态字作为响应，紧随一个数据字。
有数据字的模式命令（接收）。总线控制器发送一个具有子地址0或31的命令字，表示“模式代码”类型命令，紧随一个数据字。远程终端用一个状态字响应。
MIL-STD-1553B还引入了可选的广播传输的概念，其中数据會发送到实现该选项的所有远程终端，但是没有远程终端响应，因为这将导致总线上的冲突。这可以用在将相同的数据发送到多个远程终端的地方，以减少事务的数量，从而减少数据总线上的负载。然而，接收这些广播的远程终端缺乏显式响应意味着，在事务有错误的情况下不能自动地重新尝试这些传输。
在总线控制器和所有有能力的远程终端之间允许四种类型的广播事务：
控制器到远程终端传输。总线控制器发送一个接收命令字，终端地址为31，表示广播类型命令，后面紧随0到32个数据字。所有实现广播的远程终端将接受数据，但不会有远程终端响应。
远程终端到远程终端传输。总线控制器发出一个接收命令字，终端地址为31，表示广播类型命令，紧随一个发送命令。发送远程终端发送一个状态字，紧随1到32个数据字。所有实现广播的远程终端将接受该数据，但不会有远程终端响应。
无数据字的模式命令（广播）。总线控制器发送一个命令字，终端地址为31，表示广播类型命令，子地址为0或31，表示“模式代码”类型命令。不会有远程终端响应。
有数据字的模式命令（广播）。总线控制器发送一个命令字，终端地址为31，表示广播类型命令，子地址为0或31，表示“模式代码”类型命令，之后紧随一个数据字。不会有远程终端响应。
命令字的构造如下。前5位是远程终端地址（0-31）。第六位对于接收为0，对于发送为1。接下来的5位表示在终端（1-30）上保持或获取数据的位置（子地址）。注意，子地址0和31保留用于模式代码。最后5位表示期望的字数（1-32），全部为零表示32个字。在模式代码情况下，这些位指示模式代码数字（例如，发起“自我测试”与“发送位元字”）。
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 远程终端地址 (0 - 31) | 远程终端地址 (0 - 31) | 远程终端地址 (0 - 31) | 远程终端地址 (0 - 31) | 远程终端地址 (0 - 31) | 接收或发送 | 数据位置（子地址） (1 - 30) | 数据位置（子地址） (1 - 30) | 数据位置（子地址） (1 - 30) | 数据位置（子地址） (1 - 30) | 数据位置（子地址） (1 - 30) | 预期字数 (1 - 32) | 预期字数 (1 - 32) | 预期字数 (1 - 32) | 预期字数 (1 - 32) | 预期字数 (1 - 32) |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
状态字解码如下。前5位元是正在响应的远程终端的地址。该字的其余部分是单位元条件码。保留一些位元。状态“1”表示条件为真；“消息错误”和“服务请求”为示例。多个条件可能同时为真。
| 0 | 1 | 2 | 3 | 4 | 5 |
| --- | --- | --- | --- | --- | --- |
| 远程终端地址 | 远程终端地址 | 远程终端地址 | 远程终端地址 | 远程终端地址 | 单位元条件码 |
| 1 | 2 | 3 | 4 | 5 | 6 - 16 |
下面的图像例示了上面解释的许多协议和物理层概念。例如，命令字中包含的远程终端地址值0x3（范围为0到31）。第六位元为1，表示从远程终端发送。子地址为0x01。最后5位元表示期望取得的给1的字数量，其与状态字之后的单个数据字（值为0x2）相匹配。
同样如上所述，设备必须在4-12微秒内开始将其响应发送到有效命令。在如下示例中，响应时间为8.97微秒，因此在规格范围内。这意味着远程终端3在总线控制器查询的8.97微秒后响应。查询的振幅比响应的振幅低，是因为信号探测位置更靠近远程终端。
在状态字中，前5位元是正在响应的远程终端的地址，在这种情况下为0x3。正确的传输在命令字中显示与状态字中相同的远程终端地址。