+ All Categories
Home > Documents > Funktionsbausteine zur XSoft

Funktionsbausteine zur XSoft

Date post: 02-May-2023
Category:
Upload: khangminh22
View: 0 times
Download: 0 times
Share this document with a friend
109
XSoft Funktionsbausteine Programmierung 02/05 AWB2786-1456D A Think future. Switch to green.
Transcript

XSoftFunktionsbausteine

Programmierung02/05 AWB2786-1456D

AThink future. Switch to green.

Alle Marken- und Produktnamen sind Warenzeichen oder eingetragene Warenzeichen der jeweiligen Titelhalter.

1. Auflage 2002, Redaktionsdatum 08/02,2. Auflage 2002, Redaktionsdatum 11/02,3. Auflage 2003, Redaktionsdatum 04/034. Auflage 2004, Redaktionsdatum 04/045. Auflage 2004, Redaktionsdatum 07/046. Auflage 2004, Redaktionsdatum 09/047. Auflage 2005, Redaktionsdatum 02/05siehe Änderungsprotokoll im Kapitel „Zu diesem Handbuch“

© Moeller GmbH, 53105 Bonn

Autor: Peter RoerschRedaktion: Thomas Kracht

Alle Rechte, auch die der Übersetzung, vorbehalten.

Kein Teil dieses Handbuches darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder einem anderen Verfahren) ohne schriftliche Zustimmung der Firma Moeller GmbH, Bonn, reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

Änderungen vorbehalten.

02/05 AWB2786-1456D

Inhalt

1

Zu diesem Handbuch 5Änderungsprotokoll 5Bibliotheksübersicht 5Weitere Handbücher 6Symbole 6

1 Standard-Bausteine der S40-Software: XS40_MoellerFB.lib 7Sucosoft S40-Kompatibilität 7Communication 8– MI4netDP16; Kommunikationsbaustein für MI4

(16-Byte-PROFIBUS-DP-Datenkanal) 8– MI4netDP32; Kommunikationsbaustein für MI4

(32-Byte-PROFIBUS-DP-Datenkanal) 8– MV4netDP38; Kommunikationsbaustein für MV4

(38-Byte-PROFIBUS-DP-Datenkanal) 9– MV4netDP70; Kommunikationsbaustein für MV4

(70-Byte-PROFIBUS-DP-Datenkanal) 9Convert 10– DataScale; Daten skalieren 10– IEEE_To_Real; Zahlen konvertieren:

IEEE-754-Standard-Format in den Datentyp REAL 11– Real_To_IEEE; Zahlen konvertieren:

Datentyp REAL in IEEE-754-Standard-Format 11CounterFunctionBlocks 12– S40_16BitCounter

S40_32BitCounterVor-/Rückwärtszähler 12

Date and Time 13– DATconcatX; Datum und Uhrzeit erzeugen 13– DateConcat; Datum erzeugen 14– DateSplit; Datentyp DATE spalten 14– DATSplitX; Datentyp DATE_AND_TIME (DT) spalten 15– TimeConcatX; Zeitdauer erzeugen 16– TimeSplitX; Variablentyp TIME spalten 17– TODconcat; Uhrzeit erzeugen 17– TODSplit; Datentyp TIME_OF_DAY spalten 18RegisterFunctionBlocks 18– FifoBx, FifoWx

FIFO-Register (8/16 Bit) 18– LifoBx, LifoWx

LIFO-Register (8/16 Bit) 20– SR_x, SRB_x, SRW_x

Schieberegister 21Timer 24– MS_TimeFalling

Ausschaltverzögerungs-Zeitglied, Millisekunden 24– MS_TimeRising

Einschaltverzögerungs-Zeitglied, Millisekunden 25– S_TimeFalling

Ausschaltverzögerungs-Zeitglied, Sekunden 26– S_TimeRising

Einschaltverzögerungs-Zeitglied, Sekunden 27– TimeGenerator; Taktgenerator 28– TimePulse; Impulszeitglied 29

Inhalt 02/05 AWB2786-1456D

2

2 Date and Time-Bausteine der S40: XS40_MoellerFB_RTC.lib 31– S40_GetRealTimeClock; Auswertung der Echtzeituhr 31– S40_RTC; Stellen der Echtzeituhr 31– S40_SetRealTimeClock; Setzen der Echtzeituhr 32

3 Uhr-Bausteine: RTCLib.lib 33Uhrbausteine 33– SetRealTimeClock; Setzen der Echtzeituhr 33– GetRealTimeClock; Auswertung der Echtzeituhr 34

4 Visualisierungsbausteine: Visu.lib 35Visualisierungsbausteine 35– Generelles 35– ClearLines; Zeilen löschen 35– ClearScreen; Display-Inhalt löschen 36– EnableDisplay;

Display-Inhalt sichtbar/nicht sichtbar schalten 36– GetDisplayInfo; Betriebszustand und Display-Typ abfragen37– GetTextAddress; Textadresse auslesen 37– GetTextDBInfo; TextDB Information auslesen 38– InputValue; Werteingabe (Sollwert) 38– SetBacklight; Hintergrundbeleuchtung aus-/einschalten 40– SetContrast; Kontrast des Displays einstellen 41– SetCursor; Cursor positionieren 41– WriteBargraph; Bargraphdarstellung eines Istwertes 42– WriteLine; Zeile schreiben 43– WriteMultiString; Bis zu 8 Strings aus

alphanummerischen Zeichen schreiben 43– WriteMultiStringTextDB;

Bis zu 8 Strings aus Textdatei gleichzeitig schreiben 44– WriteMultiValue; Bis zu 8 Werte (Istwerte) schreiben 46– WriteString; String schreiben 47– WriteStringTextDB; String aus Textdatei schreiben 48– WriteSysDate; Datum schreiben 49– WriteSysDay; Wochentag schreiben 49– WriteSysTime; Uhrzeit schreiben 50– WriteValue; (Ist-)Wert schreiben 50

5 Zähler-Bausteine: counter.lib (für XIOC-1(2)CNT-100 kHz) 53Zählerbausteine 53– CounterControl; Ein-/Ausgänge des Moduls freigeben 53– ReadCounter;

Zähler-, Vergleichs- und Vorgabewerte anzeigen 54– WriteCounter;

Zähler-, Vergleichs- und Vorgabewerte parametrieren 54– CounterFlags; Funktionen aktivieren und Zustände abfragen

55– XIOC_IncEncoder; Impulse von Inkrementalgebern

zählen und referenzieren 57

02/05 AWB2786-1456D Inhalt

3

6 Zähler-Bausteine: Counter_Analog.lib (für XIOC-2CNT-2AO-NC) 59

XIOC_2CNT2AO_INC; Inkrementalgeberauswertung 59XIOC_2CNT2AO_ANALOG; Analogwertausgabe 62

7 Übertragungsbaustein: CANopen_Utilities.lib 63Übertragungsbaustein 63– SDO_Transfer (XC-100); Parameter übertragen 63

8 Datenzugriffsbausteine für Dateien: XC100_File.lib 65Beschreibung der Bausteine 65Grundsätzliche Handhabung der Bausteine 65– FileOpen 65– FileClose 66– FileRead 66– FileWrite 67– FileDelete 67– FileRename 68– FileSetPos 68– FileGetSize 69Fehlercodes 69

9 Azyklische Datenzugriffsbausteine für PROFIBUS-DP: xSysNetDPMV1.lib 71

Beschreibung der Bausteine 71Grundsätzliche Handhabung der Bausteine 71– XDPMV1_READ, XDPMV1_WRITE 71– Funktionsbausteine zuordnen (Device-Nummer) 72

10 Kommunikationsbaustein für Suconet-K-Slaves: SuconetK.lib 73Kommunikationsbaustein 73– SUCONET K_SLAVE

Kommunikation XC100/200 – Suconet-K-Slave 73

11 Datenzugriffsbausteine für Suconet K: SuconetK_Master.lib 75Generelles 75Beschreibung der Bausteine 75– SuconetK_Master 76– Operandenbedeutung 76– SuconetK_MSlaveData 77– SuconetK_MDX2Data für EM4-201-DX2 78Konfiguration des Suconet-K-Stranges 78Inbetriebnahme und Betrieb des Suconet K-Stranges 79– Der Funktionsbaustein SuconetK_Master 79– Diagnose im Betrieb 80– Funktionsbaustein SuconetK_MSlaveData 80– Funktionsbaustein SuconetK_MDX2Data 80Type-Definitionen der Bibliothek 81– Konfiguration eines Suconet-Teilnehmers 81– Input : Mögliche Slave-Typen 81– Input : Mögliche LE-Typen (nur für EM4_201_DX2) 81– Output : Infos zu den Adressräumen der konfigurierten

Slaves 81– Output : Statusbytes bei Diag (SuconetK_Master) 81

Inhalt 02/05 AWB2786-1456D

4

12 Diagnosebausteine: XSysDiagLib.lib 83Diagnose-Übersicht 83Moduldiagnose durchführen 84Modulspezifische Diagnosedaten von XI/ON-Modulen 84Diagnosedaten von Slaves am DP-Strang abfragen 85– Abfrage der Statusbyte aller Slaves 85– Abfrage der slavespezifischen Diagnosedaten 86Diagnosedaten des DP-S-Moduls 88Kompatibilität 88– Versionsabfrage 88Diagnosebausteine 89– „xDIAG_SystemDiag“ 89– xDIAG_ModuleDiag 90Diagnosebeispiel 91

13 Transparent-Modus-Funktionen: xSysCom200/SysLibCom/XC100_SysLibCom/XN-PLC-SysLibCom.lib 95

Generelles 95– Funktion „(x)SysComClose“ 96– Funktion „(x)SysComOpen“ 96– Funktion „(x)SysComRead“ 97– Funktion „xSysComReadControl“ 98– Funktion „(x)SysComSetSettings“ 99– Funktion „(x)SysComWrite“ 100– Funktion „(x)SysComWriteControl“ 101– Automatisches Schließen der Schnittstelle 101

Stichwortverzeichnis 105

02/05 AWB2786-1456D

5

Zu diesem Handbuch

Änderungsprotokoll Bibliotheksübersicht

Die hier beschriebenenFunktionsbausteine sind in Bibliotheken der Programmiersoftware XSoft entsprechend ihrer Aufgabe zusam-mengefasst. Es werden folgende Bibliotheken zur Verfügung gestellt:

Tabelle 1: Bibliotheksübersicht

Die Beschreibung der Schnittstellen zur Parameterübergabe erfolgt anhand der Prototypen der einzelnen Funktionsbausteine. Ein Prototyp gibt eine Übersicht über die Ein- und Ausgänge eines Funktionsbausteins an. In der AWL-Darstellung ist der Prototyp der Deklarationsteil des Funktionsbausteins mit den darin enthal-tenen Deklarationsblöcken. In der Beschreibung der Funktions-bausteine wird zur besseren Übersicht die grafische Prototyp-darstellung verwendet. Der Funktionsbaustein ist als rechteckiges Schaltzeichen mit den Eingängen auf der linken und den Ausgängen auf der rechten Seite abgebildet.

Innerhalb des Schaltzeichens ist in der Mitte der Name des Funktionsbausteins angegeben. Außerhalb des Schaltzeichens sind die Datentypen der Ein- und Ausgänge angegeben.

Das Symbol „>“ vor einem Eingangsoperanden weist darauf hin, dass der Eingang eine steigende Flanke zur Ausführung der Funktion erwartet.

Redaktions-datum

Kapitel Stichwort neu

04/03 Kapitel 8 „Datenzugriffsbausteine für Dateien: XC100_File.lib“

x

04/04 Kapitel 6 „Zähler-Bausteine: Counter_Analog.lib (für XIOC-2CNT-2AO-NC)“

x

07/04 Kapitel 9 „Azyklische Datenzugriffs-bausteine für PROFIBUS-DP: xSysNetDPMV1.lib“

x

09/04 Kapitel 10 „Kommunikationsbaustein für Suconet-K-Slaves: Suco-netK.lib“

x

02/05 Kapitel 2 „Date and Time-Bausteine der S40: XS40_MoellerFB_RTC.lib“

x

Seite 12 „CounterFunctionBlocks“ x

Seite 18 „RegisterFunctionBlocks“ x

Kapitel 11 „Datenzugriffsbausteine für Suconet K: SuconetK_Master.lib“

x

Kapitel 12 „Diagnosebausteine: XSys-DiagLib.lib“

x

Kapitel 13 „Transparent-Modus-Funkti-onen: xSysCom200/SysLibCom/XC100_SysLibCom/XN-PLC-SysLibCom.lib“

Bibliotheksname Art der Funktionsbausteine

XS40_MoellerFB.lib Standard-Bausteine der S40-Software

XS40_MoellerFB_RTC.lib Uhr-Bausteine der S40

RTCLib.lib Uhr-Bausteine

Visu.lib Visualisierungsbausteine

Counter.lib Zähler-Bausteine für Counter-Module

Counter_Analog.lib Zählerbausteine für XIOC-2CNT-2AO-NC

CANopen_Utilities.lib Übertragungsbaustein

Standard.lib IEC-Funktionsbausteine und Funktionen1)

XC100_File.lib Datenzugriffsbausteine

xSysNetDPVM1.lib Azyklische Datenzugriffsbausteine für PROFIBUS-DP

SuconetK.lib Kommunikationsbaustein für Suconet-K-Slaves

1) Sie sind im Handbuch „Xsoft“ (AWB2700-1437D) beschrieben.

Zu diesem Handbuch 02/05 AWB2786-1456D

6

Weitere Handbücher

Die Benutzeroberfläche der Programmiersoftware „XSoft“ ist im Handbuch mit der Nummer AWB2700-1437D beschrieben. Zu den Anwendungsgebieten „Regelungstechnik“ und „Motion Control“ gibt es separate Toolboxen. Die darin enthaltenen Funktions-bausteine sind in den Handbüchern mit den Nummern AWB2700-1451D (Regelunstechnik-Toolbox) und AWB2700-1454D (Motion-Control-Toolbox) beschrieben. Diese Handbücher gibt es online als PDF-Datei unter „www.moeller.net l support“. Geben Sie hier die Handbuch-Nummer als Suchbegriff ein.

Symbole

In diesem Handbuch werden Symbole eingesetzt, die folgende Bedeutung haben:

X zeigt Handlungsanweisungen an

Für eine gute Übersichtlichkeit finden Sie auf den linken Seiten im Kopf die Kapitelüberschrift und auf den rechten Seiten den aktuellen Abschnitt. Ausnahmen sind Kapitelanfangsseiten und leere Seiten am Kapitelende.

h macht Sie aufmerksam auf interessante Tipps und Zusatzinformationen

h Achtung!warnt vor leichten Sachschäden.

i Vorsicht!warnt vor schweren Sachschäden und leichten Verletzungen.

j Warnung!warnt vor schweren Sachschäden und schweren Verletzungen oder Tod.

02/05 AWB2786-1456D

7

1 Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

Die Bibliothek enthält folgende Bausteine:

• Communication– MI4netDP16– MI4netDP32– MV4netDP38– MV4netDP70

• Convert– DataScale– IEEE_To_Real– Real_To_IEEE

• CounterFunctionBlocks– S40_16BitCounter

S40_32BitCounterVor-/Rückwärtszähler

• DateAndTime– DATConcatX– DateConcat– DateSplit– DATSplitX– TimeConcatX– TimeSplitX– TODconcat– TODsplit

• RegisterFunctionBlocks– FifoBx– FifoWx– LifoBx– LifoWx– SR_x– SRB_x– SRW_x

• Timer– MS_TimeFalling– MS_TimeRising– S_TimeFalling– S_TimeRising– TimeGenerator– TimePulse

Sucosoft S40-Kompatibilität

Die hier beschriebenen Funktionsbausteine unterscheiden sich von den entsprechenden Funktionsbausteinen der Sucosoft S40 wie folgt:

Bausteine aus dem Bereich „Communication“Bausteine aus dem Bereich „Communication“ (MI4-/MV4-Treiber für die Ankopplung an PROFIBUS-DP) sind in der Funktion iden-tisch mit dem S40-Hersteller-Funktionsbaustein „MI4netK“.

Geändert haben sich:

• die Namen der Parameter– b_ar_IB statt RDB_Start– b_ar_QB statt SDB_Start und – b_Status anstatt Status

• die Fixierung der Arrays vom Typ VAR_IN_OUT auf feste Längen. Die einzustellende Länge ist bereits im Bausteinnamen angegeben (z. B. MI4netDP32 -> ARRAY[0..31]) und ist abhängig von dem in der Steuerungskonfiguration ausge-wählten Ein-/Ausgangsmodul.

Bausteine aus dem Bereich „Timer“Die Bausteine aus dem Bereich „Timer“ sind identisch mit den S40-Funktionsbausteinen.

Bausteine aus dem Bereich „DateAndTime“Die Bausteine aus dem Bereich „DateAndTime“ mit einem „X“ am Ende des Namens unterscheiden sich von den entsprechenden S40-Funktionsbausteinen wie folgt:

Die übrigen Bausteine aus dem Bereich „Date and Time“sind identisch mit den entsprechenden S40-Funktionsbausteinen.

DATconcatX Kein Eingang „MilliSecond“

DATsplitX Kein Ausgang „MilliSecond“

TimeConcatX Kein Eingang „Sign“

Zeitbereich maximal bis T#49d17h2m47s295ms

Zusätzlicher Ausgang „OverflowCounter“ -> zeigt die Anzahl der Überläufe über den maximalen Zeitbereich an.

TimeSplitX Kein Ausgang „Sign“

Zeitbereich maximal bis T#49d17h2m47s295ms;bei Bereichsüberschreitung wird der Datentyp TIME ohne Fehlermeldung auf den Restwert gewandelt.

Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

02/05 AWB2786-1456D

8

Communication

MI4netDP16Kommunikationsbaustein für MI4 (16-Byte-PROFIBUS-DP-Datenkanal)

Operandenbedeutung

Beschreibung„MI4netDP16“ ist ein Kommunikaitionsbaustein zur PROFIBUS-DP-Kopplung der Visualisierungsgeräte MI4 an eine XC-Steue-rung.

Der Funktionsbaustein kopiert die über den 16-Byte-PROFIBUS-DP-Datenkanal transportierten Daten auf die physikalischen Merkeradressen %M.. , die Sie im im MI4 konfiguriert haben.

„b_Status“ gibt Informationen und Fehlermeldungen zur Kommu-nikation an:

MI4netDP32Kommunikationsbaustein für MI4(32-Byte-PROFIBUS-DP-Datenkanal)

Operandenbedeutung

Beschreibung„MI4netDP32“ ist ein Kommunikaitionsbaustein zur PROFIBUS-DP-Kopplung der Visualisierungsgeräte MI4 an eine XC-Steue-rung.

Der Funktionsbaustein kopiert die über den 32-Byte-PROFIBUS-DP-Datenkanal transportierten Daten auf die physikalischen Merkeradressen %M.. , die Sie im im MI4 konfiguriert haben.

„b_Status“ gibt Informationen und Fehlermeldungen zur Kommu-nikation an:

Prototyp des Funktionsbausteins

b_ar_IB PROFIBUS-DP-Datenübergabeschnittstelle der Eingangs-Daten (Input), z. B. mit Startadresse 0: ARRAY [0..15] OF BYTE AT %IB0

b_ar_QB PROFIBUS-DP-Datenübergabeschnittstelle der Ausgangs-Daten (Output), z. B. mit Startadresse 0: ARRAY [0..15] OF BYTE AT %QB0

b_Status Kommunikationsstatus MI4

h Wählen Sie in der Steuerungskonfiguration das 16-Byte-Ein-/Ausgabemodul des MI4 – PROFIBUS-DP-Schnittstellenmoduls ZB4-504-IF1 oder ZB4-504-IF2 aus!

01h: XC sendet Datenpaket an MI4

02h: XC empfängt Datenpaket von MI4

04h: Kein Datenrequest

80h: MI4 sendet ungültigen Operationscode/Kommunikations-fehler

81h: Merkerbereichsüberschreitung/Telegrammlängenfehler beim Lesen der Merker aus der XC

82h: Merkerbereichsüberschreitung/Telegrammlängenfehler beim Schreiben der Merker in der XC

MI4netDP16

b_ar_IBARRAY [0..15] OF BYTE

b_ar_QBARRAY [0..15] OF BYTE

b_Status BYTE

Prototyp des Funktionsbausteins

b_ar_IB PROFIBUS-DP-Datenübergabeschnittstelle der Eingangs-Daten (Input), z. B. mit Startadresse 0: ARRAY [0..31] OF BYTE AT %IB0

b_ar_QB PROFIBUS-DP-Datenübergabeschnittstelle der Ausgangs-Daten (Output), z. B. mit Startadresse 0: ARRAY [0..31] OF BYTE AT %QB0

b_Status Kommunikationsstatus MI4

h Wählen Sie in der Steuerungskonfiguration das 32-Byte-Ein-/Ausgabemodul des MI4 – PROFIBUS-DP-Schnittstellenmoduls ZB4-504-IF1 oder ZB4-504-IF2 aus!

01h: XC sendet Datenpaket an MI4

02h: XC empfängt Datenpaket von MI4

04h: Kein Datenrequest

80h: MI4 sendet ungültigen Operationscode/Kommunikations-fehler

81h: Merkerbereichsüberschreitung/Telegrammlängenfehler beim Lesen der Merker aus der XC

82h: Merkerbereichsüberschreitung/Telegrammlängenfehler beim Schreiben der Merker in der XC

MI4netDP32

b_ar_IBARRAY [0..31] OF BYTE

b_ar_QBARRAY [0..31] OF BYTE

b_Status BYTE

02/05 AWB2786-1456D Communication

9

MV4netDP38Kommunikationsbaustein für MV4(38-Byte-PROFIBUS-DP-Datenkanal)

Operandenbedeutung

Beschreibung„MV4netDP38“ ist ein Kommunikaitionsbaustein zur PROFIBUS-DP-Kopplung der Visualisierungsgeräte MV4 an eine XC-Steue-rung.

Der Funktionsbaustein kopiert die über den 38-Byte-PROFIBUS-DP-Datenkanal transportierten Daten auf die physikalischen Merkeradressen %M.. , die Sie im im MV4 konfiguriert haben.

„b_Status“ gibt Informationen und Fehlermeldungen zur Kommu-nikation an:

MV4netDP70Kommunikationsbaustein für MV4(70-Byte-PROFIBUS-DP-Datenkanal)

Operandenbedeutung

Beschreibung„MV4netDP70“ ist ein Kommunikaitionsbaustein zur PROFIBUS-DP-Kopplung der Visualisierungsgeräte MV4 an eine XC-Steue-rung.

Der Funktionsbaustein kopiert die über den 70-Byte-PROFIBUS-DP-Datenkanal transportierten Daten auf die physikalischen Merkeradressen %M.. , die Sie im im MV4 konfiguriert haben.

„b_Status“ gibt Informationen und Fehlermeldungen zur Kommu-nikation an:

Prototyp des Funktionsbausteins

b_ar_IB PROFIBUS-DP-Datenübergabeschnittstelle der Eingangs-Daten (Input), z. B. mit Startadresse 0: ARRAY [0..37] OF BYTE AT %IB0

b_ar_QB PROFIBUS-DP-Datenübergabeschnittstelle der Ausgangs-Daten (Output), z. B. mit Startadresse 0: ARRAY [0..37] OF BYTE AT %QB0

b_Status Kommunikationsstatus

h Wählen Sie in der Steuerungskonfiguration das 38-Byte-Ein-/Ausgabemodul des MV4 – PROFIBUS-DP-Schnittstellenmoduls ZB4-604-IF1 aus!

01h: XC sendet Datenpaket an MV4

02h: XC empfängt Datenpaket von MV4

04h: Kein Datenrequest

80h: MV4 sendet ungültigen Operationscode/Kommunikations-fehler

81h: Merkerbereichsüberschreitung/Telegrammlängenfehler beim Lesen der Merker aus der XC

82h: Merkerbereichsüberschreitung/Telegrammlängenfehler beim Schreiben der Merker in der XC

MV4netDP38

b_ar_IBARRAY [0..37] OF BYTE

b_ar_QBARRAY [0..37] OF BYTE

b_Status BYTE

Prototyp des Funktionsbausteins

b_ar_IB PROFIBUS-DP-Datenübergabeschnittstelle der Eingangs-Daten (Input), z. B. mit Startadresse 0: ARRAY [0..69] OF BYTE AT %IB0

b_ar_QB PROFIBUS-DP-Datenübergabeschnittstelle der Ausgangs-Daten (Output), z. B. mit Startadresse 0: ARRAY [0..69] OF BYTE AT %QB0

b_Status Kommunikationsstatus

h Wählen Sie in der Steuerungskonfiguration das 70-Byte-Ein-/Ausgabemodul des MV4 – PROFIBUS-DP-Schnittstellenmoduls ZB4-604-IF1 aus!

01h: XC sendet Datenpaket an MV4

02h: XC empfängt Datenpaket von MV4

04h: Kein Datenrequest

80h: MV4 sendet ungültigen Operationscode/Kommunikations-fehler

81h: Merkerbereichsüberschreitung/Telegrammlängenfehler beim Lesen der Merker aus der XC

82h: Merkerbereichsüberschreitung/Telegrammlängenfehler beim Schreiben der Merker in der XC

MV4netDP70

b_ar_IBARRAY [0..69] OF BYTE

b_ar_QBARRAY [0..69] OF BYTE

b_Status BYTE

Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

02/05 AWB2786-1456D

10

Convert

DataScaleDaten skalieren

Operandenbedeutung

BeschreibungMit den Werten IRE (größter Eingangswert) und IRB (kleinster Eingangswert) wird ein Eingangsbereich definiert, in dem der zu verarbeitende Wert (IV) variieren kann. Diesem Eingangsbereich kann ein „beliebiger“ Ausgangsbereich (ORE und ORB) zugeordnet werden. Der Eingangswert wird entspechend dem Verhältnis „Eingangs-/Ausgangs-Bereich“ umgewandelt. Inner-halb dieses Ausgangsbereichs müssen 2 Grenzwerte (OLL und OLH) festgelegt werden. Über- bzw. unterschreitet der gewandelte Wert einen Grenzwert, erfolgt eine Meldung.

Mit einem „1“-Signal am Eingang „Set“ werden die vom Anwender parametrierten Bereichs-Werte überprüft. Falsche Werte werden am Ausgangsbyte „Error“ gemeldet. Der am Eingang „InputValue“ anstehende Wert wird gewandelt und am Ausgang „OutputValue“ bereitgestellt.

Werden die Grenzen „IRB“ oder „IRE“ überschritten, so wird der Ausgang „OutputValue“ auf den jeweiligen Grenzwert gesetzt und am Ausgang „Status“ die Fehlerbits gesetzt.

Im fehlerfreien Zustand wird, solange das „1“-Signal am Eingang „Set“ ansteht, die Wandlung fortgesetzt.

Änderungen an den Bereichswerten werden erst übernommen, nachdem der „Set“-Eingang auf „0“ und wieder auf „1“-Signal gesetzt wird.

Liegt am „Set“-Eingang ein „0“-Signal an, sind die Ausgänge „OutputValue“ = ORB, „Error“ = 0 und „Status“ = 0.

Die Beseitigung der Fehler führt zu einem Rücksetzen des Bytes auf 0.

Prototyp des Funktionsbausteins

Set Aktivierung des Bausteins

InputValue Eingangswert (IV), der innerhalb des Eingangsbereich variieren kann; IRB ≤ IV ≤ IRE

InputRangeBegin Unterer Eingangsbereich (IRB) IRB < IRE

InputRangeEnd Oberer Eingangsbereich (IRE)

OutputRangeBegin Unterer Ausgangsbereich (ORB) ORB < ORE

OutputRangeEnd Oberer Ausgangsbereich (ORE)

OutputLimitLow Unterer Grenzwert (OLL) OLL < OLH ≤ ORE und OLL ≥ ORB

OutputLimitHigh Oberer Grenzwert (OLH) OLH > OLL ≥ ORB und OLH ≤ ORE

OutputValue Ausgangswert

Status Meldungen (Bereichsüberschreitungen)

Error Fehlermeldungen (Parameter)

DataScale

BOOL Set OutputValue INTINT InputValue Status USINTINT InputRangeBegin Error USINTINT InputRangeEndINT OutputRangeBeginINT OutputRangeEndINT OutputLimitLowINT OutputLimitHigh

Abbildung 1: Definition des Ein-/Ausgangsbereiches

Error (Wert) Fehlermeldungen (Parameter)

0 kein Fehler

1 IRB f IRE

2 ORB f ORE

3 OLL > OLH, OLL < ORB, OLL > ORE, OLH < ORB, OLH > ORE

Status (Wert) Meldungen (Bereichsüberschreitungen)

0 kein Fehler

1 OV < OLL

2 OV > OLH

3 IV < IRB

4 IV > IRE

02/05 AWB2786-1456D Convert

1

1

IEEE_To_RealZahlen konvertieren: IEEE-754-Standard-Format in den Datentyp REAL

Operandenbedeutung

BeschreibungDer Baustein „IEEE_To_Real“ wandelt eine Floatzahl des Formates IEEE-754-Single Precision in eine Zahl des Datentyps REAL. Die Floatzahl umfasst in ihrer Darstellung vier Byte (32 Bit). Bei dieser Wandlung wird nur das Format, nicht aber der Wert geändert:

Das IEEE-Format wird vor allem zur Übertragung von Floatzahlen zu anderen Systemen genutzt (z. B. über PROFIBUS).

Real_To_IEEEZahlen konvertieren: Datentyp REAL in IEEE-754-Standard-Format

Operandenbedeutung

BeschreibungDer Baustein „Real_To_IEEE“ wandelt eine Zahl des Datentyps REAL in eine Floatzahl des Formates IEEE-754-Single Precision. Die Floatzahl umfasst in ihrer Darstellung vier Byte (32 Bit). Bei dieser Wandlung wird nur das Format, nicht aber der Wert geändert:

Das IEEE-Format wird vor allem zur Übertragung von Floatzahlen zu anderen Systemen genutzt (z. B. über PROFIBUS).

Prototyp des Funktionsbausteins

EXPO_In Zu wandelnde IEEE-Floatzahl: Exponent (inkl. Vorzeichen)

Mant_2_In Zu wandelnde IEEE-Floatzahl: Mantisse Byte 2 (inkl. 1 Bit Exponent)

Mant_1_In Zu wandelnde IEEE-Floatzahl: Mantisse Byte 1

Mant_0_In Zu wandelnde IEEE-Floatzahl: Mantisse Byte 0

Real_Out Gewandelte Real-Zahl

Error Fehler bei der Konvertierung:IEEE-Zahl nicht darstellbar

EXPO_In Mant_2_In Mant_1_In Mant_0_In

IEEE_To_Real

BYTE EXPO_In Real_Out REALBYTE Mant_2_In Error BOOLBYTE Mant_1_InBYTE Mant_0_In

Prototyp des Funktionsbausteins

Real_In Zu wandelnde Real-Zahl

EXPO_Out IEEE-Floatzahl: Exponent (inkl. Vorzeichen)

Mant_2_Out IEEE-Floatzahl: Mantisse Byte 2 (inkl. 1 Bit Exponent)

Mant_1_Out IEEE-Floatzahl: Mantisse Byte 1

Mant_0_Out IEEE-Floatzahl: Mantisse Byte 0

EXPO_Out Mant_2_Out Mant_1_Out Mant_0_Out

Real_To_IEEE

REAL Real_In EXPO_Out BYTEMant_2_Out BYTEMant_1_Out BYTEMant_0_Out BYTE

Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

02/05 AWB2786-1456D

12

CounterFunctionBlocks

S40_16BitCounterS40_32BitCounterVor-/Rückwärtszähler

Operandenbedeutung

BeschreibungDer Funktionsbaustein dient zum Vorwärts- und Rückwärtszählen. Jede steigende Flanke am Eingangsoperanden „Forward“ inkre-mentiert den Zähler, d. h. erhöht seinen Wert um „1“. Eine stei-gende Flanke von „Backward“ dekrementiert den Zähler, d. h. verringert seinen Wert um „1“. Der aktuelle Zählerwert wird vom Operanden „OutputValue“ angezeigt. Mit steigender Flanke von „Set“ wird der Wert von „InputValue“ in den Zähler über-nommen. Der Zustand „1“ von „ReSet“ löscht den Zähler. Während der anstehenden „1“ sind die restlichen Zählfunktionen gesperrt.

Der Zählwert liegt im Bereich von 0 bis 65535 (16 Bit) / 4294967295 (32 Bit). Erreicht der Zähler den Wert „65535“ / „4294967295“, schaltet er beim nächsten Aufwärtszählimpuls auf „0“. Wird beim Abwärtszählen der Wert „0“ erreicht, schaltet der Zähler beim nächsten Impuls auf den Wert „65535“ / „4294967295“. Ein Übertrag wird in beiden Fällen nicht gebildet.

