Logikproblem

Es gibt Probleme mit BAHN und Co.? Dann einfach hier posten!
Antworten
Xonit
Beiträge: 20
Registriert: Freitag 2. Dezember 2016, 09:11
Wohnort: Düsseldorf

Logikproblem

Beitrag 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
Benutzeravatar
b1
Beiträge: 129
Registriert: Sonntag 27. August 2006, 17:23
Wohnort: Tschechien (Czech republic)
Kontaktdaten:

Re: Logikproblem

Beitrag 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.
Xonit
Beiträge: 20
Registriert: Freitag 2. Dezember 2016, 09:11
Wohnort: Düsseldorf

Re: Logikproblem

Beitrag 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
Antworten