CCS Modul   S_PFK2
 
   $Id: s_pfk2.C,v 1.12 2005/12/02 15:08:41 krf3rt Exp $
   ---------------------------------------------------------------------
   Kurzbeschreibung: 	Routine zur Ermittlung der Prueffortschrittskennung
   ---------------------------------------------------------------------
   Projekt:		CCS 
   Sourcefile:		s_pfk2.C 
   Autor:		RtW2/TEF72-Keppler (17.03.2003)
   Zielsystem:		HP9000/V743 (HP-RT 3.01), /7/C/D (HP-UX 10.20),Linux
   Sprache:		C++
   ---------------------------------------------------------------------
   Prototype:
   MPI Schnittstelle
   void s_pfk2(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 Erzeugung der Daten für die Prüfvortschrittskennung.
   Siehe hierzu auch im Modul s_pfk. 
   Dieses Modul arbeitet wie s_pfk, jedoch kann im Konfigfile pfk_konvert2.cnf
   Produktabhängig die Beziehung zwischen dem Prueftyp und dem Standtyp definiert
   werden. Außerdem können 16 Prüftore definiert werden und die Reihenfolge der 
   Bits gehorcht der Reihenfolge wie die Prüftore in pfk_konvert2.cnf definiert 
   sind. 
   
   Der Standtyp wird im shm_init_<ccsxxxx>_...cnf festgelegt.
   Der Prueftyp ist der Typ der Pruefliste. z.B. GASU/11/12345678980 -> Prueftyp=SU
   
   Die Reihenfolge der Abzuarbeitenden Pruefungen wird im Modul s_pfkconfig2 
   festgelegt. Hier ist der Prueftyp in der Reihenfolge einzutragen, in der die 
   Pruefungen erfolgen sollen.
   
   Beschreibung der Moduluebergabeparameter:
1 PRUEFSCHRITT
   	GAUDI Pruefschritt
   ------------------------------
2 POSITION
   	PAV- Position
   ------------------------------
3 MODUS
	
	      START	Wird eingetragen wenn das Modul am Anfang des Pruef-
			programmes aufgerufen wird.
			Es werden die unten beschriebenen Zaehler hochgezaehlt
			und die entsprechenden Aktionen durchgefuehrt.
	      STOP	Wird eingetragen wenn das Modul am Ende des Pruef-
			programmes aufgerufen wird.
			Es werden die unten beschriebenen Aktionen ausgefuehrt
4 PFKBYTE_IN1
 Eingabe des aus dem SG ausgelesenen PFK-Bytes 1   (PFK-Byte)
5 PFKBYTE_IN2
 Eingabe des aus dem SG ausgelesenen PFK-Bytes 2   (PFK-Byte)
6 PFKBYTE_IN3
 Eingabe des aus dem SG ausgelesenen PFK-Bytes 3   (Zaehler)
7 PFKBYTE_IN4
 Eingabe des aus dem SG ausgelesenen PFK-Bytes 4   (Zaehler)
8 PFKBYTE_IN5
 Eingabe des aus dem SG ausgelesenen PFK-Bytes 5   (Zaehler)
9 PFKBYTE_IN6
 Eingabe des aus dem SG ausgelesenen PFK-Bytes 6   (Zaehler)
10 PFKBYTE_IN7
 Eingabe des aus dem SG ausgelesenen PFK-Bytes 7  (Zaehler)
11 PFKBYTE_IN8
 Eingabe des aus dem SG ausgelesenen PFK-Bytes 8  (Zaehler)
12 PFKBYTE_IN9
 Eingabe des aus dem SG ausgelesenen PFK-Bytes 9  (Zaehler)
13 PFKBYTE_IN10
 Eingabe des aus dem SG ausgelesenen PFK-Bytes 10(Zaehler)
   
       Bemerkung: Das Eingabeformat ist CCS-ueblich in INT (zur Basis 10)	
    
    Modulrueckgabeparameter
14 PFKBYTE_OUT1
 Rueckgabe des errechneten PFK-Bytes 1	(PFK-Byte)
15 PFKBYTE_OUT2
 Rueckgabe des errechneten PFK-Bytes 2	(PFK-Byte)
16 PFKBYTE_OUT3
 Rueckgabe des errechneten PFK-Bytes 3	(Zaehler)
17 PFKBYTE_OUT4
 Rueckgabe des errechneten PFK-Bytes 4	(Zaehler)
18 PFKBYTE_OUT5
 Rueckgabe des errechneten PFK-Bytes 5	(Zaehler)
19 PFKBYTE_OUT6
 Rueckgabe des errechneten PFK-Bytes 6	(Zaehler)
20 PFKBYTE_OUT7
 Rueckgabe des errechneten PFK-Bytes 7	(Zaehler)
21 PFKBYTE_OUT8
 Rueckgabe des errechneten PFK-Bytes 8	(Zaehler)
22 PFKBYTE_OUT9
 Rueckgabe des errechneten PFK-Bytes 9	(Zaehler)
23 PFKBYTE_OUT10
 Rueckgabe des errechneten PFK-Bytes 10	(Zaehler)
  
      Bemerkung: Das Rueckgabeformat ist ein String mit den Byte als 
		 Hexwerte (z.B. F8) immer 2 Zeichen.
24 FEHLERFLAG
   Wird != 0 gesetzt wenn im Modul ein Fehler aufgetreten ist.
25 ERGEBNIS
    Rueckgabe eines Ergebnisstrings (OK- oder Fehlermelung)
   
---------------------------------------------------------------------------------
------------- Beschreibung von Byte 1 und Byte 2. -------------
Es sind also 16 Prüftypen (Prüftore) möglich. 

Die Reihenfolge der Prüftypen unten ist nur ein Beispiel von Byte 1. Die Reihenfolge ergibt sich aus 
der Reihenfolge im Konfigurationsfile pfk_konvert2.cnf fuer das jeweilige Produkt.                                                                                                                      
                                                                                                                        
PFK-Definition		Bit	7 6 5 4 3 2 1 0
ICT			IC	1 1 1 1 1 1 1 0
Flashen			PF	1 1 1 1 1 1 0 1
Funktionspruefung	AB	1 1 1 1 1 0 1 1 						      
TT		        TT      1 1 1 1 0 1 1 1
HT			HT	1 1 1 0 1 1 1 1
EP  nach IRI		EP	1 1 0 1 1 1 1 1
Reparaturplatzflag	Rp	1 0 1 1 1 1 1 1
Run-in			IR	0 1 1 1 1 1 1 1
-------- Reihenfolge der zugehörigen Prueftorzaehler. ---------------
Die Prueftorzaehler zu obigem Beispiel der PFK-Bits ist. 
Zaehler zu IC = Lownibbel von PFKBYTE_OUT3 bzw. PFKBYTE_IN3
Zaehler zu PF = Highnibble von PFKBYTE_OUT3 bzw. PFKBYTE_IN3
etc.
----------------------------------------------------------------------------------
Umsetzung  fuer ACC

siehe gesonderte Doku im Intranet. 

Beschreibung:			
PFK-Modul			
Das PFK-Modul verwaltet die fuer SG2000  definierten 5 PFK-Bytes . Im ersten Byte sind in den einzelnen Bits die durchlaufenen			
Prueftore abgebildet. Die folgenden 4 Bytes sind jeweils unterteilt in insgesamt 8 Halbbytes. In diesen Halbbytes werden Zähler 			
dargestellt (s. o.).  Je nach Betriebszustand  werden beim Durchlaufen des Moduls ein Bit im PFK-Byte und  1 Zahler geändert. 			
Das Modul enthält ausschließlich die Aufbereitung der PFK-Bytes. Die Kommunikation  ( PFK lesen und schreiben) ist 
prueflingsindividuell und wird vor und nach dem Modul mit bestehenden Kommunikationsmodulen realisiert.

Konfigurationsmodul
Im Konfigurationsmodul werden die Prueftore, die das Erzeugnis zu durchlaufen hat definiert und den PFK-Bits zugeordnet.

Stichproben:
        Es wird von einer Stichprobenprüfung ausgegangen, wenn Standtyp != Prueftyp ist. Dann wird der
        Prueftorzaehler incrementiert. Es wird allerdings nicht die Vorgeschichte überprüft.
        Die Stichproben, die vorkommen koennen muessen im s_pfkconfig eingetragen sein.

Implementierung im Pruefprogramm:
das Konfigurationsmodul und das PFK-Modul im Modus "Start"  wird in der Pruefliste mit der
erforderlichen Kommunikation am Listen-Anfang aufgerufen.
Am Ende der Pruefliste wird das PFK-Modul  mit den notwendigen Kommunikationsmodulen im Modus Stop aufgerufen
Um keine Informationen zu verlieren, ist sowohl  bei "Start" als auch bei "Stop" ein Beschreiben des EEProms mit
PFK-Informationen angebracht