Bausteinliste abfragen

KT82

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich bräuchte mal kurz Nachhilfe in Sachen Bausteine einer SPS. Ich programmiere gerade mit Hilfe von LibNoDave ein Programm mit dem man einige Daten aus der SPS auslesen kann. Mit der Funktion daveListBlocksOfType gibt mir die SPS ja eine Liste mit ihren Bausteinen zurück. Jetzt wollte ich mal fragen, was mir die SPS da genau zurückliefert.
Ich bekomme folgendes Ergebnis (in Hex) von der SPS zurück wenn ich alle Datenbausteine wissen will (auf das Wesentliche gekürzt):

... 00 01 12 01 ...

Das ist das, was ich pro Datenbaustein zurück bekomme. Die ersten 2 Byte sagen ja aus, welche DB-Nummer das ist. In diesem Falle also DB1. Aber was sagen die anderen zwei Zahlen aus? Diese beiden Zahlen werden bei mir bei jedem Baustein angehängt, egal ob DB oder OB oder irgendein anderer Baustein.

Kann eventuell jemand von euch meine Wissenslücke füllen?
Vielen Dank schon mal im voraus.

KT82
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was das genau bedeutet habe ich auch noch nicht herausgefunden. Scheint aber nochmal sowas wie eine Angange des Blocktyps zu sein.

Folgende Antwort(typen) habe ich mir mal aufgeschrieben, konnte aber keinen systematischen Zusammenhang erkennen.
In der ersten Zeile immer der Typ mit dem Anfragecode, darunter dann die Antwort:
Code:
SFC    30 44
       42 01
SFB    30 46
       42 01
        
FB    30 45
      22 03
      22 04 (bei Know How Protect?)

FC    30 43
      22 03
      22 01 (bei Know How Protect?)

DB    30 41
      22 05
        
OB    30 38
      22 03
      22 01 (z.B. bei OB35)

SDB   30 42
      22 07
      22 11 (SDB 2)
      22 0d (SDB 210)
      22 12 (SDB 1002)
 
Zuletzt bearbeitet:
Jetzt fällts mir gerade wie Schuppen aus den Haaren:

Das zweite Byte ist die Sprache des Bausteins:

0x00, "Not defined"
0x01, "AWL"
0x02, "KOP"
0x03, "FUP"
0x04, "SCL"
0x05, "DB"
0x06, "GRAPH"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ist das bei den SDBs?

Das ist das was mir die Siemens Hilfe dazu sagt wenn ich die Systemdaten öffne:
Siemens Hilfe schrieb:
Bemerkung

Angezeigt wird eine Typ-Nummer, die intern von STEP 7 vergeben wird. Systemdatenbausteine, die inhaltlich zusammengehören, haben dieselbe Typ-Nummer.
Wenn der Inhalt eines Systemdatenbausteins nicht interpretierbar ist, wird hier die Bemerkung "unbekannter Typ" angezeigt.

Ich schätze sowas wie HW-Konfig, Netzkonfig, etc.
 
Super!
Ich hab mir grad die C-Sourcen der libnodave angesehen.

Dort ist nicht ein byte[] definiert, sondern ein struct
typedef struct {
unsigned short number;
uc type[2];
} daveBlockEntry;

Es war also wohl schon mal bekannt, daß es irgendwelche Typen sind.

Bei der Suche sind mir außerdem 2 weitere Funktionen ins Auge gefallen, die in den c-Sources vorhanden sind, aber nicht in der dot.net-DLL.

daveListBlocks()
daveGetBlockInfo()

Müsste man vielleicht auch mal ergänzen.
 
Da ich schon mal dabei bin, habe ich mir auch den struct daveBlockInfo näher angeschaut. Dabei konnte ich folgende Strukturen erkennen:

typedef struct {
uc type[2];
uc x1[2]; /* 00 4A */
uc type1; /* same type as return of getBlocksOfType */
uc c0;
char pp[2]; /* allways 'pp' */
uc c1; /* 01 */
uc c2; /* Bit 0: Linked/Unlinked */
/* Bit 5: Non-Retain */
uc x2[2]; /* 05 5A */
unsigned short number; /* the block's number */
uc x3[2]; /* ? */
unsigned short lengthEEPROM; /* size in the eeprom */
uc x4[2]; /* ? */
uc c3; /* ? */
uc c4; /* Bit 0 means write protect */
uc dateMod[6]; /* modification date */
uc dateIfc[6]; /* modification date of interface */
uc x5[2]; /* ? */
uc x6[4]; /* ? */
unsigned short length; /* the block's length */
uc author[8]; /* 8 ascii chars */
uc family[8]; /* 8 ascii chars */
uc name[8]; /* 8 ascii chars */
uc version; /* 4bit.4bit */
uc x7[11];
} daveBlockInfo;
 
Da hab ich wohl mit dem Kommentar zu sehr gespart.
Von dem Header waren vorher wesentlich weniger Member bekannt. Ich hab den ergänzt, soweit mir bekannt.
Zu dem Thema bin ich nur gekommen, weil vorher auch Informationen über die Blocks abgefragt wurden.
 
Sorry, mir war nicht bewusst, daß in den letzen Monaten soviel entdeckt wurde. Ich hab halt gesehen, daß der struct im libnodave unvollständig war und hab versucht ihn zu ergänzen.
Danke für die interessanten Links.
 
War keine Kritik. Nur die Infos dann auch z.B. Human (Thomas liest und schreibt hier ja mit) kundtun bzw. mit seinen Infos abgleichen.
 
Zurück
Oben