FAQ 10/2013 S7-Kommunikation mit PUT/GET S7-1500 CPUs http://support.automation.siemens.com/ww/view/de/82212115
Dieser Beitrag stammt aus dem Siemens Industry Online Support. Es gelten die dort genannten Nutzungsbedingungen (www.siemens.com/nutzungsbedingungen). Vorsicht Die in diesem Beitrag beschriebenen Funktionen und Lösungen beschränken sich überwiegend auf die Realisierung der Automatisierungsaufgabe. Bitte beachten Sie darüber hinaus, dass bei Vernetzung Ihrer Anlage mit anderen Anlagenteilen, dem Unternehmensnetz oder dem Internet entsprechende Schutzmaßnahmen im Rahmen von Industrial Security zu ergreifen sind. Weitere Informationen dazu finden Sie unter der Beitrags-ID 50203404. http://support.automation.siemens.com/ww/view/de/50203404 Inhaltsverzeichnis 1 Einleitung... 3 2 Projektierung der S7-Verbindung... 4 2.1 Projektierung der S7-Verbindung... 4 2.2 Eigenschaften der projektierten S7-Verbindung... 6 2.3 Zugriff über PUT/GET-Kommunikation durch entfernten Partner (PLC, HMI, OPC, ) erlauben... 8 2.4 Taktmerker konfigurieren... 9 3 Anwenderprogramm der aktiven S7-1500 CPU... 10 3.1 OB100... 10 3.2 OB1... 10 3.3 PUT_GET (FB1)... 11 3.3.1 Daten schreiben... 11 3.3.2 Daten lesen... 14 3.4 SEND_DATA (DB1)... 18 3.5 RCVD_DATA (DB2)... 18 4 Anwenderprogramm der passiven S7-1500 CPU... 20 4.1 SEND_DATA (DB2)... 20 4.2 RCVD_DATA (DB3)... 20 Beitrags-ID: 82212115, V1.0, 10/2013 2
1 Einleitung 1 Einleitung Für den Datenaustausch über die integrierte PROFINET- und Industrial Ethernet- Schnittstelle der S7-1500 CPU können Sie u. a. die S7-Kommunikation nutzen. Für die S7-Kommunikation stehen folgende Kommunikationsanweisungen zur Verfügung. PUT zum Senden von Daten GET zum Empfangen von Daten In STEP 7 V12 SP1 Upd2 (TIA Portal) finden Sie die o. g. Kommunikationsanweisungen in der Task Card Anweisungen in der Palette Kommunikation > S7-Kommunikation. Dieses Beispiel zeigt, wie Sie eine S7-Verbindung zwischen zwei S7-1500 CPUs projektieren, um mit den Kommunikationsanweisungen PUT und GET Daten zwischen den S7-1500 CPUs auszutauschen. Beitrags-ID: 82212115, V1.0, 10/2013 3
2 Projektierung der S7-Verbindung 2 Projektierung der S7-Verbindung 2.1 Projektierung der S7-Verbindung In der Netzsicht des Hardware- und Netzwerkeditor legen Sie die Verbindungspartner, zwei S7.1500 CPUs, an und vernetzen Sie diese. Gehen Sie folgendermaßen vor, um eine S7-Verbindung zwischen den zwei S7-1500 CPUs graphisch anzulegen: Tabelle 2-1 Nr. Beschreibung 1. In der Netzsicht klicken Sie auf die Schaltfläche Verbindungen. Damit ist der Verbindungsmodus aktiviert. 2. Wählen Sie den Verbindungstyp S7-Verbindung aus. Beitrags-ID: 82212115, V1.0, 10/2013 4
2 Projektierung der S7-Verbindung Nr. Beschreibung 3. Ziehen Sie den Mauscursor bei gedrückter Maustaste von der S7-1500 CPU, von der die S7-Verbindung ausgehen soll, auf die S7-1500 CPU, bei der die S7- Verbindung enden soll. Ergebnis 4. Lassen Sie auf dem Zielgerät die Maustaste los, um die S7-Verbindung zwischen den zwei S7-1500 CPUs zu erstellen. Eine spezifizierte Verbindung ist angelegt. Der Verbindungsweg ist hervorgehoben dargestellt. Die Verbindung ist in der Verbindungstabelle eingetragen. Abbildung 2-1 Beitrags-ID: 82212115, V1.0, 10/2013 5
2 Projektierung der S7-Verbindung 2.2 Eigenschaften der projektierten S7-Verbindung Das Register Eigenschaften im Inspektorfenster zeigt die Eigenschaften zu der projektierten S7-Verbindung. Dazu gehören: Allgemeine Verbindungsparameter Lokale ID Besondere Verbindungseigenschaften Adressdetails Allgemeine Verbindungsparameter In der Parametergruppe Allgemein unter den Eigenschaften der S7-Vebrindung werden allgemeine Verbindungsparameter angezeigt, die den lokalen Verbindungsendpunkt identifizieren. Sie haben hier die Möglichkeit, den Verbindungsweg zuzuordnen und die Verbindungspartner vollständig zu spezifizieren. Abbildung 2-2 Lokale ID Hier wird die lokale ID der Baugruppe angezeigt, von der aus die S7-Verbindung betrachtet wird (lokaler Partner). Sie können die lokale ID ändern. Das ist dann notwendig, wenn Sie bereits Kommunikations-Funktionsbausteine programmiert haben und Sie die dort angegebene Lokale ID für die S7-Verbindung verwenden wollen. Beitrags-ID: 82212115, V1.0, 10/2013 6
2 Projektierung der S7-Verbindung Abbildung 2-3 Besondere Verbindungseigenschaften Anzeige der Verbindungseigenschaften Einseitig Einseitig bedeutet, dass der Verbindungspartner Server für diese Verbindung ist und nicht aktiv senden oder empfangen kann. Aktiver Verbindungsaufbau In diesem Beispiel ist eine zweiseitige S7-Verbindung projektiert, d. h. Sie können einstellen, welcher Verbindungspartner den aktiven Part übernimmt. Betriebszustandsmeldungen senden In diesem Beispiel sendet der lokale Partner keine Betriebszustandsmeldungen an den Verbindungspartner. Abbildung 2-4 Adressdetails Anzeige der Adressdetails der S7-Verbindung. Bei einem unspezifizierten Partner können die Werte für Baugruppenträger und Steckplatz geändert werden. Alle anderen Werte werden aus der aktuellen Konfiguration ermittelt und sind nicht änderbar. Beitrags-ID: 82212115, V1.0, 10/2013 7
2 Projektierung der S7-Verbindung Abbildung 2-5 2.3 Zugriff über PUT/GET-Kommunikation durch entfernten Partner (PLC, HMI, OPC, ) erlauben Für beide S7-1500 CPUs, zwischen denen die S7-Verbindung projektiert ist, muss der Zugriff über PUT/GET-Kommunikation durch entfernten Partner (PLC, HMI, OPC, ) erlaubt werden. Selektieren Sie die CPU in der Gerätkonfiguration der ersten S7-1500 Station. Aktivieren Sie im Inspektorfenster unter Eigenschaften > Allgemein > Schutz die Option Zugriff über PUT/GET-Kommunikation durch entfernten Partner (PLC, HMI, OPC, ) erlauben. Abbildung 2-6 Selektieren Sie die CPU in der Gerätkonfiguration der zweiten S7-1500 Station. Aktivieren Sie im Inspektorfenster unter Eigenschaften > Allgemein > Schutz die Option Zugriff über PUT/GET-Kommunikation durch entfernten Partner (PLC, HMI, OPC, ) erlauben. Abbildung 2-7 Beitrags-ID: 82212115, V1.0, 10/2013 8
2 Projektierung der S7-Verbindung 2.4 Taktmerker konfigurieren In der aktiven S7-1500 CPU ist das Merkerbyte 0 als Taktmerker konfiguriert. Über diesen Taktmerker wird der Sende- und Empfangsauftrag angestoßen. Selektieren Sie die aktive CPU in der Gerätekonfiguration der S7-1500 Station. Aktivieren Sie im Inspektorfenster unter Eigenschaften > Allgemein > System- und Taktmerker die Option Verwendung des Taktmerkerbytes aktivieren. In diesem Beispiel ist für das Taktmerkerbyte die Adresse 0 eingetragen. Abbildung 2-8 Beitrags-ID: 82212115, V1.0, 10/2013 9
3 Anwenderprogramm der aktiven S7-1500 CPU 3 Anwenderprogramm der aktiven S7-1500 CPU Das Anwenderprogramm der aktiven S7-1500 CPU besteht aus folgenden Bausteinen: Tabelle 3-1 Baustein Symbolischer Name Beschreibung OB100 Startup Anlauf-OB Der OB100 wird beim Neustart (Warmstart) der CPU ausgeführt. OB1 Main Im OB1 wird der Baustein wird der Baustein PUT_GET (FB1) inklusive des dazugehörigen Instanz-Datenbausteins PUT_GET_DB (DB5) zyklisch aufgerufen. FB1 PUT_GET Im Baustein PUT_GET (FB1) werden die Kommunikationsanweisungen PUT und GET aufgerufen, um Daten über die projektierte S7-Verbindung zu übertragen. DB5 PUT_GET_DB Instanz-Datenbaustein des Bausteins PUT_GET (FB1) DB1 SEND_DATA Im Datenbaustein SEND_DATA (DB1) sind die Daten gespeichert, die mit der Anweisung PUT an den Kommunikationspartner gesendet werden (Sendedaten). DB2 RCVD_DATA Im Datenbaustein RCVD_DATA (DB2) werden die Daten gespeichert, die mit der Anweisung GET vom Kommunikationspartner empfangen werden (Empfangsdaten). 3.1 OB100 Beim Neustart (Warmstart) der CPU wird der M50.0 TRUE auf den Wert 1 gesetzt. Mit dem Merker M50.0 TRUE wird der Auftrag zum Senden sowie zum Empfangen von Daten freigegeben. Abbildung 3-1 3.2 OB1 Im OB1 wird der Baustein wird der Baustein PUT_GET (FB1) inklusive des dazugehörigen Instanz-Datenbausteins PUT_GET_DB (DB5) zyklisch aufgerufen. Beitrags-ID: 82212115, V1.0, 10/2013 10
3 Anwenderprogramm der aktiven S7-1500 CPU Abbildung 3-2 3.3 PUT_GET (FB1) 3.3.1 Daten schreiben Im Baustein PUT-GET (FB1) wird die Kommunikationsanweisung PUT aufgerufen. Diese finden Sie in der Task Card Anweisungen in der Palette Kommunikation > S7-Kommunikation. Mit der Anweisung PUT schreiben Sie Daten in die remote S7-1500 CPU. Hinweis Dies ist nur möglich, wenn für die Partner-CPU in den Eigenschaften der CPU unter Schutz die Funktion Zugriff über PUT/GET-Kommunikation durch entfernten Partner erlauben aktiviert wurde. Mit der Anweisung PUT können Sie nicht auf Bausteine zugreifen, die mit der Zugriffsart optimiert erstellt wurden. Abbildung 3-3 Eingangsparameter der Anweisung PUT Die Anweisung PUT hat folgende Eingangsparameter. Tabelle 3-2 Eingangsparameter Datentyp Beschreibung REQ BOOL Steuerparameter, aktiviert den Datenaustausch bei steigender Flanke ID WORD Adressierungsparameter zur Angabe der Verbindung zur Partner-CPU ADDR_1 REMOTE Zeiger auf denjenigen Bereich in der Partner- CPU, in den geschrieben werden soll. SD_1 VARIANT Zeiger auf denjenigen Bereich in der eigenen CPU, der die zu versendenden Daten enthält. Beitrags-ID: 82212115, V1.0, 10/2013 11
3 Anwenderprogramm der aktiven S7-1500 CPU Ausgangsparameter der Anweisung PUT Die Anweisung PUT hat folgende Ausgangsparameter. Tabelle 3-3 Ausgangsparameter Datentyp Beschreibung DONE BOOL Zustandsparameter DONE 0: Auftrag wurde noch nicht gestartet oder wird noch ausgeführt 1: Auftrag wurde fehlerfrei ausgeführt ERROR BOOL Zustandsparameter ERROR und STATUS, STATUS WORD Fehleranzeige ERROR = 0 STATUS hat den Wert: 0000H: weder Warnung noch Fehler <> 0000H: Warnung, STATUS liefert detaillierte Auskunft ERROR = 1 Es liegt ein Fehler vor, STATUS liefert detaillierte Auskunft über die Art des Fehlers Auftrag zum Schreiben der Daten aktivieren Der Auftrag zum Schreiben der Daten wird über eine positive Flanke am Eingang REQ der Anweisung PUT aktiviert. Die Aktivierung des Schreibauftrags wird mit dem Taktmerker M0.7 und der Variable PUT_BUSY gesteuert. Wenn der Schreibauftrag läuft ist PUT_BUSY auf den Wert 1 gesetzt. Somit ist kein Anstoß eines neuen Schreibauftrags möglich. Abbildung 3-4 Erst wenn der aktuelle Schreibauftrag erfolgreich oder mit Fehler abgeschlossen ist, wird PUT_BUSY auf den Wert 0 zurückgesetzt, so dass ein neuer Schreibauftrag aktiviert werden kann. Abbildung 3-5 Beitrags-ID: 82212115, V1.0, 10/2013 12
3 Anwenderprogramm der aktiven S7-1500 CPU Verbindungsparametrierung Abbildung 3-6 Die Verbindungsparametrierung für die Anweisung PUT erfolgt im Inspektorfenster des Programmeditors. Dazu selektieren Sie die im Baustein PUT_GET (FB1) aufgerufene Anweisung PUT. Öffnen Sie das Register Konfiguration im Inspektorfenster. In der Bereichsnavigation des Registers Konfiguration finden Sie die Gruppe Verbindungsparameter. Diese Gruppe enthält die Verbindungsparametrierung. Definieren Sie die Verbindungsendpunkte der S7-Vebrindung, über welche die Daten gesendet und empfangen werden. In diesem Beispiel wählen Sie als Partner die S7-1500 CPU aus, die passiv am Aufbau der projektierten S7-Vebrindung beteiligt ist. Schnittstellentyp, Schnittstellenname und Adresse der Kommunikationspartner werden nach Definition des Verbindungsendpunktes automatisch eingetragen. Wählen Sie den Verbindungsnamen der S7-Verbindung aus, über welche die Daten übertragen werden sollen. Die ID der ausgewählten S7-Verbindung wird automatisch am Eingangsparameter ID der Anweisung PUT eingetragen. Empfangsdatenbereich in der Partner-CPU Am Eingangsparameter ADDR_1 der Anweisung PUT geben Sie an, in welchen Speicherbereich der Partner-CPU die Daten geschrieben werden sollen. Es ist nur absolute Adressierung zulässig. In diesem Bespiel werden 10 Byte Daten ab Adresse 0 im DB3 der Partner-CPU gespeichert: P#DB1.DBX0.0 BYTE 10 Sendedatenbereich in der lokalen CPU Am Eingangsdatenbereich SD_1 der Anweisung PUT geben Sie den Speicherbereich der lokalen CPU an, aus dem die Daten gelesen werden sollen. In diesem Beispiel werden 10 Byte Daten ab Adresse 0 des DB3 der lokalen CPU gesendet. P#DB3.DBX0.0 BYTE 10 Beitrags-ID: 82212115, V1.0, 10/2013 13
3 Anwenderprogramm der aktiven S7-1500 CPU Fehlerauswertung Tritt während der Bearbeitung der Anweisung PUT ein Fehler auf, wird der STATUS der Anweisung PUT in der statischen Variable SAVE_STATUS_PUT gespeichert. Abbildung 3-7 Wird die Anweisung PUT erfolgreich ausgeführt und abgeschlossen wird die Variable SAVE_STATUS_PUT auf den Wert 33 (dez) = 21 (hex) gesetzt. Abbildung 3-8 3.3.2 Daten lesen Hinweis Im Baustein PUT-GET (FB1) wird die Kommunikationsanweisung GET aufgerufen. Diese finden Sie in der Task Card Anweisungen in der Palette Kommunikation > S7-Kommunikation. Mit der Anweisung GET lesen Sie Daten aus der remoten S7-1500 CPU. Dies ist nur möglich, wenn für die Partner-CPU in den Eigenschaften der CPU unter Schutz die Funktion Zugriff über PUT/GET-Kommunikation durch entfernten Partner erlauben aktiviert wurde. Mit der Anweisung GET können Sie nicht auf Bausteine zugreifen, die mit der Zugriffsart optimiert erstellt wurden. Abbildung 3-9 Beitrags-ID: 82212115, V1.0, 10/2013 14
3 Anwenderprogramm der aktiven S7-1500 CPU Eingangsparameter der Anweisung GET Die Anweisung GET hat folgende Eingangsparameter. Tabelle 3-4 Eingangsparameter Datentyp Beschreibung REQ BOOL Steuerparameter, aktiviert den Datenaustausch bei steigender Flanke ID WORD Adressierungsparameter zur Angabe der Verbindung zur Partner-CPU ADDR_1 REMOTE Zeiger auf denjenigen Bereich in der Partner- CPU, der gelesen werden soll. RD_1 VARIANT Zeiger auf denjenigen Bereich in der eigenen CPU, in den die gelesenen Daten abgelegt werden. Ausgangsparameter der Anweisung GET Die Anweisung GET hat folgende Ausgangsparameter. Tabelle 3-5 Ausgangsparameter Datentyp Beschreibung NDR BOOL Zustandsparameter NDR 0: Auftrag wurde noch nicht gestartet oder wird noch ausgeführt 1: Auftrag wurde fehlerfrei ausgeführt ERROR BOOL Zustandsparameter ERROR und STATUS, STATUS WORD Fehleranzeige ERROR = 0 STATUS hat den Wert: 0000H: weder Warnung noch Fehler <> 0000H: Warnung, STATUS liefert detaillierte Auskunft ERROR = 1 Es liegt ein Fehler vor, STATUS liefert detaillierte Auskunft über die Art des Fehlers Auftrag zum Lesen der Daten aktivieren Der Auftrag zum Lesen der Daten wird über eine positive Flanke am Eingang REQ der Anweisung GET aktiviert. Die Aktivierung des Leseauftrags wird mit dem Taktmerker M0.7 und der Variable GET_BUSY gesteuert. Wenn der Leseauftrag läuft ist GET_BUSY auf den Wert 1 gesetzt. Somit ist kein Anstoß eines neuen Leseauftrags möglich. Beitrags-ID: 82212115, V1.0, 10/2013 15
3 Anwenderprogramm der aktiven S7-1500 CPU Abbildung 3-10 Erst wenn der aktuelle Leseauftrag erfolgreich oder mit Fehler abgeschlossen ist, wird GET_BUSY auf den Wert 0 zurückgesetzt, so dass ein neuer Leseauftrag aktiviert werden kann. Abbildung 3-11 Verbindungsparametrierung Die Verbindungsparametrierung für die Anweisung GET erfolgt im Inspektorfenster des Programmeditors. Dazu selektieren Sie die im Baustein PUT_GET (FB1) aufgerufene Anweisung GET. Öffnen Sie das Register Konfiguration im Inspektorfenster. In der Bereichsnavigation des Registers Konfiguration finden Sie die Gruppe Verbindungsparameter. Diese Gruppe enthält die Verbindungsparametrierung. Definieren Sie die Verbindungsendpunkte der S7-Vebrindung, über welche die Daten gesendet und empfangen werden. In diesem Beispiel wählen Sie als Partner die S7-1500 CPU aus, die passiv am Aufbau der projektierten S7-Vebrindung beteiligt ist. Schnittstellentyp, Schnittstellenname und Adresse der Kommunikationspartner werden nach Definition des Verbindungsendpunktes automatisch eingetragen. Wählen Sie den Verbindungsnamen der S7-Verbindung aus, über welche die Daten übertragen werden sollen. Die ID der ausgewählten S7-Verbindung wird automatisch am Eingangsparameter ID der Anweisung GET eingetragen. Beitrags-ID: 82212115, V1.0, 10/2013 16
3 Anwenderprogramm der aktiven S7-1500 CPU Abbildung 3-12 Sendedatenbereich in der Parter-CPU Am Eingangsparameter ADDR_1 der Anweisung GET geben Sie den Speicherbereich der Partner-CPU an, aus dem die Daten gelesen werden sollen. Es ist nur absolute Adressierung zulässig. In diesem Bespiel werden 10 Byte Daten ab Adresse 0 aus dem DB2 der Partner-CPU gesendet. P#DB2.DBX0.0 BYTE 10 Empfangsdatenbereich in der lokalen CPU Am Eingangsdatenbereich RD_1 der Anweisung GET geben Sie an, in welchen Speicherbereich der lokalen CPU die Daten geschrieben werden sollen. In diesem Beispiel werden 10 Byte Daten ab Adresse 0 im DB2 der lokalen CPU gespeichert. P#DB2.DBX0.0 BYTE 10 Fehlerauswertung Tritt während der Bearbeitung der Anweisung GET ein Fehler auf, wird der STATUS der Anweisung GET in der statischen Variable SAVE_STATUS_GET gespeichert. Abbildung 3-13 Beitrags-ID: 82212115, V1.0, 10/2013 17
3 Anwenderprogramm der aktiven S7-1500 CPU Wird die Anweisung GET erfolgreich ausgeführt und abgeschlossen, wird die Variable SAVE_STATUS_GET auf den Wert 33 (dez) = 21 (hex) gesetzt. Abbildung 3-14 3.4 SEND_DATA (DB1) Im Datenbaustein SEND_DATA (DB1) der lokalen CPU sind die Daten gespeichert, die zur Partner-CPU übertragen werden. In den Eigenschaften des Datenbausteins SEND_DATA (DB1) deaktivieren Sie unter Attribute die Funktion Optimierter Bausteinzugriff. Abbildung 3-15 3.5 RCVD_DATA (DB2) Im Datenbaustein RCVD_DATA (DB2) der lokalen CPU werden die Daten abgelegt, die von der Partner-CPU empfangen werden. In den Eigenschaften des Datenbausteins RCVD_DATA (DB2) deaktivieren Sie unter Attribute die Funktion Optimierter Bausteinzugriff. Beitrags-ID: 82212115, V1.0, 10/2013 18
3 Anwenderprogramm der aktiven S7-1500 CPU Abbildung 3-16 Beitrags-ID: 82212115, V1.0, 10/2013 19
4 Anwenderprogramm der passiven S7-1500 CPU 4 Anwenderprogramm der passiven S7-1500 CPU Im Anwenderprogramm der passiven S7-1500 CPU werden keine Kommunikationsanweisungen für die Datenübertragung aufgerufen. Es werden nur Datenbausteine benötigt, in denen die Sende- und Empfangsdaten gespeichert werden. 4.1 SEND_DATA (DB2) Im Datenbaustein SEND_DATA (DB2) sind die Daten gespeichert, die von der aktiven S7-1500 CPU aus der passiven S7-1500 CPU gelesen werden. In den Eigenschaften des Datenbausteins SEND_DATA (DB2) deaktivieren Sie unter Attribute die Funktion Optimierter Bausteinzugriff. Abbildung 4-1 4.2 RCVD_DATA (DB3) Im Datenbaustein RCVD_DATA (DB3) werden die Daten abgelegt, die von aktiven S7-1500 CPU in die passive S7-1500 CPU geschrieben werden. In den Eigenschaften des Datenbausteins RCVD_DATA (DB2) deaktivieren Sie unter Attribute die Funktion Optimierter Bausteinzugriff. Beitrags-ID: 82212115, V1.0, 10/2013 20
4 Anwenderprogramm der passiven S7-1500 CPU Abbildung 4-2 Beitrags-ID: 82212115, V1.0, 10/2013 21