Beispielprogramm 10 (FB zur Echtzeit Diagnose)

Folgender Funktionsblock kann als Vorlage zur Anwendung der Echtzeit Diagnose einer EtherCAT Box Analog-Eingang in TwinCAT SPS verwendet werden. Er wird in der SPS zwischen die Box und der Applikation gesetzt und wertet in Echtzeit die von der Box kommenden Diagnosevariablen aus, die Messwerte werden unverändert durchgeleitet.

Der Funktionsblock ist für eine ELM3602-0002 mit Oversampling = 5 geschrieben und ist als funktionales Beispiel zu verstehen und muss ggf. angepasst werden an

Ebenso kann er um datenbearbeitenden Code oder weitere eigenen Diagnosen erweitert werden oder auf einen ganz anderen Typ einer Box (Analogausgang EL4xxx, Encoder EL5xxx, …) umgeschrieben werden.

Der Funktionsblock zwischen der Box und der SPS stellt sich schematisch wie folgt dar:

Beispielprogramm 10 (FB zur Echtzeit Diagnose) 1:
Funktionsblock als Beispiel zur Auswertung von Diagnoseinformationen der Box

Vereinfachte Verknüpfung per Struktur-Variable

Es wird in diesem Beispielprogramm die Gelegenheit genutzt, eine TwinCAT-Funktion zu beschreiben, die das Verlinken von komplexen PDO-Strukturen vereinfacht.

Der o.a. Funktionsblock müsste mit allen Echtzeit-Variablen der Box verknüpft werden: Eingänge und Ausgänge, hier im Beispiel die ELM3602.

Beispielprogramm 10 (FB zur Echtzeit Diagnose) 2:

Dieser zeitintensive Vorgang kann durch Struktur-Verknüpfung in TwinCAT 3 vereinfacht und beschleunigt werden. Es werden nun zwei alternative Varianten in TwinCAT 3.1 dargelegt, wie mit wenigen Klicks eine Struktur in der SPS definiert werden kann, die dem Prozessabbild der Box entspricht.

Die entsprechende Variante des Funktionsblocks FB_REALTIME_DIAGNOSIS ist in den beiden Beispielprogrammen enthalten. Er enthält PDO‑Variablen mit einem anwendungsspezifischen Datentyp. Dabei handelt es sich um eine von TwinCAT 3 erzeugte Struktur. Dadurch, dass durch die von TwinCAT generierte Struktur direkt die PDO Struktur der Box abbildet, ist es nicht nötig, dass eine passende Struktur aufwendig erstellt werden muss oder einzelne Variablen mit einzelnen Datentypen verknüpft werden müssen. Lediglich eine Verknüpfung auf höherer Ebene (Status, Samples, Control, ...) ist erforderlich.

Dies sowie sämtliche Konfigurationen sind bereits in dem jeweiligen Beispielprogramm enthalten.

Variante A, Reiter „SPS“:

Allgemein wird die Erzeugung dieses besonderen PDO‑Datentyps über die SPS‑Einstellungen der Box aktiviert (Karteireiter „SPS“): dort wird das Kontrollkästchen „Create SPS Data Type“ gesetzt („Copy“ überträgt diese Zeichenkette dann in die Ablage):

Beispielprogramm 10 (FB zur Echtzeit Diagnose) 3:
Erstellung der PDO Variablen (TwinCAT‑Version >= V3.1.4024.0)

Die Einstellung „Per Channel“ kann aktiviert werden, wenn nicht für alle, sondern nur für ein Kanal die Struktur erzeugt werden soll.

Die Adresszuweisungen für die Eingänge (%ATI*) und Ausgänge (%ATQ*) befinden sich bereits innerhalb dieser generierten Struktur. Eingänge und Ausgänge sind demnach in dieser Struktur zusammengefasst.

Die Variablendeklaration des Funktionsblocks FB_REALTIME_DIAGNOSIS enthält somit:

stELM3602Special            : MDP5001_350_EB559ACD;

Vorgesehen ist der Lesezugriff auf die Eingänge der Box über die Substruktur MDP5001_350_Input und der Schreibzugriff auf die Ausgänge über die Substruktur MDP5001_350_Output der Struktur stELM3602Special.

Variante B, „Create SM/PDO Variables“:

Allgemein wird die Erzeugung dieser besonderen PDO‑Datentypen inkl. des PDO‑Elementes über die EtherCAT Einstellungen der Box aktiviert: in den Erweiterten Einstellungen ist unter „Allgemein“/ „Verhalten“ bei „Prozessdaten“ das Kontrollkästchen „Create SM/PDO Variables“ zu setzen:

Beispielprogramm 10 (FB zur Echtzeit Diagnose) 4:
Erstellung der SmPdoVariables (TwinCAT‑Version >= V3.1.4022.30)

Der Datentyp wird durch Auswahl des PDO sichtbar und kann dort in die Zwischenablage kopiert werden:

Beispielprogramm 10 (FB zur Echtzeit Diagnose) 5:
Ermitteln des generierten Datentyps von SmPdoVariables

Die Variablendeklaration des Funktionsblocks FB_REALTIME_DIAGNOSIS enthält somit:

st_SM2             AT%Q*    : ECAT_ELM3602_0002_SM_3412CB6A;
st_SM3             AT%I*    : ECAT_ELM3602_0002_SM_87A01A51;

Vorgesehen ist der Lesezugriff auf die Eingänge der Box über die Struktur st_SM3 und der Schreibzugriff auf die Ausgänge über die Struktur st_SM2. Diese Datenstruktur entspricht dem automatisch ergänzten neuen PDO‑Element „SmPdoVariables“.