|
CCS Modul R_ARRAY_TRIG |
$Id: r_array_trig.C,v 1.20 2005/04/18 06:52:17 jsj3rt Exp $
---------------------------------------------------------------------
Kurzbeschreibung: Triggererkennung in einem Feld
---------------------------------------------------------------------
Projekt: CCS
Sourcefile: r_array_trig.C
Autor: RtW/TEF72-Juilfs (20.10.2001)
Zielsystem: HP9000/V743 (HP-RT 2.0x), /Sxxx (HP-UX 9.0x)
Sprache: C++
---------------------------------------------------------------------
Prototyp:
MPI Schnittstelle
void r_array_trig(
,shm_stringpointer *zeilen_wert
,long index1
,long anzahl)
---------------------------------------------------------------------
Aufruf: im Vectorinterpreter
(*funktionen[modulnummer])
(Ssp_expand_zeile
,Ssp_expand_wert
,p_verwaltung->begin_modulblock
,p_verwaltung->anzahl_modulparameter);
---------------------------------------------------------------------
Funktionsbeschreibung:
Über dieses Modul kann ein Feld nach dem n-ten Trigger durchsucht werden ,
der zugehörige Index wird zurückgegeben. Falls der gewünschte Triggerpunkt
nicht gefunden wurde wird der Index -1 zurückgegeben.
Der Suchbereich kann durch die Parameter ARRAY_START und ARRAY_END
eingeengt werden. Sind diese nicht angegeben, startet der Suchbereich
automatisch bei 1 und endet bei der Anzahl belegter Elemente des Feldes.
Ist der Wert von ARRAY_START groesser dem Wert ARRAY_END wird das Feld
vom Ende her durchsucht.
Um Fehlerspitzen zu ignorieren kann ueber den Wert HYSTERESE eine
Anzahl Messpunkte angegeben werden, das Modul ueberprueft nach einer
Flankenerkennung ob der Wert (aktueller Index + HYSTERESE) ebenfalls
der Triggerbedingung entspricht, ist dies nicht der Fall wird der Trigger
ignoriert.
Soll der Index der n-ten Flanke ermittelt werden, muss in dem
Parameter COUNTS n-1 eingetragen werden. Dieser gibt an wieviele
legale Triggerbedingungen ignoriert werden sollen.
Ueber den Parameter OPERATION kann die Art der Auswertung festgelegt
werden, es ist darauf zu achten, dass bei "==" oder "!=" Vergleiche
in Double Feldern schon bei sehr kleinen Wertdifferenzen (z.B. durch
Rundungen) es zu nicht erkennen einer Triggerbedingung fuehren kann.
Beispiel:
Array ist belegt mit der unten angegebenen Kurvenform
ARRAY_START = leer Modul belegt den Start mit Index 0
ARRAY_END = leer Modul belegt das Ende mit der Anzahl der
Elemente im Feld
ARRAY_TRIG = 500
HYSTERESE = 5
OPERATION = >
COUNTS = 1
Das Modul durchsucht ab Index 0 die erste Flanke bei der der
Wert groesser 500 ist. Dies ist der Fall bei der positiven
Flanke von 2. Da die Anzahl Messpunkte zwischen dem Triggerpunkt
und seinem komplementären Trigger (negative Flanke von 2) kleiner
der vorgegebenen Hysterese (5) ist, wird dieser Impuls ignoriert.
Die Impuls 3 wird als regulärer Trigger erkannt, wird aber ignoriert,
da fuer die zu ignorierenden Trigger 1 angewaehlt wurde.
Als Ergebnis wird der Index auf die positive Flanke von Impuls 4
zurueckgeliefert.
1000 ----+ +-+ +------+ +------+
| | | | | | |
| | | | | | |
| | | | | | |
100 +----------+ +----------------+ +------+ +-----
1 2 3 4
Beschreibung der Modulübergabeparameter:1 PRUEFSCHRITTGAUDI Prüfschritt ------------------------------2 POSITION
PAV- Position ------------------------------3 ARRAY
Variablen Name ------------------------------4 ARRAY_START
Index bei der die Auswertung beginnt Index >= 1 ------------------------------5 ARRAY_END
Index bei der die Auswertung endet Index >= 1 ------------------------------6 ARRAY_TRIG
Trigger Wert ------------------------------7 HYSTERESE
Um Fehlerspitzen zu ignorieren kann ueber den Wert HYSTERESE eine Anzahl Messpunkte angegeben werden, das Modul ueberprueft nach einer Flankenerkennung ob der Wert (aktueller Index + HYSTERESE) ebenfalls der Triggerbedingung entspricht, ist dies nicht der Fall wird der Trigger ignoriert. ------------------------------8 OPERATION
Eingabe des Vergleichsoperators == gleich != ungleich > grösser >= grösser gleich < kleiner <= kleiner gleich ------------------------------9 COUNTS
Anzahl der zu ignorierenden Trigger bei der Triggererkennung ------------------------------10 ERGEBNIS
Index auf den gefundenen Trigger -1 falls der Trigger nicht gefunden wurde ------------------------------11 FEHLERFLAG
Fehlerflag