Messwert-Toleranzbereich für Ring-Puffer

Comprehensive CAN monitor for Windows® and its add-ins: Plotter, CANdb Import, Instruments Panel, and J1939
Post Reply
Moritz_turbos
Posts: 10
Joined: Mon 11. Nov 2013, 16:12

Messwert-Toleranzbereich für Ring-Puffer

Post by Moritz_turbos » Fri 2. May 2014, 08:58

Hallo,

an meiner Einrichtung sollen die Messwerte unter anderem über einen Ringspeicher aufgenommen werden.
Nun möchte ich als Abbruchkriterium einen Toleranzbereich für die Messwerte definieren. Läuft ein Messwert aus seinem Toleranzbereich, soll der Ringspeicher stoppen.
Gibt es eine Möglichkeit einen solchen Toleranzbereich im Programm selbst zu definieren?

Vielen Dank.

Gruß Moritz

User avatar
PEAK-Support
Sales & Support
Sales & Support
Posts: 1646
Joined: Fri 10. Sep 2010, 19:34

Re: Messwert-Toleranzbereich für Ring-Puffer

Post by PEAK-Support » Fri 2. May 2014, 09:47

Sie können das ganze in einem Macro implementieren. Eigentlich sollte das kein Problem sein wenn Sie mit reinen Signalen arbeiten. Sie lesen den Signalwert und überprüfen dann die einzuhaltenden Grenzen.

Hier mal ein simples Bsp. welches die Grenzen zweier Signal während der Laufzeit überprüft.

Code: Select all

'------------------------------------------------
' FILE DESCRIPTION: Macros for CAN logging
' (c) 2013 PEAK-System Technik GmbH 
' very simple logger Demo for SIgnal values in customer 
' Text format
'------------------------------------------------

Sub RunForever()

' Benötige Variablen erzeugen

Dim sig1
Dim sig2
Dim speed
Dim position
Dim old_speed
Dim old_position
Dim logtext

' Die Datenreferenzen holen
Set sig1 = Signals("SpeedVar")
Set sig2 = Signals("PositionVar")

Dim fso, tf

' Datei erzeugen !!ACHTUNG die vorhandene wird gelöscht !!
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile("c:\Trace\CAN-LOG.txt", true)
' Zeile mit Zeilenumbruchzeichen schreiben.
tf.WriteLine("Logfile for CAN")
' Drei Zeilenumbruchzeichen in die Datei schreiben.
tf.WriteBlankLines(1)
tf.Close

position = sig2.Value
speed = sig1.Value
old_speed = speed
old_tion = position

' solange bis Macro gestoppt wird !!
do

 ' Value changed ?
 if position <> old_position Then
	' Grenzen abfragen 
	if position>5000 Then
		PrintToOutputWindow("Position out of range !")
		PrintToOutputWindow(position)
		PrintToOutputWindow(" ")
		'Logdatei schreiben
		logtext = "Position:" & position
		WriteLogEntry(logtext)  
		old_position = position
	end if
 end if	

  ' Value changed ?
 if speed <> old_speed Then 
	' Grenzen abfragen 
	if speed > 3000 Then
		PrintToOutputWindow("Speedout of range !")
		PrintToOutputWindow(speed)
		PrintToOutputWindow(" ")
		'Logdatei schreiben
		logtext = "Speed:" & speed
		WriteLogEntry(logtext)  
		old_speed = speed
	end if
 end if	

 ' aktuelle Werte holen
 position = sig2.Value
 speed = sig1.Value

 
 Wait(10) ' Time for other tasks on the system


Loop While 1=1


End Sub


Sub WriteLogEntry(text)
   Dim fso, tf

   Dim HourString
   Dim MinuteString
   Dim SecondString
   Dim datetext
 
   HourString =  Hour(Now)
   MinuteString = Minute(Now)
   SecondString = Second(Now)
   datetext = HourString & ":" & MinuteString & ":" & SecondString & "  " & text
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set tf = fso.OpenTextFile("c:\Trace\CAN-LOG.txt", 8, false)
   ' Zeile mit Zeilenumbruchzeichen schreiben.
   tf.WriteLine(datetext)
   tf.Close
End Sub
die zugehörige Symboldatei sieht so aus:

Code: Select all

FormatVersion=3.1 // Do not edit!
MuxChar=*
DecimalSeparator=.
UniqueVariables=True

{SENDRECEIVE}

[PositionID]
ID=1D5h
Picture=aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa 
a=PositionVar	unsigned  /u:mm	// Variable in Intel format

[SpeedID]
ID=2D5h
Picture=aaaaaaaa aaaaaaaa aaaaaaaa aaaaaaaa 
a=SpeedVar	unsigned  /u:mm/sec.	// Intel Format 
Gerne senden wir Ihnen auch das komplette Projekt für den PE5 direkt zu. Dafür schreiben Sie bitte eine kurze E-Mail an support[at]peak-system.com und geben uns Ihre Seriennummer der PE5 Version an (bitte diese hier NICHT posten!)
--------------------------------
PEAK-System Technik
Technical Support Team
support[at]peak-system.com
-------------------------------

Post Reply