mit Ethercat Variablen zwischen zwei Steuerungen austauschen

ktmtreck

Level-2
Beiträge
8
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich bin gerade dabei meine Bachelorarbeit zu schreiben, die Aufgabe ist dabei einen real time capable Historian zu entwickeln.
Hierfür ist der Plan Prozessvariablen über Feldbusse an ein Edge Device zu schicken, welches die Daten bündelt und anschließend in einer zentralen Datenbank speichert.
Da das ganze möglichst herstellerunabhängig erfolgen soll, werden die verschiedenen Feldbusse hier auf Eignung und anschließend die mögliche Umsetzung geprüft.

Ziel: PLC 1 sendet die Variablen/PDO über Ethercat an Edge Device/PLC 2.
Für den Anfang wäre eine Umsetzung in TwinCat präferiert.

Leider habe ich bisher nichts dazu gefunden ob so etwas möglich ist und wie man es parametriert/umsetzt, da sich die bisher gefundenen Beispiele auf I/O Klemmen beziehen, die ihrerseits bereits so parametriert sind, dass die Variablen "nur" noch verknüpft werden müssen.

Kann mir da jemand weiterhelfen?
 
Okay schade, ja das benötige ich.

Auf den Beitrag bin ich auch gestoßen, leider ist man dort nur auf EaP eingegangen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Frage ist ja auch erst mal wie ihr "Echtzeit" definiert, Echtzeit beschreibt nur eine vorgegebene Zeitspanne.

Weiterhin wenn ihr auf das Thema Echtzeit eingeht, dann braucht ihr wohl eine time sensitive database wie Influx oä, oder?
Klingt fast wieder nach einem Job für Mqtt, das ist so das unabhängigste was du verwenden kannst als Sammelstelle für Daten
 
Die Diskussion wollte ich eigentlich nicht auch noch auf machen 😄
Alles ist Echtzeitfähig und nichts ist Echtzeitfähig.

Variablen sollen bestmöglich im Zyklustakt erfasst und versendet werden, was sich bei uns in der Range von 1-20ms abspielen wird.
Das ist auch der Grund warum hier nicht OPC-UA, Mqtt oder sonstige IT-Protokolle stehen sondern wir das über einen Feldbus (EtherCAT, Profinet usw.) lösen wollen.
(Ja, mit Mqtt würde man das vielleicht unter optimalen Bedingungen auch hinkriegen, aber nicht konsistent und deterministisch, ganz zu schweigen von der SPS-Auslastung)
Daher auch die Frage wie man über Ethercat Variablen zwischen zwei SPSen austauschen kann.

Datenbank wird vermutlich TimescaleDB werden, ist laut einigen Benchmarks schneller als InfluxDB und bietet durch die Relationalität (ist das ein Wort??) direkte Anbindungsmöglichkeiten an ebenfalls relationale Datenbanken wie PostgreSQL.
 
Im Zyklustakt sehe ich nur die Option auf der SPS zu Puffern und die Werte im Paket zu loggen.
Das benötigt auf der SPS natürlich wieder dem entsprechend Ressourcen, das mag bei einer Beckhoff nicht das größte Problem darstellen.
Bei anderen Herstellern hat man den zusätzlich benötigten Speicher vielleicht gar nicht zu Verfügung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Variablen sollen bestmöglich im Zyklustakt erfasst und versendet werden, was sich bei uns in der Range von 1-20ms abspielen wird.
Was hältst Du von einfachen Feldbus-Feldbus-Kopplern? Da kannst Du alles zwischen verschiedenen Feldbussen hin und her schaufeln und bist einigermaßen deterministisch in der Echtzeit unterwegs, zumindest was halt für die jeweilige SPS und dem Bus möglich ist. Suche mal nach Anybus Communicator. Alternativ hat Beckhoff auch alle möglichen Bus-Slave-Karten im Angebot, die genau das Gleiche machen.

Von Beckhoff her fallen mir sofort diese Komponenten ein: EL6692/6695 für EtherCAT-EtherCAT, EL6631-0010 für EtherCAT-Profinet, EL6731-0010 für EtherCAT-Profibus, EL6751-0010 für EtherCAT-CAN-Open, EL6752-0010 für EtherCAT-DeviceNET, EL6740-0010 für EtherCAT-Interbus usw.
 
Zuletzt bearbeitet:
Wäre es denn nicht einfacher direkt in die Datenbank zu schreiben und Anfragen an die Datenbank dann auf dem Edge Device auszuführen?

Die Diskussion wollte ich eigentlich nicht auch noch auf machen 😄
Sind nur Ideen, alles easy

