文号
940307
阅读
12309
回复
8
收藏
3
破译BPM短波时码格式
2024/12/11
原创
IP:山东

我偶然发现有时BPM有一些频率(5MHz大概是24小时播发时码)在载波附近大概±100Hz的位置有OOK的信号,在互联网上搜索发现了中国科学院国家授时中心蒙智谋于2014年发表的《BPM短波时码授时发播技术方案》。经过分析,此论文所述125Hz时码格式与接收到的不符。

那就只能自己分析一下了吧?

使用韩国的websdr接收5MHz的BPM,但是使用窄带CW,将通带定位在5000.098KHz上。使用了支持BPC帧的“timecode”时间码模式进行OOK的解调,可以在屏幕上显示出每一码元的长短,并且此模式下BPC时码接收显示区两分钟为一页,20秒为一行,适用于BPM一分钟一帧的定时。

upload_downloader_1733849238837_8690436.png

图1

upload_downloader_1733849286025_22311456.png

图2

图1与图2为2024年10月9日17时,从43分到46分接收到的数据

upload_downloader_1733849264897_22258895.png

图3

图3为2024年10月9日18时,从6分至7分接收到的数据

通过判断图片上信号时间的长短,人肉转化为二进制,这些数据分别为

00000000011111111112222222222333333333344444444445555555555
12345678901234567890123456789012345678901234567890123456789
20241009 1743
00000000211000001020001010002110000001201000000020000000002
20241009 1744
00000000200100001020001010002110000001201000000020000000002
20241009 1745
00000000210100001020001010002110000001201000000020000000002
20241009 1746
00000000201100001020001010002110000001201000000020000000002
20241009 1806
00000000201100000021001010002110000000201000000020000000002
20241009 1807
00000000211100000021001010002110000001201000000020000000002

据此分析,每帧第0位是空缺的,为帧起始标志。有三种符号长度,其中最长的为分隔标志,最短的代表0,中等长度代表1。

第10至13位分别代表权重1 2 4 8,各位数据分别与对应权重相乘后相加即为分钟数的个位,

第15至17位分别代表权重1 2 4,如上处理后得到分钟数的十位。

第20至23位分别代表权重1 2 4 8,处理后得到小时数的个位,

第25至26位分别代表权重1 2,处理后得到小时数的十位,

但此时得到的两位小时数需要减一才是北京时间的小时数,也许BPM时码播发是按照UTC+9来的?

至此基本确定了帧结构是小端序,并且破译出了时间和分钟数,但是日期呢?如果联合我七月份接收的数据

00000000011111111112222222222333333333344444444445555555555
12345678901234567890123456789012345678901234567890123456789
20240719 1356Z 2156
00000000201100101020100001002100000000201000000020000000002
20240719 1357Z 2157
00000000211100101020100001002100000000201000000020000000002
20240719 1358Z 2158
00000000200010101020100001002100000000201000000020000000002
20240719 1359Z 2159
00000000210010101020100001002100000000201000000020000000002
20240719 1400Z 2200
00000000200000000021100001002100000000201000000020000000002
20240719 1401Z 2201
00000000210000000021100001002100000000201000000020000000002
20240719 1428Z 2228
00000000200010010021100001002100000000201000000020000000002
20240719 1429Z 2229
00000000210010010021100001002100000000201000000020000000002
20240719 1430Z 2230
00000000200000110021100001002100000000201000000020000000002
20240719 1431Z 2231
00000000210000110021100001002100000000201000000020000000002
20240720 0955Z 1755
00000000210100101020001010002010000000201000000020000000002
20240720 0956Z 1756
00000000201100101020001010002010000000201000000020000000002
20240720 1159Z 1959
00000000210010101020000001002010000000201000000020000000002
20240720 1200Z 2000
00000000200000000021000001002010000000201000000020000000002

会发现根本无法解码,因为七月份数据里小时数之后的0太多了,仅有一个进位的操作。

然而最近有人告诉我,在北京航空航天大学电子信息工程学院的王雨竹、秦红磊、万国龙发表的论文《陆基无线电授时系统信号分析与解算》中提到了他们破解的BPM时码,经过查看,情况属实…

upload_downloader_1733849605954_1139851.png

图4 论文关于BPM的片段

不过只提到了小时个位是被提前加一的,没提到十位进位的事,而且依然描述在125Hz而不是100Hz,优势在我。

《陆基》一文提到,

第30至33代表一年当中天数的个位,

第35至38位代表天数的十位,

第40至41位代表天数的百位。

使用10月9日接收的数据进行验证,数据吻合;但与7月接收的数据不匹配。

至于到底是不是UTC+9,等我接收到23时的数据再更新这篇博客…

至于7月份数据的日期数据是什么情况,是不是发射机出了问题?尚不知情。

如果我早点发现《陆基》一文,就不用那么费劲的接收和破译了T_T


2024年12月10日更新

于本日23时接收到数据

00000000011111111112222222222333333333344444444445555555555
12345678901234567890123456789012345678901234567890123456789
20241210 2307
00000000211100000020000000002011000010211000000020000000002
20241210 2308
00000000200010000020000000002011000010211000000020000000002

根据第20至26位均为0,且天数为346(UTC+8时间应为第345天),联合分析时域信号可以得出结论

BPM时码采用UTC+9,即东九区

BPM时码在5MHz上以调幅下的2ASK(OOK)发送,子载波频率100Hz,

