SIOC-ohjelmointia (IOCards)

<< < (5/13) > >>

Jalmari:
Tässä yksi tapa. Huomaa, että 180 kts jälkeen mittarin neula näyttää nopeuden tiheämmin.
Koko servon aluehan toimii arvoilla 0- 1022. Neula on tässä mittarissa 0:ssa arvolla 1000
(huom kuinka nopeusnäytö ensin pidetään alle ~40kts  0:ssa alkamalla laskutoimitus 1110:stä)
Homma pyörii rattaiden vuoksi väärinpäin, joten lopullinen laskutoimitus vähentää servon arvoja.

Alussa offset muunnetaan knotseiksi ja sitten hammasrattaille (scale) sopivaksi.
Nämä arvot toimivat Simkitsin USB rattaille, en ole katsonut niiden suhdetta...
mutta IO consolesta (kiitos Tuomas vinkistä) saa hyvin ulos offsettien todelliset arvot ja loput onkin sitten simppeliä kerto- ja jakolaskua

(..ai miksi en käytänyt Simkitsin USB mittareita...no kun niissä esim Jetin nopeusmittari alkaa toimia vasta ~60 kts:n
jälkeen semmosella huimalla yht äkkisellä loikalla...ei hyvä..)


// ***************************************************************************
// ** JP - Caravelle, IAS-SPEED  ***********************************************
// ***************************************************************************
//
Var 0100, Link FSUIPC_IN, Offset $02BC, Length 4, Type 1 // IAS
{
   L0 = V0100 / 126.8 // IASoffset to kts   

   IF L0 < 180
   {
   L1 = L0 * 3.1 // scales LOW SPEED kts for servo
   }
   ELSE
   {
   L1 = L0 * 1.9 // scales HIGH SPEED kts for servo
   L1 = L1 + 180 // ADDS value if speed is more than 180 KTS
   }

   L2 = 1110 - L1 // servo calc _ anticlockwise
   
   IF L2 > 1000 // servo max limit
   {
   L2 = 1000
   }

   IF L2 < 20 // servo min limit
   {
   L2 = 20
   }
      
   V0120 = L2
   
}

Var 0120, Link USB_SERVOS, Device 0, Output 2, PosL 1, PosC 512, PosR 1023 // Airspeed Servo2

Jalmari:
Hei!

Miten SIOC lukee rotaryn encoderia....olisiko jossain nähtävissä malli...?

tigert:
Näin se taitaa mennä:

Code:

Var 82, Value 0 // joku muuttuja mitä halutaan muuttaa
Var 83, Link IOCARD_ENCODER, Input 61, Aceleration 1, Type 2
{
L0 = V83 * -1 // vaihdetaan suuntaa kun kolvasin väärin päin =)
V82 = ROTATE 1, 360, L0
}


Eli rotaryn arvo on joko 1 tai -1 ja eventti tulee aina kun ruuvaat yhden pykälän. Eventissä sit vaan tutkit että onko se rotary positiivinen vai negatiivinen ja siitä tiedät mitä pitää tehdä. Esim. toi ROTATE osaa ottaa sen tollai huomioon suoraan, tota L0:aa ei edes tarttis vaan vois laitaa suoraan vaan V82 = ROTATE, 1, 360, V83.

Näppäinemulaattoriin (siocin KEYS -härveliin siis) näyttää olevan pakko aina nollata muuttuja näppäinpainalluksen generoinnin jälkeen jotta näppäimet ei jää "pohjaan" - siksi tuossa on toi V3 = 0 aina koodin lopussa. Ja toi näppiseventtihän toimii siocissa niin että on yksi muuttuja minkä output on KEYS ja sit siihen määritellään sioc.ini:ssä mitä näppäintä painetaan kun muuttujan arvo on mikäkin. Toi on gepsin koodista, eli joku niistä rotaryistä tekee alaspäin ruuvatessa muuttujaan arvon 15, ja toiseen suuntaan arvon 16. INI:ssä sit määritelty että 15 tekee näppäinpainalluksen A ja 16 painalluksen B.

Code:

Var 120, Link IOCARD_ENCODER, Input 128, Aceleration 1, Type 2
{
IF V120 > 0 // up
{
V3 = 15
}
IF V120 < 0 // down
{
V3 = 16
}
V3 = 0
}


- T

vipu:
Quote

Tämä tekee transponderiin korkeuskoodaimen näytön, eli näyttää lentopintoina (siis standardipaineella) mitä transponderi periaatteessa lähettäisi lennonjohtajan tutkanäytölle.



En tosin ole testannut paljon, on jo myöhä jne. Mutta ainakin tuossa on vähän aivojumppaa. Kiva härveli tuo SIOC tolta kannalta kyllä.

//Tuomas



Var 0202, Link IOCARD_DISPLAY, Digit 4, Numbers 3 // altitude display
Var 0054, Link FSUIPC_IN, Offset $0ec6, Length 2 // current QNH * 16
Var 0055, Link FSUIPC_IN, Offset $6020, Length 8 // GPS altitude in metres
{
L0 = V0054 / 16 // Get current QNH setting
L0 = L0 - 1013 // difference to standard pressure
L0 = L0 * 27 // 1 millibar = 27 feet
L1 = V0055 * 3.2808399 // meters to feet
L1 = L1 - L0 // correct altitude for QNH1013
L1 = L1 / 100 (display in flight levels. 2500FT = FL025)
V0202 = TRUNC L1
}


Tässä koodissa mulla on ongelmana sammuttaa noi näytöt eli v202=-999999. Tällä tavalla toimii vain hetken. Sen jälkeen näytöt menee jälleen päälle, vaikka kytkin on edelleen "TEST" -asennossa. Mikä neuvoksi?

tigert:
Voisin kuvitella että sun tarttee kaikkiin näyttöihin tehdä IF-lause jolla testaat onko transponderin moodi "ALT" tai "ON", jolloin näytetään lukemia, jos arvo on TEST, näytetään esim "8888" ja jos on STBY tai OFF, pistetään se -999999 tms joka tyhjää sen.

Esimerkkitilanne:

Koodi1: Tutkitaan FSUIPC:lla korkeustietoa ja pienen laskutoimituksen jälkeen transponderin numeronäyttöön pistetään "flight level"-lukema => näytössä "150"
Koodi2: Tutkitaan transponderin moodia, ja jos moodi on OFF, sammutetaan transponderin näytöt (arvoksi se mikälie -999999) => näyttö tyhjänä

Sinänsähän toi vaikuttais järkevältä, muttei taida toimia käytännössä koska FSUIPC päivittää tuota simun korkeustietoa koko ajan kun se muuttuu kun kone liikkuu => elikkäs koodi1 ajetaan, ja sit näytössä tosiaan hetken päästä näkyy taas se korkeustieto vaikka moodi on koko ajan OFF-asennossa.

Se miten toi pitää tehdä varmaankin, yksi mahdollisuus lienee näin:

Koodi: Tutkitaan FSUIPC:n korkeustietoa ja IF transponderin moodi on ALT tai ON, pistetään näyttöön se lukema, ELSE pistetään näyttö tyhjäksi.

Toivottavasti tuo a) toimii ja b) jotenkin selventää asiaa?

- T

Navigation

Up one level

Next page

Previous page