@Thomas_v2.1,
hallo Thomas, ich setze dein Plugin seit einiger Zeit ein und es hat mir immer gute Dienste geleistet.
Danke schön für dieses hervorragende Tool.
Verbesserungswunscht, bezüglich nicht erkanntem "AnyPointer":
Es gibt zum datensatz Les4en/Schreiben "erweiterte AnyPojnter" evtl ist dir das bisher nicht bekannt.
Eben wollte ich was untersuchen, dabei kam diese "Schwäche" wieder mal zum Vorschein.
Daher sende ich dir Info, womit du das Implementieren kannst:
Ich versuch ert mal mit einem kommentierten HexDump:
Datensatz schreiben, z.B. an eine Profibus Teilnehmer
PG --> CPU 32 01 00 00 04 00 00 0e 00 08
05 01 Write, 1 Tag
12 0a
10 03 00 04 00 ff 01 00 07 fb
## ##### ##### ## #####--------- Logische Adresse
| | | +------------------ Kennung für Datensatz
| | +----------------------- Datensatz Nummer
| +--------------------------- Anzahl Elemente
+--------------------------------- Element Typ Char (so liest der simatic Manager)
ff 09 00 04 Datenkennung ... ganz normal
08 00 fd e8 Nutzdaten
CPU --> PG 32 03 00 00 04 00 00 02 00 01 00 00 Antwort
#####--- Retval OK
05 01 ff Alles OK.
Datensatz lesen
PG --> CPU 32 01 00 00 05 00 00 0e 00 00
04 01 Lesen, 1 Tag
12 0a
10 03 00 44 00 ff 01 00 07 fb
## ##### ##### ## #####--------- Logische Adresse
| | | +------------------ Kennung für Datensatz
| | +----------------------- Datensatz Nummer
| +--------------------------- Anzahl Elemente
+--------------------------------- Element Typ Char (so liest der simatic Manager)
CPU --> PG 32 03 00 00 05 00 00 02 00 48 00 00
04 01 Lesen, 1 Tag
ff 04 02 20 Nutzdaten Zählung in Bit
08 00 fd e8 00 00 ... Nutzdaten ...
Das kann jede normale S7-CPU, sowohl für lokal 300er Module,
oder für Profibus, bzw. Profinet Module, bzw. deren datensätze.
Der "AnyPointer" siehr wie folgt aus:
10 03 nn nn dd dd 01 00 aa aa
10 ist die normale Kennung
03 ist der Elementtyp, evtl. gehen auch andere, aber 03 ist üblich.
nn nn ist die Anzahl der Elemente, überlicherweise char, d.h. Bytes
dd dd Datensatz Nummer
01 ist die Kennung für Datensatz bei disem "speziellen AnyPointer"
aa aa ist die logische Adresse für Eingänge), bei Ausgängen wird 0x8000
aufadddiert, oder umgekehrt, genau wie beim SFB52
Das war es schon, Implementierung sollte kein großes Problem sein.
mfG. klaly