S7-1200 aglink

Matze001

Level-3
Beiträge
2.814
Reaktionspunkte
573
Zuviel Werbung?
-> Hier kostenlos registrieren
Mahlzeit,

es hat zwar nur indirekt mit HMI zu tun, doch ich denke hier passt es am ehesten rein.

Ziel ist es aus einer S7-1200 inhalte eines DBs (10-20 Byte-Werte) in eine (my)SQL-Datenbank zu schreiben und diese anschließend zu visualisieren.

Ich nutze in Visual-Basic folgenden Befehl und kann erfolgreich Merker-Bytes auslesen:

Code:
retval = AGL4.ReadFlagBytes(myAGLInterface.ConnNr, 200, 2, Buffer, 1000)

Erklräung:

myAGLInterface.ConnNr -> gibt mir die Verbindungsnummerzurück.
200 -> MB200
2 -> 2 Bytes
Buffer -> Mein Puffer in den die Bytes geschrieben werden
1000 -> Timeput 1s

Damit bekomme ich meine Werte wunderbar in die Variable Buffer übertragen, aber halt nur Merkerwörter. Klar geht das bei so wenigen Werten auch, aber ich finde einen DB "sauberer".

Mein Ansatz war nun:

Code:
retval = AGL4.ReadDataBytes(myAGLInterface.ConnNr, 1, 2, 1, Buffer, 1000)

myAGLInterface.ConnNr -> gibt mir die Verbindungsnummerzurück.
1 -> DB Nummer 1 (ist das bei der 1200er auch korrekt?)
2 -> Startadresse -> 2. Byte
1 -> Anzahl der zu lesenden Bytes 1
Buffer -> mein Puffer
1000 -> Timeout

DB1:

Code:
1 Static 
2 Test1 Byte
3 Test2 Byte
4 Test3 Byte
5 Test4 Byte


Hier bekomme ich keinen Wert in meinen Puffer geschrieben.

Ich denke es liegt ggf. an der DB-Nummer oder ich habe einen Gedankenfehler wegen dem Startbyte. In jedem Wert (Test 1-4) steht ein Wert (1-4), aber egal was ich für ein Startbyte eingeben ich erhalte keinen Wert.

Wenn das Auslesen des DBs geklappt hat bin ich am Überlegen direkt INT-Werte zu lesen, dazu muss ich im Prinzip ja "nur" ReadDataWords nutzen. Hier kommt dann (später) meine Frage wie es mit der Startadresse aussieht. Es steht dort explizit (S5-Konform bei der S5 Start 10 -> DBW10 bei der S7 Start 10 -> DBW20)

Wie komme ich dann an die unteren? also 0-9?

Fragen über Fragen, ich würde mich über ein paar Antworten freuen.

MfG

Marcel
 
Wow wenn man es richtig macht funktioniert es sogar *ROFL*


Ich danke Dir! Nun kann ich noch ein wenig mit INT-Werten testen, hoffe das klappt genau so leicht.

aglink ist einfach super :TOOL:

MfG

Marcel
 
Zurück
Oben