StellSi-Forum

Das Forum zur Stellwerksimulation StellSi
Aktuelle Zeit: Fr 14. Dez 2018, 20:39:53

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Gleisfreimeldung
BeitragVerfasst: Fr 3. Aug 2012, 18:43:22 
Offline

Registriert: Fr 3. Aug 2012, 18:34:37
Beiträge: 14
Hallo...

Ich dachte mir, nachdem ich mich schon die letzten zwei Wochen intensiv mit dem Programm beschäftigt habe, wie baue ich eine funktionierende Gleisfreimeldeanlage in des SuH ein. Nach etwas Grübelei und einlesen in die Skripte habe ich mir folgendes ausgedacht:

</script>
</scriptcontainer>
</relaisgruppe>
<relaisgruppe vname="gleisfreimeldung" titel="Gleisfreimeldegruppe">
<parameter name="id_schnittstelle_stelltisch" typ="schnittstellenid" />
<parameter name="gleisid" titel="Gleis" typ="schnittstelle" filterallgemein="gleis" filterspeziell=""/>
<scriptcontainer>
<schnittstelle titel="Stelltisch" name="tischfeld" id="*id_schnittstelle_stelltisch" erreichbarstelltisch="1">
<sendet signal="gleis_frei" desc="1, wenn das Gleis frei ist, sonst 0" />
<sendet signal="gleis_besetzt" desc="1, wenn das Gleis besetzt ist, sonst 0" />
</schnittstelle>
<schnittstelle titel="Ringleitung" name="ringleitung" ziel="0:-1"/>
<schnittstelle name="aussenanlage" ziel="*aussenanlage" />
<script>
<![CDATA[
var gleis_frei=0
var gleis_besetzt=0

function signalEvent(signal,wert)
{
print(signal)
if (signal=="aussenanlage:frei")
{
gleis_frei=1;
gleis_besetzt=0;
}
if (signal!="aussenanlage:frei")
{
gleis_frei=0;
gleis_besetzt=1;
}
if ((gleis_frei=1)&&(gleis_besetzt=0))
{
tischfeld.setWert("gleis_frei",1);
tischfeld.setWert("gleis_besetzt",0);
}
if ((gleis_frei=0)&&(gleis_besetzt=1))
{
tischfeld.setWert("gleis_frei",0);
tischfeld.setWert("gleis_besetzt",1);
}
}
]]>

dazu habe ich im Hebelwerksaufbau zwei Melder eingebaut. Einen in weiß und einen in rot. Im Grundzustand soll der weiße leuchten und das frei sein des Gleises anzeigen, aber das tut er nicht, er bleibt dunkel. Wo ist mein Fehler? *überleg*

Vielleicht hat ja einer eine Idee...

Bis dahin grübel ich mal weiter ;)

Viele Grüße,

Oli


Nach oben
   
 Betreff des Beitrags: Re: Gleisfreimeldung
BeitragVerfasst: Sa 4. Aug 2012, 00:32:02 
Offline
Administrator

Registriert: Do 12. Jan 2012, 20:53:29
Beiträge: 114
Hallo,

zwei grundlegende Fehler sehe ich jetzt auf Anhieb:
1) if (signal!="aussenanlage:frei")
Das funktioniert so nicht. Korrekt wäre
if ((signal=="aussenanlage:frei")&&(wert==0))

2) if ((gleis_frei=0)&&(gleis_besetzt=1))
Vergleiche sind in ECMA-Skript per doppeltem Gleichheitszeichen. Korrekt wäre folgendes:
if ((gleis_frei==0)&&(gleis_besetzt==1))

Gruß
Boris


Nach oben
   
 Betreff des Beitrags: Re: Gleisfreimeldung
BeitragVerfasst: Mo 6. Aug 2012, 22:23:47 
Offline

Registriert: Fr 3. Aug 2012, 18:34:37
Beiträge: 14
Auch hier noch mal zurück von den Holländern... :-)

Danke für die Tipps... Das scheinen echt Anfängerfehler von mir gewesen zu sein... ;-)

Ich habe mal die "beanstandeten" Stellen nachgebessert, aber noch "lebt" die Gfm nicht... Scheint doch nicht so leicht zu sein sowas zu basteln, wie ich dachte, aber irgendwie wird das schon laufen... :-P

Ich habe das Gefühl, die Meldung wird nicht korrekt an die betroffenen Meldelampen übertragen... *überleg*

Viele Grüße,

Oli


Nach oben
   
 Betreff des Beitrags: Re: Gleisfreimeldung
BeitragVerfasst: Mo 6. Aug 2012, 22:25:08 
Offline
Administrator

Registriert: Do 12. Jan 2012, 20:53:29
Beiträge: 114
Zeig doch nochmal den kompletten Code.


Nach oben
   
 Betreff des Beitrags: Re: Gleisfreimeldung
BeitragVerfasst: Di 7. Aug 2012, 23:02:48 
Offline

Registriert: Fr 3. Aug 2012, 18:34:37
Beiträge: 14
Ich kopiere den morgen mal raus und stelle ihn hier zur Diskussion... :-)


Nach oben
   
 Betreff des Beitrags: Re: Gleisfreimeldung
BeitragVerfasst: Mi 8. Aug 2012, 12:03:04 
Offline