170ms宽脉冲代表0,470ms宽脉冲代表1,770ms宽脉冲为分隔标志。脉冲宽度与《陆基》所述基本相符。

每帧第0位是空缺的,为帧起始标志,此时时号播发频率1800Hz、宽800ms的分钟信号,信号起点应为UTC每分钟第0秒时刻。

注意到有频率为1800Hz、宽5ms的脉冲超前于时码每位起点时刻30ms,且每分钟内第一个此种脉冲滞后于上述时号的分钟信号1秒整,此脉冲应为时号的秒信号。若将时码长度加上30ms,则更接近《陆基》所述。

upload_downloader_1733849726253_43315411.png

图5 分钟信号 秒信号 时码第一位

据《长短波授时时间频率控制与监测》等论文所述,为便于区分不同电台的秒信号,BPM的UTC秒信号脉冲超前于国家授时中心的UTC时刻20ms,未能验证。

第10至13位分别代表权重1 2 4 8,各位数据分别与对应权重相乘后相加即为分钟数的个位,

第15至17位分别代表权重1 2 4,如上处理后得到分钟数的十位。

第20至23位分别代表权重1 2 4 8,处理后得到小时数的个位,

第25至26位分别代表权重1 2,处理后得到小时数的十位。

第30至33代表权重1 2 4 8,处理后得到天数的个位,

第35至38位代表权重1 2 4 8,处理后得到天数的十位,

第40至41位代表权重1 2,处理后得到天数的百位。

由此,BPM时码的帧格式已经被全部破解完毕,可以据此解析BPM时码,得到天数、小时、分钟信息,结合数据位的定时和时号可以得到秒信号,据此确定准确的日期时间。

另外注意到数据中并不包含年份信息,年份需要手动设置以确定平闰年,获得具体的日历信息。

注意到数据中不含有校验或纠错信息,建议至少接收三帧以获得可靠的数据。

感谢BH6ABO在破解BPM时码格式中做出的支持和贡献。

附件

下面给出接收到的BPM(AM)和BPM时码(窄带CW)示例音频(均包含前后分钟的片段)

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

BPM.mp3516.14KB立即下载

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

BPM_timecode.mp3520.22KB立即下载


免责声明

本文所述BPM时码格式的知识产权应当归时码开发者或其所属单位所有。

本文所述BPM时码格式仅供个人学习研究使用,无意侵犯任何个人、单位或企业的任何知识产权。

使用本文所述BPM时码格式所造成的一切后果与本人无关。

参考文献

[1]蒙智谋.BPM短波时码授时发播技术方案[J].时间频率学报,2014,37(03):145-150.DOI:10.13875/j.issn.1674-0637.2014-03-0145-06.

[2]王雨竹,秦红磊,万国龙.陆基无线电授时系统信号分析与解算[J].导航定位与授时,2023,10(05):107-118.DOI:10.19306/j.cnki.2095-8110.2023.05.012.

[3]车爱霞,魏孝锋,乔建武,等.长短波授时时间频率控制与监测[J].时间频率学报,2022,45(03):194-201.DOI:10.13875/j.issn.1674-0637.2022-03-0194-08.

[ 修改于1年10个月前 - 2024/12/26 12:54:26 ]
+0.5
科创币
SparrowHe
2024/12/15
高质量研究
8
13
1年10个月前IP:浙江
940406
1楼

2024 年 10 月 27 日上午 10 时至 2024 年 10 月 31 日上午 11 时,国家授时中心计划在频率为 5MHz 的短波授时信号上间断性开展科学实验,期间可能会影响 5MHz 短波用户的信号接收,2.5MHz、10MHz 和 15MHz 授时信号正常发播,请使用短波授时信号的用户提前做好准备。

引用
评论
1年7个月前IP:北京
942785
2楼

之前尝试接收,后来一分析是夏威夷的WWVH。不知道有没有遇到这种干扰

引用
评论
1年7个月前IP:四川
942786
3楼

毕竟是标准台,频率几乎完全相同,调幅信号可以互不干扰的同时解调,很多时候听到好几个声音。

引用
评论
1年7个月前IP:山东
942830
4楼
引用xiaopoorhair发表于2楼的内容
之前尝试接收,后来一分析是夏威夷的WWVH。不知道有没有遇到这种干扰

偶尔能听到WWVH特征的语音和时号,有时候能同时听到WWVH和BPM,不过就强度而言,BPM信号远远强于WWVH

引用
评论
1年5个月前IP:山东
944388
5楼

据一西安ham提醒,此信号更可能为韩国授时台呼号HLA所发时码,同时解释了时区问题

引用
评论
2
1年5个月前IP:广东
944425
6楼

以前玩过各种短波长波授时模块,信号时有时无、天线不耐震动、……缺点挺多的。后来都换成GPS模块了。即使是几块钱的拆机GPS模块,性能都无可挑剔

引用
评论
1年5个月前IP:山东
944490
7楼
引用xiaopoorhair发表于2楼的内容
之前尝试接收,后来一分析是夏威夷的WWVH。不知道有没有遇到这种干扰

预言家,现在分析大概率是韩国HLA授时台

引用
评论
11个月3天前IP:陕西
947912
8楼
引用罗布Carrot发表于7楼的内容
预言家,现在分析大概率是韩国HLA授时台

我觉得有2个原因导致这个问题的发生…1.HLA发射时从来不报呼号,一开始我听的时候也是分不清,2.HLA在BPM覆盖范围内而且功率小,所以才误判成BPM了

引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的