Länge/Größe eines Bausteins auslesen?

Oele

Level-1
Beiträge
21
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin alle zusammen,

was ich fragen wollte:

Ist es möglich die Länge / Größe eines Bausteins im Programm selbst zu ermitteln? Gibt es dafür eine Systemfunktion oder kann man das irgendwie selbst programmieren? Hab so grad nicht wirklich eine Idee und im Netz hab ich so auch nix gefunden.

Im voraus schonmal Danke für eure Antworten.

Gruß Oele
 
Innerhalb der CPU kann man nur die Größe eines DBs bestimmen. OBs / FBs / FCs sind nicht ermittelbar. Für die DBs gibts den SFC24 "TEST_DB"
Aus der Simatic Manager 5.4 Hilfe:
Beschreibung

Mit der SFC 24 "TEST_DB" (test data block) erhalten Sie Informationen über einen im Arbeitsspeicher der CPU liegenden Datenbaustein. Die SFC ermittelt für den ausgewählten DB die Anzahl der Datenbytes und überprüft, ob der DB schreibgeschützt ist.


Parameter Deklaration Datentyp Speicherbereich Beschreibung
DB_NUMBER INPUT WORD E, A, M, D, L, Konst. Nummer des zu überprüfenden DB
RET_VAL OUTPUT INT E, A, M, D, L Fehlerinformation
DB_LENGTH OUTPUT WORD E, A, M, D, L Anzahl der Datenbytes, die der ausgewählte DB enthält.
WRITE_PROT OUTPUT BOOL E, A, M, D, L Information über die Schreibschutzkennung des ausgewählten DB (1 bedeutet schreibgeschützt).


Fehlerinformationen

