Einleitung

Diese Dokumentation bezieht sich auf den ANSI Standard E1.31-2009 und die Verwendung von TwinCAT 2.

Für Projekte mit TwinCAT 3 verwenden Sie bitte die Dokumentation sACN | 2016

DMX ist in der Bühnentechnik und Gebäudetechnik ein weit verbreiteter Standard und dient zur Ansteuerung von Beleuchtungselementen.
Beckhoff bietet hierzu die EL6851 DMX-Master-Klemme und die EL6851-0010 DMX-Slave-Klemme an.

Um die Vorteile von Ethernet zu nutzen, wurde von der ESTA (Entertainment Services and Technology Association) sACN (Streaming Architecture for Control Networks) entwickelt. Dieses überträgt DMX-Universe per UDP/IP. Dabei werden die DMX-Daten als komplettes Universe in den sACN-Frame eingebettet und so mithilfe einer weiteren Schicht durch UDP/IP getunnelt. sACN wird durch ANSI Standard E1.31-2009 definiert und stellt eine Untermenge des ACN Standards (ANSI Standard E1.17) dar.

Weitere Informationen finden Sie auf unserer Webseite unter: PC-based Control für Bühnen- und Showtechnik


Hinweise zur Dokumentation

Diese Beschreibung wendet sich ausschließlich an ausgebildetes Fachpersonal der Steuerungs- und Automatisierungstechnik, das mit den geltenden nationalen Normen vertraut ist.
Zur Installation und Inbetriebnahme der Komponenten ist die Beachtung der Dokumentation und der nachfolgenden Hinweise und Erklärungen unbedingt notwendig.
Das Fachpersonal ist verpflichtet, für jede Installation und Inbetriebnahme die zu dem Zeitpunkt veröffentlichte Dokumentation zu verwenden.

Das Fachpersonal hat sicherzustellen, dass die Anwendung bzw. der Einsatz der beschriebenen Produkte alle Sicherheitsanforderungen, einschließlich sämtlicher anwendbaren Gesetze, Vorschriften, Bestimmungen und Normen erfüllt.

Disclaimer

Diese Dokumentation wurde sorgfältig erstellt. Die beschriebenen Produkte werden jedoch ständig weiter entwickelt.
Wir behalten uns das Recht vor, die Dokumentation jederzeit und ohne Ankündigung zu überarbeiten und zu ändern.
Aus den Angaben, Abbildungen und Beschreibungen in dieser Dokumentation können keine Ansprüche auf Änderung bereits gelieferter Produkte geltend gemacht werden.

Marken

Beckhoff®, TwinCAT®, EtherCAT®, EtherCAT G®, EtherCAT G10®, EtherCAT P®, Safety over EtherCAT®, TwinSAFE®, XFC®, XTS® und XPlanar® sind eingetragene und lizenzierte Marken der Beckhoff Automation GmbH.
Die Verwendung anderer in dieser Dokumentation enthaltenen Marken oder Kennzeichen durch Dritte kann zu einer Verletzung von Rechten der Inhaber der entsprechenden Bezeichnungen führen.

Patente

Die EtherCAT Technologie ist patentrechtlich geschützt, insbesondere durch folgende Anmeldungen und Patente:
EP1590927, EP1789857, EP1456722, EP2137893, DE102015105702
mit den entsprechenden Anmeldungen und Eintragungen in verschiedenen anderen Ländern.

EtherCAT® ist eine eingetragene Marke und patentierte Technologie lizenziert durch die Beckhoff Automation GmbH, Deutschland.

Copyright

© Beckhoff Automation GmbH & Co. KG, Deutschland.
Weitergabe sowie Vervielfältigung dieses Dokuments, Verwertung und Mitteilung seines Inhalts sind verboten, soweit nicht ausdrücklich gestattet.
Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte für den Fall der Patent-, Gebrauchsmuster- oder Geschmacksmustereintragung vorbehalten.


FB_sACNMaster

Dieser Funktionsbaustein sendet sACN Telegramme über UDP.

