Date post: | 02-May-2023 |
Category: |
Documents |
Upload: | khangminh22 |
View: | 0 times |
Download: | 0 times |
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
1IEEE_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
1Date 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
1DATSplitXDatentyp 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
1TimeSplitXVariablentyp 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
1Mit 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
2Mit 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
2Der 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
2MS_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
2S_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
2TimePulseImpulszeitglied
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
1
32 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
33 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
34 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
3GetDisplayInfoBetriebszustand 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
3BeschreibungDer 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
4SetContrastKontrast 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
4WriteLineZeile 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
4BeschreibungMit 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
4Beispiel:
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
4WriteSysDateDatum 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
5BeschreibungMit 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
3
55 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
5CounterFlagsFunktionen 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
5XIOC_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
56 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
6Anwendungsbeispiel:
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
67 Ü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
68 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
6FileWrite
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
6FileGetSize
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
1
79 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
710 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
5
711 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
7SuconetK_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
7Konfigurationsbeispiel 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
8Type-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
3
812 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
8Diagnosedaten 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
8BeispielEin 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
8Diagnosebausteine
„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
9Diagnosebeispiel
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
5
913 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
9Funktion „(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
9Funktion „(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
1Funktion „(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
12: (*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
05
1Stichwortverzeichnis
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
1Statusbyte, 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