Logik – ist ein Mechanismus zur automatischen Steuerung.
Die Syntax einer Logikbeschreibung
Die Logik wird durch eine Zeile in folgender Form beschrieben:
(SENSORID OLDSTATE-NEWSTATE OPERATOR ...){SENSORID1:TIMEOUT NEWSTATE2 OPERATOR2 ...}
Wobei:
SENSORID – eindeutige Sensor-ID.
OLDSTATE-NEWSTATE – Sensorstatuscodes, bei denen die Bedingung beim Übergang wahr ist. Die Werte beider Parameter sollten gleich sein.
OPERATOR – der Operatorcode, mit dem das Ergebnis der Bedingungen berechnet wird.
SENSORID1 – eindeutige Sensor-ID, deren Status unter den Bedingungen der logischen Schaltung geändert werden soll.
TIMEOUT – eine Timeout-Bedingung.
NEWSTATE2 – der Statuscode, in den das Element (Relais) überführt werden soll.
OPERATOR2 – Symbol '+'.
Statuscodes sind:
'normal': 1;
'low': 2;
'warning': 3;
'alarm': 4;
'on': 5;
'off': 6.
'not connected': 7.
'pulse': 8.
Operatorcodes:
'and': Symbol '+';
'or': Symbol '|'.
Logik verwalten
Um eine Logik zu erstellen, verwenden Sie das Feld ctlLogicRowStatus. Das Setzen des Feldes ctlLogicRowStatus in den Zustand CreateAndWait(5) erstellt einen neuen Eintrag in der Tabelle сtlLogicsTable.
Nach dem Erstellen der Logik ist es notwendig, ihren Namen im Feld ctlLogicName und die Logikbeschreibung im Feld ctlLogicDescription anzugeben.
Nach dem Erstellen einer Logikbeschreibung wird die Logik aktiv, was durch den Wert active(1) im Feld ctlLogicRowStatus angezeigt wird.
Das Deaktivieren der Logik erfolgt durch Setzen des Feldes ctlLogicDisable auf das gewünschte Intervall in Sekunden.
Das Aktivieren der Logik erfolgt durch Setzen des Feldes ctlLogicDisable auf den Wert '0'.
Das Entfernen der Logik erfolgt durch Setzen des Feldes ctlLogicRowStatus in den Zustand destroy(6).
Beispiel
Erstellen, Bearbeiten, Überprüfen und Entfernen von Logik
Auslesen der Logiktabelle:
$ snmptable -Ci -Cb -v2c -cread 192.168.0.193 DIDACTUM-SYSTEM-MIB::ctlLogicsTable
| index | ID | Name | Beschreibung | Disable | RowStatus |
|---|---|---|---|---|---|
| 1 | 1 | "Logic circuit" | "(20 4 - 4){34:0 8}" | 0 | active |
Neue Logik erstellen:
$ snmpset -v2c -cwrite 192.168.0.193 DIDACTUM-SYSTEM-MIB::ctlLogicName.2 s "New Logic" \\
DIDACTUM-SYSTEM-MIB::ctlLogicDescription.2 s "(20 1-1){301:0 5}" \\
DIDACTUM-SYSTEM-MIB::ctlTrapRowStatus.2 i createAndGo
DIDACTUM-SYSTEM-MIB::ctlLogicName.2 = STRING: "New Logic"
DIDACTUM-SYSTEM-MIB::ctlLogicDescription.2 = STRING: "(20 1-1){301:0 5}"
DIDACTUM-SYSTEM-MIB::ctlTrapRowStatus.2 = INTEGER: createAndGo(4)
Erstellte Logiktabelle anzeigen:
$ snmptable -Ci -Cb -v2c -cread 192.168.0.193 DIDACTUM-SYSTEM-MIB::ctlLogicsTable
SNMP-Tabelle: DIDACTUM-SYSTEM-MIB::ctlLogicsTable
| index | ID | Name | Beschreibung | Disable | RowStatus |
|---|---|---|---|---|---|
| 1 | 1 | "Logic circuit" | "(20 4-4){34:0 8}" | 0 | active |
| 2 | 2 | "New Logic" | "(20 1-1){301:0 5}" | 0 | active |
Jetzt haben wir zwei Logiken:
Die Logik "Logic circuit" wird ausgelöst, wenn ein Element des Systems mit ID = 20 in den Zustand "alarm"(4) wechselt und sofort (nach 0 s) einen Impuls "pulse"(8) an das Element mit ID=34 (Relais oder Steckdose, siehe Tabelle oben) ausgibt;
Die Logik "New Logic" wird ausgelöst, wenn ein Element des Systems mit ID=20 in den Zustand "normal"(1) wechselt und sofort (nach 0 s) ein Signal "on"(8) an das Element mit ID=301 (Trap-Element, siehe Tabelle oben) ausgibt;
Deaktivieren der Logik in 60 Sekunden:
$ snmpset -v2c -cwrite 192.168.0.193 DIDACTUM-SYSTEM-MIB::ctlLogicDisable.2 i 60
DIDACTUM-SYSTEM-MIB::ctlLogicDisable.2 = INTEGER: 60
Überprüfen, dass die Logik deaktiviert ist:
$ snmpget -v2c -cwrite 192.168.0.193 DIDACTUM-SYSTEM-MIB::ctlLogicDisable.2
DIDACTUM-SYSTEM-MIB::ctlLogicDisable.2 = INTEGER: 1
Logik entfernen:
$ snmpset -v2c -cwrite 192.168.0.193 DIDACTUM-SYSTEM-MIB::ctlLogicRowStatus.2 i destroy
DIDACTUM-SYSTEM-MIB::ctlLogicRowStatus.2 = INTEGER: destroy(6)
Nach dem Entfernen der Logik sollte die Logiktabelle wieder den ursprünglichen Zustand haben.