Beckhoff ADS Adapter

Wie man einen Adapter entwickelt, oder wie man debuggen kann.
Antworten
Benutzeravatar
dkleber89
starter
Beiträge: 15
Registriert: 28.10.2017, 20:17

Beckhoff ADS Adapter

Beitrag von dkleber89 » 09.08.2018, 20:14

Hallo Zusammen,

ich brauche einen Adapter der über das ADS Protokoll mit einer Beckhoff CPU Daten austauschen kann. Da ich bisher keinen gefunden habe und auch nichts gesehen hätte das jemand an sowas arbeitet würde ich mich selbst daran machen.

Ich möchte mich nur vergewissern das ich nur nicht einfach übersehen habe das es da schon was gibt. Also falls jemand Informationen hat das an sowas gearbeitet wird bzw. sogar selbst daran arbeitet wäre ich froh darüber zu hören.

Würde auch meine Hilfe dabei anbieten.

Gruß,
dkleber89

Benutzeravatar
apollon77
guru
Beiträge: 6607
Registriert: 10.04.2015, 12:27

Re: Beckhoff ADS Adapter

Beitrag von apollon77 » 10.08.2018, 09:08

Ich hätte bisher noch nichts gehört.

Bitte lege es in jedem Fall unter https://github.com/ioBroker/AdapterRequests/issues an, dann sag mir deinen Github namen und ich lade dich ein, dann assignen wir es da. Auch für mehr transparenz :-)
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel/Log-Stufe

Benutzeravatar
dkleber89
starter
Beiträge: 15
Registriert: 28.10.2017, 20:17

Re: Beckhoff ADS Adapter

Beitrag von dkleber89 » 10.08.2018, 17:28

Hallo apollon,

danke für die Info. Ich habe mal die Issue erstellt, hoffe es passt so.

Der Github Name ist der gleiche wie hier: dkleber89

Gruß

Benutzeravatar
dkleber89
starter
Beiträge: 15
Registriert: 28.10.2017, 20:17

Re: Beckhoff ADS Adapter

Beitrag von dkleber89 » 11.08.2018, 11:18

Hier ist das GitHub Projekt, ist aber nur mal vorbereitet. Da ich aber zuerst noch eine Test-Hardware brauche und dann erst mal außerhalb der Adapterprogrammierung die Kommunikation zum laufen bringen will, wird es noch etwas dauern bis ich tatsächlich mit dem Adapter anfange.

Sollte es Interessierte geben, sind diese natürlich herzlich eingeladen hier Ihre Anregungen, Wünsche oder sonstigen Input anzubringen oder zu diskutieren :) ... Evtl. kann dann schon das eine oder andere Einfließen.

Zusätzlich sollte ich noch erwähnen das dies mein erster Adapter ist und das ich zwar die eine oder andere kleine Sache schon programmiert habe aber definitiv kein Profi bin ;) Darum wird es dann schon vorkommen das ich manchmal ne dämliche Frage stellen muss. :|

Benutzeravatar
BerndAllgaeu
Beiträge: 1
Registriert: 23.09.2018, 14:21

Re: Beckhoff ADS Adapter

Beitrag von BerndAllgaeu » 23.09.2018, 17:43

Hallo zusammen!

Ich heiße Bernd und bin neu hier.

Ich würde mich gerne an der Entwicklung des Beckhoff ADS-Adapters beteiligen.

