|
CCS Modul P_CANSTD |
$Id: p_canstd.C,v 1.13 2005/12/08 08:38:26 krf3rt Exp $
---------------------------------------------------------------------
Kurzbeschreibung: CAN - Auftrag an die PSS/SKM senden
---------------------------------------------------------------------
Projekt: CCS
Sourcefile: p_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 p_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 ModulÏbergabeparameter:1 PRUEFSCHRITTGAUDI PrÏfschritt ------------------------------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 Sendeidentifier an das SG: Identifier in HEX an das
SG. Soll keine Botschaft gesendet werden, so wird
kein Wert eingetragen.5 ID_SENDEN_LENHier wird die Bitzahl des sende-Identifier eingetragen.
11 = 11 Bit Identifier
29 = 29 Bit Identifier6 ID_LESEN Leseidentifier: Gibt den Identifier an, fuer das Object
auf dem die Antwort des SG erwartet wird.
Soll keine Antwort vom SG gelesen werden, so ist hier
nichts einzutragen.7 ID_LESEN_LENHier wird die Bitzahl des lese-Identifier eingetragen.
11 = 11 Bit Identifier
29 = 29 Bit Identifier8 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 angegeben 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 veranlaßt. 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.
L_xx: Die Antwort des SG ist egal. Der Schritt wird auch gut gesetzt
wenn keine Antwort kommt. Wenn keine Antwort kommt werden die
Bytes xx als Messwerte bereitgestellt und können mit BLOCKHEX
ausgewertet werden.(z.B. xx=00..FF oder xx=1234)
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-
zeichntet Botschaft an das SG. Die Antwort wird in diesem
Objekt erwartet.
ID_LESEN, ID_LESEN_LEN und DATEN werden hier nicht
berÏcksichtigt.
Die Resultierende Botschaft wird zurueckgegeben.
(noch nicht implementiert)
Pxx Hier werden spezielle periodische Funktionen bereit gestellt. Die
Daten der periodischen Botschaft werden nach bestimmten Regeln
modifiziert. Die meisten Funktionen werden nur von der SKM unterstuetzt.
mit xx ->
00: -> keine Funktion
01: -> senden des Objekts ohne Modifikation.
02: -> Byte 1 [Zählweise 0-7] der Botschaft von 0 - F hochzählen
03: -> Byte 2 [Zählweise 0-7] zwischen 0x0 und 0x080 toggeln
04: -> Byte 6/7 [Zählweise 0-7] zwischen 0xFC und 0xFF hochzählen
05: -> Byte 5 [Zählweise 0-7] Bit4..7 zwischen 0x00 und 0x0F hochzählen,
Byte 7: Einerkomplement der Summe aus Byte 0/1/2/3/5
06: -> Byte 0 [Zählweise 0-7] in 4 Blöcken senden für Audi-VW ID 28
07: -> Byte 4 [Zählweise 0-7] Bit 0-3 von 0-F hochzählen, und oberes
Halbbyte ist Checksumme der gesamten Botschaft XOR
Verknüpfung.
08: -> Byte 0: 4 Bit Zähler im unteren Halbbyte
09: -> Wie 7 jedoch anderer Inhalt
10: -> Für Audi-VW ID 590 Checksumme XOR aus 1/2/3/4/5 in Byte 0
11: -> 1 Byte toggeln zwischen 36H und E5H
12: -> 2.Byte: 2Bit-Zähler auf den oberen beiden Bits
13: -> AFS (BMW)
Byte 0-1 Winkel
Byte 2 Alivecounter + Error zählt von 0-14
Byte 3-4 Geschwindigkeit
Byte 5 immer 0
Botschaft wird auch auf K-line ausgegeben.
14:-> Byte 1: Bytezähler 0-255
Byte 1/2/3/4 xor verknüpft und CS auf Byte 0
15:-> Byte 5: [Zählweise 0-7] Bit 4..7 zwischen 0x00 und 0x0F hochzählen
Byte 7: Einerkomplement aus Byte 5
16:-> AS-.PL2
Byte 0-1:STWA_TOP
Byte 2: Alivecounter + Error
Byte 3-4: STWA_TOP_COM enthält STWA_TOP mit diversen
Berechnungen.
Byte 5-7:?
INIT: Einstellen (Initialisieren) eines Leseidentifiers
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.
I: wie INIT.
T_ON: Trace Mode ON: Es wird auf das als ID_LESEN eingestellte Objekt getraced. Es werden
alle, nach absetzen dieses Befehls auf dem Objekt ID_LESEN, empfangenen Daten
in ein File auf der SKM geschrieben. Dieses File erhält den Filename
<ID_LESEN>_<DATEN>. In DATEN ist die Filelänge in 4 Byte einzutragen (ggf. mit
führenden Nullen).
Beispiel: ID_LESEN = 200, DATEN = 00300000 => Filenamen = 00000200_00300000
Dieses File kann mit dem Modul p_loadfile (LOADFILE1) zurückgelesen werden.
Zurückgegeben werden nur über das Traceing gelesene Daten.
T_OFF: Trace Mode OFF.
Mit diesem Befehl wird das Tracen abgeschaltet. Das Tracing wird außerdem unterbrochen,
wenn das File voll ist.9 SG_DATEN Hier werden die Daten, die zu SG gesendet werden sollen
(ID_SENDEN) eingetragen.10 PERIODE_SENDGibt an ob ein Sendeobjekt einmal oder zyklisch gesendet werden soll. 0 = einmal senden n = Zeitintervall in ms -1 = Zyklisches Senden beenden Diese Angeben beziehen sich auf ID_SENDEN11 TIMEOUT_SKM
Wird eine Anforderung innerhalb dieser Zeit nicht beant- wortet, so wird ein Fehler generiert.12 FEHLERFLAG
Wird gesetzt bei aufgetretenem Fehler13 ERGEBNIS
Pointer auf den Antwortstring der PSS/SKM