-> 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:
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