Weiter zum Inhalt
  • Home
  • Aktuell
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Funktionspläne (FBD)

NEWS

  • Monatsrückblick Oktober 2026 ist online!
    BluefoxB
    Bluefox
    11
    1
    291

  • Mitmachen: Sprich „ioBroker“ ein – für ein lokales Aktivierungswort
    BluefoxB
    Bluefox
    6
    1
    480

  • Neuer Blogbeitrag: KI in ioBroker, vom Helfer im Admin bis zum eigenen Smart Assistant
    BluefoxB
    Bluefox
    4
    1
    531

Funktionspläne (FBD)

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 3 Kommentatoren 253 Aufrufe 3 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • fu_zhouF
    fu_zhouF
    fu_zhou
    schrieb am zuletzt editiert von fu_zhou
    #1

    Zuerst einmal: Vielen Dank für die Implementierung von "Funktionspläne (FBD)" - wirklich genial! Vielleicht wäre es sinnvoll, neben JavaScript, Blockly und Node-Red eine Rubrik hier im Forum unter Skripten/Logik zu eröffnen?

    Mir ist es bisher nicht gelungen herauszufinden, wo die schon verfügbaren Bausteine herkommen. Es gibt ein paar weitere Bausteine, die es in der SPS-Welt gibt, hier aber fehlen, z.B. der Selector oder Multiplexer (bei 0 am Bool-Eingang wir der Real 0 durchgestellt und bei 1 am Bool-Eingang der Real 1), s. https://oscat.readthedocs.io/projects/oscat-basic/de/latest/Engineering/signal processing/mux_r2/

    Dann fehlen dem PID ein paar Funktionen, die der PID-Adapter mitbringt, z.B. Invertieren des Ausgangs (= z.B. von kp 1 auf kp -1 umschalten), eine Totzone, in der der Regler den Reglerausgang nicht verändert und ein Anhalten des Reglers für den Fall, dass eine Umschaltung stattfindet, auf die der Regler nicht reagieren soll bzw. erst wieder nach Freigabe, s. https://oscat.readthedocs.io/projects/oscat-basic/de/latest/Engineering/Control/ctrl_pid/

    Überhaupt wäre es der Wahnsinn, wenn die OSCAT Basic- und Building-Bausteine (bzw. eine sinnvolle Auswahl) nach und nach in die Bausteinbibliothek von Funktionspläne (FBD) übertragen werden kann. Kann ich da etwas dazu beitragen?

    Der Quellcode der Bausteine in SCL liegt hier:
    https://github.com/eclipse-oscat/oscat-libs-archive/blob/main/OSCAT_BASIC_LIB/ARCHIVE/rel335/OSCAT_BASIC_335.TXT
    https://github.com/eclipse-oscat/oscat-libs-archive/blob/main/OSCAT_BUILDING_LIB/Archive/rel100/OSCAT_BUILDING_100.TXT

    Synology DS920+ VM, S7-315 PN mit ET200S

    BluefoxB 1 Antwort Letzte Antwort
    0
    • fu_zhouF fu_zhou

      Zuerst einmal: Vielen Dank für die Implementierung von "Funktionspläne (FBD)" - wirklich genial! Vielleicht wäre es sinnvoll, neben JavaScript, Blockly und Node-Red eine Rubrik hier im Forum unter Skripten/Logik zu eröffnen?

      Mir ist es bisher nicht gelungen herauszufinden, wo die schon verfügbaren Bausteine herkommen. Es gibt ein paar weitere Bausteine, die es in der SPS-Welt gibt, hier aber fehlen, z.B. der Selector oder Multiplexer (bei 0 am Bool-Eingang wir der Real 0 durchgestellt und bei 1 am Bool-Eingang der Real 1), s. https://oscat.readthedocs.io/projects/oscat-basic/de/latest/Engineering/signal processing/mux_r2/

      Dann fehlen dem PID ein paar Funktionen, die der PID-Adapter mitbringt, z.B. Invertieren des Ausgangs (= z.B. von kp 1 auf kp -1 umschalten), eine Totzone, in der der Regler den Reglerausgang nicht verändert und ein Anhalten des Reglers für den Fall, dass eine Umschaltung stattfindet, auf die der Regler nicht reagieren soll bzw. erst wieder nach Freigabe, s. https://oscat.readthedocs.io/projects/oscat-basic/de/latest/Engineering/Control/ctrl_pid/

      Überhaupt wäre es der Wahnsinn, wenn die OSCAT Basic- und Building-Bausteine (bzw. eine sinnvolle Auswahl) nach und nach in die Bausteinbibliothek von Funktionspläne (FBD) übertragen werden kann. Kann ich da etwas dazu beitragen?

      Der Quellcode der Bausteine in SCL liegt hier:
      https://github.com/eclipse-oscat/oscat-libs-archive/blob/main/OSCAT_BASIC_LIB/ARCHIVE/rel335/OSCAT_BASIC_335.TXT
      https://github.com/eclipse-oscat/oscat-libs-archive/blob/main/OSCAT_BUILDING_LIB/Archive/rel100/OSCAT_BUILDING_100.TXT

      BluefoxB
      BluefoxB
      Bluefox
      schrieb am zuletzt editiert von
      #2

      @fu_zhou Danke!

      Die Bausteine der Bibliothek stecken im javascript-Adapter, im Modul @iobroker/fb-runtime. Den Code findest du unter src/lib/fb/blocks.ts, die Beschreibung aller Bausteine in der Doku.

      Einen MUX kannst du dir schon jetzt bauen, bis es ihn fertig gibt:

      • mit dem Baustein JS (Eingänge IN1 = BOOL, IN2, IN3):
      return IN1 ? IN3 : IN2;
      
      • oder als eigener Baustein: einen Plan anlegen, "Dieser Plan ist ein Baustein" einschalten, dann über FB_IN/FB_OUT die Anschlüsse festlegen und im Plan selbst z.B. einen JS einsetzen. Den Baustein kannst du danach in jedem Plan verwenden.

      Zu MUX/SEL und zum PID (Ausgang invertieren, Totzone, Halt/Freigabe) mach bitte je ein Issue auf: https://github.com/ioBroker/ioBroker.javascript/issues
      Am besten jeweils mit Anschlüssen und erwartetem Verhalten, so wie du es hier beschrieben hast.

      Mithelfen kannst du gern, PRs sind willkommen. Bei OSCAT schau bitte vorher auf die Lizenz, bevor Code direkt übernommen wird. Verhalten und Schnittstellen nachzubauen ist kein Problem.

      1 Antwort Letzte Antwort
      0
      • fu_zhouF
        fu_zhouF
        fu_zhou
        schrieb am zuletzt editiert von
        #3

        Super, danke, ich mache mal in Github weiter. Den SEL/MUX habe ich schon mit dem JS-Block gebaut, allerdings mit deutlich umfangreicherem Code als der kurze Einzeiler oben 😉

        Synology DS920+ VM, S7-315 PN mit ET200S

        1 Antwort Letzte Antwort
        0
        • EisteeE
          EisteeE
          Eistee
          schrieb zuletzt editiert von Eistee
          #4

          Hi

          Da ich beruflich mit SPS Programmierung zu tun habe frage ich einfach mal.
          Was ist der Plan? Wollt ihr in ioBroker so programmieren wie auch eine SPS programmiert wird? wenn ja warum? Wir haben inzwischen typescript codegenerierung per KI im ioBroker und ihr wollt wieder wie vor 40 Jahren SPS in KOP FUP AWL SCL GRAPH programmieren? Kann ich mir kaum vorstellen.
          In der Industrie versuchen wir gerade den KI Modellen beizubringen die SPS-Steuerungen vernünftig mit KI zu programmieren da die ja nur mit diesen Uhralten Sprachen umgehen können und speichertechnisch noch in den 90er Jahren angeordnet werden müssen. Das kommt der Programmierung von µControlern gleich. Wieso wollen wir im ioBroker uns solche Einschränkungen geben?

          Gruß Alina

          BluefoxB 1 Antwort Letzte Antwort
          0
          • EisteeE Eistee

            Hi

            Da ich beruflich mit SPS Programmierung zu tun habe frage ich einfach mal.
            Was ist der Plan? Wollt ihr in ioBroker so programmieren wie auch eine SPS programmiert wird? wenn ja warum? Wir haben inzwischen typescript codegenerierung per KI im ioBroker und ihr wollt wieder wie vor 40 Jahren SPS in KOP FUP AWL SCL GRAPH programmieren? Kann ich mir kaum vorstellen.
            In der Industrie versuchen wir gerade den KI Modellen beizubringen die SPS-Steuerungen vernünftig mit KI zu programmieren da die ja nur mit diesen Uhralten Sprachen umgehen können und speichertechnisch noch in den 90er Jahren angeordnet werden müssen. Das kommt der Programmierung von µControlern gleich. Wieso wollen wir im ioBroker uns solche Einschränkungen geben?

            Gruß Alina

            BluefoxB
            BluefoxB
            Bluefox
            schrieb zuletzt editiert von
            #5

            @Eistee Nein, niemand muss jetzt wie auf einer SPS programmieren. FBD ist eine weitere Möglichkeit neben JavaScript/TypeScript, Blockly und Rules. Es ersetzt keine davon.

            Die Einschränkungen einer SPS gibt es dabei nicht. Kein Speicherlayout, keine Zykluszeit und keine festen Datentypen wie in den 90ern. Der Plan wird beim Speichern in JavaScript übersetzt und läuft wie jedes andere Skript im javascript-Adapter. Mit "FBD → JS" kannst du dir den erzeugten Code ansehen. Wenn etwas fehlt, gibt es den Baustein JS oder eigene Bausteine.

            Warum überhaupt:

            • Viele Nutzer kommen aus der SPS- oder Gebäudetechnik-Welt (siehe @fu_zhou oben). Sie denken in Timern, Flipflops, Reglern und Schwellwerten und sind damit sofort produktiv.
            • Für Logik, die dauerhaft läuft (Verzögerungen, Selbsthaltungen, Regelkreise), ist ein Plan oft übersichtlicher als Code mit Callbacks und Timern.
            • Die Online-Ansicht zeigt live, welcher Wert gerade wo anliegt. Für die Fehlersuche ist das bei solcher Logik sehr praktisch, auch wenn der Code von einer KI stammt.

            Wer lieber TypeScript schreibt oder sich den Code von der KI erzeugen lässt, macht einfach so weiter wie bisher. Beschrieben ist das hier: Funktionspläne (FBD)

            1 Antwort Letzte Antwort
            0
            • fu_zhouF
              fu_zhouF
              fu_zhou
              schrieb zuletzt editiert von
              #6

              @eistee Die von dir völlig zurecht adressierten Einschränkungen und den Sprung zurück in die 90er gibt es zum Glück nicht. Ich habe einige Regler bei mir in Betrieb - bisher über den PID-Adapter und den einzubinden ist schon umständlich. Ich habe jetzt die ersten Blockly-Skripte, mit denen ich den PID-Adapter eingebunden habe, auf Funktionsplan umgestellt und das Ergebnis ist wirklich genial: Einfach zu lesende Logik, einfaches Debuggen über die Online-Ansicht, ein fertiger Plan kann als Baustein gespeichert und instanziiert werden (ohne Instanz-DBs ;-) etc. Natürlich kann man argumentieren, dass man für eine einfache oder sogar komplexe Funktion nur 1 Zeile Javascript braucht und hier mehrere Blöcke zu verschalten sind - aber die Möglichkeit bleibt ja, wie @bluefox schreibt.

              Synology DS920+ VM, S7-315 PN mit ET200S

              1 Antwort Letzte Antwort
              1

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              291

              Online

              33.1k

              Benutzer

              84.2k

              Themen

              1.4m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe