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

Programmdurchlauf funktioniert nicht richtig!! Kategorie: Programmierung (von Peter, http://members.fortunecity.de/obstsammelmaschine - 2.09.2004 22:12)
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT_V2
Hallo Leute,

kann mal jemand bitte meinen Code checken. Ich glaube ich habe ein Problem mit einem ordentlichen
Programmdurchlauf. Womöglich arbeit mein thread falsch und ich komme nie zu einer Stelle im Code.
Oder kann ich das Problem irgendwie mit capture und release lösen.

Danke!

mfg

Peter Schmidthaler

module 1 bis 12
der Reihe nach von 1 bis 12 in ein Projekt einfügen.


//--------------------- a1_notes.c2 --------------------

/*
Projektbeschreibeung

Erstellt am 31. Jänner 2004

Dieses Modul (notes.c2) beschreibt die Funktion der einzelnen Module:



a) moth... main-Thread Modul

Startet die einzelnen Threads


b) init... Start- oder Reset-Modul

Legt die Grundeinstellungen für die digitalen In- und Output-Module fest.

Adresse, Grundzustand, ...


c) abfr... Touchpanel-Kommunikation

  Verarbeitet die Befehle vom Touch-Panel


d) digp... digitaler Input und Output


e) func... sämtliche Funktionen


f) s_out Portfunktionen

g) s_in Portfunktionen

h) t_inp ... diverse Funktionen

i) touch-panel funktionen

j) drehz ... diverse Funktionen

k) var ... deklarieren globaler Variablen

*/


//--------------------- a2_var.c2 --------------------

//Globale Variablen

//Inputvariablen definieren
  type in
  {
       int adresse;
       int port;
       int zustand[2];
       int wert;
  }
//Outputvariablen definieren
  type out
  {
       int adresse;
       int port;
       int wert;
  }

//Variable für Touchpanel-Portausgabe
  type var
{
       byte switch;
       byte wert;
}

  in p[16];
  out y[32];
  var t[32]; // t...Touchpanelport
  int mp[16];

  int adress[2];
  int adressout[2];
  int TB_setzen_ok;
  byte TB;
  byte textoutput[256]; //Bytebuffervariable für Textausgabe
  const breaktime = 5;
  int schleifein;  //Schleifenvariable beim Input
  int schleifeout; //Schleifenvariable beim Output
 
  int outputmodul[4];
  int datenout[4];

  byte seite; // in dieser Variablen wird die aktuelle Seitennummer des
              // Touchpanels gespeichert

//--------------------- a3_drehz.c2 --------------------

/*
Dieses Modul steuert das Menü "Drehzahlen" am Touchpanel
*/

//Zyklisches Senden der Drehzahlwerte, wenn die Funktion "Drehzahlen" aufgerufen
//wird

//--Variablendefinition--

const rotor = 1;
const querschnecken = 2;
const foerderband_1 = 3;
const reinigungsschnecke = 4;
const reinigungsbuersten = 5;
const motor = 6;

int rotor_drehzahl;
int querschnecken_drehzahl;
int foerderband_1_drehzahl;
int reinigungsschnecke_drehzahl;
int reinigungsbuersten_drehzahl;
int motor_drehzahl;

function drehzahlen()
{
touchlcd.barvalue(rotor, rotor_drehzahl);
touchlcd.barvalue(querschnecken, querschnecken_drehzahl);
touchlcd.barvalue(foerderband_1, foerderband_1_drehzahl);
touchlcd.barvalue(reinigungsschnecke, reinigungsschnecke_drehzahl);
touchlcd.barvalue(reinigungsbuersten, reinigungsbuersten_drehzahl);
touchlcd.barvalue(motor, motor_drehzahl);
}
//--------------------- a4_outp.c2 --------------------

/*
Dieses Modul steuert die digitalen Ausgänge der Steuerung
*/
int n;
const EIN = 1;
const AUS = 0;

const touch_01 = 1;
const touch_02 = 2;
const touch_03 = 3;
const touch_04 = 4;
const touch_05 = 5;
const touch_06 = 6;
const touch_07 = 7;
const touch_08 = 8;
const touch_09 = 9;
const touch_10 = 10;
const touch_11 = 11;
const touch_12 = 12;
const touch_13 = 13;
const touch_14 = 14;
const touch_15 = 15;
const touch_16 = 16;

int ausgang_01;
int ausgang_02;
int ausgang_03;
int ausgang_04;
int ausgang_05;
int ausgang_06;
int ausgang_07;
int ausgang_08;
int ausgang_09;
int ausgang_10;
int ausgang_11;
int ausgang_12;
int ausgang_13;
int ausgang_14;
int ausgang_15;
int ausgang_16;

function ausgaenge()
{
touchlcd.setswitch(touch_01, ausgang_01);
touchlcd.setswitch(touch_02, ausgang_02);
touchlcd.setswitch(touch_03, ausgang_03);
touchlcd.setswitch(touch_04, ausgang_04);
touchlcd.setswitch(touch_05, ausgang_05);
touchlcd.setswitch(touch_06, ausgang_06);
touchlcd.setswitch(touch_07, ausgang_07);
touchlcd.setswitch(touch_08, ausgang_08);
touchlcd.setswitch(touch_09, ausgang_09);
touchlcd.setswitch(touch_10, ausgang_10);
touchlcd.setswitch(touch_11, ausgang_11);
touchlcd.setswitch(touch_12, ausgang_12);
touchlcd.setswitch(touch_13, ausgang_13);
touchlcd.setswitch(touch_14, ausgang_14);
touchlcd.setswitch(touch_15, ausgang_15);
touchlcd.setswitch(touch_16, ausgang_16);
}
//--------------------- a5_t_inp.c2 --------------------

function menu5()
{
// Displayinhalt löschen, alle Pixel aus
  hwcom.put(27);
  hwcom.put(68);
  hwcom.put(76);

//wait  hwcom.ready();

// Terminal Anzeige ist nicht sichtbar, Ausgaben werden weiterhin ausgeführt
  hwcom.put(27);
//wait  hwcom.ready();
  hwcom.put('T');
//wait  hwcom.ready();
  hwcom.put('A');
 
sleep a2_var.breaktime;
   // wait             hwcom.ready();
// Der Touchbereich mit dem Return-Code (Code=0: alle Touchbereiche) wird aus
// der Touchabfrage entfernt. Mit n1=0 bleibt der Bereich im Display sichtbar,
// mit n1=1 wird der Bereich im Display gelöscht.
  hwcom.put(27);
    //    wait        hwcom.ready();
  hwcom.put('A');
     //       wait     hwcom.ready();
  hwcom.put('L');
    //        wait     hwcom.ready();
  hwcom.put(0);
    //       wait    hwcom.ready();
  hwcom.put(1);
    //       wait    hwcom.ready();




sleep a2_var.breaktime;
  touchlcd.touchfont(6);
  touchlcd.touchzoom(1,1);

sleep a2_var.breaktime*2;
//Eingang 1

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '0';
  a2_var.textoutput[7] = '1';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(5,7,1,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 2

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '0';
  a2_var.textoutput[7] = '2';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(15,17,2,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 3

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '0';
  a2_var.textoutput[7] = '3';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(25,26,3,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 4

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '0';
  a2_var.textoutput[7] = '4';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(35,37,4,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 5

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '0';
  a2_var.textoutput[7] = '5';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(45,47,5,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 6

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '0';
  a2_var.textoutput[7] = '6';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(55,57,6,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 7

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '0';
  a2_var.textoutput[7] = '7';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(65,67,7,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 8

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '0';
  a2_var.textoutput[7] = '8';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(75,77,8,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 9

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '0';
  a2_var.textoutput[7] = '9';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(8,10,9,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 10

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '1';
  a2_var.textoutput[7] = '0';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(18,20,10,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 11

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '1';
  a2_var.textoutput[7] = '1';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(28,30,11,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 12

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '1';
  a2_var.textoutput[7] = '2';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(38,40,12,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 13

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '1';
  a2_var.textoutput[7] = '3';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(48,50,13,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 14

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '1';
  a2_var.textoutput[7] = '4';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(58,60,14,a2_var.textoutput,9);

sleep a2_var.breaktime;
//Eingang 15

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '1';
  a2_var.textoutput[7] = '5';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(68,70,15,a2_var.textoutput,9);
sleep a2_var.breaktime;
//Eingang 16

  a2_var.textoutput[0] = 'V';
  a2_var.textoutput[1] = 'e';
  a2_var.textoutput[2] = 'n';
  a2_var.textoutput[3] = 't';
  a2_var.textoutput[4] = 'i';
  a2_var.textoutput[5] = 'l';
  a2_var.textoutput[6] = '1';
  a2_var.textoutput[7] = '6';
  a2_var.textoutput[8] = 0;

  //touchlcd.textmode(3);
  touchlcd.touch_schalter(78,80,16,a2_var.textoutput,9);

// Touchschalter der Eingänge einstellen

lcd.init();
lcd.clear();

for a2_var.schleifein = 1 ... 16
{
sleep a2_var.breaktime;
touchlcd.setswitch(a2_var.p[a2_var.schleifein].port, a2_var.p[a2_var.schleifein].wert);
}

}

//Funktion fertig


//--------------------- a6_s_in.c2 --------------------

byte schalter;

function eingaenge()
{

for schalter = 1 ... 8
{
  touchlcd.setswitch(schalter, a2_var.p[schalter].wert);
}

}
//--------------------- a7_s_out.c2 --------------------

byte mist;
byte schalter;
byte wert;

function ausgaenge()
{

for schalter = 1 ... 8
{
 if a2_var.y[schalter+16].wert == 1
 {
  wert = 0;
 }
 else
 {
  wert = 1;
 }
 touchlcd.setswitch(schalter, wert);
}

}

function switch()
{

 mist = hwcom.get(); //wird nicht verwendet
 sleep 10;
 schalter =hwcom.get();
 sleep 10;
 hwcom.put('A');
 //Alle Zustände sind im folgendem Code invertiert. Grund dafür ist der Puffer-
 //baustein 74540 der die Zustände invertiert.
 
 if a2_var.seite == 201
 {
//Ausgang 1
  if schalter == 1
  {
   a2_var.y[17].wert = 0;
  }
  if schalter == 101
  {
   a2_var.y[17].wert = 1;
  }

// Ausgang 2
  if schalter == 2
  {
   a2_var.y[18].wert = 0;
  }
  if schalter == 102
  {
   a2_var.y[18].wert = 1;
  }
 
// Ausgang 3
  if schalter == 3
  {
   a2_var.y[19].wert = 0;
  }
  if schalter == 103
  {
   a2_var.y[19].wert = 1;
  }
 
// Ausgang 4
  if schalter == 4
  {
   a2_var.y[20].wert = 0;
  }
  if schalter == 104
  {
   a2_var.y[20].wert = 1;
  }
 
// Ausgang 5
  if schalter == 5
  {
   a2_var.y[21].wert = 0;
  }
  if schalter == 105
  {
   a2_var.y[21].wert = 1;
  }
 
// Ausgang 6
  if schalter == 6
  {
   a2_var.y[22].wert = 0;
  }
  if schalter == 106
  {
   a2_var.y[22].wert = 1;
  }
 
// Ausgang 7
  if schalter == 7
  {
   a2_var.y[23].wert = 0;
  }
  if schalter == 107
  {
   a2_var.y[23].wert = 1;
  }

// Ausgang 8
  if schalter == 8
  {
   a2_var.y[24].wert = 0;
  }
  if schalter == 108
  {
   a2_var.y[24].wert = 1;
  }

 }
}
//--------------------- a8_func.c2 --------------------

/*
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;
byte menue;
byte s;
byte ausgang;
byte zustand;  // Zustand des Touchschalters, entweder 1 oder 0


//Menüeinträge

function menue1()
{

}

function menue2()
{

}


function Schalter_setzen()
{

    if a2_var.t[switch].wert == 1
    {
      a2_var.t[switch].wert = 0;
    }
    else
    {
      a2_var.t[switch].wert = 1;
    }

  hwcom.put(27);  //ESC
  hwcom.put(65);  //A
  hwcom.put(80);  //P
  hwcom.put(a2_var.TB); //Code (Schalter)
  hwcom.put(a2_var.t[a2_var.TB].wert);//Wert (Zustand)
  a2_var.TB_setzen_ok = 0;

}

//Funktion noch nicht fertig
function Bargraph()
{

}

function a1()
{
  if a2_var.mp[1] == 0
  {
    a2_var.mp[1] = 1;
  }
  else
  {
    a2_var.mp[1] =0;
  }

  ports.set(0, a2_var.mp[1]);
}

function a2()
{
  if a2_var.mp[2] == 0
  {
    a2_var.mp[2] = 1;
  }
  else
  {
    a2_var.mp[2] =0;
  }

  ports.set(1, a2_var.mp[2]);
}

function a3()
{
  if a2_var.mp[3] == 0
  {
    a2_var.mp[3] = 1;
  }
  else
  {
    a2_var.mp[3] =0;
  }

  ports.set(2, a2_var.mp[3]);
}

function a4()
{
  if a2_var.mp[4] == 0
  {
    a2_var.mp[4] = 1;
  }
  else
  {
    a2_var.mp[4] =0;
  }
 
  ports.set(3, a2_var.mp[4]);
}

function a5()
{
  if a2_var.mp[5] == 0
  {
    a2_var.mp[5] = 1;
  }
  else
  {
    a2_var.mp[5] =0;
  }
 
  ports.set(4, a2_var.mp[5]);
}

function a6()
{
  if a2_var.mp[6] == 0
  {
    a2_var.mp[6] = 1;
  }
  else
  {
    a2_var.mp[6] =0;
  }
 
  ports.set(5, a2_var.mp[6]);
}

function a7()
{
  if a2_var.mp[7] == 0
  {
    a2_var.mp[7] = 1;
  }
  else
  {
    a2_var.mp[7] =0;
  }
 
  ports.set(6, a2_var.mp[7]);
}

function a8()
{
  if a2_var.mp[8] == 0
  {
    a2_var.mp[8] = 1;
  }
  else
  {
    a2_var.mp[8] =0;
  }

  ports.set(7, a2_var.mp[8]);
}

function a9()
{
  if a2_var.mp[9] == 0
  {
    a2_var.mp[9] = 1;
  }
  else
  {
    a2_var.mp[9] =0;
  }
 
  ports.set(8, a2_var.mp[9]);
}

function a10()
{
  if a2_var.mp[10] == 0
  {
    a2_var.mp[10] = 1;
  }
  else
  {
    a2_var.mp[10] =0;
  }
 
  ports.set(9, a2_var.mp[10]);
}

function a11()
{
  if a2_var.mp[11] == 0
  {
    a2_var.mp[11] = 1;
  }
  else
  {
    a2_var.mp[11] =0;
  }
 
  ports.set(10, a2_var.mp[11]);
}

function a12()
{
  if a2_var.mp[12] == 0
  {
    a2_var.mp[12] = 1;
  }
  else
  {
    a2_var.mp[12] =0;
  }
 
  ports.set(11, a2_var.mp[12]);
}

function a13()
{
  if a2_var.mp[13] == 0
  {
    a2_var.mp[13] = 1;
  }
  else
  {
    a2_var.mp[13] =0;
  }
 
  ports.set(12, a2_var.mp[13]);
}

function a14()
{
  if a2_var.mp[14] == 0
  {
    a2_var.mp[14] = 1;
  }
  else
  {
    a2_var.mp[14] =0;
  }
 
  ports.set(13, a2_var.mp[14]);
}

function a15()
{
  if a2_var.mp[15] == 0
  {
    a2_var.mp[15] = 1;
  }
  else
  {
    a2_var.mp[15] =0;
  }
 
  ports.set(14, a2_var.mp[15]);
}

function a16()
{
  if a2_var.mp[16] == 0
  {
    a2_var.mp[16] = 1;
  }
  else
  {
    a2_var.mp[16] =0;
  }
 
  ports.set(15, a2_var.mp[16]);
}
// Byteports deactivieren
function m20()
{
  ports.deactb(0); // P1L-ports deactivieren
}

function m21()
{
  ports.deactb(1); // P1H-ports deactivieren
}

function m22()
{
  ports.setb(0,0);
}

function m23()
{
  ports.setb(1,0);
}

//Funktion noch nicht fertig
function Menue()
{
sleep 10;
  pos3=hwcom.get();  //wird nicht überprüft
sleep 10;
  menue=hwcom.get();
sleep 10;
  zustand=hwcom.get();
 
  if menue == 201
  {
    if zustand == 1
    {
      a2_var.seite = 201;
      a7_s_out.ausgaenge();
      zustand = 0;
     
    }
  }
 
  if menue == 202
  {
     if zustand == 1
     {
       a2_var.seite = 202;
       a6_s_in.eingaenge();
       zustand = 0;
     }
  }
 
  if menue == 3
  {
    a8_func.a3();
  }
 
  if menue == 4
  {
    a8_func.a4();
  }
 
  if menue == 5
  {
    a8_func.a5();
  }

  if menue == 6
  {
    a8_func.a6();
  }

  if menue == 7
  {
    a8_func.a7();
  }

  if menue == 8
  {
    a8_func.a8();
  }
 

  if menue == 9
  {
    a8_func.a9();
  }

  if menue == 10
  {
    a8_func.a10();
  }

  if menue == 11
  {
    a8_func.a11();
  }

  if menue == 12
  {
    a8_func.a12();
  }

  if menue == 13
  {
    a8_func.a13();
  }

  if menue == 14
  {
    a8_func.a14();
  }

  if menue == 15
  {
    a8_func.a15();
  }

  if menue == 16
  {
    a8_func.a16();
  }

  if menue == 20
  {
    a8_func.m20();
  }

  if menue == 21
  {
    a8_func.m21();

  }
 
    if menue == 22
  {
    a8_func.m22();

  }
 
    if menue == 23
  {
    a8_func.m23();

  }

 
  if menue == 101
  {
    a8_func.menue1();
  }
  if menue == 102
  {
    a8_func.menue2();
  }
  if menue == 103
  {

  }

   if menue == 104
  {

  }

  if menue == 105
  {
    a5_t_inp.menu5();
  }

  if menue == 106
  {

  }

}

function Schalter()
{
sleep 10;
  //wait hwcom.rxd();
  pos3=hwcom.get();    //wird nicht überprüft

sleep 10;
  //wait hwcom.rxd();
  switch=hwcom.get();
/*
  wait hwcom.rxd();
  data=hwcom.get();
*/

  if switch == 1
  {
    a8_func.a1();
  }

  if switch == 2
  {
    a8_func.a2();
  }

  if switch == 3
  {
    a8_func.a3();
  }

  if switch == 4
  {
    a8_func.a4();
  }

  if switch == 5
  {
    a8_func.a5();
  }

  if switch == 6
  {
    a8_func.a6();
  }

  if switch == 7
  {
    a8_func.a7();
  }

  if switch == 8
  {
    a8_func.a8();
  }


  if switch == 9
  {
    a8_func.a9();
  }

  if switch == 10
  {
    a8_func.a10();
  }

  if switch == 11
  {
    a8_func.a11();
  }

  if switch == 12
  {
    a8_func.a12();
  }

  if switch == 13
  {
    a8_func.a13();
  }

  if switch == 14
  {
    a8_func.a14();
  }

  if switch == 15
  {
    a8_func.a15();
  }

  if switch == 16
  {
    a8_func.a16();
  }

  if switch == 20
  {
    a8_func.m20();
  }

  if switch == 21
  {
    a8_func.m21();

  }

    if switch == 22
  {
    a8_func.m22();

  }

    if switch == 23
  {
    a8_func.m23();

  }


}
//Funktion noch nicht fertig
function TB_ein()
{

}


//--------------------- a9_digp.c2 --------------------

//Modul: digports

/*
Peter Schmidthaler
Diplomarbeit: Steuergerät für Obstsammelmaschine

Datum: 12.08.2002
Geändert am: 08.03.2004

***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

*/
  //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
 
  type bgraph
{
  byte wert;
}
const ESC = 27;
const Schalter = 65;
const Bargraph = 3;
const Menue = 88;
const TB_ein = 5;
const man_ausgang = 100;
//---------------
  function input() //thread
//---------------
{
// hwcom.put(a2_var.p[17].wert);

  int P1L_ports; //Adresse der Byteports P1H und P1L
  int P1H_ports;

  int turn;  //Schleifenvariable
  string anzeige1;
  string anzeige2;

  int pause;
  int pause2;
 
  int daten1;  //Dient nur als Zwischenspeicher
  int daten2;  //Dient nur als Zwischenspeicher
 
  pause = 1;
  pause2 = 1;
 
//+++++++++++++++++++++++++++++++++++++++++++++
// 2. Richtung der Digitalports einstellen
//+++++++++++++++++++++++++++++++++++++++++++++

      lcd.init();
      sleep pause;
      lcd.clear();
      sleep pause;
//++++++++++++++++++++++++++++++++++++++++++++
//3. Eingangsports einlesen
//+++++++++++++++++++++++++++++++++++++++++++++

        P1L_ports = 0;   //P1L-Ports Adress- und Datensendeport
        P1H_ports = 1;
       
// Input-Modul 1

          for a2_var.schleifein = 1 ... 8//16
          {
          ports.deactb(P1L_ports);
          ports.deactb(P1H_ports);
          ports.setb(P1H_ports,0);
          sleep pause;
          ports.set(14, dirPH_out); //Output der P.H. Ports gesteuert über Port P1H.6
          sleep pause;
          ports.set(15, dirPL_out); //Output der P.L. Ports gesteuert über Port P1H.7
          sleep pause;
          ports.setb(P1L_ports, a2_var.p[a2_var.schleifein].adresse); //Adresse der Input-Platine setzen
          sleep pause;
          ports.set(takeadress,1); //Adresse in die Input-Platine übernehmen
          sleep pause;
          ports.set(takeadress,0);
          sleep pause;
          ports.deactb(P1L_ports); //Digitalport PL der CC2-Unit deaktivieren
          sleep pause;
          ports.set(15, dirPL_in); // Input der P.L. Ports
          sleep pause;
          ports.set(takedata, 1); //  Einlesen der Eingänge
          sleep pause;
            for turn = 0 ... 1
            {
            a2_var.p[a2_var.schleifein].zustand[turn] = ports.get(a2_var.p[a2_var.schleifein].port);
            sleep pause;
            }
          ports.set(takedata, 0); //  Einlesen der Eingänge

          a2_var.p[a2_var.schleifein].wert = a2_var.p[a2_var.schleifein].zustand[0] + a2_var.p[a2_var.schleifein].zustand[1];


        if a2_var.p[a2_var.schleifein].wert == -2 // setzt sich aus -1 + -1 zusammen
           {
           // Wenn beide Werte HIGH dann ist auch der Ausgabewert HIGH
             a2_var.p[a2_var.schleifein].wert = 49;
             lcd.goto(0,a2_var.schleifein-1);
             lcd.put(a2_var.p[a2_var.schleifein].wert);
             a2_var.p[a2_var.schleifein].wert = 1;
           }
        else
           {
            a2_var.p[a2_var.schleifein].wert = 48;   // Sonst ist der Ausgabewert LOW
             lcd.goto(0,a2_var.schleifein-1);
             lcd.put(a2_var.p[a2_var.schleifein].wert);
             a2_var.p[a2_var.schleifein].wert = 0;
           }

         // ports.deactb(0); //Digitalports der CC2-Unit deaktivieren
         // ports.deactb(1);

      /* möglicherweise sind Pullup-Widerstände erforderlich,
       da sich sonst der Pufferbaustein des Digital-Input-Moduls sich nicht
       im high-impedance Zustand befindet
      */
          }
/*
// Input-Modul 2

          for a2_var.schleifein = 9 ... 16//16
          {
          ports.deactb(P1L_ports);
          ports.deactb(P1H_ports);
          ports.setb(P1H_ports,0);
          sleep pause;
          ports.set(14, dirPH_out); //Output der P.H. Ports gesteuert über Port P1H.6
          sleep pause;
          ports.set(15, dirPL_out); //Output der P.L. Ports gesteuert über Port P1H.7
          sleep pause;
          ports.setb(P1L_ports, a2_var.p[a2_var.schleifein].adresse); //Adresse der Input-Platine setzen
          sleep pause;
          ports.set(takeadress,1); //Adresse in die Input-Platine übernehmen
          sleep pause;
          ports.set(takeadress,0);
          sleep pause;
          ports.deactb(P1L_ports); //Digitalport PL der CC2-Unit deaktivieren
          sleep pause;
          ports.set(15, dirPL_in); // Input der P.L. Ports
          sleep pause;
          ports.set(takedata, 1); //  Einlesen der Eingänge
          sleep pause;
            for turn = 0 ... 1
            {
            a2_var.p[a2_var.schleifein].zustand[turn] = ports.get(a2_var.p[a2_var.schleifein].port);
            sleep pause;
            }
          ports.set(takedata, 0); //  Einlesen der Eingänge

          a2_var.p[a2_var.schleifein].wert = a2_var.p[a2_var.schleifein].zustand[0] + a2_var.p[a2_var.schleifein].zustand[1];

        if a2_var.p[a2_var.schleifein].wert == -2 // setzt sich aus -1 + -1 zusammen
           {
           // Wenn beide Werte HIGH dann ist auch der Ausgabewert HIGH
             a2_var.p[a2_var.schleifein].wert = 49;
             lcd.goto(1,a2_var.schleifein-9);
             lcd.put(a2_var.p[a2_var.schleifein].wert);
             a2_var.p[a2_var.schleifein].wert = 1;
           }
        else
           {
            a2_var.p[a2_var.schleifein].wert = 48;   // Sonst ist der Ausgabewert LOW
             lcd.goto(1,a2_var.schleifein-9);
             lcd.put(a2_var.p[a2_var.schleifein].wert);
             a2_var.p[a2_var.schleifein].wert = 0;
           }

         // ports.deactb(0); //Digitalports der CC2-Unit deaktivieren
         // ports.deactb(1);


//      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
//+++++++++++++++++++++++++++++++++++++++++++++

// Die Ausgabeports wurden vertauscht, um
//hwcom.put(a4_func.seite);
//hwcom.put(a2_var.p[17].wert);
/*

a2_var.y[18].wert = 1;
a2_var.y[19].wert = 1;
a2_var.y[20].wert = 1;
a2_var.y[21].wert = 1;
a2_var.y[22].wert = 1;

*/
a2_var.y[17].wert = 1;
a2_var.y[23].wert = 0;
a2_var.y[24].wert = 0;


daten1 = a2_var.y[1].wert*2 + a2_var.y[2].wert*1 + a2_var.y[3].wert*8 + a2_var.y[4].wert*4;
daten2 = a2_var.y[5].wert*64 + a2_var.y[6].wert*128 + a2_var.y[7].wert*16 + a2_var.y[8].wert*32;
a2_var.datenout[1] = daten1 + daten2;

daten1 = a2_var.y[9].wert*2 + a2_var.y[10].wert*1 + a2_var.y[11].wert*8 + a2_var.y[12].wert*4;
daten2 = a2_var.y[13].wert*64 + a2_var.y[14].wert*128 + a2_var.y[15].wert*16 + a2_var.y[16].wert*32;
a2_var.datenout[2] = daten1 + daten2;

daten1 = a2_var.y[17].wert*2 + a2_var.y[18].wert*1 + a2_var.y[19].wert*8 + a2_var.y[20].wert*4;
daten2 = a2_var.y[21].wert*64 + a2_var.y[22].wert*128 + a2_var.y[23].wert*16 + a2_var.y[24].wert*32;
a2_var.datenout[3] = daten1 + daten2;

daten1 = a2_var.y[25].wert*2 + a2_var.y[26].wert*1 + a2_var.y[27].wert*8 + a2_var.y[28].wert*4;
daten2 = a2_var.y[29].wert*64 + a2_var.y[30].wert*128 + a2_var.y[31].wert*16 + a2_var.y[32].wert*32;
a2_var.datenout[4] = daten1 + daten2;

             ports.set(14, dirPH_out); // Output der P.H. Ports
             ports.set(15, dirPL_out); // Output der P.L. Ports
             sleep pause2;

  for a2_var.schleifeout = 1 ... 4
  {
    ports.setb(P1L_ports, a2_var.outputmodul[a2_var.schleifeout]); //Adresse der Output-Platine setzen
    sleep pause2;
    ports.set(takeadress,1); //Adresse in die Output-Platine übernehmen
    sleep pause2;
    ports.set(takeadress,0);
    sleep pause2;

    ports.setb(P1L_ports, a2_var.datenout[a2_var.schleifeout]);
    sleep pause2;



if a2_var.seite == 201
  {
    lcd.goto(1,0);
    lcd.put('A');
      sleep 500;
  }
else
  {
    lcd.goto(1,0);
    lcd.put('B');
      sleep 500;
  }

/*
if a2_var.y[17].wert == 1
{
  a2_var.y[17].wert = 49;
  lcd.goto(1,0);
  lcd.put(a2_var.y[17].wert);
  a2_var.y[17].wert = 1;
}

if a2_var.y[17].wert == 0
{
  a2_var.y[17].wert = 48;
  lcd.goto(1,4);
  lcd.put(a2_var.y[17].wert);
  a2_var.y[17].wert = 0;
}
*/
/*
    str.clear(anzeige1);
    str.putint(anzeige1, a2_var.outputmodul[a2_var.schleifeout]);
    lcd.clear();
    lcd.goto(1,0);
    lcd.print(anzeige1, str.length(anzeige1));

    str.clear(anzeige2);
    str.putint(anzeige2, a2_var.datenout[a2_var.schleifeout]);
    lcd.goto(1,4);
    lcd.print(anzeige2, str.length(anzeige2));
*/
    ports.set(takedata,1);
    sleep pause2;
    ports.set(takedata,0);
    sleep pause2;

  }
/*
//+++++++++++++++++++++++++++++++++++++++++++++
//5. TB-Schalter setzen
//+++++++++++++++++++++++++++++++++++++++++++++

   if a2_var.TB_setzen_ok ==1
   {
   //sleep 3000;
   for a2_var.TB = 101 ... 116
   {
   sleep 10;
   func.Schalter_setzen();
   }
   }

//Ausgabe der Werte am LCD Display der Unit
*/

  //run a6_abfrage.abfrage;

  }
//--------------------- a10_abfr.c2 --------------------

//Variable zur Bargraphdefinitionn für EA KIT 320-8
type bgraph
{
  byte wert;
}
bgraph bar[255];

int display;
int displayanzeige;

//Konstanten
const ESC = 27;
const Schalter = 65;
const Bargraph = 3;
const Menue = 88;
const TB_ein = 5;
const man_ausgang = 100;
//***********
thread abfrage
//***********
{
//Empfangsvariablendefinition
  byte pos1;
  byte pos2;

  pos1=hwcom.get();

     if pos1 == ESC
     {
     sleep 10;
       pos2=hwcom.get();
       sleep 10;

       if pos2 == Schalter
       {
         a7_s_out.switch();
       }
       if pos2 == Bargraph
       {
         a8_func.Bargraph();
       }
       if pos2 == Menue
       {
         a8_func.Menue();
       }
       if pos2 == TB_ein
       {
         a8_func.TB_ein();
       }
       
     }


a9_digp.input();
halt;
}






//--------------------- a11_init.c2 --------------------

//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.

*/

  int schleife;

//Kartenadressen festlegen
///////////////////////////////////
//Adresse muss noch geaendert werden
//////////////////////////////////

/*

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] ...

*/

// Moduladressen

  const inputmodul1 = 224;
  const inputmodul2 = 20;  //ist nicht sicher

  //---------------
  thread init
  //---------------
{
  hwcom.put('i');
  hwcom.put('n');
  hwcom.put('i');
  hwcom.put('t');
  hwcom.put('_');
  hwcom.put('a');
  hwcom.put(' ');

  a2_var.outputmodul[1] = 16;
  a2_var.outputmodul[2] = 17;
  a2_var.outputmodul[3] = 19;
  a2_var.outputmodul[4] = 23;

  int begin;

  ports.deactw(0);

  //Startbedingungen für Digital-Input
 
  //Zuweisung der Portadressen an die Variablen

    a2_var.p[1].port = 0; // Taster 1
    a2_var.p[2].port = 1; // Taster 2
    a2_var.p[3].port = 2; // Taster 3
    a2_var.p[4].port = 3; // Taster 4
    a2_var.p[5].port = 4; // Taster 5
    a2_var.p[6].port = 5; // Taster 6
    a2_var.p[7].port = 6; // Taster 7
    a2_var.p[8].port = 7; // Taster 8

    a2_var.p[9].port = 0; // Taster 9
    a2_var.p[10].port = 1; // Taster 10
    a2_var.p[11].port = 2; // Taster 11
    a2_var.p[12].port = 3; // Taster 12
    a2_var.p[13].port = 4; // Taster 13
    a2_var.p[14].port = 5; // Taster 14
    a2_var.p[15].port = 6; // Taster 15
    a2_var.p[16].port = 7; // Taster 16

  // Zuweisung der Moduladresse an die einzelnen Input-Module
  // und die Zustände 1 und 2 werden für den Start auf 0 gesetzt.


// Inputmodul 1
    for begin = 1 ... <9
    {
      a2_var.p[begin].adresse = inputmodul1;
      a2_var.p[begin].zustand[0] = 0;
      a2_var.p[begin].zustand[1] = 0;
      a2_var.p[begin].wert = 1; //wird vom DigitalOutputModul invertiert
    }

// Inputmodul 2
    for begin = 9 ... <17
    {
      a2_var.p[begin].adresse = inputmodul2;
      a2_var.p[begin].zustand[0] = 0;
      a2_var.p[begin].zustand[1] = 0;
      a2_var.p[begin].wert = 1; //wird vom DigitalOutputModul invertiert
    }

  // Startbedingungen für Digital Output
  // Zuweisung der Portadressen an die Variablen

    a2_var.y[1].port = 0;// Taster 0
    a2_var.y[2].port = 1; // Taster 1
    a2_var.y[3].port = 2; // Taster 2
    a2_var.y[4].port = 3; // Taster 3
    a2_var.y[5].port = 4; // Taster 4
    a2_var.y[6].port = 5; // Taster 5
    a2_var.y[7].port = 6; // Taster 6
    a2_var.y[8].port = 7; // Taster 7

    a2_var.y[9].port = 0; // Taster 8
    a2_var.y[10].port = 1; // Taster 9
    a2_var.y[11].port = 2; // Taster 10
    a2_var.y[12].port = 3; // Taster 11
    a2_var.y[13].port = 4; // Taster 12
    a2_var.y[14].port = 5; // Taster 13
    a2_var.y[15].port = 6; // Taster 14
    a2_var.y[16].port = 7; // Taster 15

    a2_var.y[17].port = 0;// Taster 0
    a2_var.y[18].port = 1; // Taster 1
    a2_var.y[19].port = 2; // Taster 2
    a2_var.y[20].port = 3; // Taster 3
    a2_var.y[21].port = 4; // Taster 4
    a2_var.y[22].port = 5; // Taster 5
    a2_var.y[23].port = 6; // Taster 6
    a2_var.y[24].port = 7; // Taster 7

    a2_var.y[25].port = 0; // Taster 8
    a2_var.y[26].port = 1; // Taster 9
    a2_var.y[27].port = 2; // Taster 10
    a2_var.y[28].port = 3; // Taster 11
    a2_var.y[29].port = 4; // Taster 12
    a2_var.y[30].port = 5; // Taster 13
    a2_var.y[31].port = 6; // Taster 14
    a2_var.y[32].port = 7; // Taster 15
  // Zuweisung der Moduladresse an die einzelnen Input-Module
  // und die Zustände 1 und 2 werden für den Start auf 0 gesetzt.

    for begin = 1 ... <9
    {
      a2_var.y[begin].adresse = a2_var.outputmodul[1];
      a2_var.y[begin].wert = 1; //Darf während des Programmdurchlaufs nicht erfolgen (invertiert)
    }

    for begin = 9 ... <17
    {
      a2_var.y[begin].adresse = a2_var.outputmodul[2];
      a2_var.y[begin].wert = 1; //Darf während des Programmdurchlaufs nicht erfolgen (invertiert)
    }

    for begin = 17 ... <25
    {
      a2_var.y[begin].adresse = a2_var.outputmodul[3];
      a2_var.y[begin].wert = 1; //Darf während des Programmdurchlaufs nicht erfolgen (invertiert)
    }

    for begin = 25 ... <33
    {
      a2_var.y[begin].adresse = a2_var.outputmodul[4];
      a2_var.y[begin].wert = 1; //Darf während des Programmdurchlaufs nicht erfolgen (invertiert)
    }

//Makro 1 des Touchpanels starten
hwcom.put(27);
hwcom.put('M');
hwcom.put('N');
hwcom.put(1);

  run a10_abfr.abfrage;

  hwcom.put('i');
  hwcom.put('n');
  hwcom.put('i');
  hwcom.put('t');
  hwcom.put('_');
  hwcom.put('e');
  hwcom.put(' ');
 
  halt;

}




//--------------------- a12_moth.c2 --------------------

//Modul: mother

//*********
thread main
//*********
{
    run a11_init.init;
    halt;
}


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


    Antwort schreiben


Antworten:

Re: Programmdurchlauf funktioniert nicht richtig!! (von André H. - 4.09.2004 9:44)