TIA DB und DUT passend an FB übergeben

fabey

Level-2
Beiträge
109
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
DB und UDT passend an FB übergeben

Moin Leute,

im Moment greife ich direkt auf einen DB per "DB_NAME".Array[Nr].Variable aus einem FB zu.
Ich übergebe dabei nur Nr an den FB. Das Array besteht aus einem von mir erstellten Datentyp.


  1. Wie mache ich den "DB_NAME" austauschbar?
    Geht das per InOut, Datentyp DB_ANY?
  2. Da ich im Moment auch fest auf die Variable zugreife, würde sie sich zwar im DB ändern, wenn ich den Datentyp ändere, aber nicht im FB. Wie kriege ich es hin auf den Datentyp zu verweisen und diesen somit beliebig umbennen zu können?


Vielen Dank und beste Grüße
 
Zuletzt bearbeitet:
im Moment greife ich direkt auf einen DB per "DB_NAME".ArrayNrVariable aus einem FB zu.
Ich übergebe dabei nur Nr an den FB. Das Array besteht aus einem von mir erstellten Datentyp.


  1. Wie mache ich den "DB_NAME" austauschbar?
    Geht das per InOut, Datentyp DB_ANY?
Eigentlich nicht den DB an der Schnittstelle übergeben, sondern dass Array. Der DB-Name ist dann Bestandteil des Arrays.

  • Da ich im Moment auch fest auf die Variable zugreife, würde sie sich zwar im DB ändern, wenn ich den Datentyp ändere, aber nicht im FB. Wie kriege ich es hin auf den Datentyp zu verweisen und diesen somit beliebig umbennen zu können?
Normalerweise erstellst Du einen Datentyp (udt), den Du dann bei der Erstellung des DB und bei der Erstellung des FBs benutzt.
Dann sind sie an jeder verwendeten Stelle auch immer baugleich.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo hucki, danke für deine sehr schnelle Antwort. Genau, ich würde den UDT auch gerne im FB verwenden, aber mir ist nicht klar wie ich dies zu tun habe um dann gut auf den DB verweisen zu können.
 
Für sowas hat Siemens den Zugriff über Referenzen geschaffen...

Code:
       #Ref_Pos_Data [COLOR=#ff0000]?=[/COLOR] #Pos_Data;  // versuchen Referenz zuzuweisen 
        IF #Ref_Pos_Data <> Null AND #Soll_Satz <= "Satz_Ende" THEN
            #Aktual_PosData := #Ref_Pos_Data[COLOR=#ff0000]^[/COLOR][#Soll_Satz];
Hier ist "Pos_Data" ein Array mit UDT am IN/OUT und "Satz_Ende" die obere Arraygrenze.

Die Referenz Ist in der Hilfe ganz gut erklärt.
 
Vielen Dank für das Beispiel hucki,
ich habe es nun auch so lösen können.

Als Eingang Test an den FB habe ich "DB_NAME".Array angelegt und im FB habe ich diesen als Array
[*] of "meinUDT"
definiert.
Nun kann ich direkt mit Test[1].X.Y auf meine im UDT angelegte Struktur zurückgreifen und trotzdem den gewünschten DB lesen und beschreiben.


@NBerger Vielen Dank auch für deine Antwort, leider konnte ich es für meinen Anwendungsfall noch nicht ganz nachvollziehen.
 
Zurück
Oben