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

Re: Compilerlogik unlogisch? Kategorie: Programmierung (von reneforster - 13.01.2009 19:46)
Als Antwort auf Re: Compilerlogik unlogisch? von Detlef - 10.01.2009 11:40
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, C-Control II Station, CC2-ReglerBoard, OSOPT V3.1
Hallo Detlef,

> > Globale Variable:
> > byte Sensor[MaxEing*2];             // Sensorvorrat, Anzahl Eingänge pro Sequenz
> >


Eventuell liegt hier der Zusammenhang. Mach aus der globalen Variable Sensor doch mal ein Integer.
Vielleicht gibt es im Laufe der Berechnungen einen Ă?berlauf, wenn die Vari als Byte deklariert ist.



> > function readHaus(int modueb, byte tog) returns byte  // (Moduluebersicht und Toggle)
> > {
> >  int modul, bit, eingang;
> >  byte pos;
> >  modul=0;
> >  pos=0;
> >
> >  if tog pos=MaxEing;
> >  
> >  while modueb                          // ... solange es nichtabgefragte Module gibt
> >    {
> >    if modueb%2                         // ... gucken, ob das nächste da ist
> >      {
> >      eingang=dwmodule.getDIMM(modul);  // ... dann deren Eingänge abfragen
> >      if eingang
> >       if eingang !=dwmodule.getDIMM(modul)              //  Sicherheitsabfrage nur wenn
> >         eingang=0;                                                    //  positives Eingangssignal
> >
> >      bit=0;
> >
> >      while eingang                     // ... solange irgendwo ein Bit "high" ist
> >        {
> >        if eingang%2                    // ... gucken ob das nächste "high" ist
> >          {
> >         Sensor[pos] = (modul*15)+1-1+bit;
> >          if pos < (MaxEing*(1+tog)) pos=pos+1;
> >          }
> >        bit=bit+1;                      // ... nächstes bit abfragen
> >        eingang = eingang shr 1;        // ... nächsten Eingang abfragen
> >        }
> >      }
> >    modueb=modueb shr 1;                // ... nächstes Modul abfragen
> >    if modueb%2                         // ... gucken, ob das nächste da ist
> >      {
> >      eingang=dwmodule.getDigi(modul);  // ... dann deren Eingänge abfragen
> >      if eingang
> >        if eingang !=dwmodule.getDigi(modul)                //  Sicherheitsabfrage nur wenn
> >          eingang=0;                                                    //  positives Eingangssignal
> >
> >      bit=0;
> >
> >      while eingang                     // ... solange irgendwo ein Bit "high" ist
> >        {
> >        if eingang%2                    // ... gucken ob das nächste "high" ist
> >          {
> >          Sensor[pos] = modul*15+3+bit;
> >          if pos < (MaxEing*(1+tog)) pos=pos+1;
> >          }
> >        bit=bit+1;                      // ... nächstes bit abfragen
> >        eingang = eingang shr 1;        // ... nächsten Eingang abfragen
> >        }
> >      }
> >    modueb=modueb shr 1;                // ... nächstes Modul abfragen
> >    modul=modul+1;                      // ... nächste Modulreihe befragen
> >    }
> >  Sensor[pos]=LEER;                     // ... Endwert in Sensor schreiben
> > }
> >



Rene


    Antwort schreiben


Antworten: