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内收到应答帧 | 超时无应答 |
四、常见通信故障排查
通信建立失败时,按“物理层→协议层→应用层”的顺序逐层排查,可以避免盲目换线或重启设备。以下是几类典型故障及其定位方法。
故障一:串口无任何数据收发。首先用示波器或万用表测量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,但星务计算机侧未正确响应,会导致发送方在缓冲区满时持续等待。可尝试关闭流控,观察是否改善。若关闭后正常,则需检查流控信号线的连接和星务软件的流控处理逻辑。
通信链路建立后,建议立即执行一次完整的“指令-遥测”闭环测试:地面设备发送一条无副作用的查询指令(如“查询星务计算机软件版本”),星务计算机返回版本号遥测帧,地面设备解析并显示。这一过程不仅验证了链路,也验证了协议解析和数据处理流程的正确性。只有闭环测试通过,才能认为通信建立完成,可以进入后续的联调任务。