Trace Restart Visuelement

caprez95

Level-2
Beiträge
17
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen.

Ich habe schon länger mit dem Problem zu kämpfen, dass ich einen Trend (Visuelement) nicht resetten (neustarten) kann.
Ich habe es jetzt mit dem Beispiel hinbekommen, die Trace-Aufzeichnung über die CmpTraceMgr Bibliothek zu steuern.
Aber wie bekomme ich diese Trace-Aufzeichnung in ein Visuelement?

Der Code sieht wie folgt aus:

Code:
// Configure trace
IF xInit THEN
    // Create a trace packet
    PacketConfig.pszName := ADR('IECTraceConfiguration.Trace1'); // Name of trace
    PacketConfig.pszApplicationName := ADR('IECTraceConfiguration'); // Name of the application
    PacketConfig.pszIecTaskName := ADR('Task'); // Name of the task
    PacketConfig.pszComment := ADR('Demo packet');
    PacketConfig.ulEveryNCycles := 1;
    PacketConfig.ulBufferEntries := 1000;
    PacketConfig.ulFlags := TRACE_PACKET_FLAGS.TRACE_PACKET_FLAGS_TIMESTAMP_MS AND TRACE_PACKET_FLAGS.TRACE_PACKET_FLAGS_AUTOSTART;

    IF (NOT fbTraceManager.CreatePacket(PacketConfig := PacketConfig, hPacket=>hPacket1)) THEN
        xError := TRUE;
    END_IF

    // Create a trace record
    RecordConfig.pszVariable := ADR('iSignal'); // This is the name of variable to record
    RecordConfig.tcClass := INT_TO_UDINT(TypeClass.TYPE_INT); // Type of the recording variable
    RecordConfig.ulSize := SIZEOF(iSignal); // Size of the recording variable
    pApp := AppFindApplicationByName('IECTraceConfiguration', 0);
    AppGetAreaOffsetByAddress(pApp, ADR(iSignal), ADR(RecordConfig.tvaAddress.taAddress.Area.usArea), ADR(RecordConfig.tvaAddress.taAddress.Area.ulOffset)); // Get and set area offsets
    RecordConfig.tvaAddress.ulAddressFlags := TRACE_VAR_ADDRESS_FLAGS_IEC OR TRACE_VAR_ADDRESS_FLAGS_AREA_OFFSET;
    RecordConfig.ulGraphColor := 16#FF00FF00; // green
    RecordConfig.ulGraphType := 1; // Line with points

    IF (NOT fbTraceManager.AddRecord(RecordConfig := RecordConfig, hPacket := hPacket1, hRecord => hRecord1)) THEN
        xError := TRUE;
    END_IF

    xInit := FALSE;

END_IF

// Starts the recording
IF xStart THEN
    IF (NOT fbTraceManager.StartPacket(hPacket := hPacket1)) THEN
        xError := TRUE;
    END_IF
    xStart := FALSE;
END_IF

// Stop the recording
IF xStop THEN
    IF (NOT fbTraceManager.StopPacket(hPacket := hPacket1)) THEN
        xError := TRUE;
    END_IF
    xStop := FALSE;
END_IF

// Reset the recording
IF xReset THEN
    IF (NOT fbTraceManager.ResetPacket(hPacket := hPacket1)) THEN
        xError := TRUE;
    END_IF
    xReset := FALSE;
END_IF
 
Hallo,
keine Ahnung in welches Visuelement es soll, aber mit der Funktion

TraceMgrPacketReadFirst​

TraceMgrPacketReadNext​

werden die Daten zurückgeben.
 
Zurück
Oben