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

falsches Abfrageergebnis????? Kategorie: Programmierung (von Markus - 12.11.2006 12:40)
Ich nutze:
C-Control II Station, OSOPT V3.1
Hallo Gemeinde,

ich versuche zur Zeit eine Rollosteuerung mit Hilfe von I/O Modulen 8574 zu programieren.
In einem thread initialisiere ich die pcf. mit dem Ergebnis möchte ich eine "Freischaltung" der Ansteuerung
der Module realisieren.
Im Display erscheint der Ausgelesene Wert ,00 und die LED 4 geht an. Was soweit ja auch richitg ist.
Nach meinem logioschen Verständnis sollte nun aber auch die LED 5 angehen, da das Ergbnis des
Vergleichs ja ungleich ist -tu es aber nicht das Programm  läuft weiter als wären die Wert gleich.
Da ich im Forum des öfteren von Variablen Problemen der CC gelesen habe, habe ich auch mal den
Vergleich herumgedreht -ohne Erfolg.
Das Kuriose daran ist nun, das es gestern funktioniert hat.
Ich sende die aktuellen Daten über hwcom in eine Excel Tabelle und mache damit das bugfixing.
Hier kann ich die aktuellen Weret sehen - und die stimmten auf einmal nicht mehr mit der Realität überein.
Hier habe ich nun die Display und LED Ausgabe eingefügt um zu sehen wo genau der Fehler wohnt.
Hat jemnd eine Idee wo oder was der Fehler sein könnte??
Zum besseren Verständnis der aktuelle Code.

danke
Markus

var. = Modul Variablendekaration
var.RolloOn[Nummer des Rollo(0-15)] Staus des Rollos 0=Offline 1=Online // Rollo[0]= Init Ergebnis
Modul[Nummer des Moduls(0-8)] 0= Offline 1=Online
var.Modul[Nummer des Rollo(1-15)] 0-8 Nummer des Moduls
Alle Globalen Variablen werden beim start auf 0 gesetzt
//************  Testzeile

int lop, OnTemp, Modul[15];
string text;

thread On
{
var.RolloOn[0]=pcf.init();                 // lesen welche Module online sind
station_io.LEDtoggle(4);//***********************************
str.putintf(text,var.RolloOn[0],2);text=text+",";str.putintf(text,var.OldRollo,2);//*********************
station_lcd.cursorpos(2,0);station_lcd.print(text);//***********************************
if var.RolloOn[0]!=var.OldRollo            // nur lesen, wenn differenz
   {capture var.flag;
    station_io.LEDtoggle(5);//*******************************
    var.OldRollo=0;
    OnTemp=var.RolloOn[0];                 // temp zuweisen
    if OnTemp>=256                         // Wenn Bit gesetzt ist
       {OnTemp=OnTemp-256;Modul[8]=1;var.OldRollo=var.OldRollo+256;}     // Variablen setzen
    else
       {Modul[8]=0;}
 if OnTemp>=128                         // Wenn Bit gesetzt ist
...........
 if OnTemp>=1
 {OnTemp=OnTemp-1;Modul[0]=1;var.OldRollo=var.OldRollo+1;}     // Variablen setzen
    else
       {Modul0]=0;}
for lop=1 ...15
        {var.RolloOn[lop]=Modul[var.Modul[lop]];}
release;
   }
}


    Antwort schreiben


Antworten: