Ich versuch's mal zu erklären...
Wir nehmen jetzt mal nur den FB 1020 (Rolltor). Da wir immer wieder mal Rolltore als Schutztüren für Maschinen einsetzen, habe ich mir diesen FB "gebastelt" ,um nicht immer wieder dieselbe Programmierung durchzuführen zu müssen. Bei Dir wären das die 250 FUs.
In dem FB 1020 arbeite ich ausschließlich mit lokalen Variablen. IN, OUT, STAT usw. Es gibt keine einzige Variable, die direkt adressiert ist. Somit bin ich unabhängig von den äußeren Gegebenheiten und kann den FB in allen Projekten, die ein Rolltor haben einsetzen (Faulheit siegt!). Alles was ich brauche hole, ich mir über die IN-Variablen rein. (Ich programmiere symbolisch, habe das aber hier ausgeblendet, damit oben bei der Variablendeklaration ersichtlich wird, daß der Datentyp ein FB ist).
Im FB 1020 wird jetzt "nachgeschaut", ob das Rolltor geöffnet oder geschlossen werden soll und die entsprechenden Ausgänge angesteuert. Außerdem wird über OUT "Status" der Zustand gemeldet (geöffnet, geschlossen, fährt auf, fährt zu, gestört). Dieses Byte nutze ich für die Visualisierung.
Wenn Dein FB für die FUs fertig ist (z.B. FB 1), nimmst Du einen neuen FB (z.B. FB 2). In der Schnittstellendeklaration von FB 2 definierst Du jetzt unter STAT die Variablen FU_001, FU_002 usw. vom Datentyp FB 1.
Anschließend erscheinen die FU_x unter Multiinstanzen (gilt nur für diesen FB, andere Multiinstanzen für andere Bausteine sind nicht sichtbar!).
Mittels Drag & Drop ziehst man die Instanzen jetzt in einzelne Netzwerke. INs und OUTs beschalten und fertig.
Wenn jetzt der FU 2 mit DB 2 aufgerufen wird, sind alle Daten der Multiinstanzen im DB 2 enthalten. Man braucht also nicht mehr für jeden FU_x den zugehörigen DB_x generieren.
Ob du allerdings alle 250 FUs in einem FB unterkriegst hängt von der Größe des FB 1 ab. Evtl. mußt Du mehrere FBs mit Multiinstanzen anlegen.
Gruß
maweri