|
CCS Modul E_ARB |
$Id: e_arb.C,v 1.4 2005/09/01 07:11:40 sniff Exp $ --------------------------------------------------------------------- Kurzbeschreibung: Aufruf des Prozesses ARB --------------------------------------------------------------------- Projekt: BOSCH ccs Sourcefile: e_arb.C Autor: NÏW/FVB1.5 Romeo Schneider Zielsystem: HP9000/HP743rt (HP-RT 2.11),(HP-UX 9.0x) Sprache: Ansi-C++ --------------------------------------------------------------------- Prototyp: MPI Schnittstelle void e_arb(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: Anzahl der Ûbergabeparameter und Index der expandierten PrÏfliste im Platz VXI_ARB ablegen. Der Prozess ARB greift spÌter auf diese beiden Parameter zu und kopiert die Ûbergabeparameter in die localen Arrays Beschreibung der ModulÏbergabeparameter:1 PRUEFSCHRITT
GAUDI PrÏfschritt ------------------------------2 POSITION
PAV- Position
------------------------------
...
<userdoc>
---------------------------------------------------------------------
**********************************************************************
-- pragmas -----------------------------------------------------------
**********************************************************************
#pragma COPYRIGHT "Robert Bosch GmbH Ansbach NÏW/FVB1.5"
#pragma VERSIONID "$Id: e_arb.C,v 1.4 2005/09/01 07:11:40 sniff Exp $"
**********************************************************************
-- defines -----------------------------------------------------------
**********************************************************************
#define EXTERN extern Bei allen Subroutinen
#define HEADER "$Id: e_arb.C,v 1.4 2005/09/01 07:11:40 sniff Exp $"
#define MILLISECOND(x) (1.0 * (x) / TIMER_MILLISECOND)
**********************************************************************
-- includes ----------------------------------------------------------
**********************************************************************
#include "shm_syscom.H"
#include <stdlib.h>
#include "unit_nummern.H"
#include "libccs.H" error_message
#include "ccl_defines.H"
#include "libtestmodul_pool.H"
**********************************************************************
-- external functions / variables ------------------------------------
**********************************************************************
**********************************************************************
-- global variables (nur im "main" erlaubt) -------------------------
**********************************************************************
**********************************************************************
-Begin--- Aufruf des Prozesses ARB ----------------------------------
**********************************************************************
int e_arb(shm_stringpointer *zeilen_wert
,long index1
,long anzahl)
{
**********************************************************************
-- local variables ------------------------------------------------------
**********************************************************************
char ident[] =
"@(#)e_arb.C Romeo Schneider AnW/FVS5 12.11.97 Rev.4.0";
int err1; //Fehler beim Starten des ARB
long j1; //Laufvariable fÏr ParameterÏbergabe
long int schritt; //Schritt ausfÏhren
unsigned short int nickname; // Nickname des Prozesses
unsigned short int prozess_vorhanden; //
unsigned short int prozess_disable;
unsigned short int pruefliste_init; //
char text[80]="";
long startstatus;
STRING prozessname; // Prozessname
//------------------------------------------------------------------
// Schrittbetriebshandler
//------------------------------------------------------------------
//------------------------------------------------------------------
// Anzahl der Ûbergabeparameter und Index der expandierten
// PrÏfliste im Platz ARB_UNIT ablegen. Der Prozess
// ARB greift spÌter auf diese beiden Parameter zu und
// kopiert die Ûbergabeparameter in die localen Arrays
//------------------------------------------------------------------
j1 = get_platzmemory(3,VXI_ARB,2);
Ssp_pp_verwaltung->int_f[j1+0] = anzahl; // Anzahl und Index
Ssp_pp_verwaltung->int_f[j1+1] = index1; // fÏr Prozess ARB
//IF KANAL2 THEN
//Ssp_pp_verwaltung->int_f[j1+2] = anzahl; // Anzahl und Index
//Ssp_pp_verwaltung->int_f[j1+3] = index1; // fÏr Prozess ARB
//------------------------------------------------------------------
// Eintragen das der Prozess vorhanden ist.
//------------------------------------------------------------------
if(strcmp(Ssp_vi->job.liststate,PREINT)==0)
{
for (j1 = 0 ;j1 <Ssp_pp_verwaltung->anzahl_start_prozesse; j1++)
{
Ssp_pp_verwaltung->Startliste_E_out[j1]
.get_info(prozessname,nickname,startstatus,prozess_vorhanden,prozess_disable,pruefliste_init);
if(nickname==ARB && pruefliste_init==1)
{
Ssp_pp_verwaltung->Startliste_E_out[j1].set_prozess_vorhanden();
break;
}
}
}
schritt = schrittbetrieb(zeilen_wert,index1);
if(schritt!=1) return 0;
//------------------------------------------------------------------
// Starten des Prozesses ARB
//------------------------------------------------------------------
//DELAY ticks = timer_ticks(), ticks2;
err1=start_prozess(ARB,text);
if(err1!=0)
{
// error_message (ERR_ERROR, HEADER,__LINE__,
// "Fehler beim Starten des ARB");
error_message (ERR_ERROR, HEADER,__LINE__,
"Error starting ARB");
return -1;
}
//ticks2 = timer_ticks();
//printf("%s !!!!!!!!!!!!!!!!!!!!!Setup : %8.3f ms\n",Ssp_vi->test.pschr,
// MILLISECOND(ticks2-ticks));
return 0;
}
**********************************************************************
-End of file---------------------------------------------------------
Historie: 24.04.96 Romeo Schneider : Erstellung
08.11.96 Romeo Schneider : neue Directory Struktur.
**********************************************************************