CCS Modul   Q_CANSTD
 
   $Id: q_canstd.C,v 1.9 2005/09/01 07:11:40 sniff Exp $
   ---------------------------------------------------------------------
   Kurzbeschreibung: 	CAN - Auftrag an die PSS/SKM senden 
   ---------------------------------------------------------------------
   Projekt:		CCS
   Sourcefile:		q_canstd.C
   Autor:		RtW/TEF72-Keppler (04.08.99)
   Zielsystem:		HP9000/V743 (HP-RT 2.0x), /Sxxx (HP-UX 9.0x)
   Sprache:		C++
   ---------------------------------------------------------------------
   Prototyp:
   MPI Schnittstelle
   void q_canstd(shm_stringpointer *zeilen_info
	   ,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:
   Dieses Modul dient zur Auftragsvergabe an die SKM. Es bereitet die 
   Eingangsdaten zu einem SKM-verstaendlichen String auf und veranlasst 
   die gewuenschten Aktionen.
   Die Antwort wird im shared Memory abgelegt und kann dort z.B. vom Modul 
   p_zerlege_string geholt und verarbeitet werden.
   
   ACHTUNG: Derzeit nur SKM
   
   Beschreibung der Moduluebergabeparameter:
1 PRUEFSCHRITT
   	GAUDI Pruefschritt
2 POSITION
   	PAV- Position
3 BEFEHL
	Befehl an die SKM 
    	CANBLOCK: 	Die folgenden Parameter werden wie in der 
			Standard-Pruefvorschrift beschrieben interpretiert.
4 ID_SENDEN
Sende Identifier an das SG: Identifier in HEX an das 
    			SG. Soll keine Botschaft gesendet werden, so wird
			kein Wert eingetragen.
5 ID_SENDEN_LEN
Hier wird die Bitzahl des Sende-Identifier eingetragen.
    			11 = 11 Bit Identifier
			29 = 29 Bit Identifier
6 ID_LESEN
Lese Identifier: Gibt den Identifier an fuer das Objekt,
    			auf dem die Antwort des SG erwartet wird.
			Soll keine Antwort vom SG gelesen werden, so ist hier
			nichts einzutragen.
7 ID_LESEN_LEN
Hier wird die Bitzahl des Lese-Identifiers eingetragen.
    			11 = 11 Bit Identifier
			29 = 29 Bit Identifier
8 MODUS_STD
Gibt an, wie die Botschaft behandelt werden soll.   
    	C:		Die Strings in DATEN werden so lange aneinander gehaengt
			bis hier ein Wert != C eingetragen wird.
	D:		Der angegebene Identifier wird geloescht.
	E:		Echoboard-Funktion:
			Das als Lesebotschaft eingestellte Objekt loest nach Empfang 
			einen Interrupt auf der SKM aus, welcher das Senden des als 
			Sendebotschaft eingestellten Objektes veranlasst. Das Senden 
			geschieht unmittelbar nach Empfang.
			Es muß hier als Sendebotschaft und Lesebotschaft eingestellt
			werden, sonst geschieht Unsinn.			
	L:		Lese- und Steuerfunktion: Ist in den Parametern ID_SENDEN
			und ID_SENDEN_LEN eine Botschaft spezifiziert, so wird 
			dieses Frame an das SG gesendet.
			Es wird eine Botschaft (spez. unter ID_LESEN) zurueck-
			erwartet.
			Soll nur eine Botschaft vom SG gelesen werden, (z.B. eine
			vom SG zyklisch gesendete Botschaft) so bleiben ID_SENDEN
			und ID_SENDEN_LEN leer.
	S:		Es wird eine Botschaft zum SG mittels Dataframe gesendet.
			Es wird keine Antwort erwartet.
	R:		Es wird eine Botschaft mittels Remote-Frame gelesen.
			Der Tester(SKM) sendet eine als Remote-Frame gekenn-
			zeichnete Botschaft an das SG. Die Antwort wird in diesem
			Objekt erwartet.
			ID_LESEN, ID_LESEN_LEN und DATEN werden hier nicht 
			beruecksichtigt.
			Die resultierende Botschaft wird zurueckgegeben
			(noch nicht implementiert).
	INIT:		Einstellen (Initialisieren) eines Lese-Identifiers.
			Es wird ein Identifier der als ID_LESEN angegeben
			wird dem CAN-Baustein mitgeteilt. Der Host wartet jedoch
			nicht bis die SKM eine Antwort liefert, sondern faehrt 
			im Programm fort.
			Die Antwort kann mit dem Modul L in einem spaeteren Schritt
			abgeholt werden.
9 SG_DATEN
	Hier werden die Daten, die zum SG gesendet werden sollen
    			(ID_SENDEN), eingetragen.
10 PERIODE_SEND
Gibt an, ob ein Sendeobjekt einmal oder zyklisch gesendet
   			werden soll.
			0 = einmal senden
			n = Zeitintervall in ms
			-1 = Zyklisches Senden beenden
			   Diese Angaben beziehen sich auf ID_SENDEN
11 TIMEOUT_SKM
Wird eine Anforderung innerhalb dieser Zeit nicht beant-
   			wortet, so wird ein Fehler generiert.
12 FEHLERFLAG
	Wird gesetzt bei aufgetretenem Fehler
13 ERGEBNIS
	Pointer auf den Antwortstring der PSS/SKM