Registriert: Fr 3. Aug 2012, 18:34:37
Beiträge: 14
</script>
</scriptcontainer>
</relaisgruppe>
<relaisgruppe vname="gleisfreimeldung" titel="Gleisfreimeldegruppe">
<parameter name="id_schnittstelle_stelltisch" typ="schnittstellenid" />
<parameter name="gleisid" titel="Gleis" typ="schnittstelle" filterallgemein="gleis" filterspeziell=""/>
<scriptcontainer>
<schnittstelle titel="Stelltisch" name="tischfeld" id="*id_schnittstelle_stelltisch" erreichbarstelltisch="1">
<sendet signal="gleis_frei" desc="1, wenn das Gleis frei ist, sonst 0" />
<sendet signal="gleis_besetzt" desc="1, wenn das Gleis besetzt ist, sonst 0" />
</schnittstelle>
<schnittstelle titel="Ringleitung" name="ringleitung" ziel="0:-1"/>
<schnittstelle name="aussenanlage" ziel="*aussenanlage" />
<script>
<![CDATA[
var gleis_frei=0
var gleis_besetzt=0

function signalEvent(signal,wert)
{
print(signal)
if ((signal=="aussenanlage:frei")&&(wert=1))
{
gleis_frei==1;
gleis_besetzt==0;
else
gleis_frei==0;
gleis_besetzt==1;
}
if ((gleis_frei==1)&&(gleis_besetzt==0))
{
tischfeld.setWert("gleis_frei",1);
tischfeld.setWert("gleis_besetzt",0);
else
tischfeld.setWert("gleis_frei",0);
tischfeld.setWert("gleis_besetzt",1);
}
}
]]>

Ich habe das jetzt noch nicht testen können...


Nach oben
   
 Betreff des Beitrags: Re: Gleisfreimeldung
BeitragVerfasst: Mi 8. Aug 2012, 19:01:48 
Offline
Administrator

Registriert: Do 12. Jan 2012, 20:53:29
Beiträge: 114
Das kann aus gleich mehreren Gründen nicht gehen. Zum einen schreibst Du etwas chaotisch mal = und mal ==

= ist eine Zuweisung, == ist ein Vergleich.

Zum anderen fehlen bei Deinem if - else ein paar Klammern.


Nach oben
   
 Betreff des Beitrags: Re: Gleisfreimeldung
BeitragVerfasst: Mi 8. Aug 2012, 21:32:58 
Offline

Registriert: Fr 3. Aug 2012, 18:34:37
Beiträge: 14
ich glaube ich muß blind gewesen sein bei dem Murks den ich da zusammengeschrieben hae... *lach* Sorry...

Neuer Versuch:

</script>
</scriptcontainer>
</relaisgruppe>
<relaisgruppe vname="gleisfreimeldung" titel="Gleisfreimeldegruppe">
<parameter name="id_schnittstelle_stelltisch" typ="schnittstellenid" />
<parameter name="gleisid" titel="Gleis" typ="schnittstelle" filterallgemein="gleis" filterspeziell=""/>
<scriptcontainer>
<schnittstelle titel="Stelltisch" name="tischfeld" id="*id_schnittstelle_stelltisch" erreichbarstelltisch="1">
<sendet signal="gleis_frei" desc="1, wenn das Gleis frei ist, sonst 0" />
<sendet signal="gleis_besetzt" desc="1, wenn das Gleis besetzt ist, sonst 0" />
</schnittstelle>
<schnittstelle titel="Ringleitung" name="ringleitung" ziel="0:-1"/>
<schnittstelle name="aussenanlage" ziel="*aussenanlage" />
<script>
<![CDATA[
var gleis_frei=0
var gleis_besetzt=0

function signalEvent(signal,wert)
{
print(signal)
if ((signal=="aussenanlage:frei")&&(wert=1))
{
gleis_frei=1;
gleis_besetzt=0;
}
else
{
gleis_frei=0;
gleis_besetzt=1;
}
if ((gleis_frei==1)&&(gleis_besetzt==0))
{
tischfeld.setWert("gleis_frei",1);
tischfeld.setWert("gleis_besetzt",0);
}
else
{
tischfeld.setWert("gleis_frei",0);
tischfeld.setWert("gleis_besetzt",1);
}
}
]]>

Ich frage mich ob das, mal von der richtigen Syntax abgesehen, schonmal der richtige Weg ist. Besonders der Bereich mit den Parametern und Schnittstellen...


Nach oben
   
 Betreff des Beitrags: Re: Gleisfreimeldung
BeitragVerfasst: Mi 8. Aug 2012, 22:10:53 
Offline
Administrator

Registriert: Do 12. Jan 2012, 20:53:29
Beiträge: 114
Ja, der Ansatz ist schon richtig, das sollte passen, allerdings würde ich hier nur eine Variable nehmen und nicht gleich zwei - das ist momentan etwas doppelt alles :-)

Die Schnittstelle zur Aussenanlage passt nicht - hier nutzt Du einen Parameter, der oben nicht definiert ist. Du solltest also den zweiten Parameter nochmal überarbeiten. Außerdem sollten die Parameter Titel und Beschreibung erhalten.

Die Schnittstelle zur Ringleitung ist wahrscheinlich nicht nötig.

Für die Zukunft sollte die Gleisfreimeldegruppe ertüchtigt werden für die Nutzung im Verschlussregister.


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Gehe zu: 

cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de