Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
[TUT] Wir basteln uns einen Größer-Kleiner-Gleich-Baustein
[TUT] Wir basteln uns einen Größer-Kleiner-Gleich-Baustein
Wenn man wenig Erfahrung mit der Erstellung von HS-Logik-Modulen und deren Syntax hat, hilft ein Blick in bestehende Logiken. Die liegen entweder im Verzeichnis .\logic oder man schaut die Original-Logik an, die befindet sich in der Datei logik.dat im Verzeichnis .\dat.
Für unseren Fall suchen wir uns einmal die Original-Vergleicher-Bausteine "Größer" und "Kleiner".
Gruß Matthias
EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt" - PN nur für PERSÖNLICHES!
Das heißt, wenn der Eingang 1 größer als Eingang 2 ist, dann wird das Boolsche Ergebnis auf Ausgang 1 geschoben und zusatzlich auf Ausgang 2 (das ist der send-by-change-Ausgang)
- weiter.....
Gruß Matthias
EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt" - PN nur für PERSÖNLICHES!
Eigene Logikbausteine kann man nicht in die logik.dat einfügen, die müssen in separaten Modulen erstellt werden. Deshalb ist die Syntax etwas anders als in der Original-Datei.
Wichtig: Jeder Baustein hat eine eigene Nummer, und die muss eindeutig sein. Sonst gibt es unweigerlich Probleme. Deswegen erhält jeder Entwickler von Dacom auf Wunsch seinen eigenen Nummernbereich zugewiesen.
Mein Nummernbereich geht von 19800 - 19899. Für diesen Baustein nehme ich mal die Nummer 19898.
Der Dateiname für den Baustein lautet dann 19898_GKG.hsl
Gruß Matthias
EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt" - PN nur für PERSÖNLICHES!
Wir haben also einen Baustein definiert, der im GLE im Ordner smh@213 einsortiert wird, Größer-Kleiner-Gleich heißt, nicht remanent ist, zwei Eingange hat und drei Ausgange, die wie oben bezeichnet sind.
- weiter.....
Gruß Matthias
EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt" - PN nur für PERSÖNLICHES!
Zeile 5001 definiert nochmals Anzahl der Ein- und Ausgänge, darüberhinaus noch Speichervariablen und Offsets. Offests sind Zeitglieder, die innerhalb eines Bausteines verwendet werden, z.B. für Verzögerungen etc. In unserem fall aber nicht erforderlich.
Für unser Beispiel:
5001|2|3|0|0|0
Heißt:
Unser Baustein hat zwei Eingänge, drei Ausgänge, keinen Speicher, keinen Offset und wird bei Neustart nicht berechnet.
- weiter....
Gruß Matthias
EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt" - PN nur für PERSÖNLICHES!
Diese Zeilen definieren die Paramter für die verschiedenen Ein- und Ausgange sowie für die Speichervariablen:
Die Eingange:
5002|1|0|0
5002|2|0|0
heißt:
Eingang1 hat den Defaultwert 0, ist numerisch
Eingang2 hat den Defaultwert 0, ist numerisch
Die Ausgange:
5004|1|0|1|1|0
5004|2|0|1|1|0
5004|3|0|1|1|0
Die Ausgange 1 bis 3 haben als Defaultwert 0, werden nach binar gewandelt (d.h., am Ausgang erscheint nur 0 oder 1), senden bei jeder Berechnung und sind numerisch.
Da keine Speichervariablen benötigt werden, gibt es keine Zeilen vom Typ 5003.
-weiter....
Gruß Matthias
EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt" - PN nur für PERSÖNLICHES!
Die eigentliche Berechnung und Ausgabe der Ergebnisse findet in Zeilen vom Typ 5012 statt.
Hier nochmals die Definition:
5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang
Ich übergehe mal den ersten und zweiten Parameter für unser Beispiel, der dritte Parameter enthalt die Formel, deren Ergebnis anschließend ausgegeben wird. Der Paramter Zeit gilt nur für Bausteine mit Zeitfunktionen, anschließend kommen die Angaben, an welche Ausgange das Ergebnis gesendet werden soll.
Unser erster Ausgang ist der größer-Ausgang, unsere Formel, oben "ausgeliehen", lautete:
Wichtig in der Python-Syntax ist das doppelte Gleichheitszeichen (DER Fehler hat mich schon oft zum Wahnsinn getrieben ).
So, wir haben jetzt also alle Falle abgehandelt, der HS kümmert sich automatisch darum, dass jedesmal, wenn sich ein Eingang andert, die Formeln neu berechnet werden und die Ausgange gesetzt werden.
- weiter....
Gruß Matthias
EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt" - PN nur für PERSÖNLICHES!
So weit bin ich in meinen versuchen auch schon gekommen.
Du benutzt 3 Ausgänge , die je nach eingangssignal 1 oder 0 sind, aber wie löse ich das, wenn ich nur einen Ausgang möcht und je nach Eingangssignal eine 1,2 oder 3 ausgeben will.
5012|1|"EN[1] < EN[2]-0.25"|"1"|""|1|0|0|0
5012|1|"EN[1] > EN[2]-0.25 and EN[1]< EN[2]+0.25"|"2"|""|1|0|0|0
5012|1|"EN[1] > EN[2]+0.25"|"3"|""|1|0|0|0
so habe ich es versucht aber ist wohl ein Fehler drin vermutlich bei der Formel oder Bedingung.
Dann muss natürlich der zusatzliche Ausgang definiert werden, also braucht es noch eine neue Zeile vom Typ 5004:
Code:
5004|4|0|0|1|0
Hier jetzt wichtig: Die zweite Null, denn der Ausgang soll ja einen Wert erhalten und nicht nur 0/1.
Kommen wir zu den Formeln:
Da wir jetzt nicht das Ergebnis direkt auf den Ausgang schalten können (Ergebnis ist ja immer nur 0 oder 1 bei booleschen Berechnungen), kommt der Parameter Bedingung zum Einsatz.
Die Formel steht also jetzt bei Bedingung, und unter Formel in dem Fall ein Fixwert, der dann, wenn die Bedingung erfüllt ist, auf den Ausgang geschoben wird.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar