SSブログ

XP11 那覇空港シーナリーをカスタマイズ [X-Plane]

次は東京、大阪、、、のはずがなぜか那覇空港。
外出もできないし、なんとなく南国いいなーという軽いノリで。

宮崎に続き、今回もみん空オブジェクトを変換して使ってます。

デフォ:xporgからダウンロードしたシーナリー
OVD:オーバーランドみんなの空港シーナリー


まずはデフォ。
カクカクの四角いよくあるオブジェクトです。
ROAH_xporg.png

次にOVD単独。
やっぱりいいっすね。全然ターミナルオブジェクトが違います。
Taxi ラインなどの基本情報(apt.dat)ファイルがないのでこのまま使えません。
ROAH_OVLND.png

何も考えずに両シーナリーをCustomシーナリーフォルダに併存させた場合。
ROAH_同居.png

これが一番いい感じなので、デフォベースにOVDのオブジェクトを乗せ、不要な方をそれぞれ削除していく手順で進めます。

WEDで編集するために、XPORGのシーナリーフォルダにOVDのオブジェクトとdsfファイルを読み込ませてマージしました。
ROAH_混合WED取り込み状態.png

◆備忘録にマージ手順
①OVDシーナリーをFS2004にインストール
②上記をFS2XPlaneを使ってXP用にコンバート
③XPのcustomシーナリーフォルダ内に展開したxporgのデフォシーナリーフォルダ「ROAH」にOVDのオブジェクトフォルダを丸ごと移動。
④WEDでROAHを開いて、デフォシーナリーのdsfファイルとOVDのdsfファイルを読み込み。

これで両シーナリーが混合状態で、かつWED編集が可能に。
オブジェクト配置もほぼ問題なしなので、お気に入りのオブジェクト、テクスチャを選択していきます。

以下が今回編集した内容。

・Taxiライン
シーナリーのエクスポートターゲットを11以上にするとエラーが出るため、Taxiラインが担当するDepartureとArrivalの滑走路情報をそれぞれ追加して解消。

・エプロンテクスチャ
個人的にOVDの白っぽい明るいのが好みなので、こちらを採用。
TAXIラインはデフォを残してデフォエプロンオブジェクト(濃いめのテクスチャ)をがばっと削除し、OVDのエプロンオブジェクト「ROAH_EP_Conc-SMS_Concrete_01.obj」を残す。
上記Concreteオブジェクトは変更前は「ROAH_EP-Naha_EP4_1.obj」の直下にあって、ヒエラルキー的にターミナルオブジェクトが見えなくなるので、順序を「ROAH_T1-ROAH_Roof3.obj」の直下まで下げる。

・エプロンライト
デフォの方(紅白縞々の背が高いやつ)が明るくてよいのでこちらを残します。

残すもの(デフォ)
lib/airport/landscape/apron_light.obj

非表示にするもの(OVD)
Ltwがついているオブジェクトを非表示に。
※画像参照

ROAH_表示しないライト.png

・地形テクスチャ
OVDのテクスチャ(.pol)がしょぼいので、空港内の一部を除いて削除
※画像参照

roah_orthophotos.png

・空港トラフィック
トラフィックルートを追加して、構内車両を適当に配置。
※ターゲットバージョン11以上でシーナリーエクスポートする必要あり。

・道路のライン消去
OVLDの道路線は以下のものを非表示にする。
エプロンのライン ROAH_EP_Line-ROAH_Line1.obj
道路のライン ROAH_EP_R_Line-ROAH_Line2.obj

・Autogate設置
デフォシーナリのゲートウェイオブジェクトを消去
ROAH_Gate-ROAG_Gate1.obj
ROAH_Gate-ROAG_Gate2.obj

後はひたすら各ゲートにAutogateを配置。

・Japanpro
https://forums.x-plane.org/index.php?/files/file/49095-japan-pro/
なぜかJapanproシーナリーは東京と那覇のオブジェクトが入っているのでこちらも入れておきます。

WEDでJapanproのapt.datを取り込み、dsfファイル取り込んで東京タワーとスカイツリーを削除しておきます。(これは東京オブジェクトの競合対策)

◆完成形
ROAH_OVD_完成版.jpg

いい感じ!!

夜景
ROAH_混合WED取り込み状態_night.png

orthoを入れると建設中の第二滑走路が登場します。
ROAH_混合WEDortho第二滑走路.png

シーナリ触るのやっぱり楽しくて結構時間を忘れちゃいますねぇ。。。


