Autor Beitrag
Maria2
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 10.03.19 10:34 
Hallo Zusammen,

ich habe folgendes Problem in mein Code:
Ich benutze insgesamt zwei elektrisch Steuerbare Ventile für die regelung von Druck.
Leider ist das Ventil 1 (Relai1) immer geschlossen, obwohl es laut mein Code je nach If-Anfrage öffnen oder schließen soll. Bei ventil 2(relai2) funktioniert es problemlos.
Ich sitze seit drei Wochen daran und finde immer noch nicht den fehler. Kann mir bitte jemand dabei helfen?

Code in Arduino für Ventil:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
int SollDruck=150 //das soll er erreichen
int Hysterese=1

void uedruck_Flasche3(){
  //Unterdruckventil zu macheen
  
  if (Relai1Flag)
  {
    if (druck3  <= PsollF3pos - Hyst1) {           // wenn der Druck über 150 mbar ist, dann Ventil zu
     digitalWrite(Relai1, LOW);
     digitalWrite(Relai2, LOW);
    //PF3OK = false;
    }
    if (druck3 >= PsollF3pos)
    //else 
    {                          // ist der Druck >= 150 mbar, dann mach das Ventil auf
      //PF3OK = true;
      digitalWrite(Relai1, HIGH);
      digitalWrite(Relai2, LOW);
    }
  }
  else
    digitalWrite(Relai1, LOW);
    digitalWrite(Relai2,HIGH);
}

// Unterdruck im Flasche 3 erzeugen
void undruck_Flasche3(){
 
  if (Relai2Flag)
  {
    if (druck3  > PsollF3neg - Hyst1) {           // wenn der Druck über -150 mbar ist, dann Ventil zu
     digitalWrite(Relai2, LOW);
     digitalWrite(Relai1, LOW);
  
    }
    //else
    if (druck3 <= PsollF3neg) 
    {                          // ist der Druck <= -150 mbar, dann mach das Ventil auf    
      digitalWrite(Relai2, HIGH);
      digitalWrite(Relai1, LOW);
    }
  }
  else 
    digitalWrite(Relai2, LOW);
    digitalWrite(Relai1,HIGH);
}

Für GUI Visual Studio C# hab ich folgendes in arduino eingegeben:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
if (data == "motorOff"//für Überdruck
{
    pumpe_unFlag = true;
    pumpe_ueFlag = false;
    Relai1Flag = false;
    Relai2Flag = true;
}
if (data == "motorOn"//für Unterdruck
{
    pumpe_unFlag = false;
    pumpe_ueFlag = true;
    Relai1Flag = true;
    Relai2Flag = false;
}


Versteht jemand wo der fehler ist?

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Topic aus Alle Sprachen - Alle Plattformen verschoben am So 10.03.2019 um 10:17
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 10.03.19 11:18 
Da fehlen wohl Klammern um
ausblenden C#-Quelltext
1:
2:
3:
  else
    digitalWrite(Relai1, LOW);
    digitalWrite(Relai2,HIGH);


PS: Es heißt Relais.
Maria2 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 10.03.19 12:36 
Leider funktioniert es trotzdem nicht :-(

Warum funktioniert dann Ventil 2 und bei Ventil 1 ist es immer geschlossen, warum regelt Ventil 1 nicht?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 10.03.19 13:12 
Dann debugge den Code per Einzelschritt und überprüfe, ob die richtigen Code-Zeilen durchlaufen werden.

Ich würde dir eigentlich sogar zu Unit-Tests raten, habe aber den Eindruck, daß du dabei überfordert bist, obwohl es dir viel Arbeit (und Zeit) abnehmen würde.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 11.03.19 06:01 
- Nachträglich durch die Entwickler-Ecke gelöscht -