Wird der Zähler als nicht remanent instanziert, erhält er beim Initi-alisieren den Wert „0“; der Ausgangsoperand „Zero“ zeigt dabei den Wert „1“ an. Ein als remanent instanzierter Zähler behält seinen ursprünglichen Wert.

Prototyp des Funktionsbausteins

Prototyp des Funktionsbausteins

S40_16BITCOUNTER

BOOL Forward Zero BOOLBOOL Backward OutputValue UINTBOOL SetBOOL ReSetUINT InputValue

S40_32BITCOUNTER

BOOL Forward Zero BOOLBOOL Backward OutputValue UDINTBOOL SetBOOL ReSet

UDINT InputValue

Forward Vorwärtszählimpuls, steigende Flanke

Backward Rückwärtszählimpuls, steigende Flanke

Set Setzbedingung, steigende Flanke

ReSet Rücksetzbedingung

InputValue Setzwert

Zero Meldung: Zählerstand = 0

OutputValue Zählerstand

02/05 AWB2786-1456D Date and Time

3

1

Date and Time

DATconcatXDatum und Uhrzeit erzeugen

Operandenbedeutung

BeschreibungDie als Eingangsoperanden vom Datentyp UINT vorgegebenen Werte werden zu einem Wert für Datum und Uhrzeit im Ausgangs-operanden „OutputDAT“ zusammengefügt.

Der Funktionsbaustein rechnet die einzelnen Werte der Eingangs-operanden in die entsprechenden Anteile für Datum und Uhrzeit um. Die Eingangsoperanden dürfen die für ein Datum und eine Uhrzeit spezifischen Wertebereiche nicht überschreiten. Die Jahreszahl muss im Wertebereich 1993 bis 2092 liegen. Wird ein vorgegebener Wertebereich überschritten, so erscheint der Zustand „1“ am Ausgang „Error“ als Fehlermeldung.

Beispiel „Datum und Uhrzeit erzeugen“

Prototyp des Funktionsbausteins

Second Sekundenanteil von Datum und Uhrzeit

Minute Minutenanteil von Datum und Uhrzeit

Hour Stundenanteil von Datum und Uhrzeit

Day Tagesanteil von Datum und Uhrzeit

Month Monatsanteil von Datum und Uhrzeit

Year Jahresanteil von Datum und Uhrzeit

OutputDAT Resultierender Wert für Datum und Uhrzeit

Error Fehlermeldung

DatConcatX

UINT Second OutputDAT DATEUINT Minute Error BOOLUINT HourUINT DayUINT MonthUINT Year

PROGRAM dtgen

VAR

DatumsZeitVerkettung : DATconcatX;

Sekunde : UINT := 30;

Minute : UINT := 10;

Stunde : UINT := 3;

Tag : UINT := 12;

Monat : UINT := 12;

Jahr : UINT := 1997;

Fehler : BOOL;

Datum_1 : DATE_AND_TIME;

END_VAR

CAL DatumsZeitVerkettung (Second := Sekunde,

Minute := Minute,

Hour := Stunde,

Day := Tag,

Month := Monat,

Year := Jahr,

OutputDAT=>Datum_1,

Error=>Fehler)

END_PROGRAM

Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

02/05 AWB2786-1456D

14

DateConcatDatum erzeugen

Operandenbedeutung

BeschreibungDie als Eingangsoperanden vom Datentyp UINT vorgegebenen Werte werden zu einem Datumswert im Ausgangsoperanden „OutputDate“ zusammengefügt. Die Eingangsoperanden dürfen die für ein Datum spezifischen Wertebereiche nicht überschreiten, die Jahreszahl muss im Wertebereich 1993 bis 2092 liegen. Werden die vorgegebenen Wertebereiche überschritten, erscheint der Zustand „1“ am Ausgang „Error“ als Fehlermeldung.

Beispiel „Datum erzeugen“

DateSplitDatentyp DATE spalten

Operandenbedeutung

BeschreibungDer über den Eingangsoperanden „InputDate“ vorgegebene Datumswert wird in seine Bestandteile zerlegt, die jeweils als Datentyp UINT ausgegeben werden.

Die Jahreszahl im Datum muss im Bereich 1993 bis 2092 liegen. Wird eine nicht zulässige Jahreszahl eingegeben, zeigt der Ausgangsoperand „Error“ den Zustand „1“ als Fehlermeldung an.

Beispiel „Datumswert zerlegen“

Prototyp des Funktionsbausteins

Day Tagesanteil eines Datums

Month Monatsanteil eines Datums

Year Jahresanteil eines Datums

OutputDate Resultierender Wert für das Datum

Error Fehlermeldung

PROGRAM datumgen

VAR

Datumsverkettung : DateConcat;

Datum : Date;

Tag : UINT := 24;

Monat : UINT := 12;

Jahr : UINT := 1996;

Fehler : BOOL;

END_VAR

CAL DatumsVerkettung (Day := Tag,

Month := Monat,

Year := Jahr,

OutputDate=>Datum,

Error=>Fehler)

END_PROGRAM

DateConcat

UINT Day OutputDate DATEUINT Month Error BOOLUINT Year

Prototyp des Funktionsbausteins

InputDate Datum

Day Tagesanteil vom Datum

Month Monatsanteil vom Datum

Year Jahresanteil vom Datum

Error Fehlermeldung

PROGRAM datumtln

VAR

DatumsElemente : DateSplit;

Datum : Date := D#1999-12-24;

Tag : UINT;

Monat : UINT;

Jahr : UINT;

Fehler : BOOL;

END_VAR

CAL DatumsElemente (InputDate := Datum,

Day=>Tag,

Month=>Monat,

Year=>Jahr,

Error=>Fehler)

END_PROGRAM

DateSplit

DATE InputDate Day UINTMonth UNT

Year UINTError BOOL

02/05 AWB2786-1456D Date and Time

5

1

DATSplitXDatentyp DATE_AND_TIME (DT) spalten

Operandenbedeutung

BeschreibungDer über den Eingangsoperanden „InputDAT“ vorgegebene Wert von Datum und Uhrzeit wird in seine Bestandteile zerlegt, die jeweils als Datentyp UINT ausgegeben werden.

Die Jahreszahl muss im Bereich 1993 bis 2092 liegen. Wird eine nicht zulässige Jahreszahl eingegeben, zeigt der Ausgangs-operand „Error“ den Zustand „1“ als Fehlermeldung an.

Beispiel „Datums- und Zeitwert zerlegen“

Prototyp des Funktionsbausteins

InputDAT Datum und Uhrzeit

Second Sekundenanteil von Datum und Uhrzeit

Minute Minutenanteil von Datum und Uhrzeit

Hour Stundenanteil von Datum und Uhrzeit

Weekday Wochentag (0 = Sonntag)

Day Tagesanteil von Datum und Uhrzeit

Month Monatsanteil von Datum und Uhrzeit

Year Jahresanteil von Datum und Uhrzeit

Error Fehlermeldung

DATSplitX

DT InputDAT Second UINTMinute UINT

Hour UINTWeekday UINT

Day UNTMonth UNT

Year UINTError BOOL

PROGRAM dtspalt

VAR

DT_Elemente : DATsplitX;

Datum_1 : DT := DT#1999-11-20-22:13:12;

Sekunde : UINT;

Minute : UINT;

Stunde : UINT;

Wochentag : UINT;

Tag : UINT;

Monat : UINT;

Jahr : UINT;

Fehler : BOOL;

END_VAR

CAL DT_Elemente (InputDAT := Datum_1,

Second=>Sekunde,

Minute=>Minute,

Hour=>Stunde,

Weekday=>Wochentag,

Day=>Tag,

Month=>Monat,

Year=>Jahr,

Error=>Fehler)

END_PROGRAM

Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

02/05 AWB2786-1456D

16

TimeConcatXZeitdauer erzeugen

Operandenbedeutung

BeschreibungDie als Eingangsoperanden vorgegebenen einzelnen Zeitanteile werden zu einem Zeitdauerwert vom Datentyp TIME im Ausgangs-operanden „OutputTime“ zusammengefügt.

Der Funktionsbaustein rechnet die einzelnen Werte in den entspre-chenden Anteil der Zeitdauer um und bildet bei Bedarf einen Über-trag. Die Eingangsvariablen dürfen alle für den Datentyp UINT zulässigen Werte annehmen, solange das Gesamtergebnis nicht größer als T#49d17h2m47s295ms (= 232 – 1) ist. Wird dieser Wert überschritten, erscheint der Zustand „1“ am Ausgang „Overflow“ als Überlaufsmeldung. Die Anzahl der Überläufe wird am Ausgang „OverflowCounter“ angezeigt.

Beispiel „Aus Zeitanteilen Zeitdauer erzeugen“

Prototyp des Funktionsbausteins

MilliSeconds Millisekundenanteil einer Zeitdauer

Seconds Sekundenanteil einer Zeitdauer

Minutes Minutenanteil einer Zeitdauer

Hours Stundenanteil einer Zeitdauer

Days Tagesanteil einer Zeitdauer

OutputTime Resultierender Wert für eine Zeitdauer

Overflow Überlaufanzeige

OverflowCounter Anzahl der Überläufe

TimeConcatX

UINT MilliSeconds OutputTime TimeUINT Seconds Overflow BOOLUINT Minutes OverflowCounter UINTUINT HoursUINT Days

PROGRAM zeit_gen

VAR

ZeitVerkettung : TimeConcatX;

Millisekunden : UINT;

Sekunden : UINT;

Minuten : UINT;

Stunden : UINT;

Tage : UINT;

ZeitStruktur : TIME;

Ueberlauf : BOOL;

Ueberlaufzaehler : UINT;

END_VAR

CAL ZeitVerkettung (MilliSeconds := Millisekunden,

Seconds := Sekunden,

Minutes := Minuten,

Hours := Stunden,

Days := Tage,

OutputTime=>ZeitStruktur,

Overflow=>Ueberlauf,

OverflowCounter=>Ueberlaufzaehler)

END_PROGRAM

02/05 AWB2786-1456D Date and Time

7

1

TimeSplitXVariablentyp TIME spalten

Operandenbedeutung

BeschreibungDer über den Eingangsoperanden „InputTime“ vorgegebene Zeitdauerwert wird in seine Zeitanteile zerlegt, die jeweils als Datentyp UINT ausgegeben werden.

Der Zeitbereich darf maximal T#49d17h2m47s295ms (= 232 – 1) betragen.

Beispiel „Zeitdauer in seine Zeitanteile zerlegen“

TODconcatUhrzeit erzeugen

Operandenbedeutung

BeschreibungDie als Eingangsoperanden vorgegebenen einzelnen Zeitanteile werden zu einem Uhrzeitwert im Ausgangsoperanden „OutputTOD“ zusammengefügt. Die Eingangsoperanden dürfen die für eine Uhrzeit spezifischen Wertebereiche nicht über-schreiten.

Wird der zulässige Bereich eines Eingangsoperanden über-schritten, erscheint der Zustand „1“ am Ausgang „Error“ als Fehlermeldung.

Beispiel „Aus Zeitanteilen eine Tageszeit erzeugen“

Prototyp des Funktionsbausteins

InputTime Zeitdauer, die in ihre Zeitanteile zerlegt wird

MilliSeconds Millisekundenanteil der Zeitdauer

Seconds Sekundenanteil der Zeitdauer

Minutes Minutenanteil der Zeitdauer

Hours Stundenanteil der Zeitdauer

Days Tagesanteil der Zeitdauer

h Achtung!Bei Bereichsüberschreitung wird der Datentyp TIME ohne Fehlermeldung auf den Restwert gewandelt.

PROGRAM zt_spalt

VAR

ZeitElemente : TimeSplitX;

Dauer : TIME := T#49d17h2m47s295ms;

Millisekunden : UINT;

Sekunden : UINT;

Minuten : UINT;

Stunden : UINT;

Tage : UINT;

END_VAR

CAL ZeitElemente (InputTime := Dauer,

MilliSeconds=>Millisekunden,

Seconds=>Sekunden,

Minutes=>Minuten,

Hours=>Stunden,

Days=>Tage)

END_PROGRAM

TimeSplitX

Time InputTime MilliSeconds UINTSeconds UINTMinutes UINT

Hours UINTDays UINT

Prototyp des Funktionsbausteins

MilliSecond Millisekundenanteil einer Uhrzeit

Second Sekundenanteil einer Uhrzeit

Minute Minutenanteil einer Uhrzeit

Hour Stundenanteil einer Uhrzeit

OutputTOD Resultierender Wert für die Uhrzeit

Error Fehlermeldung

PROGRAM uhrzeit2

VAR

TagesZeit : TODconcat;

Millisekunde : UINT;

Sekunde : UINT;

Minute : UINT;

Stunde : UINT;

TagesZeitStruktur : TIME_OF_DAY;

Fehler : BOOL;

END_VAR

CAL TagesZeit (MilliSecond := Millisekunde,

Second := Sekunde,

Minute := Minute,

Hour := Stunde,

OutputTOD=>TagesZeitStruktur,

Error=>Fehler)

END_PROGRAM

TODconcat

UINT MilliSecond OutputTOD TIME_OF_DAYUINT Seconds Error BOOLUINT MinuteUINT Hour

Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

02/05 AWB2786-1456D

18

TODSplitDatentyp TIME_OF_DAY spalten

Operandenbedeutung

BeschreibungDer über den Eingangsoperanden „InputTOD“ vorgegebene Zeitwert wird in seine Zeitanteile zerlegt, die jeweils als Datentyp UINT ausgegeben werden.

Beispiel „Tageszeit in Zeitanteile zerlegen“

RegisterFunctionBlocks

FifoBxFifoWxFIFO-Register (8/16 Bit)

Operandenbedeutung

BeschreibungDie Registerlänge gibt die Anzahl Registerfelder an.

Mit steigender Flanke des Operanden „FillPulse“ wird der Wert des Operanden „DataInput“ in das tiefste freie Registerfeld des Registers übernommen. Das Register kann mit jedem Impuls „Fill-Pulse“ gefüllt werden, bis alle Registerfelder belegt sind. Den Zustand „voll“ des Registers zeigt der Operand „Full“ mit dem Wert „1“ an.

Prototyp des Funktionsbausteins

InputTOD Uhrzeit

MilliSecond Millisekundenanteil der Uhrzeit

Second Sekundenanteil der Uhrzeit

Minute Minutenanteil der Uhrzeit

Hour Stundenanteil der Uhrzeit

PROGRAM uhrzeit1

VAR

Uhrzeit_spalten : TODsplit;

TagesZeit : TOD := TOD#12:13:12;

Millisekunden : UINT;

Sekunden : UINT;

Minuten : UINT;

Stunden : UINT;

END_VAR

CAL Uhrzeit_spalten (InputTOD := TagesZeit,

MilliSecond=>Millisekunden,

Second=>Sekunden,

Minute=>Minuten,

Hour=>Stunden)

END_PROGRAM

TODSplit

TIME_OF_DAY InputTOD MilliSecond UINTSecond UINTMinute UINT

Hour UINT

Prototyp des Funktionsbausteins

Prototyp des Funktionsbausteins

FillPulse Fülltakt

ReadOutPulse Entnahmetakt

ReSet Rücksetzen

DataInput Dateneingang

Number Of Elements Registerlänge (1...128)

Full Register voll

Empty Register leer

DataOutput Datenausgang

ElementsIncluded Elemente im Register

FIFOBX

BOOL FillPulse Full BOOLBOOL ReadOutPulse Empty BOOLBOOL ReSet DataOutput USINTUSINT DataInput ElementsIncluded UINTUINT NumberOfElements

FIFOWX

BOOL FillPulse Full BOOLBOOL ReadOutPulse Empty BOOLBOOL ReSet DataOutput UINTUINT DataInput ElementsIncluded UINTUINT NumberOfElements

02/05 AWB2786-1456D RegisterFunctionBlocks

9

1

Mit steigender Flanke des Operanden „ReadOutPulse“ wird das zuerst beschriebene – am tiefsten in der Warteschlange liegende – Registerfeld gelesen und dem Operanden „DataOutput“ über-geben. Jeder weitere Impuls von „ReadOutPulse“ bewirkt die

Übergabe weiterer in der Tiefe des Registers liegender Elemente an den Operanden „DataOutput“. Wird das letzte Registerfeld gelesen, zeigt der Zustand „1“ von „Empty“, daß das Register leer ist.

Der Zustand „1“ des Operanden „ReSet“ löscht das gesamte Register.

Abbildung 2: Inhalt der Warteschlange vor und nach einem Füllimpuls

ReadOutPulse FillPulse

________ ________

DataOutput Data Input

7 6 5 4 3 2 1 0

X 019 255 035 095 014 8 Bit

X 00197 02555 18367 00023 13657 16 Bit

ReadOutPulse FillPulse

________

DataOutput DataInput

7 6 5 4 3 2 1 0

X 019 255 035 095 014 8 Bit

X 00197 02555 18367 00023 13657 16 Bit

Abbildung 3: Inhalt der Warteschlange vor und nach einem Entnahmeimpuls

ReadOutPulse FillPulse

________ ________

DataOutput Data Input

7 6 5 4 3 2 1 0

X 019 255 035 095 014 X 8 Bit

X 00197 02555 18367 00023 13657 X 16 Bit

ReadOutPulse FillPulse

________

DataOutput DataInput

7 6 5 4 3 2 1 0

019 255 035 095 014 X 8 Bit

00197 02555 18367 00023 13657 X 16 Bit

Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

02/05 AWB2786-1456D

20

LifoBxLifoWxLIFO-Register (8/16 Bit)

Operandenbedeutung

BeschreibungDie Registerlänge gibt die Anzahl der Registerfelder an.

Mit steigender Flanke des Operanden „FillPulse“ wird der Wert des Operanden „DataInput“ in das tiefste freie Registerfeld des Stapelregisters übernommen. Das Stapelregister kann mit jedem Impuls „FillPulse“ gefüllt werden, bis alle Registerfelder belegt sind. Den Zustand „voll“ des Stapelregisters zeigt der Operand „Full“ mit dem Wert „1“ an.

Prototyp des Funktionsbausteins

Prototyp des Funktionsbausteins

FillPulse Fülltakt

ReadOutPulse Entnahmetakt

ReSet Rücksetzen

DataInput Dateneingang

Number Of Elements Registerlänge (1...128)

Full Register voll

Empty Register leer

DataOutput Datenausgang

ElementsIncluded Elemente im Register

LIFOBX

BOOL FillPulse Full BOOLBOOL ReadOutPulse Empty BOOLBOOL ReSet DataOutput USINTUSINT DataInput ElementsIncluded UINTUINT NumberOfElements

LIFOWX

BOOL FillPulse Full BOOLBOOL ReadOutPulse Empty BOOLBOOL ReSet DataOutput UINTUINT DataInput ElementsIncluded UINTUINT NumberOfElements

Abbildung 4: Inhalt des Stapelregisters vor und nach einem Füllim-puls

FillPulse

DataInput

DataInput

FillPulse

DataInput

DataInput

8 Bit 16 Bit 8 Bit 16 Bit

062 02384

7 7 7 7

6 6 6 6

5 5 5 5

4 4 4062

402384

3047

300034

3047

300034

2025

201283

2025

201283

1033

100346

1033

100346

0255

012764

0255

012764

02/05 AWB2786-1456D RegisterFunctionBlocks

1

2

Mit steigender Flanke des Operanden „ReadOutPulse“ wird das zuletzt beschriebene Registerfeld gelesen und dem Operanden „DataOutput“ übergeben. Jeder weitere Impuls von „ReadOut-Pulse“ bewirkt die Übergabe weiterer in der Tiefe des Registers liegender Elemente an den Operanden „DataOutput“. Wird das letzte Registerfeld gelesen, zeigt der Zustand „1“ von „Empty“, dass das Register leer ist.

Der Zustand „1“ des Operanden „ReSet“ löscht das gesamte Stapelregister.

SR_xSRB_xSRW_xSchieberegister

Abbildung 5: Inhalt des Stapelregisters vor und nach einem Entnah-meimpuls

ReadOutPulse

DataOutput

DataOutput

ReadOutPulse

DataOutput

DataOutput

8 Bit 16 Bit 8 Bit 16 Bit

062 02384

7 7 7 7

6 6 6 6

5 5 5 5

4062

402384

4 4

3047

300034

3047

300034

2025

201283

2025

201283

1033

100346

1033

100346

0255

012764

0255

012764

Prototyp des Funktionsbausteins

Prototyp des Funktionsbausteins

Prototyp des Funktionsbausteins

SR_X

BOOL ForwardPulse Output ARRAY[1..128] OF BOOLBOOL BackwardPulseBOOL ReSetBOOL ForwardDataBOOL BackwardDataUINT NumberOfElements

SRB_X

BOOL ForwardPulse Output ARRAY[1..128] OF USINTBOOL BackwardPulseBOOL ReSetUSINT ForwardDataUSINT BackwardDataUINT NumberOfElements

SRW_X

BOOL ForwardPulse Output ARRAY[1..128] OF UINTBOOL BackwardPulseBOOL ReSetUINT ForwardDataUINT BackwardDataUINT NumberOfElements

Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

02/05 AWB2786-1456D

22

Operandenbedeutung BeschreibungDie Registerlänge gibt die Anzahl der Ausgangsregisterfelder an.

Mit steigender Flanke des Operanden „ForwardPulse“ wird der Wert des Operanden „ForwardData“ in das erste Element „Output [1]“ übernommen. Dabei werden die ursprünglichen Inhalter um ein Element in Richtung höherer Elementnummern verschoben.

Mit steigender Flanke des Operanden „BackwardPulse“ wird der Wert des Operanden „BackwardData“ in das letzte Element über-nommen. Dabei werden die ursprünglichen Inhalte um ein Element in Richtung niedrigerer Elementnummern verschoben.

ForwardPulse Takteingang, vor

BackwardPulse Takteingang, zurück

ReSet Rücksetzen

ForwardData Dateneingang, vor

BackwardData Dateneingang, zurück

Number Of Elements Registerlänge (1...128)

Output Ausgang (ARRAY 1 ... 128)

Abbildung 6: Inhalt des Schieberegisters vor und nach einem Vorwärtsimpuls

BackwardPulse ForwardPulse

________ ________

Backward Data ForwardData

8 7 6 5 4 3 2 1

X 1 1 0 0 1 1 0 1 1 1 Bit

X 019 255 035 095 122 023 082 003 102 8 Bit

X 00197 02555 18367 00023 12987 00292 09688 00023 13657 16 Bit

BackwardPulse ForwardPulse

________

Schieberichtung

BackwardData ForwardData

8 7 6 5 4 3 2 1

X 1 0 0 1 1 0 1 1 1Bit

X 255 035 095 122 023 082 003 102 8 Bit

X 02555 18367 00023 12987 00292 09688 00023 13657 16 Bit

02/05 AWB2786-1456D RegisterFunctionBlocks

3

2

Der Zustand „1“ des Operanden „ReSet“ löscht das gesamte ARRAY.

Abbildung 7: Inhalt des Schieberegisters vor und nach einem Rückwärtsimpuls

BackwardPulse ForwardPulse

________ ________

Backward Data ForwardData

8 7 6 5 4 3 2 1

0 1 0 0 1 1 0 0 1 X 1 Bit

007 255 035 095 122 023 082 003 102 X 8 Bit

00984 02555 18367 00023 12987 00292 09688 00023 13657 X 16 Bit

BackwardPulse ForwardPulse

________

Schieberichtung

BackwardData ForwardData

8 7 6 5 4 3 2 1

0 1 0 0 1 1 0 0 X 1Bit

007 255 035 095 122 023 082 003 X 8 Bit

00984 02555 18367 00023 12987 00292 09688 00023 X 16 Bit

Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

02/05 AWB2786-1456D

24

Timer

MS_TimeFallingAusschaltverzögerungs-Zeitglied, Millisekunden

Operandenbedeutung

BeschreibungMit steigender Flanke am „Set“-Eingang wird der „PresetTime“-Wert als Verzögerungszeit „T“ in Millisekunden in das Zeitglied übernommen. Der Ausgang „OutputControl“ erhält den Wert „1“. Wenn der „Set“-Eingang wieder auf „0“ schaltet, wird die Zeit gestartet. Der Ausgang „OutputControl“ schaltet verzögert um die Zeitdauer „T“ aus, d. h. er erhält den Wert „0“ (1). Der Ausgang „ElapsedTime“ zeigt den aktuellen Zeitwert in Milli-sekunden an. Hält der Zustand „0“ am „Set“-Eingang kürzer als „T“, bleibt der Ausgang „Output-Control“ auf „1“.

Das Ablaufen der gestarteten Zeit kann durch den Zustand „1“ am Eingang „Hold“ unterbrochen werden. Die angehaltene Zeit läuft weiter, wenn der Eingang „Hold“ wieder auf „0“ wechselt. Die Ausschaltverzögerungszeit verlängert sich dann um die Dauer des „Hold“-Signals und beträgt somit „T+THALT“ (2).

Führt der Eingang „Hold“ den Zustand „1“ bei steigender Flanke von „Set“, wird die Übernahme des „PresetTime“-Wertes um die Dauer der „1“ am Eingang „Hold“ verzögert. Auch der Zustand „1“ erscheint verzögert am Ausgang „OutputControl“ (4).

Wechselt der Zustand am Eingang „Set“ von „1“ auf „0“, während am Eingang „Hold“ „1“ ansteht, wird die Zeit gestartet, wenn „Hold“ wieder den Zustand „0“ erhält. Die Ausschalt-verzögerungszeit verlängert sich um die Dauer des Hold-Signals und beträgt somit „T+THALT“ (3).

Schaltet der Eingang „Set“ auf Zustand „1“ und wieder auf Zustand „0“, während der Eingang „Hold“ „1“ führt, bleibt der Ausgang „OutputControl“ auf „0“.

Mit dem Zustand „1“ am Eingang „ReSet“ wird das Zeitglied rückgesetzt. Eine steigende Flanke am „Set“-Eingang ist erst als Start wirksam, wenn der „ReSet“-Zustand von „1“ auf „0“ wechselt (5).

Beispiel „Ausschaltverzögerung, 25 Millisekunden“

Prototyp des Funktionsbausteins

Set Startbedingung, steigende Flanke

ReSet Rücksetzbedingung

Hold Zeitunterbrechung

PresetTime Zeit-Sollwert in Millisekunden

OutputControl Steuerausgang

ElapsedTime Zeit-Istwert in Millisekunden

MS_TimeFalling

BOOL Set OutputControl BOOLBOOL ReSet ElapsedTime UINTBOOL HoldUINT PresetTime

Abbildung 8: Zeitdiagramm

PROGRAM zeit4

VAR

Timer4 : S_TimeFalling;

Start : BOOL;

Halt : BOOL;

Zeitwert4 : UINT := 25; (* Zeitwert4 = 25 Millisekunden *)

Ausgang4 : BOOL;

END_VAR

CAL Timer4 (Set := Start,

Hold := Halt,

PresetTime := Zeitwert4)

LD Timer4.OutputControl

ST Ausgang4

END_PROGRAM

02/05 AWB2786-1456D Timer

5

2

MS_TimeRisingEinschaltverzögerungs-Zeitglied, Millisekunden

Operandenbedeutung

BeschreibungMit steigender Flanke am „Set“-Eingang wird der „PresetTime“-Wert als Zeitwert „T“ in Millisekunden in das Zeitglied über-nommen und gestartet. Der Ausgang „OutputControl“ schaltet verzögert um diesen Zeitwert auf den Wert „1“ und hält den Zustand, bis der Eingang „Set“ auf „0“ zurückschaltet (1). Der Ausgang „ElapsedTime“ zeigt den aktuellen Zeitwert in Milli-sekunden an. Hält der Zustand „1“ am „Set“-Eingang kürzer als „T“, bleibt der Ausgang „Output-Control“ auf „0“.

Das Ablaufen der gestarteten Zeit kann durch den Zustand „1“ am Eingang „Hold“ unterbrochen werden. Die angehaltene Zeit läuft weiter, wenn der Eingang „Hold“ wieder auf „0“ wechselt. Die Verzögerungszeit verlängert sich dann um die Dauer des „Hold“-Signals und beträgt somit „T+THALT“ (2).

Führt der Eingang „Hold“ den Zustand „1“ während der steigenden Flanke von „Set“, wird der Startvorgang um die Dauer der „1“ am Eingang „Hold“ verzögert (4). Wechselt nach der abgelaufenen Zeit der Zustand am Eingang „Set“ von „1“ auf „0“, während am Eingang „Hold“ eine „1“ ansteht, schaltet „OutputControl“ auf „0“, wenn „Hold“ wieder den Zustand „0“ erhält (3).

Mit dem Zustand „1“ am Eingang „ReSet“ wird das Zeitglied rückgesetzt. Das Starten der Zeit ist in diesem Zustand nicht möglich. Eine steigende Flanke am „Set“-Eingang ist erst nach dem Wechsel des „ReSet“-Zustandes von „1“ auf „0“ als Start wirksam (5).

Beispiel „Einschaltverzögerung, 7 Millisekunden“

Prototyp des Funktionsbausteins

Set Startbedingung, steigende Flanke

ReSet Rücksetzbedingung

Hold Zeitunterbrechung

PresetTime Zeit-Sollwert in Millisekunden

OutputControl Steuerausgang

ElapsedTime Zeit-Istwert in Millisekunden

MS_TimeRising

BOOL Set OutputControl BOOLBOOL ReSet ElapsedTime UINTBOOL HoldUINT PresetTime

Abbildung 9: Zeitdiagramm

PROGRAM zeit3

VAR

Timer3 : MS_TimeRising;

Start : BOOL;

Halt : BOOL;

Reset : BOOL;

Zeitwert3: UINT := 7; (* Zeitwert3 = 7 Millisekunden *)

IstZeit3 : BOOL;

Ausgang3 : BOOL;

END_VAR

CAL Timer3(Set := Start,

ReSet := Reset,

Hold := Halt,

PresetTime := Zeitwert3)

LD Timer3.OutputControl

ST Ausgang3

LD Timer3.ElapsedTime

ST IstZeit3

END_PROGRAM

Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

02/05 AWB2786-1456D

26

S_TimeFallingAusschaltverzögerungs-Zeitglied, Sekunden

Operandenbedeutung

Beschreibung

Mit steigender Flanke am „Set“-Eingang wird der „PresetTime“-Wert als Verzögerungszeit „T“ in Sekunden in das Zeitglied über-nommen. Der Ausgang „OutputControl“ erhält den Wert „1“. Wenn der „Set“-Eingang wieder auf „0“ schaltet, wird die Zeit gestartet. Der Ausgang „OutputControl“ schaltet verzögert um die Zeitdauer „T“ aus, d. h. er erhält den Wert „0“ (1). Der Ausgang „ElapsedTime“ zeigt den aktuellen Zeitwert in Sekunden an. Hält der Zustand „0“ am „Set“-Eingang kürzer als „T“, bleibt der Ausgang „Output-Control“ auf „1“.

Das Ablaufen der gestarteten Zeit kann durch den Zustand „1“ am Eingang „Hold“ unterbrochen werden. Die angehaltene Zeit läuft weiter, wenn der Eingang „Hold“ wieder auf „0“ wechselt. Die Ausschaltverzögerungszeit verlängert sich dann um die Dauer des „Hold“-Signals und beträgt somit „T+THALT“ (2).

Führt der Eingang „Hold“ den Zustand „1“ während der stei-genden Flanke von „Set“, wird die Übernahme des „PresetTime“-Wertes um die Dauer der „1“ am Eingang „Hold“ verzögert. Auch der Zustand „1“ erscheint verzögert am Ausgang „Output-Control“ (4).

Wechselt der Zustand am Eingang „Set“ von „1“ auf „0“, während am Eingang „Hold“ eine „1“ ansteht, wird die Zeit gestartet, wenn „Hold“ wieder den Zustand „0“ erhält. Die Ausschaltverzögerungszeit verlängert sich um die Dauer des Hold-Signals und beträgt somit „T+THALT“ (3).

Mit dem Zustand „1“ am Eingang „ReSet“ wird das Zeitglied rückgesetzt. Eine steigende Flanke am „Set“-Eingang ist erst nach dem Wechsel des „ReSet“-Zustandes von „1“ auf „0“ als Start wirksam.

Beispiel „32 Sekunden Ausschaltverzögerung“

Prototyp des Funktionsbausteins

S_TimeFalling

BOOL Set OutputControl BOOLBOOL ReSet ElapsedTime UINTBOOL HoldUINT PresetTime

Set Startbedingung, steigende Flanke

ReSet Rücksetzbedingung

Hold Zeitunterbrechung

PresetTime Zeit-Sollwert in Sekunden

OutputControl Steuerausgang

ElapsedTime Zeit-Istwert in Sekunden

Abbildung 10: Zeitdiagramm

PROGRAM zeit2

VAR

Timer2 : S_TimeFalling;

Start : BOOL;

Halt : BOOL;

Zeitwert2 : UINT:= 32; (* Zeitwert2 = 32 Sekunden *)

Ausgang2 : BOOL;

IstZeit2 : UINT;

END_VAR

CAL Timer2 (Set := Start,

Hold := Halt,

PresetTime := Zeitwert2)

LD Timer2.OutputControl

ST Ausgang2

LD Timer2.ElapsedTime

ST IstZeit2

...

02/05 AWB2786-1456D Timer

7

2

S_TimeRisingEinschaltverzögerungs-Zeitglied, Sekunden

Operandenbedeutung

Beschreibung

Mit steigender Flanke am „Set“-Eingang wird der „PresetTime“-Wert als Verzögerungszeit „T“ in Sekunden in das Zeitglied über-nommen und gestartet. Der Ausgang „OutputControl“ schaltet verzögert um diesen Zeitwert auf den Wert „1“ und hält den Zustand, bis der Eingang „Set“ auf „0“ zurück schaltet (1). Der Ausgang „ElapsedTime“ zeigt den aktuellen Zeitwert in Sekunden an. Hält der Zustand „1“ am „Set“-Eingang kürzer als „T“, bleibt der Ausgang „Output-Control“ auf „0“.

Das Ablaufen der gestarteten Zeit kann durch den Zustand „1“ am Eingang „Hold“ unterbrochen werden. Die angehaltene Zeit läuft weiter, wenn der Eingang „Hold“ wieder auf „0“ wechselt. Die Einschalt-verzögerungszeit verlängert sich dann um die Dauer des „Hold“-Signals und beträgt somit „T+THALT“ (2).

Führt der Eingang „Hold“ den Zustand „1“ während der steigenden Flanke von „Set“, wird der Startvorgang um die Dauer der „1“ am Eingang „Hold“ verzögert (4). Wechselt nach der abgelaufenen Zeit der Zustand am Eingang „Set“ von „1“ auf „0“, während am Eingang „Hold“ eine „1“ ansteht, schaltet „OutputControl“ auf „0“, wenn „Hold“ wieder den Zustand „0“ erhält (3).

Mit dem Zustand „1“ am Eingang „ReSet“ wird das Zeitglied rück-gesetzt. Das Starten der Zeit ist in diesem Zustand nicht möglich. Eine steigende Flanke am „Set“-Eingang ist erst als Start wirksam, wenn der „ReSet“-Zustand von „1“ auf „0“ wechselt (5).

Beispiel „12 Sekunden Einschaltverzögerung“

Prototyp des Funktionsbausteins

S_TimeRising

BOOL Set OutputControl BOOLBOOL ReSet ElapsedTime UINTBOOL HoldUINT PresetTime

Set Startbedingung, steigende Flanke

ReSet Rücksetzbedingung

Hold Zeitunterbrechung

PresetTime Zeit-Sollwert in Sekunden

OutputControl Steuerausgang

ElapsedTime Zeit-Istwert in Sekunden

Abbildung 11: Zeitdiagramm

PROGRAM zeit1

VAR

Timer1 : S_TimeRising;

Start : BOOL;

Halt : BOOL;

Zeitwert1 : UINT := 12; (* Zeitwert1 = 12 Sekunden *)

Ausgang1 : BOOL;

END_VAR

CAL Timer1 (Set := Start,

Hold := Halt,

PresetTime := Zeitwert1)

LD Timer1.OutputControl

ST Ausgang1

...

Standard-Bausteine der S40-Software: XS40_MoellerFB.lib

02/05 AWB2786-1456D

28

TimeGeneratorTaktgenerator

Operandenbedeutung

Beschreibung

Mit steigender Flanke am „Set“-Eingang wird der „Period“-Wert als Periodendauer „T“ in Millisekunden in das Zeitglied über-nommen. Für die Dauer der anstehenden „1“ am „Set“-Eingang liefert der Ausgang „PulseOutput“ eine Impulsfolge mit der vorge-gebenen Periodendauer und mit einem Impuls-/Pausenverhältnis von 1:1.

Die Periodendauer kann am Eingang „Period“zwischen 1 und 65535 ms eingestellt werden.

Wird während der Taktbildung der „Period“-Wert geändert, ist er nicht sofort als Frequenzänderung wirksam. Die Übernahme des neuen Wertes erfolgt erst mit der nächsten steigenden Flanke am „Set“-Eingang.

Die Genauigkeit der ausgegebenen Periodendauer wird beein-flusst durch die Zykluszeit des Programms und die Rechenzeit des Betriebssystems und kann um diese Zeiten verfälscht sein.

Ein ungerader Wert für die Periodendauer wird intern auf den nächsten geradzahligen Wert abgerundet. Liegt die Periodendauer in der Größenordnung der Programmzykluszeit oder gar darunter, wird die ausgegebene Periodendauer sehr ungenau. Durch mehr-fachen Aufruf des Bausteins in einem Programmzyklus lässt sich die Abweichung reduzieren.

Beispiel „320 Millisekunden-Takt“

Prototyp des Funktionsbausteins

Set Startbedingung, steigende Flanke

Period Periodendauer in Millisekunden

PulseOutput Impulsausgang

Abbildung 12: Zeitdiagramm

TimeGenerator

BOOL Set PulseOutput BOOLUINT Period

PROGRAM frequenz

VAR

Taktgeber : TimeGenerator;

Start : BOOL;

PeriodenZeit: UINT := 320;

Takt : BOOL;

END_VAR

CAL Taktgeber (Set := Start,

Period := PeriodenZeit)

LD Taktgeber.PulseOutput

ST Takt

...

02/05 AWB2786-1456D Timer

9

2

TimePulseImpulszeitglied

Operandenbedeutung

BeschreibungMit steigender Flanke am „Set“-Eingang wird der „PresetTime“-Wert als Zeitwert „T“ in Millisekunden in das Zeitglied über-nommen und gestartet. Der Ausgang „PulseOutput“ erhält den Wert „1“ und bleibt in diesem Zustand für die Dauer der laufenden Zeit.

Eine Zustandsänderung am „Set“-Eingang während der laufenden Zeit hat keinen Einfluss auf den Ablauf.

Der Ausgang „ElapsedTime“ zeigt den aktuellen Zeitwert in Millisekunden an.

Mit dem Zustand „1“ am Eingang „ReSet“ während der laufenden Zeit wird das Zeitglied rückgesetzt.

Beispiel „125-Millisekunden-Impuls“

Prototyp des Funktionsbausteins

Set Startbedingung, steigende Flanke

ReSet Rücksetzbedingung

PresetTime Zeit-Sollwert in Millisekunden

PulseOutput Steuerausgang

ElapsedTime Zeit-Istwert in Millisekunden

TimePulse

BOOL Set PulseOutput BOOLBOOL ReSet ElapsedTime UINTUINT PresetTime

Abbildung 13: Zeitdiagramm

PROGRAM impuls

VAR

Pause : TimePulse;

Start : BOOL;

Impulsdauer: UINT := 125;

Ausgangsimpuls : BOOL;

Istzeit : UINT;

END_VAR

CAL Pause (Set := Start,

PresetTime := Impulsdauer)

LD Pause.PulseOutput

ST Ausgangsimpuls

LD Pause.ElapsedTime

ST Istzeit

END_PROGRAM

02/05 AWB2786-1456D

30

02/05 AWB2786-1456D

1

3

2 Date and Time-Bausteine der S40: XS40_MoellerFB_RTC.lib

Die Bibliothek XS40_MoellerFB_RTC.lib enthält folgende Bausteine:

• S40_GetRealTimeClock• S40_Rtc• S40_SetRealTimeClock

Beim Einbinden der Bibliothek wird automatisch die Bibliothek SysLibRtc.lib mit eingebunden!

Die Bausteine können in der XC100/XC200 eingesetzt werden

S40_GetRealTimeClockAuswertung der Echtzeituhr

Operandenbedeutung

BeschreibungWird der Funktionsbaustein „GetRealTimeClock“ aufgerufen, liefert er an den oben beschriebenen Ausgangsparametern stets die aktuelle Zeit und das aktuelle Datum aus der Echtzeituhr. Es wird kein Freigabeeingang benötigt; der Baustein liefert die Werte, sobald er aufgerufen wird.

S40_RTCStellen der Echtzeituhr

Operandenbedeutung

BeschreibungMit der steigenden Flanke des Operanden EN wird der über den Operanden PDT vorgegebene Stellwert Datum und Uhrzeit in die Echtzeituhr übernommen. Der Ausgangsoperand Q zeigt die Gültigkeit von CDT an. Die aktuelle Uhrzeit und das Datum werden über den Operanden CDT ausgegeben, unabhängig vom Zustand des Operanden EN.

Prototyp des Funktionsbausteins

Year aktuelle Jahreszahl (zweistellig)

Month Monat

Day Tag

Weekday Wochentag (0 = Sonntag)

Hour Stunde

Minute Minute

Second Sekunde

S40_GetRealTimeClock

Year USINTMonth USINT

Day USINTWeekday USINT

Hour USINTMinute USINTSecond USINT

Prototyp des Funktionsbausteins

EN Setzbedingung

PDT Stellwert für die Echtzeituhr, gültige Jahreszahlen von 1993 bis 2092

Q Anzeige, ob gültiger Wert an CDT

CDT Aktueller Datum- und Uhrzeitwert

S40_RTC

BOOL EN Q BOOLDT PDT CDT DT

Date and Time-Bausteine der S40: XS40_MoellerFB_RTC.lib

02/05 AWB2786-1456D

32

S40_SetRealTimeClockSetzen der Echtzeituhr

Operandenbedeutung

BeschreibungMit einer L l H-Flanke am Eingang „Set“ werden die Eingangs-werte übernommen.

Prototyp des Funktionsbausteins

Set Freigabe für die Übernahme der anliegenden Werte, L l H - Flanke

Year aktuelle Jahreszahl (zweistellig)

Month Monat

Day Tag

Hour Stunde

Minute Minute

Second Sekunde

Error Fehlermeldung

S40_SetRealTimeClock

BOOL Set Error BOOLUSINT YearUSINT MonthUSINT DayUSINT HourUSINT MinuteUSINT Second

02/05 AWB2786-1456D

3

3

3 Uhr-Bausteine: RTCLib.lib

Die Bibliothek enthält folgende Bausteine:

• SetRealTimeClock• GetRealTimeClock

Uhrbausteine

SetRealTimeClockSetzen der Echtzeituhr

Operandenbedeutung

Tabelle 2: Elemente der Struktur:

BeschreibungMit steigender Flanke am „Set“-Eingang wird die Echtzeituhr mit den Werten gesetzt, die in einer Struktur vom Typ DATE_TIME abgelegt sind. Die Setz- oder Vorgabewerte liegen dabei in sieben aufeinander folgenden Datenelementen vom Typ USINT. Die Bytes enthalten der Reihe nach Jahr, Monat, Tag, Wochentag, Stunde, Minute und Sekunde.

Bei steigender Flanke am Setzeingang werden alle Werte übertragen, nicht aber Teilinformationen wie z. B. nur die Stunde oder das Jahr.

Der Ausgang „Error“ gibt den Fehlercode an:

h Die Bausteine dder RTCLib.lib sind nur für die XC100 zu verwenden.

Prototyp des Funktionsbausteins

Set Freigabe für die Übernahme der Setzwerte, stegende Flanke

POINTER TO DATE_TIME Zeiger auf die Adresse der Struktur vom Typ DATE_TIME, a Tabelle 2

Error Fehlermeldungen

TYPE DATE_TIME:

STRUCT

Second: USINT;

Minute: USINT;

Hour: USINT;

Day: USINT;

Month: USINT;

Year: USINT;

WeekDay: USINT;

END_STRUCT

END_TYPE

SetRealTimeClock

BOOL SetPOINTER TO DATE_TIME DateAddress Error USINT

1 DataAddress ist falsch parametriert

2 Jahr falsch angegeben (Gültiger Bereich: 0 bis 99)

3 Monat falsch angegeben (Gültiger Bereich: 1 bis 12)

4 Tag falsch angegeben (Gültiger Bereich: 1 bis 31)

5 Wochentag falsch angegeben (Gültiger Bereich: 0 bis 6, 0 = Sonntag)

6 Stunde falsch angegeben (Gültiger Bereich: 0 bis 23)

7 Minute falsch angegeben (Gültiger Bereich: 0 bis 59)

8 Sekunde falsch angegeben (Gültiger Bereich: 0 bis 59)

Uhr-Bausteine: RTCLib.lib 02/05 AWB2786-1456D

34

GetRealTimeClockAuswertung der Echtzeituhr

Operandenbedeutung

BeschreibungWird der Funktionsbaustein „GetRealTimeClock“ aufgerufen, liefert er an den oben beschriebenen Ausgangsparametern stets die aktuelle Zeit und das aktuelle Datum aus der Echtzeituhr. Es wird kein Freigabeeingang benötigt; der Baustein liefert die Werte, sobald er aufgerufen wird.

Prototyp des Funktionsbausteins

Year aktuelle Jahreszahl (zweistellig)

Month Monat

Day Tag

Weekday Wochentag (0 = Sonntag)

Hour Stunde

Minute Minute

Second Sekunde

GetRealTimeClock

Year USINTMonth USINT

Day USINTWeekday USINT

Hour USINTMinute USINTSecond USINT

02/05 AWB2786-1456D

5

3

4 Visualisierungsbausteine: Visu.lib

Die Bibliothek enthält folgende Funktions-Bausteine (FB) und Funktionen (FU):

• ClearLines (FB)• ClearScreen (FB)• EnableDisplay (FB)• GetDisplayInfo (FB)• GetTextAddress (FU)• GetTextDBInfo (FB)• InputValue (FB)• SetBacklight (FB)• SetContrast (FB)• SetCursor (FB)• WriteBargraph (FB)• WriteLine (FB)• WriteMultiString (FB)• WriteMultiStringTextDB (FB)• WriteMultiValue (FB)• WriteString (FB)• WriteStringTextDB (FB)• WriteSysDate (FB)• WriteSysDay (FB)• WriteSysTime (FB)• WriteValue (FB)

Visualisierungsbausteine

Generelles

Die Visualisierungsbausteine können Sie sowohl für das XV-101-K42 (4 Zeilen mit je 20 Zeichen) als auch für das XV-101-K84 (8 Zeilen mit je 40 Zeichen) verwenden.

Diese Anzahl der Zeilen und der Zeichen gilt bei Verwendung eines kleinen Fontsatzes (6 x 8 Pixel). Wenn Sie einen großen Fontsatz (12 x 16 Pixel) verwenden, halbiert sich die Anzahl der Zeilen sowie die Anzahl der Zeichen pro Zeile. Das große Display kann dann 4 Zeilen mit je 20 Zeichen und das kleine Display 2 Zeilen mit je 10 Zeichen anzeigen.

Das Attribut „Blink“ kann nur beim großen Display verwendet werden.

Maximal können bis zu 10 Funktionsbausteine gleichzeitig aktiv sein. Wenn Sie mehr aufrufen, erscheint die Fehlermeldung 2 „Bausteinanzahl überschritten“. Die Bausteine werden nicht abgearbeitet.

ClearLinesZeilen löschen

Operandenbedeutung

BeschreibungMit einer positiven Flanke am Eingang „x_Strobe“ löscht der Baustein die an den Eingängen „x_Line0“ bis „x_Line7“ parametrierten Zeilen.

Fehlermeldungen:

Prototyp des Funktionsbausteins

x_Strobe Löschen der parametrierten Zeilen mit positiver Flanke

x_Line0 Zeilennummer

... Zeilennummer

x_Line7 Zeilennummer

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

2 Bausteinanzahl überschritten

ClearLines

BOOL x_Strobe x_Active BOOLBOOL x_Line0 b_Error BYTEBOOL x_Line1BOOL x_Line2BOOL x_Line3BOOL x_Line4BOOL x_Line5BOOL x_Line6BOOL x_Line7

Visualisierungsbausteine: Visu.lib

02/05 AWB2786-1456D

36

ClearScreenDisplay-Inhalt löschen

Operandenbedeutung

BeschreibungMit einer positiven Flanke am Eingang „x_Strobe“ löscht der Baustein den Display-Inhalt.

Fehlermeldungen:

EnableDisplayDisplay-Inhalt sichtbar/nicht sichtbar schalten

Operandenbedeutung

BeschreibungIn Abhängigkeit des Zustandes am Eingang „x_TurnOn“ bewirkt eine positive Flanke am Eingang „x_Strobe“, dass der Display-Inhalt sichtbar oder nicht sichtbar wird.

Fehlermeldungen:

Prototyp des Funktionsbausteins

x_Strobe Löschen des Display-Inhaltes mit positiver Flanke

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

2 Bausteinanzahl überschritten

ClearScreen

BOOL x_Strobe x_Active BOOLb_Error BYTE

Prototyp des Funktionsbausteins

Strobe Übernahme des Parameters „x_TurnOn“ mit einer positiven Flanke

TurnOn Display-Inhalt sichtbar = 1, Display-Inhalt nicht sichtbar = 0

Active Baustein aktiv

Error Fehlermeldungen

0 kein Fehler

2 Bausteinanzahl überschritten

EnableDisplay

BOOL x_Strobe x_Active BOOLBOOL x_TurnOn b_Error BYTE

02/05 AWB2786-1456D Visualisierungsbausteine

7

3

GetDisplayInfoBetriebszustand und Display-Typ abfragen

Operandenbedeutung

BeschreibungDer Baustein liest den Status, in dem sich das Text-Display befindet, sowie den angeschlossenen Display-Typ ein. Wenn Sie den Baustein aufrufen, wird am Ausgang „b_Lines“ die Zeilen-anzahl und am Ausgang „b_Columns“ die Anzahl der Zeichen pro Zeile des angeschlossenen Text-Displays ausgegeben. Dies gilt für den kleinen Zeichensatz.

Der Ausgang „b_State“ zeigt die Betriebszustände des Displays an. Die einzelnen Betriebszustände werden im Datentyp MMI_STATE [ENUM] angegeben:

GetTextAddressTextadresse auslesen

Operandenbedeutung

BeschreibungDie Funktion liefert die Adresse des Textes innerhalb der Text-Datenbank, der über die Eingänge „ui_Language“ und „ui_Text“ parametriert wurde. Existiert ein Text nicht, zeigt der Zeiger auf den Text „Text not available“

Prototyp des Funktionsbausteins

b_Lines Anzahl der Zeilen

b_Columns Anzahl der Spalten

b_State MMI_STATE (Betriebszustände des Text-Displays)

TYPE MMI_STATE:

(MMI_RESET:=0, (* Reset = 0 *)

MMI_INIT, (* Initialisierungsphase = 1 *)

MMI_DISPLAY_MODE, (* Display-Modus = 2 *)

MMI_INPUT_MODE, (* Eingabe-Modus = 3 *)

MMI_SYSTEM_MODE, (* System-Modus = 4 *)

MMI_ERROR):= MMI_RESET; (* Fehler = 5 *)

END_TYPE

GetDisplayInfo

b_Lines BYTEb_Columns BYTE

b_State BYTE

Prototyp des Funktionsbausteins

ui_Language Sprachenindex

ui_Text Textindex

GetTextAddress Adresse des Textes

GetTextAddress

UINT ui_Language GetTextAddress UDINTUINT ui_Text

Visualisierungsbausteine: Visu.lib

02/05 AWB2786-1456D

38

GetTextDBInfoTextDB Information auslesen

Operandenbedeutung

BeschreibungDer Baustein liest den Namen der Textdatei sowie die Anzahl der verwendeten Sprachen und Texte aus.

Mit einer positiven Flanke am Eingang „x_Strobe“ werden die entsprechenden Parameter an den Ausgängen „stri_Name“ , „ui_NoOfLanguages“ und „ui_NoOfTexts“ ausgegeben.

Die Textdatei wird in der XSoft unter ‹Ressourcen l Steuerungs-konfiguration l Weitere Parameter› nach Anklicken der Schalt-fläche „Toolbox“ erstellt und über die Schaltfläche „Laden“ in die XV100 transferiert.

Struktur der Textdatei:

Fehlermeldungen:

InputValueWerteingabe (Sollwert)

Operandenbedeutung

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Parameter mit positiver Flanke

stri_Name Name der Textdatei, die mit dem XVisionTool erstellt wurde

ui_NoOfLanguages Anzahl der verwendeten Sprachen

ui_NoOfTexts Anzahl der verwendeten Texte

b_Error Fehlermeldungen

Sprache 1 Sprache 2 . . . Sprache n

1 Text 1 Text 1 Text 1

2 Text 2 Text 2 Text 2

... ... ... ...

n Text n Text n Text n

0 kein Fehler

4 Textdatenbank nicht vorhanden

GetTextDBInfo

BOOL x_Strobe stri_Name STRING (32)ui_NoOfLanguages UINT

ui_NoOfTexts UINTb_Error BYTE

Prototyp des Funktionsbausteins

x_Enable Übernahme der Parameter

b_Line Zeilennummer [0 ... 7]

b_Column Spaltennummer [0 ... 39]

b_Font Nummer des Fontsatzes [0 ... 4]

b_Digits Stellenzahl [1 ... 11]1)

b_Precision Anzahl Nachkommastellen (nur bei REAL)

[1 ... 6]

ui_Timeout Timeout in Sekunden

typ_DataType Datentyp, der geschrieben werden soll (siehe Datentyp MMI_INPUT_TYPE)

di_MinIntValue Minimaler Integerwert, der eingegeben werden kann

di_MaxIntValue Maximaler Integerwert, der eingegeben werden kann

di_DefaultIntValue Vorgegebener Integerwert

r_MinFloatValue Minimaler Realwert, der eingegeben werden

r_MaxFloatValue Maximaler Realwert, der eingegeben werden kann

r_DefaultFloatValue Vorgegebener Realwert

di_IntValue INTEGER-Eingabewert

r_FloatValue REAL-Eingabewert

x_Active Baustein aktiv

b_Error Fehlermeldungen

1) Die Stellenanzahl ist abhängig vom Datentyp, siehe folgende Tabelle

InputValue

BOOL x_Enable di_IntValue DINTBYTE b_Line r_FloatValue REALBYTE b_Column x_Active BOOLBYTE b_Font b_Error BYTEBYTE b_DigitsBYTE b_PrecisionUINT ui_Timeout

MMI_INPUT_TYPE typ_DataTypeDINT di_MinIntValueDINT di_MaxIntValueDINT di_DefaultIntValueREAL r_MinFloatValueREAL r_MaxFloatValueREAL r_DefaultFloatValue

02/05 AWB2786-1456D Visualisierungsbausteine

9

3

BeschreibungDer Baustein wird durch einen High-Pegel am Eingang „x_Enable“ aktiv geschaltet – jetzt kann eine Werteingabe erfolgen (a Abschnitt „Ablauf bei der Werteingabe:“ weiter unten). Es kann immer nur ein Baustein aktiv sein.

Der Eingang „ui_Timeout“ gibt die Zeit in Sekunden an, in der die Eingabe abgeschlossen sein muss. Erfolgt keine Eingabe in dieser Zeit, erscheint am Ausgang „b_Error“ der Fehler 6 (Timeout Eingabe). Für eine erneute Werteingabe ist ein erneutes High-Signal am Eingang „x_Enable“ erforderlich.

Der am Eingang „typ_DataType“ anliegende Datentyp entscheidet, welcher Wert eingegeben werden soll (siehe MMI_INPUT_TYPE). Mögliche Parameter:

• unsigned double integer (UDINT)• signed double integer (DINT)• floating point (REAL)• password (UDINT)

Datentyp MMI_INPUT_TYPE[ENUM]

Die Nummer des zu ladenden Fontsatzes, mit dem der Wert dargestellt werden soll, finden Sie in der XSoft unter ‹Steuerungs-konfiguration l Weitere Parameter› im Fenster „Visualisierung“. Das Vorzeichen und auch die Dezimalstelle bei Real-Zahlen belegen eine Stelle.

Beispiel: Digits: 8, Precision: 2

– 1 2 3 4 . 5 6

An den Eingängen „di_MinIntValue“ und „di_MaxIntValue“ bzw. „r_MinFloatValue“ und „r_MaxFloatValue“ parametrieren Sie die Eingabegrenzen.

An den Ausgängen „di_IntValue“ bzw. „r_FloatValue“ stehen die eingegebenen Sollwerte.

Ablauf bei der Werteingabe:

• Eingabe eines Integer- bzw. Real-Wertes:Ein High-Pegel am Eingang „x_Enable“ schaltet den Baustein aktiv – der Cursor blinkt an der rechten Stelle des einzugebenden Sollwertes.

Mit den Zifferntasten geben Sie den Wert ein. Mit der Eingabetaste (Enter) wird der Wert übernommen und der Ausgang „x_Active“ wird auf Low gesetzt.

Mit der Taste „CLEAR“ wird die Eingabe gelöscht. Es kann sofort wieder ein neuer Wert eingegeben werden.

Mit der Taste „ESC“ wird die Eingabe angebrochen. Am Ausgang „b_Error“ erscheint Fehler 5 (Eingabe abgebrochen). Für eine erneute Werteingabe ist ein erneutes High-Signal am Eingang „x_Enable“ erforderlich.

Bei Integer-Wert: Wenn Sie einen kleineren oder größeren Wert eingegeben, als an den Eingängen „di_MinIntValue und „di_MaxIntValue“ paramet-riert, wird nach Betätigen der Eingabetaste (Enter) der am Eingang „di_DefaultIntValue“ bzw. „r_DefaultFloatValue“ parametrierte Wert angezeigt.

Ein Minuszeichen können Sie erst eingeben, nachdem Sie mindestens eine Ziffer eingegeben haben.

Die zuletzt eingegebene Ziffer steht rechts.

Bei Real-Wert:Wenn Sie einen kleineren oder größeren Wert eingeben, als an den Eingängen „r_MinFloatValue“ und „r_MaxFloatValue“ paramet-riert, wird nach Betätigen der Eingabetaste (Enter) der am Eingang „r_DefaultFloatValue“ parametrierte Wert angezeigt.

Ein Minuszeichen können Sie erst eingeben, nachdem die Dezimal-stelle erscheint.

Die zuletzt eingegebene Ziffer steht rechts.

• Passwort-EingabeDer Ablauf bei der Passworteingabe entspricht exakt der Eingabe eines Integer-Wertes. Ausnahme: Bei der Werteingabe erscheinen Sternchen auf dem Display.

Datentyp Max. Stellenzahl

UDINT 10

DINT 11 (10 Stellen plus Vorzeichen)

REAL 8 (6 Stellen plus Dezimalpunkt plus Vorzeichen)

Password 10

TYPE MMI_INPUT_TYPE:

( INPUT_UDINT:=0,

INPUT_DINT,

INPUT_REAL

INPUT_PASSWORD):= INPUT_UDINT;

END_TYPE

Visualisierungsbausteine: Visu.lib

02/05 AWB2786-1456D

40

Beispiel: Eingabe eines Integer- und eines Real-Wertes SetBacklightHintergrundbeleuchtung aus-/einschalten

Operandenbedeutung

BeschreibungDer Baustein schaltet die Hintergrundbeleuchtung des Displays aus und ein.

In Abhängigkeit des Zustandes am Eingang „x_TurnOn“ bewirkt eine positive Flanke am Eingang „x_Strobe“, dass die Hinter-grundbeleuchtung ein- oder ausgeschaltet wird.

Fehlermeldungen:

PROGRAM PLC_PRG

VAR

InputValueINT: InputValue;

InputValueREAL: InputValue;

INTVALUE: UDINT;

FLOATVALUE: REAL;

SR1: SR;

SR2: SR;

END_VAR

(* Bausteine enablen *)

SR1(SET1:=XVFunction_F1 , RESET:=XVEnter OR XVEscape );

SR2(SET1:=XVFunction_F2 , RESET:=XVEnter OR XVEscape );

(* Bausteinparametrierung *)

InputValueINT(x_Enable:=SR1.Q1 , b_Line:=2 , b_Column:=6 , b_Digits:=6 , ui_Timeout:=10 , typ_DataType:=INPUT_DINT , di_MinIntValue:=-50000 , di_MaxIntValue:=50000 , di_DefaultIntValue:=3000 , di_IntValue=>INTVALUE );

(* Letzter eingegebener Wert wird als Defaultwert übernommen *)

InputValueREAL(x_Enable:=SR2.Q1 , b_Line:=4 , b_Column:=14 , b_Digits:=8 , b_Precision:=2 , ui_Timeout:=10 , typ_DataType:=INPUT_REAL , r_MinFloatValue:=-9999.99 , r_MaxFloatValue:=9999.99 , r_DefaultFloatValue:=FLOATVALUE , r_FloatValue=>FLOATVALUE );

Prototyp des Funktionsbausteins

x_Strobe Übernahme des Parameters „x_TurnOn“ mit positiver Flanke

x_TurnOn [0,1]0 = Beleuchtung AUS, 1 = Beleuchtung EIN

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

2 Bausteinanzahl überschritten

SetBacklight

BOOL x_Strobe x_Active BOOLBOOL x_TurnOn b_Error BYTE

02/05 AWB2786-1456D Visualisierungsbausteine

1

4

SetContrastKontrast des Displays einstellen

Operandenbedeutung

BeschreibungDer Baustein stellt den Kontrast des Displays ein.

Mit einer positiven Flanke am Eingang „x_Strobe“ wird der am Eingang „b_ContrastValue“ parametrierte Wert übernommen. „0“ bedeutet minimaler Kontrast, „100“ bedeutet maximaler Kontrast.

Fehlermeldungen:

SetCursorCursor positionieren

Operandenbedeutung

BeschreibungDer Baustein positioniert den Cursor an die parametrierte Stelle auf dem Display.

In Abhängigkeit des Zustandes am Eingang „x_TurnOn“ bewirkt eine positive Flanke am Eingang „x_Strobe“, dass der Cursor dargestellt oder nicht dargestellt wird.

Am Eingang „x_Underline“ kann die Form des Cursors vorge-geben werden.

Die Nummer des zu ladenden Fontsatzes, mit dem der Cursor dargestellt werden soll, ist in der XSoft unter ‹Steuerungs-konfiguration r Weitere Parameter› im Fenster „Visualisierung“ zu finden.

Fehlermeldungen:

Prototyp des Funktionsbausteins

x_Strobe Übernahme des parametrierten Kontrastwertes mit positiver Flanke

b_ContrastValue Kontrast [0 ... 100]

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

SetContrast

BOOL x_Strobe x_Active BOOLBYTE b_ContrastValue b_Error BYTE

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Parameter mit positiver Flanke

b_Line Zeilennummer [0 ... 7]

b_Column Spaltennummer [0 ... 39]

b_Font Nummer des Fontsatzes [0 ... 4]

x_TurnOn Cursor AUS = 0Cursor EIN = 1

x_Underline Cursor als Block = 0Cursor als Underline = 1

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

SetCursor

BOOL x_Strobe x_Active BOOLBYTE b_Line b_Error BYTEBYTE b_ColumnBYTE b_FontBOOL x_TurnOnBOOL x_Underline

Visualisierungsbausteine: Visu.lib

02/05 AWB2786-1456D

42

WriteBargraphBargraphdarstellung eines Istwertes

Operandenbedeutung

Mögliche Parameter sind:

BeschreibungMit einer positiven Flanke am Eingang „x_Strobe“ wird der Wert am Eingang „b_Value“ in Form eines Bargraphen auf das Display geschrieben.

Am Eingang „typ_Direction“ wird die Größe und die Laufrichtung des Bargraphen parametriert.

Der Baustein stellt einen Istwert in Form eines Bargraphen dar. Der Bargraph kann eine horizontale oder eine vertikale Laufrichtung haben.

Fehlermeldungen:

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Parameter mit positiver Flanke

b_Line Zeilennummer [0 ... 7]

b_Column Spaltennummer [0 ... 39]

typ_Direction MMI_BARGRAPH_DIRECTION

b_Length Länge des Bargraphen in Zeichen [1 ... 40]1)

x_Blink blinkende Darstellung des Bargraphen

[0,1]1 = blinkend

b_Value zu schreibender Bargraph-Wert [0 ... 100] %

x_Active Baustein aktiv

b_Error Fehlermeldungen

1) Der Bargraph wird aus kleinen Zeichen (small 6 x 8 Pixel) oder großen Zeichen (large 12 x 16 Pixel) zusammengesetzt – je nach Parameter am Eingang „typ_Direction“ (siehe MMI_BARGRAPH_DIRECTION).

WriteBargraph

BOOL x_Strobe x_Active BOOLBYTE b_Line b_Error BYTEBYTE b_Column

MMI_BARGRAPH_DIRECTION

typ_Direction

BYTE b_LengthBOOL x_BlinkBYTE b_Value