VAR_INPUT

bEnable           : BOOL;
sSrvNetId         : T_AmsNetId;
sLocalHost        : STRING(15);
udiLocalPort      : UDINT;
sRemoteHost       : STRING(15);
udiRemotePort     : UDINT;
sSourceName       : STRING(64);
byPriority        : BYTE;
uiUniverse        : UINT;
pData             : POINTER TO ARRAY [1..512] OF BYTE;

bEnable: Über eine positive Flanke an diesem Eingang beginnt der Baustein mit der Abarbeitung. Eine negative Flanke beendet die Abarbeitung.

sSrvNetId: String mit der Netzwerkadresse des TwinCAT TCP/IP Connection Servers. Für den lokalen Rechner (default) kann auch ein Leerstring angegeben werden.

sLocalHost: Die lokale IP-Adresse (IPv4) des UDP Client/Server-Sockets als String (z.B. '192.168.0.5'). Für den Default-Netzwerkadapter kann auch ein Leerstring angegeben werden.

udiLocalPort: Die lokale IP-Portnummer des UDP Client/Server-Sockets (z.B. 200).

sRemoteHost: Die remote IP-Adresse (IPv4) des UDP Client/Server-Sockets als String (z.B. '192.168.0.6').

udiRemotePort: Die remote IP-Portnummer des UDP Client/Server-Sockets (z.B. 5586).

sSourceName: Absender vom sACN Telegramm.

byPriority: Priorität des sACN Telegramms (0 bis 200).

uiUniverse: DMX-Universum, für das die Daten bestimmt sind (1 bis 63999).

pData: Zeiger auf eine Struktur mit den zu sendenden Daten.

VAR_OUTPUT

bBusy              : BOOL;
bError             : BOOL;
udiErrorId         : UDINT;

bBusy: Ist gesetzt, wenn ein gültiges sACN Telegramm versendet wird.

bError: Ist gesetzt, wenn bei der Ausführung des Funktionsbausteins ein Fehler auftritt. Der Fehlercode ist in udiErrorId enthalten.

udiErrorId: Enthält den Fehlercode des zuletzt ausgeführten Arbeitsschritts. Siehe Fehlercodes.


FB_sACNSlave

Dieser Funktionsbaustein empfängt sACN Telegramme über UDP.

VAR_INPUT

bEnable           : BOOL;
bJoinMCG          : BOOL;
sSrvNetId         : T_AmsNetId;
sLocalHost        : STRING(15);
udiLocalPort      : UDINT;
sMulticastGroup   : STRING(15);

bEnable: Über eine positive Flanke an diesem Eingang beginnt der Baustein mit der Abarbeitung. Eine negative Flanke beendet die Abarbeitung.

bJoinMCG: Wenn gesetzt, dann wird versucht der unter sMulticastGroup angegebenen Multicast Gruppe beizutreten. Der Funktionsbaustein muss erneut gestartet werden.

sSrvNetId: String mit der Netzwerkadresse des TwinCAT TCP/IP Connection Servers. Für den lokalen Rechner (default) kann auch ein Leerstring angegeben werden.

sLocalHost: Die lokale IP-Adresse (IPv4) des UDP Client/Server-Sockets als String (z.B. '192.168.0.6'). Für den Default-Netzwerkadapter kann auch ein Leerstring angegeben werden.

udiLocalPort: Die lokale IP-Portnummer des UDP Client/Server-Sockets (z.B. 5586).

sMulticastGroup: Die Multicast Gruppe, der beigetreten werden soll.

VAR_OUTPUT

bBusy              : BOOL;
bError             : BOOL;
udiErrorId         : UDINT;
udiInvFrames       : UDINT;
pData              : POINTER TO ARRAY [1..638] OF BYTE;

bBusy: Nach Aktivierung des Bausteins wird der Ausgang gesetzt und bleibt so lange aktiv, bis der Baustein deaktiviert wird oder in den Fehlerzustand geht.

bError: Ist gesetzt, wenn bei der Ausführung des Funktionsbausteins ein Fehler auftritt. Der Fehlercode ist in udiErrorId enthalten.

