Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

fatal error, cannot create VMC Kategorie: Programmierung (von Peda, http://members.fortunecity.de/obstsammelmaschine - 1.07.2003 21:31)


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;
}


Meine Seite: http://members.fortunecity.de/obstsammelmaschine


    Antwort schreiben


Antworten:

Re: fatal error, cannot create VMC (von Tom - 2.07.2003 8:09)
Re: fatal error, cannot create VMC (von André H. - 2.07.2003 7:57)