Ankündigung

Einklappen
Keine Ankündigung bisher.

REQUEST :: Gira X1 Logikbaustein 2Byte -> 16 Bit

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

  • MultiMike
    antwortet
    Zitat von araeubig Beitrag anzeigen
    MultiMike Habe nun alle 1-Byte Status-Meldungen in den Logiken angelegt und wollte mich nun um das "2-Byte-Objekt" mit DPT 237.600 des DALI-Gateways kümmern. Stelle aber fest, dass ich keine Verbindung von meinem Eingang zum Baustein machen kann. Ist es der richtige Weg dort den Typ-Konverter zu nutzen?
    So, SRY, gerade erst aus dem Urlaub zurück. Sicher, dass es ein 2-Byte Objekt ist? Ist das Ding ggf. vorzeichenbehaftet? Der BitMapper erwartet einfach einen (max.) 2Byte Wert, dieser wird intern als Integer gehandelt, unsigned.

    Einen Kommentar schreiben:


  • araeubig
    antwortet
    MultiMike Habe nun alle 1-Byte Status-Meldungen in den Logiken angelegt und wollte mich nun um das "2-Byte-Objekt" mit DPT 237.600 des DALI-Gateways kümmern. Stelle aber fest, dass ich keine Verbindung von meinem Eingang zum Baustein machen kann. Ist es der richtige Weg dort den Typ-Konverter zu nutzen?

    Einen Kommentar schreiben:


  • MultiMike
    antwortet
    Zitat von araeubig Beitrag anzeigen
    MultiMike

    zum Thema Ausgangsmatrix wäre eine Alternative auch noch ein neuer Eingangsbaustein, der einen 2. Ausgang hat den man mit einem Wert belegen kann (als Beispiel "1"). Nun könnte man alle Ventile mit diesem neuen Eingangsbaustein an einen Eingangswahlschalter legen. Durch das 2. Feld kann der Eingangswahlschalter umschalten und den Ventilstatus weiterreichen - zusätzlich hat man über den 2. Wert auch noch eine ID des "Auslösers". Wie findest Du diese Möglichkeit einer Umsetzung?

    Gruss André
    ich muss mich ehrlich gesagt erstmal in die Thematik eindenken ;-) ... bin gerade im "Vorurlaubsstress" ...

    Einen Kommentar schreiben:


  • araeubig
    antwortet
    MultiMike

    zum Thema Ausgangsmatrix wäre eine Alternative auch noch ein neuer Eingangsbaustein, der einen 2. Ausgang hat den man mit einem Wert belegen kann (als Beispiel "1"). Nun könnte man alle Ventile mit diesem neuen Eingangsbaustein an einen Eingangswahlschalter legen. Durch das 2. Feld kann der Eingangswahlschalter umschalten und den Ventilstatus weiterreichen - zusätzlich hat man über den 2. Wert auch noch eine ID des "Auslösers". Wie findest Du diese Möglichkeit einer Umsetzung?

    Gruss André

    Einen Kommentar schreiben:


  • araeubig
    antwortet
    MultiMike

    Habe die Logik mal in Form gebracht um den Status der Ventile auszuwerten -> das erste mal zum Test gemacht:

    Screenshot (51).png

    Der Ventilstatus wird immer auf einer "Info-Kachel" dargestellt und beim Fehler "Kurzschluss" oder "Überlast" auch auf dem G1 angezeigt.

    Einen Kommentar schreiben:


  • araeubig
    antwortet
    Zitat von MultiMike Beitrag anzeigen
    Variable Anzahl an Eingängen: ist es wirklich eine gute Idee, dass eine Ausgangsmatrix über unterschiedliche Eingänge gesetzt wird? Können wir gerne weiter besprechen, aber ich denke, dass man sowas eleganter lösen kann ;-)
    Hallo Michael,

    Icon nun vorhanden - merci. Ich wollte nur aufmerksam Feedback geben.

    Du hast natürlich recht, dass das unsichtbar machen der einfachere Weg ist. Völlig richtig.

    Eleganter lösen mit der Ausgangsmatrix? Na da bin ich gespannt, was Du da für Ideen hast. Mir geht es primär darum die Logikblätter übersichtlich zu halten und weniger Bausteine pro Blatt zu benutzen.

    Einen Kommentar schreiben:


  • MultiMike
    antwortet
    Guten Morgen André,

    danke für Dein Feedback.

    Zu Deinen Punkten:

    Das fehlende Icon: yepp, die Toolchain kopiert den icons-Ordner leider nicht mit, so dass man hier manuell tätig werden muss. Hatte ich wohl nach dem Builden vergessen ;-) Ist in anhängender ZIP erfolgt.

    Umschaltung 1 bzw 2 Byte: Ich habe bei mir einfach die Ausgänge, die ich nicht "auswerte" unsichtbar geschaltet. So hast Du im einfachsten Fall nur einen Ausgang und gut.

    Variable Anzahl an Eingängen: ist es wirklich eine gute Idee, dass eine Ausgangsmatrix über unterschiedliche Eingänge gesetzt wird? Können wir gerne weiter besprechen, aber ich denke, dass man sowas eleganter lösen kann ;-)



    BTW.: der einfachste Weg das fehlende Icon in Dein Projekt zu bekommen, ist vermutlich, dass die die Inhalte im GPA-Order (z.B. C:\ProgramData\Gira\Gira Project Assistant\LogicNodes\appfarms_com.Logic.Nodes\1.0. 0) direkt mit den Inhalten aus dem neuen ZIP ersetzt. Es müsste auch reichen, nur den "icons"-Ordner dort hin zu kopieren.

    Wenn das nicht klappt:

    - alle Verwendungen das Bausteins aus dem Projekt entfernen
    - GPA beenden
    - Ordner "appfarms_com.Logic.Nodes" aus "C:\ProgramData\Gira\Gira Project Assistant\LogicNodes" löschen
    - Baustein neu installieren


    LG,

    Michael




    Angehängte Dateien

    Einen Kommentar schreiben:


  • araeubig
    antwortet
    Zitat von MultiMike Beitrag anzeigen
    Nach einigem Trail&Error habe ich nun (m)einen ersten Baustein fertig, der "Bitmapper". Das Ding konvertiert einen 1-2 Byte Wert in eine entsprechende Bit-Repräsentation.
    Guten Morgen Mike

    habe Deinen Baustein gestern Abend mal installiert und ein wenig probiert.

    In den ersten Tests fielen mir ein paar Dinge auf:

    - Dein verwendetes Icon (in Deinem Screenshot sichtbar) fehlt in der LBS-Datei
    - es wäre übersichtlicher, wenn man den Baustein umschalten könnte auf 1- bzw. 2-Byte Eingangsobjekte - dann wären die ungenutzten Ausgänge nicht sichtbar.
    - auch wenn eine Hilfe-Datei nicht wirklich notwendig ist, so gehört diese ja zum "fertigen" Baustein um GIRA-konform zu sein

    und noch eine Idee für die Version 1.1.0 :-)....

    Wenn Du es ermöglichst, dass der Baustein eine variable Anzahl an Eingängen hätte (natürlich alle mit dem identischen Byte-Format) und ein weiterer Ausgang existiert mit der Nummer des Eingangs mit letztem empfangenen Wert, dann könnte man das Bitmapper-Ergebnis direkt mit "Eingangsnummer" weiterverarbeiten. Also zum Beispiel als Meldung an ein G1 senden mit TITEL= "Fehler Dimmer/Ventil Nummer x" CONTENT= "aufgeschlüsselter Fehler aus Bitmapper und Textformatierer"


    Gruss André

    Einen Kommentar schreiben:


  • araeubig
    antwortet
    MultiMike vielen Dank. Werde heute Abend probieren.

    Gruss André

    Einen Kommentar schreiben:


  • MultiMike
    antwortet
    araeubig viel Spaß damit.

    Einen Kommentar schreiben:


  • MultiMike
    antwortet
    so, ich habe nun mein DEV-Zertifikat von GIRA bekommen und mich durch die Doku und Toolchain gewühlt ... einfach geht anders ;-)

    Nach einigem Trail&Error habe ich nun (m)einen ersten Baustein fertig, der "Bitmapper". Das Ding konvertiert einen 1-2 Byte Wert in eine entsprechende Bit-Repräsentation. Falls jemand Interesse hat, gerne melden.

    bmap1.PNG
    Zuletzt geändert von MultiMike; 03.08.2021, 14:44.

    Einen Kommentar schreiben:


  • hyman
    antwortet
    MultiMike – der Name ist Programm

    Einen Kommentar schreiben:


  • MultiMike
    antwortet
    Tja, warum einfach machen wenn's auch kompliziert geht? ;-)

    ich wollte den Eingang erstmal in 2 Bytes wandeln und und und ... war wohl overdosed.

    Danke Dir!

    Einen Kommentar schreiben:


  • hyman
    antwortet
    Das geht leider alles nicht. Es gibt halt was da ist. Woher soll der Baustein auch was anderes nehmen?

    Zwischenergebnisse dürfen alle in C# möglichen Typen haben, nur auf einen Ausgang bekommst Du die dann halt nicht, kannst sie also nur innerhalb derselben Formel weiterverwenden, und das auch nur ein Mal.

    Trotzdem kannst Du das Problem auch ohne Arrays, Enumeratoren und Libraries lösen. Man nimmt einfach den Eingangs-Integer und prüft dessen bitweise Ver-UND-ung mit dem gewünschten Bit (implizit) auf ungleich Null. Das Ergebnis ist ein Boolean:
    {int:I} & 0x0001
    Mit 16 derartigen Formeln und ebenso vielen Ausgängen ist die Zerlegung in Bits gelöst.

    Disclaimer: Ungetestet.

    Einen Kommentar schreiben:


  • MultiMike
    antwortet
    EugenDo

    hyman

    Was mir hierfür bei dem Logik-Baustein (Formel) scheinbar fehlt, ist:


    a) die Möglichkeit gezielt Libs einzubinden, z.B. "using System.Linq" (könnte auch gerne per Default verfügbar sein), um Enumeratoren wie .Last() nutzen zu können

    (ein using System.Linq als Formel führt zu einem Fehler)


    und/oder


    b) als AusgangsTyp für eine Formel ein (Byte)-Array angeben zu können

    (könnte dann z.B. via _out1_[0] oder _out1_.Last() angesprochen werden)




    Wenn das gehen würde, wäre ich glücklich :-)

    LG,

    Michael

    Einen Kommentar schreiben:

Lädt...
X