トイ クワッド に嵌った。:Deviation 演算ロジック解説編

Deviation ロジック演算解説編
2019-MAR-15
DEVIATION FORUM に面白そうな御題がありましたので、
出来るだけ簡単な方法で、実現してみました。
(実現方法は、他にも有ります。)
Setting 3 pos rate switches for t8sg v2 plus
https://www.deviationtx.com/forum/3-feedback-questions/8304-setting-3-pos-rate-switches-for-t8sg-v2-plus#73369
御題
 Flaps are now controlled by (I’m a Mode 1 flyer)
 SW “C”
 Pos 1: “CO” : flaps up
 Pos 2: “C1” : take off flaps 10-15 degrees
 Pos 3: “C2” : landing flaps 45-60 degrees
 I wish to Mix down ELEVATOR Trim to FLAP in Position 3: ONLY
となっていますが、
Stick move : -100% ~ 0% ~ 100%
                      0% is Stick Neutral
ですし、
Servo degrees ex. 1?:   0 ~ 45 ~ 90 ,   0 ~ 90 ~ 180
Servo degrees ex. 2?: -45 ~  0 ~ 45 , -90 ~  0 ~ 90
どっちなの?とか、
Stick Neutralの角度が不明、-100%~100% の移動角度が不明ですので、
回答に困ります。、
Since i made a sample, please try setting range conversion.
I use Virt 1/2 for explanation and verification.
There are other realization methods, so please try.
Value monitor:Main menu -> 2.Transmitter menu ->
         2.Channel monitor : Mixer output ◀▶:Stick input
と、回答しましたが、
前程条件:御題を次の様に書換えています。
入力1:SW “C”、入力2:AUX4、入力3:AUX5
AUX4 / AUX5 は、スティック入力でも可能です。
 Pos 1: “CO”       : flaps up EX.Val -5%
 Pos 2: “C1”+ AUX4 : take off flaps 10-15 %
 Pos 3: “C2”+ AUX5 : landing flaps 45-60 %
※X:入力を示します、Y:出力を示します。
<< EX 1 >>
Vart1 : Complex , Mixers : 3 の設定をします。
01. <“C2”& AUX4(44%~60%) : landing flaps 44%-60% , % to digree conversion is required.>
            44% , 52% , 60% :Diff 8% , 8% ですが、7% , 8% で良ければ、45%~60% も可能
            45% , 52.5% , 60% : 0.5 , Few can not express、Deviation は、少数位が扱えない。
 
  Vart1 page:1          、頁:1
 Switch:SW C2          、スイッチ:SW-C2、式有効条件を指定します。
 Mux:replace           、リプレースを選択
 Src:AUX4            、入力を指定
 Curve:3 Point (ENT)       、3点補正を選択
  Point1:44,Point2:52,Point3:60 、補正値1、2、3、
          操作感のずれを気にしないなら、45 / 52 / 60
 Scale:100            、100%
 Offset:0            、 0%
 式:Y=aX+b{X|-100%≦X≦100%}
02. <“C1”& AUX4( 9%~15%) : take off flaps 9%-15% , % to degree conversion is required.>
            9% , 12% , 15%
           10% , 12.5% , 15% : 0.5 , Few can not express
 Vart1 page:2          、頁:2
 Switch:SW C1          、スイッチ:SW-C1、式有効条件を指定します。
 Mux:replace          、リプレースを選択
 Src:AUX4            、入力を指定
 Curve:3 Point (ENT)       、3点補正を選択
   Point1: 9,Point2:12,Point3:15 、補正値1、2、3
          操作感のずれを気にしないなら、10 / 12 / 15
 Scale:100            、100%
 Offset:0            、 0%
 式:Y=aX+b{X|-100%≦X≦100%}
03. <“CO” : flaps up. >
 Vart1 page:3          、頁:3
 Switch:SW C0          、スイッチ:SW-C0、式有効条件を指定します。
 Mux:replace          、リプレースを選択
 Src:None            、無指定
 Curve:Fixed           、Scale の値で置換
 Scale : -5%(ex.)        、置換数値
 Offset:0             、0%
 式:Y=a
04. < Please check Vart1 : 1-3 mix >
    Virt1 - C0        : -5%
          - C1 & AUX4 :  9% to 15%
          - C2 & AUX4 : 44% to 60%
 と、出力が変化します。
05. Plese try ELEVATOR MIX .
    % to degree conversion is required.

