Seite 1 von 1

Logikproblem

Verfasst: Mittwoch 12. April 2017, 11:32
von Xonit
Hallo zusammen!

Ich möchte eine Signalanlage von zwei anderen Anlagen abhängig machen.
Die Anlage soll frei sein, wenn S189 belegt und S178 belegt
wenn S189 frei und S178 frei
wenn S189 frei und S178 belegt
Die Anlage soll belegt sein, wenn S189 belegt und S178 frei.

Als Tabelle:
s189 0 1 1 0
s178 0 0 1 1
Sign 0 1 0 0

Ich bekomme die dazu notwendige Logik nicht hin. Kann mir vielleicht jemand helfen?

Gruß, Tino

Re: Logikproblem

Verfasst: Mittwoch 12. April 2017, 12:04
von b1
Naja, mit "brute force" kann man es gleich so machen, wie du es schreibst, also

Code: Alles auswählen

(!s189&!s178)|(s189&s178)|(s189&!s178)
Natürlich gehts auch einfach. Nämlich, wenn man sich die Logiktabelle ansieht

Code: Alles auswählen

s189 s178   sNeu
  1     1      1
  1     0      1
  0     1      0
  0     0      1
(1=frei, 0=belegt)
sieht man gleich, dass "belegt" kommt, wenn s189 belegt und s178 frei ist, das heisst !s189&s178.

Wir wollen aber nicht "belegt", sondern "frei", also machen wir die Negation davon:

Code: Alles auswählen

!(!s189&s178)
was laut einer Regel (Name weiss ich nicht mehr - Negation der Konjunktion) equivalent mit

Code: Alles auswählen

s189|!s178
ist, was die optimalste Formel ist.

Also:
s189|!s178
Noch zur Erklärung, was diese Formel heisst. Wenn wir es lesen, heisst es, die neue Signalanlage ist frei, wenn und nur wenn: s189 ist frei oder s178 ist belegt, was der Logiktabelle entspricht.

LG

P.S.: ich schaue gerade, du hast 1 und 0 in der Tabelle umgekehrt (so wie Zeilen und Spalten), für mich ist 1 = true = frei, aber es spielt jetzt keine Rolle für die Erklärung, es sind nur Symbole, man könnte von mir aus Apfel für frei und Birne für belegt benutzen.

Re: Logikproblem

Verfasst: Mittwoch 12. April 2017, 17:51
von Xonit
Vielen Dank!

Du hast recht, bei mir war 0=frei. Aber Dein nicht negierter Ausdruck funktioniert wunderbar. Ich habe es nicht einmal mit Brute Force und Ausprobieren geschafft...

Gruß, Tino