Results 1 to 4 of 4
  1. #1
    75+ Posting Member


    peterkwu's Avatar
    Join Date
    Mar 2008
    Location
    Washington, DC
    Posts
    76
    Contribute If you enjoy reading the
    content here, click the below
    image to support MyCockpit site.
    Click Here To Contribute To Our Site

    Detecting a changing value in SIOC

    I'm trying to wire up a real LE devices annunciator for a B737 aft overhead. I want the yellow transit lights to come on at the appropriate time, e.g. when the devices are actually in transit.

    My question is, how do I detect a changing value in SIOC? I'm successfully reading in the appropriate offset with FSUIPC, but I want to know when the value changed compared to the last time the offset value was updated. That way, I can turn the transit lights on when the value changes, and off when the value is constant.

    My code is below. Any comments appreciated.

    --
    Var 0079, name LastFlapsPos

    Var 0080, name FlapsTrlEdge, Link FSUIPC_IN, Offset $30E0, Length 2
    {
    L1 = 0
    L1 = V0080 - V0079

    IF L1 <> 0
    {//light transit lights

    &LAMP3 = 1
    &LAMP6 = 1
    &LAMP9 = 1
    &LAMP12 = 1
    &LAMP14 = 1
    &LAMP17 = 1
    &LAMP19 = 1
    &LAMP22 = 1
    &LAMP25 = 1
    &LAMP28 = 1
    }

    IF L1 = 0
    {//turn off transit lights
    &LAMP3 = 0
    &LAMP6 = 0
    &LAMP9 = 0
    &LAMP12 = 0
    &LAMP14 = 0
    &LAMP17 = 0
    &LAMP19 = 0
    &LAMP22 = 0
    &LAMP25 = 0
    &LAMP28 = 0

    }
    IF V0080 > 0
    {//light extended lights
    &LAMP10 = 1
    &LAMP13 = 1
    &LAMP15 = 1
    &LAMP16 = 1
    &LAMP18 = 1
    &LAMP21 = 1
    }
    ELSE
    {//turn off extended lights
    &LAMP10 = 0
    &LAMP13 = 0
    &LAMP15 = 0
    &LAMP16 = 0
    &LAMP18 = 0
    &LAMP21 = 0
    }



    L0 = V0080
    V0079 = L0

    }

  2. #2
    75+ Posting Member
    Join Date
    Apr 2009
    Location
    Toronto
    Posts
    125
    Contribute If you enjoy reading the
    content here, click the below
    image to support MyCockpit site.
    Click Here To Contribute To Our Site

    Phidgets Re: Detecting a changing value in SIOC

    Hello Peter.

    SIOC will drive your script if, and only if, the subject variable changes.


    IF L1 <> 0
    will always be true after the first time.


    IF L1 = 0

    {//turn off transit lights
    will never be executed after the first time.


    IF V0080 > 0

    {//light extended lights
    will give green in addition to yellow during transit.

    The question is how does one detect that the value has stopped changing and the required setting has been achieved.

    That could be done by observing the position of the flap lever, translating that to the desired flap extension and setting
    the lights according to the match with the values received from FSUIPC.

    I tried the following script and it seemed O.K. Maybe you can use it.

    Jim.

    ============================================

    //
    // The axis increment per notch is in offset $3BFA (2)
    // But it won't change after the aircraft is initialized
    // So better use a constant.
    //
    Var 1500, name FlapStep, Value 2048 // Per notch increment in axis value

    Var 1501, name FS_FlapSet, Link FSUIPC_IN, Offset $BDC, Length 4 // Lever position
    {
    L0 = &FS_FlapSet
    L0 = L0 / &FlapStep
    L0 = ROUND L0 // As Notch number

    // Set target position as degrees * 256

    IF L0 = 0
    {
    &FlapTarget = 0
    }
    IF L0 = 1
    {
    &FlapTarget = 256
    }
    IF L0 = 2
    {
    &FlapTarget = 512
    }
    IF L0 = 3
    {
    &FlapTarget = 1280
    }
    IF L0 = 4
    {
    &FlapTarget = 2560
    }
    IF L0 = 5
    {
    &FlapTarget = 3840
    }
    IF L0 = 6
    {
    &FlapTarget = 6400
    }
    IF L0 = 7
    {
    &FlapTarget = 7680
    }
    IF L0 = 8
    {
    &FlapTarget = 10240
    }
    }

    Var 1502, name FS_FlapCurt, Link FSUIPC_IN, Offset $30F0, Length 2 // Current degrees deployed * 256
    {
    IF &FS_FlapCurt <> &FlapTarget // In transit?
    {
    -transit lights on
    -deployed lights off
    }
    ELSE
    {
    IF &FlapTarget = 0 // Fully retracted?
    {
    -transit lights off
    -deployed lights off
    }
    ELSE // Deployed
    {
    -transit lights off
    -deployed lights on
    }
    }
    }

    Var 1503, name FlapTarget

  3. Thanks peterkwu thanked for this post
  4. #3
    75+ Posting Member


    peterkwu's Avatar
    Join Date
    Mar 2008
    Location
    Washington, DC
    Posts
    76
    Contribute If you enjoy reading the
    content here, click the below
    image to support MyCockpit site.
    Click Here To Contribute To Our Site

    Re: Detecting a changing value in SIOC

    Jim,

    Thanks so much. I woke up in the middle of the night last night thinking how I could compare the flap lever position to the actual position of the flaps, but hadn't thought through how to implement it.

    Your script worked the first time once I filled in the appropriate light assignments. I added another IF-ELSE condition to account for intermediate slat positions, which occur at 1, 2 and 5 degrees of trailing edge flaps, according to the Continental Airlines ops book for the 737NG.

    I'll post a video soon to get some opinions as to whether it works as it should in the real airplane.

    The completed script is below:

    // *****************************************************************************
    // * Config_SIOC ver 3.7B1 - By Manolo Vélez - www.opencockpits.com
    // *****************************************************************************
    // * FileName : sioc.txt
    // * Date : 1/30/2010



    Var 0000, name inicializa, Value 0
    {
    //&DIR = 1
    //enable the following line to run the sequential lamptest routine
    //CALL &lamptest
    //&timer = TIMER 99 ,0 ,100
    //CALL &AnalyzeLEFlaps

    }


    Var 1803, name LAMP3, Link IOCARD_OUT, Device 1, Output 3

    Var 1804, name LAMP4, Link IOCARD_OUT, Device 1, Output 4

    Var 1805, name LAMP5, Link IOCARD_OUT, Device 1, Output 5

    Var 1806, name LAMP6, Link IOCARD_OUT, Device 1, Output 6

    Var 1807, name LAMP7, Link IOCARD_OUT, Device 1, Output 7

    Var 1808, name LAMP8, Link IOCARD_OUT, Device 1, Output 8

    Var 1809, name LAMP9, Link IOCARD_OUT, Device 1, Output 9

    Var 1810, name LAMP10, Link IOCARD_OUT, Device 1, Output 10

    Var 1811, name LAMP11, Link IOCARD_OUT, Device 1, Output 11

    Var 1812, name LAMP12, Link IOCARD_OUT, Device 1, Output 12

    Var 1813, name LAMP13, Link IOCARD_OUT, Device 1, Output 13

    Var 1814, name LAMP14, Link IOCARD_OUT, Device 1, Output 14

    Var 1815, name LAMP15, Link IOCARD_OUT, Device 1, Output 15

    Var 1816, name LAMP16, Link IOCARD_OUT, Device 1, Output 16

    Var 1817, name LAMP17, Link IOCARD_OUT, Device 1, Output 17

    Var 1818, name LAMP18, Link IOCARD_OUT, Device 1, Output 18

    Var 1819, name LAMP19, Link IOCARD_OUT, Device 1, Output 19

    Var 1821, name LAMP21, Link IOCARD_OUT, Device 1, Output 21

    Var 1822, name LAMP22, Link IOCARD_OUT, Device 1, Output 22

    Var 1823, name LAMP23, Link IOCARD_OUT, Device 1, Output 23

    Var 1824, name LAMP24, Link IOCARD_OUT, Device 1, Output 24

    Var 1825, name LAMP25, Link IOCARD_OUT, Device 1, Output 25

    Var 1826, name LAMP26, Link IOCARD_OUT, Device 1, Output 26

    Var 1827, name LAMP27, Link IOCARD_OUT, Device 1, Output 27

    Var 1828, name LAMP28, Link IOCARD_OUT, Device 1, Output 28



    // The axis increment per notch is in offset $3BFA (2)
    // But it won't change after the aircraft is initialized
    // So better use a constant.
    //
    Var 1500, name FlapStep, Value 2048 // Per notch increment in axis value

    Var 1501, name FS_FlapSet, Link FSUIPC_IN, Offset $BDC, Length 4

    {

    L0 = &FS_FlapSet
    L0 = L0 / &FlapStep
    L0 = ROUND L0 // As Notch number

    // Set target position as degrees * 256

    IF L0 = 0
    {
    &FlapTarget = 0
    }
    IF L0 = 1
    {
    &FlapTarget = 256
    }
    IF L0 = 2
    {
    &FlapTarget = 512
    }
    IF L0 = 3
    {
    &FlapTarget = 1280
    }
    IF L0 = 4
    {
    &FlapTarget = 2560
    }
    IF L0 = 5
    {
    &FlapTarget = 3840
    }
    IF L0 = 6
    {
    &FlapTarget = 6400
    }
    IF L0 = 7
    {
    &FlapTarget = 7680
    }
    IF L0 = 8
    {
    &FlapTarget = 10240
    }
    }

    Var 1502, name FS_FlapCurt, Link FSUIPC_IN, Offset $30F0, Length 2 // Current degrees deployed * 256
    {
    IF &FS_FlapCurt <> &FlapTarget // In transit?

    {
    &LAMP3 = 1
    &LAMP6 = 1
    &LAMP9 = 1
    &LAMP12 = 1
    &LAMP14 = 1
    &LAMP17 = 1
    &LAMP19 = 1
    &LAMP22 = 1
    &LAMP25 = 1
    &LAMP28 = 1

    &LAMP4 = 0
    &LAMP5 = 0
    &LAMP7 = 0
    &LAMP8 = 0
    &LAMP10 = 0
    &LAMP13 = 0
    &LAMP15 = 0
    &LAMP16 = 0
    &LAMP18 = 0
    &LAMP21 = 0
    &LAMP23 = 0
    &LAMP24 = 0
    &LAMP26 = 0
    &LAMP27 = 0
    }

    ELSE

    {
    IF &FlapTarget = 0 // Fully retracted?
    {
    &LAMP3 = 0
    &LAMP6 = 0
    &LAMP9 = 0
    &LAMP12 = 0
    &LAMP14 = 0
    &LAMP17 = 0
    &LAMP19 = 0
    &LAMP22 = 0
    &LAMP25 = 0
    &LAMP28 = 0

    &LAMP4 = 0
    &LAMP5 = 0
    &LAMP7 = 0
    &LAMP8 = 0
    &LAMP10 = 0
    &LAMP13 = 0
    &LAMP15 = 0
    &LAMP16 = 0
    &LAMP18 = 0
    &LAMP21 = 0
    &LAMP23 = 0
    &LAMP24 = 0
    &LAMP26 = 0
    &LAMP27 = 0
    }
    ELSE // Deployed
    {
    IF &FlapTarget < 1000 // 1,2 and 5 degrees of trailing edge flaps
    {
    &LAMP3 = 0
    &LAMP6 = 0
    &LAMP9 = 0
    &LAMP12 = 0
    &LAMP14 = 0
    &LAMP17 = 0
    &LAMP19 = 0
    &LAMP22 = 0
    &LAMP25 = 0
    &LAMP28 = 0

    &LAMP4 = 1
    &LAMP5 = 0
    &LAMP7 = 1
    &LAMP8 = 0
    &LAMP10 = 1
    &LAMP13 = 1
    &LAMP15 = 1
    &LAMP16 = 1
    &LAMP18 = 1
    &LAMP21 = 1
    &LAMP23 = 0
    &LAMP24 = 1
    &LAMP26 = 0
    &LAMP27 = 1
    }

    ELSE // 10-40 degrees of trailing edge flaps
    {
    &LAMP3 = 0
    &LAMP6 = 0
    &LAMP9 = 0
    &LAMP12 = 0
    &LAMP14 = 0
    &LAMP17 = 0
    &LAMP19 = 0
    &LAMP22 = 0
    &LAMP25 = 0
    &LAMP28 = 0

    &LAMP4 = 0
    &LAMP5 = 1
    &LAMP7 = 0
    &LAMP8 = 1
    &LAMP10 = 1
    &LAMP13 = 1
    &LAMP15 = 1
    &LAMP16 = 1
    &LAMP18 = 1
    &LAMP21 = 1
    &LAMP23 = 1
    &LAMP24 = 0
    &LAMP26 = 0
    &LAMP27 = 1
    }
    }
    }
    }

    Var 1503, name FlapTarget

  5. #4
    75+ Posting Member
    Join Date
    Apr 2009
    Location
    Toronto
    Posts
    125
    Contribute If you enjoy reading the
    content here, click the below
    image to support MyCockpit site.
    Click Here To Contribute To Our Site

    Re: Detecting a changing value in SIOC

    You're welcome, Peter.

    I don't do 737 so I can't help with what the a/c actually does.

    I'm wondering about your lights. Seems like you could connect some of them together and save some - well, a lot of - output ports.

    Jim.

Similar Threads

  1. MCP digits not changing
    By drayton_k in forum OpenCockpits General Discussion
    Replies: 1
    Last Post: 04-04-2009, 03:41 AM
  2. Times are-a-Changing'
    By Blog Bot in forum MyCockpit Blog Entry Notifications
    Replies: 0
    Last Post: 01-21-2009, 04:00 AM
  3. Need Help For changing of time
    By raymtoh in forum PM General Q & A
    Replies: 2
    Last Post: 08-30-2007, 12:43 AM
  4. changing colour?!?!
    By smoki in forum PMSystems
    Replies: 3
    Last Post: 07-12-2007, 08:50 AM