Board index FlightGear Development Nasal

Conditions Problem  Topic is solved

Nasal is the scripting language of FlightGear.

Conditions Problem

Postby D-ECHO » Fri Apr 01, 2016 3:16 pm

Hi!
While developing the startup system for the Q400, I encountered a problem I don't understand:
This is my code, it runs in a loop along with other systems, no output/failures are displayed in the log window.
Code: Select all
if(getprop("/controls/engines/engine/ignition-switch") == 1 and getprop("/systems/electrical/volts") > 25){
setprop("controls/engines/engine/ignition", 1);
}
if(getprop("/controls/engines/engine/ignition-switch") == 0 or getprop("/systems/electrical/volts") < 25){
setprop("controls/engines/engine/ignition", 0);
}
if(getprop("/controls/engines/engine[1]/ignition-switch") == 1 and getprop("/systems/electrical/volts") == 25){
setprop("controls/engines/engine[1]/ignition", 1);
}else{
setprop("controls/engines/engine[1]/ignition", 0);
}

The problem is, that while the ../ignition-switch is at 1 and the ../volts are constantly at 28, the ../ignition flatters from 0 to 1 some times per second.
Has anybody an idea what could be the problem?
D-ECHO
 
Posts: 2458
Joined: Sat May 09, 2015 1:31 pm
Pronouns: Bea (she/her)
Version: next

Re: Conditions Problem

Postby wkitty42 » Fri Apr 01, 2016 3:39 pm

you should use "<=" and ">=" when you need them... in your first two statements you are not taking into account when the volts are exactly 25... then in the if/then/else statement, you are only checking if the volts are "=="... perhaps you are looking for something like this, instead??

Code: Select all
if(getprop("/controls/engines/engine/ignition-switch") == 1 and getprop("/systems/electrical/volts") >= 25){
setprop("controls/engines/engine/ignition", 1);
} else {
setprop("controls/engines/engine/ignition", 0);
}
if(getprop("/controls/engines/engine[1]/ignition-switch") == 1 and getprop("/systems/electrical/volts") >= 25){
setprop("controls/engines/engine[1]/ignition", 1);
}else{
setprop("controls/engines/engine[1]/ignition", 0);
}
"You get more air close to the ground," said Angalo. "I read that in a book. You get lots of air low down, and not much when you go up."
"Why not?" said Gurder.
"Dunno. It's frightened of heights, I guess."
User avatar
wkitty42
 
Posts: 9146
Joined: Fri Feb 20, 2015 4:46 pm
Location: central NC, USA
Callsign: wk42
Version: git next
OS: Kubuntu 20.04

Re: Conditions Problem

Postby D-ECHO » Fri Apr 01, 2016 3:47 pm

Sorry, posted the wrong code version, that was the experimental code....
But, nope, your version doesn't work either - same problem. And I didn't take exactly 25 into account because the voltage is steady at 28.
Here is how it looks like:
Image
The ignition="0" flatters from 0 to 1 and back - about 2-4 times a second, as written above
D-ECHO
 
Posts: 2458
Joined: Sat May 09, 2015 1:31 pm
Pronouns: Bea (she/her)
Version: next

Re: Conditions Problem

Postby jaxsin » Fri Apr 01, 2016 3:57 pm

you should run FG and use that switch that allows you to track what is changing the property value. You must have something else that is acting upon that property for it to change back and forth.

http://wiki.flightgear.org/Command_line ... ng_Options
jaxsin
 
Posts: 395
Joined: Mon Dec 28, 2015 4:54 pm

Re: Conditions Problem

Postby D-ECHO » Fri Apr 01, 2016 4:00 pm

which switch? :)
Ooops, didn't see the link
D-ECHO
 
Posts: 2458
Joined: Sat May 09, 2015 1:31 pm
Pronouns: Bea (she/her)
Version: next

Re: Conditions Problem

Postby D-ECHO » Fri Apr 01, 2016 4:06 pm

You were right - someone is always writing "24" to the volts, so that's the reason. Now I only have to find that bad guy :D
Code: Select all
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "24"
TRACE: Write node /controls[0]/engines[0]/engine[0]/ignition[0], value "0"
TRACE: Write node /systems[0]/electrical[0]/volts[0], value "28"
D-ECHO
 
