Step 7 Fifo

silverfreaky

Level-2
Beiträge
548
Reaktionspunkte
50
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt ihn übrigens den UDT-FIFO.
Das ganze Programm enthält ein array aus einer UDT-Struktur mit Datum und Zeit,Messwert1,...........Messwert7
In den Baustein geht eine UDT Stuktur rein und eine wieder raus.

Das ganze ist flankengetriggert mit Löschfunktion.Puffergröße ist parametrierbar.
Der Baustein funktioniert wunderbar.Das ganze Programm hat auch gleich eine Simulation die die Daten reinschiebt und wieder ausliest.
Bei Siemens habe ich das Teil gefunden und gleich runterkopiert.:D

Durch das SCL Programm kann man den FIFO jetzt quasi auf alle beliebigen Datenstrukturen sehr einfach anpassen.
Auch das abspeichern von einem Zeitstempel kann der eine oder andere vielleicht brauchen.Wer deutsche Bezeichnungen braucht darf noch ein bisschen übersetzen.
Gefällt mir.:)

:ROFLMAO:https://support.industry.siemens.com/cs/document/8685494?dti=0&lc=en-WW:ROFLMAO:
 
Test FIFO

Hi Experten,

Bin gerade am FIFO testen.

Ich habe jetzt einen Schreibsimpuls erzeugt wo ich die Daten reinschreibe in einen temporäres UDT(in) das ich im FC angelegt habe.
Der Wert geht quasi in den FB(FIFO) rein.Von aussen beschicke ich ihn.

Für den Lesewert(leseimpuls) habe ich ebenfalls einen UDT(out) temporär im FC anglegt.
Die aktuellen Auslesedaten würde ich gern in einen DB schreiben.
ich kann aber nicht auf den die Variable vom Typ dat and Time zugreifen die aus dem FB herauskommt von aussen.
UDT Structur:Time Stamp Date and Time
Messwert 1 Real
...
Messwert 7 Real

Wie komme ich von aussen an das UDT_Out.Timestamp?
Im FC ist die UDT-Stuktur(out) local angelegt.Da muss ich auf die 1 Variable Date and Time dran.;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du machst dir eine Variable vom Typ des UDT den du als Out deklariert hast (UDT-FIFO?). Entweder in nem DB (besser), oder in nem Merkerbereich (nicht so gut).
Du kannst natürlich auch das UDT_OUT auch im FC auf einen Temp mit der UDT Deklaration legen und dann die Tempdeklaration laden und nur den Timestamp auf einen ZielDB legen.

Hat es einen Tieferen Grund warum du einen FB in einem FC aufrufst?

mfG René
 
Ist anderst.Der Baustein habe ich kopiert von Siemens.

Der FIFO selbst hat einen Instanzdatenbausein.Im FC wird er aufgerufen.
Im FC selbst sind 2 temporäre UDT(IN) und UDT(Out).Den Udt(in) versore ich von aussen mit Daten.Die schiebt er auch in den Baustein rein.
IM FIFO selbst werden die Daten auch richtig in den Puffer geschrieben.

Aber raus kriege ich die Ausgangsdaten nicht mehr?kratz?:-x
Ich würde die gern an der Schnittstelle wieder abholen(Udt(out)) und von dort der aktuelle Datensatz in einen DB schreiben.
Geht das nicht?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Zeitstempel mit Date and Time geht auch noch nicht.Auch nicht das Einlesen.
Nach dem Systebausteinaufruf muss ich es in den UDT(IN) bekommen(Time Stamp).

Ich habe jetzt anderst wie in der Vorlage einen FB genommen.Mit statischen Variablen.
Das muss irgendwie mit Zeiger auf Lokaldaten gehen.Kratz!
Und raus kriege ich die Daten gar nicht aus dem FB FIfo.Wie geht das?


Isch aber ä längers Gschäft.
 
Code:
      CALL  "BLKMOV"
       SRCBLK :=#OUT_FIFO.TimeStamp
       RET_VAL:=#tmp_ret_val
       DSTBLK :="DUMMY_DATA".OUT_STRUCT.TimeStamp

so z.B.

oder wenn du die ganze struktur im DB umspeichern willst.
So
Code:
      CALL  "BLKMOV"
       SRCBLK :=#OUT_FIFO
       RET_VAL:=#tmp_ret_val
       DSTBLK :="DUMMY_DATA".OUT_STRUCT
 
Zuletzt bearbeitet:
Das probiere ich erst mal aus.Das wäre der erste Schritt.Jezt muss ich den Blockmove noch finden.

Der 2 Schritt wie krieg ich die Daten aus dem UDT raus?Zur Not kann ich auch direkt auf den IDB vom FIFO Baustein zugreifen.
Ist aber nicht so schön.

Hast du da auch schon eine Lösung?Wo finde ich Blockmove.:ROFLMAO:
 
Geht bei mir nicht mit dem Blockmove?Geht das bei dir.Ist noch ein Fehler drin.Erst muss es in In_Fifo_TimeStamp.
Und dann wieder alles raus
 
Nein in deinem Blockmove hast du zuerst UDT out gehabt.
ich habe den Blockmove hinter die Systemfunktion gesetzt.Geht aber trotzdem nicht.kratz?:-(
 
Habe das Programm nochmal komplett überarbeitet.

Der Zeitstempel wird jetzt komplett im OB 1 erzeugt.Ein programmteil das man so mit den entsprechenden Bausteinen komplett übernehmen kann.
habe mir einiges zusammenkopiert.

Als Datensatz gibt es jetzt Zeitstempel(Jahr,Monat,Tag,Minute,Sekunde) als UDT-Eingangsdaten und dito als Ausgangsdaten.
Außerdem gibt es noch 3 Real Messwerte.

Der Baustein der den FIFO aufruft ist ebenfalls ein Fb.Dort habe ich das UDT für die Ausgangsdaten statisch gemacht.
Außerdem ist eine Simulation enthalten Daten eintakten und Daten austakten.

Das Programm kann jetzt relativ leicht auf beliebige Datenstrukturen umgemünzt werden.Auch wenn man den Messwertstempel nicht braucht.
Es ist meiner Meinung nach jetzt alles nachvollziehbar was geändert werden muss.

Jeder kann es jetzt runterladen und testen ob er noch Fehler findet.Auch Erweiterungen wären noch willkommen.
Aufpassen muss man mit den Instanzdatenbausteinen bei Veränderungen.Wenn man die nicht alle anpasst kommt der berüchtigte Stop.

Bitte um Rückmeldungen ob ihr damit zurecht kommt!
:lol::lol::lol:
 
Zurück
Oben