Redundante Sensoren

Mal eine ganz blöde Frage:
Wie unterscheiden redundante Sensoren, wer richtig und wer falsch liegt?
Sind da 5 Stück verbaut, 4 sagen "ja" einer sagt "nein"->also werden die 4 x "ja" wohl richtig liegen.

Wie macht das die "KI"?

Es kann eine externe Störung beim Sensor vorliegen, oder ein Defekt. Das sollte man möglichst wissen oder vorhersehen können.

Eine Möglichkeit wäre der Median aller Signale, der sollte dann bis zu 2 Ausfällen korrekt sein. Dazu alle Signale der Größe nach sortieren und das mittlere (3. von 5) auswählen.

freddy64:
Wie macht das die "KI"?

Das K ist irreführend.

3 Sensoren. Der Mittelwert der zwei nächsten zählt.

noiasca:
nächsten

nähesten :wink:

noiasca:
wenn dir die lieber sind.

Womit das !K geklärt wäre :wink:

Wenn ich (array[mypos-1]+array[mypos]+array[mypos+1])/Anzahlarray nehme, sind die nächsten 2 immer fest bestimmt.

Aus meiner Sicht müsste für jeden Sensor einzeln ein Wert ermittelt werden und dann aus denen Mittelwert.

float calc(int a, int b, int c)
{
  int16_t ab, ac, bc;
  ab = a - b;
  ab = abs(ab);
  ac = a - c;
  ac = abs(ac);
  bc = b - c;
  bc = abs(bc);
  if (ab < ac)
  {
    if (ab < bc)
      return (a + b) / 2;
    else
      return (b + c) / 2;
  }
  else
  {
    if (ac < bc)
      return (a + c) / 2;
    else
      return (b + c) / 2;
  }
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin (9600);

  Serial.println(calc(10, 10, 10));
  Serial.println(calc(10, 10, 5));
  Serial.println(calc(10, 5, 5));
  Serial.println(calc(10, 8, 5));
  Serial.println(calc(5, 8, 10));

}

void loop() {}

10.00
10.00
5.00
9.00
9.00

plausibel?

der geneigte Leser kann ja das eine If noch wegoptimieren.

Variante / weiterer Lesestoff als Nachtlektüre: Ch2-7

Was wäre mit:
10+10+5+9+9= 43
43/5=8,8
Werte die mehr als 2 Abstand von Durchschnitt haben werden nicht berücksichtigt.
Das heißt 10+10+9+9=38
38/4=9,5

9,5<

So würde ich die 5 Werte prüfen und wenn möglich entfernte Werte nicht in den Durchschnitt mit nehmen.

Mal mit 2 Werten die nicht passen:
10+10+5+5+9=39
39/5=7,8
Werte die mehr als 2 Abstand von Durchschnitt haben werden nicht berücksichtigt.
9=9
9/1=9

9<

Oder von der anderen Seite:
10+10+5+5+5=35
35/5=7
Werte die mehr als 2 Abstand von Durchschnitt haben werden nicht berücksichtigt.
5+5+5=15
15/3=5

5<

Kommt mal auf die Sensoren und die Meßwerte an.
Es gibt Sensoren die wenn sie ausfallen werte geben an denen man sieht daß der Sensor kaputt ist.
Dann gibt es kaputte Sensoren die unmögliche Werte liefern. Werte sind mit dem Aufbau nicht möglich.
Dann gibt es Sensoren die nicht so reagieren wie sie sollen zB Temperatursensor an einer beheizten Teil. Wenn geheizt wird muß sich der Meßwert ändern.

Ansonsten wenn mehrere Sensore das gleiche messen dann hat die Mehrheit recht.

Grüße Uwe

uwefed:
Kommt mal auf die Sensoren und die Meßwerte an.
Es gibt Sensoren die wenn sie ausfallen werte geben an denen man sieht daß der Sensor kaputt ist.
Dann gibt es kaputte Sensoren die unmögliche Werte liefern. Werte sind mit dem Aufbau nicht möglich.
Dann gibt es Sensoren die nicht so reagieren wie sie sollen zB Temperatursensor an einer beheizten Teil. Wenn geheizt wird muß sich der Meßwert ändern.

Und dann gibt es noch libs, die aus kaputten Werten irgendwas machen.
DAS ist ein viel grösseres Problem für diejenigen, die hier nach eigenartiger Intelligenz fragen.

Spätestens wenn Dir bei den Ds18x20 ein Wert von 85°C zurück gegeben wird und Du meinst, das im Vorlauf alles schick ist und gleichzeitig die Hütte kalt, fragst Du Dich was ist da gelaufen...

Ansonsten wenn mehrere Sensore das gleiche messen dann hat die Mehrheit recht.

Damit hebe ich nochmal hervor, was ich bereits oben schrub:
Aus meiner Sicht müsste für jeden Sensor einzeln ein Wert ermittelt werden und dann aus denen Mittelwert.

Das erweitere ich jetzt noch:
Wenn Fehlerwert, geht der nicht in die Berechnung ein - nach x Fehlerwerten wird ein Flag gesetzt -> Notbetrieb.

uwefed:
Kommt mal auf die Sensoren und die Meßwerte an.
Es gibt Sensoren die wenn sie ausfallen Werte liefern, an denen man sieht daß der Sensor kaputt ist.

Ja, wie beim DS18B20
Wenn die auf der Leitung Störungen bekammen (bevor ich geschirmte Kabel verwendet habe), hatten sie als Ergebnis immer -127 Grad, oder eben das korrekte Ergebnis. Dazwischen gab es eigentlich nichts. Da konnte man das Ergebnis einfach weg lassen und alles ist gut. Die sind auch sehr stabil in den Ergebnissen. Da braucht es keinen Durchschnitt.

Franz

Franz54:
Ja, wie beim DS18B20
, hatten sie als Ergebnis immer -127 Grad,

Das ist aber nicht vom Sensor.
Das macht die DallasTemperature.lib, wenn der nicht gefunden wird:

#define DEVICE_DISCONNECTED_C -127

my_xy_projekt:
Das ist aber nicht vom Sensor.
Das macht die DallasTemperature.lib, wenn der nicht gefunden wird:

#define DEVICE_DISCONNECTED_C -127

Ja, das ist schon klar. Ist aber jedenfalls ein eindeutiges Ergebnis. Die Lib macht das recht gut. Wie beschrieben, wenn die Daten nicht plausible waren, durch Störungen in´s Kabel, kommt immer dieser eindeutig falsche Wert.

Franz54:
Die Lib macht das recht gut.

Jup! Da ist viel Gehirnschmalz eingeflossen...

Ich hab blos noch nicht rausgefunden, wie man feststellen kann ob 85 das Ergebnis ist oder der Sensor aus dem PwrOn-Reset kommt.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.