# Elau Traceaufzeichnung



## Trashman (27 September 2007)

So, wieder so ein Projekt das ich "austesten" darf.

Folgendes hab ich vor.

Mit Traceaufzeichnung meine ich nicht die "von" Hand aufzeichnung in der Elau, sondern die Internen Bausteine mit denen ich Arbeiten möchte.

Das ganze soll in etwa so funktionieren:

Ich möchte per Hand eine Tracekonfiguration einstellen... also über die Traceaufzeichnung im Punkt Ressourcen.
Das kann ich als .tcf oder als .mon

Die dort eingestellte Konfiguartion möchte ich in meinem Programmcode verwenden um eine Trace ab einem bestimmten Zeitpunkt zu starten und ab einem bestimmten Zeitpunkt zu beenden. 

Jemand ne Ahnung wie ich das anstelle? Ob ich mit .tcf oder .mon arbeiten kann?


----------



## Atunah (2 Oktober 2007)

Hallo,
es ist möglich aus dem IEC-Programm heraus zu tracen... Man hat im Wesentlichen zwei Möglichkeiten :
1)auf der Flash gespeicherte Trace-Konfigurationen zu laden und zu starten 
2) aus dem IEC-Programm eine Konfiguration erstellen und diese verwenden...

Ein Beispiel habe ich zur Zeit leider noch nicht an der Hand. Aber es gibt von Elau ein entsprechendes Demo


----------



## zotos (4 Oktober 2007)

Also den Tracer den man von Hand starten muss. Den Du schon kennengelernt hast kann man auch mit einer Variable Triggern. Einfach eine Variable Toggeln lassen und den Tracer auf steigende und fallende Flanke einstellen dann kann man die Aufzeichnung etwas Steuern.


----------



## Trashman (8 Oktober 2007)

Das is mir soweit alles klar.

Hab auch alles soweit hinbekommen.

Es wird ab einem bestimmten Zeitpunkt meine gespeicherte Trace-Konfig gelesen und dann eine Aufzeichnung gestartet.

Nach einer gewissen Zeit wird sie dann gestoppt und in einem .mon File abgespeichert. Funktioniert nach etwas tricksen auch.

Was ich jetzt vorhab ist die Daten aus dem gespeicherten .mon File auslesen und jeweils in ein Array packen.

Müsste ja was ich mir vorstelle direkt mit tracedateread-baustein funktionieren....

Leider bei mir irgendwie nich. Irgendwie bekomm ich das nich auf die reihe und hab nur Nullen in den Array´s stehen.

-------------------------------

Nachtrag:

Das .mon File heisst beim Trace-Start 'trace'
Logischer Weise bei tracedateread genau gleich

Ergebnis bei Result:

-4 -> Fehler beim suchen des <data>...</data> -Blocks in der XML-Datei. (ungültige Datei)

Irgendwo baut der mir Bockmist


----------



## Trashman (9 Oktober 2007)

So nach weiteren Versuchen des Austestens hat sich folgendes eingestellt:

Die abgespeicherte *.mon Datei durch tracestart kann über den Tracedataread Baustein nicht verwendet werden (Warum auch immer)

Spielt man auf den Flash des Max4 allerdings ein von Hand aufgezeichneten Trace (*.mon Datei) auf, kann der tracedataread Baustein diesen verarbeiten.

Hab mir mal die beiden *.mon Datein näher angesehen. 
Was der *.mon Datei durch tracestart fehlt sind lediglich Zeilenumbrüche zwischen den Werten... am Anfang und am ende. 

Ziemlich seltsam, warum die unterschiedlich sind.


----------



## Trashman (12 Oktober 2007)

Irgendwie seh ich grad den Wald vor lauter Bäumen nicht mehr 

Nebenhöhlen die komplet zu sind helfen irgendwie nich gerade weiter wenn man nen Programm schreiben will.
Darum auch evtl ne einfache Frage in der Angelegenheit:

Folgender Auszug aus der Hilfe zum tracedataread baustein:

PROGRAM ReadExample
VAR
   bInit: BOOL := FALSE; (* Startet das Tracelesen *)
   FB_TraceDataRead: TraceDataRead; (* Liest TraceDaten *)
   tREALArray: TraceREALArray; (* Arrays in welchem die zu schreibenden Daten liegen *)
   tLREALArray: TraceLREALArray;
   sFilename: STRING := 'TrcExamp';
END_VAR

IF(bInit)THEN
(* Initialisieren des FBs *)
   FB_TraceDataRead.pTraceData2 := ADR(tREALArray);
   FB_TraceDataRead.tTraceType2 := 6;
   FB_TraceDataRead.pTraceData3 := ADR(tLREALArray);
   FB_TraceDataRead.tTraceType3 := 22;
   FB_TraceDataRead.sFilename := sFilename;
   FB_TraceDataRead.bEnable := TRUE;
   bInit := FALSE;
END_IF

IF(FB_TraceDataRead.bEnable)THEN
(* Zyklischer Aufruf *)
   FB_TraceDataRead();
   IF(FB_TraceDataRead.bFinished)THEN
(* Lesen fertig *)
      FB_TraceDataRead.bEnable := FALSE;
   END_IF
END_IF 

------------------------------------------------------------------------
Ich hab nen File mit Tracedaten 'TrcExamp'.
Dort sind 360 Samples abgespeichert.
Die will ich nun mit dem Baustein auslesen und in ein Array speichern.
Ich blicks grad einfach nimmer, aber wie bekomm ich die daten in mein Array? *frustriert genervt und mit Brett vor dem Kopf am Rechner sitzt*


----------



## Trashman (12 Oktober 2007)

Der Wald hat sich gelichtet und ich hab den Baum gefunden 

Fehler erkannt in meinem Code und behoben... *grml*

man sollte einfach auch auf seine Rechtschreibfehler achten


----------

