<< Click to Display Table of Contents >> Navigation: Logik > Bausteine > 96 JavascriptLink |
Dieser Logik Baustein kann mit der Programmiersprache Javascript programmiert werden.
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:
// 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;