Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [Adapter] Beckhoff ADS

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Adapter] Beckhoff ADS

    This topic has been deleted. Only users with topic management privileges can see it.
    • dkleber89
      dkleber89 last edited by

      Hallo Zusammen,

      bei dem Beckhoff Adapter hat ein User derzeit gerade das Problem, das wenn auf einem TC2 System die Configuration über den Systemmanager geladen wird, keine Variablen mehr von der Steuerung in den ioBroker gesynct werden.

      Meine Vermutung ist dadurch das weder der Socket geschlossen wird noch die PLC state von Run auf Stop geht, der Adapter gar nix von dem Neustart mitbekommt. Die ganzen Subscriber sind aber in der Steuerung abgelöscht.

      Da ich kein TC2 System habe, kann ich es aber nicht nachstellen.

      Hat jemand von euch auch so ein Problem oder kann es nachstellen?

      Github Issue: https://github.com/dkleber89/ioBroker.beckhoff/issues/12

      Gruß

      Andrey2509 created this issue in dkleber89/ioBroker.beckhoff

      closed The driver does not detect a hard reset (power loss) plc. #12

      1 Reply Last reply Reply Quote 0
      • D
        damichi85 last edited by

        Hallo dkleber89,

        seid ihr in dem Fall "Twincat 2.11" schon weiter gekommen?
        Ich habe ein solches System und die gleiche Fehlermeldung.
        Soll ich was testen auf dem System, das dich weiter bringt?

        Viele Grüße
        Michi

        1 Reply Last reply Reply Quote 0
        • dkleber89
          dkleber89 last edited by dkleber89

          Hallo Michi,

          sorry war schon ewig nicht mehr aktiv hier ... In den Sommermonaten bin ich eher weniger am PC.

          Nein wir sind nicht weiter ... mit den TwinCat 2 Systemen gibt es generell immer wieder Probleme. Das hier im Thread bekannte Problem (Variablensync bei älteren TC2 Systemen), zu keines Mengengerüst (nach 64 Variablen ist fertig) und aktuell versuche ich gerade die BC Steuerungen über ADS anzusprechen scheint aber nicht zu funktionieren. Keine Ahnung wo das Problem ist.

          Leider ist der Support in solchen Sachen von Beckhoff, sagen wir mal überschaubar 😉

          Ich denke testen bringt nur was, wenn sich jemand hinsetzt und eine Testumgebung aufsetzt, damit direkt ein debugging des Adapters durchgeführt werden kann. Leider habe ich selbst kein so ein System um das zu machen.

          Gruß,
          dkleber89

          1 Reply Last reply Reply Quote 0
          • dkleber89
            dkleber89 last edited by

            Mir ist da grad noch was eingefallen.

            Ich bin ja grade an der Einbindung der BC Runtimes. Dort funktioniert das ganze zwar nicht aber es könnte eine Lösung für die älteren TC2 Runtimes sein die keine Datentypen bereitstellen.

            Wenn du magst kannst du gerne den Adapter aus dem Entwicklungsbranch testen ob der bei dir funktionieren würde.

            ACHTUNG: Auf eigenes Risiko ist definitiv ein Alphatest.

            Installation über "Installieren aus eigener URL" -> "Beliebig" -> "git://github.com/dkleber89/ioBroker.beckhoff.git#7-addOldTc2AndBcSupport"

            Selection_001.png

            Dort auf TC2 < 2.11.... gehen und die *.tpy deines PLC Projektes hochladen. Die restlichen Einstellungen unterscheiden sich nicht vom normalen Verbindungsaufbau. Und auch hier muss die AMS Route freigegeben werden wie sonst auch.

            Gruß,
            dkleber89

            dkleber89 M 2 Replies Last reply Reply Quote 0
            • dkleber89
              dkleber89 last edited by

              Hallo,

              ich habe gestern leider einen ziemlichen Bug in die Version 1.0.5 eingebaut und published. Ich bin bereits an der Version 1.0.6 die ich in einer halben Stunde ausrolle. Leider geht es aber bis morgen bis die neue Version im ioBroker sichtbar ist.

              BITTE die Version 1.0.5 NICHT installieren!!! Da sind Infinity Loops drinnen.

              Bitte um Entschuldigung hab da schnell schnell was geändert ohne zu Testen weil ich gedacht habe das hat eh keine Auswirkungen 😬

              1 Reply Last reply Reply Quote 0
              • S
                stm last edited by

                Hallo,

                ich habe den ioBroker bei einer Suche nach Hausautomationssystemen gefunden, die eine Beckhoff Steuerung einbinden können - eigentlich gibt es nur noch den Home Assistant, der ADS out of the box spricht.

                Bevor ich anfange, mit dem ioBroker zu arbeiten eine Frage/Bitte:

                Soweit ich gelesen habe, funktioniert die Integration nicht allgemein, also Zugriff auf beliebige Variablen in der Steuerung sondern nur zu den bestimmten, die ich einer speziellen Struktur angelegt habe - was bei mir bedeuten würde, im SPS Programm Variablen ein zweites mal in der für ioBroker notwendigen Struktur anzulegen und dann in die bestehenden Variablen umzukopieren- irgendwie unelegant. (Umstellung ist keine Option, da das System auf der Basis von Arrays für Sensoren, Aktuatoren, Zustände etc aufgebaut ist.)

                Besteht die Möglichkeit einer Erweiterung zum Zugriff auf beliebige Variablen der Steuerung?
                Ist das grandios aufwendig ? (Ich kann grad a bisserl Python)
                Oder wurde der Design Ansatz mit einer Struktur gewählt, weil im ADS ReadByName für eine Menge beliebiger Variablen die Performanz unterirdisch wird? und ich damit nicht weiter käme, selbst wenn sich jemand meiner erbarmt, und das reinklopft?

                Ich sag schon mal Danke!

                1 Reply Last reply Reply Quote 0
                • dkleber89
                  dkleber89 last edited by

                  Hallo,

                  die Struktur wurde deshalb definiert da der Adapter einen automatischen Abgleich gegen diese Struktur macht und die Variablen im ioBroker anlegt. Zudem ist es immer Ratsam eine saubere Schnittstelle in den Systemen zu haben, weil sonst jede Änderung zu Problemen auf der Gegenseite führen kann. Zumal es auch sinnlos wäre jede Variable die nur was zwischenspeichert abzugleichen.

                  Zudem stimmt auch das eine Subscription auf alle Variablen zu Performenzproblemen führt.

                  Für dein Problem gibt es aus meiner Sicht zwei Möglichkeiten:

                  1. In der Steuerung eine Struktur anlegen und über einen Baustein eine Bidirektionale Verbindung erstellen bzw. das ganze dann über Read sowie Write Variablen lösen. Ja ist ein Aufwand aber dann kannst du den Adapter verwenden der den ganzen Rest managed. -> Ich würde an deiner Stelle sogar hingehen die Funktionalität des Adapters testen und schauen ob er deinen Bedürfnissen entspricht. Wenn ja dann das SPS Programm Schritt für Schritt umbauen in dem du die Variablen austauscht.
                  2. Du verwendest den Skripting Adapter des ioBroker und bindest die selbe Kommbibliothek ein, wie der Beckhoff Adapter. Dann kannst du jeder Variable die du möchtest Schreiben / Lesen oder auch Subscriptions darauf machen. Das ist dann halt alles individuell für jeder deiner Variablen zu machen.

                  Gruß,
                  dkleber89

                  1 Reply Last reply Reply Quote 0
                  • M
                    mmeine @dkleber89 last edited by mmeine

                    @dkleber89
                    Hallo,

                    nach der Sommerpause wieder zurück im Forum um meine Steuerung weiter aufzupeppen.

                    Ich hab das script bei mir eingestellt und folgende Log erhalten:

                    15:49:12.206	info	javascript.0 Start javascript script.js.Test.Test-Twincat-ADS
                    15:49:12.207	info	javascript.0 script.js.Test.Test-Twincat-ADS: registered 0 subscriptions and 0 schedules
                    15:49:12.714	info	javascript.0 script.js.Test.Test-Twincat-ADS: Error Code: timeout
                    15:49:18.148	info	javascript.0 Stop script script.js.Test.Test-Twincat-ADS
                    

                    im übrigen habe ich die Zeile

                    var ads = require('node-ads')
                    

                    in

                    var ads = require('node-ads-api');
                    

                    ändern müssen. Ich hoffe da gibt es kein Versionsproblem.
                    Gruß

                    1 Reply Last reply Reply Quote 0
                    • dkleber89
                      dkleber89 @dkleber89 last edited by

                      Hallo @mmeine,

                      schade das es da keine zusätzlichen Informationen gibt. Aber ich muss sagen, wenn ich alles was ich jetzt für dieses Problem zusammengesammelt habe anschaue, dann scheint es so zu sein das bei etwas älteren Versionen die Datentypen nicht aus der Steuerung abgerufen werden können.

                      Ich weiß nicht ob du die Möglichkeit hast was zu testen:

                      @dkleber89 sagte in [Neuer Adapter] Beckhoff ADS:

                      Mir ist da grad noch was eingefallen.

                      Ich bin ja grade an der Einbindung der BC Runtimes. Dort funktioniert das ganze zwar nicht aber es könnte eine Lösung für die älteren TC2 Runtimes sein die keine Datentypen bereitstellen.

                      Wenn du magst kannst du gerne den Adapter aus dem Entwicklungsbranch testen ob der bei dir funktionieren würde.

                      ACHTUNG: Auf eigenes Risiko ist definitiv ein Alphatest.

                      Installation über "Installieren aus eigener URL" -> "Beliebig" -> "git://github.com/dkleber89/ioBroker.beckhoff.git#7-addOldTc2AndBcSupport"

                      Selection_001.png

                      Dort auf TC2 < 2.11.... gehen und die *.tpy deines PLC Projektes hochladen. Die restlichen Einstellungen unterscheiden sich nicht vom normalen Verbindungsaufbau. Und auch hier muss die AMS Route freigegeben werden wie sonst auch.

                      Gruß,
                      dkleber89

                      Das wäre theoretisch die Variante als Lösung für dein Problem leider aber ungetestet. Ich hoffe ich komme in nächster Zeit mal dazu mir ein TC2 System auf einem Testsystem zu installieren.

                      Gruß,
                      dkleber89

                      1 Reply Last reply Reply Quote 0
                      • M
                        mmeine @dkleber89 last edited by mmeine

                        @dkleber89
                        Hallo,

                        hab die URL installiert, danach war dein Adapter von V1.06 auf V1.05 zurückgestuft.
                        Komme dann aber nicht weiter. Wo stelle ich TC2 < 2.11.... ein und lade miene *.tpy hoch?
                        Hab die alte Instanz gelöscht und ne neue anglegt. Konfigseite sieht genauso aus wie vorher.🤷‍♂️

                        Gruß

                        1 Reply Last reply Reply Quote 0
                        • dkleber89
                          dkleber89 last edited by

                          @mmeine

                          Hallo mmeine,

                          konnte es bei mir auch nachstellen. Aus irgendeinem Grund aktualisiert da der ioBroker die Konfig Seite nicht sauber. Wenn du den Adapter komplett löscht (Nicht nur die Instanz entfernen sondern auch in der Adapterübersicht ganz rechts in der Spalte auf den Papierkorb klicken) dann kannst du den Adapter über diesen Pfad installieren und das Menü wird angezeigt wie es soll.

                          Warum sich das so Verhält kann ich auch nicht sagen.

                          Gruß,
                          dkleber89

                          M 1 Reply Last reply Reply Quote 0
                          • Christian Peters
                            Christian Peters last edited by

                            Hallo,

                            Ich bin letztens auf den Beckhoff Adapter gestoßen und bin echt begeistert.
                            Wird an der Implementierung von Strings und Arrays als unterstützte Datentypen noch gearbeitet?

                            Gruß Christian

                            1 Reply Last reply Reply Quote 0
                            • dkleber89
                              dkleber89 last edited by dkleber89

                              Hallo Christian,

                              das freut mich natürlich 😄

                              Leider ist es so das ich derzeit überhaupt nicht am Adpater arbeiten kann weil ich schlicht keine Zeit dafür habe. Ich wollte mit den Strings (zumindest mit einer fixen länge schon länger fertig sein -> Die Wahrheit ist aber das ich nicht mal damit angefangen habe.

                              Super wäre natürlich wenn sich jemand finden würde der das Implementiert. Ich werde mich bemühen um das evtl. mal an einem Wochenende reinzustapeln aber versprechen kann ich derzeit nix.

                              Gruß,
                              dkleber89

                              Christian Peters 1 Reply Last reply Reply Quote 0
                              • M
                                mmeine @dkleber89 last edited by mmeine

                                @dkleber89
                                Hallo,

                                danke, hab die V1.07 am laufen und die nötigen Einstellungen vorgenommen. Hab die Instanz mehrmals mit kleinsten Änderungen auf der Konfigseite gestartet. Immer kam der Fehler ADS Clien: Error: timeout.
                                Zwischendurch schien es plötzlich einmal funktioniert zu haben, anschließend nicht wieder. Ich bin mir bei den Einstellungen also nicht mehr zu 100% sicher welche da gerade aktuell war.
                                Entweder habe ich "TwinCat2" oder "TwinCat2 <2.11...." eingestellt.
                                Oder ich hatte bei der Zielstruktur ".iobroker" oder "iobroker" eingestellt (Was müsste denn hier drin stehen?)

                                Ergebnis ist folgender Log:

                                2019-10-25 10:55:18.292 - info: host.raspberrypi instance system.adapter.beckhoff.0 started with pid 17823
                                2019-10-25 10:55:20.034 - debug: beckhoff.0 objectDB connected
                                2019-10-25 10:55:20.410 - debug: beckhoff.0 statesDB connected
                                2019-10-25 10:55:21.074 - info: beckhoff.0 starting. Version 1.0.7 in /opt/iobroker/node_modules/iobroker.beckhoff, node: v8.15.1
                                2019-10-25 10:55:21.120 - debug: beckhoff.0 Start establish Connection to PLC
                                2019-10-25 10:55:21.660 - error: beckhoff.0 ADS Client: Error: timeout
                                2019-10-25 10:55:21.664 - info: beckhoff.0 Try to reconnect in 15 seconds
                                2019-10-25 10:55:36.667 - debug: beckhoff.0 Start establish Connection to PLC
                                2019-10-25 10:55:37.237 - error: beckhoff.0 ADS Client: Error: timeout
                                2019-10-25 10:55:37.242 - info: beckhoff.0 Try to reconnect in 15 seconds
                                2019-10-25 10:55:50.300 - debug: beckhoff.0 system.adapter.admin.0: logging false
                                2019-10-25 10:55:52.243 - debug: beckhoff.0 Start establish Connection to PLC
                                2019-10-25 10:55:52.506 - info: beckhoff.0 Connected to PLC. State of PLC: RUN
                                2019-10-25 10:55:57.397 - debug: beckhoff.0 PLC States received
                                2019-10-25 10:55:57.677 - debug: beckhoff.0 Release all Notification Handles first.
                                2019-10-25 10:55:57.679 - debug: beckhoff.0 All Notification Handles are released.
                                2019-10-25 10:55:57.727 - debug: beckhoff.0 Send Subscription for: .iobroker.TempAussen to PLC
                                2019-10-25 10:55:58.449 - debug: beckhoff.0 Subscription for: .iobroker.TempAussen done.
                                2019-10-25 10:55:58.476 - debug: beckhoff.0 Read Symbol Value from PLC to ioBroker: .iobroker.TempAussen -> 13.2
                                

                                Ich vermute es ist ein Geschwindigkeitsproblem. Kann man irgendwo die Timeout -Einstellung ändern und die Zeit etwas höher schrauben, bevor die Fehlermeldung kommt?

                                Gruß
                                Markus

                                1 Reply Last reply Reply Quote 0
                                • dkleber89
                                  dkleber89 last edited by

                                  @mmeine
                                  Aus meiner Sicht müsste es wie folgt sein:

                                  TwinCat2 < 2.11...
                                  Zielstruktur immer ohne Punkt
                                  Und die .tpy Datei deines Projektes in der Konfigseite hochladen.

                                  Die Timeoutzeit kannst du über "Intervall für Verbindungsaufbau" einstellen. Glaube aber weniger das es an dem liegt.

                                  Gruß,
                                  dkleber89

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    mmeine @dkleber89 last edited by mmeine

                                    @dkleber89

                                    Hallo,

                                    habs jetzt glaube am laufen. Das timeout-Problem gab es nur als ich von der Ferne auf iobrober zugegriffen habe. Jetzt aus dem internen Netz scheint es zu funktioniern. Vielleich hat sich aber über Nacht der Raspberry etwas ausruhen können. 🙂

                                    Also vielen Dank, für deinen schnellen und kreativen Support. Wirst du diese version später in die offiziellen Updates einbinden, oder bleibt es eine Beta-Version?

                                    Super und viele Grüße.

                                    1 Reply Last reply Reply Quote 0
                                    • dkleber89
                                      dkleber89 last edited by

                                      Hallo @mmeine,

                                      okay ja super 🙂

                                      Kein Thema ich sag danke für das mühevolle Testen so über die Ferne. Ich möchte das auf jeden Fall in das offizielle Repo bringen, da es sicher noch mehr Personen gibt die eine etwas ältere TC2 Version am laufen haben.

                                      Ich würde dich aber, damit das sicher alles sauber Funktioniert, um ein paar Sachen bitten:

                                      • Kannst du mal in deinem SPS Projekt eine Variable hinzufügen und eine entfernen und die aktualisierte *.tpy hochladen, um zu schauen ob das auch funktioniert?
                                      • Mir nach einer Zeit so ein bis zwei Wochen eine Rückmeldung geben ob denn alles auch stabil läuft?
                                      • Evtl. als Gegenprobe mal auf das normale TC2 zurückstellen und schauen ob es da jetzt noch immer nicht funktioniert.
                                      • Sonstige Rückmeldung falls es noch was zu verbessern gibt.

                                      Wäre super wenn das geht. Dann würde ich es als Update publishen.

                                      Gruß,
                                      dkleber89

                                      M 1 Reply Last reply Reply Quote 0
                                      • Christian Peters
                                        Christian Peters @dkleber89 last edited by

                                        @dkleber89 Würde mich gerne am Projekt beteiligen. Wo müsste angesetzt werden um Strings zu ermöglichen.
                                        Kann nichts versprechen, will es aber mal probieren.

                                        1 Reply Last reply Reply Quote 0
                                        • dkleber89
                                          dkleber89 last edited by

                                          Hallo @Christian-Peters,

                                          das ist natürlich immer gut 😄

                                          Der Adapter basiert auf dieser Library.
                                          Diese Library hat einen String Datentyp mit einer fixen länge von 80 Zeichen und einer der flexibel ist.

                                          Der 1. Schritt ist über Skripte (entweder eigene Node Runtime oder ioBroker Javascript Adapter) herauszufinden wie sich der Datentyp verhält:

                                          • Fixe Länge:
                                            • Was ist wenn der String in der Steuerung zu lang oder zu kurz ist
                                            • Was passiert wenn der String im ioBroker zu lang oder zu kurz ist
                                          • Variable Länge:
                                            • Sollte gleich auf die flexible Länge gesetzt werden
                                            • Wie kann das aus der Auflistung der Datentypen ausgelesen werden
                                            • Was passiert wenn der String im ioBroker zu lang oder zu kurz ist

                                          Das müssten so im groben die Punkte sein die vor dem Implementieren herausgefunden werden müssen.

                                          Dann kommt der schöne Teil ... Implementieren 😉

                                          Gruß,
                                          dkleber89

                                          Christian Peters 1 Reply Last reply Reply Quote 0
                                          • Del-Didier A-G
                                            Del-Didier A-G last edited by

                                            Hallo,

                                            Entschuldigung für mein Deutsch, aber ich bin Belgier.
                                            Ich habe Ihren ADS-Adapter für Beckhoff entdeckt und finde ihn großartig.
                                            Also habe ich das mit einer cx5020 getestet, aber ich habe ein kleines Stabilitätsproblem.
                                            Die Verbindung zur SPS wird alle 10 Minuten unterbrochen.
                                            Würdest du eine Idee haben warum?

                                            beckhoff.0 2019-11-02 14:33:39.364 info Connected to PLC. State of PLC: RUN
                                            beckhoff.0 2019-11-02 14:33:24.345 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 14:32:36.874 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 14:32:36.873 error ADS Client: timeout
                                            beckhoff.0 2019-11-02 14:22:51.041 info Connected to PLC. State of PLC: RUN
                                            beckhoff.0 2019-11-02 14:22:36.029 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 14:22:36.028 error ADS Client: Error: read ECONNRESET
                                            beckhoff.0 2019-11-02 14:22:32.376 info Connected to PLC. State of PLC: RUN
                                            beckhoff.0 2019-11-02 14:22:08.436 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 14:22:08.435 error ADS Client: timeout
                                            beckhoff.0 2019-11-02 14:12:22.562 info Connected to PLC. State of PLC: RUN
                                            beckhoff.0 2019-11-02 14:12:07.545 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 14:11:20.052 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 14:11:20.051 error ADS Client: timeout
                                            beckhoff.0 2019-11-02 14:01:34.241 info Connected to PLC. State of PLC: RUN
                                            beckhoff.0 2019-11-02 14:01:19.229 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 14:01:19.228 error ADS Client: Error: read ECONNRESET
                                            beckhoff.0 2019-11-02 14:01:15.839 info Connected to PLC. State of PLC: RUN
                                            beckhoff.0 2019-11-02 14:00:51.851 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 14:00:51.851 error ADS Client: timeout
                                            beckhoff.0 2019-11-02 13:50:51.042 info Connected to PLC. State of PLC: RUN
                                            beckhoff.0 2019-11-02 13:50:36.026 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 13:50:36.026 error ADS Client: Error: read ECONNRESET
                                            beckhoff.0 2019-11-02 13:50:08.736 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 13:50:08.736 error ADS Client: timeout
                                            beckhoff.0 2019-11-02 13:40:07.834 info Connected to PLC. State of PLC: RUN
                                            beckhoff.0 2019-11-02 13:39:52.826 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 13:39:52.826 error ADS Client: Error: read ECONNRESET
                                            beckhoff.0 2019-11-02 13:39:24.958 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 13:39:24.957 error ADS Client: timeout
                                            beckhoff.0 2019-11-02 13:29:24.432 info Connected to PLC. State of PLC: RUN
                                            beckhoff.0 2019-11-02 13:29:09.427 info Try to reconnect in 15 seconds
                                            beckhoff.0 2019-11-02 13:29:09.426 error ADS Client: timeout

                                            Viele Grüße

                                            Moustik

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

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

                                            661
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            beckhoff
                                            38
                                            227
                                            37123
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo