Daten Löschen im FB

Waelder

Level-2
Beiträge
964
Reaktionspunkte
117
Zuviel Werbung?
-> Hier kostenlos registrieren
ich habe in einem FB (Multiinstanz) einen Bereich als IN_OUT deklariert. Der Bereich ist als UDT angelegt und enthält mehrere verschiedene Datentypen. Von aussen wird ein DB mit der selben Struktur an die INOUTs angelegt
Ich möchte nun den kompletten Bereich des DBs löschen. Das Problem ist nur, dass die Bausteine "SFCs" nur OUT vertragen aber nicht IN_OUT.
Äh das wars nun ich komm hier nicht weiter. Vielleicht kennt einer von euch die Lösung ?
 
Das, ähm, verstehe ich nicht.

Wird der Datenbereich des DB´s nicht mehr benötigt? Wofür ist der SFC und wo ist er????

pt
 
Antwort

Vielleicht hab ich mich "unklug" ausgedrückt.

Ich habe einen UDT gemacht. Der Enthält die Datenstruktur. Mit dem UDT habe ich einen externen DB gefüllt für mehrere Stationen (sagen wir aufgabestationen). Ich bekomme von dort Daten von einer externen Applikation. Die Applikation Füllt den DB erst wieder neu, wenn ich die Daten gelöscht habe. Ich übernehme von ihm Daten im meinen FB und lösche (möchte sie löschen...) sie im Extern aufgeschalteten DB. Mit dem SFC20 kopiere ich nun die Daten im inneren meines FBs herum (selbe Struktur aus UDT) und gebe sie am ende wieder Aus. Ich möchte lediglich die Daten auf den IN_OUT löschen aber bekomme es nicht in den Griff. Das Kopieren innerhalb mit SFC20 klappt.
@ thomass5
Ich hab ne leere Struktur, wie der UDT, im TEMP Bereich mit der möchte ich die Daten überschreiben null wäre auch möglich.
 

Anhänge

  • test.jpg
    test.jpg
    41,5 KB · Aufrufe: 48
Zuletzt bearbeitet:
@Waelder,
zum löschen bzw. beschreiben von Bereichen gibt's die SFC21 (Fill).
mfg. Jo
 
Hallo Waelder,

warum denn ganzen Bereich löschen? Innerhalb deiner Strucktur würde ich ein Kommandowort anlegen das von der übergeordneten Funktion mit z.B. dem Wert 1 beschrieben wird. Dann kopiert dein FB die Daten um und schreibt in das Kommandowort den Wert 0. Somit weiss die übergeordnete Funktion das die Werte übernommen wurden und der Datenbereich wieder frei ist zum schreiben. Damit sparst du die Zeit zum löschen des Datenbereichs.

Gruss Ligatschow
 
Zuletzt bearbeitet:
Der Bereich IN_OUT in einem FB ist nicht ein Datenbereich sondern ein ANY-Pointer. Das bedeutet das der eigentliche Datenbereich in einer anderen Instanz liegt. Das unterstützen die SFC's nicht. Was Du machen kannst ist das du die Informationen im ANY-Pointer in einen ANY-Pointer in TEMP Bereich kopierst und dann den SFC im Aufruf mit den Daten versorgst.


Gruss Ligatschow
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Bereich IN_OUT in einem FB ist nicht ein Datenbereich sondern ein ANY-Pointer. Das bedeutet das der eigentliche Datenbereich in einer anderen Instanz liegt. Das unterstützen die SFC's nicht. Was Du machen kannst ist das du die Informationen im ANY-Pointer in einen ANY-Pointer in TEMP Bereich kopierst und dann den SFC im Aufruf mit den Daten versorgst.


Gruss Ligatschow

Genau.
Zum Aufbau und Zerlegen des ANY gibts nen FAQ - Beitrag von Volker.

Grundsätzlich würde ich mir aber gar nicht die Mühe machen, sondern mit einem Handshake arbeiten, wie Ligatschow im vorhgerigen Beitrag erläutert hat.
 
Hallo
Der Bereich IN_OUT in einem FB ist nicht ein Datenbereich sondern ein ANY-Pointer. Das bedeutet das der eigentliche Datenbereich in einer anderen Instanz liegt. Das unterstützen die SFC's nicht. Was Du machen kannst ist das du die Informationen im ANY-Pointer in einen ANY-Pointer in TEMP Bereich kopierst und dann den SFC im Aufruf mit den Daten versorgst.

Stimmt nicht ganz, denn es wird nur ein Pointer von 6 Byte und nicht ein ANY-Zeiger von 10 Byte in den Instanz-DB geschrieben. In diesem Pointer steht nur die DB-Nummer und der bereichsübergreifende Zeiger. Somit fehlt der Datentyp und der Wiederholungsfaktor.
 
Erstmal Danke an euch

Ich werde es über Handshake machen. Ich nehme aber ein BIT (das letze der Reservebits). Ich glaub die Übergeordnete Instanz kann mir die Daten auch mit einem gesetzten Bit liefern.
Dann kann ich ja das Handshakebit via IN_OUT löschen.
Wie kopiert denn der SFC20 von unten nach oben (29.7 BIT15 -> 0.0 NAMED siehe mein Bild) oder umgekehrt ?

Danke nochmals.
 
Zurück
Oben