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

threads stoppen?? Kategorie: Programmierung (von Markus - 26.11.2006 15:48)
Ich nutze:
C-Control II Station, OSOPT V3.1
Hallo,

nachdem ich die 8574 dazu bewegen konnte als gemischte I/O
zu arbeiten - hier ein Dank an nitraM für die Hilfestellung
habe ich ein weiteres Problem mit dem Programm.

Ich starte das Prg und alles funktioniert wie es soll.
nach einer Zeit x ( +/- 2 std) werden in die sollwerte
Variablen für Sonnenaufgang nicht nachvollziebare Werte
geschrieben die im Bereich des Sonnenuntergangs liegen
und alle Rollos fahren zu. (Auswertung des Sollwerts ist ok)

Wenn ich das Prg am Abend starte und über Nacht laufen
lasse fällt der Fehler erst einmal nicht auf. Sehe ich mir
morgens die Steuerung an stelle ich fest, das diverse
Threads stehen geblieben sind z.b. das Display. Die Uhrzeit
ist stehengeblieben und zwar immer um 05:59:59 Aber die
Funktionen der Rollos sind voll funktionsfähig - soll
heissen sie öffnen zur angegebenen Zeit.

Hier der Code mit dem ich Quasi eine Zufallsreihenfolge für
die Rollobetätigung erzeuge.
Im ersten Teil habe ich einen Port der öfters betätigt wird
dazu benutzt eine Zeitdifferenz zu erzeugen.

Mit der Funktion Sonne werden die Zeiten für Sonnen-auf und
-untergang in Integer umgerechnet.
in der Funktion Sasudiff wir die Betätigungszeit für jedes
Rollo berechnet.

Die Funktion Sonne wird beim Start und um 0:00 Uhr auf-
gerufen.
Die Funktion Sasudiff wird beim Start für und um 0:00 Uhr
für alle Rollos aufgerufen und bei �nderung der Differenz
für das entsprechende Rollo aufgerufen.

Wenn ich den Code aus der Funktion Sasudiff auf Kommentar
setze läuft das Prg ohne Mängel durch.



if ports.get(8)==0                                       // Wenn Wasserzapf In an
   {
   if var.RChg==0                                        // Und neuer Zapf
       {var.RChg=1;                                      // Merker für Zapf aktiv
        var.PNum=var.PNum+1;                             // Aktuelles Rollo um 1 erhöhen
        if var.PNum>16                                   // Wenn Aktuelles Rollo 16
           {var.PNum=1;}                                 // Rollo auf 1 zurücksetzen
        if system.second()<30                            // Wenn Sekunde kleiner 30
           {var.RDiff[var.PNum]=system.second();}        // Sekude als diff nehmen
        else                                             // wenn gröÃ?er 30
           {var.RDiff[var.PNum]=system.second()-30;}     // 30 abziehen und nehmen
        wait cfc.SaSuDif(var.PNum);
        sleep 500*var.RDiff[var.PNum];
       }
   }
else                                                     // wenn Zapf Aus
    {var.RChg=0;}                                        // neuer Zapf zurücksetzen


function Sonne() returns int                // Zeiten für Sonnenauf - untergeng in Interger Umrechnen
{
var.SaZ=var.Sa.H*60+var.Sa.M;                    // Sonnenaufgang
var.SuZ=var.Su.H*60+var.Su.M;                    // Sonnenuntergang
return 1;}

function SaSuDif (int din) returns int       // Differenz pro Rollo für Sonnen - Auf und Untergang
{
var.SonneAuf[din]=var.SaZ+var.RDiff[din]-15;      // Sonnenaufgang pro Rollo berrechnen
var.SonneZu[din]=var.SuZ+var.RDiff[din]-15;       // Sonnenuntergang pro Rollo berechnen

while var.SonneAuf[din]<var.AufVorZ               // Wenn Rollozeit vor Auf Vor
      {var.SonneAuf[din]=var.SonneAuf[din]+15;}   // 15 min später

while var.SonneAuf[din]>var.AufNachZ              // Wenn Rollozeit nach Auf Nach
      {var.SonneAuf[din]=var.SonneAuf[din]-15;}   // 15 min früher

while var.SonneZu[din]<var.ZuVorZ                 // Wenn Rollozeit vor Zu Vor
      {var.SonneZu[din]=var.SonneZu[din]+15;}     // 15 min später

while var.SonneZu[din]>var.ZuNachZ                // Wenn Rollozeit nach Zu Nach
      {var.SonneZu[din]=var.SonneZu[din]-15;}     // 15 min früher
return 1;}


Hat jemand eine Idde was das sein könnte?

GruÃ?
Markus
 


    Antwort schreiben


Antworten:

Re: threads stoppen?? (von nitraM - 26.11.2006 19:46)