bmw-advanced-tools/app/EC-APPS/INPA/SGDAT/ms43_sp2.ips
2021-09-18 17:45:57 +02:00

385 lines
13 KiB
Plaintext
Executable File

//**********************************************************************
//*
//* Spezielle Version zum Auslesen von Ueberdrehzahl, Fusshebelfehlbedienung und Momenteneingriffen
//*
//* Sourcedatei MS430.SRC
//*
//**********************************************************************
//* Zeiler / EA-33
//**********************************************************************
//* History
//**********************************************************************
#pragma winedit
#include "..\sgdat\inpa.h"
// Umrechnungsfaktoren deutsch / englisch
// Grad Celsius -> Fahrenheit
// km -> miles
// Liter -> Gallon US
real m_c = 1.0;
real a_c = 0.0;
real m_km = 1.0;
real m_l = 1.0;
// Version, Verantwortung, Steuergerät
string titel ="MS 43.0"; // Titel Nacharbeitsprogramm
string version="1.00"; // Version Nacharbeitsprogramm
string origin ="BMW TI-433 Schiefer"; // Verantwortung Nacharbeitsprogramm
string sgbd ="ms43_sp2"; // Steuergerät spezielle SGBD
string gruppe ="D_0012"; // Gruppendatei
string sgbd_ecu; // für Info
string sgbd_origin; // für Info
string sgbd_revision; // für Info
string sgbd_sprache; // für Info
string sgbd_comment; // für Info
string text_var; // allgemeine Variable
real zahlen_var; // allgemeine Variable
int ganz_zahl; // allgemeine Variable
bool logik_var; // allgemeine Variable
string job_state; // JOB_STATUS Variable
int input_state; // Eingabestatus
int input_ok=0; // Eingabe mit OK beendet
int val1; // Variable 1
int val2; // Variable 2
string high_low_anz; // Speicher lesen
string adresse="0x0000"; // Speicher lesen
int anzahl=16; // Speicher lesen
int seg; // Speicher lesen
int high; // Speicher lesen
int mid; // Speicher lesen
int low; // Speicher lesen
int varInteger; // Hilfsvariable
string varText; // allgemeine Variable
string varText2; // allgemeine Variable
real varReal; // allgemeine Variable
bool varBool; // allgemeine Variable
string varJobState; // JOB_STATUS Variable
int la; //
// ****************************************************************************
// *** U S E R - Funktionen ***
// ****************************************************************************
// Ausgabe eines Ergebnisses des 1. Satzes als Text mit Job-Status-Ueberpruefung
ergebnisTextAusgabe(in: string ergebnis,in: int y,in: int x,
in: int textgroesse, in: int textattr)
{
string tmpText;
INPAapiResultText(tmpText,ergebnis,1,"");
ftextout(tmpText,y,x,textgroesse,textattr);
}
// Ausgabe eines Ergebnisses als Digitalwert des 1. Satzes mit Job-Status-Ueberpruefung
ergebnisDigitalAusgabe(in: string ergebnis,in: int y,in: int x,
in: string trueText,in: string falseText)
{
bool tmpBool;
INPAapiResultDigital(tmpBool,ergebnis,1);
digitalout(tmpBool,y,x,trueText,falseText);
}
// Ausgabe eines Ergebnisses als Analogwert des 1. Satzes mit Job-Status-Ueberpruefung
ergebnisAnalogAusgabe(in: string ergebnis,in: int y,in: int x,
in: real min,in: real max,in: real minGueltig,in: real maxGueltig)
{
real tmpReal;
INPAapiResultAnalog(tmpReal,ergebnis,1);
analogout(tmpReal,y,x,min,max,minGueltig,maxGueltig,"4.2");
}
// Ausgabe eines umzurechnenden Ergebnisses als Analogwert des 1. Satzes mit
// Job-Status-Ueberpruefung (Grenzen werden ebenfalls umgerechnet=
ergebnisUmrechnungAnalogAusgabe(in: string ergebnis,in: real faktor,in: real summe,
in: int y,in: int x,
in: real min,in: real max,in: real minGueltig,in: real maxGueltig)
{
real tmpReal;
INPAapiResultAnalog(tmpReal,ergebnis,1);
analogout(tmpReal*faktor+summe,y,x,
min*faktor+summe,max*faktor+summe,
minGueltig*faktor+summe,maxGueltig*faktor+summe,
"4.2");
}
// Ansteuerung
// job = Job fuer Ansteuerung
// info = Auszugebender Text (ohne "angesteuert")
ansteuerung(in: string job,in: string info)
{
userboxclose(0); // bereits aktive User-Box schliessen
viewclose();
// Ansteuern
// INPAapiJob(sgbd,job,"","");
// INPAapiCheckJobStatus("OKAY");
// Auswertung
// userboxopen(0,1,35,1,50,
// " Steuern",
// " "+info+" angesteuert");
// sicherheitshalber neu starten
// start();
}
// ****************************************************
// *** M e n ü a u f b a u ***
// ****************************************************
// **************************
// *** Hauptmenü ***
// **************************
MENU m_main()
{
INIT {
setmenutitle("Hauptmenü");
}
ITEM( 9 ,"Druck") {
printscreen();
}
ITEM( 10 ,"Zurück") {
blankscreen();
userboxclose(0);
setscreen( s_main ,TRUE);
setmenu( m_main );
}
ITEM( 1 ,"Überdrehzahl") {
setscreen(s_ueberdrehzahl,TRUE);
}
ITEM( 2 ,"Fusshebel") {
setscreen(s_fusshebel,TRUE);
}
ITEM( 3 ,"F2 löschen") {
userboxclose(0);
viewclose();
INPAapiJob(sgbd,"FUSSHEBELFEHLBEDIENUNG_LOESCHEN","","");
INPAapiCheckJobStatus("OKAY");
userboxopen(0,8,35,5,50,"Eintraege Fusshebelfehlbetaetigung loeschen","");
userboxftextout(0,"Die Einträge Fusshebelfehlbetätigung wurden gelöscht!",1,3,0,0);
}
ITEM( 4 ,"Momente") {
setscreen(s_moment,TRUE);
}
ITEM( 5 ,"F4 löschen") {
userboxclose(0);
viewclose();
INPAapiJob(sgbd,"MOMENTEN_EINGRIFF_LOESCHEN","","");
INPAapiCheckJobStatus("OKAY");
userboxopen(0,8,35,5,50,"Eintraege Momentenreduzierung loeschen","");
userboxftextout(0,"Die Einträge Momentenreduzierung wurden gelöscht!",1,3,0,0);
}
ITEM( 20 ,"Exit") {
userboxclose(0);
exit();
}
}
// ****************************************************************************
// *** S c r e e n a u f b a u ***
// ****************************************************************************
// **************************
// *** Hauptscreen ***
// **************************
SCREEN s_main()
{
ftextout("Überdrehzahl / Fusshebelfehlbedienung / Momentenreduzierungseingriffe",1,0,0,1);
ftextout("",3,0,0,0);
INPAapiJob(sgbd,"IDENT","","");
INPAapiCheckJobStatus("OKAY");
LINE("","")
{
ftextout("< F1> Überdrehzahl" , 4,5,0,1);
ftextout("< F2> Fusshebelfehlbedienung" , 6,5,0,1);
ftextout("< F3> Fusshebelfehlbedienung löschen" , 8,5,0,1);
ftextout("< F4> Momentenreduzierungseingriffe" , 10,5,0,1);
ftextout("< F5> Momentenreduzierungseingriffe löschen" , 12,5,0,1);
ftextout("<Shift> + < F10> Exit" ,22,45,0,1);
}
}
// *************************
// *** Ueberdrehzahl **
// *************************
SCREEN s_ueberdrehzahl()
{
ftextout("Überdrehzahl M54",1,0,1,0);
ftextout("",3,0,0,0);
LINE("-max Überdrehzahl auslesen-","")
{
// maximale Ueberdrehzahl auslesen
text(1,0,"max Überdrehzahl");
text(2,0,"[1/min]");
INPAapiJob(sgbd,"STATUS_MAX_UEBERDREHZAHL","","");
INPAapiCheckJobStatus("OKAY");
ergebnisAnalogAusgabe("STAT_MAX_UEBERDREHZAHL_WERT", 3,0, 0.0, 10240.0, 0.0, 10240.0);
}
LINE("-Betriebsstundenzaehler auslesen-","")
{
// Betriebsstundenzaehler auslesen
text(1,0,"Betriebsstundenzähler");
text(2,0,"[min]");
INPAapiJob(sgbd,"STATUS_BETRIEB_UEBERDREHZAHL","","");
INPAapiCheckJobStatus("OKAY");
ergebnisAnalogAusgabe("STAT_BETRIEB_UEBERDREHZAHL_WERT", 3,0, 0.0, 393210, 0.0, 393210);
}
LINE("-Zaehler Überdrehzahl auslesen-","")
{
// Zaehler Ueberdrehzahl auslesen
text(1,0,"Zähler Überdrehzahl");
text(2,0,"[-]");
INPAapiJob(sgbd,"STATUS_ZAEHLER_UEBERDREHZAHL","","");
INPAapiCheckJobStatus("OKAY");
ergebnisAnalogAusgabe("STAT_ZAEHLER_UEBERDREHZAHL_WERT", 3,0, 0.0, 255, 0.0, 255);
}
}
// *****************************
// *** Fusshebelfehlbedienung **
// *****************************
SCREEN s_fusshebel()
{
ftextout("Fusshebelfehlbedienung",1,0,1,0);
ftextout("",3,0,0,0);
// Werte auslesen
LINE("-Fusshebelfehlbedienung auslesen-","")
{
// Datenbyte 1 CTR_BLS_PVS
text(1,0,"CTR_BLS_PVS");
text(2,0,"[-]");
INPAapiJob(sgbd,"STATUS_FUSSHEBELFEHLBETAETIGUNG","","");
INPAapiCheckJobStatus("OKAY");
ergebnisAnalogAusgabe("STAT_FUSSHEBELFEHLBETAETIGUNG_WERT",3,0, 0.0, 255, 0.0, 255);
// KM-Eintrag bei Fusshebelfehlbedienung
text(1,40,"KM-Eintrag");
text(2,40,"[km]");
ergebnisAnalogAusgabe("STAT_FUSSHEBELFEHLBETAETIGUNG_KM_MAX_WERT",3,40, 0.0, 65535, 0.0, 65535);
}
}
// *****************************
// *** Momentenreduzierung **
// *****************************
SCREEN s_moment()
{
ftextout("Momentenreduzierungeingriffe",1,0,1,0);
ftextout("",3,0,0,0);
// Werte auslesen
LINE("-Schleppzeigergrößen Momentenreduzierung auslesen-","")
{
// maximale Höhe des Eingriffs
text(1,0,"max Höhe des Eingriffs");
text(2,0,"[Nm]");
INPAapiJob(sgbd,"STATUS_MAX_EINGRIFF","","");
INPAapiCheckJobStatus("OKAY");
ergebnisAnalogAusgabe("STAT_MAX_EINGRIFF_WERT",3,0, -1024.0, 1023.0, -1024.0, 1023.0);
}
LINE("-Schleppzeigergrößen Momentenreduzierung auslesen-","")
{
// maximaler Zeiteingriff
text(1,0,"max Zeiteingriff");
text(2,0,"[s]");
INPAapiJob(sgbd,"STATUS_MAX_ZEITEINGRIFF","","");
INPAapiCheckJobStatus("OKAY");
ergebnisAnalogAusgabe("STAT_MAX_ZEITEINGRIFF_WERT",3,0, 0.0, 655.35, 0.0, 655.35);
}
LINE("-Schleppzeigergrößen Momentenreduzierung auslesen-","")
{
// Anzahl der Eingriffe
text(1,0,"Anzahl der Eingriffe");
text(2,0,"[-]");
INPAapiJob(sgbd,"STATUS_ANZAHL_EINGRIFFE","","");
INPAapiCheckJobStatus("OKAY");
ergebnisAnalogAusgabe("STAT_ANZAHL_EINGRIFFE_WERT",3,0, 0.0, 65535, 0.0, 65535);
}
}
// **************************
// *** inpainit, inpaexit ***
// **************************
inpainit()
{
string sgbd_version; // für Versionskontrolle
string inpa_version; // für Versionskontrolle
string inpa_sprache="deutsch"; // für Sprachvariante
string variante="ms43_sp2"; // für Variantenkontrolle
bool fehlerflag; // Fehlerflag
string err_text; // Fehlertext
settitle(titel+" Version "+version);
INPAapiInit();
// INPAapiJob(gruppe,"INITIALISIERUNG","","");
// INP1apiResultText(fehlerflag,variante,"VARIANTE",0,"");
/* if (fehlerflag == FALSE)
{
INP1apiErrorText(err_text);
messagebox("Variantenkontrolle",
err_text+". "+
"Das Programm wird abgebrochen!");
// exit();
}*/
if (variante != sgbd)
{
messagebox("Variantenkontrolle",
"Gesuchtes Steuergerät: '"+sgbd+"' nicht gefunden. "+
"Gefundenes Steuergerät: '"+variante+"'. "+
"Das Programm wird abgebrochen!");
// exit();
}
INPAapiJob(sgbd,"INFO","","");
INPAapiResultText(sgbd_ecu,"ECU",1,"");
INPAapiResultText(sgbd_revision,"REVISION",1,"");
INPAapiResultText(sgbd_origin,"ORIGIN",1,"");
INPAapiResultText(sgbd_comment,"COMMENT",1,"");
INPAapiResultText(sgbd_sprache,"SPRACHE",1,"");
// midstr(inpa_version,version,0,2);
// midstr(sgbd_version,sgbd_revision,0,2);
// if (inpa_version != sgbd_version)
// {
// messagebox("Versionskontrolle",
// "Nicht zusammenpassende Versionen. "+
// "Fehlfunktion ist möglich!");
// }
/*if (inpa_sprache != sgbd_sprache)
{
messagebox("Sprachvariantenkontrolle",
"Nicht zusammenpassende Sprachvariante. "+
"Fehlfunktion ist möglich!");
}*/
setmenu(m_main);
setscreen(s_main,TRUE);
}
inpaexit()
{
INPAapiJob(sgbd,"DIAGNOSE_ENDE","","");
INPAapiCheckJobStatus("OKAY");
INPAapiEnd();
}