使用 Linux 绘制闪电图
新墨西哥矿业及理工学院 (NM Tech) 开发了一种可部署系统,用于在三个空间维度和时间上绘制雷暴的闪电放电活动图。该阵列利用全球定位系统 (GPS) 技术进行精确授时,并仿照美国宇航局肯尼迪航天中心开发和使用的闪电探测和测距系统,被称为闪电映射阵列 (LMA),由 10 到 15 个站点组成,部署在直径约 30-50 公里的县级区域内。
每个站点检测并精确计时脉冲 VHF(甚高频)事件到达的时间,频率范围为 6MHz,中心频率为 63MHz。脉冲辐射的时间和强度被记录下来,频率最高可达每 100 微秒一次,从而可以存储高达每秒 10,000 次触发。来自每个站点的触发与来自其他站点的数据在中心站点合并,在中心站点,使用到达时间差技术来生成源事件的位置解决方案,包括空间和时间。典型的闪电放电可能由数百到数千个定位的源组成。该系统进行的观测被发现反映了带电风暴的基本电荷结构,并提供了关于风暴整体形态的宝贵信息。
图 1 展示了 1998 年 6 月 10 日傍晚俄克拉荷马州中部一场风暴中水平延伸的闪电放电观测结果。放电发生在测量网络南端边缘,总延伸范围为 75 公里。闪电最初是风暴主要负电荷层和上部正电荷层之间的云内放电。随后负电荷层的击穿继续向北放电,在那里产生了负极性对地闪击。这次放电持续约 2.5 秒,产生了 2400 多个定位的辐射事件,证明了 LMA 确定单个闪光级别放电结构的能力。不同的面板显示了闪电活动的平面图、东西向和南北向垂直投影以及高度-时间图。此示例中的颜色标度代表时间的进程,蓝色表示闪光早期,红色表示闪光晚期(线性标度)。平面图上的小方框详细说明了测量站的位置。
图 2 展示了 LMA 在更大尺度上观察风暴的能力。此示例是对五分钟数据的整合,其中颜色标度现在代表事件密度,红色表示活动最高,紫色表示活动最低(对数标度)。此类数据有助于确定风暴系统中主要对流单体的位置,以及确定风暴的整体大小和结构。
Linux 是该系统运行的核心。为了最好地展示数据流和 Linux 在其中的作用,我们从其源头追踪数据流。发生脉冲 VHF 事件,来自它的辐射到达给定的远程站点。每个站点都运行着一台运行 Linux 的廉价 PC。每台 PC 都有一个定制的数字化仪卡(在 NM Tech 构建和设计),通过 ISA 总线与 PC 连接。每个事件的到达时间和功率被记录并存储到 16 位、32KB 深度 FIFO 中。当 FIFO 变为半满时,数字化仪板会设置一个标志(或生成中断)。
在 Linux 方面,有一个设备驱动程序(用 C 语言编写)正在运行,它轮询半满标志或可以设置为利用中断(它们每秒只发生几次,因此轮询效果很好)。当检测到半满标志时,驱动程序启动从 FIFO 到系统的块传输,然后将数据刷新到磁盘。
数字化仪板本身使用微控制器与可编程逻辑器件 (PLD) 相结合,以保持与 GPS 接收器的锁相(精度约为 50-100 纳秒),必须使用被动串行模式进行配置。这是通过 PC 上的并行端口进行接口,并时钟输入编程 PLD 接口所需的配置数据(一次一位)来完成的。只需调用几次 ioperm 即可轻松完成此任务,并且优秀的 Linux 文档的可用性在这方面提供了很大帮助。
收集过程一直在进行,因此数据开始在远程站点上累积。数据文件以固定长度文件存储,每个文件 10MB。一旦文件达到 10MB,Perl 脚本就会接管。脚本执行各种操作。首先,它们获取一个已完成的文件并将其写入本地 DAT 磁带驱动器。目前,站点使用 DDS-II 驱动器,因此每盘磁带可以容纳大约 4GB 的未压缩数据,这大约相当于一周的数据量(取决于风暴活动)。成功写入磁带后,该文件将作为冗余方法移动到本地磁盘上的备份位置。脚本监控磁带写入、记录日志并监控硬盘空间。如果驱动器空间变得有限,则会删除最早成功写入磁带的文件。数据磁带通过著名的“运动鞋网络”定期收集并带回中央位置进行后处理。
完全盲目地完成这一切几乎是不可能的(尽管我们已经做到了)。我们利用 Linux 中易于联网的优势来实现对站点的实时控制。每个远程站点都通过运行在 115,200bps 的无线电调制解调器连接回中心站点。远程站点在它们自己和主站点之间建立 PPP 链接;使用更多的 Perl 脚本可以非常轻松地维护 PPP 链接。将所有站点联网到具有 Internet 访问权限的中心站点是一个真正的优势。这允许从几乎任何地方控制站点。人们要做的就是到达中心站点,而访问远程站点只需 slogin 即可。实时控制非常宝贵;在每个站点都需要监控和调整许多事情,例如数字化仪的触发阈值、监控信号强度、检查电池备份状态和控制 GPS 接收器。
一旦数据在中央处理位置收集完毕,真正的工作就开始了。必须从磁带中提取数据,并将每个站点的数据与相应的时间间隔组合起来。需要一台主力机器。我们目前使用运行 SMP 的双处理器 Linux 机器。在组合数据后,在获得解决方案之前,必须进行各种形式的过滤。各种语言和服务有助于完成这项任务:用 C 语言编写的过滤器、用于跟踪重要信息的 Perl 和 shell 脚本、更多用于反转数据的 C 语言、用于显示数据的 IDL、用于与他人协作的 HTTP 和 FTP 服务器等等。
正在进行的是向完全实时处理的过渡,这正在顺利进行中。我们希望消除运动鞋网络,并将所有数据实时带回,在一个地方进行处理和存档。这将大大减少人工工时,并使该系统成为协作野外活动中更有效的工具。
Linux 已被证明是该项目各个方面的重要组成部分。该平台上开发的便捷性是无与伦比的,其应用程序的灵活性也是如此。大量的文档以及免费分发软件的大量涌现使其成为我们首选的操作系统。没有它,我们无法完成我们所做的事情!还应该提到的是,远程站点中的 PC 一直在运行——上次 /proc/uptime 报告自上次重启以来已超过 300 天。给我展示一台 Windows 机器,它可以运行近一年,持续联网,并存档超过 100GB 的数据而不会出现任何问题!

Timothy Hamlin (thamlin@nmt.edu) 在过去的三年里一直是 NM Tech 的物理学研究生,并希望在下一个千年之前完成他的博士学位。自 1996 年以来,他一直是 UNIX 的狂热用户超过 10 年,并且是 Linux 的皈依者/管理员/程序员/等等。