96 Javascript

<< Click to Display Table of Contents >>

Navigation:  Logik > Bausteine >

96 Javascript

Link

Dieser Logik Baustein kann mit der Programmiersprache Javascript programmiert werden.

 

96 Script

 

 

Bei 4 Eingängen werden 4 Variablen i1 bis i4 automatisch angelegt und besitzen den Wert des jeweiligen Eingang.

Der Wert ist immer im String Format. Dieser muss beim verbinden einmalig geändert werden.

 

 

Bei 4 Ausgängen werden 4 Variablen o1 bis o4 automatisch angelegt. Der Wert der Variable wird an den jeweiligen Ausgang gesendet.

 

Bei 5 Merker werden 5 Variablen m1 bis m5 angelegt. Diese können frei verwendet werden, um z.B. Werte zu puffern. Die Merker sind Retain und werden gespeichert.

Diese können für Zeitfunktionen wie z.B. eine Einschaltverzögerung verwendet werden.

 

Achtung nach dem Verbinden der Eingänge muss einmalig der Status geändert werden, da nur Änderungen übertragen werden.

 

 

Es können alle Standard Javascript Funktionen verwendet werden. Wie z.B. "var current_time =  new Date().getTime();"

 


 

Beispiel Einschalteverzögerung: Eingang 1 auf Ausgang 1  5s verzögert:

 

if( i1 == "true" ){

 if( m1 == 0 ){

   m1 = new Date().getTime();

 }

}

else {

m1 = 0;

}

 

if( m1 > 0 &&  (new Date().getTime() - m1 > 5000) ){

o1 = "true";

}

else {

o1 = "false";

}

 

m1 speichert die Uhrzeit bei der ersten positiven Flanke. Nach 5 Sekunden wird der Ausgang 1 geschalten.

 


 

 

Beispiel Ausschalteverzögerung:  Eingang 1 auf Ausgang 1

 

 

if( i1 == "true" ){

 o1 = "true";

 if( m1 == 0 ){

   m1 = new Date().getTime();

 }

 

}else{

 if( m1 > 0 &&  ( new Date().getTime() - m1 > 5000 )   ){

     o1 = "false";

     m1 = 0;

 }

}

 

 


 

Beispiel Alarmanlage:

 

95 KNX Alarmanlage

 

 

 

 

// i1 Alarmanlage scharf

// i2 Alarm zurücksetzen

// i3 Einschaltverzögerung in s

// i4 Zeit für Sirene in s

// i5 - i10 Alarmkontakte

 

// o1 Alarmanlage scharf

// o2 Sirene

// o3 Daueralarm anstehend

// o4 Info letzter Kontakt

// o5 Alle Kontakte geschlossen

// o6 Kontaktliste nicht geschlossen

 

// m1 Merker für Scharfschaltung

// m2 Merker Daueralarm

// m3 Merker Zeitalarm

// m5 bis m10 Zustände Eingänge

 

var scharf = false;

var alarm = false;

 

var kontakt_1_name = "Kontakt 1 Haustüre";

var kontakt_2_name = "Kontakt 2 Büro";

var kontakt_3_name = "Kontakt 3";

var kontakt_4_name = "Kontakt 4";

var kontakt_5_name = "Kontakt 5";

var kontakt_6_name = "Kontakt 6";

 

// Verzögerung Scharfschaltung

if( i1 == "true" ){

if( m1 == 0 ){

  m1 = new Date().getTime();

}

}

else {

m1 = 0;

}

if( m1 > 0 &&  (new Date().getTime() - m1 > (Number(i3) * 1000) ) ){

 scharf  = true;

 o1 = "true";

}

else {

 scharf   = false;

 o1 = "false";

}

 

// Prüfen der Zustände

if(scharf   ){

if(  m5 != ""+i5){   o4 = kontakt_1_name; alarm = true; }

if(  m6 != ""+i6){   o4 = kontakt_2_name; alarm = true; }

if(  m7 != ""+i7){   o4 = kontakt_3_name; alarm = true; }

if(  m8 != ""+i8){   o4 = kontakt_4_name; alarm = true; }

if(  m9 != ""+i9){   o4 = kontakt_5_name; alarm = true; }

if(  m10 != ""+i10){ o4 = kontakt_6_name; alarm = true; }

}

 

// Alarm speichern

if(alarm){

m2 = "true";

}

 

// Daueralarm setzen

if(m2 == "true"){

 o3 = "true";

}

 

// Daueralarm durch Reset i2

if( i2 == "true" ){

o3 = "false";

m2 = "false";

}

 

// Ausgang Zeitalarm

if( m2 == "true" ){ // Alarm

if( m3 == 0 ){

  m3 = new Date().getTime();

}

}

else {

m3 = 0;

}

if( m3 > 0 &&  (new Date().getTime() - m3 < (Number(i4) * 1000) ) ){

 o2 = "true";

}

else {

 o2 = "false";

}

 

// Zustände speichern

m5 = ""+i5;

m6 = ""+i6;

m7 = ""+i7;

m8 = ""+i8;

m9 = ""+i9;

m10 = ""+i10;

 

// Alle Kontakte geschlossen

if( i5 == "true" && i6 == "true" && i7 == "true" && i8 == "true" && i9 == "true" && i10 == "true"){

o5 = "true";

}else{

o5 = "false";

}

 

// Kontaktliste offen

var open_contacts = "";

if(  i5 != "true" ){  open_contacts  = open_contacts + kontakt_1_name+", ";  }

if(  i6 != "true" ){  open_contacts  = open_contacts + kontakt_2_name+", ";  }

if(  i7 != "true" ){  open_contacts  = open_contacts + kontakt_3_name+", ";  }

if(  i8 != "true" ){  open_contacts  = open_contacts + kontakt_4_name+", ";  }

if(  i9 != "true" ){  open_contacts  = open_contacts + kontakt_5_name+", ";  }

if(  i10 != "true" ){ open_contacts  = open_contacts + kontakt_6_name+", ";  }

 

o6 = open_contacts;