TIA Auslesen welcher Index an Bausteinschnittstelle anliegt

Alde_Oma

Level-2
Beiträge
103
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
in einem DB habe ich ein Array [0..x] of UDT_xy. Parallel dazu habe ich einen FB mit einem UDT_xy an der InOut-Schinttstelle (kein Array).
Der FB wird mehrfach aufgerufen, wobei jeder aufgerufene FB einen anderen Index des Arrays von außen an die Schnittstelle bekommt.

Ist es möglich, innerhalb des FB den Index des Arrays welches an der Schnittstell anliegt auszulesen?
Mir ist leider keine Funktion bekannt. Vielleicht hat jemand von euch eine Antwort.

MfG Oma
 
Welche Steuerung?
Mit einer 300er/400er würde ich die Offset-Adresse des Eingangsparameters auslesen und den Index danach berechnen.
Sollte eigentlich gehen.
Aber du könntest dem FB auch das ganze Array übergeben und zusätzlich den Index.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ohne üble Adress-Rechnerei ist das leider nur möglich, indem man den Index über eine 2. Eingangs-Variable nochmals übergibt...
 
Ich verstehe deine Frage so, dass du beim FB-Aufruf wissen möchtest welchem Index im Array dein aktuell anliegendes UDT entspricht ...
Falls dem so ist dann kannst du das nur herausbekommen indem du in einer Schleife jedes Element des Arrays mit dem anliegenden Element vergleichst. Bei Übereinstimmung brichst du dann die Schleife ab und gibst den nun aktuellen Index dann aus.
Etwas anderes fällt mir dazu sonst nicht ein ... Je nachdem wie groß dein Array ist und wie komplex der UDT ist kann das schon ein wenig Zeit in Anspruch nehmen - vor Allem bei Mehrfach-Aufrufen des FB.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
es geht um ne 1500er CPU und TIA18.
Larry, du verstehst mein Anliegen richtig. Dachte ich mir schon, dass das nicht ohne weiteres möglich ist.
Ich muss im FB den Index nur wissen, da mit diesem im Baustein weitergearbeitet wird. Dann muss ich den halt gesondert übergeben.
Danke euch
 
Den Index gleich ins Array als Variable packen? Das geht ziemlich fix mit Schleife auch automatisch beschreibbar.
 
Mich würde interessieren, wozu du das brauchst, um die beste Lösung zu finden.
Wenn du innerhalb des FB ohnehin auf das Array zugreifen möchtest (wozu sonst der Index?), dann würde ich auch das gesamte Array übergeben und den Index als zusätzlichen Input. Dient der Index für sonstige Identifikationen im FB (Stationsnummer etc.), würde ich ihn auch als zusätzlichen Input übergeben, das macht es anderen Programmierern später einfacher, dein Werk zu verstehen. Das Array wird ja ohnehin als Referenz übergeben, man arbeitet dann also direkt auf dem DB.
 
Das Array selbst ist erstmal uninteressant und muss nicht übergeben werden. Im DB wird der UDT als Array gespeichert, da es für uns einfacher zu handhaben ist. Innerhalb des FB wird der Index zur Weiterverarbeitung für einen SQL-Befehl benötigt. Wir schreiben darin Daten in eine Datenbank und da wird eben der Index benötigt. Mein Ziel ist es, solche Dinge soweit wie möglich zu automatisieren, damit die Kollegen, welche den FB später nutzen, so wenig wie möglich Arbeit damit haben. Mit Arbeit meine ich z.B. den Index an jedem FB-Aufruf anpassen usw. Ich schreibe den Index jetzt mit in den UDT. Der wird außerhalb in einer Schleife dem jeweiligen Arrayindex zugeordnet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Array selbst ist erstmal uninteressant und muss nicht übergeben werden. Im DB wird der UDT als Array gespeichert, da es für uns einfacher zu handhaben ist. Innerhalb des FB wird der Index zur Weiterverarbeitung für einen SQL-Befehl benötigt. Wir schreiben darin Daten in eine Datenbank und da wird eben der Index benötigt. Mein Ziel ist es, solche Dinge soweit wie möglich zu automatisieren, damit die Kollegen, welche den FB später nutzen, so wenig wie möglich Arbeit damit haben. Mit Arbeit meine ich z.B. den Index an jedem FB-Aufruf anpassen usw. Ich schreibe den Index jetzt mit in den UDT. Der wird außerhalb in einer Schleife dem jeweiligen Arrayindex zugeordnet.
Da aber auch die Dynamisierung mitbedenken (Stichwort Array[*]), oder bleibt das ein Leben lang bei der einen festen Größe?
 
Zurück
Oben