<< EX 2 >>
Vart2 : Complex , Mixers : 7 の設定をします。
Y=aX+b、{X|-100%≦X≦100%}
では、検証結果を考えるのが面倒なので、
0~100%で、扱う様に細工がしてあります。
01. <“C2”& AUX5(45%~60%) : landing flaps 45%-60% , % to digree conversion is required.>
    45% to 60% : Diff 15% , Offset 45% 、差分は15%、オフセット45%
 Vart2 page:1          、頁:1
 Switch:SW C2          、スイッチ:SW-C2、式有効条件を指定します。
 Mux:replace          、リプレースを選択
 Src:AUX5            、入力を指定
 Curve:1 to 1          、1対1を指定
 Scale:50%           、Y=0.5X
 Offset:50%           、Y=Y+50
 式:Y=aX+b、Y=0.5X+50、
 結果:X|-100%≦X≦100% で、Y|0%≦Y≦100%
 ’
 Vart2 page:2          、頁:2
 Switch:SW C2          、スイッチ:SW-C2、式有効条件を指定します。
 Mux:mult            、掛算を指定
 Src:None            、無指定
 Curve:Fixed           、置換を指定
 Scale:15            、Y=aX、a=15%
 Offset:0            、
 式:Y=aX+b
 結果:X|-100%≦X≦100% で、Y|0%≦Y≦15%
 ’
 Vart2 page:3          、頁:3
 Switch:SW C2          、スイッチ:SW-C2、式有効条件を指定します。
 Mux:add            、加算を指定
 Src:None            、無指定
 Curve:Fixed          、置換を指定
 Scale:45            、Y=aX+b、加算値(b):45
 Offset:0            、0指定
 式:Y=aX+b
 結果:X|-100%≦X≦100% で、Y|45%≦Y≦60%
02. <“C1”& AUX4( 10%~15%) : take off flaps 10%-15% , % to degree conversion is required.>
           10% , 15% : Diff 5% , Offset 10%
 数値が異なるだけで、同じ仕組みなので省略
 Vart2 page:4
 Switch:SW C1
 Mux:replace
 Src:AUX5
 Curve:1 to 1
 Scale:50
 Offset:50
 式:Y=aX+b、Y=0.5X+50、
 結果:X|-100%≦X≦100% で、Y|0%≦Y≦100%
 ’
 Vart2 page:5
 Switch:SW C1
 Mux:mult
 Src:None
 Curve:Fixed
 Scale:5
 Offset:0
 式:Y=aX+b
 結果:X|-100%≦X≦100% で、Y|0%≦Y≦5%
 ’
 Vart2 page:6
 Switch:SW C1
 Mux:add
 Src:None
 Curve:Fixed
 Scale:10
 Offset:0
 式:Y=aX+b
 結果:X|-100%≦X≦100% で、Y|10%≦Y≦15%
03. <“CO” : flaps up. >
 数値が異なるだけで、同じ仕組みなので省略
 Vart2 page:7
 Switch:SW C0
 Mux:replace
 Src:None
 Curve:Fixed
 Scale : -5%(ex.)
 Offset:0
 式:Y=a
04. < Please check Vart2 : 1-3 mix >
    Virt2 - C0        : -5%
          - C1 & AUX5 : 10% to 15%
          - C2 & AUX5 : 45% to 60%
05. Plese try ELEVATOR MIX .
    % to degree conversion is required.

※慣れない間は、-100%~0%~100%の値に混乱するかもしれませんが、
 -100%~100%と考えずに、ざっくり、数値は、
 0~200 変化すると考えて、下さい。
 最終結果は、計算した結果を、-100すると、
 理解してください。
 -50%~50%の場合は、0~100 変化するので、
 まずは、0~100変化する数値で考えて、結果を-50します。
 -100%~0%~100%:変化量は、200 ですよね?
 - 50%~0%~ 50%:変化量は、100 ですよね?
※4~20mA入力を、 -10℃~40℃ で表現するには、
  Y=( ((40-(-10))/(X-4)/(20-4)) )+(-10) 
  Y=( 50/(X-4)/16 )-10
    (X-4)/16:割合を出す
    式を変形して、
    Y=(50/16)X-10
※0~4095を、-100%~100% で表現するには、
  Y=( (100-(-100))/X/4095 ) +(-100)
  Y=200/X/4095ー100
     X/4095:割合を出す
    式を変形して、
    Y=(200/4095)X-100
※つまり、
 Y= (YrangeH-YrangeL) / ( X - XrangeL ) / (XrangeH-XrangeL) + YrangeL

※制約:各CH、仮想CH毎に指定出来るミキサー:10個です。
  これを超える場合は、仮想CHを複数使って計算する事になります。
  演算の実行順は、
   CH1-ミキサー1~10
    ~CH16-ミキサー1~10
   仮想CH1-ミキサー1~10
    ~仮想CH10-ミキサー1~10
  の筈です。
  実CH1で、実CH2~10や仮想CH1~10を参照する様な事や、、
  仮想CH1で、仮想CH2~10を参照する様な事は、
  実行順に十分注意を払ってください。