2017年12月7日木曜日

F-16風の


 F-16のMulti Function Displayっぽい画面をC#で作ってみました。もちろんボタンは操作可能です。


 F-16のMDFを調べてみると、Honeywellの表紙含めて4p分くらいのPDFが出てきました。日付は2006年になっています。

 F-16A/Bではコックピットにはレーダー/HUDレピータのディスプレイが1基と、兵装用の9セグ(12セグ?)LEDx5行のディスプレイが使用されているようです。
 F-16C/D(Block 25)では単色のディスプレイ2枚に置き換わり、多用途化されたようです。さらにBlock 5xではこれが多色化されたようです。
 UAEに輸出されたF-16E/F(Block 6x)では大型のカラータッチ液晶を搭載したようですが、写真を見つけられませんでした。大型タッチ液晶というと、同じロッキード・マーティンのF-35が思い浮かびますが、おそらく同じようなものだと思います。


 先のカタログはカラーMFDのものですが、解像度は480x480pxで4x4インチだそうです。密度的には、24インチFHDの3割増し、18.5インチFHDや13.3インチWXGAくらいです。11年に買ったノートPCが13.3インチWXGAなので、民間の普及品よりちょっと高密度、くらいでしょうか。
 ただしコントラスト比は航空機用だけあり高く、5750対1らしいです(読み間違えてるかも)。また輝度も非常に高く、約790cd/m^2だそうです。参考までに、この間買った4k液晶(HDR非対応)は300cd/m^2でした。
 また、戦闘機では夜間はナイトビジョンゴーグルを使用しますが、新月の星明りだけで敵の戦闘機を見つけれるくらいの高感度なものですから、直接高輝度な画面を見てしまっては簡単にリミッターが働いてしまいます。なので、バックライトにも相当なダイナミックレンジがあると思われます。カタログにも「under all lighting conditions, from night-vision goggles to full sunlight」と書いてあります。簡単に訳せば、「直射日光から暗視装置まで、どのような光環境でも」みたいな感じでしょうか。

 液晶の起動には1分@-20℃と、ちょっと時間がかかります。とはいえ、ウチの液晶でも冬に1日家を開けて室温が10℃を下回ってしまうと、自己発熱でコントラストが正しくなるまではしばらくかかりますから、-20℃で1分というのはかなり優秀かもしれません。ヒーターでも入ってるのかな。

 この液晶は13ポンド(約6kg)のモジュールですが、映像を生成するシステムが他に必要になるようです。映像を生成するモジュールは31ポンド(約14kg)で、メインのシステムにはPowerPCベースのカスタムCPUが使われているようです。クロックは400MHz、メモリは4MB(8MBまで増設可能)、バッテリーバックアップされた64MBのメモリ(オプション)、といった感じで、更にグラフィック用に240MHzのPowerPCが乗っていて、こちらは32MBのRAMと16MBのFlash、16MBのテクスチャメモリと15MBのフレームメモリが乗っているそうです。
 メインの計算モジュールより描画モジュールのほうがメモリが大きいあたり、グラフィックの負荷がいかに高いかが伺えます。
 この描画モジュールはC言語で開発されているようです(C言語で開発可能、の意?)。メインシステムはJOVIALとCだそうです。JOVIALは聞いたことも無かったのですが、F-15やC-130、F-117等、かなりいろいろ使われているようです(wikipediaで、プラットホームに、other legacy systemsと書いてあって笑ってしまった)。

 このシステム、5GB(拡張可能)のストレージを持っており、航空機に搭載したままで書き換えが可能なようです(地上で整備士が書き換える、くらいの意味でしょう)。

 地図の倍率は125万分の1と50万分の1の2段階を選べるようです。125万分で127km四方、50万分で約51km四方、くらいの範囲を表示できます。125万分は巡航で9分、50万分は同4分くらいの距離でしょうか。50万分では1pxあたり100mくらいですから、遷音速なら1秒に3ピクセルくらいの分解能です。
 CASに使うには50万分では荒いし、洋上に出て迎撃するには125万分でも狭いし、みたいなとても使いづらそうな気がしますが、そもそもF-16のコンセプトからすれば、これくらいでも問題ないのでしょう。
 表示モードは北が上、ヘディングが上の両方を選べるようです。

 インターフェースはNTSCといった身近な物がある反面、MIL-STD-1553が5本入力可能だったりと、軍用な面もあります。また、イーサーネット100BaseTでデータ通信ができたり、デバッグ用に10BaseTが付いてたりもするそうです。

 他にも、画像をアップロード/ダウンロードする機能があったり、地形を3Dレンダリングで表示できたり、といった機能もあるそうです。


 興味本位で見つけたペラッペラなパンフレットくらいのPDFですが、真面目に読んでみるといろいろおもしろいですね。

***

 さて、一番最初のC#のヤツですが、コントロールではなく、クラスとして作っています(後から気づきましたが、これはコントロールとして作るべきでした)。
 コンストラクタにはContextMenuStripを与えており、ボタンで操作できる項目はVisualStudioのGUIで編集可能です。
 もちろん項目のボタンを押せばその下の階層に移動できますし、上に戻るタグを付けておけば勝手に階層を遡ってくれます。
 今のところ、ボタンの数(20個)以上の項目が有った際は、それ以上は表示しない、という挙動です。ContextMenuStripは動的に生成可能ですが、動的に作って20個超えても知らないよ、というスタンスです。
 クラスの中でClickハンドラを追加して移動していますが、もちろん外部でClickを登録しておけば、それに応じて処理もできます。
 またMDFの描画イベントを外にも出しているので、必要に応じて外部で描画できます。同時に現在選択しているToolStripMenuItemも参照できるので、外部はそれに応じて描画内容を変更する、という動作にしています。

 もともとは気分転換に作り始めたGUIですが、タッチ液晶で使えば意外と便利そうな気がします。
  もうちょっと色々使いやすいようにして、FSXの情報を表示したり、ジンバルの制御ソフトに組み込んでも面白いかな、と思っています。


追伸
 Arma3でマップに使えるアイコンみたいなやつ、MIL-STD-2525Bという規格らしい。2013年にオープンソースとして開放された模様。

 Test Multipointをクリックするとアイコンが表示される。

0 件のコメント:

コメントを投稿