Maximale Länge des Bargra-phen in Zeichen beim ...

MMI_BARGRAPH_DIRECTION ... 4 x 20 Display

... 8 x 40 Display

SMALL_VERTICAL_BARGRAPH Length 4 Length 8

LARGE_VERTICAL_BARGRAPH Length 2 Length 4

SMALL_HORIZONTAL_BARGRAPH Length 20 Length 40

LARGE_HORIZONTAL_BARGRAPH Length 10 Length 20

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

02/05 AWB2786-1456D Visualisierungsbausteine

3

4

WriteLineZeile schreiben

Operandenbedeutung

BeschreibungDer Baustein beschreibt eine Zeile des Displays.

Mit einer positiven Flanke am Eingang „x_Strobe“ werden die am Eingang „stri_Text“ anliegenden alphanummerischen Zeichen an der parametrierten Stelle auf dem Display angezeigt. Vor und nach dem String liegende Zeichen in der Zeile werden gelöscht.

Die Nummer des zu ladenden Fontsatzes, mit dem der Wert darge-stellt werden soll, ist in der XSoft unter ‹Steuerungskonfiguration r Weitere Parameter› im Fenster „Visualisierung“ zu finden.

Fehlermeldungen:

WriteMultiStringBis zu 8 Strings aus alphanummerischen Zeichen schreiben

Operandenbedeutung

Fehlermeldungen:

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Parameter mit positiver Flanke

b_Line Zeilennummer [0 ... 7]

b_Column Spaltennummer [0 ... 39]

b_Font Nummer des Fontsatzes [0 ... 4]

stri_Text String

x_Reverse inverse Darstellung des Wertes [0,1]1 = invers

x_Blink blinkende Darstellung des Wertes

[0,1]1 = blinkend

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

WriteLine

BOOL x_Strobe x_Active BOOLBYTE b_Line b_Error BYTEBYTE b_ColumnBYTE b_Font

STRING (40) stri_TextBOOL x_ReverseBOOL x_Blink

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Strings mit positiver Flanke

usi_Number Anzahl der Strings [1 ... 8]

p_typ_Text_0 Zeiger auf die Struktur MMI_STRING_OBJ

p_typ_Text_1 Zeiger auf die Struktur MMI_STRING_OBJ

p_typ_Text_2 Zeiger auf die Struktur MMI_STRING_OBJ

p_typ_Text_3 Zeiger auf die Struktur MMI_STRING_OBJ

p_typ_Text_4 Zeiger auf die Struktur MMI_STRING_OBJ

p_typ_Text_5 Zeiger auf die Struktur MMI_STRING_OBJ

p_typ_Text_6 Zeiger auf die Struktur MMI_STRING_OBJ

p_typ_Text_7 Zeiger auf die Struktur MMI_STRING_OBJ

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

WriteMultiString

BOOL x_Strobe x_Active BOOLUSINT usi_Number b_Error BYTE

POINTER TO MMI_STRING_OBJ p_typ_Text_0POINTER TO MMI_STRING_OBJ p_typ_Text_1POINTER TO MMI_STRING_OBJ p_typ_Text_2POINTER TO MMI_STRING_OBJ p_typ_Text_3POINTER TO MMI_STRING_OBJ p_typ_Text_4POINTER TO MMI_STRING_OBJ p_typ_Text_5POINTER TO MMI_STRING_OBJ p_typ_Text_6POINTER TO MMI_STRING_OBJ p_typ_Text_7

Visualisierungsbausteine: Visu.lib

02/05 AWB2786-1456D

44

BeschreibungMit einer positiven Flanke am Eingang „x_Strobe“ schreibt der Baustein bis zu 8 Strings gleichzeitig auf das Display.

Die Strings werden in der Struktur MMI_STRING_OBJ angegeben. Die Struktur hat folgenden Aufbau:

Beispiel:

Die beiden Strings „Moeller XSystem“ und „XVision Text Displays“ sollen in der ersten und dritten Zeile des Displays dargestellt werden, wenn die Funktionstaste F4 betätigt wird.

WriteMultiStringTextDBBis zu 8 Strings aus Textdatei gleichzeitig schreiben

Operandenbedeutung

Fehlermeldungen:

TYPE MMI_STRING_OBJ:

STRUCT

b_Line :BYTE;

b_Column :BYTE;

b_Font :BYTE;

stri_Text :STRING(40);

x_Reverse :BOOL;

x_Blink :BOOL;

b_Error :BYTE;

END_STRUCT

END_TYPE

PROGRAM PLC_PRG

VAR

WriteMultiString: WriteMultiString;

Text0: MMI_STRING_OBJ;

Text1: MMI_STRING_OBJ;

END_VAR

(* Wertübergabe an die Struktur *)

Text0.b_Line:=0;

Text0.b_Column:=13;

Text0.b_Font:=0;

Text0.stri_Text:='Moeller XSystem';

Text0.x_Reverse:=0;

Text0.x_Blink:=0;

Text1.b_Line:=2;

Text1.b_Column:=10;

Text1.b_Font:=0;

Text1.stri_Text:='XVision Text Displays';

Text1.x_Reverse:=0;

Text1.x_Blink:=1;

(* Bausteinparametrierung *)

WriteMultiString(x_Strobe:=XVFunction_F4 , usi_Number:=2 ,

p_typ_Text_0:=ADR(Text0) , p_typ_Text_1:=ADR(Text1) );

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Strings mit positiver Flanke

usi_Number Anzahl der Strings [1 ... 8]

p_typ_Text_0 Zeiger auf die Struktur MMI_TEXTDB_OBJ

p_typ_Text_1 Zeiger auf die Struktur MMI_TEXTDB_OBJ

p_typ_Text_2 Zeiger auf die Struktur MMI_TEXTDB_OBJ

p_typ_Text_3 Zeiger auf die Struktur MMI_TEXTDB_OBJ

p_typ_Text_4 Zeiger auf die Struktur MMI_TEXTDB_OBJ

p_typ_Text_5 Zeiger auf die Struktur MMI_TEXTDB_OBJ

p_typ_Text_6 Zeiger auf die Struktur MMI_TEXTDB_OBJ

p_typ_Text_7 Zeiger auf die Struktur MMI_TEXTDB_OBJ

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

4 Text nicht vorhanden

WriteMultiString-TextDB

BOOL x_Strobe x_Active BOOLUSINT usi_Number b_Error BYTE

POINTER TO MMI_TEXTDB_OBJ p_typ_Text_0POINTER TO MMI_TEXTDB_OBJ p_typ_Text_1POINTER TO MMI_TEXTDB_OBJ p_typ_Text_2POINTER TO MMI_TEXTDB_OBJ p_typ_Text_3POINTER TO MMI_TEXTDB_OBJ p_typ_Text_4POINTER TO MMI_TEXTDB_OBJ p_typ_Text_5POINTER TO MMI_TEXTDB_OBJ p_typ_Text_6POINTER TO MMI_TEXTDB_OBJ p_typ_Text_7

02/05 AWB2786-1456D Visualisierungsbausteine

5

4

BeschreibungMit einer positiven Flanke am Eingang „x_Strobe“ schreibt der Baustein bis zu 8 Strings gleichzeitig auf das Display. Die zu schreibenden Strings werden über „ui_Language“ und „ui_Text“ aus der Textdatei aufgerufen.

„ui_Language“ und „ui_Text“ des anzuzeigenden Strings werden in der Struktur MMI_TEXTDB_OBJ angegeben.

Die Textdatei wird in der XSoft unter ‹Ressourcen l Steuerungs-konfiguration l Weitere Parameter› nach Anklicken der Schalt-fläche „Toolbox“ erstellt und über die Schaltfläche „Laden“ in die XV100 transferiert.

Die Struktur hat folgenden Aufbau:

Beispiel:

Nach Betätigen der Funktionstaste F1 sollen drei Texte angezeigt werden. Mit der Funktionstaste F2 sollen sie wieder gelöscht werden können.

Aufbau der Textdatei:

TYPE MMI_TEXTDB_OBJ:

STRUCT

b_Line :BYTE;

b_Column :BYTE;

b_Font :BYTE;

ui_Text :UINT;

ui_Language :UINT;

x_Reverse :BOOL;

x_Blink :BOOL;

b_Error :BYTE;

END_STRUCT

END_TYPE

Deutsch Englisch Französisch

1 Deutsch Englisch Französisch

2

3

4

PROGRAM PLC_PRG

VAR

WriteMultiStringTextDB: WriteMultiStringTextDB;

Text0: MMI_TEXTDB_OBJ;

Text1: MMI_TEXTDB_OBJ;

Text2: MMI_TEXTDB_OBJ;

ClearScreen: ClearScreen;

END_VAR

(* Wertübergabe an die Struktur *)

Text0.b_Line:=0;

Text0.b_Column:=0;

Text0.ui_Language:=1;

Text0.ui_Text:=1;

Text1.b_Line:=1;

Text1.b_Column:=0;

Text1.ui_Language:=2;

Text1.ui_Text:=1;

Text1.x_Blink:=1;

Text2.b_Line:=2;

Text2.b_Column:=0;

Text2.ui_Language:=3;

Text2.ui_Text:=1;

Text2.x_Reverse:=1;

(* Bausteinparametrierung *)

WriteMultiStringTextDB(x_Strobe:=XVFunction_F1 , usi_Number:=3 ,

p_typ_Text_0:=ADR(Text0) , p_typ_Text_1:=ADR(Text1) , p_typ_Text_2:=ADR(Text2) );

ClearScreen(x_Strobe:=XVFunction_F2 );

Visualisierungsbausteine: Visu.lib

02/05 AWB2786-1456D

46

WriteMultiValueBis zu 8 Werte (Istwerte) schreiben

Operandenbedeutung

Fehlermeldungen:

BeschreibungMit einer positiven Flanke am Eingang „x_Strobe“ schreibt der Baustein bis zu 8 Werte gleichzeitig auf das Display.

Der Wert wird in der Struktur MMI_VALUE_OBJ angegeben. Die Struktur hat folgenden Aufbau:

Das Element „Datatype“ hat folgenden Aufbau:

Datentyp: MMI_WRITE_TYPE[ENUM]:

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Strings mit positiver Flanke

usi_Number Anzahl der Strings

p_typ_Value_0 Zeiger auf die Struktur MMI_VALUE_OBJ

p_typ_Value_1 Zeiger auf die Struktur MMI_VALUE_OBJ

p_typ_Value_2 Zeiger auf die Struktur MMI_VALUE_OBJ

p_typ_Value_3 Zeiger auf die Struktur MMI_VALUE_OBJ

p_typ_Value_4 Zeiger auf die Struktur MMI_VALUE_OBJ

p_typ_Value_5 Zeiger auf die Struktur MMI_VALUE_OBJ

p_typ_Value_6 Zeiger auf die Struktur MMI_VALUE_OBJ

p_typ_Value_7 Zeiger auf die Struktur MMI_VALUE_OBJ

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

WriteMultiValue

BOOL x_Strobe x_Active BOOLUSINT usi_Number b_Error BYTE

POINTER TO MMI_VALUE_OBJ p_typ_Value_0POINTER TO MMI_VALUE_OBJ p_typ_Value_1POINTER TO MMI_VALUE_OBJ p_typ_Value_2POINTER TO MMI_VALUE_OBJ p_typ_Value_3POINTER TO MMI_VALUE_OBJ p_typ_Value_4POINTER TO MMI_VALUE_OBJ p_typ_Value_5POINTER TO MMI_VALUE_OBJ p_typ_Value_6POINTER TO MMI_VALUE_OBJ p_typ_Value_7

TYPE MMI_VALUE_OBJ:

STRUCT

b_Line :BYTE;

b_Column :BYTE;

b_Font :BYTE;

b_Digits :BYTE;

b_Precision :BYTE;

x_LeadingZero :BOOL;

typ_DataType :MMI_WRITE_TYPE;

udi_IntValue :UDINT

r_FloatValue :REAL;

x_Reverse :BOOL;

x_Blink :BOOL;

x_Error :BYTE;

END_STRUCT

END_TYPE

TYPE MMI_WRITE_TYPE:

( WRITE_USINT,

WRITE_UINT,

WRITE_SINT,

WRITE_INT,

WRITE_UDINT,

WRITE_DINT,

WRITE_REAL):=WRITE_USINT;

END_TYPE

02/05 AWB2786-1456D Visualisierungsbausteine

7

4

Beispiel:

Zwei Integerwerte (einer ohne und einer mit führenden Nullen) sollen auf dem Display angezeigt werden.

WriteStringString schreiben

Operandenbedeutung

BeschreibungDer Baustein schreibt einen String von alphanummerischen Zeichen an die parametrierte Stelle des Displays.

Mit einer positiven Flanke am Eingang „x_Strobe“ wird der String auf dem Display angezeigt. Vor und nach dem String liegende Zeichen werden nicht gelöscht.

Die Nummer des zu ladenden Fontsatzes, mit dem der String dargestellt werden soll, ist in der XSoft unter ‹Steuerungs-konfiguration r Weitere Parameter› im Fenster „Visualisierung“ zu finden.

Fehlermeldungen:

PROGRAM PLC_PRG

VAR

WriteMultiValue: WriteMultiValue;

Wert0: MMI_VALUE_OBJ;

Wert1: MMI_VALUE_OBJ;

Zaehler: UINT;

END_VAR

(* Automatischer Zählwert *)

Zaehler:=Zaehler+1;

IF Zaehler=30000

THEN Zaehler:=0;

END_IF;

(* Wertübergabe an die Struktur *)

Wert0.b_Line:=2;

Wert0.b_Column:=19;

Wert0.typ_DataType:=WRITE_UINT;

Wert0.udi_IntValue:=Zaehler;

Wert0.b_Digits:=5;

Wert1.b_Line:=4;

Wert1.b_Column:=17;

Wert1.typ_DataType:=WRITE_UINT;

Wert1.udi_IntValue:=Zaehler;

Wert1.b_Digits:=7;

Wert1.x_LeadingZero:=1;

(* Bausteinparametrierung *)

WriteMultiValue(x_Strobe:=TRUE , usi_Number:=2 , p_typ_Value_0:=ADR(Wert0) , p_typ_Value_1:=ADR(Wert1) );

WriteMultiValue(x_Strobe:=FALSE);

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Parameter mit positiver Flanke

b_Line Zeilennummer [0 ... 7]

b_Column Spaltennummer [0 ... 39]

b_Font Nummer des Fontsatzes [0 ... 4]

b_Text String

x_Reverse inverse Darstellung des Wertes [0,1]1 = invers

x_Blink blinkende Darstellung des Wertes

[0,1]1 = blinkend

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

WriteString

BOOL x_Strobe x_Active BOOLBYTE b_Line b_Error BYTEBYTE b_ColumnBYTE b_Font

STRING (40) stri_TextBOOL x_ReverseBOOL x_Blink

Visualisierungsbausteine: Visu.lib

02/05 AWB2786-1456D

48

Beispiel:

Nach Betätigen der Funktionstaste F2 soll der Text „Moeller XVision“ in der zweiten Displayzeile blinkend angezeigt werden.

WriteStringTextDBString aus Textdatei schreiben

Operandenbedeutung

BeschreibungMit einer positiven Flanke am Eingang „x_Strobe“ schreibt der Baustein einen String von alphanummerischen Zeichen an die parametrierte Stelle auf das Display.

Der zu schreibende String wird über die Eingänge „ui_Language“ (Spaltennummer) und „ui_Text“ (Zeilennummer) aus der Text-datei aufgerufen.

Struktur der Textdatei:

Die Textdatei wird in der XSoft unter ‹Ressourcen l Steuerungs-konfiguration l Weitere Parameter› nach Anklicken der Schalt-fläche „Toolbox“ erstellt und über die Schaltfläche „Laden“ in die XV100 transferiert.

Die Nummer des zu ladenden Fontsatzes, mit dem der Wert dargestellt werden soll, ist in der XSoft unter unter ‹Steuerungs-konfiguration l Weitere Parameter› im Fenster „Visualisierung“ zu finden.

Fehlermeldungen:

PROGRAM PLC_PRG

VAR

WriteString: WriteString;

END_VAR

(* Bausteinparametrierung *)

WriteString(x_Strobe:=XVFunction_F2 , b_Line:=2 , b_Column:=0 , stri_Text:='Moeller XVision' , x_Blink:=1 );

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Parameter mit positiver Flanke

b_Line Zeilennummer [0 ... 7]

b_Column Spaltennummer [0 ... 39]

b_Font Nummer des Fontsatzes [0 ... 4]

ui_Language Nummer der Sprache [1 ... n]

ui_Text Textnummer [1 ... n]

x_Reverse inverse Darstellung des Wertes [0,1]1 = invers

x_Blink blinkende Darstellung des Textes [0,1]1 = blinkend

x_Active Baustein aktiv

b_Error Fehlermeldungen

WriteStringTextDB

BOOL x_Strobe x_Active BOOLBYTE b_Line b_Error BYTEBYTE b_ColumnBYTE b_FontUINT ui_LanguageUINT ui_Text

BOOL x_ReverseBOOL x_Blink

Sprache 1 Sprache 2 . . . Sprache n

1 Text 1 Text 1 Text 1

2 Text 2 Text 2 Text 2

... ... ... ...

n Text n Text n Text n

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

4 Text nicht vorhanden

02/05 AWB2786-1456D Visualisierungsbausteine

9

4

WriteSysDateDatum schreiben

Operandenbedeutung

BeschreibungMit einer positiven Flanke am Eingang „x_Strobe“ schreibt der Baustein das Datum an die parametrierte Display-Position.

Die Nummer des zu ladenden Fontsatzes, mit dem der Wert darge-stellt werden soll, ist in der XSoft unter ‹Steuerungskonfiguration r Weitere Parameter› im Fenster „Visualisierung“ zu finden.

Format: 27.05.2002

Fehlermeldungen:

WriteSysDayWochentag schreiben

Operandenbedeutung

BeschreibungMit einer positiven Flanke am Eingang „x_Strobe“ schreibt der Baustein den Wochentag an die parametrierte Display-Position.

Die Nummer des zu ladenden Fontsatzes, mit dem der Wert darge-stellt werden soll, ist in der XSoft unter ‹Steuerungskonfiguration r Weitere Parameter› im Fenster „Visualisierung“ zu finden.

Fehlermeldungen:

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Parameter mit positiver Flanke

b_Line Zeilennummer [0 ... 7]

b_Column Spaltennummer [0 ... 39]

b_Font Nummer des Fontsatzes [0 ... 4]

x_Reverse inverse Darstellung des Wertes [0,1]1 = invers

x_Blink blinkende Darstellung des Wertes

[0,1]1 = blinkend

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

WriteSysDate

BOOL x_Strobe x_Active BOOLBYTE b_Line b_Error BYTEBYTE b_ColumnBYTE b_FontBOOL x_ReverseBOOL x_Blink

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Parameter mit positiver Flanke

b_Line Zeilennummer [0 ... 7]

b_Column Spaltennummer [0 ... 39]

b_Font Nummer des Fontsatzes [0 ... 4]

x_Reverse inverse Darstellung des Wertes [0,1]1 = invers

x_Blink blinkende Darstellung des Wertes

[0,1]1 = blinkend

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

WriteSysDay

BOOL x_Strobe x_Active BOOLBYTE b_Line b_Error BYTEBYTE b_ColumnBYTE b_FontBOOL x_ReverseBOOL x_Blink

Visualisierungsbausteine: Visu.lib

02/05 AWB2786-1456D

50

WriteSysTimeUhrzeit schreiben

Operandenbedeutung

BeschreibungMit einer positiven Flanke am Eingang „x_Strobe“ schreibt der Baustein die Uhrzeit an die parametrierte Display-Position.

Die Nummer des zu ladenden Fontsatzes, mit dem der Wert darge-stellt werden soll, ist in der XSoft unter ‹Steuerungskonfiguration r Weitere Parameter› im Fenster „Visualisierung“ zu finden.

Format: 12:05:30

Fehlermeldungen:

WriteValue(Ist-)Wert schreiben

Operandenbedeutung

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Parameter mit positiver Flanke

b_Line Zeilennummer [0 ... 7]

b_Column Spaltennummer [0 ... 39]

b_Font Nummer des Fontsatzes [0 ... 4]

x_Reverse inverse Darstellung des Wertes [0,1]1 = invers

x_Blink blinkende Darstellung des Wertes

[0,1]1 = blinkend

x_Active Baustein aktiv

b_Error Fehlermeldungen

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

WriteSysTime

BOOL x_Strobe x_Active BOOLBYTE b_Line b_Error BYTEBYTE b_ColumnBYTE b_FontBOOL x_ReverseBOOL x_Blink

Prototyp des Funktionsbausteins

x_Strobe Übernahme der Parameter mit positiver Flanke

b_Line Zeilennummer [0 ... 7]

b_Column Spaltennummer [0 ... 39]

b_Font Nummer des Fontsatzes [0 ... 4]

b_Digits Stellenzahl [0 ... 39]

b_Precision Anzahl Nachkommastellen [0 ... 39]

x_LeadingZero führende Nullen [0,1] 1 = mit führenden Nullen

typ_DataType Datentyp der geschrieben werden soll (siehe Datentyp MMI_WRITE_TYPE)

udi_IntValue zu schreibender Integer-Wert

r_FloatValue zu schreibender Real-Wert

x_Reverse inverse Darstellung des Wertes [0,1]

1 = invers

x_Blink blinkende Darstellung des Wertes [0,1]

1 = blinkend

x_Active Baustein aktiv

b_Error Fehlermeldungen

WriteValue

BOOL x_Strobe x_Active BOOLBYTE b_Line b_Error BYTEBYTE b_ColumnBYTE b_FontBYTE b_DigitsBYTE b_PrecisionBOOL x_LeadingZero

MMI_WRITE_TYPE typ_DataTypeUDINT udi_IntValue

REAL r_FloatValueBOOL x_ReverseBOOL x_Blink

02/05 AWB2786-1456D Visualisierungsbausteine

1

5

BeschreibungMit einer positiven Flanke am Eingang „x_Strobe“ wird der Wert am Eingang „udi_IntValue“ oder „r_FloatValue“ auf das Display geschrieben. Der Wert am Eingang „udi_IntValue“ wird im „Integer“-Format, der Wert am Eingang „r_FloatValue“ im „Real“-Format angezeigt.

Der am Eingang „typ_DataType“ anliegende Datentyp entscheidet, welcher Wert angezeigt wird (siehe MMI_WRITE_TYPE).

Die Nummer des zu ladenden Fontsatzes, mit dem der Wert darge-stellt werden soll, ist in der XSoft unter ‹Steuerungskonfiguration r Weitere Parameter› im Fenster „Visualisierung“ zu finden.

Der Dezimalpunkt bei der Darstellung von Real-Zahlen belegt eine Stelle:

Beispiel: Digits: 6, Precision: 2

Datentyp: MMI_WRITE_TYPE[ENUM]:

Fehlermeldungen:

Beispiel:

Es soll ein Real-Wert mit einer Kommastelle in der dritten Zeile des Displays angezeigt werden. Mit der Funktionstaste F1 soll der Wert in 0.1-Schritten hochgezählt werden.

1 4 9 . 3 0

TYPE MMI_WRITE_TYPE:

( WRITE_USINT,

WRITE_UINT,

WRITE_SINT,

WRITE_INT,

WRITE_UDINT,

WRITE_DINT,

WRITE_REAL):=WRITE_USINT;

END_TYPE

0 kein Fehler

1 ungültiger Parameter

2 Bausteinanzahl überschritten

PROGRAM PLC_PRG

VAR

WriteValue: WriteValue;

Zaehler: REAL;

FlankeF1: R_TRIG;

END_VAR

(* Flanke und Zählwert *)

FlankeF1(CLK:=XVFunction_F1);

IF FlankeF1.Q=TRUE

THEN

Zaehler:=Zaehler+0.1;

END_IF;

(* Bausteinparametrierung *)

WriteValue(x_Strobe:=XVFunction_F1, b_Line:=2 , b_Column:=18 , b_Digits:=4 , b_Precision:=1,

typ_DataType:=WRITE_REAL , r_FloatValue:=Zaehler );

02/05 AWB2786-1456D

52

02/05 AWB2786-1456D

3

5

5 Zähler-Bausteine: counter.lib (für XIOC-1(2)CNT-100 kHz)

Zur Programmierung des Counter-Moduls XIOC-1(2)CNT-100kHz stehen fünf Funktionsbausteine (FBs) zur Verfügung:

• Countercontrol• ReadCounter• WriteCounter• CounterFlags• XIOC_IncEncoder

Zählerbausteine

CounterControlEin-/Ausgänge des Moduls freigeben

Operandenbedeutung

BeschreibungMit diesem Baustein werden die Zähler (Kanal 1 und 2) sowie einige Ein-/Ausgänge des Moduls freigegeben.

Den Eingängen (siehe folgenden Tabelle) ist je ein Flag zuge-schaltet. Wird an den Eingängen ein „1“-Signal angelegt, werden die Funktionen nach dem „Strobe“-Signal ausgeführt und die Flags gesetzt. Sie können die Flags mit dem Befehl READFLAGS am Baustein CounterFlags abfragen. Zum Rücksetzen ist ein „0“-Signal an den Eingang anzulegen sowie ein positiver Impuls am Eingang „Strobe“.

Alle Flags (außer EC) behalten ihren Zustand bei, wenn der Zustand der CPU von RUN l STOP bzw. STOP l RUN wechselt.

h Die Bibliothek heißt bei der XC100 nur „counter.lib“; bei der XC200 „XC200_counter.lib“.

Prototyp des Funktionsbausteins

Strobe Mit einer steigenden Flanke („1“-Signal) werden die Eingangsparameter übernommen

SlotNumber 1, 2, ... ,15 (kompletten Text eingeben, z. B. SLOT2)

für Kanal 1:

Counter1Enable Die Zählerfunktion wird freigegeben. Sobald der Eingang TRUE ist, werden die Geberimpulse gezählt. Wird der Eingang im Betrieb auf FALSE gesetzt, werden die eintreffenden Impulse nicht erkannt.

ReferenceMarker1Enable

In der Zählerart „Linear-Zähler“ kann der Eingang zum Empfang des Marker- (Referenz-) Gebersignals freigeschaltet werden. Polarität beachten! Die Einstellung erfolgt am Betriebs-arten-Schalter (DIP-Schalter); In der Zählerart „Ring-Zähler“: keine Funktion

CounterControl

BOOL Strobe Error BYTESLOT SlotNumber

BOOL Counter1EnableBOOL ReferenceMarker1EnableBOOL CompareOutput1EnableBOOL ClearEqual1BOOL Counter2EnableBOOL ReferenceMarker2EnableBOOL CompareOutput2EnableBOOL ClearEqual2

CompareOutput1Enable

Die definierten Modulausgänge („=“ und „>“ bei Linearzähler; „=“ bei Ringzähler) werden bei TRUE freigeschaltet; bei FALSE gesperrt (die Ausgänge haben „0“-Signal).

ClearEqual1 Ein „1“-Signal am Eingang setzt die Modul-ausgänge („=“ und „>“ bei Linear-Zähler; „=“ bei Ring-Zähler) und das EqualFlag (EQ) auf „0“-Signal. Danach ist ein „0“-Signal an den Eingang anzulegen, damit Ausgang und Flag wieder gesetzt werden können.

für Kanal 2:

Counter2Enable wie Kanal 1

ReferenceMarker2Enable

wie Kanal 1

CompareOutput2Enable

wie Kanal 1

ClearEqual2 wie Kanal 1

Error 1: falscher Slot2: kein Modul gesteckt oder kein Zähler3: Modul antwortet nicht

Bezeichnung der Eingänge

Bezeichnung der Flags

CounternEnable CE

ReferenceMarkernEnable ME

CompareOutputnEnable OE

ClearEqualn EC

Zähler-Bausteine: counter.lib (für XIOC-1(2)CNT-100 kHz)

02/05 AWB2786-1456D

54

ReadCounterZähler-, Vergleichs- und Vorgabewerte anzeigen

Operandenbedeutung

BeschreibungMit diesem Baustein werden automatisch kontinuierlich je nach Befehl angezeigt:

• die aktuellen Zählerwerte (READCURRENTVALUE),• die parametrierten Vergleichswerte

(READSETTINGVALUEn; n = 1, 2) oder• die parametrierten Vorgabewerte (READPRESETVALUE).

Die Werte stehen in Form von mehreren Datentypen zur Verfügung.

Die Variable READCOMMAND ist vom Typ ENUM und enthält die Befehle (Werte):

• READSETTINGVALUE1: Lesen des gesetzten Vergleichswert 1• READSETTINGVALUE2: Lesen des gesetzten Vergleichswert 2• READPRESETVALUE: Lesen des gesetzten Vorgabewertes• READCURRENTVALUE: Lesen des Istwertes.

WriteCounterZähler-, Vergleichs- und Vorgabewerte parametrieren

Operandenbedeutung

BeschreibungMit diesem Baustein können Sie – je nach Befehl – die Zählerwerte (WRITECURRENTVALUE), die Vergleichswerte (WRITESETTING-VALUEn; n = 1, 2) oder die Vorgabewerte (WRITEPRESETVALUE) parametrieren.

Die Variable CHANNELSELECT ist vom Typ ENUM und enthält die Auswahl (Werte):

• CHANNEL1• CHANNEL2• BOTH

Die Variable WRITECOMMAND ist vom Typ ENUM und enthält die Befehle (Werte):

• WRITESETTINGVALUE1: Setzen des Vergleichswert 1• WRITESETTINGVALUE2: Setzen des Vergleichswert 2• WRITEPRESETVALUE: Setzen des Vorgabewertes• WRITECURRENTVALUE: Setzen des Istwertes.

Der Wert ist am Eingang „Data“ anzulegen.

Prototyp des Funktionsbausteins

SlotNumber 1, 2, ... ,15 (kompletten Text eingeben, z. B. SLOT2)

Command READCOMMAND

DataLowChannel1 niederwertiges Wort, Kanal 1

DataHighChannel1 höherwertiges Wort, Kanal 1

DataLowChannel2 niederwertiges Wort, Kanal 2

DataHighChannel2 höherwertiges Wort, Kanal 2

Output1_UDINT Wert Kanal1 (UDINT)

Output1_DINT Wert Kanal1 (DINT)

Output2_UDINT Wert Kanal2 (UDINT)

Output2_DINT Wert Kanal2 (DINT)

Error 1: falscher Slot2: kein Modul gesteckt oder kein Zähler3: Modul antwortet nicht

ReadCounter

SLOT SlotNumber DataLowChannel1 WORDREAD

COMMANDCommand DataHighChannel1 WORD

DataLowChannel2 WORDDataHighChannel2 WORD

Output1_UDINT UDINTOutput1_DINT DINT

Output2_UDINT UDINTOutput2_DINT DINT

Error BYTE Prototyp des Funktionsbausteins

Strobe Mit einer steigenden Flanke („1“-Signal) werden die Eingangsparameter übernommen

SlotNumber 1, 2, ... ,15 (kompletten Text eingeben, z. B. SLOT2)

Channel CHANNELSELECT

Command WRITECOMMAND

Data Eingabewert

Error 1: falscher Slot2: kein Modul gesteckt oder kein Zähler3: Modul antwortet nicht

WriteCounter

BOOL Strobe Error BYTESLOT SlotNumber

CHANNELSELECT ChannelWRITECOMMAND Command

DINT Data

02/05 AWB2786-1456D Zählerbausteine

5

5

CounterFlagsFunktionen aktivieren und Zustände abfragen

Operandenbedeutung

BeschreibungMit diesem Baustein können Sie Funktionen aktiv schalten und Zustände abfragen.

Die Variable CHANNELSELECT ist vom Typ ENUM und enthält die Auswahl (Werte)

• CHANNEL1• CHANNEL2• BOTH

Die Variable FLAGCOMMAND ist vom Typ ENUM und enthält die Befehle (Werte):

• SPECIFYOUTPUT• CLEAROVERFLOW• CLEARUNDERFLOW• READFLAGS

SPECIFYOUTPUT:Mit diesem Befehl wird das am Eingang „OutputSpecification“ angelegte Wort übernommen. Voraussetzung: Der Counter-Enable-Eingang (Flag) darf nicht gesetzt sein. In diesem Wort enthält jedes Bit eine Information über die Bedingungen, die zum Setzen der Modulausgänge Y0, Y1, Y2 und Y3 führen.

Mit Hilfe der folgenden Tabelle legen Sie die Bedingungen fest.

Tabelle 3: Bedingungen zum Setzen der Modulausgänge

Zunächst bestimmen Sie die Angabe der Kanalnummer (CH1/CH2) und die Art des Ausgangs. Sie können einen „Latch“-Ausgang“ und/oder „Level“-Ausgang auswählen.