udiErrorId: Enthält den Fehlercode des zuletzt ausgeführten Arbeitsschritts. Siehe Fehlercodes.

udiInvFrames: Anzahl ungültiger empfangener sACN Telegramme.

pData: War die Validierung des empfangenen sACN Telegramms erfolgreich steht es an diesem Ausgang zur Verfügung.


FB_sACNUniverseDecode

Dieser Funktionsbaustein extrahiert die Nutzdaten aus einem sACN Telegramm.

VAR_INPUT

uiUniverse        : UINT;
pData             : POINTER TO ARRAY [1..638] OF BYTE;

uiUniverse: DMX-Universum, auf das der Funktionsbaustein reagieren soll.

pData: Zeiger auf eine Struktur das ein sACN Telegramm enthält.

VAR_OUTPUT

sSourceName       : STRING(64);

sSourceName: Absender vom sACN Telegramm.

VAR_IN_OUT

arrPropertyValues : ARRAY [1..512] OF BYTE;

arrPropertyValues: Struktur an welche die extrahierten Nutzdaten übergeben werden.


FB_sACNObserver

Dieser Funktionsbaustein schließt alle UDP Ports die vom lokalen TwinCAT SPS Laufzeitsystem geöffnet wurden.

VAR_INPUT

bEnable           : BOOL;
bErrFlag          : BOOL;

bEnable: Über eine positive Flanke an diesem Eingang beginnt der Baustein mit der Abarbeitung. Eine negative Flanke beendet die Abarbeitung.

bErrFlag: Bei einer positiven Flanke wird der Ausgang bEnFlag auf FALSE gesetzt und alle UDP Ports vom lokalen TwinCAT SPS Laufzeitsystem geschlossen. Trat kein Fehler auf, wird bEnFlag auf TRUE gesetzt.

VAR_OUTPUT

bBusy             : BOOL;
bError            : BOOL;
udiErrorId        : UDINT;
tNextRetry        : TIME;
bEnFlag           : BOOL;

bBusy: Ist solange gesetzt, wie der Funktionsbaustein versucht alle UDP Ports vom lokalen TwinCAT SPS Laufzeitsystem zu schließen.

bError: Ist gesetzt, wenn bei der Ausführung des Funktionsbausteins ein Fehler auftritt. Der Fehlercode ist in udiErrorId enthalten.

udiErrorId: Enthält den Fehlercode des zuletzt ausgeführten Arbeitsschritts. Siehe Fehlercodes.

tNextRetry: Schlägt das Schließen der UDP Ports fehl, wird hier die verbleibende Zeit bis zum erneuten Versuch angezeigt.

bEnFlag: Ist solange gesetzt, bis eine positive Flanke an bErrFlag erkannt wird.


Fehlercodes

Wert (hex) | Wert (dez) | Beschreibung
0x0000 | 0 | Kein Fehler.
0x8001 | 32769 | Der angegebene UDP Port konnte nicht geöffnet werden.
0x8002 | 32770 | Vom TwinCAT SPS Laufzeitsystem geöffnete Ports konnten nicht geschlossen werden.
0x8003 | 32771 | Ungültiger Socket für den Empfang von UDP Telegrammen.
0x8004 | 32772 | Ungültiger Socket für den Versand von UDP Telegrammen.
0x8005 | 32773 | Der Multicast Gruppe konnte nicht beigetreten werden.


Beispiele

Beckhoff Knowledge Base: sACN

sACN Master und Slave Unicast

Im Beispiel sind zwei SPS-Programme und eine Lightjams-Projektdatei (www.lightjams.com) enthalten. Das Beispiel unterstützt das generelle Senden und Empfangen von sACN-Frames. In dem Gliederungspunkt "Programmierung" werden die einzelnen Funktionsbausteine des Beispiels erläutert.

