CMCC-TOD 协议与BDTOD 协议转换设计与实现
2022-01-06程明卢建福罗晋
[程明 卢建福 罗晋]
1 引言
北斗卫星导航系统是我国着眼于国家安全和经济社会发展需要,自主建设运行的全球卫星导航系统,是为全球用户提供全天候、全天时、高精度的定位导航授时服务的国家重要时空基础设施[1]。2020 年7 月31 日,习近平总书记向世界宣布北斗三号全球卫星导航系统正式建成开通,中国北斗迈入服务全球、造福人类的新时代。
在以美国为首的核心芯片禁运背景下,自主研发并应用国产核心芯片成为解决军用网络中的唯一出路。但由于受限于核心交换芯片的发展,目前国产的核心二三层业务芯片采用的移动标准的TOD 接口实现对高精度时间的输入和输出。
移动标准的TOD 接口无法与目前我国部署的北斗卫星导航系统北斗TOD 标准接口兼容,故需要设计一套协议转方法,才能将CMCC-TOD 转换成BDTOD 信息,以便在以国产芯片为核心处理单元的通信网络中传输北斗时间信息。
本文详细对比CMCC-TOD 标准和BDTOD 标准的异同之处,以UTC 秒时间作为中间媒介实现两者不同时间表达的转换,经过测试可满足高精度时间传输的要求。
2 协议对比
2.1 CMCC-TOD 标准
标准编号QB-B-016-2010 的《中国移动高精度时间同步1PPS+TOD 接口规范》中规定了移动规范的TOD接口数据帧格式,其定义的TOD 信息标准如下。
物理层信号采用RS422 电平方式,物理接口采用RJ45 或者DB9 连接头。物理信号参数特性如下所示。
(1)波特率:默认值为9 600 bit/s
(2)数据位:8 bit,空闲帧为高电平;
(3)停止位:1 bit
(4)校验位:无
TOD 信号需要在秒脉冲信号(PPS)上升沿有效后,延时1 ms 后开始传输,并且在500 ms 内完成数据传输。由于PPS 信号每秒产生1 次,故TOD 信号也每秒发送1 次,数据域的内容每秒累加1。
CMCC-TOD 的数据帧如图1 所示。
图1 CMCC-TOD 数据帧结构图
数据帧中各字段的详细内容如表1 所示。
表1 CMCC-TOD 数据帧详细解析表
在传输TOD的时间信息时,其中Message Class 为固定值0x01,MessageID 为固定值0x20,MessageLength 为固定值0x10。数据域Data 的长度在传输消息信息时为固定长度,其详细定义如表2 所示。
表2 CMCC-TOD 数据域详解表
以CMCC-TOD 数据帧43 4D 01 20 00 10 00 01 C2 14 00 00 00 00 08 43 0F 00 FF 00 00 00 1F 为例,其数据帧的详细内容如表3 所示。
表3 CMCC-TOD 数据帧解析详细表
通过分析CMCC-TOD 中字段的内容,其真实有效的时间信息包含在周内秒数和周数两个段内。当前数据帧中的时间为2 115周115 220秒,该时间无法直观被读取识别,还需要转换成特定的字符串样式。
2.2 BDTOD 标准
2.3 北斗标准的TOD 数据帧
根据技术协议《北斗卫星导航系统用户终端通用数据接口》规范中的说明[2],北斗TOD 信息数据定义如下。
物理层采用差分信号进行串行数据传输,在终端接收设备仅要求使用通用连接器即可。物理层信号参数如下所示。
(1)波特率:4 800~115 200 bit/s,可根据需要设定,默认值为115 200 bit/s;
(2)数据位:8 bit(d7=0)
(3)停止位:1 bit
(4)校验位:无
(5)数据串行传输,第一位为起始位,其后是数据位。数据遵循最低有效位优先的规则。
在串行数据中的通用语句标识符用ZDA 标识UTC时间、日期和本地时区等信息。数据帧中所有的字段都为ASCII 字符范围内可显示的字符,其通用定义的数据帧格式如下所示。
其中,数据帧以字符’$’作为整个数据帧的启始符,以字符’,’作为分隔符,以字符‘*’作为数据帧中有效数据域的结束符,数据域结束字符‘*’后两个字符为校验和字符,校验算法采用数据域亦或运算得到。其数据域中各字段的内容如表4 所示。
表4 BDTOD 数据帧详解表
以$BDZDA,2,091252.00,12,10,2021,-08,00,000000.00,0.0,0,Y*2B为例,其表示为北斗信号接收机输出TOD 信息,RNSS 定时结果,当前UTC时间为09时12分52秒,日期为2021年10 月12 号,当前时区为东八区,转换成北京时间为2021年10月12号17时12 分52 秒,时间精度未检测,卫星状态锁定,TOD 串行数据的校验和为0x2B。
通过分析BDTOD 数据帧中的信息,其时间信息以可显示识别的字符串标示,只需要按数据位读取时间信息即可。
2.4 差异对比
对比CMCC-TOD 信息数据帧和BDTOD 信息数据帧,其主要差异如表5 所示。
表5 CMCC-TOD 和BDTOD 的差异对比表
通过比对CMCC-TOD 和BDTOD 信息,虽然在时间信息的表达上存在差异性,但可通过软件对时间数据进行修改,按照通信协议对物理层信号的要求即可实现CMCC-TOD 到BDTOD 的转换。
3 软件设计
3.1 时间转换的媒介选择
将CMCC-TOD 时间信息转换成BDTOD 时间信息,其关键在于对时间信息的统一表达。在PC 系统中,Unix时间戳(Unix epoch)是从1970 年1 月1 日(UTC/GMT的午夜)开始所经过的不考虑闰秒的秒数。CMCC-TOD采用了GPS 时间作为计数时间,GPS 时由GPS 卫星搭载的原子钟作为基准,与国际原子时保持19 秒的固定常数差,GPS 时在1980 年1 月6 日零时与UTC 保持一致。由于国际原子时与UTC 时间的计时基准不同,国际原子时组织公布的闰秒偏差,截止到2021 年10 月,TAI 时间快于UTC 时间为37 秒,由于TAI 比GPS 固定偏差快19 秒故目前GPS 时比UTC 时间快18 秒。
在进行CMCC-TOD 时间信息转换成BDTOD 时间信息时,可采用Unix 时间戳作为中间媒介,先计算当前CMCC 中周和周秒所表示的秒时间的总数,然后利用再使用GPS 与UTC 时间偏差,计算得到UTC 的秒时间总数,最后根据纪元时间的同步时间作为起点,计算得到当前的UTC 时间,最后以字符串的形式将时间信息显示出来。
3.2 周和周秒转换Unix 时间戳
在CMCC-TOD 数据帧中,时间以周和周内秒表示,故换算秒数时,仅需要将周转换成对应秒数后,增加周内秒数即可,计算方法如公式(1)。
GPS 时的纪元年为1980 年1 月6 日0 时0分0 秒与UTC 保持一致。UTC 时间以1970 年1月1 日零时作为纪元时间,当UTC 时间到达1980年1 月6 日时,其中经历了1972 和1976 两个闰年,转换成秒时间为:(365*10+2+6-1)*24*60*60=315 964 800。
故将GPS 秒时间转换成UTC 秒时间时,需要增加315 964 800 的偏差时间,即:
由于国际原子时与UCT 时间的时钟基准不同,进过长时间的运行后,TAI 时间与UTC 时间将产生偏差积累,该偏差值大到一定程度后,一般每半年由国际标准组织公布进行闰秒调整。由于该偏差值存在可变性,在将Unix 时间戳转换成GPS 时,需要设计可配置的输入参数LeapSeconds。最终UTC 的秒时间计算方法如公式(3)。
3.3 Unix 时间戳转UTC 字符串时间
在Unix 时间戳转字符串时间时,需要注意闰年对秒时间的影响。需要注意闰年对秒时间的影响。当出现闰年时,2 月会多出1 天时间。转换算法采用逐次逼近+累加计时的方法实现对Unix 时间戳的转换。
3.3.1 逐次逼近法
逐次逼近法采用累积时间与当前年份时间进行比较,当累积秒时间大于年份秒时间时,累积秒时间减少当前年份秒时间,年份增加,直到累积时间小于当前年份秒时间为止。基本的算法流程图如图2 所示。
图2 逐次逼近算法基本流程图
3.3.2 累加计时法
为了减少计算复杂度,当逐次逼近法获取当前年月日时分秒信息后,后续的时间根据预期的秒时间值是否一致,如果与预期秒时间一致,则年月日时分秒信息直接累加1即可。通过累加计时,可极大减少时间转换的计算复杂度。算法流程图如图3 所示。
图3 预期算法基本流程图
通过以上算法的配合即可实现对Unix 秒时间到字符串时间的转换。当完成1 次秒时间转后,后续的秒时间采用预期算法后,可最高效的进行秒时间到字符串的转换。例如,将1 634 025 620 秒转换为时间信息,则为UTC 时间2021 年10 月12 日08 时00 分20 秒。转换为北京时间需要增加一个时区时间8 小时。
4 试验验证
4.1 功能验证
实验以国产芯片GD32F407 作为核心处理器,该芯片拥有最多6 个独立的异步串行接口,设计串口1 为调试配置串口,可输出程序执行过程中的调试信息,也可进行系统参数设置(如闰秒值配置);串口2 为CMCC-TOD 信号输入接口,波特率配置为9 600 bit/s;串口3 为BDTOD信号输出接口,波特率配置为115 200。硬件设计框图如图4 所示。
图4 验证试验硬件平台设计示意图
通过逻辑分析仪抓取核心业务芯片输出的CMCCTOD 信号和经过硬件单板转换后的BDTOD 信号,结果如图5 所示。
图5 CMCC-TOD 转BDTOD 信号波形抓包图
CMCC-TOD 信号,由于波特率较慢(9 600 bit/s)信号波形较松散,输出数据信息耗费时间为23.7 毫秒,经过转后输出的BDTOD,波特率较快(115 200 bit/s),信号波形密集,整体转化后的输出时间为31.8 毫秒。经过与后级别的国产时钟芯片对接后,国产时钟芯片可正常接收和识别转码后的BDTOD 信息。
4.2 性能验证
将硬件转换单板拷机2 小时(7 200 个转换点),记录CMCC-TOD 到BDTOD 信号之间的传输延时,结果如图6 所示。
图6 TOD 转换时间统计图
实验结果表明当前的硬件单板工作稳定可靠,软件协议运行正常,数据转换时间在29.5~31.0 ms 之间抖动,在技术协议要求的指标范围内。
5 结束语
本文针对移动标准TOD 信息与北斗卫星导航系统输出的BDTOD 信息不兼容问题,设计CMCC-TOD 到BDTOD 的转换方案和具体实现方法。通过实装设备测试,本协议可正确识别CMCC-TOD 的输入时间,并在31.0 ms内完成CMCC-TOD 到BDTOD 的协议转换。在长时间稳定性测试下,本方案可实现稳定的时间转换。通过本方案可实现CMCC-TOD 信息到BDTOD 的稳定转换。转换后的高精度时间可在以某国产芯片为核心处理单元的核心网中实现稳定传输。