Fehlercode
(W#16#...) Erläuterung
0000 Es ist kein Fehler aufgetreten.
80A1 Fehler beim Eingangsparameter DB_NUMBER: Der gewählte Aktualparameter· hat den Wert 0· ist größer als die für die eingesetzte CPU maximal mögliche DB-Nummer.
80B1 Der DB mit der angegebenen Nummer ist auf der CPU nicht vorhanden.
80B2 Der DB wurde mit dem Schlüsselwort UNLINKED erzeugt.
8xyy allgemeine Fehlerinformation, siehe Fehlerauswertung mit dem Ausgangsparameter RET_VAL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ Rainer Hönle

Mir ging es darum, wenn man im SIMATIC Manager sich seine Bausteine anschaut, sieht man ja die "Größe im Arbeitsspeicher" des jeweiligen Bausteins (OB, FC, FB, DB). Die Spalte zwischen Erstellsprache und Typ.

Kann man diese Größe auch im Baustein selbst im Programm einlesen?
 
In der S7 mit einem STEP7-Programm: bei DBs siehe Beitrag von hovonlo, ansonsten nein, siehe Beitrag von hovonlo.
Von einem Programm, das vom PC aus z.B. mittels libnodave auf die S7 zugreift, ist dies möglich.
 
wenn man im SIMATIC Manager sich seine Bausteine anschaut, sieht man ja die "Größe im Arbeitsspeicher" des jeweiligen Bausteins (OB, FC, FB, DB). Die Spalte zwischen Erstellsprache und Typ.

Kann man diese Größe auch im Baustein selbst im Programm einlesen?
Wozu braucht das Programm diese Information?

Man kann die Gesamtgröße des Programms im Arbeitsspeicher im S7-Programm ermitteln.
siehe:
Referenzhandbuch System- und Standardfunktionen für S7-300/400
SZL-ID W#16#xy13 - Anwenderspeicherbereiche

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Erst einmal vielen Dank für eure Antworten!

@ PN/DP

und zwar hatte ich mir mal überlegt, ob es möglich wäre eine Bausteinveränderung einzulesen.
Hatte mir das so gedacht, wenn z.B. das Programm erweitert wird, dann müsste auch die Größe im Arbeitsspeicher mit anwachsen. Dann mit vorher vergleichen -> Info, ob Baustein verändert oder nicht.

Ist das so möglich? Oder gibt es vielleicht auch andere Möglichkeiten?
 
Länge von Datenbausteine

Innerhalb der CPU kann man nur die Größe eines DBs bestimmen. OBs / FBs / FCs sind nicht ermittelbar. Für die DBs gibts den SFC24 "TEST_DB"

Für DBs geht das ja wohl ein bisschen einfacher. Wenn man vorher die Bausteine aufmacht:

Code:
L    DBLG        // Laenge des Globaldatenbausteines
 
L    DILG        // Laenge des Instanzdatenbausteines

Der SFC24 ist eigentlich nur dann nützlich, wenn man nicht weiss ob der Datenbaustein überhaupt in der Steuerung existiert, oder wenn man den betreffenden Datenbaustein nicht vorher aufmachen möchte oder kann.

Gruss,
Jan
 
wenn z.B. das Programm erweitert wird, dann müsste auch die Größe im Arbeitsspeicher mit anwachsen. Dann mit vorher vergleichen -> Info, ob Baustein verändert oder nicht.
Wenn Programmcode verändert wird, dann muß sich nicht unbedingt die Größe des Programms ändern. Vielleicht sind
ja nur Operanden geändert oder Operationen negiert oder Hinzufügungen und Streichungen heben sich gegenseitig auf.

Besser: die SZL-ID W#16#0232 Index W#16#0004 liefert eine Prüfsumme des kompletten Programms.
(siehe Referenzhandbuch System- und Standardfunktionen für S7-300/400)
Damit hat man eine gesicherte Information, ob irgendwas am Programm geändert wurde.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
und zwar hatte ich mir mal überlegt, ob es möglich wäre eine Bausteinveränderung einzulesen.
Hatte mir das so gedacht, wenn z.B. das Programm erweitert wird, dann müsste auch die Größe im Arbeitsspeicher mit anwachsen. Dann mit vorher vergleichen -> Info, ob Baustein verändert oder nicht.

Ist das so möglich? Oder gibt es vielleicht auch andere Möglichkeiten?

Es gibt keine Spionagemöglichkeit für das PLC Programm.
Wann wird das denn endlich verstanden?
Es macht auch keinen Sinn sich hier unter neuen Nicks anzumelden, die Antwort wird immer wieder die selbe sein.

An manchen Tagen habe ich das Gefühl, einige fühlen sich manisch verfolgt.


bike
 
Mmmmh, na jaaaa...

Also noch haben wir diese noch? nicht gefunden.
Wir haben auf der PCU eine Programm laufen, das aus der PLC und der NC Daten sammelt.
Dadurch können Veränderungen erkannt und protokolliert werden.
Doch was ist wenn die Datei mit einer vorherigen Version überschrieben wird oder ein Image wieder aufgespielt wird?

Mir ist eigentlich nicht klar, warum immer wieder nach Funktionen gefragt wird, wie der Kunde überwacht werden kann :confused:


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ PN/DP

vielen Dank für deine Antwort. Genau sowas wie die Prüfsumme habe ich gesucht. :D

@ bike

Also deine Unterstellungen kann ich jetzt nicht nachvollziehen. Ich beschäftige mich noch nicht sehr lange mit der SPS-Programmierung und bin erst vor kurzem auf dieses tolle Forum gestoßen. Von dahher werde ich es wohl kaum nötig haben mir jede Woche nen neuen Nick auszudenken...
Und manisch verfolgt fühle ich mich auch nicht, keine Bange ;)
 
@ PN/DP

vielen Dank für deine Antwort. Genau sowas wie die Prüfsumme habe ich gesucht. :D

@ bike

Also deine Unterstellungen kann ich jetzt nicht nachvollziehen. Ich beschäftige mich noch nicht sehr lange mit der SPS-Programmierung und bin erst vor kurzem auf dieses tolle Forum gestoßen. Von dahher werde ich es wohl kaum nötig haben mir jede Woche nen neuen Nick auszudenken...
Und manisch verfolgt fühle ich mich auch nicht, keine Bange ;)

Wenn ich dir unrecht tue, dann ist dies nicht gewollt und tut mir leid.
Doch dieses Thema kommt hier so oft vor, dass es langsam an die Nerven geht.
Egal mit welcher Entwicklungsumgebung du entwickelst, wenn jemand den Code Debuggen bzw decompilieren will, dann tut er es.
Die Algorithmen kann auch an einem lauffähigen Programm erfasst werden und das Programmieren ist dann nur ein Klacks.

Daher verstehe ich die Anstrengung ein Programm bzw dessen Änderungen zu überwachen nicht.
Wenn ich Kunde wäre und bescheissen will, dann tue ich es. Und sei versichert, der Lieferant kommt nicht darauf.

Mir ist noch? nicht klar was das soll.


bike
 
Zurück
Oben