„Latch“-Ausgang (=): Wird die Bedingung „Istwert = Vergleichs-wert“ erfüllt, wird ein Ausgang Y gesetzt. Er bleibt so lange gesetzt, bis der Eingang „ClearEqual n“ einen positiven Impuls erhält. Er wird durch das Zeichen „=“ symbolisiert.

„Level“-Ausgang: Nur wenn die Bedingung „Istwert = Vergleichs-wert“ erfüllt wird, führt ein Ausgang Y „1“-Signal. Sinkt der Istwert wieder unter den Vergleichswert, wird er auf „0“ gesetzt. Er wird durch das Zeichen „>“ dargestellt.

Es können pro Bedingung („=“ oder „>“) mehrere Ausgänge gesetzt werden. Es ist nicht möglich, einen Ausgang, z. B. Y0, fest-zulegen, der angesteuert werden soll, wenn beide Bedingungen erfüllt sind.

Beispiel:

Dem Kanal „1“ werden die Ausgänge Y0 und Y1 zugeordnet. Der Ausgang Y0 wird gesetzt, wenn die „=“-Bedingung erfüllt wird (Latch), der Ausgang Y1 wird gesetzt, wenn die „>“-Bedingung erfüllt wird (Level).

An den Eingang „OutputSpecification“ ist das Bitmuster 0021 hex anzulegen:

CLEAROVERFLOW:Das OVERFLOW-Flag wird gesetzt, wenn der Zähler den maxi-malen Zählwert FFFFFFFFhex überschritten hat (Neuer Wert: 0). Das Flag bleibt gesetzt, bis es mit dem Kommando CLEAEROVER-FLOW gelöscht wird.

Den Zustand des Flags können Sie mit dem Befehl READFLAGS am Baustein CounterFlags abfragen. Am Ausgang „StatusChanneln“ des Bausteins COUNTERCONTROL werden 16 Bit angezeigt.

Bit 9 (OF) zeigt den Zustand des Overflow-Flag an.

Prototyp des Funktionsbausteins

Strobe Mit einer steigenden Flanke („1“-Signal) werden die Eingangsparameter über-nommen.

SlotNumber 1, 2, ... ,15 (kompletten Text eingeben, z. B. SLOT2)

Channel CHANNELSELECT

Command FLAGCOMMAND

OutputSpecification siehe SPECIFYOUTPUT

Error 1 falscher Slot

2 kein Modul gesteckt oder kein Zähler

3 Modul antwortet nicht

4 Kanal aktiv, Kommando kann nicht ausgeführt werden.

Outputs siehe READFLAGS/ Outputs

StatusChannel1 siehe READFLAGS/ StatusChannel

OutputsChannel1 siehe READFLAGS/ OutputsChannel

StatusChannel2 siehe READFLAGS/ StatusChannel

OutputsChannel2 siehe READFLAGS/ OutputsChannel

CounterFlags

BOOL Strobe Error BYTESLOT SlotNumber Outputs WORD

CHANNELSELECT Channel StatusChannel1 WORDFLAGCOMMAND Command OutputsChannel1 WORD

WORD OutputSpecification StatusChannel2 WORDOutputsChannel2 WORD

Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Vergleich > = > = > = > = > = > = > = > =

Kanal 2 1 2 1 2 1 2 1

Ausgang Y3 Y2 Y1 Y0

Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Wert 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1

Zähler-Bausteine: counter.lib (für XIOC-1(2)CNT-100 kHz)

02/05 AWB2786-1456D

56

CLEARUNDERFLOW:Das UNDERFLOW-Flag wird gesetzt, wenn der Zähler den mini-malen Zählwert „0“ unterschritten hat (Neuer Wert: FFFFFFFFhex). Das Flag bleibt gesetzt, bis es mit dem Kommando CLEARUNDER-FLOW gelöscht wird.

Der Zustand des Flags kann mit dem Befehl READFLAGS am Baustein CounterFlags abgefragt werden. Am Ausgang „StatusChanneln“ des Bausteins „CounterControl“ werden 16 Bit angezeigt.

Bit 8 (UF) zeigt den Zustand des Underflow-Flag an.

READFLAGS:Nach der Befehlsvorgabe READFLAGS und einer steigende Flanke am Eingang „Strobe“ werden die Bausteinausgänge „Outputs“, „StatusChannel n“, „OutputsChannel n“ aktualisiert. Ihre Zustände werden eingefroren, bis eine erneute Flanke auftritt.

Die Zustände von „StatusChannel“ und „OutputsChannel“ werden für die Kanäle „1“ und „2“ (n) angezeigt.

Outputs: Von den 16 Bit haben nur Bit 0 bis 3 eine Bedeutung:

Bedeutung der Bit: Y0 bis Y3:0: Ausgang „0“-Signal1: Ausgang „1“- Signal

StatusChannel n (n = 1, 2)

Bedeutung der Bit:Die Zustände der Bit (außer EC) bleiben bei einem CPU-Zustands-wechsel RUN l Stop oder STOP l RUN erhalten.

OutputsChannel n (n = 1, 2)

Die im Wort enthaltenen Bit zeigen an, von welcher Bedingung ein Ausgang abhängig ist.

Bedeutung der Bit:

Beispiel:

0021 hex (0000 0000 0010 0001) zeigt an, dass

• der Ausgang Y1 gesetzt wird, wenn der Istwert > Sollwert ist• der Ausgang Y0 gesetzt wird, wenn der Istwert = Sollwert ist.

Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Wert 0 0 0 0 0 0 0 0 0 0 0 0 Y3 Y2 Y1 Y0

Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Wert 0 0 0 0 0 U/D 0F UF 0 0 0 EQ EC OE ME CE

CE Zähler freigeben(Defaultwert = 0)0: keine Freigabe1: Freigabe erfolgt

ME Marker- (Referenz-)Eingang freigeben (Defaultwert = 0)0: keine Freigabe1: Freigabe erfolgt

OE Ausgang (Y) freigeben (Defaultwert = 0)0: keine Freigabe1: Freigabe erfolgt

EC Equal Flag löschen (Defaultwert = 0)Wird die Funktion (Eingang) „ClearEqual n“ des Bausteins CounterControl auf TRUE gesetzt, ist EC n = FALSE.Wird sie auf FALSE gesetzt, ist EC = TRUE.

EQ Zustand Equal FlagEs wird auf „1“-Signal gesetzt, wenn Istwert = Vergleichs-wert. Es bleibt gesetzt, bis am Eingang „ClearEqual n“ des Bausteins CounterControl ein „1“-Signal angelegt wird. Zur Ausführung ist am „Strobe“-Eingang eine positive Flanke anzulegen.

UF Zustand Underflow FlagEs wird gesetzt, wenn der Istwert von „0“ auf „4294967296“ (FFFFFFFFhex) wechselt. Es bleibt gesetzt, bis am Eingang „Command“ des Bausteins „CounterControl-Flags“ der Befehl CLEARUNDERFLOW eingetragen wird. Zur Ausführung des Befehls ist am „Strobe“-Eingang eine positive Flanke anzulegen. Die Ausgangsworte „Outputs“, „StatusChannel n“, „OutputsChannel n“ werden auf „0“ gesetzt.

OF Zustand Overflow FlagEs wird gesetzt, wenn der Istwert von 4294967296 (FFFFFFFFhex) auf „0“ wechselt. Es bleibt gesetzt, bis am Eingang „Command“ des Bausteins „CounterControlFlags“ der Befehl CLEAROVERFLOW eingetragen wird. Zur Ausfüh-rung des Befehls ist am „Strobe“-Eingang eine positive Flanke anzulegen. Die Ausgangsworte „Outputs“, „Status-Channel n“, „OutputsChannel n“ werden auf „0“ gesetzt.

U/D Up/Down0: wenn der Istwert von „n“ auf „n – 1“ gewechselt hat1: wenn der Istwert von „n“ auf „n + 1“ gewechselt hat.

Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Wert 0 0 > = 0 0 > = 0 0 > = 0 0 > =

Ausgang Y3

02/05 AWB2786-1456D Zählerbausteine

7

5

XIOC_IncEncoderImpulse von Inkrementalgebern zählen und referenzieren

Operandenbedeutung)

BeschreibungDer Funktionsbaustein zählt die Impulse von Inkrementalgebern, die an die Module XIOC-1CNT-100KHZ oder XIOC-2CNT-100KHZ angeschlossen sind. Es können folgende Funktionen ausgeführt werden:

• Referenzieren anstoßen• Art des Referenzierens definieren• Vorgabe des Zählwertes zum Zeitpunkt des Nulldurchgangs

(Grundposition)• Zählwerte zu den Inkrementalgebern abfragen.

Mit dem Funktionsbaustein kann das Referenzieren für 2 Kanäle (2 Inkrementalgeber) durchgeführt werden. Nachfolgend sind die Funktionen zu Kanal 1 beschrieben. Zu Kanal 2 (nur bei XIOC-2CNT-100KHZ vorhanden) sind die gleichen Funktionen verfügbar.

Prototyp des Funktionsbausteins

Input

Reference_input1_BOOL Übernahme des Referenzwertes für Kanal 1 bei steigender Flanke (Referenzier-modus = 0) oder Aktivieren (scharf machen) der Hardware-Referenzierung (Referenziermodus = 1 + 2)

Reference_mode1_UINT Art des Referenzierens für Kanal 1:

0: durch steigende Flanke an Reference_input1_BOOL

1: einmal durch Hardware nach Akti-vieren von Reference_input1_BOOL

2: permanent durch Hardware nach Aktivieren von Reference_input1_BOOL

Reference_value1_DINT Startwert (32 Bit) des Zählers für Kanal 1

Reference_input2_BOOL Übernahme des Referenzwertes für Kanal 2 bei steigender Flanke (Referen-ziermodus = 0) oder Aktivieren (scharf machen) der Hardware-Referenzierung (Referenziermodus = 1 + 2)

Reference_mode2_UINT Art des Referenzierens für Kanal 2:

0: durch steigende Flanke an Reference_input2_BOOL

1: einmal durch Hardware nach Akti-vieren von Reference_input2_BOOL

2: permanent durch Hardware nach Aktivieren von Reference_input2_BOOL

Reference_value2_DINT Startwert (32 Bit) des Zählers für Kanal 2

SlotNumber : Slotnummer des XIOC-Countermoduls :1, 2, ... ,15 (kompletten Text eingeben, z. B. SLOT2)

XIOC_IncEncoder

BOOL Reference_input1_BOOL Output1_DINT DINTUINT Reference_mode1_UINT Output1_UDINT UDINTDINT Reference_value1_DINT Output1_UINT UINT

BOOL Reference_input2_BOOL Reference_output1_BOOL BOOLUINT Reference_mode2_UINT Output2_DINT DINTDINT Reference_value2_DINT Output2_UDINT UDINTSLOT SlotNumber Output2_UINT UINT

Reference_output2_BOOL BOOLError_ReadCounter_BYTE BYTE

Output

Output1_DINT Aktueller Zählerstand 32 Bit, bipolar für Kanal 1

Output1_UDINT Aktueller Zählerstand 32 Bit, unipolar für Kanal 1

Output1_UINT Aktueller Zählerstand 16 Bit, unipolar für Kanal 1

Reference_output1_BOOL Hardwarereferenzieren aktiviert für Kanal 1:

1: Hardwarereferenzieren aktiviert (Referenzmodus 1 und 2)

0: Hardwarereferenzieren deaktiviert, da einmalig ausgeführt (Referenz-modus 1)

Output2_DINT Aktueller Zählerstand 32 Bit, bipolar für Kanal 2

Output2_UDINT Aktueller Zählerstand 32 Bit, unipolar für Kanal 2

Output2_UINT Aktueller Zählerstand 16 Bit, unipolar für Kanal 2

Reference_output2_BOOL Hardwarereferenzieren aktiviert für Kanal 2:

1: Hardwarereferenzieren aktiviert (Referenzmodus 1 und 2)

0: Hardwarereferenzieren deaktiviert, da einmalig ausgeführt (Referenz-modus 1)

Error_ReadCounter_BYTE 1: Falscher Slot

2: kein Modul gesteckt oder kein Zähler

3: Modul antwortet nicht

h Die Hardware mit den Einstellmöglichkeiten für die Betriebsart und die Potentialzuordnung der Eingänge ist im Handbuch „XI/OC-Signalmodule (AWB2725-1452D) beschrieben. Dieses Handbuch gibt es online als PDF-Datei unter www.moeller.net l support. Geben Sie hier die Handbuch-Nr. als Suchbegriff ein.

Zähler-Bausteine: counter.lib (für XIOC-1(2)CNT-100 kHz)

02/05 AWB2786-1456D

58

Mit dem Eingang „Reference_mode1_UINT“ können folgende Referenziermodi ausgewählt werden:

Referenziermodus 1:Wenn Sie den Referenziervorgang aktiviert haben, wird der Zählwert aus technischen Gründen zunächst auf 1000000000 gesetzt. Der Ausgang „Reference_output1_BOOL“ zeigt dann mit dem Zustand „1“ an, dass das Hardwarereferenzieren aktiviert wurde. Beim Referenzieren (wenn der Inkrementalgeber das Nullmarkersignal ausgibt) wird dann der Zählwert mit „Reference_value1_DINT“ initialisiert (Referenziermodus 0 + 1 + 2). Der Ausgang Reference_output1_BOOL hat dann den Zustand „0“.

Referenziermodus 2:Der Ausgang „Reference_output1_BOOL“ bleibt dauerhaft auf „1“, da das Hardwarereferenzieren ständig aktiviert bleibt.

Von den Ausgängen „Output1_DINT“, „Output1_UDINT“ und „Output1_UINT“ wird der Zählwert in unterschiedlichen Daten-formaten ausgegeben.

Anwendungsbeispiel:

0 = Referenzieren mit Software bei jeder steigenden Flanke von „Reference_input1_BOOL“

1 = Einmaliges Referenzieren durch Hardware nach Setzen von „Reference_input1_BOOL = 1“

2 = Permanentes Referenzieren durch Hardware (bei jedem Null-markersignal des Inkrementalgebers) nach Setzen von „Reference_input1_BOOL = 1“

h Das Referenzieren durch Hardware erfolgt, wenn der Inkrementalgeber ein Referenzsignal ausgibt (normaler-weise einmal pro Umdrehung). Dieses Signal muss dem XIOC-CNT1/2-100KHZ-Modul zugeführt werden.

h Zum Thema „Motion Control“ steht die Motion-Control-Toolbox (XSOFT-APPLIB-MOTIONCONTROL) mit dem Handbuch AWB2700-1454D zur Verfügung.

PROGRAM Test_XIOC_Counter_module

VAR

XIOC_Counter_module_slot1 : XIOC_IncEncoder ;

Falling_edge : F_TRIG ;

Activate_referencing_with_hardware : BOOL ;

Actual_position : DINT ;

Hardware_referencing_activated : BOOL ;

Referencing_finished : BOOL ;

END_VAR

CAL XIOC_Counter_module_slot1(

Reference_input1_BOOL:=Activate_referencing_with_hardware ,

Reference_mode1_UINT:=1 ,

Reference_value1_DINT:=10000 ,

SlotNumber:=Slot1 ,

Output1_DINT=>Actual_position )

LD XIOC_Counter_module_slot1.Reference_output1_BOOL

ST Hardware_referencing_activated

LD XIOC_Counter_module_slot1.Reference_output1_BOOL

ST Falling_edge.CLK

CAL Falling_edge

LD Falling_edge.Q

S Referencing_finished

END_PROGRAM

02/05 AWB2786-1456D

9

5

6 Zähler-Bausteine: Counter_Analog.lib (für XIOC-2CNT-2AO-NC)

Zur Programmierung des Counter-Analog-Moduls XIOC-2CNT-2AO-INC stehen zwei Funktionsbausteine (FBs) zur Verfügung:

• Inkrementalgeberauswertung• Analogwertausgabe.

XIOC_2CNT2AO_INCInkrementalgeberauswertung

Operandenbedeutung)

Prototyp des Funktionsbausteins

Input

Reference_input1_BOOL Übernahme des Referenzwertes für Kanal 1 bei steigender Flanke (Referenzier-modus = 0) oder Aktivieren (scharf machen) der Hardware-Referenzierung (Referenziermodus = 1 + 2)

Reference_mode1_UINT(a Abschnitt „Einstel-lungen“ auf Seite 60)

Art des Referenzierens für Kanal 1:

0: durch steigende Flanke an Reference_input1_BOOL

1: einmal durch Hardware nach Akti-vieren von Reference_input1_BOOL

2: permanent durch Hardware nach Aktivieren von Reference_input1_BOOL

Reference_value1_DINT Startwert (32 Bit) des Zählers für Kanal 1 nach dem Referenzieren

Reference_input2_BOOL Übernahme des Referenzwertes für Kanal 2 bei steigender Flanke (Referen-ziermodus = 0) oder Aktivieren (scharf machen) der Hardware-Referenzierung (Referenziermodus = 1 + 2)

XIOC_2CNT2AO_INC

BOOL Reference_input1_BOOL Output1_DINT DINTUINT Reference_mode1_UINT Output1_UDINT UDINTDINT Reference_value1_DINT Output1_UINT UINT

BOOL Reference_input2_BOOL Reference_output1_BOOL BOOLUINT Reference_mode2_UINT Output2_DINT DINTDINT Reference_value2_DINT Output2_UDINT UDINTSLOT SlotNumber Output2_UINT UINT

Reference_output2_BOOL BOOLError_BYTE BYTE

Reference_mode2_UINT(a Abschnitt „Einstel-lungen“ auf Seite 60)

Art des Referenzierens für Kanal 2:

0: durch steigende Flanke an Reference_input2_BOOL

1: einmal durch Hardware nach Akti-vieren von Reference_input2_BOOL

2: permanent durch Hardware nach Aktivieren von Reference_input2_BOOL

Reference_value2_DINT Startwert (32 Bit) des Zählers für Kanal 2 nach dem Referenzieren

SlotNumber : Slotnummer des XIOC-Countermoduls :1, 2, ... ,15 (kompletten Text eingeben, z. B. SLOT2)

Output

Output1_DINT Aktueller Zählerstand 32 Bit, bipolar für Kanal 1

Output1_UDINT Aktueller Zählerstand 32 Bit, unipolar für Kanal 1

Output1_UINT Aktueller Zählerstand 16 Bit, unipolar für Kanal 1

Reference_output1_BOOL Hardwarereferenzieren aktiviert für Kanal 1:

1: Hardwarereferenzieren aktiviert (Referenzmodus 1 und 2)

0: Hardwarereferenzieren deaktiviert, da einmalig ausgeführt (Referenz-modus 1)

Output2_DINT Aktueller Zählerstand 32 Bit, bipolar für Kanal 2

Output2_UDINT Aktueller Zählerstand 32 Bit, unipolar für Kanal 2

Output2_UINT Aktueller Zählerstand 16 Bit, unipolar für Kanal 2

Reference_output2_BOOL Hardwarereferenzieren aktiviert für Kanal 2:

1: Hardwarereferenzieren aktiviert (Referenzmodus 1 und 2)

0: Hardwarereferenzieren deaktiviert, da einmalig ausgeführt (Referenz-modus 1)

Error_BYTE 1: Falscher Slot

2: kein Modul gesteckt oder kein Zähler

h Die Hardware mit den Einstellmöglichkeiten für die Betriebsart und die Potentialzuordnung der Eingänge ist im Handbuch „XI/OC-Signalmodule (AWB2725-1452D) beschrieben. Dieses Handbuch gibt es online als PDF-Datei unter www.moeller.net l support. Geben Sie hier die Handbuch-Nr. als Suchbegriff ein.

Zähler-Bausteine: Counter_Analog.lib (für XIOC-2CNT-2AO-NC)

02/05 AWB2786-1456D

60

EinstellungenDie Art des Referenzierens stellen Sie am Eingang „Reference_inputx_BOOL“ ein. Damit diese Einstellung gültig wird, geben Sie im Konfigurator der XSoft im Register „Weitere Parameter“ folgende Werte ein:

– Anzahl der Referenzierungen: Einmalig– Flankenauswertung: 1, 2 oder 4fach

(4fach = höchste Auflösung)– Referenzwert: 0

BeschreibungDer Funktionsbaustein zählt die Impulse von Inkrementalgebern, die an das Modul XIOC-2CNT-2AO-INC angeschlossen sind. Es können folgende Funktionen ausgeführt werden:

• Referenzieren anstoßen• Art des Referenzierens definieren• Vorgabe des Zählwertes zum Zeitpunkt des Nulldurchgangs

(Grundposition)• Zählwerte zu den Inkrementalgebern abfragen.

Mit dem Funktionsbaustein kann das Referenzieren für 2 Kanäle (2 Inkrementalgeber) durchgeführt werden. Nachfolgend sind die Funktionen zu Kanal 1 beschrieben. Zu Kanal 2 sind die gleichen Funktionen verfügbar.

Mit dem Eingang „Reference_mode1_UINT“ können folgende Referenziermodi ausgewählt werden:

Referenziermodus 1:Der Ausgang „Reference_output1_BOOL“ zeigt mit dem Zustand „1“ an, dass das Hardwarereferenzieren aktiviert wurde. Beim Refe-renzieren (wenn der Inkrementalgeber das Nullmarkersignal ausgibt) wird der Zählwert mit „Reference_value1_DINT“ initiali-siert (Referenziermodus 0 + 1 + 2). Der Ausgang „Reference_output1_BOOL“ hat dann den Zustand „0“.

Referenziermodus 2:Der Ausgang „Reference_output1_BOOL“ bleibt dauerhaft auf „1“, da das Hardwarereferenzieren ständig aktiviert bleibt.

Von den Ausgängen „Output1_DINT“, „Output1_UDINT“ und „Output1_UINT“ wird der Zählwert in unterschiedlichen Daten-formaten ausgegeben.

h Wenn Sie diesen Funktionsbaustein einsetzen, dürfen die Eingänge des XIOC_2CNT2AO_INC weder deklariert noch aufgerufen werden. 0 = Referenzieren mit Software bei jeder steigenden Flanke von

„Reference_input1_BOOL“

1 = Einmaliges Referenzieren durch Hardware nach Setzen von „Reference_input1_BOOL = 1“

2 = Permanentes Referenzieren durch Hardware (bei jedem Null-markersignal des Inkrementalgebers) nach Setzen von „Reference_input1_BOOL = 1“

h Das Referenzieren durch Hardware erfolgt, wenn der Inkrementalgeber ein Referenzsignal ausgibt (normaler-weise einmal pro Umdrehung). Dieses Signal muss dem Modul XIOC-2CNT-2AO-INC zugeführt werden.

h Zum Thema „Motion Control“ steht die Motion-Control-Toolbox (XSOFT-APPLIB-MOTIONCONTROL) mit dem Handbuch AWB2700-1454D zur Verfügung.

02/05 AWB2786-1456D XIOC_2CNT2AO_INC Inkre-mentalgeberauswertung

1

6

Anwendungsbeispiel:

PROGRAM Test_XIOC_2CNT2AO_INC

VAR

Activate_hardware_referencing1_BOOL : BOOL ;

Activate_hardware_referencing2_BOOL : BOOL ;

Actual_position1_DINT : DINT ;

Actual_position2_DINT : DINT ;

Speed_drive1_INT : INT ;

Speed_drive2_INT : INT ;

Error_BYTE : BYTE ;

Error_analog_BYTE : BYTE;

XIOC_2cnt2ao_inc_01_and_02 : XIOC_2cnt2ao_inc;

XIOC_2cnt2ao_analog_01_and_02 : XIOC_2cnt2ao_analog ;

END_VAR

(*zone1*)

CAL XIOC_2cnt2ao_inc_01_and_02(

Reference_input1_BOOL:=Activate_hardware_referencing1_BOOL ,

Reference_mode1_UINT:=1 ,

Reference_value1_DINT:=0,

SlotNumber:=Slot1 ,

Output1_DINT=>Actual_position1_DINT ,

Error_BYTE=>Error_BYTE )

(* Cal function_block_for_positioning_01 *)

CAL XIOC_2cnt2ao_analog_01_and_02(

Analog_output1_INT:=Speed_drive1_INT ,

SlotNumber:=Slot1,

Error_BYTE=>Error_Analog_BYTE)

(*zone2*)

CAL XIOC_2cnt2ao_inc_01_and_02(

Reference_input2_BOOL:=Activate_hardware_referencing2_BOOL ,

Reference_mode2_UINT:=1 ,

Reference_value2_DINT:=0,

SlotNumber:=Slot1 ,

Output2_DINT=>Actual_position2_DINT )

(* Cal function_block_for_positioning_02 *)

CAL XIOC_2cnt2ao_analog_01_and_02(

Analog_output2_INT:=Speed_drive2_INT ,

SlotNumber:=Slot1)

Zähler-Bausteine: Counter_Analog.lib (für XIOC-2CNT-2AO-NC)

02/05 AWB2786-1456D

62

XIOC_2CNT2AO_ANALOGAnalogwertausgabe

Operandenbedeutung

BeschreibungDer an den Eingängen Analog_ouput 1(2)_INT eingestellte dezi-male Wert wird über die Analog-Ausgänge des Moduls XIOC-2CNT-2AO-INC ausgegeben.

Anwendungsbeispiel

Prototyp des Funktionsbausteins

Analog_output1(2)_INT dezimaler Integerwert

SlotNumber Slotnummer des XIOC-Counter-Analog-Moduls: 1, 2, ...,15 (kompletten Text eingeben, z. B.: SLOT2)

Error_Byte 1: Falscher Slot

2: kein Modul gesteckt oder kein Zähler

Dezimaler Wert (Baustein-Eingang)

Analoger Wert (Modul-Ausgang)

0 0 V

2047 10 V

– 1 – 0,005 V

– 2048 – 10 V

XIOC_2CNT2AO_ANALOG

INT Analog_output1_INT Error_Byte BYTEINT Analog_output2_INT

SLOT SlotNumber

Program: Test_XIOC_2CNT2AO_ANALOG

VAR

output1_5V : INT :=1023

output2_minus_10V : INT := - 2048;

Error_BYTE : BYTE;

XIOC_2cnt2ao_analog_01_and_02 : XIOC_2cnt2ao_analog ;

END_VAR

CAL XIOC_2cnt2ao_analog_01_and_02(

Analog_output1_INT:=output1_5V ,

Analog_output2_INT:=output2_minus_10V ,

SlotNumber:=Slot1 ,

Error_BYTE=>Error_BYTE )

02/05 AWB2786-1456D

3

6

7 Übertragungsbaustein: CANopen_Utilities.lib

Übertragungsbaustein

SDO_Transfer (XC-100)Parameter übertragen

Operandenbedeutung

Prototyp des Funktionsbausteins

SDO_Transfer

BOOL bStartTransfer bJobInProgress BOOLBOOL bWriteTransfer bTransferAborted BOOLBYTE NodeID bBufferToSmall BOOLUINT Index NrOfBytesRead INT

USINT Subindex StatusOfLastTransfer Array [0 .. 3] OF BYTE

INT iNrOfBytesInBufferINT iNrOfBytesToWrite

POINTERTO BYTE

ptrDataBuffer

bStartTransfer Eine positive Flanke startet einen SDO-Transfer. Voraussetzungen:• der Bausteinausgang „bJobInProgress“ hat

den Zustand „FALSE“,• der entsprechende Netzwerkknoten ist im

Status „operational“.

bWriteTransfer True: Download (Senden) von Daten

False: Upload (Empfangen) von Daten

NodeID Node-ID des anzusprechenden Netzwerkknotens

Index Adressierungs-Index

SubIndex Adressierungs-Subindex

INrOfBytesInBuffer Anzahl der im Datenbuffer zur Verfügung stehenden Bytes (nur Upload)

INrOfBytesToWrite Anzahl der zu schreibenden Datenbytes (nur Download)

PtrDataBuffer Pointer auf einen Datenbuffer, der die empfan-genen/zu sendenden Datenbytes aufnimmt.

bJobInProgress False: Keine laufende Übertragung; das Ergebnis der vorangegangenen Über-tragung kann abgelesen werden.

True: SDO-Übertragung in Bearbeitung. Es darf keine neue Übertragung gestartet werden. Kein Zugriff auf Datenbuffer!

bTransferAborted True: Wenn der letzte SDO-Transfer mit einer Fehlermeldung abgebrochen wurde. Im „StatusOfLastTransfer“ kann der Abbruchcode (nach CIA-DSP 301) ausgelesen werden.

bBufferToSmall True: Wenn der übergebene Datenbuffer zum Aufnehmen der Datenbytes nicht ausreicht.

NrOfBytesRead Anzahl der ausgelesenen Datenbytes (nur Upload)

StatusOfLast-Transfer

Bei gesetztem bTransferAborted-Flag kann hier der Abbruchcode (nach CIA-DSP 301) ausgelesen werden.

h Es darf nur eine Instanz des SDO-FBs pro anzusprechende Netzwerkknoten erzeugt werden.

Es können maximal 248 Byte gesendet oder empfangen werden.

Übertragungsbaustein: CANopen_Utilities.lib

02/05 AWB2786-1456D

64

BeschreibungMit dem SDO-Baustein (SDO = ServiceDataObject) können Sie auf das Objektverzeichnis eines Netzwerkknotens zugreifen. SDOs werden hauptsächlich benutzt, um den Netzwerkknoten zu konfigurieren.

Abbruchcode

Abbruch-code

Beschreibung

0503 0000h Toggel-Bit wechselt nicht

0504 0000h Time-Out beim SDO-Protokoll

0504 0001h Client/Server Befehl unbekannt

0504 0002h Ungültige Blockgröße (Block-Mode)

0504 0003h Ungültige Sequenz-Nummer (Block-Mode)

0504 0004h CRC-Fehler (Block-Mode)

0504 0005h Ungültiger Speicherbereich

0601 0000h Nicht unterstützter Objektzugriff

0601 0001h Ein „Schreib“-Objekt kann nicht gelesen werden

0601 0002h Ein „Lese“-Objekt kann nicht beschrieben werden

0602 0000h Objekt ist nicht im Objektverzeichnis

0604 0041h Objekt kann nicht am PDO angehängt werden

0604 0042h Die Nummer und Länge des zu mappenden Objekts überschreitet die Länge der PDO.

0604 0043h Allgemeine Parameter sind inkompatibel.

0604 0047h Interne Inkompatibilität im Gerät

0606 0000h Zugriff führt zu einem Hardware-Fehler.

0607 0010h Falscher Datentyp, falsche Länge der Service-Parameter

0607 0012h Falscher Datentyp, Länge der Service Parameter zu groß

0607 0013h Falscher Datentyp, Länge der Service Parameter zu klein

0609 0011h Sub-Index fehlt

0609 0030h Außerhalb des Parameterbereichs (Schreibzugriff)

0609 0031h Überschreitung des Parameterbereichs

0609 0032h Unterschreitung des Parameterbereichs

0609 0036h Maximaler Wert ist kleiner als minimaler Wert

0800 0000h Genereller Fehler

0800 0020h Daten können nicht in die Applikation des Zielgerätes übertragen oder abgespeichert werden

0800 0021h Daten können nicht in die Applikation übertragen oder abgespeichert werden. Ursache: Fehler in der Applika-tion des Zielgerätes

0800 0022h Daten können nicht in die Applikation übertragen oder abgespeichert werden. Ursache: Der aktuelle Status des Zielgerät verhindert dies.

0800 0023h Dynamische Erstellung des Objektverzeichnis ist fehler-haft oder Objektverzeichnis fehlt

02/05 AWB2786-1456D

5

6

8 Datenzugriffsbausteine für Dateien: XC100_File.lib

Die Bibliothek enthält folgende Bausteine:

• File Open• File Close• File Read• File Write• File Delete• File Rename• File Set Pos• File Get Size

Beschreibung der Bausteine

Die Bausteine ermöglichen den Zugriff auf das Dateisystem der Multimedia-Speicherkarte (MMC). Es können bis zu vier Dateien gleichzeitig geöffnet werden.

Unterverzeichnisse werden dabei unterstützt. Es ist zu berücksich-tigen, dass die Pfadlänge auf 80 Zeichen begrenzt ist.

Um Inkonsistenzen im Dateisystem zu vermeiden, schließt das Betriebssystem automatisch die durch das Anwenderprogramm geöffneten Dateien wenn ein SPS-Zustandswechsel nach „STOP“ erfolgt.

Grundsätzliche Handhabung der Bausteine

Mit einer positiven Flanke am Eingang „Strobe“ des Bausteins werden die Parameter der Eingänge übernommen und der Vorgang gestartet.

Der „Active“-Ausgang gibt den Zustand des Bausteins an:

Der Error-Ausgang gibt bei einer fehlerhaften Bearbeitung einen Code aus. Dieser gibt Auskunft über die Art des Fehlers(siehe Tabelle 4 auf Seite 69).

FileOpen

Operandenbedeutung

BeschreibungDer Baustein öffnet eine Datei auf der Speicherkarte.

