Zykluszeit ermitteln

Comprehensive CAN monitor for Windows® and its add-ins: Plotter, CANdb Import, Instruments Panel, and J1939
Post Reply
moritz
Posts: 4
Joined: Thu 22. Mar 2018, 13:50

Zykluszeit ermitteln

Post by moritz » Thu 22. Mar 2018, 14:51

Hallo,

ich muss ein Zykluszeit-Problem bei einem Can-Teilnehmer untersuchen und möchte mir dazu die Zykluszeit einiger Can-Nachrichten grafisch Darstellen. Die in der Standardübersicht dargestellte Zykluszeit flackert zu schnell, um genug zu erkennen.

Der nachfolgende Quellcode soll die Zykluszeit in ein Signal überführen, welches dann geplotet werden kann.

Code: Select all

Option Explicit

'------------------------------------------------------------------------------
'FILE DESCRIPTION: Keine Beschreibung angegeben.
'------------------------------------------------------------------------------
Sub Timeing_of_Msg()
'baseded on Sub WaitForID100() from Sample.pem
  ' To view the output messages of this macro, open the Output Window and
  '  select the "Macro" tab
  Dim UseConn, conn
  ' Find the first enabled connection in the project that uses the CAN protocol
  Set UseConn = Nothing
  For Each conn In Connections
    If conn.IsEnabled And conn.Protocol = peProtocolCAN Then
      Set UseConn = conn
      Exit For
    End If
  Next 
  If UseConn Is Nothing Then
    MsgBox "Project does not contain any enabled CAN connections"
    Exit Sub
  End If
   
  ' Create a new client and connect it to the same Net that the
  '  found connection uses
  Dim MyClient, PcanConn
  'Set MyClient = CreateObject("PCAN3.PCANClient")
  Set MyClient = CreateObject("PCAN3.PCANClient")
  MyClient.Device = UseConn.Device
  MyClient.Name = "Macro"
  
  
  Set PcanConn = MyClient.Connections.Add(UseConn.CommunicationObject.NetName)
  If Not PcanConn.IsConnected Then
    MsgBox "Cannot connect to net " & PcanConn.NetName
    Exit Sub
  End If

  Dim MsgID
  MsgID = InputBox("Please enter MSG ID Format: &H192", "", "&H192")
  PcanConn.RegisterMsg MsgID, MsgID, False, False
 
  Dim Timestamp
  Dim Timestamp_old
  Dim Timestamp_delta
  Timestamp_old = 0
  
  Dim DeltaTime
  Set DeltaTime = Signals("DeltaTime")
  If DeltaTime Is Nothing Then
    ' Signal not found, create and initialize new one
    Set DeltaTime = Signals.Add("DeltaTime")
    DeltaTime.DataType = peDataTypeFloat
  End If
  
  Dim Timeout
  
  Dim RcvMsg
  Set RcvMsg = MyClient.Messages.Add
  Do
    Timeout = 1000
  	Do While Not RcvMsg.Read And Timeout > 0
   	 ' Wait for an incoming message
   	 Wait 1
   	 Timeout = Timeout - 1
  	Loop
  	If Timeout > 0 Then
  	  If RcvMsg.LastError = pcanErrorOk Then
   	   Timestamp = RcvMsg.Timestamp
   	   if Timestamp_old > 0 then
   	     Timestamp_delta = Timestamp - Timestamp_old
   	   Else
   	     Timestamp_delta = 0
   	   End If 
   	   Timestamp_old = Timestamp
   	   'PrintToOutputWindow "recived on: " & Timestamp
   	   PrintToOutputWindow "delta between msg: " & Timestamp_delta
   	   DeltaTime.Value = Timestamp_delta
   	   'PrintToOutputWindow "-----"
   	  End If
   	Else
   	  PrintToOutputWindow "Timeout!"
   	  DeltaTime.Value = 0
   	  Timestamp_old = 0
  	End IF
  Loop While 1
End Sub
Leider bekomme ich beim ausführen die Meldung:
" Die Makrodatei enthielt den folgenden Fehler und wird deaktiviert:
Line 1: Macro"

Die Meldung ist nicht sehr hilfreich und tatsächlich wird der Fehler durch Zeile 27: "Set MyClient = CreateObject("PCAN3.PCANClient")" ausgelöst. Der Code bis zu dieser Zeile ergibt keine Fehlermeldung, durch ergänzen nur dieser Zeile kommt die Meldung.

