00001 #ifndef LOADER_INCLUDED 00002 #define LOADER_INCLUDED 00003 00004 00005 #include <set> 00006 00007 #include "odem.h" 00008 00009 #include "Observer.h" 00010 #include "Automation.h" 00011 #include "ReturnBufferStore.h" 00012 #include "SimringReport.h" 00013 00014 class Loader : public Discrete { // Beladung wartender Wagen mit "erzeugten" Paletten 00015 // bei ungerader Anzahl von Paletten eines Auftrages 00016 // wird Wagen mit "leerer" Palette beladen 00017 static std::set<int> ignoreSet; 00018 static bool ignore(int palNr); // palNr wird ignoriert! 00019 void bufferReport(SetOfRingStack *p); 00020 public: 00021 Buff_head *inp; // Sequenz wartender Palettenbelegungen 00022 static bool stopped; // Unterbrechungslabel 00023 double restTime; // die sich bei einer Unterbrechnung (z.B. Wochende) 00024 // ergebene Restzeit zur Komplettierung der bereits 00025 // erfolgten Beladung eines Wagens 00026 static Condq *interruptionQ; // Wartet evtl. auf Schichtbeginn 00027 00028 Observer *observe; 00029 Automation *automat; 00030 Count *gapCounter; // Zählungen eingefügter Produktionslücken 00031 Count *ignoredRings; // Zählungen der Ringe ausgesonderter Paletten 00032 Sum *ignoredWBHtime; // Summe der Wärmebehandlungszeit ausgesonderter Paletten 00033 00034 00035 SimringReport *report; 00036 00037 00038 //void returnRestTime(double t) {restTime= t;} 00039 // bei Unterbrechung zur Rückgabe der Restzeit 00040 00041 // Untebrechungsbehandlung 00042 void interrupt (int cause); 00043 void goAhead (int cause); 00044 static bool notStopped(); 00045 00046 virtual int main(); 00047 Loader(char *n, Buff_head *i, Observer *o, SimringReport* rep); 00048 00049 void loadPosFree(); 00050 void waitForLoadPos(); 00051 00052 bool waitLoad; 00053 }; 00054 00055 #endif 00056