Wir verwenden halt viel Mqtt in sämtlichen Funktionen mit diversen Middlewares und Systemen welche direkt auf Broker zugreifen
 
Im Zyklustakt sehe ich nur die Option auf der SPS zu Puffern und die Werte im Paket zu loggen.
Das benötigt auf der SPS natürlich wieder dem entsprechend Ressourcen, das mag bei einer Beckhoff nicht das größte Problem darstellen.
Bei anderen Herstellern hat man den zusätzlich benötigten Speicher vielleicht gar nicht zu Verfügung.

Ich hatte die Hoffnung das über die Feldbusse zu umgehen, die sind in der Theorie schnell genug. Bei Beckhoff spricht man von mehren hundert µs, die die Ethernet Pakete benötigen.

Es ist ja auch möglich Treiber mit mehreren Fahrbefehlen pro 10ms zu füttern, technisch ist das ja schon umgesetzt. Daher muss es doch auch möglich sein 5 Variablen in 20ms Zykluszeit zu übertragen.


Was hältst Du von einfachen Feldbus-Feldbus-Kopplern? Da kannst Du alles zwischen verschiedenen Feldbussen hin und her schaufeln und bist einigermaßen deterministisch in der Echtzeit unterwegs, zumindest was halt für die jeweilige SPS und dem Bus möglich ist. Suche mal nach Anybus Communicator. Alternativ hat Beckhoff auch alle möglichen Bus-Slave-Karten im Angebot, die genau das Gleiche machen.

Von Beckhoff her fallen mir sofort diese Komponenten ein: EL6692/6695 für EtherCAT-EtherCAT, EL6631-0010 für EtherCAT-Profinet, EL6731-0010 für EtherCAT-Profibus, EL6751-0010 für EtherCAT-CAN-Open, EL6752-0010 für EtherCAT-DeviceNET, EL6740-0010 für EtherCAT-Interbus usw.
Ich habe doch 2 Geräte die jeweils EtherCAT können, die in keinem anderen Netzwerk als Master oder Slave agieren.
Wozu benötige ich da Feldbus-Feldbus Koppler, oder ist die EL6695 die einzige Möglichkeit das zu realisieren?

Wäre es denn nicht einfacher direkt in die Datenbank zu schreiben und Anfragen an die Datenbank dann auf dem Edge Device auszuführen?


Sind nur Ideen, alles easy

Wir verwenden halt viel Mqtt in sämtlichen Funktionen mit diversen Middlewares und Systemen welche direkt auf Broker zugreifen

Ja alles gut, MQTT würde ich auch gerne benutzen, bringt aber eben wieder andere Probleme mit sich.
Die Idee mit der Datenbank hatte ich auch, allerdings ist das alles nicht schnell genug, außer du beginnst wieder das auf der SPS zu puffern und dann gesammelt zu übertragen.
Problem dabei ist, dass wir die Instandhaltung für das System nicht übernehmen.

Dem (falls wer einen Vorschlag hat um das politisch korrekter auszudrücken, gerne her damit) 2 Jahre vor der Rente stehenden Instandhalter noch beizubringen wie die SQL Injection zu funktionieren hat und wie der Puffer neu aufgesetzt wird, halte ich für ein schwieriges Thema.
Da scheint mir die Herangehensweise mit Feldbussen zu arbeiten, die schon seit 10+ Jahren irgendwo in der Halle eingesetzt werden und mehr oder weniger gleich funktionieren aussichtsreicher.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe doch 2 Geräte die jeweils EtherCAT können, die in keinem anderen Netzwerk als Master oder Slave agieren.
Ja was hast Du denn für zwei Geräte überhaupt? Hast Du freie realtimefähige Netzwerkbuchsen? Dann kannst Du einen als Master und den anderen als Slave einrichten und verbinden - fertig. Das wäre das Äquivalent zu der EL6695 in bereits vorhandenen EtherCAT-Bus-Topologieen.
Was aber, wenn Du auf der einen Seite Profinet und auf der anderen Seite Profibus warten? Oder EtherCAT und Profinet. Ich dachte Du wolltest herstellerunabhängig agieren?
 
Hier geht es erst einmal darum festzustellen, ob das mit EtherCAT überhaupt funktionieren würde.
Greenfield, beliebige SPS und beliebiges Edge, die natürlich die Voraussetzungen für eine EtherCAT Kommunikation mitbringen.

So wie du es sagst, einen als Master und einen als Slave dachte ich es mir auch.
Allerdings finde ich dazu keinerlei Beispiele oder Informationen dazu, wie ich die jeweiligen SPSen konfigurieren muss.
Das ist eine reine Konzeptionelle Frage.