nice!(0)  コメント(0) 

XP11 宮崎空港シーナリーをカスタマイズ [X-Plane]

結局たまに手を出すシーナリーですが、だんだんWEDの使い方がわかってきたので、手始めにVATSIMの管制トレーニングでよく利用する宮崎空港を改修しました。

XPのGatewayで公開されているシーナリー(https://gateway.x-plane.com/scenery/page/RJFM)を入れるとこんな感じです。

RJFM_xpgateway.jpg

特徴があるターミナルだけに、オブジェクトが寂しいです。。。

というわけで、以下の手を加えてみました。

・ターミナルビル等のオブジェクトをOverlandのオブジェクトに変更
・空港内トラフィックの追加(XP11デフォルト機能)
・Autogate(FSでいうところのAES)の追加
・ゲートナンバー等マーキングの追加
・Ortho4xp

ターミナルのオブジェクトは、FS2004で大変お世話になったシーナリー「みんなの空港」の宮崎空港を変換して配置。

ひとまず完成形がこちら。
RJFM_ovd.jpg

夜景
RJFM_ovd_night.jpg

テクスチャがもう少し綺麗だと文句ないですが、全然問題ないレベルです。
10年以上前のFS2004用オブジェクトをこうして使えるのは嬉しい限り。

空港カスタマイズ作業のタイムラプス


FSXやP3Dと比べるとシーナリーの変更も非常に容易。

作りは正直荒いですが、これでも雰囲気出るのでなかなかよいです。
この調子で、主要な空港を順次いじりつつ、VATSIMでフライトを楽しんでいこうと思います。

とりあえずは、RJTT羽田とRJOO大阪あたりかな・・・。
気が変わってまたHWに戻るかもですが(笑)

nice!(0)  コメント(0) 

音声によるXplane 機体制御プラグイン(ZIBO737) [X-Plane]

何年か振りにVATSIMで飛ぼうと思い、VR+入出力デバイス+VATSIM管制+音声制御で快適に飛べる組み合わせを探しています。

VR+VATSIM管制で1人で飛行するにあたり、いろいろと忙しいのでCoパイ(?)が欲しいと思って探したのがこのプラグイン。

X-Plane-Voice-Control(github)
https://github.com/Najsr/X-Plane-Voice-Control


英語音声認識が必要ですが、インストールは簡単でセットアップ不要。

■手順
①EXtPlane pluginをダウンロードしてXP11pluginフォルダへコピペ
https://github.com/vranki/ExtPlane/releases

②X-Plane-Voice-Controlをダウンロード

③X-Plane-Voice-Controlのexeファイルを実行
xp11を起動後、Connectすると音声認識開始。

Plane Command(https://planecommand.com/)という音声制御用の有償($27)ソフトウェア(基本操作は無料)もありますが、個人的にはこっちの方がライトで使いやすいです。

自分のVR+VATSIMでのフライト時は以下のコマンドが役に立ちそう。

■離陸時
・transponder mode on
・Landing Lights on
・gear up
※Strobe Lights onがあるとよかった・・・。フラップは物理的にデバイス(OCUSBMAPPER)を割り当てているため音声での操作は使用しません。


■飛行時
・set comX to XXX decimal XXX
・swap comX
・set navX to XXX deciimal XXX
・heading XXX
・set altitude to XX thousand XX hundred feet
※MCPのコマンド系はほぼほぼ操作可能なのに、なぜかスピードコントロールがない・・・。


■着陸&Taxi時
・langing lights off
・transponder mode off
・probe heat off
・APU on
・Taxi Lights off
※本当はここにStrobeのSteady、Autobrake offがあると非常に楽だった・・・

インストールから実際の音声制御の模様はこちら。



nice!(0)  コメント(0) 

FDS SYSボードをXPlaneへ接続 [X-Plane]

今回はFlightDeck SolutionsのSYSボードをXP11のZIBOへ直接接続してみます。

SYSボードを接続できれば、MIP、オーバーヘッドあらゆるスイッチ、LEDが接続できます。
今回も特に問題なく接続できました。
opencockpitsはまだ未接続ボードが残ってますが、SISMO以外はほぼ行けそうです。


■接続済
・YOKE ACE ジョイスティック接続
・Rudder Saitek ジョイスティック接続
・TQ Revolutionsim Products plugin経由で接続(Ocusbmapper)
・CDU Flightdeck Solutions plugin経由で接続(FDStoXP)
・MIP Flightdeck Solutions plugin経由で接続(FDStoXP) ⇒今回接続完了

■検証中/未検証
・FLAP Gauge Opencockpits plugin経由で接続(Ocusbmapper)
・AFT OVHD Opencockpits plugin経由で接続(Ocusbmapper)
・MCP Cpflight 有料ソフトウェアで対応(Midwest)
・FWD OVHD SISMO 難しそう。。。これ無理かも。


SYSボードはFDS-SYS4です。
入力64、出力128でMIPに利用するとちょっと入力が不足します。

IMG_0008.JPG

◆手順◆
①FDStoXPをダウンロード、インストール
例によってpikitangaさんのプラグインです。
https://forums.x-plane.org/index.php?/files/file/51240-fdstoxp/

②luaスクリプトを書いて機体のpluginフォルダへ保存
スクリプトというほどでもなく、SYSボードにインプットNoとアウトプットNoにそれぞれXPLANEのdatarefをあてがうだけです。

--*************************************************************************************--
--** CONSTANTS **--
--*************************************************************************************--

--デバイス番号宣言
BOARD4102_DEVICE = 0

-- 4102 Annunciators SYSボードのLED出力番号宣言
ANN_AUTO_BRAKE_DISARM = 1

-- 4102 Switches SYSボードの入力スイッチ番号宣言
SW_AUTOBRAKE_RTO = 1
SW_AUTOBRAKE_OFF = 2
SW_AUTOBRAKE_ONE = 3
SW_AUTOBRAKE_TWO = 4
SW_AUTOBRAKE_THREE = 5
SW_AUTOBRAKE_MAX = 6


--*************************************************************************************--
--** FIND CUSTOM DATAREFS **--
--*************************************************************************************--


--SYSボードのインプット、アウトプットをdatarefに関連付け

board4102DR_input = find_dataref("pikitanga/fdstoxp/board4102_" .. BOARD4102_DEVICE .. "/input")
board4102DR_output_leds = find_dataref("pikitanga/fdstoxp/board4102_" .. BOARD4102_DEVICE .. "/output/leds")

B738DR_ann_auto_brake_disarm = find_dataref("laminar/B738/annunciator/auto_brake_disarm")
B738DR_autobrake_pos = find_dataref("laminar/B738/autobrake/autobrake_pos")

--*************************************************************************************--
--** FIND CUSTOM COMMANDS **--
--*************************************************************************************--

--オートブレーキを動かすコマンドを宣言

B738CMD_autobrake_dn = find_command("laminar/B738/knob/autobrake_dn")
B738CMD_autobrake_up = find_command("laminar/B738/knob/autobrake_up")


--*************************************************************************************--
--** SYSTEM FUNCTIONS **--
--*************************************************************************************--

--オートブレーキノブが動かされた場合の挙動をプログラム

function process_knobs()

-- Autobrakes

if (board4102DR_input[SW_AUTOBRAKE_RTO] == 1 and B738DR_autobrake_pos > 0.1) then
B738CMD_autobrake_dn:once()
end

if (board4102DR_input[SW_AUTOBRAKE_OFF] == 1 and B738DR_autobrake_pos > 1.1) then
B738CMD_autobrake_dn:once()
end

if (board4102DR_input[SW_AUTOBRAKE_OFF] == 1 and B738DR_autobrake_pos < 0.9) then
B738CMD_autobrake_up:once()
end

if (board4102DR_input[SW_AUTOBRAKE_ONE] == 1 and B738DR_autobrake_pos > 2.1) then
B738CMD_autobrake_dn:once()
end

if (board4102DR_input[SW_AUTOBRAKE_ONE] == 1 and B738DR_autobrake_pos < 1.9) then
B738CMD_autobrake_up:once()
end

end

function process_annunciators()

-- auto brake disarm オートブレーキアナウンシエーターの状態を取得してLEDへ出力

if (B738DR_ann_auto_brake_disarm >= 0.5) then
board4102DR_output_leds[ANN_AUTO_BRAKE_DISARM] = 1
else
board4102DR_output_leds[ANN_AUTO_BRAKE_DISARM] = 0
end

end


--*************************************************************************************--
--** XLUA EVENT CALLBACKS **--
--*************************************************************************************--

function before_physics()

process_knobs()
process_annunciators()

end



③ボード接続
OCUSBMAPPERとは違い、USBを挿すだけで勝手に認識します。
SYS4ボード(4102)は3枚まで認識できるようなので、オーバーヘッド等への拡張も可能ですね。


◆接続動画◆


あとはopencockpitのボードがいくつかあるのでこれらをちまちま接続していこうと思います。


nice!(0)  コメント(0) 

ZIBO737用 グラスコックピット ZHSI [X-Plane]

P3DだとProsimのように機体、アビオニクスが1セットになったソフトウェアが結構なお値段で販売されていますが、XPLANEの場合は無償で配布されています。

正直素人の自分にはどっちが無料かわからないくらいの素晴らしい出来栄え。

ハードウェア接続用のプラグインを開発、配布されているpikitangaさんのプラグインで、彼はもうホームコックピットビルダーの神とあがめられてます笑

■ZHSI
https://forums.x-plane.org/index.php?/files/file/53660-zhsi/

導入したのが以下。
Untitled.jpg

■インストール・設定動画


terrain、weatherレーダーも実装されており、AIRACも読んでくれます。
ZIBO737、ZHSI、OCUSBMAPPERの3点セットでPROSIMのXPLANE版って感じですね。





nice!(0)  コメント(0) 

Flightdeck SolutionsのCDUをXP11に接続する [X-Plane]

XP11でホームコックピットを構築するために既存手持ちデバイスを順次接続中です。

以下確認状況。

■接続済
・YOKE ジョイスティック接続
・Rudder ジョイスティック接続
・TQ Revolutionsim Products plugin経由で接続(Ocusbmapper)
・CDU Flightdeck Solutions plugin経由で接続(FDStoXP) ⇒今回接続完了

■検証中/未検証
・MIP Flightdeck Solutions plugin経由で接続(FDStoXP)
・FLAPゲージ Opencockpits plugin経由で接続(Ocusbmapper)
・AFT OVHD Opencockpits plugin経由で接続(Ocusbmapper)
・MCP Cpflight 有料ソフトウェアで対応(Midwest)
・FWD OVHD SISMO 難しそう。。。これ無理かも。

今回はFDSのCDUをXP11(ZIBO)へ接続します。
これもOpencockpitsカードのpluginと同様、有志が配布してくれているFDStoXPというpluginで簡単に接続できましたので手順をメモします。

■FDStoXP
https://forums.x-plane.org/index.php?/files/file/51240-fdstoxp/

カードも以下のようにほぼサポートしてます。
・FDS_CDU_V9 (331A) x 2
・FDS_737_EL_MX_MCP & EFIS (3311)
・JetMAX_737_MCP_V2 & EFIS (3404)
・FDS-CONTROLLER-MCP (330A)
・FDS-CONTROLLER-EFIS-CA (330B)
・FDS-CONTROLLER-EFIS-FO (330C)
・JetMAX_737_MCP (330F)
・FDS_OM1 (3323) x 2 - forward overhead annunciators, switches, dials, push buttons & solenoids
・FDS_OE1 (3324) x 2 - forward overhead displays & encoders
・JetMAX_737_RADIO (3401)
・JetMAX_737_XPNDR (3402)
・IIT_HIO_32_64 (4101) x 2 - aft overhead switches, push buttons & annunciators
・IIT_HIO_64_128 (4102) x 3 - mip annunciators, switches, dials, push buttons
・IIT_HIO_128_256 (4103) x 2
・INTERFACEIT_BOARD_FDS737NGNAVCOMM (4C5A) x 5 - vhf1, vhf2, nav1, nav2, adf1
・FDS_XPNDR (3305) - xpndr
・FDS_MCOMM (3318) x 2 - vhf1, vhf2

■インストール手順
1."FDStoXP"をダウンロードして"...\X-Plane 11\Resources\plugins"へコピー
2."interfaceIT API v2.0.1 (64 Bit)"を"https://www.tekworx.com/downloads.php"からダウンロードしてインストール。
"...\Program Files\TEKWorx Limited\interfaceIT API x64\Sample\C\Bin\interfaceITAPI x64.dll"を次のフォルダへコピー"...\X-Plane 11\Resources\plugins\FDStoXP\64"
3.X-Planeを起動後、終了
4.以下ファイル"...X-Plane 11\Output\preferences\FDStoXP.prf"が生成されるので、Destination IPにCDUのモニターを接続しているリモートPCのアドレスをセット。
5.ZIBOのpluginフォルダ "...X-Plane 11\Aircraft … B737-800X\plugins\xlua\scripts\" に "...\FDStoXP\Script"フォルダ内にあるキャプテン側CDUスクリプト ”B738X.fds_cdu_cpt” をコピペ
6.リモートPCを起動して、”...\FDStoXP\Java Client”内の”CDUClient.jar”を起動
7.X-Plane起動

■インストール手順動画


上記手順でXPLANEを起動すると、リレースイッチのカチッという音とともにリモートPCのCDU画面が起動し、CDUのバックライトが点灯。
機体の電源をを入れるとCDU画面が表示され、操作可能になります。

IMG_4354.jpg

XP11への手持ちハードウェア資産の接続は、いまのところSISMO以外は行けそうな感じ。
SISMOのボードはSC-PascalでIOCP経由で通信するのでこれはかなり難しそう。
場合によってはOVHDのボードをOpencockpitsかFDSに交換かも。。。
これはやりたくないなぁ。。。


nice!(0)  コメント(2) 

XP11 ZIBOにRevsim TQを接続する その5 [X-Plane]

OCUSBMapper経由でRevsimを接続する件も、今回が最後。
スピードブレーキです。

日本語でプログラムを書くとこんな流れ。

◆デバイス入出力値
dcmDR_input_analog[4] :revsimスピードブレーキポテンショメーターからの取得値 0-164
dcmDR_input_analog[5]:revsim 左TQポテンショメーター位置 0-242
dcmDR_output_motor[0]:スピードブレーキのDCモーターへの入力値 0:停止、120:展開、220:格納

◆プログラム上の変数
revsim_sb_pos:revsimポテンショメーターからの取得値 0-1
simDR_sb_in:シム上のスピードブレーキ位置(入力先)
sb_arm:スピードブレーキアーム状態 0:disarm、1:arm
simDR_rev_full:リバーサーの状態 0.06:フルリバース
sb_sit:スピードブレーキの状態追跡変数 0:初期状態、1:フル展開中、2:フル展開モーター停止、3:格納中


◆流れ
1.revsim_sb_posが0.303804よりも小さく0.203804よりも大きい場合はスピードブレーキをアーム
2.上記範囲外の場合は、revsimPOTの値をシミュレーターへ入力してアナログ操作を可能に。同時にスピードブレーキをディスアーム
3.スピードブレーキがアームされていて、かつリバーサーがフル状態になったら、スピードブレーキを展開(モーター稼働)
4.スピードブレーキがフル展開されたらモーター稼働停止
5.フル展開状態で左TQが10%程度まで入ったらスピードブレーキ格納(モーター稼働)
7.格納されたらモーター停止。スピードブレーキアーム変数、状態追跡状態変数リセット

本来なら、「接地」でスピードブレーキが展開されるところなんでしょうが、その値がどこで取得できるかわからなかったので、とりあえずリバーサーを操作したら展開するようにしてます。
たたむときはスロットルを入れると自動格納するようにしてみました。

◆動作状況(動画)


◆オイル
ちなみに、しばらくオイルをさしてなかったら動かなくなってしまっていたので、チェーンソー用オイルを購入してスピードブレーキの接点部に塗布してみました。
粘度が適度にあってちょうどいいです。



◆ソースコード(スピードブレーキ該当部のみ)

--*************************************************************************************--
--** 					               CONSTANTS                    				 **--
--*************************************************************************************--

DCMOTORS_DEVICE = 0

--*************************************************************************************--
--** 				             FIND X-PLANE DATAREFS            			    	 **--
--*************************************************************************************--

simDR_sb_pos		= find_dataref("sim/cockpit2/controls/speedbrake_ratio")
simDR_sb_in		  = find_dataref("laminar/B738/flt_ctrls/speedbrake_lever")
simDR_rev_full		= find_dataref("laminar/B738/flt_ctrls/reverse_lever1")

--*************************************************************************************--
--** 				              FIND CUSTOM DATAREFS             			    	 **--
--*************************************************************************************--

dcmDR_input_analog	= find_dataref("pikitanga/ocusbmapper/dcm" .. DCMOTORS_DEVICE .. "/input/analog")
dcmDR_output_motor	= find_dataref("pikitanga/ocusbmapper/dcm" .. DCMOTORS_DEVICE .. "/output/motor")

--*************************************************************************************--
--** 				                 SYSTEM FUNCTIONS           	    			 **--
--*************************************************************************************--

function process_speedbrake()

	-- revsim speedbrake position
	revsim_sb_pos = dcmDR_input_analog[4] / 160

	-- speed brake deproy
	if (revsim_sb_pos > 0.303804) then
			simDR_sb_in = revsim_sb_pos
			sb_arm = 0
	end

	-- speed brake detract
	if (revsim_sb_pos < 0.203804) then
			simDR_sb_in = revsim_sb_pos
			sb_arm = 0
	end

	-- speed brake arm
	if (sb_arm == 0) then
		if (revsim_sb_pos > 0.203804) then
			if (revsim_sb_pos < 0.303804) then
				simDR_sb_in = 0.0889
				sb_arm = 1
			end
		end
	end

	-- speed brake deproy in landing
	if (sb_arm == 1) then
		if (simDR_rev_full == 0.06) then
			dcmDR_output_motor[0] = 120
			sb_sit = 1
		end
	end

	-- speed brake motor off
	if (sb_sit == 1) then
		if (revsim_sb_pos > 0.9) then
			dcmDR_output_motor[0] = 0
			sb_sit = 2
		end
	end

	-- speed brake detent after landing
	if (sb_sit == 2) then
		if (dcmDR_input_analog[5] > 50) then
			dcmDR_output_motor[0] = 220
			sb_sit = 3
		end
	end

	-- speed brake motor off
	if (sb_sit == 3) then
		if (revsim_sb_pos < 0.1) then
			dcmDR_output_motor[0] = 0
			sb_sit = 0
			sb_arm = 0
		end
	end

end


--*************************************************************************************--
--** 				               XLUA EVENT CALLBACKS       	        			 **--
--*************************************************************************************--

function before_physics()

	process_speedbrake()

end




nice!(0)  コメント(0) 

XP11 ZIBOにRevsim TQを接続する その4 [X-Plane]

OCUSBMapperもシリーズその4になりましたが、今度はトリムインジケーターとトリムホイールを動作させます。
トリムはシム上のデータを取得してモーターを駆動するだけなのでシンプルです。

1.ZIBO→デバイス
①シム上のトリムインジケーター位置を読み取る。
②Revsim上のインジケーター位置と異なる場合はモーターを前後に駆動させる。
③トリム調整中はトリムホイールのモーターを前後に駆動させる。

2.デバイス→ZIBO
①YOKEのトリムスイッチが押されたらシム上のZIBOにインプット



--*************************************************************************************--
--** 					               CONSTANTS                    				 **--
--*************************************************************************************--

DCMOTORS_DEVICE = 0


--*************************************************************************************--
--** 				             FIND X-PLANE DATAREFS            			    	 **--
--*************************************************************************************--

--シム中のトリムインジケーターの位置とトリム操作状況を読み取る。
simDR_trim_ind		= find_dataref("laminar/B738/flt_ctrls/trim_wheel")
simDR_trim_up		= find_dataref("sim/cockpit2/annunciators/autopilot_trim_up")
simDR_trim_down		= find_dataref("sim/cockpit2/annunciators/autopilot_trim_down")

--*************************************************************************************--
--** 				              FIND CUSTOM DATAREFS             			    	 **--
--*************************************************************************************--

--opencockpitcardのデバイス設定
dcmDR_input_analog	= find_dataref("pikitanga/ocusbmapper/dcm" .. DCMOTORS_DEVICE .. "/input/analog")
dcmDR_output_motor	= find_dataref("pikitanga/ocusbmapper/dcm" .. DCMOTORS_DEVICE .. "/output/motor")

--*************************************************************************************--
--** 				                 SYSTEM FUNCTIONS           	    			 **--
--*************************************************************************************--

function process_trim()

	-- trim position

  --revsimポテンショメーターとシム内の値の整合性を取る
	revsim_trim_pos = 2.4244 * dcmDR_input_analog[3] / 170 - 1.4244
 
  --トリムインジケーターの前後位置セット
	trim_pos1 = simDR_trim_ind + 0.03
	trim_pos2 = simDR_trim_ind - 0.03

	--trim indicator

	-- trim up

  --revsimがシム位置より小さい場合はモーター前進回転。位置を超えたら停止。
		if (trim_pos1 > revsim_trim_pos) then        
			dcmDR_output_motor[5] = 10
			if (trim_pos2 < revsim_trim_pos) then
				dcmDR_output_motor[5] = 0
			end   
		end

  --revsimがシム位置より大きい場合はモーター後進回転。位置を超えたら停止。        
	-- trim down
		if (trim_pos2 < revsim_trim_pos) then        
			dcmDR_output_motor[5] = 150
			if (trim_pos1 > revsim_trim_pos) then
				dcmDR_output_motor[5] = 0
			end   
		end

	-- trim wheel

    --トリム動作状況判断用変数セット
		trim_sit = simDR_trim_up + simDR_trim_down
    
    --トリムが動作中、かつdown方向ならモーターダウン方向へ回転。逆はアップ方向へ回転
		if (trim_sit > 0) then
			if (simDR_trim_down == 1) then
				dcmDR_output_motor[3] = 124
			end
			if (simDR_trim_up == 1) then
				dcmDR_output_motor[3] = 250
			end
		end

    --トリムが動作が停止中の場合ホイールモーターは停止。
		if (trim_sit == 0) then
			dcmDR_output_motor[3] = 0
		end

end


--*************************************************************************************--
--** 				               XLUA EVENT CALLBACKS       	        			 **--
--*************************************************************************************--

function before_physics()

	process_trim()

end




動作状況はこちら↓


次回はシリーズ最後でスピードブレーキです。


nice!(0)  コメント(0) 

XP11 ZIBOにRevsim TQを接続する その3 [X-Plane]

Revsim TQからXP11 ZIBO737へフラップを入力します。

これはめちゃめちゃ簡単。

Revsimのフラップポテンショメーターの値を読み、一定の範囲内に入ったらFLAP Xをセットするという命令を繰り返すだけ。

我が家のRevsimポテンショメーターは0から228なので、入力値を228で割って0から1の値に換算。
sim上のフラップ0からフラップ40までの位置をそれぞれ設定しておき、±0.05の範囲に入ったら、各フラップに設定するコマンドを投げてやる、という簡単なプログラム。




--*************************************************************************************--
--** 					               CONSTANTS                    				 **--
--*************************************************************************************--

DCMOTORS_DEVICE = 0

--*************************************************************************************--
--** 				              FIND CUSTOM DATAREFS             			    	 **--
--*************************************************************************************--

dcmDR_input_analog	= find_dataref("pikitanga/ocusbmapper/dcm" .. DCMOTORS_DEVICE .. "/input/analog")
dcmDR_output_motor	= find_dataref("pikitanga/ocusbmapper/dcm" .. DCMOTORS_DEVICE .. "/output/motor")

--*************************************************************************************--
--** 				              FIND CUSTOM COMMANDS              			     **--
--*************************************************************************************--

simDR_flap0		= find_command("laminar/B738/push_button/flaps_0")
simDR_flap1		= find_command("laminar/B738/push_button/flaps_1")
simDR_flap2		= find_command("laminar/B738/push_button/flaps_2")
simDR_flap5		= find_command("laminar/B738/push_button/flaps_5")
simDR_flap10		= find_command("laminar/B738/push_button/flaps_10")
simDR_flap15		= find_command("laminar/B738/push_button/flaps_15")
simDR_flap25		= find_command("laminar/B738/push_button/flaps_25")
simDR_flap30		= find_command("laminar/B738/push_button/flaps_30")
simDR_flap40		= find_command("laminar/B738/push_button/flaps_40")

--*************************************************************************************--
--** 					            LOCAL VARIABLES                 				 **--
--*************************************************************************************--

flaps_0                = 0.008772
flaps_1                = 0.100877
flaps_2                = 0.22807
flaps_5                = 0.381579
flaps_10              = 0.52193
flaps_15              = 0.653509
flaps_25              = 0.798246
flaps_30              = 0.894737
flaps_40              = 1.004386
flap_plus               = 0.05
flap_minus            = -0.05

--*************************************************************************************--
--** 				                 SYSTEM FUNCTIONS           	    			 **--
--*************************************************************************************--

function process_flaps()

-- flap position
revsim_flaps_pos = dcmDR_input_analog[2] / 228
	if (revsim_flaps_pos < flaps_0 + flap_plus) then
		simDR_flap0:once()
	end

	if (revsim_flaps_pos < flaps_1 + flap_plus) then
		if (revsim_flaps_pos > flaps_1 + flap_minus) then
			simDR_flap1:once()
		end
	end

	if (revsim_flaps_pos < flaps_2 + flap_plus) then
		if (revsim_flaps_pos > flaps_2 + flap_minus) then
			simDR_flap2:once()
		end
	end

	if (revsim_flaps_pos < flaps_5 + flap_plus) then
		if (revsim_flaps_pos > flaps_5 + flap_minus) then
			simDR_flap5:once()
		end
	end

	if (revsim_flaps_pos < flaps_10 + flap_plus) then
		if (revsim_flaps_pos > flaps_10 + flap_minus) then
			simDR_flap10:once()
		end
	end

	if (revsim_flaps_pos < flaps_15 + flap_plus) then
		if (revsim_flaps_pos > flaps_15 + flap_minus) then
			simDR_flap15:once()
		end
	end

	if (revsim_flaps_pos < flaps_25 + flap_plus) then
		if (revsim_flaps_pos > flaps_25 + flap_minus) then
			simDR_flap25:once()
		end
	end

	if (revsim_flaps_pos < flaps_30 + flap_plus) then
		if (revsim_flaps_pos > flaps_30 + flap_minus) then
			simDR_flap30:once()
		end
	end

	if (revsim_flaps_pos > flaps_40 + flap_minus) then
			simDR_flap40:once()
	end

end


--*************************************************************************************--
--** 				               XLUA EVENT CALLBACKS       	        			 **--
--*************************************************************************************--

function before_physics()

	process_flaps()

end



動作状況


次はトリムインジケーターとトリムホイールを設定します。






nice!(0)  コメント(0) 

XP11 ZIBOにRevsim TQを接続する その2 [X-Plane]

OCUSBMAPPER経由でXP11のZIBO737とRevolutionSimproductsのTQをつなげます。

以下がOCUSBMAPPERのスクリプト。

if文だけの超シンプル構成(笑)

ATがdisarmだったら、RevsimTQのポテンショメーターの値をXP11に渡す。
ATがarmだったら、sim上のTQの位置とRevsimTQの位置を比べて、それに応じた値をモーターへ入力せよ。
というだけの簡単なスクリプト。

これでスロットルの動作はOK。



--*************************************************************************************--
--** 					               CONSTANTS
--*************************************************************************************--

DCMOTORS_DEVICE = 0

--*************************************************************************************--
--** 				               FIND X-PLANE COMMANDS
--*************************************************************************************--

simDR_tq_pos		= find_dataref("sim/cockpit2/engine/actuators/throttle_ratio")
simDR_at_pos		= find_dataref("laminar/B738/autopilot/autothrottle_arm_pos")


--*************************************************************************************--
--** 				              FIND CUSTOM DATAREFS
--*************************************************************************************--

dcmDR_input_analog	= find_dataref("pikitanga/ocusbmapper/dcm" .. DCMOTORS_DEVICE .. "/input/analog")
dcmDR_output_motor	= find_dataref("pikitanga/ocusbmapper/dcm" .. DCMOTORS_DEVICE .. "/output/motor")

--*************************************************************************************--
--** 				                 SYSTEM FUNCTIONS 
--*************************************************************************************--

function process_tq()

	if (simDR_at_pos == 0) then
		simDR_tq_pos[0] = dcmDR_input_analog[5] / 242
		simDR_tq_pos[1] = dcmDR_input_analog[1] / 242
	end


	if (simDR_at_pos == 1) then

	-- tq position
	revsim_left_tq_pos = dcmDR_input_analog[5] / 242
	left_tq_pos1 = simDR_tq_pos[0] + 0.05
	left_tq_pos2 = simDR_tq_pos[0] - 0.05

	revsim_right_tq_pos = dcmDR_input_analog[1] / 242
	right_tq_pos1 = simDR_tq_pos[1] + 0.05
	right_tq_pos2 = simDR_tq_pos[1] - 0.05

	-- left tq up
		if (left_tq_pos1 > revsim_left_tq_pos) then        
			dcmDR_output_motor[1] = 45
			if (left_tq_pos2 < revsim_left_tq_pos) then
				dcmDR_output_motor[1] = 0
			end   
		end

	-- left tq down
		if (left_tq_pos2 < revsim_left_tq_pos) then        
			dcmDR_output_motor[1] = 170
			if (left_tq_pos1 > revsim_left_tq_pos) then
				dcmDR_output_motor[1] = 0
			end   
		end

	-- right tq up
		if (right_tq_pos1 > revsim_right_tq_pos) then        
			dcmDR_output_motor[2] = 45
			if (right_tq_pos2 < revsim_right_tq_pos) then
				dcmDR_output_motor[2] = 0
			end   
		end

	-- right tq down
		if (right_tq_pos2 < revsim_right_tq_pos) then        
			dcmDR_output_motor[2] = 170
			if (right_tq_pos1 > revsim_right_tq_pos) then
				dcmDR_output_motor[2] = 0
			end   
		end

	end

end


--*************************************************************************************--
--** 				               XLUA EVENT CALLBACKS  
--*************************************************************************************--

function before_physics()

	process_tq()

end




以下、動作状況。



次回はフラップかな。






nice!(0)  コメント(0)