|
CCS Modul M_KONSTANTER |
--------------------------------------------------------------------- Funktionsbeschreibung: Anzahl der Ûbergabeparameter und Index der expandierten PrÏfliste im Platz READ_HPIB_STRING ablegen. Der Prozess KONSTANTER_HPIB 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 ------------------------------3 KON_UNIT
Name des GerÌtes laut PAM-Beschreibungsfile (KON_U_1, KON_U_2, ...) ------------------------------4 KON_FUNKTION
INIT / READ / RESET ------------------------------5 KON_MODE
CURRENT / VOLTAGE (nur bei KON_FUNKTION = 'READ') ------------------------------6 KON_HOLD
z.Z. inaktiv ------------------------------7 KON_FOLD
z.Z. inaktiv ------------------------------8 KON_OVP
Zur Einstellung der Overvoltage Protection des Konstanters.
Achtung!: Es erfolgt aus Gründen der Prüfzeit keine Abfrage an den Konstanter,
ob die OVP zugeschlagen hat! Der Konstanter schaltet bei Erkennung der OVP
auf 0.0V und lässt sich nicht mehr steuern! Der Konstanter bekommt keinen
programmatischen Reset! Erst wenn der Konstanter einen handischen Reset bekommt
( debterm F4-Abbruch oder Switch OFF/ON) lässt er sich wieder programmieren.
------------------------------9 KON_TIMEOUTTimeout zum Konstanter-Auslesen (z.Z. inaktiv) ------------------------------10 R_MESSWERT
Return-Wert vom Konstanter (in &Variable) [nur bei 'READ']
------------------------------
---------------------------------------------------------------------
<\userdoc>
-- pragmas -----------------------------------------------------------
#pragma COPYRIGHT "Robert Bosch Elektronik GmbH Salzgitter, SaW/TEF72"
#pragma VERSIONID "$Id: m_konstanter.C,v 1.9 2005/10/25 09:33:17 pij3sa Exp $"
-- defines -----------------------------------------------------------
#define HEADER "$Id: m_konstanter.C,v 1.9 2005/10/25 09:33:17 pij3sa Exp $"
#define EXTERN extern Bei allen Subroutinen
Whatstring
#ifndef VERSION
#define VERSION "m_konstanter.C: Version ist nicht definiert"
#endif
#ifndef VERSIONNR
#define VERSIONNR "x.x"
#endif
#define PRUEFSCHRITT 0
#define POSITION 1
#define KON_UNIT 2
#define KON_FUNKTION 3
#define KON_MODE 4
#define KON_HOLD 5
#define KON_FOLD 6
#define KON_OVP 7
#define KON_TIMEOUT 8
#define R_MESSWERT 9
#define UNIT_NAME_VOLTAGE "KON_U_"
#define ANZAHL_KON_STR_DATEN 5
#define ANZAHL_KON_INT_DATEN 2
#define STRING_VERWALTUNG 2
#define INT_VERWALTUNG 3
-- includes ----------------------------------------------------------
#include <string.h>
#include "shm_syscom.H"
#include "ccl_defines.H"
#include "libccs.H" // Zentrale Lib
#include "libtestmodul_pool.H" // Modul Lib
#include "unit_nummern.H" // Modul Lib
-- external functions / variables ------------------------------------
-- global variables (nur im "main" erlaubt) -------------------------
static char ident[] = "@(#)$Header: /rweglobal/cvs/testsystem/ccs/6_testmodul_pool/konstanter/hpib/module_qt/src/m_konstanter.C,v 1.9 2005/10/25 09:33:17 pij3sa Exp $";
-Begin---------------------------------------------------------------
Aufruf des Prozesses KONSTANTER_HPIB
---------------------------------------------------------------------
int m_konstanter (shm_stringpointer *zeilen_wert
,long index1
,long anzahl)
{
int err1; // Fehler beim Starten des KONSTANTER_HPIB
long i1; // Laufvariable fÏr ParameterÏbergabe
long int schritt; // Schritt ausfÏhren
long unit_index; // Index Zeiger auf Unit
int Call_Kon; // Starten des KONSTANTER_HPIB-Prozesses
char ch80[80]; // Sende-String
unsigned int len1; // Sende-Stringlaenge
unsigned int len2; // Empf-Stringlaenge
long int hispnr; // Programmnummer Zielprogramm
long int msgstat; // Return Status msg_send_wait()
//------------------------------------------------------------------
// Schrittbetriebshandler
//------------------------------------------------------------------
schritt = schrittbetrieb (zeilen_wert, index1);
if (schritt != 1) return 0;
if (strstr((const char*)(*zeilen_wert->ptr[index1+KON_UNIT]),UNIT_NAME_VOLTAGE) == 0)
{
// error_message (ERR_ERROR,HEADER,__LINE__,
// "Falscher Kon-Unit-Name (muss mit KON_U_ beginnen)!");
error_message (ERR_ERROR,HEADER,__LINE__,
"Wrong Kon-unit name (must begin with KON_U_)!");
return 0;
}
//------------------------------------------------------------------
// Anzahl der Ûbergabeparameter und Index der expandierten
// PrÏfliste im Platz KON_UNIT ablegen. Der Prozess
// KONSTANTER_HPIB greift spÌter auf diese beiden Parameter zu
// und kopiert die Ûbergabeparameter in die localen Arrays
//------------------------------------------------------------------
Call_Kon = FALSE;
unit_index = suche_unit_index (*zeilen_wert->ptr[index1+KON_UNIT]);
if ((*zeilen_wert->ptr[index1+KON_FUNKTION]) == "INIT")
{
i1 = get_platzmemory (STRING_VERWALTUNG,
unit_index,
ANZAHL_KON_STR_DATEN);
Ssp_pp_verwaltung->string_f[i1+0] = *zeilen_wert->ptr[index1+KON_MODE ];
Ssp_pp_verwaltung->string_f[i1+1] = *zeilen_wert->ptr[index1+KON_HOLD ];
Ssp_pp_verwaltung->string_f[i1+2] = *zeilen_wert->ptr[index1+KON_FOLD ];
Ssp_pp_verwaltung->string_f[i1+3] = *zeilen_wert->ptr[index1+KON_OVP ];
Ssp_pp_verwaltung->string_f[i1+4] = *zeilen_wert->ptr[index1+KON_TIMEOUT];
strcpy(ch80,""); // "" = EINSTELLEN
Call_Kon = TRUE;
}
else if ((*zeilen_wert->ptr[index1+KON_FUNKTION]) == "READ")
{
i1 = get_platzmemory (INT_VERWALTUNG,
unit_index,
ANZAHL_KON_INT_DATEN);
Ssp_pp_verwaltung->int_f[i1+0] = anzahl; // Anzahl und Index
Ssp_pp_verwaltung->int_f[i1+1] = index1; // fÏr Prozess KONSTANTER_HPIB
//------------------------------------------------------------------
// Damit der Prozess KONSTANTER_HPIB den unit_index findet, wird der
// unit_index unter 'READ_HPIB_STRING' abgelegt.
//------------------------------------------------------------------
i1 = get_platzmemory (INT_VERWALTUNG, READ_HPIB_STRING, 1);
Ssp_pp_verwaltung->int_f[i1+0] = unit_index; // Anzahl und Index
strcpy(ch80,"HK_MODE=MEASURE;");
Call_Kon = TRUE;
}
else if ((*zeilen_wert->ptr[index1+KON_FUNKTION]) == "RESET")
{
i1 = get_platzmemory (INT_VERWALTUNG,
unit_index,
ANZAHL_KON_INT_DATEN);
Ssp_pp_verwaltung->int_f[i1+0] = anzahl; // Anzahl und Index
Ssp_pp_verwaltung->int_f[i1+1] = index1; // fÏr Prozess KONSTANTER_HPIB
//------------------------------------------------------------------
// Damit der Prozess KONSTANTER_HPIB den unit_index findet, wird der
// unit_index unter 'READ_HPIB_STRING' abgelegt.
//------------------------------------------------------------------
i1 = get_platzmemory (INT_VERWALTUNG, READ_HPIB_STRING, 1);
Ssp_pp_verwaltung->int_f[i1+0] = unit_index; // Anzahl und Index
strcpy(ch80,"HK_MODE=MOD_RESET;"); // MOD_RESET = Reset vom Modul
Call_Kon = TRUE;
}
//------------------------------------------------------------------
// Starten des Prozesses KONSTANTER_HPIB.
//------------------------------------------------------------------
if (Call_Kon)
{
len1 = (unsigned int) strlen(ch80) + 1; // Laenge + \0
err1 = 0;
err1 = msg_send_wait (HPIB_KONSTANTER,
ch80,len1,-1,80,
ch80,&len2,&msgstat,&hispnr);
if (err1 != 0) // Error?
{
// error_message (ERR_ERROR,HEADER,__LINE__,
// "Error bei 'konstanter_hpib'-Aufruf: %d!",err1);
error_message (ERR_ERROR,HEADER,__LINE__,
"Error calling 'konstanter_hpib': %d!",err1);
}
if (msgstat & MSG_R_TIMEOUT) // Timeout --> Fehler
{
// error_message (ERR_ERROR,HEADER,__LINE__,
// "'konstanter_hpib'-Aufruf hatte timeout!");
error_message (ERR_ERROR,HEADER,__LINE__,
"'konstanter_hpib' call timed out!");
}
}
return 0;
}
-End of file---------------------------------------------------------
Historie: