XP11 Prosim設定 その2(TQ DCモーター) [X-Plane]
次にRevolution SimproductsのMotorized TQのスロットルをProsim経由で動かす設定を行います。
Revsimは以下5つのDCモーターとポテンショメーターで構成されています。
①LEFT TQ
②RIGHT TQ
③TRIM Gauge
④TRIM Wheel
⑤SPEED Brake
OpencockpitsのDCモーターカード
我が家TQの接続状況
ServoならProsimの値をSIOCを経由して直接サーボモーターに渡してやれば動きます(例:FLAPゲージ)が、DCモーターは動かす際に電流量を入力してやる必要があるので、多少SIOCで計算が必要です。
5つのDCモーター制御に共通する基本的な流れとしては、Prosimから出力された「あるべき位置」を受け取って、デバイスのポテンショメーターから得た「現在位置」を比較し、違う場合にDCモーターへ信号を送って動作させる、というロジックです。
以下のようなイメージ
■SIOC(LEFTのみ)
元々提供されているスクリプトがあるので、それをベースに入力元をFSUIPCからProsimに変更しました。
1.現在位置を0001にセット。DCモーター動作ルーチン呼び出し
Var 0001, name ENG1_Pot, static, Link USB_ANALOGIC, Device 1, Input 5, PosL 10, PosC 122, PosR 255
{
CALL &ENG1_Pot_MOVED
}
2.「現在位置」が変わった場合動作位置計算(手でスロットルを動かした場合)
Var 0008, name ThrottleMan1
{
&threskideger = DELAY &ThrottleMan1 ,20
IF &ThrottleMan1 <> &threskideger
{
CALL &potfarkcalc // 動作位置計算呼び出し
}
}
3.あるべき位置が変わった場合動作位置計算(Prosimからの指示値が変化した場合)
Var 0025, name threskideger
Var 0026, name throttleMot1 // Prosimからあるべき位置取得
{
&threskideger = DELAY &throttleMot1 ,20
IF &throttleMot1 <> &threskideger
{
CALL &potfarkcalc // 動作位置計算呼び出し
}
}
4.動作位置計算(位置に幅を持たせることで細かな動きを排除する目的)
Var 0032, name potminus
Var 0033, name potplus
Var 0054, name potfarkcalc, Link SUBRUTINE
{
&potfark = &throttleMot1
&potplus = &potfark + 3
&potminus = &potfark - 3
}
5.DCモーター動作ルーチン
Var 0018, name ENG1_Pot_MOVED, Link SUBRUTINE
{
IF &ATengage = 1
{
IF &ENG1_Pot < &potfark
{
CALL &ThrMotionFWD // スロットル前進ルーチン
}
IF &ENG1_Pot > &potfark
{
CALL &ThrMotionBACK // スロットル後退ルーチン
}
IF &ENG1_Pot < &potplus
{
IF &ENG1_Pot > &potminus
{
&THR_MOTOR1 = 0 // スロットル停止
}
}
}
IF &ATengage = 0
{
&ThrottleMan1 = &ENG1_Pot
CALL &MotorStop
}
}
6.スロットル前進ルーチン
フライトモードに応じてスロットルを前進させる値をDCモーターへ出力
※後退ルーチンも同様なので省略
Var 0056, name ThrMotionFWD, Link SUBRUTINE
{
IF &Thrmode = 2
{
&THR_MOTOR1 = &SPD_THR_UP1
}
IF &Thrmode = 3
{
&THR_MOTOR1 = &SPD_THR_UP1
}
IF &Thrmode = 6
{
&THR_MOTOR1 = &SPD_THR_TOGA
}
IF &Thrmode = 9
{
&THR_MOTOR1 = &SPD_THR_UP1
}
IF &Thrmode = 1
{
&ThrottleMan1 = &ENG1_Pot
CALL &MotorStop
}
IF &Thrmode = 5
{
&THR_MOTOR1 = &SPD_THR_UP1
}
}
以上で、一応スロットルはP3Dの時と同じレベルで動作するようになりました。
次は同じ要領でTRIMゲージとTRIMホイールを設定していきます。
Revsimは以下5つのDCモーターとポテンショメーターで構成されています。
①LEFT TQ
②RIGHT TQ
③TRIM Gauge
④TRIM Wheel
⑤SPEED Brake
OpencockpitsのDCモーターカード
我が家TQの接続状況
ServoならProsimの値をSIOCを経由して直接サーボモーターに渡してやれば動きます(例:FLAPゲージ)が、DCモーターは動かす際に電流量を入力してやる必要があるので、多少SIOCで計算が必要です。
5つのDCモーター制御に共通する基本的な流れとしては、Prosimから出力された「あるべき位置」を受け取って、デバイスのポテンショメーターから得た「現在位置」を比較し、違う場合にDCモーターへ信号を送って動作させる、というロジックです。
以下のようなイメージ
■SIOC(LEFTのみ)
元々提供されているスクリプトがあるので、それをベースに入力元をFSUIPCからProsimに変更しました。
1.現在位置を0001にセット。DCモーター動作ルーチン呼び出し
Var 0001, name ENG1_Pot, static, Link USB_ANALOGIC, Device 1, Input 5, PosL 10, PosC 122, PosR 255
{
CALL &ENG1_Pot_MOVED
}
2.「現在位置」が変わった場合動作位置計算(手でスロットルを動かした場合)
Var 0008, name ThrottleMan1
{
&threskideger = DELAY &ThrottleMan1 ,20
IF &ThrottleMan1 <> &threskideger
{
CALL &potfarkcalc // 動作位置計算呼び出し
}
}
3.あるべき位置が変わった場合動作位置計算(Prosimからの指示値が変化した場合)
Var 0025, name threskideger
Var 0026, name throttleMot1 // Prosimからあるべき位置取得
{
&threskideger = DELAY &throttleMot1 ,20
IF &throttleMot1 <> &threskideger
{
CALL &potfarkcalc // 動作位置計算呼び出し
}
}
4.動作位置計算(位置に幅を持たせることで細かな動きを排除する目的)
Var 0032, name potminus
Var 0033, name potplus
Var 0054, name potfarkcalc, Link SUBRUTINE
{
&potfark = &throttleMot1
&potplus = &potfark + 3
&potminus = &potfark - 3
}
5.DCモーター動作ルーチン
Var 0018, name ENG1_Pot_MOVED, Link SUBRUTINE
{
IF &ATengage = 1
{
IF &ENG1_Pot < &potfark
{
CALL &ThrMotionFWD // スロットル前進ルーチン
}
IF &ENG1_Pot > &potfark
{
CALL &ThrMotionBACK // スロットル後退ルーチン
}
IF &ENG1_Pot < &potplus
{
IF &ENG1_Pot > &potminus
{
&THR_MOTOR1 = 0 // スロットル停止
}
}
}
IF &ATengage = 0
{
&ThrottleMan1 = &ENG1_Pot
CALL &MotorStop
}
}
6.スロットル前進ルーチン
フライトモードに応じてスロットルを前進させる値をDCモーターへ出力
※後退ルーチンも同様なので省略
Var 0056, name ThrMotionFWD, Link SUBRUTINE
{
IF &Thrmode = 2
{
&THR_MOTOR1 = &SPD_THR_UP1
}
IF &Thrmode = 3
{
&THR_MOTOR1 = &SPD_THR_UP1
}
IF &Thrmode = 6
{
&THR_MOTOR1 = &SPD_THR_TOGA
}
IF &Thrmode = 9
{
&THR_MOTOR1 = &SPD_THR_UP1
}
IF &Thrmode = 1
{
&ThrottleMan1 = &ENG1_Pot
CALL &MotorStop
}
IF &Thrmode = 5
{
&THR_MOTOR1 = &SPD_THR_UP1
}
}
以上で、一応スロットルはP3Dの時と同じレベルで動作するようになりました。
次は同じ要領でTRIMゲージとTRIMホイールを設定していきます。
2018-05-13 06:45
nice!(0)
コメント(1)
keisimさん
こんにちは。SIOCを使いこなすことができない私から拝見すると「素晴らしい」の一言です。大変勉強になります。実際にはオートスロットルの有無等の複雑なロジックが組み合わされているのでしょうね。
項目4 動作位置計算あたりを調整すると購入時に感じられていたスロットルレバーが前後に動く挙動が調整できるのでしょうか。
使いこなせれば自分で独自に設定できるところがSIOCの良いところだとつくづく感じました。是非、頑張ってくださいませ。
by ntaka (2018-05-16 20:17)