TIA Speicherbelegung S7-1500 und weiteres zu S7-1500

erdmann

Level-2
Beiträge
127
Reaktionspunkte
28
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

als nicht ganz ungeübter S7 (Classic) Benutzer habe ich aktuell folgende Fragen:

a) wie kann ich per Anwenderprogramm die Speicherbelegung der CPU auslesen?
- bei S7-300 war das über SZL zwar nicht einfach, aber funktional.
b) wie kann ich per Anwenderprogramm den Status des(der) Ethernet-Ports abfragen?
- bitte keine Verweise auf "LED" Baustein mit LED = 5; funktioniert nicht.
c) gibt es irgendwo Dokumention, mit welchen Parametern RDREC aufzurufen ist?
- Die integrierte Hilfe in TIA ist da leider etwas dürftig.
d) hat schon mal jemand mit "Parameterübergabe über Register" gearbeitet?
- Wenn ja, mit welchen Erfahrungen?

mfg

R.Erdmann
 
zu b:

Deine Ports haben Hardwareadressen, in die der Status eingeschrieben wird. Das findest du in deiner Hardwarekonfig und in dem Hilfekontext kannst du auch in Erfahrung bringen, was der jeweilige Status für eine Bedeutung hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Achso, wozu benötigt man denn sowas, vor allem mit fester Bausteinnummer?
Die einzig sinnvolle Verwendung die mir einfallen würde ist, einem Baustein eine variable FC-Nummer zu übergeben in dem dann eine Signalvorverarbeitung o.Ä. vorgenommen wird.

Auch wenn es jetzt funktioniert, mir wäre das zu heiß wenn so eine Konstruktion es mit irgendeinem Firmwareupdate nicht mehr funktioniert.
 
Sorry Thomas_v2.1,

das sind ganz offiziell dokumentierte Funktionen (waren es bei S7-300/400 und sind es auch bei S7-1500), siehe dazu auch entsprechende Kapitel
in der TIA- Hilfe.
Die feste Bausteinnummer habe ich nur hier im Beispiel verwendet, das geht natürlich auch symbolisch.
Eine für mich sinnvolle Verwendung liegt z.B. in Bausteinen mit polymorpher Schnittstelle und einer variablen
Anzahl an Parametern.

Meine Frage ging eigentlich in die Richtung, ob damit schonmal jemand Erfahrungen gemacht hat (mit S7-1500)
und weniger, ob das jemand für sinnvoll hält oder nicht.
Der Hintergrund dabei ist, dass sich die S7-1500 hierbei nicht so verhält wie dokumentiert.

mfg Erdmann
 
c) gibt es irgendwo Dokumention, mit welchen Parametern RDREC aufzurufen ist?
- Die integrierte Hilfe in TIA ist da leider etwas dürftig.
Zu RDREC habe ich auch schon gesucht. Zu bestimmten Daten findest du nämlich bei Siemens überhaupt keine Informationen, sondern in der Profinet Beschreibung zu diesen Datensätzen, welche die gleichen Indexnummern verwenden.

Bei der S7-1200 kannst du beispielsweise mit der ID des Ports den Record Index 0xf841 abfragen. Diesen Index fragt Step7 z.B. auch ab, wenn du von einer Baugruppe den Portstatus über die Onlinediagnose aufrufst.
Nachteil ist eben, dass du die Beschreibungen dazu nur im Profinet/Profibus Standard findest. Ich schaue dazu in die Wireshark Quellen der PN-Dissectors, das geht schneller.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas_v2.1,

da kommt (ID=65 Port1) die gleiche Antwort, als wenn man für die darüberliegende Schnittstelle (ID=64 IE Interface) RDREC mit Index 0x8080 abfragt.
Nämlich eine Struktur aus Kopf, Profinet-Name der Station, IP-Adresse, Subnetzmaske und Standard-Gateway.
Da gibt ja ein von aussen ausgeführter SNMPWALK noch mehr Informationen preis...

mfg Erdmann
 
Mit 0xf841 bekommst du Chassis-Namen, Mac-Adresse, IP, Subnetz, Gaetway. Und die Port- und Peernamen der nächsten Stationen an dem Port. Außerdem Portstatus und Medientyp.
Das gleiche wie wenn du mit Step7 oder TIA Portal den Baugruppenstatus online abfragst, das verwendet nämlich die gleiche ID.
Das ist leider nicht so ganz einfach über eine UDT o.Ä. auszuwerten, weil die Längen der Namen unterschiedlich sein können, und auch noch diverse Paddingbytes eingefügt werden damit bestimmte Sätze auf einer durch 4 teilbaren Adresse beginnen.

Ich habe mir die Recorddatensätze dort nicht ausgedacht, man muss auch probieren welche der IDs überhaupt funktionieren. Das hat Siemens leider nicht beschrieben. Die RDREC Funktion gibt dann nichtmal immer einen Fehler zurück, sondern sagt "Valid" aber mit Länge Null. Bei den Fehlermeldungen der Statusausgänge wird in der Dokumentation auch bei manchen Werten ganz verschleiert darauf verwiesen, dass diese woanders erläutert seinen. Wo dieses "woanders" ist schreiben sie aber nicht, dabei steht das in den Profinet/Profibus Dokumentationen, die eben nicht frei verfügbar sind. Prima Idee ist das.

Wenn du SNMP besser findest, dann mach es doch darüber.
 
Hallo,

eigentlich wollte ich nur rauskriegen, ob meine CPU eine Netzwerkverbindung hat.
Dazu hätte mir der Status der LED LINK völlig ausgereicht.
Ich werde jetzt wohl kaum auf meiner CPU eine SNMP- Anfrage an meine eigene CPU implementieren,
nur um den Status einer einzelnen Lampe (Leuchtidiote) zu erfassen.
Siehe dazu auch:
- Eingangsfrage

mfg Erdmann
 
Zuviel Werbung?
-> Hier kostenlos registrieren
eigentlich wollte ich nur rauskriegen, ob meine CPU eine Netzwerkverbindung hat.
Wie ich in meiner vorigen Antwort geschrieben habe, ist der Portstatus dabei.
Du musst allerdings die Daten davor durchgehen, da zwischen dem letzten uint32 für den Medientyp und dem uint16 für den Portstatus noch 1-3 Paddingbytes eingefügt werden können, je nach dem was vorher für Strings stehen.

Und bevor jetzt wieder gemeckert wird: Das ist EINE von womöglich mehreren Lösungen, und ICH habe mit dieser Lösung kein Problem.
 
Wenn du RDREC mit 0x802a aufrufst dann fällt die Antwort etwas kürzer aus, weil dann nur ein Datensatz mit PDPortDataReal vorhanden sind.

Zusammengefasst:
Mit Index 0x802a bekommst du den Datensatz PDPortDataReal.
Mit Index 0x8080 bekommst du den Datensatz PDInterfaceDataReal.
Mit Index 0xf841 bekommst du PDInterfaceDataReal und PDPortDataReal.

In PDPortDataReal steckt der Portstatus (up/down). Eine UDT drüberstülpen klappt aber auch hier nicht, du musst von Anfang an den Datensatz durchgehen.
 
Zurück
Oben