Posts: 2458
Joined: Sat May 09, 2015 1:31 pm
Pronouns: Bea (she/her)
Version: next

Re: Conditions Problem

Postby D-ECHO » Fri Apr 01, 2016 4:22 pm

All properties in the electrical system seem to have this flittering:
Code: Select all
TRACE: Write node /systems[0]/electrical[0]/amps[0], value "-30"
TRACE: Write node /systems[0]/electrical[0]/amps[0], value "-30"
TRACE: Write node /systems[0]/electrical[0]/amps[0], value "7"
TRACE: Write node /systems[0]/electrical[0]/amps[0], value "-30"
TRACE: Write node /systems[0]/electrical[0]/amps[0], value "-30"
TRACE: Write node /systems[0]/electrical[0]/amps[0], value "-30"
TRACE: Write node /systems[0]/electrical[0]/amps[0], value "7"

Code: Select all
TRACE: Write node /systems[0]/electrical[0]/outputs[0]/audio-panel[0], value "28.8732"
TRACE: Write node /systems[0]/electrical[0]/outputs[0]/audio-panel[0], value "1.04321"
TRACE: Write node /systems[0]/electrical[0]/outputs[0]/audio-panel[0], value "28.8732"
TRACE: Write node /systems[0]/electrical[0]/outputs[0]/audio-panel[0], value "1.19034"
TRACE: Write node /systems[0]/electrical[0]/outputs[0]/audio-panel[0], value "28.8732"
TRACE: Write node /systems[0]/electrical[0]/outputs[0]/audio-panel[0], value "1.04329"
TRACE: Write node /systems[0]/electrical[0]/outputs[0]/audio-panel[0], value "28.8732"
TRACE: Write node /systems[0]/electrical[0]/outputs[0]/audio-panel[0], value "1.19025"
TRACE: Write node /systems[0]/electrical[0]/outputs[0]/audio-panel[0], value "28.8732"

...
D-ECHO
 
Posts: 2458
Joined: Sat May 09, 2015 1:31 pm
Pronouns: Bea (she/her)
Version: next

Re: Conditions Problem  

Postby D-ECHO » Fri Apr 01, 2016 4:35 pm

Problem solved, sorry for bothering you :oops:
I accidentally had removed
<electrical>
<path></path>
</electrical>
from <systems> in the -base.xml file because I thought one wouldn't need it - but so the generic electrical system was writing "24" to the volts ;)
Regards
D-ECHO
 
Posts: 2458
Joined: Sat May 09, 2015 1:31 pm
Pronouns: Bea (she/her)
Version: next

Re: Conditions Problem

Postby wkitty42 » Fri Apr 01, 2016 4:36 pm

is this JSBSim or YASim?
do you have voltage tables in the FDM so that when other items are turned on their voltage use will affect the voltage in the system?

BTW: i think "fluttering" is the word you are looking for... fluttering like a moth and butterfly do ;)
"You get more air close to the ground," said Angalo. "I read that in a book. You get lots of air low down, and not much when you go up."
"Why not?" said Gurder.
"Dunno. It's frightened of heights, I guess."
User avatar
wkitty42
 
Posts: 9146
Joined: Fri Feb 20, 2015 4:46 pm
Location: central NC, USA
Callsign: wk42
Version: git next
OS: Kubuntu 20.04

Re: Conditions Problem

Postby D-ECHO » Fri Apr 01, 2016 5:22 pm

This is YASim and no, I don't have voltage tables (I don't even think that's possible in YASim)
Oh, and thanks for the translation, yes that was the word I'm looking for ;)
D-ECHO
 
Posts: 2458
Joined: Sat May 09, 2015 1:31 pm
Pronouns: Bea (she/her)
Version: next

Re: Conditions Problem

Postby wkitty42 » Fri Apr 01, 2016 7:14 pm

+1 :)
"You get more air close to the ground," said Angalo. "I read that in a book. You get lots of air low down, and not much when you go up."
"Why not?" said Gurder.
"Dunno. It's frightened of heights, I guess."
User avatar
wkitty42
 
Posts: 9146
Joined: Fri Feb 20, 2015 4:46 pm
Location: central NC, USA
Callsign: wk42
Version: git next
OS: Kubuntu 20.04


Return to Nasal

Who is online

Users browsing this forum: No registered users and 4 guests