Die Codezeile kommt aus dem Beispiel WaitForID100, welches tatsächlich ebenfalls nicht funktioniert und den selben Fehler produziert.

Für mich ergeben sich nun folgende Fragen:
- Ist der Fehler für das Makro bekannt?
- Ist in meinem System vielleicht irgendwas falsch konfiguriert oder funktioniert es nicht unter Windows 10?
- Gibt es eine einfachere/andere Möglichkeit die Zykluszeit grafisch darzustellen?

Ich würde mich über Ideen/Tipps sehr freuen!

MfG
Moritz

M.Maidhof
Support
Support
Posts: 1753
Joined: Wed 22. Sep 2010, 14:00

Re: Zykluszeit ermitteln

Post by M.Maidhof » Thu 22. Mar 2018, 17:03

Hallo,

bitte setzen Sie das aktive device in der Systemsteuerung "PEAK Hardware" auf ihre verwendete CAN Hardware, also z.B auf USB und druecken Sie ok. Alternativ koennen Sie auch einfach die Zeile:

MyClient.Device = UseConn.Device

vor

Set MyClient = CreateObject("PCAN3.PCANClient")

setzen.

Das sollte Ihr Problem dann auch beheben. Hintergrund: ein neuer Client wird immer auf einem Default Device geoffnet. Ist dieses noch nicht gesetzt ueber die Systemsteuerung, kann der Client nicht auf dem passenden Treiber erstellt werden.

Mit freundlichen Gruessen

Michael Maidhof

moritz
Posts: 4
Joined: Thu 22. Mar 2018, 13:50

Re: Zykluszeit ermitteln

Post by moritz » Thu 22. Mar 2018, 17:43

Hallo,

danke für die schnelle Rückmeldung!

In der Systemsteuerung bei PEAK-Hardware ist das aktive device auf USB eingestellt. Das ändert leider nichts.

Den Befehl MyClient.Device = UseConn.Device kann ich leider nicht vor die Erzeugung des Objekts MyClient setzen. Das ergibt eine Fehlermeldung.

Ich habe in der Systemsteuerung entdeckt, dass es zusätzlich zu PEAK-Hardware auch noch CAN-Hardware (mit einem PCAN-Symbol) gibt. Auch hier ist das aktive device auf USB eingestellt. Ist das so korrekt oder habe ich da evtl. noch eine alte Version zusätzlich installiert?

MfG,
Moritz

M.Maidhof
Support
Support
Posts: 1753
Joined: Wed 22. Sep 2010, 14:00

Re: Zykluszeit ermitteln

Post by M.Maidhof » Fri 23. Mar 2018, 09:16

Hallo,

welche Version des PCAN-Explorers 5 haben Sie installiert?

Mit freundlichen Gruessen

Michael Maidhof

moritz
Posts: 4
Joined: Thu 22. Mar 2018, 13:50

Re: Zykluszeit ermitteln

Post by moritz » Fri 23. Mar 2018, 09:40

Moin,

das ist die Version 5.3.4.823.

M.Maidhof
Support
Support
Posts: 1753
Joined: Wed 22. Sep 2010, 14:00

Re: Zykluszeit ermitteln

Post by M.Maidhof » Fri 23. Mar 2018, 09:54

Hallo,

bitte auf die aktuelle 5.4.2 updaten, den Updatelink finden Sie auf der Startseite (News) im PCAN-Explorer 5.

Mit freundlichen Gruessen

Michael Maidhof

moritz
Posts: 4
Joined: Thu 22. Mar 2018, 13:50

Re: Zykluszeit ermitteln

Post by moritz » Fri 23. Mar 2018, 11:04

Hallo,

ja das hat das Problem tatsächlich gelöst! Danke!

M.Maidhof
Support
Support
Posts: 1753
Joined: Wed 22. Sep 2010, 14:00

Re: Zykluszeit ermitteln

Post by M.Maidhof » Fri 23. Mar 2018, 11:46

Hi,

die Fehlermeldung deutete auf ein nicht mehr registriertes PCAN3 Objekt hin, das wurde dann durch die Neuinstallation behoben.

Gruss

Michael Maidhof

Post Reply