Was bringe ich mit:
  • ca. 15 Jahre Erfahrung mit Beckhoff (inkl. Nutzung der ADS allerdings mit C# (.Net-DLL))
  • Hochsprachen Erfahrung C# (Habe zwar schon einiges mit Java gemacht aber als erfahren würde ich mich nicht bezeichnen)
  • Teamplayer
Wo brauche ich Unterstützung:
  • welche IDE?
      • Webstorm? - Community Edition - wie sind da die Chancen?)
      • VisualStudio 2017 Pro? (Hab ich)
    • Wie baue ich das Projekt zusammen, damit man debuggen kann?
    • Wie weit ist der Adapter?
    freue mich schon auf Eure Antwort

    Gruß Bernd

    Benutzeravatar
    dkleber89
    starter
    Beiträge: 15
    Registriert: 28.10.2017, 20:17

    Re: Beckhoff ADS Adapter

    Beitrag von dkleber89 » 24.09.2018, 17:29

    Hallo Bernd,

    freut mich zu hören. Unterstützung ist immer gut :-)

    Zum Adapter:
    Der steht praktisch noch bei 0 -> Ich habe bisher nur mal den Templateadapter ein bisschen angepasst und ein paar Sachen eingerichtet das wars.

    Es gibt Packages im NPM die evtl. einiges Programmierarbeit ersparen würden wenn diese gut funktionieren:
    https://github.com/ChrisHanuta/node-ads-api und evtl. https://github.com/src-one/twincat-ads
    Da ich aber noch keine Hardware besitze und die sich jetzt nochmal 4 Wochen verzögert konnte ich das leider noch nicht Testen.

    Und ich hatte bisher keine Zeit um mich einzulesen was ADS wirklich alles kann. Deshalb bin ich im Bereich Konzept -> Was muss der User alles einstellen können was kann man Automatisieren oder kann ADS Strukturänderungen automatisch übertragen etc.?? Auch nicht wirklich weiter.

    Zum Debuggen gibts da ne Anleitung hoffe es klappt dir so :-)

    Zur IDE:
    IDE ist aus meiner Sicht egal ... Hauptsache der Programmierer fühlt sich damit wohl
    Ich verwende WebStorm weil ich es einfach am besten finde ... Hab da auch eine normal gekaufte Lizenz
    Die Chancen für die Gratislizenz für Opensourceprojekte stehen soweit garnicht so schlecht ... Es ist nur so das das Projekt mindestens 3 Monate aktiv laufen muss und es kann nur der Hauptverantwortliche (Main Contributor auf Github) anfordern, darf dann soweit mir JetBrains das mitgeteilt hat auch an die Projektmember weitergegeben werden.

    Zu Mir:
    JavaScript, Node.js Erfahrung so ca. 1 Jahr und es ist mein erstes Projekt das ich mache.
    Beckhoff Erfahrung -> Hab einiges kleines gemacht also so BC Steuerungen mit TwinCat2 und jetzt läuft grad ein Projekt für eine Einfamilienhaus mit allem drum und dran auf C6015 und parallel bin ich bei mir selbst mit dem selben System daran eine Automatisierung aufzubauen. Jeweils TwinCat3 wird verwendet. Zudem wird bei beiden Projekten ioBroker eingesetzt.

    Das ist auch der Grund wieso ich diesen Adapter benötige. Ich möchte es wenn möglich Vermeiden das ganze über Modbus laufen zu lassen.

    Von Beruf bin ich Steuerungstechniker bin aber auch sonst in allen möglichen Programmiersprachen ein bisschen unterwegs.

    Soll auch heißen nicht zu große Erwartungen an mich haben ich bin beileibe kein Profi und LearningByDoing ist angesagt ;-)



    Wenn du Zeit hast und diese in dieses Projekt investieren möchtest wäre ich natürlich sehr froh. Fundierte ADS- und Beckhoff-Kenntnisse würden schon mal sehr helfen.
    Aus meiner Sicht wären am Anfang erst mal zwei Dinge wichtig ... Austesten was die Packages können und ob Sie brauchbar sind und dann schauen wie das ganze im Adapter ausschauen könnte -> Was für Einstellungen muss der User tätigen und was kann über ADS automatisiert werden ... Wie sollen die Daten im ioBroker bereitgestellt werden usw.

    Da ich das so in der Form noch nie gemacht habe bin ich für jegliche Vorschläge auch zur Organisation offen.

    Gruß, dkleber89

    sizzla82
    Beiträge: 3
    Registriert: 08.03.2018, 20:59

    Re: Beckhoff ADS Adapter

    Beitrag von sizzla82 » 25.09.2018, 09:29

    Hallo ihr,

    ich lese seit gestern auch sehr interessiert mit, da ich eine Haussteuerung mit Beckhoff SPS auf TwinCat 2 habe. Diese habe ich bereits programmiert bekommen. Meine Programmierkenntnisse sind noch relativ schwach und ich mache erst eine Ausbildung zum Java Programmierer und habe auch nur wenig Wissen über ADS.

    Ich habe allerdings gestern zumindest eine kleine Integration über Node-Red hinbekommen:
    https://www.npmjs.com/package/node-red-contrib-ads
    Damit konnte ich erstmal ein paar BOOL-Variablen und somit Licht an/aus über ioBroker mit Alexa und Siri schalten.

    Wahrscheinlich werde ich bis Weihnachten auch sehr wenig Zeit haben, aber bin auch sehr an dem Projekt interessiert und kann wenn es zeitlich geht auch gerne mit testen.

    Viele Grüße

    Benutzeravatar
    dkleber89
    starter
    Beiträge: 15
    Registriert: 28.10.2017, 20:17

    Re: Beckhoff ADS Adapter

    Beitrag von dkleber89 » 20.10.2018, 15:07

    Hallo Zusammen,

    mal ein kleines Update zum Konzept und zum Entwicklungsstand:

    Konzept:
    Es soll so sein das nur die Verbindungsparameter eingegeben werden müssen und die Variablentabelle (Globale Variablentabelle) die auf der SPS für die Kommunikation zum ioBroker gedacht ist. Es wäre zwar grundsätzlich möglich auf jegliche Variable im Programm zuzugreifen, jedoch ist das an anderen Punkten problematisch zudem ist eine definierte Schnittstelle sicherlich nicht verkehrt.
    Pro Adapter kann auf EINE Steuerung zugegriffen werden und in der ersten Ausbaustufe auf EINE Variablentabelle.
    Die Variablen sollen dann selbstständig mit dem ioBroker synchronisiert und in der gleichen Struktur States im Adapter angelegt werden. Auf diese States kann dann lesend sowie schreibend zugegriffen werden. Den Datenaustausch soll ohne Polling ausschließlich über Eventhandles in beide Richtungen vom Adapter im Hintergrund erledigt werden.

    In der ersten Ausbaustufe werden die folgenden Datentypen unterstützt werden:
    ['BOOL', 'BYTE', 'WORD', 'DWORD', 'SINT', 'USINT', 'INT', 'UINT', 'DINT', 'UDINT', 'REAL']

    Zudem können diese Datentypen nach belieben in DUT´s auch mehrfach verschachtelt werden. -> "Ein DUT (Data Unit Typ) beschreibt einen anwenderspezifischen Datentyp". Aber Arrays werden noch nicht möglich sein.

    Derzeitiger Entwicklungsstand:
    Kommunikation zur Steuerung aufbauen sowie wiederaufbauen nach Unterbrüchen und das Fehlerhandling hat schon einen guten Stand (Unitests fehlen, und TwinCat2 hab ich noch nicht getestet).
    Sync der Variablen, Resync nach Verbindungsaufbau sollte so gut wie fertig sein. Fehlerhandling wenn nicht unterstützte Datentypen verwendet werden ist auch gemacht (Auch hier fehlen die Unitests).
    Objekte (States) erstellen und die Handles auf der Steuerung sowie im ioBroker erstellen ist derzeit in Arbeit.

    Die Zeit fehlt zur Zeit leider ein bisschen aber da und dort gehen sich ein paar Stunden aus ... Also wird schon langsam aber dafür sicher ;-)

    NilsK
    Beiträge: 5
    Registriert: 12.10.2018, 19:00

    Re: Beckhoff ADS Adapter

    Beitrag von NilsK » 21.10.2018, 12:33

    Hallo dkleber89,

    dein Konzept hört sich gut an.
    Wie wäre es mit einem Präfix den die Variablen in TwinCAT haben müssen z.B.: "iob_xxxxxx"
    So kannst du bei durchsuchen der Symbole danach filtern.

    Super wäre auch wenn du STRING noch bei den Datentypen aufnehmen könntest?
    Arrays und Strukturen wären auch cool aber man sollte es ja für den Anfang nicht übertreiben.

    Ich kann gerne beim Testen behilflich sein, habe sowohl TC2 und TC3 Systeme dafür zur Verfügung.
    Ich bin bisher allerdings nur auf TC Seite fit nicht auf der Skript Seite im ioBrocker.

    Gruß Nils

    Benutzeravatar
    dkleber89
    starter
    Beiträge: 15
    Registriert: 28.10.2017, 20:17

    Re: Beckhoff ADS Adapter

    Beitrag von dkleber89 » 21.10.2018, 17:27

    Hallo Nils,

    ja das ist eine gute Idee. Leider ist es so das es da ein paar Stolpersteine gibt wo ich derzeit noch keine richtig gute Lösung dafür habe.
    1. Es müsste ein Präfix sein das absolut ist und sonst definitiv nicht vorkommt. Sonst gibt´s Probleme
    2. Ich erstelle derzeit die States in der gleichen Struktur wie sie auf der Steuerung vorkommen. Das finde ich sehr angenehm und das könnte wenn ich mit Präfix arbeite nicht machen. Da da ja die Variable aus jeder Ecke des Programmes kommen kann und so eine unübersichtliche Struktur entstehen würde.
    Bin für Vorschläge offen.

    So wie ich das ganze Aufbaue, kann das später immer noch gut implementiert werden -> Hoffe ich ;)

    Das mit den Strings überlege ich mir noch. Wenn nicht ist das vermutlich die erste Sache die ich Weiterentwickle. Arrays kommen in der ersten Version sicher nicht.

    Was meinst du mit Strukturen? Denn DUT´s gehen in jeglicher Verschachtelung -> Meinst du was anderes?

    Danke das wäre auf jeden Fall super. Ich kann noch nicht sagen bis wann ich einen Test-fähigen Adapter habe. Aber ich würde mich auf jeden Fall hier melden.

    Gruß,
    dkleber89

    NilsK
    Beiträge: 5
    Registriert: 12.10.2018, 19:00

    Re: Beckhoff ADS Adapter

    Beitrag von NilsK » 21.10.2018, 20:35

    Hallo dkleber89,

    ist wahrscheinlich auch ok eine eigenen Variablen Liste in TC für die Kommunikation zum Broker anzulegen.

    DUT`s sind vermutlich das gleiche.....

    Auf der SPS Seite sieht es z.B. so aus:
    tc.PNG
    Kein Problem ich kann warten ;-)

    Gruß Nils

    Benutzeravatar
    dkleber89
    starter
    Beiträge: 15
    Registriert: 28.10.2017, 20:17

    Re: Beckhoff ADS Adapter

    Beitrag von dkleber89 » 22.10.2018, 07:39

    Hallo Nils,

    ja das ist im Grunde das gleiche. Ist soweit ich das sehen kann nur anderst angeleg -> Sollte also schon problemlos funktionieren.

    Gruß

    Antworten