Hilfe in Loxone Config mit Programmier Baustein in PicoC

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

    #1

    Hilfe in Loxone Config mit Programmier Baustein in PicoC

    Hallo Leute,
    Ich bräuchte Hilfe in der Ansteuerung von den Ausgängen und Abfrage der Eingangs Zustandes des Loxone Miniservers.
    Ich sag schon mal in Voraus das ich ein Anfänger bin im PicoC .
    Also ich hab ein Beispiel (Test501.loxone download link ist weiter unten wen es sich wer anschauen will) mit fertigen Bausteinen aus der Loxone Config.
    Am Miniserver hab ich 3 Taster die jeweils an einen Eingang (I1- I3) mit +24V verbunden sind und am Ausgang (Q1 - Q4) ist jeweils eine LED mit einer anderen Farbe mit Vorwiderstand angeschlossen.mit +24V verbunden sind. Im Beispiel Test501 kann ich die LED`s beliebig ansteuern mit UND , ODER , NICHT Bausteinen. Test501 hab ich auch in den Server Hochgeladen und es hat Funktioniert. Nun wollte ich die gesamte Funktion in einen Programmier Bausteins in Pico C zu Programmieren. In Test502 hab ich den Baustein hergerichtet mit den Eingängen und Ausgängen. Meine Frage ist jz wie kan ich den Eingang des Bausteins abfragen und wie den Ausgang ansteuern ? Und könnte wer vil wer mir den PicoC source code vom UND Baustein als Beispiel zeigen hab gesucht aber nix gefunden außer die offizielle Dokumentation .
    Ich habe es Versuch mit getinput und setoutput aber ohne erfolg. Oder wird hier ein anderer Befehl verwendet? Und wie oder was genau wird mit getinput abgefragt ?
    Und kann wer ein beispiel in PicoC zeigen wie ich mit dem ersten Taster eine LED ansteuern kann ?

    Hier die Links:



    Danke schon mal im voraus für Antworten .
  • romildo
    Lebende Foren Legende
    • 25.08.2015
    • 5169

    #2
    PicoC Programmierung erlaubt keine Fehler, da es sonst möglich ist, dass der Miniserver immer wieder Rebootet und so nicht mehr erreichbar ist!
    Dann musst du die SD-Karte neu formatieren und von vorne beginnen.

    Beispiel 1 aus der Dokumentation http://www.loxone.com/dede/service/d.../programm.html
    etwas abgeändert ergibt ein einfaches Beispiel wie du mit den 4 Eingängen jeweils den dazugehörigen Ausgang schalten kannst.
    Eingang 1 ein = Ausgang 1 ein
    Eingang 2 ein = Ausgang 2 ein
    usw.
    Eingach folgendes Programm im Programmblock einfügen:

    // write program here in PicoC
    float f1,f2,f3,f4;
    int nEvents;
    while(TRUE)
    {
    nEvents = getinputevent();
    if (nEvents & 0x3c)
    {
    f1 = getinput(0);
    f2 = getinput(1);
    f3 = getinput(2);
    f4 = getinput(3);
    setoutput(0,f1);
    setoutput(1,f2);
    setoutput(2,f3);
    setoutput(3,f4);
    }
    sleep(100);
    }
    Zuletzt geändert von romildo; 25.11.2015, 15:36.
    LG Romildo

    Kommentar

    • Gast

      #3
      Danke romildo für die Antwort und das Beispiel

      Ich hab es in den Programm Block geladen und es hat funktioniert.
      für was braucht man :

      char szBuffer[128];

      und was sagt das 0x1c genauer aus ?

      Lg. HyDrA
      Zuletzt geändert von Gast; 25.11.2015, 14:47.

      Kommentar

      • romildo
        Lebende Foren Legende
        • 25.08.2015
        • 5169

        #4
        Wenn du dir das Beispiel 1 in der Dokumentation anschaust, wirst du sehen, dass die Zeile char szBuffer[128] dort drin ist und wozu sie gebraucht wird.
        Ich habe das Beispiel 1 in den Programmbaustein kopiert und diese Zeile übersehen. Brauchst du nicht kannst du löschen.

        0x1c ist ja eine Hexzahl in Binär wäre dies 11100
        Die Zeile if (nEvents & 0x1c) bewirkt, dass wenn einer der ersten 3 Analogeingänge auf 1 wechselt die Schleife abgearbeitet wird.
        Das erklärt dann auch schon warum AI4 nicht funktioniert. Dazu musst du die Zeile in if (nEvents & 0x3c) abändern.
        0x3c = Bin 111100

        Hoffe es ist einigermassen verständlich.
        Habe das Programm in #2 diesbezüglich angepasst.
        LG Romildo

        Kommentar

        • Gast

          #5
          Bin vor ein paar Minuten bin ich draufgekommen das es auch funktioniert wen man :
          if (nEvents = 1)

          abändert , soweit ich das verstanden hab ist nEvents immer 1 im DEZ wen ein Eingangssignal da ist.
          Danke dir hast mir sehr weiter geholfen

          Kommentar

          • romildo
            Lebende Foren Legende
            • 25.08.2015
            • 5169

            #6
            Ja das geht schon, es könnte aber auch sein, dass du nur auf ein Ereignis an einem bestimmten Eingang reagieren möchtest und nicht auf eine Änderung an irgend einem Eingang.
            Es funktioniert auch ohne if Schleife
            LG Romildo

            Kommentar

            • Gast

              #7
              Hallo

              Ich möchte gerne das(siehe Anhang) in einem Baustein programmieren.4 digitale Eingänge, 1 Analoger Ausgang. Das Ergebnis soll als Spannungswert ausgegeben werden.
              Kann mir bitte jemand helfen?
              Danke!!
              LG Man

              Kommentar

              • svethi
                Lebende Foren Legende
                • 25.08.2015
                • 6346

                #8
                Hallo man, nimm doch einfach den Formelbaustein für solche einfachen Berechnungen.
                PicoC ist fehleranfällig und außerdem kannst Du nur 8 Programme laufen lassen. Diese solltest Du für Sachen aufheben, die absolut nicht anders zu machen sind.
                Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

                Kommentar

                • Gast

                  #9
                  Kann ich folgendes in PicoC lösen oder gibt es einen anderen Baustein, der besser dafür geeignet währe:
                  Im Eingang TI1 ist der Wert X
                  Im Eingang TI2 ist der Wer 1 für aktiv oder der Wert 0 für inaktiv.
                  Ist TI2 inaktiv, also 0, so soll der Wert von TI1 an den Ausgang weitergegeben werden.
                  Ist TI2 aktive, also 1, so soll vom Wert von TI1 2 abgezogen werden (x-2) und an den Ausgang weitergegeben werden.

                  Dies müsste ja eine if /else Funktion sein.
                  Leider habe ich diese so in der Online-Doku nicht gefunden.

                  Grüsse

                  Kommentar

                  • Christian Fenzl
                    Lebende Foren Legende
                    • 31.08.2015
                    • 11250

                    #10
                    Dafür brauchst du keinesfalls PicoC, das ist einfache Mathematik.

                    In einem Formelbaustein
                    I1-I2*2

                    EDIT: Wenn die Rechnung komplexer ist: Die zwei Werte zb mit zwei Formeln berechnen, und per Analogwahlschalter hinundher schalten.

                    lg, Christian
                    Zuletzt geändert von Christian Fenzl; 17.10.2018, 22:51.
                    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                    Kommentar

                    • Meista
                      LoxBus Spammer
                      • 20.10.2015
                      • 240

                      #11
                      Statusbaustein!
                      Gruß, Oliver

                      Loxone seit 2012, 4x Miniserver (Gateway-Client), 7x Extension, 1x Relay, 3x Muti Extension Air, 3x Dimmer Ext., 2x Air Base, 2x 1-Wire/NFC, Tree mit 3x Code-Touch V2, DMX, KNX Wetterstation und div. KNX (heizungs)-Aktoren, 3x Hörmann Tormodul, Anbindung Denon HEOS, Mitsubishi Multisplit Klimaanlage, Daikin Klimaanlage, Dimplex WP, Zehnder Lüftung, 4x div. Kostal PV Wechselrichter + BYD HV und HVM Batterie, Fritzbox, Loxberry

                      Kommentar

                      • Gast

                        #12
                        @ Christian Fenzl
                        Danke für die Formel, wenn ich die so sehe...
                        ... Sorry für die Frage und Danke für die Hilfe

                        @ Meista
                        Danke für den zweiten Hinweis.
                        Ich wusste nicht, dass der
                        Statusbaustein rechnen kann, werde aber dies aber ebenfalls Testen.

                        Kommentar

                        • Meista
                          LoxBus Spammer
                          • 20.10.2015
                          • 240

                          #13
                          Zitat von Bongo 1st
                          @ Christian Fenzl
                          Danke für die Formel, wenn ich die so sehe...
                          ... Sorry für die Frage und Danke für die Hilfe

                          @ Meista
                          Danke für den zweiten Hinweis.
                          Ich wusste nicht, dass der
                          Statusbaustein rechnen kann, werde aber dies aber ebenfalls Testen.
                          wußte ich lange auch nicht, es steht aber sogar ein Beispiel im Konfig Fenster :-)
                          Gruß, Oliver

                          Loxone seit 2012, 4x Miniserver (Gateway-Client), 7x Extension, 1x Relay, 3x Muti Extension Air, 3x Dimmer Ext., 2x Air Base, 2x 1-Wire/NFC, Tree mit 3x Code-Touch V2, DMX, KNX Wetterstation und div. KNX (heizungs)-Aktoren, 3x Hörmann Tormodul, Anbindung Denon HEOS, Mitsubishi Multisplit Klimaanlage, Daikin Klimaanlage, Dimplex WP, Zehnder Lüftung, 4x div. Kostal PV Wechselrichter + BYD HV und HVM Batterie, Fritzbox, Loxberry

                          Kommentar

                          • romildo
                            Lebende Foren Legende
                            • 25.08.2015
                            • 5169

                            #14
                            Zitat von Meista
                            wußte ich lange auch nicht, es steht aber sogar ein Beispiel im Konfig Fenster :-)
                            Rechnen kann der aber nur sehr beschränkt und ausser Multiplikation und Division nur mit Werten an den Eingängen.

                            Für das gewünschte Beispiel müsste also entweder eine 2 an einem Eingang anliegen oder der Wert 1 zweimal abgezogen werden.
                            Beispiel 1:
                            Wert x an AI1
                            Wert 0/1 an AI2
                            Bedingung; AI2 == 1, Statuswert: <v1>-<v2>-<v2>
                            sonst Statuswert: <v1>

                            Beispiel 1:
                            Wert x an AI1
                            Wert 0/2 an AI2
                            Bedingung; AI2 == 2, Statuswert: <v1>-<v2>
                            sonst Statuswert: <v1>


                            LG Romildo

                            Kommentar

                            • Meista
                              LoxBus Spammer
                              • 20.10.2015
                              • 240

                              #15
                              du kannst auch <v1*2> machen oder *100 wie im Beispiel.
                              Gruß, Oliver

                              Loxone seit 2012, 4x Miniserver (Gateway-Client), 7x Extension, 1x Relay, 3x Muti Extension Air, 3x Dimmer Ext., 2x Air Base, 2x 1-Wire/NFC, Tree mit 3x Code-Touch V2, DMX, KNX Wetterstation und div. KNX (heizungs)-Aktoren, 3x Hörmann Tormodul, Anbindung Denon HEOS, Mitsubishi Multisplit Klimaanlage, Daikin Klimaanlage, Dimplex WP, Zehnder Lüftung, 4x div. Kostal PV Wechselrichter + BYD HV und HVM Batterie, Fritzbox, Loxberry

                              Kommentar

                              Lädt...