Durch mehrere Netzwerkschnittstellen kann der sACN-Slave auf mehrere UDP-Telegramme und somit auf mehrere sACN-Master reagieren. Die sACN-Master werden durch ein weiteres SPS-Programm und einem Lightjams-Projekt dargestellt.

Für das Beispiel wird das TwinCAT Supplement TwinCAT TCP/IP Server vorausgesetzt.

Aufbauend auf diesem Beispiel können die Nutzdaten des sACN-Frames auf beliebige Variablen der SPS verknüpft werden. Durch das modulare Beckhoff-Steuerungs-System kann z.B. ein

  • sACN zu DMX (EL6851 und EL6851-0010)
  • sACN zu Dimmer (KL2761 und KL2751)
  • sACN zu DALI (KL6811)
  • sACN zu Stepper oder DC Motor
  • sACN zu digitalen EAs (z.B. 24V oder 230V)
  • sACN zu analogen EAs (z.B. 0-10V oder 4-20mA)
  • etc.

verknüpft werden.

Download

TcKB_sACN_Sample01


Examples

Beckhoff Knowledge Base: sACN

sACN master and slave multicast

This example contains a PLC program with a Target Visualization and an MA Lighting RPU showfile (Beckhoff_pl&s.show.gz). It supports sending and receiving of sACN frames via multicast groups from a Beckhoff PLC to an MA Lighting RPU.
The basic principle of the setup: Both devices (MA RPU and Beckhoff Controller) have an own IP address (it does not have to be the same IP class). To “connect” the devices, the TCP/IP Multicast function is used. Multicast groups use class D networks (224.0.0.0 to 239.255.255.255) per definition. In Multicast groups the slaves join to a group (FB_SocketUdpAddMulticastAddress); the master sends the data to all connected slaves by sending a telegram to the multicast group network address.

In this sample we use two logical connections:
Beckhoff to MA RPU (in orange) and MA RPU to Beckhoff (in blue)

The full set up of the sample looks like the following:

On the left side you see the Beckhoff Controller with PLC and Target Visu (including two buttons and a bar graph). On the right side you see the MA Lighting RPU with display. When the attached showfile is loaded to the device, you see two execute buttons on the display.

1. The communication from Beckhoff to MA RPU is shown in orange. The Beckhoff Controller is the master that sends to the Multicast address 239.255.0.1. The MA RPU joins this group (this is done automatically in the showfile). The Beckhoff Controller uses sACN frames with the Universe ID 2 and two channels of user data. The user data is used to change the value of the execute buttons at the MA RPU. The sequence of the necessary bits is generated in the PLC program by the Function Block FB_selector. The buttons of the Target Visu are used to control these sequences. The result: By changing the value from the buttons of the Target Visu on the Beckhoff Controller, the value of the execute buttons at the MA RPU is changed (a remote control of the MA RPU is possible).

2. The communication from MA RPU to Beckhoff is shown in blue. The MA RPU is the master that sends to the address 239.255.0.1. The Beckhoff Controller joins this group as a multicast slave. The MA RPU uses sACN frames with the Universe ID 1 and twelve channels of user data. The user data is used to run two different lighting scenarios. These sequences (scenarios) of data are generated by the MA RPU. The result: A change of the value from the execute buttons results in different output values for the sACN frames send by the MA RPU. The sACN values are displayed at the Target Visu in a bar graph.

A final test can be done by changing the value of the buttons in the Target Visu. The result should be changing data sequences in the bar graph of the Target Visu.

Comment: Both directions use the same multicast group! The differentiation from which communication partner the frame is coming is done by the sACN Universe ID.

The individual function blocks of the example are explained in the programming section. The individual function blocks of the supplement TwinCAT TCP/IP Server are explained here:
http://infosys.beckhoff.com/content/1031/tcpipserver/html/tcplclibtcpip_fb_socketconnect.htm?id=28704

The TwinCAT supplement TwinCAT TCP/IP Server in Verison Version 1.0.64 (or higher) is required for this example. An MA Lighting RPU Hardware Unit is required. Basic knowledge in Network Technology (Multicast groups) is required.

Download

TcKB_sACN_Sample02