Wenn ich weiß, dass das gelöst werden kann und wie es gelöst werden kann, schaue ich mir an ob das vielversprechend aussieht und besorge mir dann die passenden Geräte.

Das ist Step 1 und Step 2.
Wenn das dann funktioniert, kann ich mir Gedanken darum machen wie ich dann andere Protokolle einbinde, oder ob es nicht mehr Sinn macht für Profinet Geräte halt auch ein Edge Device zu wählen, was nativ Profinet kann.
Das ist dann aber Step 5 oder 6.
 
So schwierig ist das nun wirklich nicht.
Bei dem einen Gerät fügst Du einen EtherCAT-Master und bei dem anderen einen EherCAT-Slave hinzu.

1741878614670.png

So - fertig. Und jetzt brauchst Du schon die zwei Geräte.

Hast Du denn schon die Entwicklungsumgebung parat?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So schwierig ist das nun wirklich nicht.
Bei dem einen Gerät fügst Du einen EtherCAT-Master und bei dem anderen einen EherCAT-Slave hinzu.

Anhang anzeigen 86013

So - fertig. Und jetzt brauchst Du schon die zwei Geräte.

Hast Du denn schon die Entwicklungsumgebung parat?
Also ich hab da noch ein paar Fragen im Hinterkopf, sowas wie müssen die beiden Geräte im selben Projekt sein? Wie funktionierts wenn die beiden Geräte nicht in einem Projekt sind?
Hat da jemand Erfahrungen zu oder weiß wie man sowas heraus findet?

Ansonsten laufe ich gleich an den Schrank und hole mir dort eine beliebige Anzahl an Beckhoff Geräten raus. Und wenn ich heute keine Lust auf Beckhoff habe, dann greife ich ein Regal tiefer und nehm doch die Siemens.
Und wenn ich darauf dann auch keine Lust habe, nehm ich mir halt doch aus dem Regal daneben die Weidmüller. /s

Ja tatsächlich, die habe ich parat.
 
Also ich hab da noch ein paar Fragen im Hinterkopf, sowas wie müssen die beiden Geräte im selben Projekt sein? Wie funktionierts wenn die beiden Geräte nicht in einem Projekt sind?

Die können nicht im gleichen Projekt sein. Maximal in der gleichen Projektmappe. Aber auch das ist egal. Wichtig ist dass das Prozessabbild zueinander passt und dass dem Master gesagt wird, wo der Slave angeschlossen ist.

Und wenn ich heute keine Lust auf Beckhoff habe, dann greife ich ein Regal tiefer und nehm doch die Siemens.
Siemens und EtherCAT? Jetzt wird es spannend. Und schon brauchst Du die EL6631-0010, zumindest, wenn Du im EtherCAT auf einer Seite bleiben willst - oder Alternativ einen passenden Anybus Communicator oder einen anderen Profinet-EtherCAT-Feldbuskoppler.
Du sieht jetzt hoffentlich in welche Richtung es geht.

Bei Weidmüller kannst Du wahrscheinlich wieder auf EtherCAT wechseln.

Und da wird auch deutlich, dass die beiden Kommunikationspartner nicht im gleichen Projekt sein können - weil Weidmüller = Codesys und Beckhoff = TwinCAT usw.

Ja tatsächlich, die habe ich parat.
Na dann mal los. Die Konzeptionsphase ist vorbei.
 
Ads funktioniert <direkt>, wir greifen aus einem Tyepscript Projekt auch direkt auf die Ads Schnittstelle zu, da gibt es nicht viel zu konfigurieren und wenn wird das alles bei Beckhoff in der Knowledgebase erklärt

 
Zuviel Werbung?
-> Hier kostenlos registrieren
Imo ist die 6692/95 die Lösung für den Realtime Datenaustausch zwischen verschiedenen Ethercat Mastern. Die Kommunikation läuft dabei im I/O Takt des jeweiligen Kommunikationspartners.
 
Siemens und EtherCAT?
Willst du mir damit jetzt sagen, dass Siemens standardmäßig Profinet und nicht EtherCAT verwendet? 😀
Du sieht jetzt hoffentlich in welche Richtung es geht.
Weidmüller = Codesys und Beckhoff = TwinCAT
Danke für die Erklärung. /s
Aber auch das ist egal. Wichtig ist dass das Prozessabbild zueinander passt und dass dem Master gesagt wird, wo der Slave angeschlossen ist.
Das war ein sachdienlicher hinweis. Danke :)
 
Zurück
Oben