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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, seems very sensitive for bus cycle time, so it wouldn't be OPC nor Codesys 'Symbol Configuration' interface (maybe representatives from Codesys will correct me).
the Modbus TCP is pretty simple and stable for Codesys, but for 10 ms must be tested.
For such cycles the first option should be EtherCAT (hello Beckhoff), but you have to figure out how to arrange EtherCAT slaves in this case. Normally as i know it is one master and all other slaves. But you need all slaves could be a new master in any moment.
For ModbusTCP you can arrange both master and client on the same PLC and manage when one should be active (maybe respective licenses are needed).
So, I would looking to ModbusTCP and EtherCAT options.
If the hardware are not defined yet as well, I would check Berghof PLC (not Beckhoff), it haas on board Modbus and EtherCAT.
Maybe it somehow help you in your investigations.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
Hi, seems very sensitive for bus cycle time, so it wouldn't be OPC nor Codesys 'Symbol Configuration' interface (maybe representatives from Codesys will correct me).
the Modbus TCP is pretty simple and stable for Codesys, but for 10 ms must be tested.
For such cycles the first option should be EtherCAT (hello Beckhoff), but you have to figure out how to arrange EtherCAT slaves in this case. Normally as i know it is one master and all other slaves. But you need all slaves could be a new master in any moment.
For ModbusTCP you can arrange both master and client on the same PLC and manage when one should be active (maybe respective licenses are needed).
So, I would looking to ModbusTCP and EtherCAT options.
If the hardware are not defined yet as well, I would check Berghof PLC (not Beckhoff), it haas on board Modbus and EtherCAT.
Maybe it somehow help you in your investigations.