Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. [Adapter] Beckhoff ADS

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

[Adapter] Beckhoff ADS

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
beckhoff
241 Beiträge 39 Kommentatoren 53.5k Aufrufe 32 Watching
  • Ä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.
  • dkleber89D Offline
    dkleber89D Offline
    dkleber89
    schrieb am zuletzt editiert von
    #90

    Hallo @Mario275,

    ich habe gerade heute den Pullrequest für das Stable Repository gemacht. Dies muss noch vom ioBroker Team genemigt werden dann wird das Update im ioBroker aufscheinen.

    Sollte in den nächsten Tagen sein.

    Gruß,
    dkleber89

    M 2 Antworten Letzte Antwort
    0
    • E Offline
      E Offline
      engenious
      schrieb am zuletzt editiert von
      #91

      Hallo zusammen,

      bin neu im Forum. Erst einmal Kompliment für die tolle Lösung, die hier entstanden ist.
      Ich habe den Beckhoff ADS Adapter auf einem RaspberryPi mit ioBroker installiert.
      Meine PLC ist eine CX8090 mit TC2 2.11 Build 2249.
      Ich habe wie andere auch keine ADS Verbindung herstellen können.
      Meines Wissens nach ist es so:
      Auf dem Raspberry fehlt ein ADS Router. Die für den ADS Adapter vermutlich verwendete API baut selbst keine Verbindung zur entfernten PLC auf, sondern nur zum lokalen ADS Router. Beckhoff stellt ADS Router mit jedem TwinCAT System (z.B. TwinCAT PLCs, TwinCAT XAE) bereit. Außerdem kann der ADS Router auf Windows und Windows CE unabhängig von TwinCAT installiert werden (Beckhoff stellt Installer für unterschiedliche Targets bereit, Windows 32, Windows 64, Windows CE ARM, ...). Leider nicht für Debian/Raspbian.
      Habe ähnliche Erfahrungen auch mit anderen Systemen gemacht, die ADS als Protokoll zur Kommunikation mit einer Beckhoff PLC nutzen (z.B. Touch Panels).

      Wahrscheinlich haben diejenigen, die den ioBroker ADS Adapter erfolgreich am laufen habe auf dem gleichen System (CX oder PC) auch einen ADS Router laufen (also z.B. TwinCAT PLC oder XAE).

      Kann das hier jemand bestätigen? Oder anders herum: hat schon jemand diesen Adapter auf einem Target erfolgreich betreiben können, auf dem kein ADS Router läuft?

      Viele Grüße
      Swen

      W 1 Antwort Letzte Antwort
      0
      • T.SpoonerT Offline
        T.SpoonerT Offline
        T.Spooner
        schrieb am zuletzt editiert von
        #92

        Hallo Swen,
        ich habe eine ADS-Verbindung zwischen einem Raspberry und einem PC (TC2 (V2.11.2237)) lauf stabil laufen, auch zu meinem Desktop PC (XAE (TC3)) funktioniert es.
        Am Anfang hatte ich auch eine Problem (sh. oben), aber das war ein Fehler von mir.

        Gruß T.Spooner

        @T-Spooner sagte in [Adapter] Beckhoff ADS:

        Hallo,
        ich bin ein ziemlicher Newbie mit dem IOBroker und Raspberry (ganze 2 Tage Erfahrung 😉 ).
        Ich habe bei mir vor 10 Jahren Beckhoffsystem eingebaut und habe auch etwas Erfahrung auch in ADS-Kommunikation zwischen verschiedenen SPSen. Aber dieses Teil bekomme ich nicht zum Laufen 😭 .
        Ich versuche meine Steuerung TC2 (V2.11.2237) verzweifelt anzubinden, aber der Beckhoff-ADS-Adapter und die SPS wollen einfach nicht:

        beckhoff.0 2019-11-24 17:11:35.135 info (1678) Try to reconnect in 15 seconds
        beckhoff.0 2019-11-24 17:11:35.133 error (1678) ADS Client: Error: read ECONNRESET
        beckhoff.0 2019-11-24 17:11:20.615 error (1678) ADS Client: Error: timeout

        Ein Broadcast Search aus dem TC-SystemManager hat auch nix ergeben, pingen geht aber.
        Da ich mir eine C6015 mit TC3 geleistet hab , habe ich es auch mit der versucht, komme aber zum gleichen Ergebnis.
        Ein Broadcast Search zwischen den TC2- und TC3-SPSen ist erfolgreich, auch zu meinem TC3 XAE.

        Ich komme jetzt natürlich zu der Schlussfolgerung, dass etwas in den Einstellungen beim IOBroker nicht stimmt, da kenne ich mich aber (noch) nicht genug aus.

        Wäre nett, wenn mir da jemand auf die Sprünge helfen könnte.

        Gruß Tommi

        Haussteuerung mit Beckhoff C6015 (TC3)
        IoBroker auf SynologyNas (DS220+)
        2x Kostal Plenticore 4,2
        1x Kostal Plenticore 10
        BYD 10kW
        2x Daheimladen Wallbox
        1x Hyundai Kona-e
        AIT Sole/Wasser WP SWC 80 H mit Solarthermie und dank diesem Forum PV-Unterstützung

        1 Antwort Letzte Antwort
        0
        • dkleber89D dkleber89

          Hallo @Mario275,

          ich habe gerade heute den Pullrequest für das Stable Repository gemacht. Dies muss noch vom ioBroker Team genemigt werden dann wird das Update im ioBroker aufscheinen.

          Sollte in den nächsten Tagen sein.

          Gruß,
          dkleber89

          M Offline
          M Offline
          Mario275
          schrieb am zuletzt editiert von
          #93

          Hallo @dkleber89,

          Update heute eingespielt und gleich mal einen Schwung String-Variablen angelegt. Super, absolute Klasse wie gut und stabil der Adapter läuft.
          Danke auch für den schnellen Support!!

          Gruß, Mario275

          1 Antwort Letzte Antwort
          0
          • A Offline
            A Offline
            ADS_0x1
            schrieb am zuletzt editiert von
            #94

            Hallo zusammen,

            bin über das SPS-Forum auf euch aufmerksam geworden und bisher: Hut ab! Super Sache habt ihr hier auf die Beine gestellt.
            Habe jetzt den Adapter mit einer TwinCAT 2.11.2303 auf einer VM und bei mir zu Hause auf einer CX9020 mit TwinCAT 2 (2.11.2256) getestet und ich kann (nach einigen Anfangsproblemen) auf die Steuerungen zugreifen.
            Ich kann auch mit Blockly auf die Variablen schreiben, aaaaaaaber:

            Wie kann ich über den node-red Adapter auf die Variablen schreiben? Das kommt leider nicht in der SPS an.
            Das Log sagt, es habe funktioniert:

            beckhoff.0	2020-02-07 20:16:46.754	debug	(750) Write Symbol Value from ioBroker to PLC: .TEST.TEST_10 -> false
            beckhoff.0	2020-02-07 20:16:46.716	debug	(750) Read Symbol Value from PLC to ioBroker: .TEST.TEST_09 -> false
            beckhoff.0	2020-02-07 20:16:46.253	debug	(750) Write Symbol Value from ioBroker to PLC: .TEST.TEST_10 -> true
            beckhoff.0	2020-02-07 20:16:46.216	debug	(750) Read Symbol Value from PLC to ioBroker: .TEST.TEST_09 -> true
            

            Bei Eurer Anleitung habe ich folgenden Hinweis gefunden:


            When a Value is changed in ioBroker (Important: ACK need to be FALSE!!) then the Value will be automatic transferred to PLC. After that the Adapter set ACK to TRUE.

            Damit kann ich leider nichts anfangen... Könnte das eventuell jemand für mich näher ausführen? Danke!

            Hier noch ein paar Screenshots:


            TC2_Toogle.png node-red.png ioBroker_Objekte.png

            Danke für Eure Hilfe!

            1 Antwort Letzte Antwort
            0
            • dkleber89D Offline
              dkleber89D Offline
              dkleber89
              schrieb am zuletzt editiert von
              #95

              Hallo,

              als erstes fällt mir in dem Log auf das du zwar auf die Test_10 Variable schreibst aber nicht mehr zurückliest. Die lesende Variable ist ja Test_9.

              Folgender Ablauf zum schreiben:

              1. Die Variable wird im ioBroker verändert. Der ACK Status bzw. Bestätigt Status darf beim schreiben nicht auf 'true' gesetzt werden.
              2. Der Adapter erkennt das eine Variable verändert wurde und checkt ob ein schreiben zur SPS notwendig ist.
              3. Ist der ACK / Bestätigt Status auf 'false' dann wird das schreiben ausgeführt.
              4. Wird die Variable in die SPS geschrieben verändert Sie sich dort. Dies triggert wiederum das lesen der Variable durch den Adapter
              5. Der Wert wird aus der SPS zurückgelesen in die Variable eingetragen und der ACK / Bestätigt Status auf 'true' gesetzt.
              6. Schreibvorgang inkl. Bestätigung ausgeführt.

              Bitte kontrollier das mal genau was du da machst und was passiert.

              Solltest du nichts finden bitte den Adapter auf Loglevel 'debug' stellen und dann nach einem schreibversuch das Log posten.

              Gruß,
              dkleber89

              1 Antwort Letzte Antwort
              0
              • A Offline
                A Offline
                ADS_0x1
                schrieb am zuletzt editiert von ADS_0x1
                #96

                Hallo dkleber89,

                danke dir für deine schnelle Antwort.
                Ich weiß, dass ich die Variable nicht mehr lese, was habe ich gemacht:

                Die SPS setzt und rücksetzt das Bit Test_09 mit einer Frequenz von 1 Hz.
                Mit ioBroker lese ich das Bit aus und spiegel das auf das andere Bit der SPS. Das nennt man in meiner Welt einen LifeBitHandshake.

                Wie ich im Eingangspost bereits geschrieben habe: Ich weiß nicht Mal, was es mit diesem ACK auf sich hat, Google spuckt bei der Combo 'iobroker twincat node-red ACK' leider nichts aussagekräftiges aus.

                Also ich vermute dann, dass ich ioBroker noch sagen muss, dass er den aktuellen Variablenzustand an die SPS senden muss (über dieses ACK). Daher die Frage: Was muss ich dafür tun?

                Danke & Viele Grüße!

                1 Antwort Letzte Antwort
                0
                • T.SpoonerT Offline
                  T.SpoonerT Offline
                  T.Spooner
                  schrieb am zuletzt editiert von
                  #97

                  hallo,
                  ich versuche mich auch schon ne Weile am AliveBit.
                  Mir ist aufgefallen, dass ne Verzögerung von manchmal über 1 Sekunde drin ist, ob Blocky oder Node-Red scheint egal zu sein.

                  @ADS_0x1 hast Du mal ne Verzögerung vor das Antwortbit gesetzt:

                  13016036-83d7-4745-8721-4c82109eac3c-grafik.png

                  Ich habe es übrigens etwas anders gelöst:
                  Ich setzt nach PLC-Start das PLCAliveBit, mit diesem setze verzögert (1s) in Blocky das Io-BrokerAliveBit und gleichzeitig das PLCAliveBit zurück.
                  Wenn im PLC das Io-BrokerAliveBit kommt, setze ich wiederum verzögert (1s) das PLCAliveBit und das Io-BrokerAliveBit zurück.
                  Und da kommt dann ein Timeout drüber...
                  Das Timeout spricht sogar manchmal an, wenn ich die Zeiten auch 2s setze!!

                  Gruß T.Spooner

                  Haussteuerung mit Beckhoff C6015 (TC3)
                  IoBroker auf SynologyNas (DS220+)
                  2x Kostal Plenticore 4,2
                  1x Kostal Plenticore 10
                  BYD 10kW
                  2x Daheimladen Wallbox
                  1x Hyundai Kona-e
                  AIT Sole/Wasser WP SWC 80 H mit Solarthermie und dank diesem Forum PV-Unterstützung

                  A 1 Antwort Letzte Antwort
                  0
                  • T.SpoonerT T.Spooner

                    hallo,
                    ich versuche mich auch schon ne Weile am AliveBit.
                    Mir ist aufgefallen, dass ne Verzögerung von manchmal über 1 Sekunde drin ist, ob Blocky oder Node-Red scheint egal zu sein.

                    @ADS_0x1 hast Du mal ne Verzögerung vor das Antwortbit gesetzt:

                    13016036-83d7-4745-8721-4c82109eac3c-grafik.png

                    Ich habe es übrigens etwas anders gelöst:
                    Ich setzt nach PLC-Start das PLCAliveBit, mit diesem setze verzögert (1s) in Blocky das Io-BrokerAliveBit und gleichzeitig das PLCAliveBit zurück.
                    Wenn im PLC das Io-BrokerAliveBit kommt, setze ich wiederum verzögert (1s) das PLCAliveBit und das Io-BrokerAliveBit zurück.
                    Und da kommt dann ein Timeout drüber...
                    Das Timeout spricht sogar manchmal an, wenn ich die Zeiten auch 2s setze!!

                    Gruß T.Spooner

                    A Offline
                    A Offline
                    ADS_0x1
                    schrieb am zuletzt editiert von ADS_0x1
                    #98

                    Hi @T-Spooner !

                    Danke für deine Antwort. Ich habe das jetzt mal so umgebaut, wie du es gepostet hast. Und für einen "ALIVE"-Cycle funktioniert das ganze auch:

                    Ich setze das Bit09 in der SPS, node-red spiegelt es (mit einem Delay von 5 s) auf das Bit10 der SPS, es kommt in der SPS an.
                    Die SPS spiegelt sofort wieder das Bit10 invers auf das Bit09. Es kommt also ein "false" in node-red an. Node-red siegelt 1:1 auf das Bit10, das kommt in der SPS als false an. SPS spiegelt und setzt Bit9 wieder. Das Bit9 wird von node-red ausgelesen als TRUE und es wird 5 Sekunden später auf Bit 10 gespiegelt und ebenfalls auf TRUE gesetzt. Das kommt allerdings in der SPS nicht mehr an...

                    Hier mal als Foto-Lovestory:
                    fehler_05_ads.png fehler_04_ads.png fehler_03_ads.png fehler_01_ads.png

                    Edit: ich teste noch mal schnell was, aber ich glaube, ich bin doof und hab n Fehler gemacht...
                    Edit2: nein, selbst wenn ich es in der SPS verzögere und die SIgnale tausche (dachte, ich hätte die falsch herum verknüpft), dann läuft es nicht

                    T.SpoonerT M 2 Antworten Letzte Antwort
                    0
                    • A ADS_0x1

                      Hi @T-Spooner !

                      Danke für deine Antwort. Ich habe das jetzt mal so umgebaut, wie du es gepostet hast. Und für einen "ALIVE"-Cycle funktioniert das ganze auch:

                      Ich setze das Bit09 in der SPS, node-red spiegelt es (mit einem Delay von 5 s) auf das Bit10 der SPS, es kommt in der SPS an.
                      Die SPS spiegelt sofort wieder das Bit10 invers auf das Bit09. Es kommt also ein "false" in node-red an. Node-red siegelt 1:1 auf das Bit10, das kommt in der SPS als false an. SPS spiegelt und setzt Bit9 wieder. Das Bit9 wird von node-red ausgelesen als TRUE und es wird 5 Sekunden später auf Bit 10 gespiegelt und ebenfalls auf TRUE gesetzt. Das kommt allerdings in der SPS nicht mehr an...

                      Hier mal als Foto-Lovestory:
                      fehler_05_ads.png fehler_04_ads.png fehler_03_ads.png fehler_01_ads.png

                      Edit: ich teste noch mal schnell was, aber ich glaube, ich bin doof und hab n Fehler gemacht...
                      Edit2: nein, selbst wenn ich es in der SPS verzögere und die SIgnale tausche (dachte, ich hätte die falsch herum verknüpft), dann läuft es nicht

                      T.SpoonerT Offline
                      T.SpoonerT Offline
                      T.Spooner
                      schrieb am zuletzt editiert von
                      #99

                      @ADS_0x1
                      Wie gesagt, bei mir funktioniert es auch nicht richtig.
                      Manchmal läuft es einen Tag, dann mal wieder keine 2 Zyklen.
                      Den Fehler suche ich noch.
                      Eine Besonderheit bei mir ist die hohe Anzahl der Beckhoff Datenpunkte (fast 10000) und ein Raspberry Pi 4 mit "nur" 2Gb RAM, der aber nur mit 40% ausgelastet ist.
                      Eine versuchsweise Verringerung der Datenpunkte auf 6 hat schon Mal nichts gebracht. Komisch hier ist allerdings, das in node-red noch die alten Datenpunkte (10000) angezeigt werden und in Blocky nur die neuen (6)🤔.
                      Ich bleibe da mal dran.
                      Darf ich fragen, was Du für ne Hardware nutzt?

                      Haussteuerung mit Beckhoff C6015 (TC3)
                      IoBroker auf SynologyNas (DS220+)
                      2x Kostal Plenticore 4,2
                      1x Kostal Plenticore 10
                      BYD 10kW
                      2x Daheimladen Wallbox
                      1x Hyundai Kona-e
                      AIT Sole/Wasser WP SWC 80 H mit Solarthermie und dank diesem Forum PV-Unterstützung

                      A 1 Antwort Letzte Antwort
                      0
                      • A ADS_0x1

                        Hi @T-Spooner !

                        Danke für deine Antwort. Ich habe das jetzt mal so umgebaut, wie du es gepostet hast. Und für einen "ALIVE"-Cycle funktioniert das ganze auch:

                        Ich setze das Bit09 in der SPS, node-red spiegelt es (mit einem Delay von 5 s) auf das Bit10 der SPS, es kommt in der SPS an.
                        Die SPS spiegelt sofort wieder das Bit10 invers auf das Bit09. Es kommt also ein "false" in node-red an. Node-red siegelt 1:1 auf das Bit10, das kommt in der SPS als false an. SPS spiegelt und setzt Bit9 wieder. Das Bit9 wird von node-red ausgelesen als TRUE und es wird 5 Sekunden später auf Bit 10 gespiegelt und ebenfalls auf TRUE gesetzt. Das kommt allerdings in der SPS nicht mehr an...

                        Hier mal als Foto-Lovestory:
                        fehler_05_ads.png fehler_04_ads.png fehler_03_ads.png fehler_01_ads.png

                        Edit: ich teste noch mal schnell was, aber ich glaube, ich bin doof und hab n Fehler gemacht...
                        Edit2: nein, selbst wenn ich es in der SPS verzögere und die SIgnale tausche (dachte, ich hätte die falsch herum verknüpft), dann läuft es nicht

                        M Offline
                        M Offline
                        Mario275
                        schrieb am zuletzt editiert von
                        #100

                        Hallo @ADS_0x1,

                        ich nutze hier einfach ein kleines JavaScript. Von meiner PLC kommt eine 1 Sekunden Takt Livebit Variable, das ich lese und zugleich schreibe ich das wieder in eine zweite Variable. Somit bekomme ich mit wenn der Controller nicht mehr läuft.

                        const idSrc = 'beckhoff.0.plc.GVL_ioBroker.bOut_Livebit'/bOut Livebit ioBroker [BOOL]/;
                        const idDst = 'beckhoff.0.plc.GVL_ioBroker.bIn_Livebit'/bIn Livebit ioBroker [BOOL]/;

                        // Skriptstart
                        setState(idDst, getState(idSrc).val);

                        // Aktualisierung bei Wertänderung
                        on(idSrc, function(dp) {
                        setState(idDst, dp.state.val);
                        });

                        Gruß Mario275

                        A 1 Antwort Letzte Antwort
                        0
                        • T.SpoonerT T.Spooner

                          @ADS_0x1
                          Wie gesagt, bei mir funktioniert es auch nicht richtig.
                          Manchmal läuft es einen Tag, dann mal wieder keine 2 Zyklen.
                          Den Fehler suche ich noch.
                          Eine Besonderheit bei mir ist die hohe Anzahl der Beckhoff Datenpunkte (fast 10000) und ein Raspberry Pi 4 mit "nur" 2Gb RAM, der aber nur mit 40% ausgelastet ist.
                          Eine versuchsweise Verringerung der Datenpunkte auf 6 hat schon Mal nichts gebracht. Komisch hier ist allerdings, das in node-red noch die alten Datenpunkte (10000) angezeigt werden und in Blocky nur die neuen (6)🤔.
                          Ich bleibe da mal dran.
                          Darf ich fragen, was Du für ne Hardware nutzt?

                          A Offline
                          A Offline
                          ADS_0x1
                          schrieb am zuletzt editiert von
                          #101

                          @T-Spooner said in [Adapter] Beckhoff ADS:

                          Darf ich fragen, was Du für ne Hardware nutzt?

                          Das mit deinen 10.000 Datenpunkten ist natürlich schon krass viel.
                          Ich habe jetzt einfach mal ein Test-Strukt aufgebaut, das enthält 8 DINTs und 8 BOOLs. Da dachte ich, sollte nichts überfordert mit sein.

                          Meine Hardware ist ein Alpine-Linux (virtualisiert) mit Docker; als Container installiert sind portainer und iobroker. Hardware sind 2 GByte RAM und 2 CPU Cores ohne Limitierung. Das kann ich bei Bedarf bis auf 8 Cores un 12 GByte RAM hochschrauben, wenn es sein müsste. Aber meiner Meinung nach sollte es das tun. Da in ioBroker nur der Default-Kram nach Installation, Node-Red und der Beckhoff Adapter laufen, denke ich, dass das von der Hardware her machbar ist.

                          Auf der SPS-Seite steht eine CX9020 mit einer Cycletime von ~ 200 µs

                          @Mario275 @T-Spooner :
                          Ich nehme bei Systemen, die nicht in Echtzeit arbeiten oder kommunizieren immer die SPS als nicht-limitierenden Faktor und lasse die anderen Systeme die Arbeit machen, in der SPS wird in Echtzeit reagiert.
                          Ziel ist:
                          SPS 'lauscht' auf ein Bit, das Bit wird invertiert und auf ein Bit geschrieben, dass von der externen Anwendung überwacht wird.

                          Bit_ioBroker	    Bit_SPS
                          
                          0                   0		(Zustand bei Neustart)
                          0           #       1		(nach initial cycle invertiert die SPS das Bit und setzt es)
                          0		    1		(ioBroker liest das Bit aus der SPS ein)
                          1           *       1           (ioBroker spiegelt das Bit 1:1 und sollte es in der SPS setzen)
                          1           #       0           (SPS sieht die Änderung im ioBroker Bit und es wird automatisch im cycle invertiert)
                          1                   0		(iobroker liest das Bit aus der SPS aus)
                          0           *       0           (iobroker spiegelt das Bit 1:1 und schreibt es auf die SPS)
                          
                          * = Delay in ioBroker / Node_red eingebaut - ohne Erfolg
                          # = TON und TOF in SPS integriert um Bit als Delay zu verzögern - ohne Erfolg
                          

                          Danke für das Skript @Mario275 , ich teste das morgen mal aus und werde berichten.

                          Viele Grüße,

                          Andreas

                          1 Antwort Letzte Antwort
                          0
                          • dkleber89D Offline
                            dkleber89D Offline
                            dkleber89
                            schrieb am zuletzt editiert von
                            #102

                            Servus Zusammen,

                            ich würde die Art der Livebits ändern.

                            Wenn das immer nur gespiegelt wird funktioniert das in einer Umgebung die zyklisch abgearbeitet wird, aber in einem eventbasierten System muss nur ein Event (Gründe gibt es dafür viele -> Netzwerk, Neustarts etc.) verloren gehen und alles steht.

                            Ich würde in der SPS einer Variable einen 1s - 1s Blinktakt geben.
                            Diese Variable wird vom ioBroker auf Änderung überwacht inkl. Meldung falls nix mehr ankommt.
                            Zusätzlich spiegelt ioBroker diesen Blinktakt auf eine zweite Variable.
                            Diese zweite Variable wird von der SPS auf Änderung überwacht inkl. Meldung falls nix mehr ankommt.

                            Somit sind beide Seiten überwacht und es ist egal wenn mal ein Event verloren geht.

                            Gruß,
                            dkleber89

                            A 1 Antwort Letzte Antwort
                            0
                            • M Mario275

                              Hallo @ADS_0x1,

                              ich nutze hier einfach ein kleines JavaScript. Von meiner PLC kommt eine 1 Sekunden Takt Livebit Variable, das ich lese und zugleich schreibe ich das wieder in eine zweite Variable. Somit bekomme ich mit wenn der Controller nicht mehr läuft.

                              const idSrc = 'beckhoff.0.plc.GVL_ioBroker.bOut_Livebit'/bOut Livebit ioBroker [BOOL]/;
                              const idDst = 'beckhoff.0.plc.GVL_ioBroker.bIn_Livebit'/bIn Livebit ioBroker [BOOL]/;

                              // Skriptstart
                              setState(idDst, getState(idSrc).val);

                              // Aktualisierung bei Wertänderung
                              on(idSrc, function(dp) {
                              setState(idDst, dp.state.val);
                              });

                              Gruß Mario275

                              A Offline
                              A Offline
                              ADS_0x1
                              schrieb am zuletzt editiert von
                              #103

                              @Mario275 said in [Adapter] Beckhoff ADS:

                              Hallo @ADS_0x1,

                              ich nutze hier einfach ein kleines JavaScript. Von meiner PLC kommt eine 1 Sekunden Takt Livebit Variable, das ich lese und zugleich schreibe ich das wieder in eine zweite Variable. Somit bekomme ich mit wenn der Controller nicht mehr läuft.

                              const idSrc = 'beckhoff.0.plc.GVL_ioBroker.bOut_Livebit'/bOut Livebit ioBroker [BOOL]/;
                              const idDst = 'beckhoff.0.plc.GVL_ioBroker.bIn_Livebit'/bIn Livebit ioBroker [BOOL]/;

                              // Skriptstart
                              setState(idDst, getState(idSrc).val);

                              // Aktualisierung bei Wertänderung
                              on(idSrc, function(dp) {
                              setState(idDst, dp.state.val);
                              });

                              Gruß Mario275

                              Läuft mit deinem Skript!
                              live_bit.mp4 (mit 200 ms delay)
                              live_bit_0_delay.mp4 (mit 0 ms delay)
                              life_bit_sps.png

                              Selbst ohne Verzögerung macht das Teil genau das, was es soll... jetzt müsste man mal testen, wie schnell das Ganze bei x Variablen ist.

                              Danke dafür in jedem Falle, ich bau darauf mal auf!

                              1 Antwort Letzte Antwort
                              0
                              • dkleber89D dkleber89

                                Servus Zusammen,

                                ich würde die Art der Livebits ändern.

                                Wenn das immer nur gespiegelt wird funktioniert das in einer Umgebung die zyklisch abgearbeitet wird, aber in einem eventbasierten System muss nur ein Event (Gründe gibt es dafür viele -> Netzwerk, Neustarts etc.) verloren gehen und alles steht.

                                Ich würde in der SPS einer Variable einen 1s - 1s Blinktakt geben.
                                Diese Variable wird vom ioBroker auf Änderung überwacht inkl. Meldung falls nix mehr ankommt.
                                Zusätzlich spiegelt ioBroker diesen Blinktakt auf eine zweite Variable.
                                Diese zweite Variable wird von der SPS auf Änderung überwacht inkl. Meldung falls nix mehr ankommt.

                                Somit sind beide Seiten überwacht und es ist egal wenn mal ein Event verloren geht.

                                Gruß,
                                dkleber89

                                A Offline
                                A Offline
                                ADS_0x1
                                schrieb am zuletzt editiert von ADS_0x1
                                #104

                                @dkleber89 said in [Adapter] Beckhoff ADS:

                                Servus Zusammen,

                                ich würde die Art der Livebits ändern.

                                Wenn das immer nur gespiegelt wird funktioniert das in einer Umgebung die zyklisch abgearbeitet wird, aber in einem eventbasierten System muss nur ein Event (Gründe gibt es dafür viele -> Netzwerk, Neustarts etc.) verloren gehen und alles steht.

                                Ich würde in der SPS einer Variable einen 1s - 1s Blinktakt geben.
                                Diese Variable wird vom ioBroker auf Änderung überwacht inkl. Meldung falls nix mehr ankommt.
                                Zusätzlich spiegelt ioBroker diesen Blinktakt auf eine zweite Variable.
                                Diese zweite Variable wird von der SPS auf Änderung überwacht inkl. Meldung falls nix mehr ankommt.

                                Somit sind beide Seiten überwacht und es ist egal wenn mal ein Event verloren geht.

                                Gruß,
                                dkleber89

                                Hi @dkleber89 ,

                                danke für die Hinweise, so ähnlich mache ich das - nur, dass ich das Bit in der SPS nicht immer takte, sondern nur im Fehlerfalle - so ne Art "Hey, lebst du noch"-Anstupser.

                                Viele Grüße,

                                Andreas

                                Edit: Ich hab dann mal gemerkt, was passiert, wenn man event-basierte Systeme mit einem 0 Delay Life-Bit-Toggle belastet.... CPU Auslastung bei schubsen eines Bits ist nahezu 100%, Netzwerkauslastung lt. portainer ca. 40 MB lesen und schreiben... gut, ich weiß dann, was du mir sagen wolltest @dkleber89 😄

                                1 Antwort Letzte Antwort
                                0
                                • Francis HartmannF Offline
                                  Francis HartmannF Offline
                                  Francis Hartmann
                                  schrieb am zuletzt editiert von
                                  #105

                                  Hallo

                                  Toll...

                                  Gibt es eine schritt für schritt Anleitung oder evtl.Videos bei der erklärt wird wie eine komplette Broker Konfiguration auf TC2 oder TC3 und Broker Umgebung aufgesetzt wird? Würde mir sehr hilfreich sein in diese Thema rein zu kommen.

                                  Vielen Dankd

                                  1 Antwort Letzte Antwort
                                  0
                                  • dkleber89D dkleber89

                                    Hallo @Mario275,

                                    ich habe gerade heute den Pullrequest für das Stable Repository gemacht. Dies muss noch vom ioBroker Team genemigt werden dann wird das Update im ioBroker aufscheinen.

                                    Sollte in den nächsten Tagen sein.

                                    Gruß,
                                    dkleber89

                                    M Offline
                                    M Offline
                                    Mario275
                                    schrieb am zuletzt editiert von
                                    #106

                                    Hallo @dkleber89,

                                    ist es dir möglich in absehbarer Zeit Stringvariablen mit Längen bis zu 255 Zeichen mit einzubinden?

                                    Gruß Mario

                                    1 Antwort Letzte Antwort
                                    0
                                    • dkleber89D Offline
                                      dkleber89D Offline
                                      dkleber89
                                      schrieb am zuletzt editiert von
                                      #107

                                      Hallo @Mario275 ,

                                      ich denke nicht das ich es in nächster Zeit schaffe um mich da reinzuhängen und mir das anzuschauen. Hab grad ziemlich viel um die Ohren sorry.

                                      Würde mich aber jederzeit über eine PR auf Github freuen 😉 .

                                      Gruß,
                                      dkleber89

                                      1 Antwort Letzte Antwort
                                      0
                                      • D Offline
                                        D Offline
                                        damichi85
                                        schrieb am zuletzt editiert von
                                        #108

                                        Hallo zusammen,

                                        @dkleber89
                                        Erst mal vielen Dank für den tollen Adapter - gefällt mir sehr gut, wie du den umgesetzt hast! 🙂

                                        Ich hatte jetzt endlich Zeit zum testen; und zwar mit folgender Konfiguration:

                                        Beckhoff CX8030 mit Twincat 2.11.2304
                                        IOBroker neueste Version unter Ubuntu 18.04 Server auf einem Intel NUC-Celeron
                                        2x Ethernet: Die Onboard-Schnittstelle hat eine Verbindung über Switch zum CX8030.
                                        Die externe USB-Schnittstelle nutze ich für das "unsichere Netz" um auf die VIS zuzugreifen.

                                        TPY-Datei mit einigen REAL- und WORD-Variablen eingelesen - funktioniert einwandfrei, die Datenpunkte erscheinen und werden zyklisch aktualisiert.

                                        Nun wollte ich in meine IOBROKER_STRUCT einige BOOLEAN-Variablen einfügen.
                                        Und schon war Schluss mit der ADS-Verbindung.

                                        Ich erhalte sofort nach dem Einlesen und Abspeichern der TPY-Datei eine Timeout-Meldung im Log. Und das für alle Variablen, die zwischen IOBroker und der Beckhoff SPS ausgetauscht werden. Auch für die REALs- und WORDs.
                                        Lösche ich die BOOLs dann wieder aus der IOBROKER_STRUCT, dann werden die REAL- und WORD-Variablen wieder einwandfrei gesynct.

                                        -> Also BOOLEAN funktioniert bei mir leider nicht.
                                        Ist für mich kein Problem, wollte es hier nur kurz erwähnen, nicht dass jemand ein ähnliches Problem hat.

                                        Zum Thema ADS-Verbindung möchte ich noch kurz ein paar Erinnerungen loswerden:
                                        Ich hatte vor ca. fünf Jahren ein Sütron-Panel (jetzt Phoenix-Contact) mit der Visualisierungssoftware "Movicon 11".
                                        Da war es so, dass bei meiner alten Twincat 2.11 - Version das Programm "Movicon" die Variablen bzw. Symbole aus der SPS auslesen konnte - ohne dass ich im Beckhoff System-Manager was ändern musste ("Symbole erzeugen"...).
                                        Alternativ konnte man wie bei dkleber89's Adapter eine TPY-Datei auswählen.
                                        -> Also ist es scheinbar schon so, dass auch ältere TC2 Symbole erzeugen - nur wird wohl der Zugriff auf die Symbole irgendwie anders sein als z. B. bei TC3.

                                        Mir persönlich ist dein Beckhoff-Adapter für den IOBroker echt sympathisch - hast du super gemacht!

                                        Schöne Grüße
                                        Michi

                                        1 Antwort Letzte Antwort
                                        0
                                        • A Offline
                                          A Offline
                                          ADS_0x1
                                          schrieb am zuletzt editiert von
                                          #109

                                          Hallo dkleber89,

                                          nachdem ich im Februar mit dem Adapter etwas experimentiert hatte, hab ich nun wieder etwas Zeit gefunden mich einzuarbeiten. Ich hatte im Februar ein paar Probleme mit einem Reconnect, wenn die Steuerung ausgefallen war und neugestartet ist, das scheint mit der aktuellen Version bei mir behoben zu sein.

                                          Das soweit als Feedback.

                                          Danke dir für die Arbeit am Adapter.

                                          Viele Grüße,

                                          Andreas

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          727

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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