4. 星务计算机与地面测试设备通信建立

星务计算机(OBC)与地面测试设备(GSE)之间的通信链路,是整星地面联调的第一条“生命线”。无论是遥控指令注入、遥测数据下传,还是时间码同步、软件上注,都依赖这条链路稳定工作。本节围绕通信协议配置、串口/网口参数设置、链路自检和常见故障排查四个环节展开,目标是让读者能够独立完成一次从物理连接到数据收发的完整通信建立过程。

一、通信协议与物理接口的选择

星务计算机通常提供多种对外接口,常见的有UART串口(RS-422/RS-485差分或TTL电平)、CAN总线、以太网(100BASE-TX或千兆)以及SpaceWire。地面测试设备侧则通过对应的接口卡或转换器接入。选择哪种接口,取决于星务软件中已实现的通信协议栈和测试任务的数据量需求。

以某典型星务计算机为例,其遥测遥控通道采用RS-422全双工串口,波特率115200bps,8位数据位、1位停止位、无校验;而软件上注和大数据量遥测回放则走UDP以太网通道,地面设备IP为192.168.1.100,星务计算机IP为192.168.1.10,端口号5000。协议层面,串口通道使用CCSDS空间包格式封装遥控指令和遥测帧,以太网通道则在UDP载荷中直接承载文件传输协议数据。

配置前必须确认三件事:接口电气标准是否匹配(RS-422与RS-485不能直接混接)、协议帧格式是否一致(帧头、长度域、校验方式)、以及流控方式(无流控、软件流控XON/XOFF还是硬件流控RTS/CTS)。任何一项不一致,链路都无法正常建立。

二、串口与网口参数设置实操

串口参数设置的核心是“两端一致”。在地面测试设备侧,通常通过串口配置工具或测试软件界面完成。以下是一个典型的Linux环境下使用stty命令配置串口的示例:

stty -F /dev/ttyS0 115200 cs8 -cstopb -parenb -crtscts
# 波特率115200,8数据位,1停止位,无校验,硬件流控开启

若使用Python的pyserial库,则配置如下:

import serial
ser = serial.Serial(
    port='/dev/ttyS0',
    baudrate=115200,
    bytesize=serial.EIGHTBITS,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    timeout=1.0,
    rtscts=True
)

网口参数设置则涉及IP地址、子网掩码、端口号和协议类型。地面设备通常需要与星务计算机处于同一网段,或通过路由可达。以下为Linux下配置网口IP的示例:

ip addr add 192.168.1.100/24 dev eth0
ip link set eth0 up

在星务计算机侧,若其运行VxWorks或Linux实时系统,同样需要确认网络接口已启动、IP已分配、UDP端口已绑定。特别要注意的是,星务计算机的网口可能配置为“仅接收特定源IP”的过滤模式,此时地面设备的IP必须在其允许列表中。

三、链路自检方法与判据

链路自检遵循“先物理、后协议、再应用”的层次顺序。物理层检查包括:线缆连通性(用万用表测差分对通断)、接口电平(RS-422差分电压应在±2V以上)、网口Link灯状态。协议层检查包括:回环测试(将TX与RX短接,发送数据看是否原样返回)、Ping测试(网口)、以及协议帧的CRC校验。应用层检查则是实际发送一条遥控指令或请求一帧遥测,观察星务计算机的响应。

一个实用的自检流程是:地面设备发送“链路查询”指令(假设指令码为0x01,帧格式为[0xEB,0x90,0x01,0x00,0xCRC]),星务计算机应在50ms内返回“链路应答”帧([0xEB,0x90,0x81,0x00,0xCRC])。若超时未收到应答,则逐层排查。下表给出一个简化的自检判据参考:

检查层次检查项正常判据异常表现
物理层差分电压≥2V电压为0或低于1V
物理层网口Link灯常亮或闪烁熄灭
协议层回环测试发送数据原样返回无返回或数据错误
协议层CRC校验校验通过校验失败计数增加
应用层链路查询应答50ms内收到应答帧超时无应答
星务计算机与地面测试设备通信链路自检流程 星务计算机 OBC IP: 192.168.1.10 UDP端口: 5000 串口: 115200-8-N-1 地面测试设备 GSE IP: 192.168.1.100 UDP端口: 5000 串口: 115200-8-N-1 遥控指令 / 链路查询 遥测数据 / 链路应答 链路自检四步法 ① 物理层检查 差分电压 ≥2V Link灯常亮 ② 回环测试 TX-RX短接 数据原样返回 ③ 协议帧校验 帧头0xEB90 CRC校验通过 ④ 应用应答 50ms内 收到应答帧 判据:四步全部通过 → 链路正常;任一步失败 → 按层次定位故障 物理层失败查线缆/接口;协议层失败查波特率/帧格式;应用层失败查指令码/端口绑定

四、常见通信故障排查

通信建立失败时,按“物理层→协议层→应用层”的顺序逐层排查,可以避免盲目换线或重启设备。以下是几类典型故障及其定位方法。

故障一:串口无任何数据收发。首先用示波器或万用表测量TX差分对,若发送时无电平变化,说明地面设备串口未真正打开或驱动未加载。若发送有变化但接收无变化,检查RX差分对是否接反(A/B线序颠倒)。RS-422中,地面设备的TX+应接星务计算机的RX+,TX-接RX-,交叉连接是常见错误。

故障二:收到乱码或帧校验持续失败。这通常由波特率不匹配、数据位/停止位设置不一致或时钟偏差过大引起。115200bps下,若两端波特率偏差超过2%,累积误差会导致帧尾采样错误。此时应核对两端配置,并用示波器测量位宽。例如,115200bps对应位宽约8.68μs,若实测位宽为9.0μs,则实际波特率约为111111bps,偏差约3.5%,需要检查时钟源。

故障三:网口Ping通但UDP数据收不到。Ping通说明IP层和链路层正常,问题多出在传输层或应用层。检查项包括:UDP端口是否被防火墙拦截、星务计算机是否绑定了正确的端口、地面设备发送的目标端口是否与星务计算机监听端口一致。此外,星务计算机可能配置了源IP过滤,只接受特定IP的UDP包,此时需将地面设备IP加入白名单。

故障四:链路时通时断。这类间歇性故障通常与接触不良、电磁干扰或流控配置不当有关。检查接插件是否松动、线缆屏蔽层是否接地良好。若启用了硬件流控RTS/CTS,但星务计算机侧未正确响应,会导致发送方在缓冲区满时持续等待。可尝试关闭流控,观察是否改善。若关闭后正常,则需检查流控信号线的连接和星务软件的流控处理逻辑。

排查建议:每次只改变一个变量。例如,怀疑波特率问题时,不要同时更换线缆和修改波特率,否则无法确定是哪一项修复了故障。建议维护一份“通信配置基线表”,记录每次成功通信时的所有参数,故障时逐项比对。

通信链路建立后,建议立即执行一次完整的“指令-遥测”闭环测试:地面设备发送一条无副作用的查询指令(如“查询星务计算机软件版本”),星务计算机返回版本号遥测帧,地面设备解析并显示。这一过程不仅验证了链路,也验证了协议解析和数据处理流程的正确性。只有闭环测试通过,才能认为通信建立完成,可以进入后续的联调任务。