uweschwarz
Level-2
- Beiträge
- 229
- Reaktionspunkte
- 12
-> Hier kostenlos registrieren
Hallo, ich arbeite mit einer S7 1500 und TIA V17.
Ich bin dabei die Kommunikation zu 18 Profibusteilnehmer gleichen Typs zu organisieren. Die Verbindung steht und die Empfangs- und Sendedaten sind mittels Datentyp als Variable verfügbar.
Die Kommunikation ist vom Lieferanten des PB Teilnehmers so organisiert, dass es bei den Empfangsdaten neben einem statischen Bereich auch einen dynamischen Speicherbereich von 6 Bytes gibt. Statisch ist in diesem Sinne unabhängig von der Formulierung der Sende-Anforderung und dynamisch abhängig von der Formulierung in einem bestimmten Teil der Sendeanforderung.
Abhängig von einer Befehls-ID werden unterschiedliche Daten gesendet. Bei ID1 z.B. der Status, bei ID2 ein Koeffizienten, usw. Insgesamt interessieren mich 4 bestimmte IDs (der vorhandenen 8).
Hierfür habe ich einen Datentyp vereinbart, der alle aktuellen Empfangsdaten enthält, einen Datentypen der neben den statischen Empfangsdaten auch 4 Arrays von 6 Byte für die dynamischen Empfangsdaten enthält.
Das ist die Struktur: Bis zum Array ist der statische Bereich, das Array ist der dynamische Bereich. Diesen Datentypen verwende ich in der Variablentabelle.
Struktur der Peripheriedaten:
Für die einzelnen Upload IDs habe ich spezifische Datentypen erstellt.
Struktur einer Upload ID:
Struktur der vollständigen Empfangsdaten
Also jetzt nicht nur die statischen Daten sondern auch die dynamischen Daten jeweils der korrekten ID zugeordnet.
In einer Funktion möchte ich nun die Daten zuordnen.
Ich dachte es geht so:
"301_REC_ADL_G100x"."THIS"[0]."Upload ID000 Status3" = dynamischer Teil des 1. Profibusteilnehmers in einem Array DB mit 18 Elementen
"REC_GE1001"."Upload Bytes" = das ist das Array von 6 Bytes aus den Empfangsdaten auf der Peripherie. In Byte 6 wird die aktuelle ID gesendet. Anhand dieser kann ich entsprechend zuordnen.
Die Fehlermeldung lautet: ungültige Zuweisung
Ich vermute, dass ich den Array-DB nicht richtig verstanden habe. Vielleicht ist auch die ganze Idee nicht gut. Was meint ihr dazu?
Aber vielleicht ist es einfacher einen FB zur erstellen in dem ich das mapping organisiere und diesen einfach 18 mal aufzurufen ...
Ich bin dabei die Kommunikation zu 18 Profibusteilnehmer gleichen Typs zu organisieren. Die Verbindung steht und die Empfangs- und Sendedaten sind mittels Datentyp als Variable verfügbar.
Die Kommunikation ist vom Lieferanten des PB Teilnehmers so organisiert, dass es bei den Empfangsdaten neben einem statischen Bereich auch einen dynamischen Speicherbereich von 6 Bytes gibt. Statisch ist in diesem Sinne unabhängig von der Formulierung der Sende-Anforderung und dynamisch abhängig von der Formulierung in einem bestimmten Teil der Sendeanforderung.
Abhängig von einer Befehls-ID werden unterschiedliche Daten gesendet. Bei ID1 z.B. der Status, bei ID2 ein Koeffizienten, usw. Insgesamt interessieren mich 4 bestimmte IDs (der vorhandenen 8).
Hierfür habe ich einen Datentyp vereinbart, der alle aktuellen Empfangsdaten enthält, einen Datentypen der neben den statischen Empfangsdaten auch 4 Arrays von 6 Byte für die dynamischen Empfangsdaten enthält.
Das ist die Struktur: Bis zum Array ist der statische Bereich, das Array ist der dynamische Bereich. Diesen Datentypen verwende ich in der Variablentabelle.
Struktur der Peripheriedaten:
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Int
Int
Int
Array[0..6] of Byte
Für die einzelnen Upload IDs habe ich spezifische Datentypen erstellt.
Struktur einer Upload ID:
Das sind 6 Byte, welche ich dann folgender Struktur verwende:Byte
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Int
Byte
Byte
Struktur der vollständigen Empfangsdaten
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Bool
Int
Int
Int
"ADL_Upload ID000"
"ADL_Upload ID011"
"ADL_Upload ID100"
"ADL_Upload ID111"
Also jetzt nicht nur die statischen Daten sondern auch die dynamischen Daten jeweils der korrekten ID zugeordnet.
In einer Funktion möchte ich nun die Daten zuordnen.
Ich dachte es geht so:
"301_REC_ADL_G100x"."THIS"[0]."Upload ID000 Status3":= "REC_GE1001"."Upload Bytes";
"301_REC_ADL_G100x"."THIS"[0]."Upload ID000 Status3" = dynamischer Teil des 1. Profibusteilnehmers in einem Array DB mit 18 Elementen
"REC_GE1001"."Upload Bytes" = das ist das Array von 6 Bytes aus den Empfangsdaten auf der Peripherie. In Byte 6 wird die aktuelle ID gesendet. Anhand dieser kann ich entsprechend zuordnen.
Die Fehlermeldung lautet: ungültige Zuweisung
Ich vermute, dass ich den Array-DB nicht richtig verstanden habe. Vielleicht ist auch die ganze Idee nicht gut. Was meint ihr dazu?
Aber vielleicht ist es einfacher einen FB zur erstellen in dem ich das mapping organisiere und diesen einfach 18 mal aufzurufen ...
Zuletzt bearbeitet: