TIA Daten aus Multiinstanzen kopieren bei optimierten Bausteine

Supermario73

Level-2
Beiträge
77
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen
Nun verwende ich das TIA Portal. Bausteine sind optimiert. Also kann ich nichts mit indirekter Adressierung rechnen.
Nun würde ich gerne Daten aus einer Multiinstanz anhand einer Nummer auf bestimmte Variable (oder Struktur) kopieren. Und dies ohne Array!

Beispiel
Ich habe 30 Aktoren als Multiinstanz definiert.

Motor1
Motor2
.
.
Motor30

Jeder Motor hat zahlreiche Daten. Nun wenn ich in einer Funktion den Wert 3 übergebe, dann sollen die Daten der Instanz von Motor3 auf aktiver_Motor geschrieben und gelesen werden. Übergebe ich den Wert 12, dann sollen die Daten von Motor 12 auf aktiver_Motor geschrieben und gelesen werden. usw.

Natürlich könnte man dies auf dem HMI mit Multiplexvariablen lösen, doch der Projektierungsaufwand ist dann sehr hoch. Wenn ich dies auf der SPS Seite löse, so muss nur auf dem HMI nur eine Variable pro Info projektiert werden.

Hat jemand eine gute Idee wie bei optimierten Bausteine auf die Instanzen zugegriffen werden kann?

Besten Dank für konstruktive Hilfe
 
Du könntest den Instanzen das Wissen um die eigene Identität als IN-Parameter mitgeben, dann kann die betreffende Instanz ihre internen Instanzdaten in/aus die globale Struktur kopieren.
Pseudocode:
Code:
#Motor1
  myID:=1
  aktID:=selection

#Motor2
  myID:=2
  aktID:=selection
...
#Motor30
  myID:=30
  aktID:=selection

Harald
 
Hi

du kannst auch ein switch/case in SCL oder ein SPL in AWL oder ein MUX verwenden (MUX gibt es auch in SCL und AWL). MUX geht von all diesen Lösungen am schnellsten, ist aber auf 32 beschränkt. Aber kopiert werden muss trotzdem.
Im Gegensatz zu Haralds Lösung werden deine Daten nicht verändert, was aber kein Schaden sein muss :)

'n schön' Tach auch
HB
 
Zuviel Werbung?
-> Hier kostenlos registrieren
du kannst auch ein switch/case in SCL oder ein SPL in AWL oder ein MUX verwenden (MUX gibt es auch in SCL und AWL). MUX geht von all diesen Lösungen am schnellsten, ist aber auf 32 beschränkt. Aber kopiert werden muss trotzdem.
Im Gegensatz zu Haralds Lösung werden deine Daten nicht verändert, was aber kein Schaden sein muss :)
:confused:
Wozu switch/case oder SPL oder MUX wenn es doch nur einen einzigen IF-Zweig gibt???
Und welche Daten werden verändert???

Harald
 
:confused:
Wozu switch/case oder SPL oder MUX wenn es doch nur einen einzigen IF-Zweig gibt???
Und welche Daten werden verändert???

Harald

Hi

naja, wenn in der Instanz die Nummer der Instanz enthalten sein soll, dann hat man doch mehr zusätzlich Daten angelegt, die man "nur" zur Verwaltung braucht. Das meine ich mit verändert. Und wenn
Dann werde ich im FB wenn die Daten ID und selction gleich sind die Daten kopieren.
schreibt, dann heißt das doch, dass da über eine Schleife iteriert werden muss und in dem einen Fall dann eine Kopie gemacht wird.
Genau das mach MUX und zwar ganz ohne Schleife. Aber wie ich S kenne, klappt
Code:
aktiver_motor := MUX( k:=selektion, in1:=Motor1, in2:=Motor2, in3:=Motor3 ....
nicht weil das ja ganze Strukturen sind :-(
Switch Käse geht aber.

'n schön' Tach auch
HB
 
Zurück
Oben