Mit dem Code „w, r, rw, oder a“ am Eingang „strMode“ legen Sie fest, in welchem Mode die Datei geöffnet werden soll.

h Die Bausteine sind nur für die XC100 zu verwenden.

h Ein Ziehen der Multimedia-Speicherkarte während ein Baustein aktiviert ist, kann dazu führen, dass ein Zugriff auf die Karte nicht mehr möglich ist.Zur Behebung des Fehlverhaltens ist die Karte neu zu formatieren.

High Der Vorgang wird bearbeitet.

High -> Low -Flanke

Die Bearbeitung ist abgeschlossen und die Ausgangs-daten sind gültig, wenn am Error-Ausgang eine „0“ anliegt.

Prototyp des Funktionsbausteins

XStrobe Start

strFileName Name der Datei

strMode Modus, indem die Datei geöffnet werden soll

dwFileHandle Dateihandle, welches für den Zugriff auf weitere Zugriffsbausteine erforderlich ist

xActive Aktiv-Ausgang

xFinished Nach Beendigung der Bausteinfunktion führt der Ausgang „1“-Signal .(Negierter xActive-Ausgang)

typError Fehlerausgang (siehe Tabelle 4 auf Seite 69)

h Eine Datei kann nur einmal geöffnet werden.

w = Write Die Datei wird im Schreibmodus geöffnet. Eine vorhan-dene Datei mit diesem Namen wird überschrieben.

r = Read Modus „r“ öffnet eine Datei zum sequentiellen Lesen.Mit jedem Lesezugriff wird die Leseposition um die Anzahl der gelesener Byte weitergeschoben.

rw = Read und Write

Die Datei wird überschrieben oder neu angelegt. Der Inhalt der Datei wird beim Öffnen gelöscht.

a = Append Eine Datei wird zum Schreiben geöffnet. Zum Schreiben der Daten an das Ende der Datei muss der Filepointer zuerst ans Dateiende gesetzt werden.

h Achtung!Bereits das Öffnen einer Datei mit „w“ und wieder Schließen genügt, um eine Datei zu überschreiben und eine Datei mit 0 Byte Länge zu erzeugen.

FileOpen

BOOL xStrobe dwFileHandle DWORDSTRING(80) strFileName xActive BOOL

xFinished BOOLSTRING(2) strMode typError FILE_ERROR

Datenzugriffsbausteine für Dateien: XC100_File.lib

02/05 AWB2786-1456D

66

FileClose

Operandenbedeutung

BeschreibungDer Baustein schließt eine geöffnete Datei. Nach dem Schließen ist der Dateninhalt konsistent.

FileRead

Operandenbedeutung

BeschreibungDer Baustein liest Daten aus einer geöffneten Datei.

Der Filepointer steht nach dem Öffnen am Beginn der Datei und wandert mit jedem Lesezugriff um die Anzahl der gelesenen Byte weiter. Es kann nicht über das Dateiende hinaus gelesen werden. Steht der Filepointer bereits am Dateiende, so liefert der Baustein als Anzahl der gelesenen Byte eine “0“.

Prototyp des Funktionsbausteins

XStrobe Start

dwFileHandle Dateihandle vom Baustein „FileOpen“

xActive Aktiv-Ausgang

xFinished Nach Beendigung der Bausteinfunktion führt der Ausgang „1“-Signal (Negierter xActive-Ausgang)

typError Fehlerausgang (siehe Tabelle 4 auf Seite 69)

FileClose

BOOL xStrobe xActive BOOLxFinished BOOL

DWORD dwFileHandle typError FILE_ERROR

Prototyp des Funktionsbausteins

XStrobe Start

dwFileHandle Dateihandle vom Baustein „FileOpen“

dwBufferAddress Adresse (ADR) zu einem Buffer

dwSize Anzahl der zu lesenden Byte

dwReadSize Anzahl der gelesenen Byte

xActive Aktiv-Ausgang

xFinished Nach Beendigung der Bausteinfunktion führt der Ausgang „1“-Signal (Negierter xActive-Ausgang)

typError Fehlerausgang (siehe Tabelle 4 auf Seite 69)

FileRead

BOOL xStrobe dwReadSize DWORDDWORD dwFileHandle xActive BOOL

xFinished BOOLDWORD dwBufferAddress typError FILE_ERRORDWORD dwSize

02/05 AWB2786-1456D Grundsätzliche Handhabung der Bausteine

7

6

FileWrite

Operandenbedeutung

BeschreibungDer Baustein schreibt Daten in eine geöffnete Datei.

Der Filepointer steht nach dem Öffnen am Beginn der Datei und wandert mit jedem Schreibzugriff um die Anzahl der geschrie-benen Byte weiter.

FileDelete

Operandenbedeutung

BeschreibungDer Baustein löscht eine Datei von der Speicherkarte.Es kann nur eine geschlossene Datei gelöscht werden.

Prototyp des Funktionsbausteins

XStrobe Start

dwFileHandle Dateihandle vom Baustein „FileOpen“

dwBufferAddress Adresse (ADR) zu einem Buffer

dwSize Anzahl der zu schreibenden Byte

dwWriteSize Anzahl der geschriebenen Byte

xActive Aktiv-Ausgang

xFinished Nach Beendigung der Bausteinfunktion führt der Ausgang „1“-Signal (Negierter xActive-Ausgang)

typError Fehlerausgang (siehe Tabelle 4 auf Seite 69)

FileWrite

BOOL xStrobe dwWrite Size DWORDDWORD dwFileHandle xActive BOOL

xFinished BOOLDWORD dwBufferAddress typError FILE_ERRORDWORD dwSize

Prototyp des Funktionsbausteins

XStrobe Start

strFileName Name der Datei

xActive Aktiv-Ausgang

xFinished Nach Beendigung der Bausteinfunktion führt der Ausgang „1“-Signal (Negierter xActive-Ausgang)

typError Fehlerausgang (siehe Tabelle 4 auf Seite 69)

FileDelete

BOOL xStrobe xActive BOOLxFinished BOOL

STRING(80) strFileName typError FILE_ERROR

Datenzugriffsbausteine für Dateien: XC100_File.lib

02/05 AWB2786-1456D

68

FileRename

Operandenbedeutung

BeschreibungDer Baustein benennt eine Datei um.

FileSetPos

Operandenbedeutung

BeschreibungDer Baustein setzt den Filepointer an eine beliebige Position inner-halb einer geöffneten Datei. Er kann nicht über das Dateiende hinaus gesetzt werden.

Prototyp des Funktionsbausteins

XStrobe Start

strFileName bestehender Name der Datei

strNewFileName neuer Name der Datei

xActive Aktiv-Ausgang

xFinished Nach Beendigung der Bausteinfunktion führt der Ausgang „1“-Signal (Negierter xActive-Ausgang)

typError Fehlerausgang (siehe Tabelle 4: Fehlercodes)

FileRename

BOOL xStrobe xActive BOOLxFinished BOOL

STRING(80) strFileName typError FILE_ERRORSTRING(80) strNewFileName

Prototyp des Funktionsbausteins

XStrobe Start

dwFileHandle Dateihandle vom Baustein „FileOpen“

dwPosition Offset in Byte von Dateianfang

xActive Aktiv-Ausgang

xFinished Nach Beendigung der Bausteinfunktion führt der Ausgang „1“-Signal (Negierter xActive-Ausgang)

typError Fehlerausgang (siehe Tabelle 4: Fehlercodes)

FileSetPos

BOOL xStrobe xActive BOOLxFinished BOOL

DWORD dwFileHandle typError FILE_ERRORDWORD dwPosition

02/05 AWB2786-1456D Fehlercodes

9

6

FileGetSize

Operandenbedeutung

BeschreibungAm Bausteinausgang „udiSize“ wird die aktuelle Größe einer geöffneten Datei angegeben.

Fehlercodes

Tabelle 4: Fehlercodes

Prototyp des Funktionsbausteins

XStrobe Start

dwFileHandle Dateihandle vom Baustein „FileOpen“

dwSize Größe der Datei in Byte

xActive Aktiv-Ausgang

xFinished Nach Beendigung der Bausteinfunktion führt der Ausgang „1“-Signal (Negierter xActive-Ausgang)

typError Fehlerausgang (siehe Tabelle 4: Fehlercodes)

FileGetSize

BOOL xStrobe dwSize DWORDDWORD dwFileHandle xActive BOOL

xFinished BOOLtypError FILE_ERROR

Bausteinart: File_ Code Beschreibung

Alle 0x00 KeinFehlerNo error

Open, Delete, GetSize, Rename

0x01 Datei nicht gefundenFile not found

Open 0x02 Zu viele offene Dateien (> 4)To many files open (> 4)

Open 0x03 Datei schon geöffnetFile already open

Open, Delete 0x04 Zugriff verweigertAccess denied

Open, Close, Write, Read, Delete, Rename

0x05 MMC Zugriff-FehlerMMC Access denied

Close, Write, Read, SetPos

0x06 Ungültige DateihandleInvalid file handle

SetPos 0x07 Ungültige PositionInvalid position

Rename 0x08 Datei besteht bereitsFile already exists

Open 0x0a Ungültiger DateimodeInvalid file mode

Alle 0x0f Es sind mehr als 10 FB gleich-zeitig aktiviertQueue full

02/05 AWB2786-1456D

70

02/05 AWB2786-1456D

1

7

9 Azyklische Datenzugriffsbausteine für PROFIBUS-DP: xSysNetDPMV1.lib

Die Bibliothek enthält folgende Bausteine:

• XDPMV1_READ • XDPMV1_WRITE

Beschreibung der Bausteine

Mit dem Baustein XDPMV1_READ können Sie Objekte (Daten-pakete) von einem Slave azyklisch lesen und mit dem Baustein XDPMV1_WRITE Objekte zu einem Slave azyklisch schreiben. Voraussetzung ist, dass der Slave die PROFIBUS-DP-Protokollart DP-V1 unterstützt und ein zyklischer Datenaustausch stattfindet.

Die Daten der Slaves, die azyklisch gelesen bzw. geschrieben werden können, werden im Folgenden als DP-V1-Objekte bezeichnet. Die Eigenschaften des zu bearbeitenden DP-V1-Objekts im Slave entnehmen Sie der entsprechenden Slave-Doku-mentation. Die Adresse eines DP-V1-Objektes wird durch die Slot-Number (uiSlot), den Index (uiIndex) und die Anzahl der Read-/Write-Daten bestimmt.

Beachten Sie bei Verwendung dieser Bausteine folgende Regeln:

• Rufen Sie diese Bausteine nicht zyklisch auf, da sie den zykli-schen Busbetrieb belasten.

• Programmieren Sie je Master maximal einen Baustein zum Lesen und einen Baustein zum Schreiben.

• Verriegeln Sie die Bausteine zum Lesen und Schreiben so, dass nur ein Baustein aktiv sein kann!

Die Slaves müssen also nacheinander über die Bausteine ange-sprochen werden. DP-V1-Objekte eines Slaves sind auch nachein-ander zu bearbeiten.

Grundsätzliche Handhabung der Bausteine

Zum Starten eines Auftrags muss der „Ready“-Ausgang „1“-Signal führen.

X Legen Sie dann an den Eingang „Enable“ ein „1“-Signal an (positive Flanke).

Der Funktionsbaustein wird aktiv und der Ausgang „Ready“ zeigt den Zustand „0“ an. Nach Beendigung des Auftrags wird der „Ready“-Ausgang auf „1“-Signal gesetzt.

X Nach diesem „0“ l „1“-Signalwechsel fragen Sie den Ausgang „typState“ l „Done“ ab.

X Um den Ist-Zustand des Bausteins zu analysieren, fragen Sie die V1State-Ausgänge ab:

Ist beispielsweise „Done“ = TRUE, wurde der Auftrag korrekt ausgeführt. Bei „False“-Signal liegt ein Fehlverhalten vor.

X Fragen Sie den Ausgang „typState“ l „DoneWithError“ und „InvalidParam“ ab, um das Fehlverhalten zu spezifizieren:

Der Ausgang „typState“ zeigt den Zustand des Bausteins an. Die einzelnen Zustände werden in der Variablen „typState“ange-geben. Sie können folgende Werte annehmen:

XDPMV1_READ, XDPMV1_WRITE

h Die Bausteine sind für die XC100 und XC200 zu verwenden. DoneWithError =TRUE: Error-Ausgang abfragen, es wird ein

Fehlercode angezeigt ( a Tabelle 6).

InvalidParam =TRUE: Eingänge des Bausteins sind falsch parametriert

0: nicht in Bearbeitung

1: ungültige Parameter

2: gestartet

3: Auftrag ordnungsgemäss beendet

4: Auftrag fehlerhaft beendet l Error-Ausgang auswerten

Prototyp des Funktionsbausteins

Prototyp des Funktionsbausteins

XDPMV1_READ

BOOL xEnable uiResponseLen UINTUINT uiDevice xReady BOOLUINT uiStationAddr typState UINTUINT uiSlot uiError UINTUINT uiIndexUINT uiLenToRead

DWORD dwBuffer

XDPMV1_WRITE

BOOL xEnable xReady BOOLUINT uiDevice typState UINTUINT uiStationAddr uiError UINTUINT uiSlotUINT uiIndexUINT uiLenToWrite

DWORD dwBuffer

Azyklische Datenzugriffsbau-steine für PROFIBUS-DP: xSysNetDPMV1.lib

02/05 AWB2786-1456D

72

Operandenbedeutung

Funktionsbausteine zuordnen (Device-Nummer)

Bei der XC200 können Sie bis zu drei DP-Module einsetzen. Jedes dieser DP-Module kann einen Baustein zum azyklischen Lesen und einen Baustein zum azyklischen Schreiben einsetzen. Insgesamt können also maximal sechs Funktionsbausteine im Anwenderpro-gramm eingesetzt werden. Über Device-Nummern legen Sie fest, welcher Funktionsbaustein welchem DP-Modul zugeordnet ist. Die Device-Nummer ist vom Steckplatz des DP-Moduls abhängig und in der Tabelle 5 angegeben.

Bei der XC100 ist die Device-Nummer generell „0“, da bei dieser Steuerung nur ein DP-Modul eingesetzt werden darf.

Tabelle 5: Device-Nummer für XC200

Fehlercode am Ausgang „Error“

Tabelle 6: Fehlercodes

xEnable Start

UiDevice Device-Nummer a Tabelle 5

ui StationAddr Teilnehmeradresse

uiSlot Steckplatznummer im Slave (Wertebereich 0 bis 254)

uiIndex Index im Slave (Wertebereich 0 bis 254)

uiLenToRead Anzahl der Lesedaten in Byte (Wertebereich 0 bis 240). Die Anzahl der Lesedaten ist abhängig vom Slave (siehe Slave-Dokumentation). Ist die Anzahl der Lesedaten unbekannt, geben Sie den maximalen Wert „240“ an. Die tatsächliche Anzahl der gele-senen Bytes zeigt der Ausgang „uiResponseLen“ an.

uiLenToWrite Anzahl der Schreibdaten in Byte (Wertebereich 0 bis 240). Die Anzahl der Schreibdaten ist abhängig vom Slave (siehe Slave-Dokumentation). Wenn Sie hier nicht den exakten Wert angeben, erscheint eine Fehlermeldung.

dwBuffer Adresse zu einem Buffer

uiResponseLen Anzahl der tatsächlich gelesenen Daten (Byte)

xReady Zustand der Auftragsbearbeitung

typState Zustand des Bausteins (a Seite 71)

uiError Fehlercode (a Tabelle 6)

XI/OC-Slot 1 2 3

Modul DP-M DP-M DP-M

Device-No 0 1 2

Modul DP-M DP-M X-Modul

Device-No 0 1 –

Modul X-Modul DP-M DP-M

Device-No – 0 1

Modul DP-M X-Modul DP-M Konfigurations-fehler: Lücken unzulässig!

Device-No 0 – 2

Modul X-Modul X-Modul DP-M

Device-No – – 0

X-Modul: Modul (kein PROFIBUS-DP-Modul)

2 Im Slave sind keine Ressourcen zur Auftragsbearbeitung verfügbar (interner Slavefehler)

3 Der Master hat für diesen Slave den DP-V1-Mode nicht akti-viert. DP-Konfiguration überprüfen.

9 Ungültige Antwort (interner Slavefehler)

17 Keine Antwort von diesem Slave. Mögliche Ursachen:• StationAddress falsch• Slave oder Bus ist nicht aktiv

18 Allgemeiner Busfehler• Busleitungen prüfen• Master prüfen• DP-Adresse oder High-Station-Adress von weiteren

Mastern in der Konfiguration prüfen

25 Unverständliche Antwort, Slave erfüllt nicht die DP-V1-Norm

54 Falsche Antwort

129 DP-V1-Kommunikation wurde nicht konfiguriert und akti-viert oder Slaveadresse existiert nicht

130 DP-V1-Kommmunikation wurde gesperrt, die Antwort eines zuvor adressierten Slaves ist falsch

131 Ein Auftrag ist noch aktiv (interner FB-Fehler)

132 Parameter und Daten-Fehler (interner Fehler)

133 Parameterfehler. Mögliche Ursachen:StationAddress, SlotNumber oder Index sind falsch

02/05 AWB2786-1456D

3

7

10 Kommunikationsbaustein für Suconet-K-Slaves: SuconetK.lib

Kommunikationsbaustein

Dieser Baustein ist Bestandteil der Bibliothek „SuconetK.lib“.

SUCONET K_SLAVEKommunikation XC100/200 – Suconet-K-Slave

Operandenbedeutung

BeschreibungDas XIOC-SER-Modul kann als Suconet-K-Busanschaltung für die XC100-CPU und XC200-CPU benutzt werden. Das Modul arbeitet als Slave am Suconet-K-Bus und wird zyklisch vom Master ange-pollt; d. h. es werden zwischen der Slave-CPU und dem Master Daten ausgetauscht. Das Senden und Empfangen der Daten von und zum Anwenderprogramm übernimmt dabei dieser Baustein.

Handhabung des BausteinsMit einem „1“-Signal am Eingang „xEnable“ wird die Datenüber-tragung freigegeben. Wenn Sie die Parameter des XIOC-SER-Moduls im Konfigurator richtig eingestellt haben (z. B. Busstatus = SUCONET K), wird der Ausgang „xComPor-tActiv“ auf „1“-Signal gesetzt. Sendedaten kopieren Sie in das Array „barSDB“, Empfangsdaten entnehmen Sie dem Array „barRDB“. Überprüfen Sie vor jeder Entnahme die Ausgänge „xMasterDiscon“ und „xMasterStop“: Sie sollten „0“-Signal haben.

Um die Datenübertragung zu stoppen, legen Sie am Eingang „xEnable“ ein „0“-Signal an. Der Ausgang „xComPortActiv“ wird dann auf „0“-Signal gesetzt.

h Dieser Baustein ist für die XC100/XC200 in Verbindung mit dem XIOC-SER-Modul zu verwenden.

Prototyp des Funktionsbausteins

xEnable 1-Signal: Kommunikation zwischen CPU und XIOC-SER wird freigeschaltet

0-Signal: Kommunikation sperren

usiComPort Nummer der COM-Schnittstelle:XC100: 2, 3XC200: 2, 3, 4, 5

barRDB Empfangsdaten (max. 121 Byte: 120 Datenbyte und 1 Diagnosebyte)

barSDB Sendedaten (max. 120 Byte)

xComPortActiv 1-Signal: Kommunikation zwischen CPU und XIOC-SER wird freigeschaltet

xMasterDiscon 1-Signal: Suconet K-Master abgekoppelt

xMasterStop 1-Signal: Suconet K-Master im HALT

SUCONET K_SLAVE

BOOL xEnable xComPortActive BOOLUSINT usiComPort xMasterDiscon BOOL

xMasterStop BOOLbarRDB

ARRAY[0..120] OF BYTEbarSDB

ARRAY[0..119] OF BYTE

02/05 AWB2786-1456D

74

02/05 AWB2786-1456D

5

7

11 Datenzugriffsbausteine für Suconet K: SuconetK_Master.lib

Die Bibliothek enthält folgende Bausteine:

• SuconetK_Master• SuconetK_MSlaveData• SuconetK_MDX2Data

Generelles

Mit dem XIOC-NET-SK-M-Modul und den Funktionsbausteinen aus der SuconetK_Master.lib können Sie in vorhandenen Applika-tionen sehr einfach und effektiv ältere Suconet K oder Suconet-K1- Master ersetzen.

An jedes Modul können Sie max. 16 Teilnehmer anschließen. Es sind sowohl Suconet-K- als auch Suconet-K1-Teilnehmer möglich. Das Datenvolumen pro Modul ist auf max. 250 Byte Sendedaten und 250 Byte Empfangsdaten begrenzt, wobei die entsprechenden Statusdaten der Teilnehmer darin enthalten sind.

Die Konfiguration des XIOC-NET-SK-M-Moduls/COMport (Slot, Busparameter) erfolgt in der Steuerungskonfiguration der XSoft. Sie ist wie die Schnittstellenbelegung und Busabschlusswider-stände in der AWB 2725-1452 „XIOC-Signalmodule“ beschrieben.

Die Konfiguration der angeschlossenen Busteilnehmer (Typ, Datenvolumen) erfolgt tabellenartig über eine in der Regel globale Variable.

Beschreibung der Bausteine

Die Bibliothek SuconetK_Master.lib enthält drei Funktionsbau-steine. Der FB SuconetK_Master ist grundsätzlich erforderlich. Wird er alleine eingesetzt, so führt er die Konfiguration eines Suconet-K-Stranges sowie den Datenaustausch zwischen Applika-tion und Modul aus.

Die Sende-/Empfangsdaten zu/von den einzelnen Slaves sind in ein Array zu schreiben bzw. aus einem Array zu entnehmen.

Die Funktionsbausteine SuconetK_MSlaveData und SuconetK_MDX2Data sind optional. Sie erleichtern dem Program-mierer den Zugriff auf die vom FB SuconetK_Master bereitge-stellten Daten einzelner Teilnehmer (Slaves).

Der FB SuconetK_MSlaveData in Verbindung mit dem FB SuconetK_Master erleichtert die Programmierung von Stan-dard-Slaves. Der FB SuconetK_MDX2Data in Verbindung mit dem FB SuconetK_Master ist auf das EM4-201-DX2 mit angeschlos-senen LEs ausgerichtet.

h Die Bausteine sind für die XC100 und XC200 zu verwenden. Es ist ein XIOC-NET-SK-M Modul erforderlich.

Datenzugriffsbausteine für Suconet K: SuconetK_Master.lib

02/05 AWB2786-1456D

76

SuconetK_Master

Operandenbedeutung

Abbildung 14: Prototyp des Funktionsbausteins

SuconetK_Master

BOOL xEnable xComPortActiv BOOLUSINT usiComPort usiNrOfRDB USINTBOOL x375kBaud usiNrOfSDB USINTUSINT usiMinSlaveID xDataReceived BOOLUSINT usiNrOfSlaves xDataSend BOOL

POINTER TO ARRAY [1..16] OF SuconetK_M_SlaveCFG pastSlaveCFG xDiag BOOLPOINTER TO ARRAY [1..250] OF BYTE pabRDB usiDiagNrOfSlaves USINTPOINTER TO ARRAY [1..250] OF BYTE pabSDB usiDiag1stSlaveID USINT

BOOL xDiagON usiErrorConfig USINTBOOL xDiagErrLED

xEnable Freigabe COM port, Kommunikation starten

usiComPort Nummer des COM port: XC100 l 2,3 XC200 l 2,3,4,5

x375kBaud FALSE: 187,5 kBaud

TRUE: 375 kBaud

usiMinSlaveID Offset-Teilnehmeradresse 1..30

usiNrOfSlaves Anzahl der angeschlossenen Busteilnehmer 1..16

pastSlaveCFG Feldadresse der Slave-Konfigurationen und Slave-Informationen (ein Index/Slave)

pabRDB Adresse des Feldes mit allen Slave-Lesedaten

pabSDB Adresse des Feldes mit allen Slave-Schreibdaten

xDiagON Diagnose des Suconet Stranges, TRUE: ein, FALSE: aus

xDiagErrLED Rote Error LED wenn Diagnose aktiv

xComPortActiv Status des COM port, Suconet K-Master aktiv

usiNrOfRDB Anzahl der Lesedaten aller konfigurierten Teilnehmer in Byte; „255“ bei Konfigurationsfehler

usiNrOfSDB Anzahl der Schreibdaten aller konfigurierten Teil-nehmer in Byte; „255“ bei Konfigurationsfehler

xDataReceived Daten empfangen (Puls)

xDataSend Daten gesendet (Puls)

xDiag Diag: ein oder mehrere Teilnehmer senden Diagnose-informationen

usiDiagNrOfSlaves Diag: Anzahl der Teilnehmer mit Diagnoseinformati-onen

usiDiag1stSlaveID Diag: Adresse des ersten Teilnehmers mit Diagnose-informationen

usiErrorConfig Konfigurationsfehler:

0 Konfiguration ok

1..30 Nummer (SlaveID) des fehlkonfigurierten Teilnehmers

253 Baudrate 375 kBaud geht nicht mit Suconet-K1-Teilnehmer

254 Fehler bei usiMinSlaveId/usiNrOfSlaves

255 Fehler beim Öffnen des COMports

02/05 AWB2786-1456D Beschreibung der Bausteine

7

7

SuconetK_MSlaveData

Operandenbedeutung

Abbildung 15: Prototyp des Funktionsbausteins

SuconetK_MSlaveData

USINT usiComPort bStatus1 USINTUSINT usiSlaveID bstatus2 USINT

POINTER TO ARRAY [1..16] OF SuconetK_MSlaveCFG pastSlaveCFG usiError USINTPOINTER TO ARRAY [1..250] OF BYTE pabRDBPOINTER TO ARRAY [1..250] OF BYTE pabSDB

BOOL xReadDataBOOL xWriteData

POINTER TO ARRAY [1..120] OF BYTE pabReadDataPOINTER TO ARRAY [1..120] OF BYTE pabWriteData

USINT (VAR_IN_OUT) usiNrOfReadDataUSINT (VAR_IN_OUT) usiNrOfWriteData

UsiComPort Nummer des COMport:2,3,4,5

UsiSlaveID Slaveadresse 1..30

PastSlaveCFG Feldadresse der Slave-Konfigurationen und Slave-Informationen (ein Index/Slave)

PabRDB Adresse des Feldes mit allen Slave-Lesedaten

PabSDB Adresse des Feldes mit allen Slave-Schreibdaten

XReadData TRUE: Slave Daten aus abRDB auslesen

XWriteData TRUE: Slave Daten in abSDB schreiben

PabReadData Adresse des Feldes für Slave-Lesedaten

PabWriteData Adresse des Feldes für Slave-Schreibdaten

UsiNrOfReadData Anzahl der zu lesenden / gelesenen Byte

UsiNrOfWriteData Anzahl der zu schreibenden / geschriebenen Byte

bStatus1 Suconet: Teilnehmer Statusbyte

bStatus2 Geräte Statusbyte (nur bei EM4-101-AA2/TX1/TX2)

UsiError Fehlercode

1 COMport nicht geöffnet

2 Fehler SlaveID

3 Fehler Strang/COMport Nummer

4 Fehler usiNrOfReadData

5 Fehler usiNrOfWriteData

6 Fehler usiNrOfReadData und usiNrOfWriteData

Datenzugriffsbausteine für Suconet K: SuconetK_Master.lib

02/05 AWB2786-1456D

78

SuconetK_MDX2Data für EM4-201-DX2

Operandenbedeutung

Konfiguration des Suconet-K-Stranges

Legen Sie zur Konfiguration für jeden Strang eine – am besten globale – Variable vom Typ ARRAY[1..x] of SuconetK_MSlaveCFG an, wobei x der Anzahl der Teilnehmer an diesem Strang entspricht. Verschieben Sie den Offset für die ID des ersten Teil-nehmers, so werden auch die Array Indizes entsprechend verschoben.

Mit der Vorbelegung der Strukturelemente typSlave, xCRC, usiRDB, usiSDB, und typLE wird der komplette Strang paramet-riert. Dabei sind die Elemente usiRDB und usiSDB nur bei Teilneh-mern mit entsprechend parametrierbarem Sende- und Empfangs-bereich relevant, typLE wird nur für die Konfiguration der lokalen LE-Erweiterungen an einem EM4-201-DX2 genutzt.

Das Strukturelement stInfo wird vom FB SuconetK_Master nach dessen Freigabe mit weiteren Slave-Informationen versorgt (Siehe Kapitel: Inbetriebnahme und Betrieb des Suconet K-Stranges).

Abbildung 16: Prototyp des Funktionsbausteins

SuconetK_MDX2Data

USINT usiComPort bEM4Status BYTEUSINT usiSlaveID bEM4_IB1 BYTE

POINTER TO ARRAY [1..16] OF SuconetK_MSlaveCFG pastSlaveCFG bEM4_IB2 BYTEPOINTER TO ARRAY [1..250] OF BYTE pabRDB abLEStatus ARRAY [1..6] OF BYTEPOINTER TO ARRAY [1..250] OF BYTE pabSDB usiError USINT

ARRAY [1..6, 1..2] OF BYTE (VAR_IN_OUT) abLE_IBARRAY [1..6, 1..2] OF BYTE (VAR_IN_OUT) abLE_QB

UsiComPort Nummer des COMport: 2,3,4,5

UsiSlaveID Slaveadresse 1..30 (EM4-201-DX2)

PastSlaveCFG Feldadresse der Slave-Konfigurationen und Slave-Infor-mationen (ein Index/Slave)

PabRDB Adresse des Feldes mit allen Slave-Lesedaten

PabSDB Adresse des Feldes mit allen Slave-Schreibdaten

abLE_IB Input-Daten von LE 1..6 am EM (max. 2 Byte/LE)

abLE_QB Output-Daten von LE 1..6 am EM (max. 2 Byte/LE)

bEM4Status Suconet: EM4 Statusbyte

bEM4_IB1 EM4: Input-Byte 1

bEM4_IB2 EM4: Input-Byte 2

AbLEStatus Geräte-Statusbyte von LE 1..6

UsiError Fehlercode

12345

COMport nicht geöffnetFehler SlaveIDFehler Strang/COMport NummerFehler Slave TypeFehler Konfiguration

02/05 AWB2786-1456D Inbetriebnahme und Betrieb des Suconet K-Stranges

9

7

Konfigurationsbeispiel eines Stranges mit sechs Teilnehmern:

Auch die beiden Arrays für die Sende- und Empfangsdaten eines Stranges sollten Sie global anlegen:

Inbetriebnahme und Betrieb des Suconet K-Stranges

Der Funktionsbaustein SuconetK_Master

Deklarieren Sie und rufen Sie für jeden Strang eine Instanz des FB SuconetK_Master auf. Mit der Freigabe des COMport auf xEnable wird die Konfiguration überprüft. Ein Konfigurationsfehler wird sofort nach Freigabe signalisiert (usiErrorConfig). Ist die Konfiguration in Ordnung, so wird diese an das Modul übergeben. Über SuconetK_MSlaveCFG.stInfo werden der Applikation Infor-mationen über die Slave-Daten zur Verfügung gestellt: Offset und Anzahl von Statusbyte und Empfangsdatenbyte innerhalb des Arrays abRDB sowie Offset und Anzahl der möglichen Sendeda-tenbyte im Array abSDB. Die Anzahl der genutzten Empfangs- und Sendedatenbyte ist nach dem erfolgreichen Start des Moduls den Parametern usiNrOfRDB und usiNrOfSDB zu entnehmen.

Beispiel einer Parametrierung des FB SuconetK_Master

Der einmalige Aufruf des FB SuconetK_Master pro Suconet-K-Strang konfiguriert die XIOC-NET-SK-M und wickelt auch im Betrieb den zyklischen Datenaustausch zwischen Modul und Applikation ab. Das heißt er kopiert mit jedem Aufruf die Empfangsdaten aller Teilnehmer – incl. Statusbyte - in das Array abRDB und die Sendedaten werden mit jedem Aufruf aus dem Array abSDB an das Modul übergeben. Die Datenoffsets und Anzahl können für jeden Teilnehmer der Struktur SuconetK_MSlaveCFG.stInfo entnommen werden. xDataReceived und xDataSend signalisieren jeweils den entsprechenden Datenre-fresh.

VAR_GLOBAL

SuconetK_COM2SlaveCFG : ARRAY[1..6] OF SuconetK_MSlaveCFG :=

(* 1 *) (typSlave:= XIOC_SER, xCRC:=FALSE, usiRDB:=120, usiSDB:=120),

(* 2 *) (typSlave:= PS4_201_MM1, xCRC:=FALSE, usiRDB:=20,usiSDB:=20),

(* 3 *) (typSlave:= EM4_201_DX2, xCRC:=FALSE, typLE:=LE4_116_XD1,LE4_108_XR1),

