chrissyheb - 2022-08-01

Hallo zusammen,

ich programmiere gerade mein erstes CodeSys-Projekt und suche nach einer Möglichkeit, mehrere gleiche Maschinen mit CodeSys-SPS untereinander in Echtzeit kommunizieren zu lassen.
Echtzeit bedeutet deterministisch im Bereich bis max. 10ms.

Jede Maschine kann so konfiguriert werden, dass sie entweder als Taktgeber (bzw. Standalone) arbeitet oder als Taktempfänger. Eine Maschine im Verbund wird als Taktgeber konfiguriert, die restlichen (falls vorhanden) als Taktempfänger, wobei die "Priorität" der Taktempfänger fest mit konfiguriert wird. (Auswahl "Taktgeber", "Taktempfänger 1", "Taktempfänger 2", ...).

Melden sich beim Taktgeber 1..X Taktempfänger betriebsbereit, so arbeiten die Maschinen im Verbund. Die Regelung läuft am Taktgeber, der Sollwerte an die Taktempfänger schickt.

Stoppt der Taktgeber seinen Betrieb aufgrund eines Fehlers, übernimmt der Taktempfänger mit der höchsten Priorität (also z.B. "Taktempfänger 1") die Funktion des Taktgebers, alle anderen bleiben Taktempfänger.
Stoppt ein Taktempfänger den Betrieb, läuft der Betrieb mit einem Taktempfänger weniger weiter.

Kann mir jemand einen Tipp geben, mit welcher Kommunikation (Feldbus, ...) eine solche Anforderung umgesetzt werden kann? Optimal wäre ja eine Art Publisher/Subscriber-Prinzip, wie es bei Beckhoff-Steuerungen möglich ist.

Die Daten, die ausgetauscht werden, beschränken sich auf max. 4 Bits von jedem Taktempfänger zum Taktgeber und 4 Bits und 1 REAL vom Taktgeber zu jedem Taktempfänger.

Danke und GruĂź
Chrissy

 

Last edit: chrissyheb 2022-08-01