www.brix.de - Hauptseite, Elektrotechnik, SPS | Stand: 2013-02-10 |
Nun wird es ein wenig komplizierter, aber in Wirklichkeit strukturierter und dann doch wieder einfacher. Es soll erklärt werden, was Datenbausteine sind und welchen Vorteil sie gegenüber klassischen Merkern haben. Wie hängen Funktionsbausteine und ihre Instanzdaten zusammen, was machen Organisationsbausteine unter welchen Umständen? - Das sollen weitere Fragen in diesem Kapitel sein. Auch direkte Peripheriezugriffe und die Verarbeitung von analogen Ein- und Ausgangsdaten sind hier Thema. Dennoch gilt: Viele Details sind weggelassen, einige ganz spezielle Dinge aber doch aufgenommen, wenn sie zum erfolgreichen Arbeiten und Weiterkommen notwendig sind. Diese Details sind dann nicht immer erschöpfend erklärt.
Hier eine wiederholte Durchsage: Bitte gleich die richtigen Dinge lernen und nicht mit unpassenden Analogien aus der S5-Welt arbeiten ("Vergessen musst, was früher du gelernt", Yoda, Star Wars Episode V): Die S5-Bausteine PB und SB können weder Parameter noch Instanzdaten haben und der S5-Baustein FB kann zwar Parameter haben, aber ebenfalls keine Instanzdaten, daher wurden in der S5 die Parameter als Instanzdaten missbraucht.
In der S7 ist der Unterschied von FC und FB nur die lokale Speicherung (in einem DB) der statischen Instanzdaten. Beide Bausteine können Parameter haben, aber nur der FB ist in der Lage, sich Daten von Zyklus zu Zyklus zu merken. Tatsächlich gibt es aber kaum ein passende Analogie zur S5, allenfalls kann man den S5-FB mit der S7-FC vergleichen (beide haben Parameter, beide haben keine Instanzdaten).
Variablentabellen ermöglichen das Beobachten und Steuern von Variablen, die aus dem gesamten Programm zusammengestellt werden können. Dies geht also weit über das Beobachten eines Bausteins im KOP/AWLFUP-Editor hinaus.
Standard ist, das das Beobachten "Permanent" getriggert wird und das Steuern "einmalig". Soll eine Variable in jedem Zyklus erneut gesteuert werden, so muss auch das Steuern "Permanent" getriggert werden. Bevor dies passiert, erfolgt eine Sicherheitsabfrage, ob wirklich permanent in den Prozess eingegriffen werden soll.
--> Eingangswerte werden meist zu Beginn des Zyklus gesteuert, damit das Programm mit dem gesteuerten Eingangswert arbeitet.
--> Ausgangswerte werden meist zum Ende des Zyklus gesteuert, damit sie nicht mehr vom Programm überschrieben werden können.
Die Triggerbedingung kann nur für die ganze Tabelle gewählt werden, nicht für einzelne Operanden!
Wenn man einzelne Operanden auswählt, so kannman auch nur die ausgewählten Operanden steuern. - Doch Vorsicht: Wenn keine Operanden ausgewählt sind, werden beim Steuern alle Operanden gesteuert!
Permanentes Steuern endet mit dem Beenden des Programms "Var" oder mit dem Ende der Verbindung PG-AG. Sollte darüber hinaus gesteuert werden so heißt dies "Forcen".
Organisationsbausteine werden nicht durch das Anwenderprogramm aufgerufen, sondern ausschließlich durch das Betriebssystem. Wann solch ein Aufruf erfolgt, hängt vom Eintreten eines Ereignisses ab. Bestimmte Ereignisse führen zum Aufruf bestimmter OBs.
PAA ist ausgegeben, PAE ist neu eingelesen -> OB1 starten und von vorn beginnen (Hauptzyklus)
Programmierfehler -> laufendes Programm unterbrechen -> OB121 aufrufen (obligatorisch) -> Programm nach der Fehlerstelle fortsetzen. Gibt es keinen OB121 wird die Anlage komplett gestoppt!
Zyklusüberwachungszeit (max. erlaubte Zeit für einen Zyklus) wird überschritten -> laufendes Programm unterbrechen -> OB80 aufrufen (obligatorisch) -> Programm genau an der Unterbrechungsstelle fortsetzen. Dauert der Zyklus dann doch noch länger als die doppelte Zyklusüberwachungszeit wird die Anlage kopmplett gestoppt, ebenso falls kein OB80 vorhanden ist.
Zyklische Unterbrechungszeit tritt ein ("Weckalarm") -> laufendes Programm unterbrechen -> zuständigen OB3x (hier: OB35) aufrufen (optional) -> Programm genau an der Unterbrechungsstelle fortsetzen.
Bestimmte Unterbrechungszeit tritt ein ("Uhrzeitalarm") -> laufendes Programm unterbrechen -> zuständigen OB1x (hier: OB10) aufrufen (optional) -> Programm genau an der Unterbrechungsstelle fortsetzen.
Jeder OB hat eine festgelegte Priorität. Nur ein OB höherer Priorität kann einen laufenden OB unterbrechen. Hat der die Unterbrechung anfordernde OB eine niedrigere oder gleiche Priorität als der laufende, so muss er auf dessen Ende warten.
Deklarationsliste innerhalb des DB.
Kann von allen mit Globaler Adressierung benutzt werden:
Globale Adressen: DB[Nr.].DBX4.0 (Bit 4.0) DB[Nr.].DBB4 (Byte 4) DB[Nr.].DBW4 (Wort 4 = Byte 4 + 5) DB[Nr.].DBD4 (Doppelwort 4 = Wort 4 + 6)
Die Adressierung sieht im Speicher dann so aus wie in der folgenden Text-Grafik. Dabei ist aber zu beachten, dass bei mehr als ein Byte großen Daten, das niederwertigste Bit, das Bit 0 des höchstwertigen Bytes ist! - Insofern hätte hier die Darstellung auch mit absteigender Bit-Reihenfolge innerhalb eines Bytes geschehen können.
4.0 - DB[Nr.].DBX4.0 | \ \ 4.1 | \ \ 4.2 | \ \ 4.3 - DB[Nr.].DBX4.3 | | \ 4.4 | | DB[Nr.].DBB4 \ 4.5 | / \ 4.6 | / \ 4.7 | / \ | DB[Nr.].DBW4 5.0 - DB[Nr.].DBX5.0 | \ / 5.1 | \ / 5.2 | \ / 5.3 | | / 5.4 | | DB[Nr.].DBB5 / 5.5 - DB[Nr.].DBX5.5 | / / 5.6 | / / 5.7 | / /
Die Deklarationsliste befindet innerhalb des aufrufenden FBs. Ein Instanz-DB kann mit Global-DB-Adressen auch "von allen" also global benutzt werden Das sollte aber die absolute Ausnahme sein!
Innerhalb des FB wird er durch die Symbolik in der Deklarationsliste benutzt.
Ein Instanz-DB kann von innerhalb des FBs auch absolut mit Adressen benutzt werden, eine DB-Nummer darf nicht angegeben werden, da diese ja erst beim Aufruf des FBs übergeben wird:
Indizierte Adressen: DIX4.0 (Bit 4.0) DIB4 (Byte 4) DIW4 (Wort 4 = Byte 4 + 5) DID4 (Doppelwort 4 = Wort 4 + 6)
"DI" wird automatisch ersetzt durch durch "DB[Nr.].DB", wobei "[Nr.]" die Nummer des DBs ist mit dem der FB aufgerufen wird!
Allerdings ist mit der DI-Adressierung Vorsicht geboten, da durch diese Art der Adressierung ein FB nicht mehr als Multiinstanz laufen kann! - Denn dann stimmt die DB-Nummer natürlich nicht, weil die Multiinstanz ja gar keinen "eigenen" DB hat.
Hier der Versuch einer Erklärung was der Unterschied von FBs und FCs eigentlich ist und was die Daten in der Tabelle im Kopf bei der Prgrammierung im KOP/AWL/FUP-Editor eigentlich bedeuten.
Nach IEC 61131 hat eine FC genau einen Rückgabewert (bei Siemens die Variable RET_VAL). Bei Siemens hat die FC dagegen mehrere Einsatzgebiete:
1. ist sie schlichtes Teilprogramm, um ein größeres Programm zu strukturieren
2. Ist sie eine Funktion mit mehreren Ausgangsvariablen und erst
3. ist sie eine Funktion im Sinne der IEC.
Doch egal wie man sie einsetzen mag: Ganz sicher hat sie niemals "Statische Daten". Statische Daten oder scheinbar noch widersprüchlicher "Statische Variablen" sind solche Daten, die im RAM an einem bestimmten Platz gespeichert sind und nicht verloren gehen, wenn der Programmteil, der sie benutzt beendet wird. Denn genau das ist bei "Temporären Daten" der Fall. Statische Daten bleiben also von einem Zyklus zum nächsten erhalten und werden nur durch Schreibzugriffe verändert/gelöscht. Sie haben den Status im System wie ihn auch die klassischen Merker (aus dem M-Bereich) haben.
Multiinstanzen sind FBs, die innerhalb eines FBs aufgerufen werden und keinen eigenen DB haben (wie sonst für FBs obligatorisch). Sie bringen ihre Daten im DB des sie aufrufenden FBs unter. Man könnte sagen, sagen, dass die DBs von Multiinstanzen in einen anderen DB "geschachtelt" sind.
1. Es ist ein FB (a) vorhanden, der sehr oft benutzt werden soll (bedeutet normalerweise, dass es so viele Instanz-DBs geben würde wie die Anzahl der Aufrufe).
2. Ein "Aufrufe-FB" (=übergeordneter FB (ü)) wird angelegt, damit der Instanz-DB als Behälter für die Instanzdaten der aufgerufenen FBs (a) (="Multiinstanzen") benutzt werden kann. Eine "Multiinstanz" ist also ein Instanz-DB des FBs (a), der in einem anderen Instanz-DB (nämlich den des übergeordneten, aufrufenden FBs (ü)) hineingelegt wird.
3. Der "Aufrufe-FB" muss seinerseits von OB1 aufgerufen werden, damit er überhaupt bearbeitet wird. Dabei wird ein DB als Instanz-DB genannt und generiert, den es noch nicht geben darf. Dieser Instanz-DB ist derjenige, der die Multiinstanzen aufnehmen wird und später der einzige DB, der geladen werden muss.
4. In der Deklarationstabelle des "Aufrufe-FB" (ü) werden unter "STAT" Namen für die FB-Aufrufe von FB (a) erfunden und eingetragen. Als Datentyp wird die FB-Nummer von FB (a) eingetragen, damit wird eine Multiinstanz generiert und ist im Multiinstanzen-Ordner verfügbar. Durch diesen Vorgang wird ein virtueller DB des FB (a) in den (echten) DB des FB (ü) integriert. Dies muss so oft geschehen, wie der FB (a) aufgerufen/benutzt werden soll. Jede Multiinstanz darf innerhalb von FB (ü) nur einmal benutzt werden (sonst "Renate").
5. Beim Speichern wird die Warnmeldung "Schnittstelle wurde geändert" angezeigt, deshalb muss der Aufruf von FB (ü) aktualisiert und der Instanz-DB neu (aus den neuen Kopfdaten von FB (ü)) generiert werden.
6. Was muss an die SPS übertragen werden? - FB (a), FB (ü) und dessen Instanz-DB (darin enthalten sind die "virtuellen" DBs der FB (a)-Aufrufe.
Mit Peripherie-Zugriffen wird direkt auf die Eingänge und die Ausgänge zugegriffen, ohne die regelmäßige Aktualisierung der Ausgänge anhand des PAA bzw. Aktualisierung des PAE anhand der Eingänge zu Ende/Beginn des OB1-Zyklus abzuwarten.
]---AW4 schreibt ins PAA
]---PAW4 schreibt ins PAA und gleichzeitig auf die wirklichen Ausgänge.
D.h. der Buchhalter macht die Eintragung ins Ausgangsbuch (PAA) und schickt sofort danach einen HiWi mit einem Zettel in den Keller, um die Ausgangsschalter entsprechend umzulegen. Alle anderen Ausgänge bleiben unangetastet.
EB2---[ liest aus dem PAE
PEB2---[ liest aus dem PAE, nachdem das PAE an Hand der wirklichen Eingänge aktualisiert wurde.
D.h. der Buchhalter schickt seinen HiWi in den Keller, um die Werte der gewünschten Adresse von den Eingängen zu holen. Er überträgt die Werte ins Eingangsbuch (PAE) und teilt sie uns mit. Alle anderen Werte des des Eingangsbuches bleiben auf dem alten Stand.
Peripherie-Zugriffe verändern die Prozessabbilder! - Das ist besonders für das PAE interessant, da es ja normalerweise während eines Zykluses gleich bleibt!
Die Mindestdatenmenge eines Peripherie-Zugriffes ist ein vollständiges Byte! - Man kann also nicht nur ein Bit eines Ausganges setzen! - Das heißt, man schreibt bei Peripherie-Zugriffen auf Ausgänge unter Umständen auch "fremde" Bits mit "nach draußen"! - Selbst wenn man die klassiche Sequenz:
L AB 2
T MB 30
U E 0.1
U E 0.2
= M 30.4
L MB 30
T PAB 2
verwendet!
Daher sollte man Peripherie-Zugriffe nur dann machen, wenn es wirklich notwendig ist. Also nur bei zeitkritischen Prozessen, in denen aktuelle Daten erforderlich sind bzw. die Ausgänge sofort angesteuert werden müssen. In allen anderen Fällen sollten die Adressen der Ein- und Ausgangsbaugruppen in die Prozessabbilder gelegt werden (geht bei allen CPUs außer ganz alten 312er, 313er und 314er) oder die Prozessabbilder so weit vergrößert werden, dass die vom System vergebenen Adressen mit drin liegen (Achtung: Diagnose-Adressen von CPs dürfen nicht in den Prozessabbildern liegen).
Analoge Eingangs- und Ausgangsbaugruppen messen Spannungen und Ströme die von Analogsensoren erzeugt werden. Das heißt, der Sensor wandelt die (meist nicht elektrische) Messgröße in die elektrische Größe Spannung oder Strom. Dies geschieht außerdem normiert auf folgende Werte:
Ein Temperatursensor mit dem Messbereich -10°C - +60°C und den elektrischen Werten 4 - 20 mA treibt also bei -10°C genau 4 mA durch den Messkreis und bei +60°C genau 20 mA. Diese normierte elektrische Größe wird von der Eingangsbaugruppe gemessen.
Strommessungen sind genauer und zuverlässiger als Spannungsmessungen. Genauer, weil der Leitungswiderstand nicht mit in den Messwert eingeht, da der Strom an jeder Stelle eines unverzweigten Stromkreises gleich groß ist. Zuverlässiger, weil der notwendigerweise hochohmige Spannungsmesseingang auch elektromagnetische Einkopplungen in die Messleitung mitmisst.
Da 0 V bzw. 0 mA vom Drahtbruch nicht zu unterscheiden sind, sind nur die Messungen deren Wertebereich bei 2 V bzw. 4 mA beginnt drahtbruchsicher.
Analoge Werte gelten oft als Mysterium der SPS, weil der die Umsetzung in verschiedenen Bit-Auflösungen dennoch zum gleichen Wertebereich von -32768 .. +32767 führt, der dann aber doch nur zum Teil ausgenutzt wird.
Vielleicht kann folgende Grafik die Aufteilung der Quanten verdeutlichen:
Bei unipolaren Analog-Baugruppen wird also tatsächlich nur der Wertebereich von 0 .. 27648 ausgenutzt. Werte kleiner als Null oder größer als 27648 sind als Bereichsüberschreitung zu interpretieren. Je nach Auflösung der Baugruppen wird der gültige Wertebereich in verschieden viele Stufen aufgeteilt. Diese Anzahl ist aber keine glatte Zweierpotenz!
Prinzipiell muss man sich über diesen Sachverhalt aber nur wenig Gedanken machen, wenn man die Bausteine SCALE und UNSCALE benutzt, die im Folgenden beschrieben werden.
Analoge Eingangswerte sollten unbedingt in Prozessgrößen umgerechnet werden, so dass man innerhalb des SPS-Programmes in "echten" Prozessgrößen denken und rechnen kann. Dazu gibt es in der Bibliothek: Standard Library: TI-S7 Converting Blocks die beiden Skalierbausteine "SCALE" (FC105) und "UNSCALE" (FC106).
Der Baustein SCALE berechnet aus dem Wert der Analogbaugruppe den Prozesswert. Dazu muss der Baustein die "Bedeutung" des Wertes kennen. Dies wiederum gibt man durch die untere und die obere Grenze des Wertes an.
Die untere Grenze gibt an, was der Analogwert 0 (bzw -27648 bei bipolaren Baugruppen) bedeutet, die obere Grenze sagt, was der Analogwert 27648 heißt. Der Eingangswert ist eine Ganzzahl (INT), die Grenzen und der Prozesswert sind Fließkommazahlen (REAL). Im oben gezeigten Beispiel stammen die Ober- und die Untergrenze aus einem Merker. Das macht die Programmierung flexibler, wenn man mal etwas ändern muss. Idealerweise nimmt man keinen Merker, sondern Daten aus einem Datenbaustein. Das ist auch sinnvoll, um diese Werte an eine Visualisierung zu übergeben. Werden dann in dem DB die Parameter geändert, so ändert sich die Anzeige auf dem Panel gleich entsprechend mit.
Ist der Analogwert kleiner als 0 (bzw. -27648 bei bipolaren Baugruppen) oder größer als 27648 liefert die Skalierfunktion eine "0" an ENO und ein W#16#0008 am Wort-Ausgang RET-VAL. Der Prozesswert hat die Größe der unteren bzw. oberen Grenze.
Was für die analogen Eingänge gilt, trifft natürlich auch für die Ausgänge zu. Erst direkt vor dem eigentlichen analogen Ausgang sollte von Prozessgrößen in die Integer-Werte eines Analogausganges umgerechnet werden. Dies erledigt der Baustein UNSCALE. Seine Benutzung funktioniert genau umgekehrt wie beim SCALE-Baustein.
Eine Skalierfunktion lässt sich aber auch leicht selbst schreiben, was den Vorteil hat, dass man auch außerhalb des Bereichs extrapolierte Werte ausgeben kann und eine Bereichsüberschreitung besser signalisieren kann.
In der bipolaren - also allgemeineren - Version muss aus dem oben gezeigten Diagram die Funktion des Prozesswertes in Anbhängigkeit vom Analogeingangswert gefunden werden.
Diese Funktion
Prozesswert = f(Analogwert)
lässt sich als einfache Geradengleichung in der Form
f(x) = y = m * x + b
darstellen. Dabei ist m die Steigung der Geraden und b der Schnittpunkt der Geraden mit der y-Achse. Wie im obigen Diagramm zu sehen, ergibt sich daraus die Funktionsgleichung für die bipolare Auswertung des Analogeingangssignals:
Spanne Spanne / \ / \ obere_Grenze - untere_Grenze obere_Grenze - untere_Grenze Prozesswert = -------------------------------- * Analogwert + -------------------------------- + untere_Grenze 2* 27648 2 \__ "y" __/ \________ Steigung "m" ________/ \__ "x" __/ \_____________________ "b" _______________________/
Die unipolare Skalierung ist ein wenig einfacher. Die Unterschiede bestehen im anderen Wert für delta x und in der etwas einfacherren Berechung des y-Achsenabschnittes. Die Grafik verdeutlicht dies.
Hieraus ergibt sich die Funktionsgleichung für die unipolare Auswertung des Analogeingangssignals:
Spanne / \ obere_Grenze - untere_Grenze Prozesswert = -------------------------------- * Analogwert + untere_Grenze 27648 \__ "y" __/ \________ Steigung "m" ________/ \__ "x" __/ \__ "b" __/
Umgesetzt in ein Programm kann das z.B. wie im Folgenden dargestellt aussehen. Die Berechnung für unipolarer und bipolarer Eingangssignale unterscheidet sich in der Division durch 2 bei der Steigung (die Gerade hat bei bipolarer Anwendung genau die Hälfte der Steigung, weil der delta x doppelt so groß ist) und der anderen Berechung von "b" (die Hälfte der Spanne muss zusätzlich addiert werden).
Die hier gezeigte Variante der Skalierfunktion extrapoliert die Werte auch über den Analogeingangswert 27648 (bzw. -27648) hinaus.
+ Erhebliche Verringerung des Verdrahtungsaufwandes
+ Übersichtliche Verdrahtung
+ kostengünstiger durch Kupferader Einsparung
- Single-Point-of-Failure: Bei Drahtbruch oder Kurzschluss liegt eine Störung des gesamten Bussystems vor
- kaum ein Eingriff "von Hand" möglich
- eine Fehlerdiagnose ist meistens schwieriger als bei konventioneller Verdrahtung
Profibus ist so flexibel, dass er von Feld- bis Prozess-/Leitebene eingesetzt wurde. Auf der Prozess-/Leitebene ist er inzwischen von Industrial Ethernet abgelöst. Er wird heute fast nur noch für die Anbindung Dezentraler Peripherie (DP) eingesetzt. Aber auch hier ist Profinet, welches auf Industrial-Ethernet-Hardware aufsetzt, dabei, den Profibus in Neuinstallationen vollständig zu verdrängen und dessen Nachfolge anzutreten.
* 2-Draht-Schnittstelle, 150 Ohm Impedanz
* seriell (Hinweise auf RS-232 und RS-422)
* EIA 485 (früher: RS-485)
* Multipoint-fähig (mehr als 2 Teilnehmer)
* halbduplex
* Differentielles Signal ("massefrei")
* D-9-Stecker an der Leitung (150 Ohm), D-9-Buchsen an den
Geräten (12 kOhm = 1 Unit Load)
* Profibus und MPI sind elektrisch identisch
* max. 1200 m Länge
* max. 12 Mbit/s Datenrate
* Länge und Datenraten hängen umgekehrt proportional von einander ab
| maximale Geschwindigkeit | Länge | pro Segment -------------------------------- | 9,6 kbit/s | 19,2 kbit/s | 45,45 kbit/s | 1200 m 93,75 kbit/s | | 187,5 kbit/s | 1000 m | 500 kbit/s | 400 m | 1,5 Mbit/s | 200 m | 3 Mbit/s | 6 Mbit/s | 100 m 12 Mbit/s | | Quelle: PROFIBUS Systembeschreibung - Technologie und Anwendung Version November 2010 PROFIBUS Nutzerorganisation e. V. (PNO)
* max. 32 Teilnehmer in einem Segment (wegen erlektrische Last)
* max 126 Teilnehmer in einem Profibus-Netz (bei Profibus DP-Protokoll mit Adressen 1 bis 126, 0 und 127 frei)
* jedes Segment wir an beiden Enden mit einem Abschlusswiderstand terminiert !
Repeater sind erforderlich, wenn die Teilnehmeranzahl 32 übersteigt, weil die Gesamtlast der 32 (parallel geschalteten!) Teilnehmer so groß ist, dass das Signal für weitere Teilnehmer zu schwach wäre oder wenn die Gesamtlänge der Leitung zu groß wird. Was im Einzelfall "zu lang" ist, hängt von der gewählten Übertragungsgeschwindigkeit ab.
Ein Repeater benötigt für seine Funktion keine eigene Profibus-Adresse, weil er ein OSI-Schicht-1-Gerät ist, welches das Signal rein elektrisch verstärkt und von den Daten, die er verstärkt "keine Ahnung" hat.
Häufig werden so genannte Diagnose-Repeater aber eingesetzt, obwohl beide Kriterien (Teilnehmeranzahl und Längenüberschreitung) nicht gegeben sind. Diagnose-Repeater sind über ihre Repeater-Funktion hinaus aktive, also "ansprechbare" Profibus-Geräte und benötigen daher auch eine Adresse. Solche Repeater geben Aufschluss über den Aufbau und den Zustand des Profibus-Segmentes welches sie "überwachen" oder diagnostizieren.
Diese Skizze stellt den Repeater als physikalisches Ende des einen Segmentes bzw. als Anfang anderen Segmentes dar. Ein Repeater kann aber auch in der Mitte eines Segmentes eingebaut werden, um dort eine Stichleitung beginnen zu lassen.
Profibus benutzt ein hybrides Zugriffsverfahren auf das Medium: Token-Passing ist Master-Slave-Verfahren kombiniert. Daher ist Profibus in dem Sinne "echtzeitfähig", dass vorhersagbar ist, wann die Signale eines Teilnehmers übertragen werden. Das Zugriffsverfahren ist deterministisch.
Voraussetzung: Anlage ist schon zusammengestellt und enthält die Profibus-fähige CPU mit Profibus-Schnittstelle.
Noch ein Wort zur Adressvergabe für die Ein- und Ausgänge der Dezentrale Peripherie, also des Profi-Bus-Teilnehmers: HW Konfig vergibt die nächste freie Adresse an den eingebauten Bus-Teilnehmer. Das muss nicht immer sinnvoll sein, daher sollte man die Adressen lieber gezielt vergeben. Dabei wiederum ist darauf zu achten, dass sie möglichst im PAE/PAA liegen und keine Peripherie-Zugriffe (obwohl es ja Peripherie ist ...) nötig werden. Wenn die Adressen der Dezentralen Peripherie innerhalb von PAE und PAA sind, kümmert sich praktischerweise das Betriebssystem um den Zugriff.
Voraussetzung: Anlage ist schon zusammengestellt und enthält den Profibus CP.
Wenn man CPUs benutzt, die keine eingebaute DP-Schnittstelle haben, so können diese die Adressen der Eingangs- und Ausgangsbaugruppen nicht frei vergeben. Die Adressen folgen der "Steckplatzregel" und sind nicht änderbar.
Rack-Nummer.Steckplatz -> Adresse 0.4 -> 0 1.4 -> 32 2.4 -> 64 3.4 -> 96 0.5 -> 4 1.5 -> 36 2.5 -> 68 3.5 -> 100 0.6 -> 8 1.6 -> 40 2.6 -> 72 3.6 -> 104 0.7 -> 12 1.7 -> 44 2.7 -> 76 3.7 -> 108 0.8 -> 16 1.8 -> 48 2.8 -> 80 3.8 -> 112 0.9 -> 20 1.9 -> 52 2.9 -> 84 3.9 -> 116 0.10 -> 24 1.10 -> 56 2.10 -> 88 3.10 -> 120 0.11 -> 28 1.11 -> 60 2.11 -> 92 3.11 -> 124 - 127
Rack-Nummer.Steckplatz -> Adresse 0.4 -> 256 1.4 -> 384 2.4 -> 512 3.4 -> 640 0.5 -> 272 1.5 -> 400 2.5 -> 528 3.5 -> 656 0.6 -> 288 1.6 -> 416 2.6 -> 544 3.6 -> 672 0.7 -> 304 1.7 -> 432 2.7 -> 560 3.7 -> 698 0.8 -> 320 1.8 -> 448 2.8 -> 576 3.8 -> 714 0.9 -> 336 1.9 -> 464 2.9 -> 592 3.9 -> 730 0.10 -> 352 1.10 -> 480 2.10 -> 608 3.10 -> 746 0.11 -> 368 1.11 -> 496 2.11 -> 624 3.11 -> 752 - 767
Noch ein Wort zur Adressvergabe für die Ein- und Ausgänge der Dezentrale Peripherie, also des Profi-Bus-Teilnehmers: HW Konfig vergibt die nächste freie Adresse an den eingebauten Bus-Teilnehmer. Das muss nicht immer sinnvoll sein, daher sollte man die Adressen lieber gezielt vergeben. Dabei wiederum ist darauf zu achten, dass sie möglichst im PAE/PAA liegen und keine Peripherie-Zugriffe (obwohl es ja Peripherie ist ...) nötig werden. Wenn die Adressen der Dezentralen Peripherie innerhalb von PAE und PAA sind, kümmert sich praktischerweise das Betriebssystem um den Zugriff.
1. Der Bus ersetzt die klassischer Ein-/Ausgangskopplung oder
2. eine weitere CPU wird an Stelle einer ET 200 M als so genannte "Vorverarbeitende Peripherie" eingesetzt, die bestimmte Signale autonom verarbeitet.
Die Kopplung erfolgt tatsächlich nach der Idee der klassischen Ein-/Ausgangskopplung: Teile des PAA der einen Station werden in das PAE der anderen Station eingeblendet (und umgekehrt). Nur dass man eben keine Ein-/Ausgangsbaugruppen und die entsprechenden zahlreichen Drähte dazwischen ver(sch)wenden muss.
Für die Kopplung muss man sich natürlich Bereiche des PAEs bzw. PAAs auswählen, die nicht schon von "echten" Ein- oder Ausgängen verwendet werden.
privater IP-Bereich 10.0.0.0 - 10.255.255.255 (16.777.216 Adressen) | | | | | 0 - 255 | | | 0 - 255 | 0 - 255 Netzwerkmaske: Empfehlung: 255.255.255.0 ("eigentlich": 255.0.0.0) privater IP-Bereich 172.16.0.0 - 172.31.255.255 (1.048.576 Adressen) | | | | | 0 - 255 | | | 0 - 255 | 16 - 31 Netzwerkmaske: Empfehlung: 255.255.255.0 ("eigentlich": 255.255.0.0) privater IP-Bereich 192.168.0.0 - 192.168.255.255 (65.536 Adressen) | | | 0 - 255 | 0 - 255 Netzwerkmaske: 255.255.255.0
Dieser letzte Bereich der privaten IP-Adressen wrd für unsere Übungsanlagen genutzt.
Die Maske legt den Teil der Adresse fest, der unbeweglich (255) und im ganzen LAN gleich ist oder beweglich (0) und für jeden Computer im LAN unterschiedlich sein muss. Bei uns sind die ersten drei Stellen der IP-Adresse im LAN gleich:
192.168. 9.XXX daher Netzmaske: 255.255.255. 0 XXX = [1 .. 254] 0 = Netzwerkadresse 255 = Broadcast-Adresse
Windows: Start: Ausführen: command (oder cmd) <ok>
>ipconfig /all
Der Befehl "ping" verschickt mehrere IP-Pakete (in Windows normalerweise vier) an einen anderen Rechner und erwartet dessen Antwort (der Administrator des anderen Rechners kann diese Antwort auch verweigern, also abschalten).
Befehlssyntax:
>ping [IP-Adresse] <enter> >ping 192.168.9.14 <enter>
Mit "Pfeil-nach-oben" lässt sich der letzte Befehl wiederholen (und auch edieren), so dass man schnell mehrere Verbindungen testen kann.
Wenn man zu einem Server-Namen die Server-IP-Adresse herausbekommen will, benötigt man eine korrekte Internet-Konfiguration. Dann kann man in der Eingabeaufforderung nach der IP-Adresse "fragen":
>nslookup ptbtime2.ptb.de <enter>
Im HW Konfig den CP doppelklicken oder rechte Maustaste: Objekteigenschaften
--> Dialog "Eigenschaften - CP 343-1 IT - (R0/S5)"
Bevor man sich um die Konfiguration der Ethernet-Schnittstelle kümmert, sollten zwei Dinge getan werden: 1. Es ist sinnvoll dem CP einen projektweit eindeutigen Namen zu geben, denn dann behält man leichter die Übersicht innerhalb des Projektes. 2. Man muss auf die Registerkarte "PROFINET" schauen. Nebenbei: Wenn der CP mit einer modernen CPU zusammen eingebaut wird, dann fehlt im oben gezeigten Dialog der Rahmen "Rückwandanschluß" mit der MPI-Adresse.
Wenn ein Profinet-CP eingebaut wird (wie der 1EX30 nun mal ist), dann muss der CP einen netzweit eindeutigen Profinet-Namen haben! Auch dann, wenn Profinet nicht benutzt wird und auch kein Häkchen in die Felder "IO Controller" oder "IO Device ermöglichen" gemacht wird. Übrigens: Ist der CP nicht im Rack 0 eingebaut wird (also mit IM360/361 oder IM365 in ein Erweiterungsrack), kann er kein Profinet-Controller (sozusagen "Master") mehr sein! - Profinet-Device (sozusagen "Slave") ist aber noch möglich.
Nun zurück zur Registerkarte "Allgemein" und dann wählen:
Schnittstelle: Ethernet: Eigenschaften...
--> Dialog "Eigenschaften Ethernet Schnittstelle CP 343-1 (R0/S5)"
hier Konfigurieren:
- IP-Adresse
- Netzwerkmaske
- Router-IP-Adresse
Hinweis zur MAC-Adresse: Heutige CPs haben eine einzigartige MAC-Adresse auch ohne jedwede Konfiguration. Wenn man das ISO-Protokoll verwenden will, muss man zwar den Haken setzen, aber das "Erfinden" einer MAC-Adresse ist nicht angezeigt. Vielmehr sollte man die MAC-Adresse verwenden, die der CP sowieso hat. Eine MAC-Adresse muss zwar nur im LAN eindeutig sein, aber es lohnt sich nicht, den Service der weltweiten Eindeutigkeit zu verschmähen, weil man ja nie wissen kann, ob nicht irgendwann jemand ausgerechnet das Gerät mit derjenigen MAC-Adressen anschließen will, die man sich ungeschickterweise selbst ausgedacht hat ...
dann wählen:
Subnetz: Neu...
--> Dialog "Eigenschaften Industrial Ethernet"
Hinweis: "Subnetz" und "S7-Subnetz-ID" haben nichts mit IP-Subnetzen zu tun sondern sind Siemens-Protokolldaten der TCP/IP-Applikationsschicht. Die S7-Subnetz-ID wird normalerweise vom HW Konfig so erzeugt, dass sie innerhalb des Projektes einzigartig ist.
- OK - OK - OK (drei Dialoge wegdrücken) Station: Speichern und übersetzen
Durch das übersetzen werden im Bausteine-Ordner der entsprechenden CPU die Systemdaten mit den maschinenlesbar kodierten Konfigurationen erzeugt.
Erst wenn diese Systemdaten in die reale CPU übertragen worden sind, ist die Anlage wirklich konfiguriert. Die Übertragung der Systemdaten erfolgt grundsätzlich im HW Konfig mit "Zielsystem_ Laden in Baugruppe...". Dazu muss natürlich eine Datenleitung zwischen Programmiergerät (PG/PC) und Automatisierungsgerät (AG) vorhanden und die notwendige Schnittstelle konfiguriert sein!
Fertig!
Jetzt funktioniert auch die Netzwerkschnittstelle des CPs und kann ebenfalls zu Konfiguration und vor allem zur Programmierung benutzt werden. Zu beachten ist allerdings, dass im Simatic Manager "Extras: PG/PC-Schnittstelle" angepasst wird, um den neuen Zugriffsweg zu benutzen!
Bei älteren Ethernet-CPs konnte man nicht auf die Netzwerkschnittstelle zugreifen, wenn der CP nicht oder falsch konfiguriert wurde. Eine MAC-Adresse hatten die alten CPs nicht fest eingebaut, sie wurde lediglich als Aufkleber zum CP geliefert und musste erst mit HW Konfig eingespielt werden. Und dies gelang nur mit der MPI-Schnittstelle.
Das ist heute anders: Durch die Implementation von Profinet ermöglicht die Simatic-Software den Zugriff per Ethernet auch wenn die Schnittstelle noch nicht konfiguriert ist. Das Verfahren DCP (Discovery and basic Configuration Protocol, nicht zu verwechseln mit DHCP!) ist obligatorischer Bestandteil des Profinet-Protokolls. DCP ermöglicht das, was auch sich auch viele Heim-Administratoren wünschen würden, nämlich ein Gerät, auch ohne die Kenntnis der IP-Adresse im LAN finden und konfigurieren zu können (ohne den eigenen Rechner mehrfach umkonfigurieren zu müssen!).
Das ist möglich per
Simatic Manager --> Ethernet Teilnehmer bearbeiten
Der wichtigste Punkt hier ist
Ethernet Teilnehmer --> Durchsuchen
Damit lassen sich alle Profinet-Geräte ausfindig machen. D.h. man findet mit dieser Funktion nicht alle Geräte des Netzwerkes (meint: LAN, also nicht jenseits eines Routers), sondern nur Profinet-Geräte, weil nur die diese Funktion unterstützen. Alte CPs beipielsweise tun dies nicht!
Wenn man hier einen Teilnehmer ausgewählt hat, wird er in den großen Dialog "Ethernet Teilnehmer bearbeiten" übernommen. Hier lässt sich die Schnittstelle konfigurieren, so dass man über diese Schnittstelle dann auf den Teilnehmer zugreifen kann.
Mit "IP-Konfiguration zuweisen" werden die eingestellten Parameter an den CP übertragen und er hört dann auf die Ethernet-Schnittstelle per TCP/IP. Für Profinet ist ein eindeutiger Name im Netzwerk unbedingt nötig, daher kann dieser ebenfalls hier vergeben werden. Das ist aber nach der IP-Konfiguration auch per HW Konfig möglich.
Heutige CPs haben eine einzigartige MAC-Adresse auch ohne jedwede Konfiguration. Diese Adresse ist auf dem CP aufgedruckt und im Flash-ROM gespeichert. Man muss die MAC-Adresse also "eigentlich" nicht konfigurieren. Allerdings: Wenn man das ISO-Protokoll verwenden will, muss man einen Haken setzen, der das Eingeben einer MAC-Adresse ermöglicht. Dennoch ist das "Erfinden" einer MAC-Adresse nicht angezeigt! Vielmehr sollte man die MAC-Adresse verwenden, die der CP sowieso hat. Eine MAC-Adresse muss zwar nur im LAN eindeutig sein, aber es lohnt sich nicht, den Service der weltweiten Eindeutigkeit zu verschmähen, weil man ja nie wissen kann, ob nicht irgendwann jemand ausgerechnet das Gerät mit derjenigen MAC-Adressen anschließen will, die man sich ungeschickterweise selbst ausgedacht hat ...
Wenn man die kleinen Zahlen nicht vom Aufdruck abschreiben möchte, dann sollte man die MAC-Adresse aus dem oben gezeigten Dialog kopieren und in den Dialog bequem einfügen.
Hier ist es zwingend notwendig die IP-Adresse des NTP-Servers zu kennen. Im Beispiel verwenden wir
192.53.103.104 ==> ptbtime2.ptb.de
einen Zeitserver der PTB in Braunschweig, den man übrigens auch im Windows eintragen kann.
Wenn man zu einem Server-Namen die Server-IP-Adresse herausbekommen will, benötigt man eine korrekte Internet-Konfiguration. Dann kann man in der Eingabeaufforderung nach der IP-Adresse "fragen":
>nslookup ptbtime2.ptb.de <enter>
Hier wird Konfiguration eines Ethernet-CPs 343-1 IT (1GX00) beschrieben. Heute heißen diese CPs "Advanced IT". Dieser CP hat einen Web-Server eingebaut, das hat heute zwar praktisch jeder Ethernet-CP, war zu seiner Zeit aber dennoch etwas besonderes. Der IT-CP kann mit eigenen Web-Seiten und auch mit Java-Beans bestückt werden, die z.B. etwas über den automatisierten Prozess anzeigen. Das heißt, man kann den Erfolg der Konfiguration auch direkt mit einem Web-Browser testen: Einfach in der Adresszeile des Browsers
http://[IP-Adresse des CPs]/
eintippen und <enter> (oder <return>) drücken!
Wenn jetzt eine Web-Seite mit einer Meldung des CPs erscheint, dann war die Netzwerkkonfiguration erfolgreich.
Im HW Konfig den CP doppelklicken oder rechte Maustaste: Objekteigenschaften
--> Dialog "Eigenschaften - CP 343-1 IT - (R0/S7)"
Bevor man sich um die Konfiguration der Ethernet-Schnittstelle kümmert, sollte dem CP einen projektweit eindeutiger Namen zu geben, denn dann behält man leichter die Übersicht innerhalb des Projektes. Nebenbei: Wenn der CP mit einer modernen CPU zusammen eingebaut wird, dann fehlt im oben gezeigten Dialog der Rahmen "Rückwandanschluß" mit der MPI-Adresse.
Es geht weiter:
Schnittstelle: Ethernet: Eigenschaften...
--> Dialog "Eigenschaften Ethernet Schnittstelle CP 343-1 IT (R0/S7)"
hier Konfigurieren:
- MAC-Adresse (unbedingt vom Aufkleber auf der Baugruppe abschreiben und nicht selbst ausdenken, Trennzeichen ist der Bindestrich!)
- IP-Adresse
- Netzwerkmaske
- Router-IP-Adresse
Dann kann ein passendes Ethernet ausgewählt werden (wenn es im Projekt schon eines gibt) oder aber ein neues anlegen. Für diesen Fall wählen:
Subnetz: Neu...
--> Dialog "Eigenschaften Industrial Ethernet"
Hinweis: "Subnetz" und "S7-Subnetz-ID" haben nichts mit IP-Subnetzen zu tun sondern sind Siemens-Protokolldaten der TCP/IP-Applikationsschicht. Die S7-Subnetz-ID wird normalerweise vom HW Konfig so erzeugt, dass sie innerhalb des Projektes einzigartig ist.
- OK - OK - OK (drei Dialoge wegdrücken) Station: Speichern und übersetzen
Durch das übersetzen werden im Bausteine-Ordner der entsprechenden CPU die Systemdaten mit den maschinenlesbar kodierten Konfigurationen erzeugt.
Erst wenn diese Systemdaten in die reale CPU übertragen worden sind, ist die Anlage wirklich konfiguriert. Die Übertragung der Systemdaten erfolgt grundsätzlich im HW Konfig mit "Zielsystem_ Laden in Baugruppe...". Dazu muss natürlich eine Datenleitung zwischen Programmiergerät (PG/PC) und Automatisierungsgerät (AG) vorhanden und die notwendige Schnittstelle konfiguriert sein!
Fertig!
Jetzt funktioniert auch die Netzwerkschnittstelle des CPs und kann ebenfalls zu Konfiguration und vor allem zur Programmierung benutzt werden. Zu beachten ist allerdings, dass im Simatic Manager "Extras: PG/PC-Schnittstelle" angepasst wird, um den neuen Zugriffsweg zu benutzen!
Profinet (Process Field Network) wird als der Nachfolger vom Profibus (oder auch vom Interbus) gesehen. Dabei handelt es sich genau genommen aber um die spezielle Ausprägung Profinet IO. Diese basiert auf Ethernet (also auf MAC-Adressen) und erweitert das Ethernet um die Echtzeitfähigkeit.
Die andere Variante des Profinet ist das Profinet CBA (CBA = Component Based Automation), das der Kommunikation zwischen verschiedenen SPSen dient. Es basiert im Wesentlichen auf TCP/IP, kann aber wohl auch Echtzeitfähigkeit sicherstellen. Dieses Verfahren wird hier nicht behandelt! im Folgenden geht nur um Profinet IO.
Den Anfang macht eine kommentierte Gegenüberstellung von Profinet und Profibus.
Profinet IO | Profibus DP | |
---|---|---|
Hardware | Ethernet 100 Base TX (4-polige (!) Leitung) Zwar wird für 100 Base TX eigentlich eine Cat. 5-Leitung vorgeschrieben, die 8-adrig ist, aber für Profinet IO gibt es spezielle flache/ovale Leitungen mit nur 4 Adern, die sich in speziellen Industrial-Ethernet-Steckern mit Schneid-Klemm-Verbindung leicht installieren lassen. Außerdem werden in Industrieanlagen mit starker elektromagnetischer Störstrahlung häufig LWL-Strecken (meist POF = Polymere optische Faser) verwendet. Wie bei anderen Ethernet-Verbindungen auch, ist ebenso WLAN als Medium geeignet, wenn man für eine gute Funkverbindung (Anzahl von Accces Points, Qualität der Antennen) sorgt. |
RS-485 (2-polige Leitung) Mit Hilfe so genannter Optical Link Modules (OLMs) wird eine einfache Umsetzung auf LWL (POF) erreicht. |
Topologie | Stern/Baum und optional (mit Konfiguration) offene Ringe Wenn eine Ringtopologie aufgebaut wird, muss diese in konfigurierbaren Switches "angesagt" werden. Dann wird das Netzwerk einfach redundant gegen einen Schaden der Ringleitung. |
Bus/Linie (parallel geschaltet) |
Protokoll | Profinet IO | Profibus DP |
Adressen | MAC (48 Bit) (nicht IP!) und Profinet-Namen Hier stellt sich die meiste Verwirrung ein: Profinet IO braucht für seine Funktion keine IP-Adressen, weil es auf Mac-Adressen basiert, die im Automatisierungssystem auf Profinet-Namen abgebildet werden. Damit ist Profinet IO nicht routingfähig (was auch mit der Echtzeitfähigkeit kaum zu vereinbaren wäre) und funktioniert nur im LAN. Allerdings ist für nicht-zyklische Daten auch eine Kommunikation per UDP/IP möglich. |
Profibus-Adressen (0,1 - 126,127) |
Anzahl der Teilnehmer | Theoretisch sehr viele. Wenn man auch IP nutzen will, wäre 16,7 Mio. eine gute Mengenangabe. Tatsächlich hängt aber die Teilnehmeranzahl wesentlich vom PN-Controller ab! Übliche Controller beherrschen 128 oder 256 Teilnehmer. Es sind aber mehrere PN-Controller in einem Netz betreibbar. Die Frage ist aber, ob das empfehlenswert und realistisch notwendig ist. | 125 ist eine realistische Angabe. Im Multiple-Master-Betrieb wären auch mehr Teilnehmer pro Profibus-Netz denkbar. Das scheint aber keineswegs empfehlenswert. |
Die Aktualisierungszeit erhöht sich mit zunehmender Teilnehmeranzahl! | ||
Datenrate | 100 Mbit/s (max. 100 m Länge) | bis zu 12 Mbit/s (bei max. 100 m Länge) |
Leitungslänge | 100 m zwischen (beliebig vielen) Switches | bis zu 1200 m zwischen max. 3 Repeater (bei 9,6 kbit/s Datenrate) |
Geräte | PNIO-Controller ("Master") PNIO-Device ("Slave") |
DP-Master (Klasse 1) DP-Slave |
Aufgabe | Feldgeräte input/output Programmierung nicht über PNIO, sondern per IP, aber auf demselben Medium |
Feldgeräte input/output Programierung des AGs mit PG (ebenfalls Master, aber Klasse 2), multiple Master-Betrieb |
Diese Tabelle ist auf eine eigene Seite ausgelagert: ASI-Bus-Adressen und Adressen im Prozessabbild.
Was macht |