AFSIM第10篇—通信与处理器:平台间信息如何流转
系列导航共 15 篇入门篇01 AFSIM 是什么 · 02 从零搭建环境 · 03 跑通第一个仿真 · 04 核心概念扫盲基础篇05 SDL 入门 · 06 Platform 详解 · 07 传感器与跟踪 · 08 武器与交战 · 09 机动与航线进阶篇[10 通信与处理器] · 11 External Control · 12 TCP 客户端实战 · 13 Wizard 可视化高级篇14 C 插件开发 · 15 调试与最佳实践上一篇09 机动与航线 下一篇11 External Control10 通信与处理器平台间信息如何流转在 第 07 篇《传感器与跟踪》 里我们让单个平台看见了敌人在 第 09 篇《机动与航线》 里我们又让平台能自己跑航线。但真实战场从不是单打独斗——一架无人机发现目标要把情报传给后方指挥舰指挥舰融合多源信息后再给无人机下发打击指令。单个平台再强也只是体系里的一个节点。这一篇我们就来解决节点之间怎么说话、怎么共享态势的问题主角就是 AFSIM 的两大组件通信comm与处理器processor。一、为什么需要通信与处理器先打个比方。一个雷达站就像一座孤零零的瞭望塔它自己能看到很远可一旦把消息记在小本子上不告诉别人整支部队还是瞎的。要形成体系作战我们需要两样东西通信comm通信模型相当于瞭望塔之间的电话线、电台、数据链决定能不能传、传多快、传给谁。处理器processor处理器相当于瞭望塔里那个会汇总、过滤、转发电报的情报官决定收到什么、怎么处理、要不要再转发。在 第 04 篇《核心概念扫盲》 我们讲过WSF 平台由若干组件Component拼装而成。传感器负责感知comm processor 负责协同二者配合才能把孤立的探测变成共享的战场态势。二、comm 模型平台的电话线在场景定义语言SDL里通信能力通过 comm 块挂到平台上。一个最朴素的无线电通信定义长这样text platform UAV_01 WSF_PLATFORM comm weapon_datalink WSF_COMM_TRANSCEIVER # 真实通信类型收发信机 network_name weapons_subnet # 数据链子网名同子网才能互通 transmit_range50000m data_rate1.0Mbps end_comm end_platform几个关键参数值得记住transmit_range通信半径。只有落在半径内的平台才可能直接互通超出就打不通电话。多跳中继可以靠 processor 转发弥补。data_rate数据速率。它直接限制了每秒能传多少字节从而决定 track跟踪更新的频率和密度。带宽小就只能挑重要的 track 传。address逻辑地址用于在仿真内寻址。AFSIM 在初始化阶段会依据各平台的 comm 参数算出一张连通性矩阵仿真运行时平台之间能不能通信、时延多大全看这张矩阵。需要注意的是comm 只解决链路存不存在至于传什么内容、怎么融合是 processor 的事。 安装实证真实的通信块lte_fighter.txt 里战斗机的通信这样写text comm weapon_datalink WSF_COMM_TRANSCEIVER network_name weapons_subnet internal_link data_mgr end_comm注意它用的是 WSF_COMM_TRANSCEIVER收发信机并通过 network_name 指定所属数据链子网——只有同子网的平台才能直接互通。这比本篇示例的 WSF_COMM_MODEL 更接近引擎真实类型AFSIM 并没有 WSF_COMM_MODEL 这个内置类型。实际建模时comm 还细分为不同层级最底层是普通的无线电radio只管比特流的收发带宽和距离有限再往上是数据链datalink它在无线电之上定义了帧格式和参与成员表能确保友军之间按统一规则交换跟踪与指令类似现实中的 Link-16 风格网络。选哪种取决于你想复现的通信保真度——教学演示用无线电足够而想贴近真实体系对抗就应当把数据链的成员、时隙、抗干扰特性都建模进去。记住一条经验法则通信越精细仿真越慢要在可信度与性能之间权衡。三、processor平台上的情报官处理器processor是运行在平台上的软件逻辑组件。它的核心职责之一就是把 comm 收到的友军消息融合进本平台的跟踪列表track list。回忆 第 07 篇本平台传感器探测到的目标会以 WsfLocalTrack 的形式进入 WsfTrackList。当友军通过 comm 发来它看到的 track 时本平台 processor 会把这些外部 track 合并进来于是即便敌人不在我雷达照射范围我方态势图上依然出现了这个目标——这就是情报共享的本质。从 C 插件视角看更完整的插件写法见 第 14 篇《自定义 C 插件开发》融合逻辑大致是// 收到 comm 传来的外部 track更新本地态势voidMyProcessor::UpdateTrack(constWsfExternalTrackext){WsfTrackList*listGetPlatform()-GetMasterTrackList();list-AddOrUpdate(ext);// 合并进主跟踪表}不同的 processor 类型行为不同有的只做简单转发有的做航迹相关correlation判断两条 track 是不是同一个目标有的还会基于融合后的态势做决策。选哪种取决于你想建模的智能化程度。 安装实证真实的处理器族AFSIM 预置了一大批处理器类型常见可执行行为的有 WSF_SCRIPT_PROCESSOR脚本决策最常用、WSF_TASK_PROCESSOR任务分配、WSF_TRACK_PROCESSOR、WSF_MESSAGE_PROCESSOR、WSF_FUSION_CENTER多源融合、WSF_STATE_MACHINE、WSF_BRAWLER_PROCESSOR近距空战行为树、WSF_PERCEPTION_PROCESSOR、WSF_THREAT_PROCESSOR以及 WSF_CYBER_*_PROCESSOR 系列。在 lte_fighter.txt 里一架机同时挂了 SENSOR_CUE_PROCESSOR雷达跟踪提示与 WEAPON_DL_MANAGER武器数据链管理——印证处理器情报官的说法。本篇示例用的 WSF_PROCESSOR 应修正为真实可用的 WSF_SCRIPT_PROCESSOR。 安装实证真实的指挥链长这样1v1.txt 里每个平台都声明了指挥关系text platform Talon_1_1 BLUE_FIGHTER commander SELF command_chain IFLITE SELF command_chain ELEMENT SELFcommander 指定上级指挥是谁SELF 表示自身为指挥节点command_chain 把平台挂进某条指挥链如 IFLITE 飞行编队链、ELEMENT 小队链——一个平台可以同时属于多条链。任务task就是沿这些指挥链自上而下派发与上报的本篇第四节说的指挥关系链在真实场景里就是靠这两个关键字搭起来的。四、任务task分配让平台各司其职processor 还有一项重要能力承载任务分配task assignment逻辑。任务task是平台应该做什么的高层指令比如前出侦察“护航”“数据中继”。指挥平台上的 processor 可以把任务派发给下属平台从而在 SDL 里搭出一条指挥关系链command hierarchy。text processor COMMANDER WSF_SCRIPT_PROCESSOR # 真实处理器类型脚本处理器 on_track_updateif(track.is_threat)then assign_task UAV_01RECON_AND_REPORTend_if end_on end_processor上面这段示意表明一旦 COMMANDER 收到某个威胁 track就给 UAV_01 派发一条侦察上报任务。任务下发后UAV_01 自身的 processor 会据此调整行为例如结合 第 09 篇 的航线机动去接近目标。comm 负责把任务消息送到位processor 负责解读并执行——这正是 AFSIM 组件协作思想的体现。五、完整信息流转链路把前面几节串起来平台间一次典型的信息流转是这样的探测平台 A 的传感器发现目标在本地生成 WsfLocalTrack。上报A 的 processor 通过 comm把这条 track 发给友军 B。接收融合B 的 processor 收到后合并进自己的 WsfTrackList态势图更新。再决策B 基于更新后的态势可能再派发任务或转发给 C形成多级协同。用一张图把这条链路画清楚平台C/指挥舰平台B接收节点平台A探测节点comm发送trackcomm转发/派发task任务指令传感器探测生成 WsfLocalTrackprocessor处理comm接收processor融合更新更新WsfTrackList态势图/决策接收任务/态势决策/任务分配可以看到传感器负责生comm 负责传processor 负责合与用。缺了任何一环体系作战都无从谈起。小结comm通信模型 决定平台之间能不能传、传多快本质是仿真内的连通性链路无线电/数据链。processor处理器 是平台上的情报官负责接收 comm 消息、融合 track、执行任务分配。信息流转链路传感器探测 → 生成 track → 经 comm 发给友军 → 友军 processor 更新态势形成共享战场图。任务task分配让指挥平台能向下属平台派活是体系协同的高层控制手段。comm 与 processor 在 第 04 篇 的组件体系里紧密耦合理解它们离不开 第 07 篇 的跟踪机制。下期预告本篇讲了平台之间怎么协同但如果你想在仿真运行过程中用自己写的代码实时干预——比如让 Java 后端动态下达飞到某点“开火”——那就得请出 wsf_external_control 插件了。下一篇 《11 External Control用代码实时操控仿真》 我们深入拆解它的原理与真实项目用法别错过进阶最关键的一课。