Re: fatal error, cannot create VMC Kategorie: Programmierung (von Tom - 2.07.2003 8:09) | |
Als Antwort auf fatal error, cannot create VMC von Peda - 1.07.2003 21:31
| |
Hallo Peter, kannst Du vieleicht mal deine C2P Datei posten. mfg Tom > Hallo Leute! > > Kann mir jemand helfen? > > Seit einiger Zeit probiere ich nun mein Programm, dass auf mehrere Module aufgeteilt ist zu kompilieren. > Dabei bekomme ich immer folgende Fehlermeldung: fatal error, cannot create VMC > Ein Syntax-Fehler wird mir bei keinem Modul angezeigt. > > Kannst du dir bitte meinen Programmcode kontrollieren und mir weiterhelfen? > Danke! > > Grü�e > > Peter > > > > Modul: abfrage.c2 > > //Variable für Touchpanel-Portausgabe > type var > { > byte switch; > byte wert; > } > var t[32]; // t...Touchpanelport > > //Variable zur Bargraphdefinitionn für EA KIT 320-8 > type bgraph > { > byte wert; > } > bgraph bar[255]; > > //Konstanten > const ESC = 27; > const Schalter = 2; > const Bargraph = 3; > const Menueeintrag = 4; > const TB_ein = 5; > //*********** > thread abfrag > //*********** > { > run 32; > > //Empfangsvariablendefinition > byte pos1; > byte pos2; > > hwcom.init(); > hwcom.setspeed (hwcom.SPEED_9600); > > wait hwcom.rxd(); > pos1=hwcom.get(); > > //Logikteil > > if pos1 == ESC > { > > wait hwcom.rxd(); > pos2=hwcom.get(); > > if pos2 == Schalter > { > func.Schalter(); > } > if pos2 == Bargraph > { > func.Bargraph(); > } > if pos2 == Menueeintrag > { > func.Menueeintrag(); > } > if pos2 == TB_ein > { > func.TB_ein(); > } > > > } > run digports.output; > } > > > > > > Modul: digports > > /* > > Peter Schmidthaler > Diplomarbeit: Steuergerät für Obstsammelmaschine > > Datum: 12.08.2002 > Geändert am: 22.06.2003 > > ***Mit diesem Modul werden die Eingangsports abgefragt und je nach Signaleingang > werden die Ausgangsports geschaltet.*** > > Funktionen im Modul: > -------------------- > 1. Variablendefinition > 2. Richtung der Digitalports einstellen > 3. Eingangsports einlesen > 4. Ausgabeports setzen > 5. TB-Schalter setzen > > > p(x) ... Inputvariablen > y(x) ... Outputvariablen > > > Variablenerklärung: > > Input########### > p[1] ... > p[2] ... > p[3] ... > p[4] ... > p[5] ... > p[6] ... > p[7] ... > p[8] ... > > p[9] ... > p[10] ... > p[11] ... > p[12] ... > p[13] ... > p[14] ... > p[15] ... > p[16] ... > > Output########## > y[1] ... > y[2] ... > y[3] ... > y[4] ... > y[5] ... > y[6] ... > y[7] ... > y[8] ... > > y[9] ... > y[10] ... > y[11] ... > y[12] ... > y[13] ... > y[14] ... > y[15] ... > y[16] ... > > y[17] ... > y[18] ... > y[19] ... > y[20] ... > y[21] ... > y[22] ... > y[23] ... > y[24] ... > > y[25] ... > y[26] ... > y[27] ... > y[28] ... > y[29] ... > y[30] ... > y[31] ... > y[32] ... > > Touchpanel##### > > t[1] ... > t[2] ... > t[3] ... > t[4] ... > t[5] ... > t[6] ... > t[7] ... > t[8] ... > > t[9] ... > t[10] ... > t[11] ... > t[12] ... > t[13] ... > t[14] ... > t[15] ... > t[16] ... > > t[17] ... > t[18] ... > t[19] ... > t[20] ... > t[21] ... > t[22] ... > t[23] ... > t[24] ... > > t[25] ... > t[26] ... > t[27] ... > t[28] ... > t[29] ... > t[30] ... > t[31] ... > t[32] ... > > */ > > > //Ausgaberichtung des Parallelbuses > const dirPH_out = 0; > const dirPH_in = 1; > const dirPL_out = 1; > const dirPL_in = 0; > > //Aktivierungskonstanten für Adresse und Daten > const takeadress = 12; // Adressuebernahme mittels Port P1H.4 > const takedata = 13; // Datenuebernahme mittels Port P1H.5 > > const nulladresse = 100; > int TB; > > //--------------- > thread output > //--------------- > > { > run 32; > > //+++++++++++++++++++++++++++++++++++++++++++++ > // 1. Variablendefinition > //+++++++++++++++++++++++++++++++++++++++++++++ > > int portabfrage; > int nulladresse; > > > int byteport; > int PLport[8]; > > int turn; > int schleifein; //Schleifenvariable beim Input > int schleifeout; //Schleifenvariable beim Output > > > //+++++++++++++++++++++++++++++++++++++++++++++ > // 2. Richtung der Digitalports einstellen > //+++++++++++++++++++++++++++++++++++++++++++++ > > ports.set(14, dirPH_out); //Output der P.H. Ports > ports.set(15, dirPL_out); //Output der P.L. Ports > > > //+++++++++++++++++++++++++++++++++++++++++++++ > //3. Eingangsports einlesen > //+++++++++++++++++++++++++++++++++++++++++++++ > > byteport = 0; //Adress- und Datensendeport > > for turn = 0 ... 1 > { > for schleifein = 0 ... 15 > { > ports.setb(byteport, init.p[schleifein].adresse); //Adresse der Input-Platine setzen > ports.pulse(takeadress); //Adresse in die Input-Platine übernehmen > ports.deactb(byteport); //Digitalport PL der CC2-Unit deaktivieren > > ports.set(15, dirPL_in); // Input der P.L. Ports > > init.p[schleifein].zustand[turn] = ports.get(init.p[schleifein].port); > > init.p[schleifein].wert = init.p[schleifein].zustand[0] + init.p[schleifein].zustand[1]; > > if init.p[schleifein].wert+2 > { > init.p[schleifein].wert = 255; // Wenn beide Werte high dann ist auch > // der Ausgabewert high > } > else init.p[schleifein].wert = 0; // Sonst ist der Ausgabewert low > > ports.deactb(byteport); //Digitalports der CC2-Unit deaktivieren > > > /* möglicherweise sind Pullup-Widerstände erforderlich, > da sich sonst der Pufferbaustein des Digital-Input-Moduls sich nicht > im high-impedance Zustand befindet > */ > } > > } > > //+++++++++++++++++++++++++++++++++++++++++++++ > //4. Ausgabeports setzen > //+++++++++++++++++++++++++++++++++++++++++++++ > > ports.setb(byteport, nulladresse); //Nulladresse > ports.pulse(takeadress); //Adresse in die Input-Platine übernehmen > > for schleifeout = 0 ... 15 > { > ports.setb(byteport, init.y[schleifeout].adresse); //Adresse der Output-Platine setzen > ports.pulse(takeadress); //Adresse in die Output-Platine übernehmen > ports.deactb(byteport); //Digitalport PL der CC2-Unit deaktivieren > > ports.set(15, dirPL_out); // Output der P.L. Ports > > ports.set(init.y[schleifeout].port, init.y[schleifeout].wert); > > } > ports.deactb(byteport); //Digitalport PL der CC2-Unit deativieren > > > //+++++++++++++++++++++++++++++++++++++++++++++ > //5. TB-Schalter setzen > //+++++++++++++++++++++++++++++++++++++++++++++ > > for TB = 1 ... 32 > { > func.Schalter_setzen(); > } > > run abfrage.abfrag; > > } > > > > > Modul: func > > /* > Peter Schmidthaler > Diplomarbeit: Steuergerät für Obstsammelmaschine > > Datum: 24.06.2003 > Geändert am: 24.06.2003 > > ***Mit diesem Modul werden Steuerbefehle in Funktionen verarbeitet.*** > > Funktionen im Modul: > -------------------- > 1. Schalter() > > Touchschalter werden gelesen und der Wert in die entsprechende Variable > gespeichert. > Die Variablen lauten abfrage.t[x] > > > 2. Bargraph() > > 3. Menueeintrag() > 4. TB_ein() > > */ > > byte pos3; > byte switch; > byte data; > > //Funktion fertig > function Schalter() > { > wait hwcom.rxd(); > pos3=hwcom.get(); > > wait hwcom.rxd(); > switch=hwcom.get(); > > wait hwcom.rxd(); > data=hwcom.get(); > > if pos3==2 > { > abfrage.t[switch].wert = data; > } > } > > > function Schalter_setzen() > { > hwcom.init(); > hwcom.ready(); > hwcom.put(27); //ESC > hwcom.put(65); //A > hwcom.put(80); //P > hwcom.put(abfrage.t[digports.TB].switch); //Code (Schalter) > hwcom.put(abfrage.t[digports.TB].wert);//Wert (Zustand) > } > > //Funktion noch nicht fertig > function Bargraph() > { > pos3=1; > } > > > //Funktion noch nicht fertig > function Menueeintrag() > { > pos3=1; > } > > > //Funktion noch nicht fertig > function TB_ein() > { > pos3=1; > } > > > > > Modul: init > > /* > Peter Schmidthaler > Diplomarbeit: Steuergerät für Obstsammelmaschine > > Datum: 30.06.2003 > Geändert am: 30.06.2003 > > ***Mit diesem Modul werden Initialisierungen vorgenommen.*** > > Funktionen im Modul: > -------------------- > 1. > > */ > > //Globale Variablen > > //Eingabevariablen definieren > type my_in > { > int adresse; > int port; > int zustand[2]; > int wert; > } > > //Ausgabevariablen definieren > type my_out > { > int adresse; > int port; > int wert; > } > > my_in p[16]; > my_out y[16]; > > int adress[2]; > int adressout[2]; > int schleife; > > //Kartenadressen festlegen > /////////////////////////////////// > //Adresse muss noch geaendert werden > ////////////////////////////////// > > const inputmodul1 = 16; > const inputmodul2 = 17; > > const outputmodul1 = 18; > const outputmodul2 = 19; > const outputmodul3 = 3; > const outputmodul4 = 4; > > //--------------- > thread init > //--------------- > { > run 32; > > int begin; > > ports.deactw(0); > > //Startbedingungen für Digital-Input > > p[1].port = 0; // Taster 1 > p[2].port = 1; // Taster 2 > p[3].port = 2; // Taster 3 > p[4].port = 3; // Taster 4 > p[5].port = 4; // Taster 5 > p[6].port = 5; // Taster 6 > p[7].port = 6; // Taster 7 > p[8].port = 7; // Taster 8 > > p[9].port = 0; // Taster 9 > p[10].port = 1; // Taster 10 > p[11].port = 2; // Taster 11 > p[12].port = 3; // Taster 12 > p[13].port = 4; // Taster 13 > p[14].port = 5; // Taster 14 > p[15].port = 6; // Taster 15 > p[16].port = 7; // Taster 16 > > for begin = 1 ... <9 > { > p[begin].adresse = inputmodul1; > p[begin].zustand[0] = 0; > p[begin].zustand[1] = 0; > } > > for begin = 9 ... <17 > { > p[begin].adresse = inputmodul2; > p[begin].zustand[0] = 0; > p[begin].zustand[1] = 0; > } > > //Startbedingungen für Digital Output > > y[1].port = 0;// Taster 0 > y[2].port = 1; // Taster 1 > y[3].port = 2; // Taster 2 > y[4].port = 3; // Taster 3 > y[5].port = 4; // Taster 4 > y[6].port = 5; // Taster 5 > y[7].port = 6; // Taster 6 > y[8].port = 7; // Taster 7 > > y[9].port = 0; // Taster 8 > y[10].port = 1; // Taster 9 > y[11].port = 2; // Taster 10 > y[12].port = 3; // Taster 11 > y[13].port = 4; // Taster 12 > y[14].port = 5; // Taster 13 > y[15].port = 6; // Taster 14 > y[16].port = 7; // Taster 15 > > for begin = 1 ... <9 > { > y[begin].adresse = outputmodul1; > y[begin].wert = 0; //Darf während des Programmdurchlaufs nicht erfolgen > } > > for begin = 9 ... <17 > { > y[begin].adresse = outputmodul2; > y[begin].wert = 0; // Darf während des Programmdurchlaufs nicht erfolgen > } > run abfrage.abfrag; > } > > > > Modul: mother > > //############################################################## > /* > Funktion der einzelnen Module: > > A) mother... main-Thread Modul > b) func... sämtliche Funktionen > c) abfrage... Touchpanel-Kommunikation > d) input... Einlesen der Unit-Ports > e) digports... Ausgabe an die Ports > f) init... Start- oder Reset-Modul > > */ > > //********* > thread main > //********* > { > run init.init; > } > | |
Antwort schreiben Antworten: |