(* 4 *) (typSlave:= PS4_341_MM1, xCRC:=FALSE, usiRDB:=30,usiSDB:=30),

(* 5 *) (typSlave:= EM4_101_DD188, xCRC:=FALSE),

(* 6 *) (typSlave:= MI4_Allgemein, xCRC:=FALSE, usiRDB:=32,usiSDB:=32);

END_VAR

h Achtung!Die Anzahl der Elemente in diesem Array muß mindestens der Anzahl der Teilnehmer am Suconet K-Bus entsprechen (Parameter usiNorOfSlaves am FB SuconetK_Master), da es ansonsten wegen der Pointer-Zugriffe zu Laufzeitfeh-lern kommen kann!

VAR_GLOBAL

SuconetK_COM2ReadData : ARRAY[1..250] OF BYTE;

SuconetK_COM2WriteData : ARRAY[1..250] OF BYTE;

END_VAR

SuconetK_MasterCOM2(

xEnable:=COM2enable ,

usiComPort:=2 ,

x375kBaud:=FALSE,

usiMinSlaveID:=SuconetK_COM2usiMinSlaveID,

usiNrOfSlaves:=SuconetK_COM2usiMaxSlaveID,

pastSlaveCFG:=ADR(SuconetK_COM2SlaveCFG),

pabRDB:=ADR(SuconetK_COM2ReadData),

pabSDB:=ADR(SuconetK_COM2WriteData),

xDiagON:=COM2DiagON,

xDiagErrLED:=COM2DiagLED,

xComPortActiv=>COM2activ ,

usiNrOfRDB=>COM2RDBtotal,

usiNrOfSDB=>COM2SDBtotal,

xDataReceived=>COM2RecData ,

xDataSend=>COM2SendData ,

xDiag=>COM2Diag ,

usiDiagNrOfSlaves=>COM2DiagSlaves ,

usiDiag1stSlaveID=>COM2DiagSlaveID ,

usiErrorConfig=> COM2ConfigError );

Datenzugriffsbausteine für Suconet K: SuconetK_Master.lib

02/05 AWB2786-1456D

80

Diagnose im Betrieb

Mit dem Eingang xDiagON am FB SuconetK_Master pollt dieser FB mit jedem Aufruf alle Teilnehmer ab und meldet Probleme über den Ausgang xDiag, usiNiOfSlaves and usiDiag1stSlaveID (ERR-LED wenn xDiagErrLED = TRUE). Auch die Statusbyte werden bei xDiagON unter SuconetK_MSlaveCFG.stInfo.stDiag ausgegeben und aktualisiert.

Tabelle 7: Diagnose-LEDs:

Funktionsbaustein SuconetK_MSlaveData

In Verbindung mit dem FB SuconetK_Master erlaubt dieser FB einen komfortableren Zugriff auf die Daten eines Teilnehmers (auch EM4-201-DX2 mit angeschlossenen LEs). Je nach Paramet-rierung von xReadData und xWriteData liest und/oder schreibt er die Anzahl usiNrOfReadData/usiNrOfWriteData der Daten aus abReadData/abWriteData vom oder zum Teilnehmer. Wird die

Anzahl mit „0“ parametriert, so werden automatisch die in der Konfiguration eingestellten RDB/SDB bzw. bei fixer Datenlänge die zulässige Anzahl an Datenbyte übertragen.

Funktionsbaustein SuconetK_MDX2Data

Wie der FB SuconetK_MslaveData überträgt auch dieser FB Daten aus/in abRDB/abSDB.

Er erlaubt jedoch einen noch komfortableren Zugriff auf die Daten eines EM4-201-DX2 und der angeschlossenen LE. Während der FB SuconetK_Master und auch SuconetK_MSlaveData Statusbyte und Datenbyte der LEs in einem Block an die Daten des EM4-201-DX2 anhängen, werden hier die LE-Daten differenziert einzelnen Array-Segmenten zugeordnet.

Abbildung 17: Datenbereiche des FB Suconet K-Master

POW Spannungsversorgung

ERR SuconetK_Master l nur bei xDiagON

DTR COMport geöffnet und Modul parametriert

DCD Alle konfigurierten Teilnehmer ok

TxD Daten werden an Teilnehmer gesendet

RxD Daten werden von Teilnehmern empfangen

XIOC-NET-SK_MabRDB

S1 StatusRDB1RDB2...

S2 StatusRDB1...

Sn Status...

abSDB

S1 SDB1SDB2SDB3...

S2 SDB1SDB2...

Sn SDB1...

h Achtung!Die Anzahl der zu übertragenden Daten darf die Größe der entsprechenden Datenfelder nicht überschreiten (Pointer-zugriff) ! Wird nur eine Datenrichtung gewählt, so kann die Parametrierung des anderen Datenfeldes entfallen.

Die Teilnehmer-Statusbyte werden bei jedem Aufruf aktu-alisiert, auch bei xReadData und xWriteData = FALSE unabhängig davon, ob die Diagnose beim SuconetK_Master aktiviert ist, oder nicht.

Abbildung 18: Datenbereiche des FB Suconet K-MSlaveData

abRDB

S1 StatusRDB1RDB2...

S2 StatusRDB1...

Sn Status...

abSDB

S1 SDB1SDB2SDB3...

S2 SDB1SDB2...

Sn SDB1...

abReadDataS1 Status

RDB1RDB2...

abWriteDataS1 SDB1

SDB1SDB2...

abRDB

S1 StatusRDB1RDB2...

S2 StatusRDB1...

Sn Status...

abSDB

S1 SDB1SDB2SDB3...

S2 SDB1SDB2...

Sn SDB1...

abReadDataS1 Status

RDB1RDB2...

abWriteDataS1 SDB1

SDB1SDB2...

StatusByte 1StatusByte 2

02/05 AWB2786-1456D Type-Definitionen der Biblio-thek

1

8

Type-Definitionen der Bibliothek

Konfiguration eines Suconet-Teilnehmers

Input : Mögliche Slave-Typen

TYPE SuconetK_MSlaveType:

Input : Mögliche LE-Typen (nur für EM4_201_DX2)

Output : Infos zu den Adressräumen der konfigurierten Slaves

Output : Statusbytes bei Diag (SuconetK_Master)

TYPE SuconetK_MSlaveCFG :

STRUCT

typSlave:SuconetK_MSlaveType := noSlave;

xCRC:BOOL := FALSE;

usiRDB: USINT := 0;

usiSDB:USINT := 0;

typLE:ARRAY[1..6] OF SuconetK_MLEType := noLE,noLE,noLE,noLE,noLE,noLE;

stInfo:SuconetK_MSlaveInfo;

END_STRUCT

END_TYPE

( noSlave:=0,

A4_220, LE4_501_BS1, PS4_401_K, SIS_TYP_80DF,

A5_220, MI4_Allgemein, PS4_401_K1, SIS_TYP_80E0,

CM4_501_FS1, MI4_101_KC1, RBI1, SIS_TYP_80E1,

CM4_504_GS1, MI4_101_KE1, RMQ_16I, SIS_TYP_80E2,

CM4_505_GS1, MI4_111_KE1, RMQ_16I_K, SIS_TYP_80E3,

DE4_NET_K, MI4_131_KH1, SBI_AMD3, SIS_TYP_80E4,

DE4_NET_K_F, MI4_151_KF1, SBI_AMX, SIS_TYP_80E5,

EBE295, MI4_151_TA1, SIS_K_06_07, SIS_TYP_80E6,

EM4_101_AA1, MI4_161_TC1, SIS_K_10_10, SIS_TYP_80E7,

EM4_101_AA1B63, MI4_451_KF1, SIS_K_15_15, SIS_TYP_80E8,

EM4_101_AA1B64, MI4_451_TA1, SIS_K_24_24, SIS_TYP_80E9,

EM4_101_AA1W31, MI4_471_TC1, SIS_K_30_30, SIS_TYP_80EA,

EM4_101_AA1W33, MV4, SIS_K_40_40, SIS_TYP_80EB,

EM4_101_AA2B84, PS306, SIS_K_50_50, SIS_TYP_80EC,

EM4_101_AA2W84, PS3_8, SIS_K_60_60, SIS_TYP_80ED,

EM4_101_DD1106, PS3_AC, SIS_TYP_80D0, SIS_TYP_80EE,

EM4_101_DD188, PS3_DC, SIS_TYP_80D1, SIS_TYP_80EF,

EM4_101_DD2106, PS4_101_DD1, SIS_TYP_80D2, SIS_TYP_A0EF,

EM4_101_DD288, PS4_111_DR1, SIS_TYP_80D3, VTP0_H_T1_K1,

EM4_101_TX1, PS4_141_MM1, SIS_TYP_80D4, VTPx_H_T6_K,

EM4_101_TX2, PS4_151_MM1, SIS_TYP_80D5, XIOC_SER,

EM4_111_DR1, PS416_CPU_300, SIS_TYP_80D6, ZB4_501_TC1,

EM4_111_DR2, PS416_CPU_400, SIS_TYP_80D7, ZB4_501_TC2,

EM4_201_DX1, PS416_NET_400, SIS_TYP_80DA, ZB4_501_UM2,

EM4_201_DX2, PS4_201_MM1, SIS_TYP_80DB, ZB4_501_UM3,

EPC335, PS4_271_MM1, SIS_TYP_80DD, ZB4_501_UM4);

EPC335_K, PS4_341_MM1, SIS_TYP_80DE,

END_TYPE

TYPE SuconetK_MLEType :

( noLE := 0,

LE4_104_XP1,

LE4_108_XD1,

LE4_108_XR1,

LE4_116_DD1,

LE4_116_DX1,

LE4_116_XD1,

LE4_308_HX1,

LE4_308_XH1);

END_TYPE

TYPE SuconetK_MSlaveInfo :

STRUCT

usiSlaveID:USINT;

usiStatusOff:USINT;

usiStatusNr:USINT;

usiReadOff:USINT;

usiReadNr:USINT;

usiWriteOff:USINT;

usiWriteNr:USINT;

stDiag:SuconetK_MDiagStatus;

END_STRUCT

END_TYPE

TYPE SuconetK_MDiagStatus :

STRUCT

typStatus1 : SuconetK_MStatusByte1;

bStatus2 : BYTE;

END_STRUCT

END_TYPE

02/05 AWB2786-1456D

82

02/05 AWB2786-1456D

3

8

12 Diagnosebausteine: XSysDiagLib.lib

Zur Auswertung der Diagnosedaten stehen zwei Funktionsbau-steine zur Verfügung:

• xDiag_SystemDiag a Seite 89• xDiag_ModuleDiag a Seite 90

Mit der Funktion Xdiag_GetSupplierVersion können Sie die Version der Bibliothek XSysDiagLib.lib auslesen, a Seite 88.

Softwarevoraussetzungen:

• XC100: ab V3.10• XC200: ab V1.03.02

Diagnose-Übersicht

Mit Hilfe der Diagnose-Funktionsbausteine können Sie die Diagno-sedaten folgender Teilnehmer abfragen:

• XI/ON-Module an der XN-PLC• Slaves am PROFIBUS-DP-Strang (a anschließenden Hinweis)• DP-S-Modul

Die Diagnose teilt sich auf in Moduldiagnose und spezifische Diag-nose. Die Moduldiagnose kann mit den Steuerungen XC100, XC200 und XN-PLC durchgeführt werden. Als Ergebnis erhalten Sie eine kompakte Auflistung der Diagnosedaten aller diagnosefä-higen Module bzw. PROFIBUS-DP-Teilnehmer. Die spezifische Diagnose ist abhängig von den Modulen. Als Ergebnis erhalten Sie detaillierte Diagnosedaten aller diagnosefähigen Module bzw. PROFIBUS-DP-Teilnehmer.

h Die Funktion/Funktionsbausteine können für die XC100/XC200 und XN-PLC-CANopen verwendet werden.

h Eine Diagnose des CANopen-Bus an der CANopen-CPU-Schnittstelle ist nicht mit diesen Bausteinen möglich.

h Zur Abfrage der Diagnosedaten von DP-Slaves stehen zwei Verfahren zur Verfügung:

– Beim Verfahren für bereits bestehende Anwen-dungen verwenden Sie die Funktionsbausteine GETBUSSTATE und DIAGGETSTATE. Dieses Verfahren wird im Handbuch „XI/OC-Signalmodule“ (AWB2725-1452D) beschrieben.

– Bei neuen Anwendungen sollten Sie die Funktions-bausteine „xDiag_SystemDiag“ und „xDiag_ModuleDiag“ verwenden.

Abbildung 19: Anzeige der Modulinformation

Moduldiagnose durchführen a Seite 84

XI/ON

Modulspezifische Diagnosedaten

abfragen

a Seite 84

DP-M-Modul

1. Schritt: Diagnosemeldung des Slave abfragen

2. Schritt: Slavespezifische Diagnosedaten abfragen

a Seite 85

DP-S-Modul

Diagnosedaten abfragen

a Seite 88

Diagnosebausteine: XSys-DiagLib.lib

02/05 AWB2786-1456D

84

Moduldiagnose durchführen

Zur Moduldiagnose rufen Sie den Funktionsbaustein „xDiag_SystemDiag“ auf. Der Ausgang „abyModuleInfo“ (Array of Byte) enthält die Diagnosedaten der Module. Fragen Sie die einzelnen Elemente (Diagnosebyte) des Arrays ab. Das erste Element enthält die Diagnosedaten des 1. Moduls, usw.

Sie können die Bits 0, 1 und 2 aus dem Diagnosebyte auswerten. Zum Beispiel hat das Diagnosebyte „abyModuleInfo“ in der Abbildung 21 den Wert 3. Das entspricht dem Wert 0000 0011bin und bedeutet:

Wie Sie die modulspezifischen Diagnosedaten ermitteln, wird in den folgenden Abschnitten wird beschrieben.

Modulspezifische Diagnosedaten von XI/ON-Modulen

Ist Bit 2 aus dem Diagnosebyte „abyModuleInfo“ eines XI/ON-Moduls gesetzt, können Sie die modulspezifischen Diagnosedaten des Moduls über den Funktionsbaustein „xDiag_ModuleDiag“ abfragen. Geben Sie hierfür am Eingang „uiSlot“ die Slotnummer und am „uiIndex“ den Steckplatz des Moduls ein und starten Sie den Baustein. Die Diagnosedaten zeigt dann das Ausgangsarray „abyExtendedInfo“ an.

Beispiel Das Ausgangsmodul 2DO-24VDC-0.5A-P zeigt einen Kurzschluss an.

Wenn Sie in der Zustandsanzeige den Funktionsbaustein „xDiag_ModuleDiag“ und das Ausgangsarray „abyExtendedInfo“ aufrufen, erscheint folgende Abbildung:

(Das Modul ist auf Steckplatz (uiSlot) = 5 gesteckt)

Die „1“ im Byte „abyExtendedInfo[0]“ zeigt den Kurzschluss an.

Abbildung 20: Moduldiagnose

Abbildung 21: Anzeige der Modulinformation

Bit 0 = 1: Modul konfiguriert1)

Bit 1 = 1: Datenaustausch ok1)

1) Detaillierte Informationen zum Diagnosebyte stehen im Abschnitt „xDIAG_SystemDiag“ auf Seite 89.

Abbildung 22: Diagnose von XI/ON-Modulen

XC100XC200

XI/OC-Module

XN-PLC XI/ON-Module

XN-P

LC-C

ANop

en

XI/O

N-M

odul

XI/O

N-M

odul

XI/O

N-M

odul

XI/O

N-M

odul

XI/O

N-M

odul

h Nicht alle XI/ON-Module können modulspezifische Diag-nosedaten an die XN-PLC senden, wie z. B. digitale Eingangsmodule. Informieren Sie sich in der Dokumenta-tion zu den XI/ON-Modulen darüber.

Abbildung 23: Kurzschlussanzeige des XI/ON-Ausgangsmoduls

02/05 AWB2786-1456D Diagnosedaten von Slaves am DP-Strang abfragen

5

8

Diagnosedaten von Slaves am DP-Strang abfragen

Die Abfrage erfolgt in zwei Schritten, die anschließend näher beschrieben werden:

• Abfrage der Statusbyte aller Slaves. Die Statusbyte zeigen unter anderem an, ob eine Diagnose vorliegt.

• Abfrage der slavespezifischen Diagnosedaten bei dem Slave, der eine Diagnose gemeldet hat.

Abfrage der Statusbyte aller Slaves

Bei der allgemeinen Abfrage erhalten Sie eine Auflistung (Array) der Statusbyte aller Slaves.

Voraussetzung:Bit 2 aus dem Diagnosebyte „abyModuleInfo“ des DP-M-Moduls ist gesetzt; d. h. es liegen Diagnosedaten vor.

Vorgehensweise:Rufen Sie den Funktionsbaustein „xDiag_ModuleDiag“ auf. Geben Sie an den Eingängen „uiSlot“ die Slotnummer und „uiIndex“ eine 0 ein und starten Sie den Funktionsbaustein.

Das Ausgangsarray „abyExtendedInfo“ zeigt die Statusbyte der einzelnen Slaves an. Jedem Slave ist ein Statusbyte zugeordnet.

Tabelle 8: Statusbyte

Kontrollieren Sie nacheinander die Statusbyte der Slaves, begin-nend mit Adresse 2 bis max. 124, auf Diagnosemeldungen, indem Sie Bit 0, 1 und 2 eines Statusbyte abfragen.

Tabelle 9: Bedeutung der Bits 0, 1, 2 im Statusbyte

Beispiel: In Abbildung 25 erscheint bei Slave 2 der Wert 5dez. 5dez entspricht dem Wert 00000101bin. Das bedeutet:

Bit 0 = 1: Eine Konfiguration ist vorhandenBit 1 = 0: Der Datenaustausch ist unterbrochenBit 2 = 1: Für den zweiten Teilnehmer liegen Diagnosedaten vor.

Im nächsten Abschnitt erfahren Sie, wie Sie diese Diagnosedaten gezielt für den Teilnehmer 2 abfragen.

Abbildung 24: Diagnose am PROFIBUS-DP-Strang

h Das hier beschriebene Ausgangsarray „abyExtendedInfo“ entspricht dem Ausgangsarray „ExtendedInfo“ der Vari-ablen vom Typ GETBUSSTATE, siehe Handbuch „XI/OC-Signalmodule“, AWB2725-1452D.

XC10

0/XC

200

CPU

1

DP-M

-Mod

ul

XC10

0/XC

200

CPU

2

DP-S

-Mod

ul

PRO

FIBU

S-D

P

Diagnose

Teiln

ehm

er n

Bit 7 6 5 4 3 2 1 0 Slave-Adresse

Byte 0

Byte 1

Byte 2 x x x 2

Byte 3 x x x 3

...

Byte 125 x x x 125

Bit 0 = 1: Für diese Adresse ist eine Konfiguration vorhanden

Bit 1 = 1: Datenaustausch ok1)

Bit 2 = 1: Neue Diagnosedaten liegen vor

1) Bit 1 zeigt bereits „1“-Signal an, wenn der Datenaus-tausch zum Ankoppeln des Slave erfolgreich war. Das bedeutet: Die Verbindung ist ok und der Datenaus-tausch findet statt.

Abbildung 25: Übersicht der Statusbyte von Slave 2 bis 4 (Zustandsanzeige)

Diagnosebausteine: XSys-DiagLib.lib

02/05 AWB2786-1456D

86

Abfrage der slavespezifischen Diagnosedaten

Rufen Sie hierzu den Funktionsbaustein „xDiag_ModuleDiag“ auf, geben Sie an den Eingängen „uiSlot“ die Steckplatznummer des Moduls und bei „uiIndex“ die Slavenummer ein. Starten Sie den Funktionsbaustein. Das Ausgangsarray „abyExtendedInfo“ zeigt die slavespezifischen Diagnosedaten des Teilnehmers an. Es ist aufgeteilt in:

• Allgemeine Diagnosedaten (Byte 0 bis 7)• Standard-Diagnosedaten (Byte 8 bis 13) nach DP-Norm.• Gerätespezifische Diagnosedaten (Byte 14 bis 99)

a Geräte-Dokumentation und zugehörige GSD-Datei.

Die wichtigen Daten sind in der Tabelle grau hinterlegt.

Diagnosefähige XI/ON-ModuleWenn Sie eine Diagnose mit dem Funktionsbaustein DIAGGETSTATE an einer XI/ON-Station durchführen, zeigt der Ausgang EXTENDEDINFO in Byte 15 und 16 die Diagnosedaten der gesamten Station an. Die Daten gehen aus der GSD-Datei des zentralen XI/ON-Gateway hervor.

Byte 17 bis 99 enthalten den Fehlercode der diagnosefähigen Module. Dies erfolgt in der Reihenfolge der Module. Für nicht diagnosefähige Module existiert kein Byte.

Der folgende Auszug aus dem Handbuch „XI/ON-Gateways für PROFIBUS-DP“ (AWB2725-1529D) zeigt die Diagnosebit der XI/ON-Module:

EXTENDEDINFO[0] // bei PROFIBUS-DP: Slaveadresse

EXTENDEDINFO[1..4] // keine Bedeutung

EXTENDEDINFO[5] // LaengenByte der Geraetediagnose

EXTENDEDINFO[6&7] // keine Bedeutung

EXTENDEDINFO[8..13] // 6 Octet DP-Standarddiagnose laut Norm

EXTENDEDINFO[8](Standard-Byte 1)

// Status_1

Bit 0: Gerät antwortet nicht (keine gueltigen IO-Daten)

Bit 1: Slave nicht bereit

Bit 2: abweichende Konfiguration

Bit 3: erweiterte Diagnose liegt vor

Bit 4: unbekannter Befehl

Bit 5: ungültige Antwort

Bit 6: Parametrierung unvollständig

Bit 7: Parametrierung von einem anderen Master

EXTENDEDINFO[9](Standard-Byte 2)

// Status_2

Bit 0: Bereit für neue Anlauf-Sequenz

Bit 1: keine Parametrierung

Bit 2: „1“

Bit 3: Watch Dog aktiviert

Bit 4: FREEZE-Befehl aktiv

Bit 5: SYNC-Befehl aktiv

Bit 6: Reserviert

Bit 7: Slave wurde nicht projektiert

EXTENDEDINFO[10](Standard-Byte 3)

// keine Bedeutung

EXTENDEDINFO[11](Standard-Byte 4)

// fuer PROFIBUS-DP: Masteradresse

EXTENDEDINFO[12&13](Standard-Byte 5, 6)

// eigene Identnummer

EXTENDEDINFO[14] // LaengenByte der gerätespezifischen Daten

EXTENDEDINFO[15..99] // gerätespezifische Diagnose.

EXTENDEDINFO[15] // Bit 0: Modul-Diagnose liegt vor

Bit 2: Parametrierung unvoll-staendig

Bit 3: Abweichende Konfiguration

EXTENDEDINFO[16] // Bit 1: –

Bit 2: Modulbusfehler

Bit 3: Master-Konfigurationsfehler

Bit 4: –

Bit 5: Stations-Konfigurationsfehler

Bit 6: I/Oassistant-Force Mode aktiv

Bit 7: Modulbusausfall

EXTENDEDINFO[17...99] a nachfolgende Tabelle; weitere Infor-mationen finden Sie auch im Handbuch „XI/ON PROFIBUS-DP“ (AWB2700-1394D).

Z. B. Versorgungsmodule

XN-BR-24VDC-D Bit 0: Modulbus-Spannungs-Warnung

Bit 2: Feldspannung fehlt

XN-PF-24VDC-D Bit 2: Feldspannung fehlt

XN-PF-120/230VAC-D Bit 2: Feldspannung fehlt

Z. B. Ausgabemodule

XN-2DO-24VDC-0.5A-PXN-2DO-24VDC-2A-PXN-2DO-24VDC-0.5A-NXN-16DO-24VDC-0.5A-P

Bit 0: Ueberstrom Kanal 1

Bit 1: Ueberstrom Kanal 2

02/05 AWB2786-1456D Diagnosedaten von Slaves am DP-Strang abfragen

7

8

BeispielEin Slave mit der Adresse 2 lässt sich nicht ankoppeln.

Wenn Sie in der Zustandsanzeige den Funktionsbaustein „xDiag_ModuleDiag“ und das Ausgangsarray „abyExtendedInfo“ aufrufen, erscheint folgende Abbildung:

(Das DP-M-Modul ist auf Steckplatz (uiSlot)= 1 gesteckt)

Tabelle 10: Auswertung der Standarddiagnose

Z. B. Analogmodul

XN-1AI-I Bit 0: Messwert-Bereichsfehler

Bit 1: Drahtbruch

XN-1AI-U Bit 0: Messwert-Bereichsfehler

XN-2AI-PT/NI-2/3 1. BYTE

Bit 0: Messwert-Bereichsfehler (Kanal 1)

Bit 1: Drahtbruch

Bit 2: Kurzschluss

2. BYTE

Bit 0: Messwert-Bereichsfehler (Kanal 2)

Bit 1: Drahtbruch

Bit 2: Kurzschluss

Z. B. Counter Modul

XN-1CNT-24VDC (C) Bit 0: Kurzschluss/Drahtbruch DO

Bit 1: Kurzschluss Geberversorgung 24 V DC

Bit 2: Zaehlbereichende falsch

Bit 3: Zaehlbereichanfang falsch

Bit 4: Invert-DI bei L-Retr. -Fehler

Bit 5: Hauptzaehlrichtung falsch

Bit 6: Betriebsart falsch

XN-1CNT-24VDC (M) Bit 0: Kurzschluss/Drahtbruch DO

Bit 1: Kurzschluss Geberversorgung 24 V DC

Bit 2: Geberimpulse falsch

Bit 3: Intergrationszeit falsch

Bit 4: Obergrenze falsch

Bit 5: Untergrenze falsch

Bit 6: Betriebsart falsch

Z. B. Direktstarter Modul

XS1-XBM Bit 0: Identfehler

Bit 1: PKZ Kurzschluss

Bit 2: PKZ Ueberlast

Bit 4: DIL1 defekt

Bit 5: DIL2 defekt

Abbildung 26: Slavespezifische Diagnosedaten des Slaves (Adresse 2), a Tabelle 10

Standarddiagnose Byte nAbyExtendedInfo[...]

Wert Bedeutung

Standarddiagnose Byte 1AbyExtendedInfo[8]

1 Slave ist nicht bereit

Standarddiagnose Byte 2AbyExtendedInfo[9]

12 Watchdog aktiviert

Standarddiagnose Byte 3AbyExtendedInfo[10]

0 Keine Bedeutung

Standarddiagnose Byte 4AbyExtendedInfo[11]

1 Masteradresse 1

Standarddiagnose Byte 5AbyExtendedInfo[12]

77 Identnummer

Standarddiagnose Byte 6AbyExtendedInfo[13]

25 Identnummer

Diagnosebausteine: XSys-DiagLib.lib

02/05 AWB2786-1456D

88

Diagnosedaten des DP-S-Moduls

Um festzustellen, ob das DP-S-Modul noch mit dem Master kommuniziert, rufen Sie den Funktionsbaustein „xDIAG_SystemDiag“ auf und fragen das Diagnosebyte des DP-S-Moduls am Ausgangsarray „abyModuleInfo“ ab.

Ist Bit 2 aus dem Diagnosebyte des DP-S-Moduls gesetzt, können Sie die Diagnosedaten des Moduls abfragen. Rufen Sie hierzu den Funktionsbaustein „xDiag_ModuleDiag“ auf, geben Sie an den Eingängen „uiSlot“ die Slotnummer und „uiIndex“ eine 0 ein und starten Sie den Funktionsbaustein. Die aufgelisteten Byte des Ausgangsarray „abyExtendedInfo“ zeigen den Kommunikations-status an:

Kompatibilität

Die Diagnose eines PROFIBUS-DP-Strangs (XIOC-NET-DP-M) können Sie weiterhin nach dem bestehenden Verfahren durch-führen (a AWB 2725-1452, Kapitel: XIOC-NET-DP-M). Setzen Sie dazu in der Steuerungskonfiguration l Modulparameter das Bit „EnableDiags“ auf „Yes“.

Alternativ können Sie die hier beschriebenen Funktionsbausteine „xDiagSystemDiag“ und „xDiagModuleDiag“ verwenden. In diesem Fall setzen Sie das Bit „EnableDiags“ auf „No“ (Default-Einstellung).

Versionsabfrage

Mit der Funktion „xdiag_GetSupplierVersion“ können Sie die Version der Bibliothek XSysDiagLib.lib auslesen. Sie liefert in der ersten Version den Wert 16#0101.

Abbildung 27: Diagnosedaten eines DP-S-Moduls

AbyExtendedInfo[1] = 16dez Datenaustausch mit DP-Master ok,

0dez not ok

AbyExtendedInfo[2, 3] Anzahl der konfigurierten Daten-blöcke (Byte) zum Senden

AbyExtendedInfo[4, 5] Anzahl der konfigurierten Daten-blöcke (Byte) zum Empfangen

CPU

XIO

C-N

ET-D

P-S

Abbildung 28: Merkerbereich für Diagnose aktivieren

Abbildung 29: Prototyp des Funktionsbausteins

xDIAG_GetSupplierVersion

xDummy xEnable xDIAG_GetSupplierVersion WORD

02/05 AWB2786-1456D Diagnosebausteine

9

8

Diagnosebausteine

„xDIAG_SystemDiag“

Der Funktionsbaustein liest System-Diagnosedaten aus.

Operandenbedeutung

Tabelle 11: Bedeutung der Bit 0, 1 und 2 im Diagnosebyte

Den Status von Bit 0 und Bit 1 ermitteln die Steuerungen XC100 und XC200 einmalig beim Start nach „Reset Ursprung“ und beim Einschalten der Spannung. Ein Ausfall oder Entfernen eines Ein-/Ausgangsmoduls im Betrieb erkennen die Steuerungen nicht. Die XN-PLC kontrolliert die XI/ON-Module auch im RUN-Betrieb und setzt die Bits 0 bis 2.

Abbildung 30: Prototyp des Funktionsbausteins

h Deklarieren Sie den Funktionsbaustein „xDiag_SystemDiag“ im Ordner „globale Variable“.

xDIAG_SystemDiag

BOOL xEnable dwCPUDiag DWORDuiConfiguredModules UINT

uiModulesWithDiag UINTabyModuleInfo ARRAY [1..100] OF BYTE

xEnable Solange der Eingang = TRUE ist, werden die Ausgänge des Bausteins bei jedem Bausteinaufruf aktualisiert. Ist xEnable = FALSE, werden alle Bausteinausgänge = 0.

dwCPUDiag Noch nicht definiert!

uiConfigured Modules

Der Ausgang liefert die Anzahl der konfigurierten XIOC-Module / XI/ON-Module.

uiModules-WithDiag

Der Ausgang liefert die Anzahl der Module, die zur Zeit modulspezifische Diagnosedaten melden.

abyModule-Info

Dieses Array beinhaltet für jedes vorhandene Modul ein Diagnosebyte. Das Diagnosebyte zeigt folgende Informationen, a auch Tabelle 11:

gültig für alle XI/OC- und XI/ON-Module

Bit 0 = 1: Modul konfiguriertAuf dem Steckplatz ist ein XIOC oder XI/ON-Modul konfi-guriert. Das Bit sagt nichts darüber aus, ob auf dem Steckplatz ein Modul gesteckt ist, bzw. ob das gesteckte Modul dem konfigurierten Modultyp entspricht.

= 0: nicht konfiguriert

Bit 1 = 1: Datenaustausch okAuf dem Steckplatz ist ein Modul gesteckt und der Modultyp entspricht der Konfiguration.

= 0: kein Austausch (Fehler in der Konfiguration)

gültig für XI/ON und DP-M gültig für DP-S

Bit 2 = 1: Diagnosedaten liegen vor Verbindung zwischen DP-S und DP-M fehlerhaft

= 0: keine Diagnosedaten Verbindung o.k.

7 6 5 4 3 2 1 0 Bit

Modul konfiguriertDatenaustausch okModulspez. Diagnose-daten vorhanden

Nicht verwendet

Diagnosebausteine: XSys-DiagLib.lib

02/05 AWB2786-1456D

90

xDIAG_ModuleDiag

BeschreibungDer Funktionsbaustein liest die modulspezifischen Diagnosedaten der Module XIOC-NET-DP-M bzw. XIOC-NET-DP-S in der XC100/XC200 und eines XI/ON-Moduls in der XN-PLC-CANopen. Weiterhin können Sie über diesen Funktionsbaustein die Diagnose der Teilnehmer eines PROFIBUS-DP-Strangs vornehmen.

Operandenbedeutung

Abbildung 31: Prototyp des Funktionsbausteins

xDIAG_ModuleDiag

BOOL xExecute xDone BOOLUINT uiSlot xBusy BOOLUINT uiIndex xError BOOL

wErrorID WORDuiInfoLength UINT

abyExtendedInfo ARRAY [0..129] OF BYTE

xExecute Eine positive Flanke am Eingang startet die einma-lige Ausführung des Funktionsbausteins.

uiSlot Der Eingang legt fest, für welchen Steckplatz die Diagnosedaten geliefert werden sollen.Hierbei gilt folgende Festlegung:uiSlot = 1 – 15 : Diagnose XI/OC-Steckplatz 1 – 15 (XC100 / XC200)uiSlot = 1 – 75 : Diagnose XI/ON-Steckplatz 1 – 75 (XN-PLC-CANopen)

uiIndex Der Eingang ist nur in Verbindung mit einem DP-M-Modul zu benutzen. Legen Sie den Steckplatz des DP-M-Moduls am Eingang „uiSlot“ fest.• Uindex = 0: Das Ausgangsarray „abyExtended-

Info“ enthält die Statusbytes der DP-Teilnehmer.• Uindex = 1...124 ()Teilnehmeradresse: Das

Ausgangsarray „abyExtendedInfo“ enthält Diag-nosedaten des DP-Teilnehmers

Adresse 0 ist nicht erlaubt.DP-S-Modul: Uindex = 0

xDone Der Ausgang ist nach Beendigung der Bausteinaus-führung = TRUE. Beim erneuten Start wird er = FALSE. Der Bausteinausgang liefert keine Aussage darüber, ob die Ausführung fehlerfrei abge-schlossen wurde.

xBusy Der Ausgang ist:• TRUE während der Bausteinausführung• FALSE nach der Ausführung.

xError Der Ausgang liefert nach der Bausteinausführung die Information: xError = FALSE: OKxError = TRUE: Fehler, Fehlercode l „uiErrorId“Beim erneuten Start des Bausteins wird „xError“ = FALSE.

uiErrorId Fehlercode: 0: Kein Fehler1: Ungültiger Slot2: Ungültiger Index3: Keine Diagnosedaten vorhanden4: Slave nicht erreichbar (Nur PROFIBUS-DP) 5: Slave sendet Error-Response (Nur PROFIBUS-DP)*1)

*1) Bei Auftreten dieses Fehlers wird der entspre-chende Fehlercode des DP-Slaves inabyExtendedInfo[0] abgelegt, uiInfoLength liefert den Wert 1.Beim erneuten Start des Bausteins wird der Ausgang = 0.

uiInfoLength Der Ausgang liefert eine Angabe über die Länge der gelieferten, modulspezifischen Diagnosedaten.

abyExtendedInfo Dieses Array beinhaltet dieDiagnosedaten in Abhängigkeit von „uiIndex“.

02/05 AWB2786-1456D Diagnosebeispiel

1

9

Diagnosebeispiel

In diesem Programmbeispiel wird die Diagnose von n Slaves (n = DP_MAX_SLAVE_ADR) am PROFIBUS-DP-Strang dargestellt. Es werden die Bausteine “xDIAG_SystemDiag“ und „xDIAG_ModuleDiag“ aus der Bibliothek „xSysDiagLib.lib“ verwendet. Das Beispiel kann an eine spezielle Anwendung ange-passt werden.

Es stehen folgende Geräte zur Verfügung:

ProgrammbeschreibungIm Abschnitt „Aktiviere Systemdiagnose“ wird der Baustein „xDIAG_SystemDiag“ (xiocSysDiag) gestartet. Unter „Generelle Strangdiagnose“ wird das Ausgangsbyte abyModuleInfo[1] (1= Slotnummer des DP-Masters) abgefragt. Ist das 2. Bit gesetzt, wird der Baustein „xDIAG_ModuleDiag“ (dpBusState) aufgerufen.

Im Programmteil ****Ermitteln, welcher Slave Diagnose meldet***** werden die Bytes der Slaves abgefragt, ob eine Diagnose vorliegt. Wenn ja, wird der Baustein „xDIAG_ModuleDiag“ unter neuer Referenzierung „dpmSlave-Diag“ für den speziellen Slave gestartet.

Es folgt die Auswertung der Moduldiagnose. Im Array „iDPDiagCnt“ werden die Diagnosemeldungen für jeden Slave gezählt. Wenn Sie das Array „iDpDiagCnt“ in der Zustandsanzeige aufrufen, hat es folgenden Aufbau:

Abbildung 32: Gerätekonfiguration für das Beispiel zur Diagnose

Master Slave 2 Slave 3 Slave n

XC20

0

DP-M

-Mod

ul

XC10

0

DP-S

-Mod

ul DP-Slave

EM4-204-DX1

LE4-116-DX1

Adresse 2 Adresse 3 Adresse n

Abbildung 33: Anzahl der Diagnosemeldungen

FUNCTION_BLOCK DP_Sys_Modul_Diag_Master

VAR_INPUT

DP_SLOT_NR:INT; (*:=1;*) (* DP-Master befindet sich im Slot 1 *)

DP_MAX_SLAVE_ADR:INT; (*:=124;*) (* höchste Slaveadresse *)

END_VAR

VAR_OUTPUT

FeldDiag_DP: ARRAY[0..129] OF BYTE; (* zusaetzliches Feld fuer Diagnosedaten (optional) *)

END_VAR

VAR

xiocSysDiag: xDIAG_SystemDiag; (* Diagnose der XIOC.Busteilnehmer *)

dpBusState: xDIAG_ModuleDiag; (* Ermitteln welche Slaves Diagnose melden *)

dpmSlaveDiag: xDIAG_ModuleDiag; (*Diagnosedaten der Slaves abfragen *)

iDpDiagCallCnt : ARRAY [1..124] OF INT:=0; (*Anzeigen welche Slaves wie oft Diagnose melden *)

uiSlaveDiagErrCnt: UINT:=0;

i:INT:=1;

xDiagAvailable: BOOL;

bDiagInLastCyc: BYTE;

END_VAR

Diagnosebausteine: XSys-DiagLib.lib

02/05 AWB2786-1456D

92

(*******************************Systemdiagnose aufrufen *********************************************)

IF NOT xiocSysDiag.xEnable THEN

xiocSysDiag.xEnable:=TRUE;

END_IF

xiocSysDiag();

(***********************Ermitteln ob im Master Diagnosemeldungen vorliegen *********************)

(* Wenn im DP-Master eine SystemDiagnose vorliegt

[oder im letzten Zyklus (Wechsel von Diag -> not Diag)],

dann fragen sie den Status des DP-Bus ab *)

IF(( xiocSysDiag.abyModuleInfo[DP_SLOT_NR] AND 16#04) = 04 OR bDiagInLastCyc>0) THEN

IF NOT dpBusState.xBusy AND NOT dpBusState.xExecute THEN

dpBusState.uiSlot:=DP_SLOT_NR;

dpBusState.uiIndex:=0;

dpBusState.xExecute:=TRUE;

END_IF

dpBusState();

IF dpBusState.xDone THEN

dpBusState.xExecute:=FALSE;

dpBusState();

bDiagInLastCyc:=xiocSysDiag.abyModuleInfo[DP_SLOT_NR] AND 16#04;

END_IF

END_IF

(********************** Ermitteln, welcher Slave Diagnose meldet ********************************)

(* Wenn kein Diag-FB aktiv ist, dann nächsten Slave mit Diagnose suchen*)

IF (NOT xDiagAvailable) THEN

WHILE (i<>(DP_MAX_SLAVE_ADR+1))

(* DP-Konfiguration bis zur Slaveadresse "DP_MAX_SLAVE_ADR"*)

DO

i:=i+1; (* Null ist nicht erlaubt!*)

(* Abfragen, welcher Slave Diagnose meldet; Bit 2 gesetzt*)

IF (dpBusState.abyExtendedInfo[i] AND 16#04) = 04 THEN

xDiagAvailable:=TRUE;

EXIT; (* Schleife verlassen, wenn ein Slave Diagnose meldet

END_IF

END_WHILE

(* Wenn kein Slave gefunden, dann Start von vorne *)

IF i > DP_MAX_SLAVE_ADR THEN

i:=0;

xDiagAvailable:=FALSE;

END_IF

END_IF

02/05 AWB2786-1456D Diagnosebeispiel

3

9

(*********************Diagnosedaten des Slaves abfragen *********************************)

IF (xDiagAvailable) THEN (* Slavediagnose liegt vor*)

IF NOT dpmSlaveDiag.xBusy AND NOT dpmSlaveDiag.xExecute THEN

dpmSlaveDiag.uiSlot:=DP_SLOT_NR;

dpmSlaveDiag.uiIndex:=i; (* Slaveadresse aus Suchschleife*)

dpmSlaveDiag.xExecute:=TRUE;

END_IF

dpmSlaveDiag();

IF dpmSlaveDiag.xDone THEN

IF dpmSlaveDiag.xError THEN (* Abfrage der Fehlermeldung *)

uiSlaveDiagErrCnt:=uiSlaveDiagErrCnt+1;

ELSE (* zähle die empfangenen Diagnosemeldungen*)

iDpDiagCnt[i]:=iDpDiagCnt[i]+1;

FeldDiag_DP:=dpmSlaveDiag.abyExtendedInfo;

END_IF

dpmSlaveDiag.xExecute:=FALSE;

dpmSlaveDiag();

xDiagAvailable:=FALSE;

END_IF

END_IF

02/05 AWB2786-1456D

94

02/05 AWB2786-1456D

5

9

13 Transparent-Modus-Funktionen: xSysCom200/SysLibCom/XC100_SysLibCom/XN-PLC-SysLibCom.lib

Die Bibliotheken gelten für die CPUs und XIOC-SER-Module

Generelles

Mit Hilfe der Funktionen können Sie aus dem Anwenderprogramm die RS-232-Schnittstelle folgender Geräte parametrieren und Daten senden/empfangen.

• CPU: XC200,XC100,XN-PLC• XIOC-SER-Modul in Verbindung mit XC200/XC100

Nur für XC200:Es stehen aus Kompatibilitätsgründen zwei Bibliotheken zur Verfü-gung. Es darf aber nur eine der beiden Bibliotheken in den Biblio-theksverwalter eingebunden sein. In beiden Bibliotheken finden Sie Funktionen, z. B. zum Öffnen und Schließen der Schnittstelle. Um die Übersicht zu erleichtern werden die Funktionen in den folgenden Abbildungen nebeneinander dargestellt.

Auf der linken Seite finden Sie die Funktionen aus den Biblio-theken für die XC200, XC100 und XN-PLC. Auf der rechten Seite sehen Sie die alternativen Funktionen aus der Bibliothek „SysLibCom“ für die XC200.

Die Namen der Funktionen aus der SysLibCom.lib werden auch in der „xSysCom200.lib“ verwendet, jedoch um ein „x“ erweitert, z. B.:

Werden beide Funktionen angesprochen, z. B. in den nachfol-genden Beschreibungen, wird der Funktionsname durch ein (x) gekennzeichnet, z. B. (x)SysComClose.

Bibliothek XC200 XC100 XN-PLC XIOC-SER

xSysCom200.libSysLibCom.lib

XX

––

––

XX

XC100_SysLibCom.lib – X – X

XN-PLC-SysLibCom.lib – – X –

XC200 xSysCom200.lib SysLibCom.lib

XC100 XC100_SysLibCom.lib

XN-PLC XN-PLC-SysLibCom.lib

xSysCom200.Lib SysLibCom.lib

Funktionsname xSysComClose SysComClose

Abbildung 34: Funktionsübersicht

Transparent-Modus-Funkti-onen: xSysCom200/SysLibCom/XC100_SysLibCom/XN-PLC-

02/05 AWB2786-1456D

96

Funktion „(x)SysComClose“

BeschreibungDie Funktion schließt die RS-232-Schnittstelle. Beim Schließen werden die zuletzt eingestellten Kommunikationsparameter wiederhergestellt. Die Funktion liefert als Rückgabewert TRUE, wenn die Aktion erfolgreich abgeschlossen wurde.

Parameter

Funktion „(x)SysComOpen“

BeschreibungDie Funktion öffnet die RS-232-Schnittstelle für den Transparent-Modus. Nach erfolgreichem Öffnen der Schnittstelle gibt die Funk-tion einen Rückgabewert größer als „0“ zurück.

X Tragen Sie diesen Wert bei den folgenden Funktionen als „dwHandle“-Parameter ein.

Ist ein Fehler aufgetreten, ist der Rückgabewert gleich „0“. Der Transparent-Modus der Schnittstelle wird dann nicht freigegeben.

Nach dem Öffnen der RS-232-Schnittstelle können Sie die Para-meter mit Hilfe der Funktion „(x)SysComSetSettings“ (a Seite 99) einstellen. Die zuvor eingestellten Werte für XIOC-SER im Steuerungskonfigurator und die Defaulteinstel-lungen der CPU werden dann ignoriert und erst nach dem Schließen der RS-232-Schnittstelle wieder gültig.

Parameter

Datentypen

Abbildung 35: Funktion „(x)SysComClose

dwHandle Rückgabewert aus der Funktion „(x)SysComOpen“

(x)SysComClose Rückgabewert TRUE: Schließen der RS-232-Schnittstelle war erfolgreich

Abbildung 36: Funktion „(x)SysComOpen“

Port Auswahl der Schnittstelle

Parameter: Spezifiziert die zu öffnende Schnittstelle.

(x)SysComOpen Rückgabewert 0: Öffnen der RS-232-Schnitt-stelle war nicht erfolgreich.

Rückgabewert > 0: Öffnen der RS-232-Schnitt-stelle war erfolgreich.

Abbildung 37: Datentypen COMPORTS/PORTS

02/05 AWB2786-1456D Generelles

7

9

Funktion „(x)SysComRead“

BeschreibungMit dieser Funktion können über die RS-232-Schnittstelle im Transparent-Modus empfangene Daten gelesen werden.

Parameter

Abbildung 38: Funktion „(x)SysComRead“

dwHandle Rückgabewert aus der Funktion „(x)SysComOpen“

dwBufferAddress Adresse, unter der die eingelesenen Daten abge-legt werden

dwBytesToRead Begrenzung der max. Anzahl der Datenbytes (COM 2 bis COM 5: max. 250 Byte)

dwTimeout Parameter ohne Bedeutung

(x)SysComRead Rückgabewert Informiert über die Anzahl der gele-senen Datenbytes.

h Achtung!Eine Prüfung der Bufferadresse bzw. der Buffergröße findet nicht statt!

Transparent-Modus-Funkti-onen: xSysCom200/SysLibCom/XC100_SysLibCom/XN-PLC-

02/05 AWB2786-1456D

98

Funktion „xSysComReadControl“

BeschreibungDie Hardware-Schnittstellenbaugruppe XIOC-SER verfügt über Kontroll-/Schnittstellenleitungen. Somit ermöglicht der Baustein „xSysComReadControl“ den Lesezugriff auf die Kontroll-/Schnitt-stellenleitungen der COM 2- bis COM 5-Schnittstelle.

Parameter

Datentyp

Abbildung 39: Funktion „xSysComReadControl“

dwHandle Rückgabewert aus der Funktion „xSysComOpen“

Control COM 2 bis COM 5: TRUE = Lesebefehl auf die Kontroll-/Steuerlei-tungen der Hardware-schnittstelle

xSysComReadControl COM 2 bis COM 5: TRUE = Lesebefehl war erfolgreich; FALSE = Lesebefehl war nicht erfolgreich

Abbildung 40: Datentyp COMCONTROL

02/05 AWB2786-1456D Generelles

9

9

Funktion „(x)SysComSetSettings“

BeschreibungMit dieser Funktion können die Schnittstellenparamter der RS-232-Schnittstelle für den Transparent-Modus eingestellt werden.

Parameter

Datentypen

Abbildung 41: Funktion „(x)SysComSetSettings

dwHandle Rückgabewert aus der Funktion „(x)SysComOpen“

ComSettings Zeiger, der auf den Speicherbereich zeigt, in dem die Schnittstellenparameter abgelegt sind

(x)SysComSetSettings Rückgabewert TRUE, wenn die Schnittstelle erfolgreich parametriert wurde; sonst FALSE

Abbildung 42: Datentyp COMSETTINGS

Transparent-Modus-Funkti-onen: xSysCom200/SysLibCom/XC100_SysLibCom/XN-PLC-

02/05 AWB2786-1456D

100

Funktion „(x)SysComWrite“

BeschreibungDiese Funktion erlaubt die Ausgabe von Daten über die RS-232-Schnittstelle.

Parameter

Abbildung 43: Funktion „(x)SysComWrite“

dwHandle Rückgabewert aus der Funktion „(x)SysComOpen“

dwBufferAddress Adresse, unter der die auszugebenden Daten abge-legt sind

dwBytesToWrite Anzahl der Datenbytes, die gesendet werden (COM 2 bis COM 5: max. 250 Byte)

dwTimeout Parameter ohne Bedeutung

(x)SysComWrite Rückgabewert Informiert über die Anzahl der gesendeten Daten.

h Achtung!Eine Prüfung der Bufferadresse bzw. der Buffergröße findet nicht statt!

02/05 AWB2786-1456D Generelles

01

1

Funktion „(x)SysComWriteControl“

Die Hardware-Schnittstellenbaugruppe XIOC-SER verfügt über Kontroll-/Schnittstellenleitungen. Somit ermöglicht der Baustein „(x)SysComWriteControl“ den Schreibzugriff auf die Kontroll-/Schnittstellenleitungen der COM 2- bis COM 5-Schnittstelle.

Parameter

Datentyp

Automatisches Schließen der Schnittstelle

Bei einem Zustandswechsel der XC200 in STOP wird der Transpa-rent-Modus durch das Betriebssystem automatisch beendet. Die Schnittstelle wird wieder mit den zuletzt eingestellten Schnittstel-lenparametern initialisiert.

h Diese Funktion ist nur beim XIOC-SER-Modul anwendbar!

Abbildung 44: Schreibzugriff auf die Kontroll-/Schnittstellenlei-tungen der COM 2- bis COM 5-Schnittstelle

dwHandle Rückgabewert aus der Funktion „(x)SysComOpen“

Control COM 2 bis COM 5: TRUE = Schreibbefehl auf die Kontroll-/Steu-erleitungen der Hard-wareschnittstelle

(x)SysComReadControl COM 2 bis COM 5: TRUE = Schreibbefehl war erfolgreich; FALSE = Schreibbefehl war nicht erfolgreich

Abbildung 45: Datentyp COMCONTROL

Transparent-Modus-Funkti-onen: xSysCom200/SysLibCom/XC100_SysLibCom/XN-PLC-

02/05 AWB2786-1456D

102

BeispielDas Beispiel zeigt eine Textausgabe über die RS-232-Schnittstelle der XC-CPU201 im Transparent-Modus.

PROGRAM PLC_PRG

VAR

BREMSE:TON;

STEP:UINT;

dwSioHandle: DWORD;

WriteBuffer:STRING(26);

nWriteLength: DWORD;

typComSettings:COMSETTINGS;

typComSetSettings:BOOL;

out AT %QB0:BYTE;

INP AT %IX0.0:BOOL;

STEPERR: UINT;

Closeresult: BOOL;

Coun: DWORD;

RESET: BOOL;

END_VAR

(*Zykluszeit/Cycletime: 50ms!*)

CASE STEP OF

0: IF INP =1 THEN (*Start: IX0.0 = TRUE*)

STEP:=1;

END_IF

1: (*Öffnen/Open*)

IF dwSioHandle=0 THEN

dwSioHandle:=xSysComOpen(Port:=Com1);

IF (dwSioHandle>0) THEN

typComSettings.typBaudRate :=Baud_9600;

typComSettings.typDataLength :=Data_8Bit;

typComSettings.typParity :=NO_PARITY;

typComSettings.typPort :=COM1;

typComSettings.typStopBits :=ONE_STOPBIT;

xSysComSetSettings(dwHandle:=dwSioHandle,ComSettings:=ADR(typComSettings));

STEP:=2;

RESET:=TRUE;

ELSE

STEPERR:=STEP;

STEP:=99;

END_IF

WriteBuffer:='Das ist der Sendetext';

END_IF

02/05 AWB2786-1456D Generelles

03

1

2: (*Ausgabe/Output*)

IF (dwSioHandle>0) THEN

nWriteLength:=xSysComWrite(dwHandle:=dwSioHandle,

dwBufferAddress:=ADR(WriteBuffer),

dwBytesToWrite:=LEN(WriteBuffer)+1,dwTimeOut:=0);

END_IF

IF nWriteLength = LEN(WriteBuffer)+1 THEN

STEP:=3;

Coun:=coun+1;

END_IF

3: (*Schliessen/Shut*)

Closeresult:=xSysComClose(dwHandle:=dwSioHandle);

IF (Closeresult = TRUE) THEN

dwSioHandle:=0;

STEP:=4;

ELSE

STEPERR:=STEP;

STEP:=99;

END_IF

4: (*Verzögerung/Delay*)

BREMSE(IN:=1, PT:=T#2s);

IF BREMSE.Q = 1 THEN

STEP :=5;

BREMSE(IN:=0, PT:=T#2s);

END_IF

5: (*Ende*)

STEP:=0;

99: (*Fehler/Error*)

STEPERR:=STEPERR;

END_CASE

02/05 AWB2786-1456D

104

02/05 AWB2786-1456D

05

1

Stichwortverzeichnis

A Analogwertausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Anzeigen

Vergleichswerte . . . . . . . . . . . . . . . . . . . . . . . . . . 54Vorgabewerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Zählerwerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Ausschaltverzögerungs-ZeitgliedMillisekunden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Sekunden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

azyklisches Lesen, Schreiben . . . . . . . . . . . . . . . . . . . . 71

B Bargraphdarstellung, Istwert . . . . . . . . . . . . . . . . . . . . 42Betrieb,Suconet-K-Strang . . . . . . . . . . . . . . . . . . . . . . . 79Bibliotheken

CANopen_Utilities.lib . . . . . . . . . . . . . . . . . . . . . . 63counter.lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Counter_Analog.lib . . . . . . . . . . . . . . . . . . . . . . . 59RTCLib.lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33SuconetK.lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73SuconetK_Master.lib . . . . . . . . . . . . . . . . . . . . . . . 75Visu.lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35XC100_File.lib . . . . . . . . . . . . . . . . . . . . . . . . . . . 65XS40_MoellerFB.lib . . . . . . . . . . . . . . . . . . . . . . . . 7XS40_MoellerFB_RTC.lib . . . . . . . . . . . . . . . . . . . 31XSysDiagLib.lib . . . . . . . . . . . . . . . . . . . . . . . . . . . 83xSysNetDPMV1.lib . . . . . . . . . . . . . . . . . . . . . . . . 71

C Cursor positionieren . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

D Daten skalieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Datenaustausch, azyklisch . . . . . . . . . . . . . . . . . . . . . . 71Datentyp spalten

DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14DATE_AND_TIME (DT) . . . . . . . . . . . . . . . . . . . . . 15TIME_OF_DAY . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Datenzugriffsbausteine . . . . . . . . . . . . . . . . . . . . . . . . 65Datenzugriffsbausteine, azyklische für PROFIBUS-DP . . 71Datenzugriffsbausteine, für Suconet K . . . . . . . . . . . . . 75Datum erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Datum schreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Datum und Uhrzeit erzeugen . . . . . . . . . . . . . . . . . . . . 13Device-Nummer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Diagnose

DP-Slave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Slaves am PROFIBUS-DP-Strang . . . . . . . . . . . . . . 83XI/ON-Module an der XN-PLC-CANopen . . . . . . . . 83

Diagnose, Suconet-K-Strang . . . . . . . . . . . . . . . . . . . . 80Diagnosebausteine . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Display-Inhalt

löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36sichtbar/nicht sichtbar schalten . . . . . . . . . . . . . . . 36

Display-Typ, abfragen . . . . . . . . . . . . . . . . . . . . . . . . . 37

E Echtzeituhrauswerten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31, 34setzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32, 33stellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Ein-/Ausgänge freigeben, Counter-Modul . . . . . . . . . . 53Einschaltverzögerungs-Zeitglied

Millisekunden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Sekunden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

F Fehlercodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69FIFO-Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Funktionen

SysComClose . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96SysComOpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96SysComRead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97SysComReadControl . . . . . . . . . . . . . . . . . . . . . . . 98SysComSetSettings . . . . . . . . . . . . . . . . . . . . . . . . 99SysComWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . 100SysComWriteControl . . . . . . . . . . . . . . . . . . . . . . 101xSysComClose . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96xSysComOpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96xSysComRead . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97xSysComReadControl . . . . . . . . . . . . . . . . . . . . . . 98xSysComSetSettings . . . . . . . . . . . . . . . . . . . . . . . 99xSysComWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . 100xSysComWriteControl . . . . . . . . . . . . . . . . . . . . . 101

Funktionen aktivieren . . . . . . . . . . . . . . . . . . . . . . . . . . 55Funktionsbausteine

ClearLines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35ClearScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36CounterControl . . . . . . . . . . . . . . . . . . . . . . . . . . . 53CounterFlags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55DataScale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10DATconcatX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13DateConcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14DateSplit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14DATSplitX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Diag_SystemDiag . . . . . . . . . . . . . . . . . . . . . . . . . 84EnableDisplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36FifoBx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18FifoWx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18FileClose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66FileDelete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67FileGetSize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69FileOpen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65FileRead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66FileRename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68FileSetPos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68FileWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67GetDisplayInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . 37GetRealTimeClock . . . . . . . . . . . . . . . . . . . . . . . . . 34GetTextAddress . . . . . . . . . . . . . . . . . . . . . . . . . . . 37GetTextDBInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . 38IEEE_To_Real . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Stichwortverzeichnis 02/05 AWB2786-1456D

106

InputValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38LifoBx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20LifoWx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20MI4netDP16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8MI4netDP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8MS_TimeFalling . . . . . . . . . . . . . . . . . . . . . . . . . . .24MS_TimeRising . . . . . . . . . . . . . . . . . . . . . . . . . . .25MV4netDP38 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9MV4netDP70 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9ReadCounter . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54Real_To_IEEE . . . . . . . . . . . . . . . . . . . . . . . . . . . .11S_TimeFalling . . . . . . . . . . . . . . . . . . . . . . . . . . . .26S_TimeRising . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27S40_16BitCounter . . . . . . . . . . . . . . . . . . . . . . . . .12S40_32BitCounter . . . . . . . . . . . . . . . . . . . . . . . . .12S40_GetRealTimeClock . . . . . . . . . . . . . . . . . . . . .31S40_RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31S40_SetRealTimeClock . . . . . . . . . . . . . . . . . . . . .32SDO_Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . .63SetBackLight . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40SetBacklight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40SetContrast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41SetCursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41SetRealTimeClock . . . . . . . . . . . . . . . . . . . . . . . . .33SR_x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21SRB_x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21SRW_x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21SUCONET K_SLAVE . . . . . . . . . . . . . . . . . . . . . . . .73SuconetK_Master . . . . . . . . . . . . . . . . . . . . . . . . .76SuconetK_MDX2Data, für EM4-201-DX2 . . . . . . . .78SuconetK_MSlaveData . . . . . . . . . . . . . . . . . . . . . .77TimeConcatX . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16TimeGenerator . . . . . . . . . . . . . . . . . . . . . . . . . . . .28TimePulse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29TimeSplitX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17TODconcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17TODSplit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18WriteBargraph . . . . . . . . . . . . . . . . . . . . . . . . . . . .42WriteCounter . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54WriteLine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43WriteMultiString . . . . . . . . . . . . . . . . . . . . . . . . . .43WriteMultiStringTextDB . . . . . . . . . . . . . . . . . . . . .44WriteMultiValue . . . . . . . . . . . . . . . . . . . . . . . . . .46WriteString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47WriteStringTextDB . . . . . . . . . . . . . . . . . . . . . . . . .48WriteSysDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49WriteSysDay . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49WriteSysTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50WriteValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50xDIAG_GetSupplierVersion . . . . . . . . . . . . . . . . . .88xDIAG_ModuleDiag . . . . . . . . . . . . . . . . . . . . . . . .90xDiag_ModuleDiag . . . . . . . . . . . . . . . . . . . . . . . .83xDIAG_SystemDiag . . . . . . . . . . . . . . . . . . . . . . . .89XDPMV1_READ . . . . . . . . . . . . . . . . . . . . . . . . . . .71XDPMV1_WRITE . . . . . . . . . . . . . . . . . . . . . . . . . .71XIOC_2CNT2AO_ANALOG . . . . . . . . . . . . . . . . . .62XIOC_2CNT2AO_INC . . . . . . . . . . . . . . . . . . . . . .59XIOC-IncEncoder . . . . . . . . . . . . . . . . . . . . . . . . . .57

H Hintergrundbeleuchtung, aus-/einschalten . . . . . . . . . 40

I Impulszeitglied . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Inbetriebnahme,Suconet-K-Strang . . . . . . . . . . . . . . . . 79Inkrementalgeberauswertung . . . . . . . . . . . . . . . . . . . 59Ist-Wert schreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

K Kommunikationsbaustein . . . . . . . . . . . . . . . . . . . . . . 73für Suconet-K-Slaves . . . . . . . . . . . . . . . . . . . . . . 73MI4 - PROFIBUS-DP . . . . . . . . . . . . . . . . . . . . . . . . 8MV4 - PROFIBUS-DP . . . . . . . . . . . . . . . . . . . . . . . 9

Kompatibilität, zu S40 . . . . . . . . . . . . . . . . . . . . . . . . . . 7Konfiguration, Suconet-K-Strang . . . . . . . . . . . . . . . . . 78Kontrast einstellen, am Display . . . . . . . . . . . . . . . . . . 41

L Lesen, azyklisch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71LIFO-Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Löschen

Display-Inhalt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Zeile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

M MI4netDP16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Multimedia-Speicherkarte (MMC), Zugriff . . . . . . . . . . 65

P Parameter übertragen . . . . . . . . . . . . . . . . . . . . . . . . . 63Parametrieren

Vergleichswerte . . . . . . . . . . . . . . . . . . . . . . . . . . 54Vorgabewerte . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Zählerwerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

PROFIBUS-DP, azyklische Datenzugruffsbausteine . . . . 71

R Register-Bausteine . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Rückwärtszähler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

S S40-Software, Standardbausteine . . . . . . . . . . . . . . . . . 7Schieberegister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Schnittstelle schließen, automatisch . . . . . . . . . . . . . 101Schreiben

Datum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Ist-Wert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50mehrere Strings gleichzeitig . . . . . . . . . . . . . . . . . 44String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47Strings aus alphanummerischen Zeichen . . . . . . . 43Strings, aus Textdatei . . . . . . . . . . . . . . . . . . . . . . 48Uhrzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Werte, max. 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Wochentag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Zeile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Schreiben, azyklisch . . . . . . . . . . . . . . . . . . . . . . . . . . 71Skalieren, Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Sollwert eingeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Spalten, Variablentyp TIME . . . . . . . . . . . . . . . . . . . . . 17

02/05 AWB2786-1456D Stichwortverzeichnis

07

1

Statusbyte, DP-Slave . . . . . . . . . . . . . . . . . . . . . . . . . . 85Strings schreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

aus alphanummerischen Zeichen . . . . . . . . . . . . . 43aus Textdatei . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48mehrere gleichzeitigi . . . . . . . . . . . . . . . . . . . . . . . 44

Suconet K, Datenzugriffsbausteine . . . . . . . . . . . . . . . . 75Suconet-K-Busanschaltung (Kommunikationsbaustein) 73Suconet-K-Strang

Betrieb, Inbetriebnahme . . . . . . . . . . . . . . . . . . . . 79

T Taktgenerator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Textadresse auslesen, am Display . . . . . . . . . . . . . . . . 37TextDB Information auslesen . . . . . . . . . . . . . . . . . . . . 38Transparent-Modus

Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Transparentmodus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

U Übertragungsbaustein . . . . . . . . . . . . . . . . . . . . . . . . . 63Uhr-Bausteine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Uhrzeit erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Uhrzeit schreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

V Vergleichswerteanzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54parametrieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Versionsabfrage, Bibliothek XSysDiagLib.lib . . . . . . . . . 88Visualisierungsbausteine . . . . . . . . . . . . . . . . . . . . . . . 35Vorgabewerte

anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54parametrieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Vorwärtszähler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

W Werte schreiben, max. 8 Strings . . . . . . . . . . . . . . . . . . 46Wochentag schreiben . . . . . . . . . . . . . . . . . . . . . . . . . 49

X XIOC-SER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

Z Zahlen konvertierenDatentyp REAL in IEEE-754-Standard-Format . . . . 11IEEE-754-Standard-Format in Datentyp REAL . . . . 11

Zähler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Zähler-Bausteine . . . . . . . . . . . . . . . . . . . . . . . . . . 53, 59Zählerwerte

anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54parametrieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Zeile löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Zeile schreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Zeitdauer erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Zustände abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Zustandsanzeige, DP-Slave . . . . . . . . . . . . . . . . . . . . . 85


Recommended