TIA Indirekter Zugriff auf unterschiedliche Array-DB's

fschaefer

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

ich bin auch neu im TIA V16 unterwegs, jetzt bin ich gerade dabei die S7-400 Bausteine auf TIA umzuschreiben.
Mein Problem ist jetzt folgendes:
Ich habe eine FC der aus verschiedenen Arry-DB's (also variabel zu übergeben) einzelne Array's vergleichen/umsortieren soll. (Array-Typ ist bei allen DB's gleich).

FC Input: DB_1 : DB Nummer des ersten Bausteins
DB_2 : DB Nummer des zweiten Bausteins

Temp Variabeln: Zähler_1, Zähler_2 als INT

Jetzt sollte das in etwa so funktionieren:

"#DB_2".Datensatz[#Zähler_1] = "#DB_2".Datensatz[#Zähler_2]

Aber da passt wohl was nicht :(

Hat ja jemand eine Idee??

Grüße
Frank
 
mehrere ...

- Du könntest deinen Input als IN_OUT vom Typ des DB anlegen - nun kannst du in dem Baustein vollsymbolisch auf die einzelnen Elemente zugreifen.
- Du könntest in deinem DB für die dich interessanten Elemente einen-Struktur-Typ anlegen und den dann als IN_OUT an deinem Baustein verwenden.
- Du könntest dein Array selbst als Typ und IN_OUT an deinem Baustein verwenden ...

Gruß
Larry


Nachsatz :

und natürlich auch :
- du könntest statt zweier DB's und eines FC's einen FB erstellen, der die Elemente in seiner Instanz hat - der kennt dann natürlich auch alle seine Variablen ...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin fschaefer,

Jetzt sollte das in etwa so funktionieren:

"#DB_2".Datensatz[#Zähler_1] = "#DB_2".Datensatz[#Zähler_2]

falls Du, auch wenn es nur ein Beispiel ist, den Code von SCL richtig abbilden wolltest,
fehlt noch etwas:

Code:
"#DB_2".Datensatz[#Zähler_1] [COLOR=#ff0000][B]:[/B][/COLOR]= "#DB_2".Datensatz[#Zähler_2][B][COLOR=#ff0000];[/COLOR][/B]

VG

MFreiberger
 
ich habe es so verstanden das er am Input eine Interger hat fuer die DB Nummer.
also mueste er von
Integer nach Variant kommen , das geht ueber DB_ANY

ich gehe hier davon aus das die DB von einem UDT abgeleitet sind.

Code:
#tempDBVariant := DB_ANY_TO_VARIANT(in := UINT_TO_DB_ANY(INT_TO_UINT(#inDBNr)), err => #tempErrorDb);
  //pruefen ob der DB auch dem Type entspricht den  wir erwarten 
  // 
  IF TypeOf(#tempDBVariant) = "LBP_typeDB" THEN          
VariantGet(SRC := #tempDBVariant,
                     DST => #tempDB);
  end_if

// nach dem nan den DB befummelt hat muss man den naturlich mit aktualisieren 

VariantPut(SRC := #tempDB,
                     DST := #tempDBVariant);




ja und so koennte man das machen aber ob das schoen ist
 
Hallo Frank,

ich hatte bei meiner Umstellung ähnliche Hürden. Kannst du dein Vorhaben mal etwas näher beschreiben?


.. jetzt bin ich gerade dabei die S7-400 Bausteine auf TIA umzuschreiben...
Im TIA-Portal auf S7-1200/1500? Optimiert oder nicht optimiert?


.. Array-Typ ist bei allen DB's gleich ...
Ist der Typ ein bekannter Typ, oder muss er variabel sein können?


.. FC Input: DB_1 : DB Nummer des ersten Bausteins
DB_2 : DB Nummer des zweiten Bausteins ..
Ist dieser Parameter-Typ verbindlich oder könnte man es auch anders machen (VARIANT, ARRAY)?
Wie wurde in der S7-400 im FC mit den DB-Nummern und dem Typ gearbeitet? War der Typ oder die Typ-Länge im FC bekannt?
 
Zurück
Oben