1

Téma: SDS-C program nefunguje tak jak má.

Dobrý den.
Mám dotaz,  jsem začátečník a vytvořil jsem si v SDS-C  ver 06,  270812 program pro rozsvěcování osvětlení domu.  Jenže v SDS-Debuggeru mě program pracuje tak,  jak potřebuji  ale po uploadu do SDS MICRO DIN E R2 relé1 sys[231] sepne  ale po uplynutí daného času nevypne. ??? Vytvořil jsem dvě verze které v debuggeru fungují  ale v micru ne. Tak si nevím rady. Proto vás prosím o radu, či případnou pomoc děkuji.
Zde přikládám program, první verze.

#define HODINA sys[8]   // zjisti hodinu  aktualniho casu
#define MINUTA sys[9]   // zjisti minutu  aktualniho casu
#define VTERINA sys[10] // zjisti sekundu aktualniho casu
#define RELE2  sys[232] // ovladani cerpadla rybnik
#define RELE1  sys[231] // ovladani cerpadla bazen
#define CIDLO3 sys[312] // tep.cidlo3 venek

var CIDLOSTUPNE3;

main
{
 echo('---Je prave: 'HODINA':'MINUTA':'VTERINA'---');
CIDLOSTUPNE3 = CIDLO3 / 100;
 echo('---Venkovni teplota: 'CIDLOSTUPNE3' st.C---');
 
// smycka na zapinani rele2 Osvetleni dum
// vetsi jak 16:30 a soucasne mensi jak 23:59 a soucasne je vyple osvetleni
 if ((HODINA > 15 && MINUTA > 29)&&(HODINA < 23 && MINUTA < 59) && RELE2==0) {
    echo('ZAPINAM OSVETLENI DUM = rele2.');
    RELE2 = 1;
    }
 else {
      // slouzi pro informovani ze neco v predchozi podmince nebylo splneno a zaroven jaky byl stav osvetleni
      if (RELE2==1) { echo ('NEZAPINAM OSVETLENI DUM protoze rele2 je zapnute'); };
      if (RELE2==0) { echo ('NEZAPINAM OSVETLENI DUM rele2 je sice vypnute ale nejsou splnene vsechny podminky'); };
      };

// smycka na vypinani rele2 Osvetleni dum
// (mensi jak 16:30 nebo vetsi jak 23:58) a soucasne je zaple osvetleni
 if ((HODINA < 1 &&  MINUTA > 0) || (HODINA < 15 && MINUTA < 29) && RELE2==1){
    echo('VYPINAM OSVETLENI DUM = rele2');
    RELE2 = 0;
    }
    
 else {
      if (RELE2==0) { echo ('NEVYPINAM OSVETLENI DUM protoze rele2 je vypnute'); };
      if (RELE2==1) { echo ('NEVYPINAM OSVETLENI DUM rele2 je sice zapnute ale neni splnena ani jedna z podminek'); };
      };

echo(' ');
echo(' ');
echo(' ');
   wait(10000);


 //konec - main bude spusteno automaticky znovu 

Zde přikládám druhou verzi

// program pro ovladani rele Osvetleni dum
#define HOD sys[8]   // zjisti hodinu  aktualniho casu
#define MIN sys[9]   // zjisti minutu  aktualniho casu
#define VTE sys[10] // zjisti sekundu aktualniho casu
#define RELE2  sys[232] // osvetleni dum



zapnout_osvetleni
{
 echo('---Je prave: 'HOD':'MIN':'VTE'---');
  RELE2 = 1;
  echo ('zapinam osvetleni');
}

vypnout_osvetleni
{
echo('---Je prave: 'HOD':'MIN':'VTE'---');
  RELE2 = 0;
  echo ('vypinam osvetleni');
}

main
{
 


  //pockame 10 sekund, az nabehne cely system
wait (10000);


  //------------------------------------------------------------


label smycka_rizeni://hlavni smycka, ve ktere se vykonava proces



   if (HOD > 16 && MIN > 29 && HOD <= 23 && MIN <= 59 && RELE2==0)zapnout_osvetleni();
   if (HOD >= 0 && MIN >= 0 && HOD <= 16 && MIN < 29 && RELE2==1)vypnout_osvetleni();
   

  //a porad dokola
  goto smycka_rizeni;
}

Předem děkuji a rád se nechám poučit.

2

Re: SDS-C program nefunguje tak jak má.

Pro porovnání sepnutí relé použijte !=0. Ono totiž v debugeru je zap-vyp 0-1, ale v sds je to 0-255. Kdysi už se to tu řešilo proč to tak je.

3

Re: SDS-C program nefunguje tak jak má.

Tuším ze nový SDSC.exe už by to měl mít opravené (tj. dávat 0 nebo 255) - zjistim.

Ještě ty echo() funkce - jednotlivé parametry se mají oddělovat čárkou, např.

echo('---Je prave: ',HODINA,':',MINUTA,':',VTERINA,'---');

Pokud ten program stále nepojede, poradíme - od toho je zde toto fórum. Jen napsat.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !