Ankündigung

Einklappen
Keine Ankündigung bisher.

Homeserver: Kommunikation und erste Gehversuche

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Taxus
    antwortet
    Zitat von Tokamak Beitrag anzeigen
    [...] wie bringe ich dann aber den HS dazu, mit Hilfe der abgefragten Werte die Statusvariablen zu initialisieren?
    Das generelle Startverhalten ist ja in der Onlinehilfe C:\Programme\GIRA\HS+FS\exp22\hlp\logikstart.html beschrieben. Stelle daher einfach sicher, dass die Logikkette auch vollständig durchlaufen wird, d. h. alle verwendeten Bausteine müssen während der Initialisierung auch berechnet werden (steht in der Doku zum Baustein, notfalls im Baustein selbst). Wenn Du das aus "Übersichtlichkeitsgründen" nicht in einem Rutsch sicherstellst, musst Du eben einen weiteren Durchlauf anstoßen, indem Du z. B. das Systemstartobjekt dazu verwendest, die Logik leicht zeitverzögert nochmals auszuführen. Ob das die Logik wohl übersichtlicher macht ...

    Zitat von Tokamak Beitrag anzeigen
    Da der Wert aber durchgereicht wird, kann man ihn problemlos auf einem Ausgang an ein KO schicken, oder?
    Wenn Du am Eingang von 0 oder 1 ausgehst, ja; oder natürlich an einen anderen Baustein.

    Für Eingänge ungleich 0 oder 1 ist es wichtig zu wissen, dass intern der Wahrheitswert "Eingang ungleich 0" ermittelt und einmal direkt, einmal negiert ausgegeben wird, das 'Durchreichen' also binär verstanden werden muss.

    Anmerkung: ich verwende den Binärauslöser höchst selten, in meinem gesamten Projekt nur fünf mal. Aber das ist natürlich so individuell wie die Aufgabenstellungen.

    Einen Kommentar schreiben:


  • Tokamak
    antwortet
    Zitat von Taxus Beitrag anzeigen
    1. Ein Grund für das von Dir beobachtete Verhalten ist, dass der Objekt-Baustein bei Start nicht berechnet wird. Die Defaults werden verwendet.
    OK, verstanden. Aber wie bringe ich dann aber den HS dazu, mit Hilfe der abgefragten Werte die Statusvariablen zu initialisieren?

    2. Zum Binärauslöser ist zu beachten, dass *immer* beide Ausgänge senden. Wenn die Ausgänge auf Befehle gehen ist alles ok - die werden ja nur bei '1' abgearbeitet. Liegen hier jedoch KOs an, werden beide beschrieben. Deine Ausgangsbeschaltung, beide Ausgänge des Binärauslösers auf das selbe KO zu legen, ist also quasi ein Ausgangskurzschluß.
    Das erklärt einiges. Da der Wert aber durchgereicht wird, kann man ihn problemlos auf einem Ausgang an ein KO schicken, oder?

    3. Der HS berechnet die Logiken bei Init. Da dies bei der Initialisierung 'auf einen Schlag' geschieht, sind die Eingänge der unteren Logik mit ihrem remanenten bzw. Init-Wert vorbelegt (und nicht mit den Ergebnissen der oberen Logikkette). Dies sähe anders aus, wenn Du eine einzige komplette Kette zusammensetzen würdest.
    Eine komplette Kette ginge zwar, würde aber ein riesengroßes Diagramm ergeben, da das nur der Anfang ist. So soll etwa der Status einzelner Räume auch bei anderen Ereignissen auf "anwesend" gesetzt werden. Dazu wollte ich dann einfach die betreffende Statusvariable des Raumes ändern, und die angegebene Mimik - die auch noch größer wird - berechnet dann den kumulierten Hausstatus.

    Wenn ich das richtig verstehe, ist der dritte Punkt ähnlich dem ersten. Wie kann ich also erreichen, dass nach dem Init diese Bausteine erneut berechnet werden?

    Einen Kommentar schreiben:


  • Taxus
    antwortet
    Ein paar Anmerkungen hierzu:

    1. Ein Grund für das von Dir beobachtete Verhalten ist, dass der Objekt-Baustein bei Start nicht berechnet wird. Die Defaults werden verwendet.

    2. Zum Binärauslöser ist zu beachten, dass *immer* beide Ausgänge senden. Wenn die Ausgänge auf Befehle gehen ist alles ok - die werden ja nur bei '1' abgearbeitet. Liegen hier jedoch KOs an, werden beide beschrieben. Deine Ausgangsbeschaltung, beide Ausgänge des Binärauslösers auf das selbe KO zu legen, ist also quasi ein Ausgangskurzschluß.

    3. Der HS berechnet die Logiken bei Init. Da dies bei der Initialisierung 'auf einen Schlag' geschieht, sind die Eingänge der unteren Logik mit ihrem remanenten bzw. Init-Wert vorbelegt (und nicht mit den Ergebnissen der oberen Logikkette). Dies sähe anders aus, wenn Du eine einzige komplette Kette zusammensetzen würdest.

    Einen Kommentar schreiben:


  • Tokamak
    antwortet
    Zitat von TRex Beitrag anzeigen
    Wird das KO beim Start abgefragt?
    Yep. Im obigen Logging (Screenshot) sieht man auch, dass der Aktor antwortet. Aber eben mit dem Wert 41, und nicht wie beim Schalten mit 81.

    Einen Kommentar schreiben:


  • TRex
    antwortet
    Wird das KO beim Start abgefragt?

    Einen Kommentar schreiben:


  • Tokamak
    antwortet
    Das ist es leider nicht. Ich habe es gerade nochmal ausprobiert, um auf Nummer Sicher zu gehen: Es spielt keine Rolle, ob ich den normalen oder sbc-Ausgang nehme. Die Logik wird erst dann gefeuert, wenn der Wert 81 bzw. 80 auf den Bus geschrieben wird, nicht 41 bzw. 40.

    Einen Kommentar schreiben:


  • TRex
    antwortet
    gerade im SBC liegt ja der Hund begraben. SBC heißt SEND BY Change, also wenn sich der Ausgang verändert... Das tut er ja bei einem Neustart des HS nicht, Du solltest also den Normalen Ausgang verwenden, dann gehts. Das EVENT fehtl ;-)

    Einen Kommentar schreiben:


  • Tokamak
    antwortet
    Zitat von TRex Beitrag anzeigen
    Du kannst Matthias das ruhig glauben.
    Tue ich ja auch Das Oder hätte in diesem Fall auch funktioniert, gar keine Frage.
    Aber die Nachbildung eines Aktorstatus - der letzte gewinnt - im Treiberobjekt war das Mittel, das ich gesucht habe.

    Einen Kommentar schreiben:


  • Tokamak
    antwortet
    Anbei der Screenshot der aktuellen Logik incl. Pflege eines kumulierten Hausstatus.

    Des weiteren 2 Eibmon-Screenshots über die Startphase des HS sowie die Aktion, wenn die Statusvariable erneut durch den Aktor gesendet wird. Im letzteren Screenshot sieht man, dass die Logik nun funktioniert (dafür erst mal Danke für den Tipp mit dem Treiberobjekt, BinAus war nur ein Notnagel), es stellt sich für mich nur die Frage, warum die Logik nach dem Start des HS nicht abgefeuert wird, obwohl der Aktor korrekt mit "ist an" antwortet.

    BTW: Es spielt keine Rolle, ob ich bei den Treiberobjekten den Standard- oder sbc-Ausgang nutze.
    Angehängte Dateien

    Einen Kommentar schreiben:


  • TRex
    antwortet
    Ich kann Dein Problem nicht ganz verstehen. Du hast also 2 Adressen, die Du überwachen willst, aber auch dezentral und zentral schalten.

    Du kannst doch die Statusmeldungen aus Deinem Screenshot
    (Steckdose Wohnzimmer 1 und Steckdose Wohnzimmer 2 ) direkt in eine Oder-Verknüpfung laufen lassen. Wenn einer der beiden AN ist, dann ist auch Deine "Belegtanzeige" an, das ist doch logisch vollkommen in Ordnung. Der Status answesend wird nach Deiner Logik ja zu True wenn ein zugeordnetes Gerät an ist. Wird einer abgeschaltet, dann bleibts solange an, bis der letzte aus ist.

    Eventgesteuert heißt eben soviel, wie daß das "1" - Telegramm durchläuft, mitbekommen wird von den darauf angesetzten Geräten und dann im "Nirwana" verpufft.

    Du kannst Matthias das ruhig glauben.

    Einen Kommentar schreiben:


  • MatthiasS
    antwortet
    Hilfestellung:

    Als erstes, was steht genau am Ausgang (Screenshot)

    Zweitens, bei diesem internen HS-Objekt über "Verweise" prüfen, ob das noch anderweitig verwendet wird.

    Einen Kommentar schreiben:


  • Tokamak
    antwortet
    Zitat von MatthiasS Beitrag anzeigen
    Denk' nochmals über "eventgesteuert" nach, verstanden hast du es noch nicht ganz.
    Doch, ich denke schon. Siehe unten.

    Zwei verschiedene Eingänge am BinAus bedeuten: letztes Telegramm zählt!!

    Essen EIN -> Ausgang EIN
    Wohnen EIN - Ausgang EIN
    Essen AUS - Ausgang AUS, AUCH WENN Wohnen noch ein ist
    Genau das wollte ich ja haben. Eigentlich kann es nicht passieren, da ich eine Zentraladresse verwende, um zwei Aktorkanäle für Wohn- und Esszimmer gleichzeitig zu schalten. Beide melden aber eigenständige Statusadressen zurück, falls ich doch mal die beiden trennen will. Und dann will ich nicht alle wieder anpacken müssen.

    Also soll der letzte gewinnen. Aber genau das tut meine o.g. BinAus-Lösung nicht, sie setzt auf 1, dann unerwartet auf 0, obwohl ausschließlich 1er ankommen!

    Da gehört, damit das logisch sauber ist, ein ODER hin.
    Eben nicht, weil der letzte gewinnen soll, nicht eine vorhandene 1.

    Mit offener Sperre oder dem Treiber geht es prinzipiell. Aber...

    Der Status wird nach HS-Start nicht gepflegt.

    Die Status-Variablen in der Eingangsbox sind mit "Beim Starten abfragen" markiert. Das tut der HS auch, und er bekommt auch den korrekten Status zurück. Allerdings triggern diese Antworttelegramme die Logik nicht, sondern nur die "eigentlichen" Statustelegramme, die als Konsequenz auf das Schalten geschickt werden. Siehe hierzu Uhrzeiten in den angehängten Grafiken.

    Was ist das nun schon wieder?
    Angehängte Dateien

    Einen Kommentar schreiben:


  • MatthiasS
    antwortet
    Denk' nochmals über "eventgesteuert" nach, verstanden hast du es noch nicht ganz.

    Zwei verschiedene Eingänge am BinAus bedeuten: letztes Telegramm zählt!!

    Essen EIN -> Ausgang EIN
    Wohnen EIN - Ausgang EIN
    Essen AUS - Ausgang AUS, AUCH WENN Wohnen noch ein ist

    Da gehört, damit das logisch sauber ist, ein ODER hin.

    Der Treiber

    http://www.eib-kroner.de/homeserver/...l#19231_objekt

    Einen Kommentar schreiben:


  • Tokamak
    antwortet
    Diese Status dienen nur der späteren Anzeige, und dazu, beim Wechsel von anwesend (1) auf abwesend (0) Lichter auszuschalten. Das ist aber zur Zeit noch abgeklemmt.

    Das mit dem Und verstehe ich nicht, denn im ersten Fall soll der letzte der beiden Status-Werte gespeichert werden. Daher kann ich die beiden mE nicht ver'und'en.

    Welches ist denn der Treiberbaustein?

    Die Zuweisung, einen Logikbausteinausgang direkt mit der Ausgangsadresse zu verknüpfen, ist aber prinzipiell OK, oder?

    Einen Kommentar schreiben:


  • MatthiasS
    antwortet
    Werden die Stati nur da verwendet zur Anzeige oder finden die sich auch noch in anderer Logik wieder?

    Statt der Binaus kannst du ein UND nehmen und nur einen Eingang beschalten, dann wird das sauberer. Oder eine offene Sperre. Es gibt auch einen Treiber-Baustein, der nur "durchreicht".

    Einen Kommentar schreiben:

Lädt...
X