Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Fahrstuhlsteuerung

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 13.02.2008, 18:20    Titel: Fahrstuhlsteuerung Antworten mit Zitat

Also, die Problemstellung:
Code:
Baue einen Schaltplan, bestehend aus AND und OR-Gattern, für einen Fahrstuhl. Das zugehörige Gebäude hat 14 Stockwerke. Die Schaltung muss nach der Wahl des Stockwerks entscheiden, ob der Fahrstuhl höher oder tiefer fahren soll. In dem Gebäude verkehren 2 Fahrstühle, einer für den Bürotrakt, einer für den Wohntrakt. Zum Bürotrakt (Fahrstuhl 1) gehören die Etagen 2, 4, 5, 7 , 8, 13, zum Wohntrakt die Etagen 1, 3, 6, 9, 10, 11, 12, 14. Beide Fahrstühle fahren zudem das Erdgeschoss an.

Ich wäre das Problem so angegangen, dass ich 8 Eingänge (4 für aktuelle Etage, 4 für Zieletage) verwende, sowie 2 Ausgänge (einer für hoch, einer für runter. Eine weitere Schaltung muss dafür sorgen, dass beide Ausgänge niemals zugleich 1 sein dürfen.)
Kennt ihr eine bessere Variante? Weil, eine Logiktabelle mit 256 Einträgen ist mir zu heftig, und beim Karnaught-Diagramm weiß ich nicht, wie ich es von 4 nach 8 Bit erweitere...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 13.02.2008, 21:12    Titel: Antworten mit Zitat

Zum Ermitteln der Fahrtrichtung baust Du eine Vergleicherschaltung. Die besorgt das Selektieren von alleine. Wenn Du das sicherstellen willst, daß immer nur ein Ausgang 1 ist, nimm eine xOR.

Darüberhinaus würde ich mal im Elektronik-Kompendium posten, das sind die Hardware-Freaks.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 13.02.2008, 22:28    Titel: Antworten mit Zitat

Warum eine Vergleicherschaltung?
Die Prüft doch ob die Werte gleich sind?
Wir hatten (Ist eine Gruppenaufgabe) überlegt, die Differenz mit einem Volladdierer auszurechnen, aber irgendwie haben wir das nicht zusammenbekommen...
und XOR darf ich noch nicht nehmen, muss ich halt "nachbilden" happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 14.02.2008, 00:40    Titel: Antworten mit Zitat

Ich hab jetzt einfach mal ne Logiktabelle erstellt: http://pmedia.max06.de/
Die würde 91 AND-Gatter erfordern pro Schaltung, und das ist eindeutig zu aufwendig für ein Hochhaus mit 14 Etagen.... da es dann insgesamt 182 AND-Gatter wären.
Das soll man mal - als Schüler - ordentlich auf Papier bringen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 14.02.2008, 09:56    Titel: Antworten mit Zitat

Ein Vergleicher stellt nicht nur fest, ob zwei Zahlenwerte gleich sind, sondern auch, welches davon größer ist, und hat dafür entsprechende Ausgänge. Solche Schaltungen gibt es (natürlich auch) integriert, aber sie lassen sich auch nachbilden.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 14.02.2008, 13:17    Titel: Re: Fahrstuhlsteuerung Antworten mit Zitat

PMedia hat Folgendes geschrieben:
Eine weitere Schaltung muss dafür sorgen, dass beide Ausgänge niemals zugleich 1 sein dürfen.


Wieso? Die beiden Fahrstühle fahren doch nicht im selben Schacht? Und ist das Erdgeschoss nicht Etage 0? Die erste Etage gehört doch schon zum Wohntrakt.

Gruß
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 14.02.2008, 19:44    Titel: Antworten mit Zitat

Mit beiden Ausgängen meinte ich, dass ein Ausgang für Hoch, einer für runter verwandt wird. Die dürfen deshalb also nicht 1 sein, weil sonst in beide Richtungen gleichzeitig gefahren werden müsste.
Das Problem wurde heute mit AnzahlStockwerke*2 AND-Gattern gelöst, ganz geblickt hab ichs noch nicht, aber mal sehen :]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 15.02.2008, 00:24    Titel: Antworten mit Zitat

Code:
Dim As UByte UpUp, Down, S, I, X, Y

#define i0 val(mid(bin(i,4),4,1))
#define i1 val(mid(bin(i,4),3,1))
#define i2 val(mid(bin(i,4),2,1))
#define i3 val(mid(bin(i,4),1,1))
#define s0 val(mid(bin(s,4),4,1))
#define s1 val(mid(bin(s,4),3,1))
#define s2 val(mid(bin(s,4),2,1))
#define s3 val(mid(bin(s,4),1,1))
#define recalc upup = (i2 AND s3 ) OR (i1 AND (s2 OR s3)) OR (i0 AND (s1 OR s2 OR s3)) : down = (i1 AND s0 ) OR (i2 AND (s1 OR s0)) OR (i3 AND (s2 OR s1 OR s0))
width 80,25
s = 1
i = 1

Print "i0 i1 i2 i3 s0 s1 s2 s3 " + Chr(186) + " up " + Chr(186) + " down " + Chr(186)
Print string(24,205);
Print string(1,206);
Print string(4,205);
Print string(1,206);
Print string(6,205);
Print string(1,206);
Print string(43,205);

For Y = 0 to 3 
  s = 1
  For X = 0 to 3
      recalc
      print " "+str(i0) + "  " + str(i1) + "  " + str(i2) + "  " + str(i3);
      print "  "+str(s0) + "  " + str(s1) + "  " + str(s2) + "  " + str(s3);
      print " " + chr(186) + "  " + str(upup) + " " + chr(186);
      print "    " + str(down) + " " + chr(186)
      s = s SHL 1
  Next
  i = i SHL 1
Next



sleep

Der arbeitet jetzt einwandfrei für 4 Etagen:

Code:

i0 i1 i2 i3 s0 s1 s2 s3 ║ up ║ down ║
═══════════════════════════╬════╬══════╬═══════════════════════════════════════════
 1  0  0  0  1  0  0  0 ║  0 ║    0 ║
 1  0  0  0  0  1  0  0 ║  1 ║    0 ║
 1  0  0  0  0  0  1  0 ║  1 ║    0 ║
 1  0  0  0  0  0  0  1 ║  1 ║    0 ║
 0  1  0  0  1  0  0  0 ║  0 ║    1 ║
 0  1  0  0  0  1  0  0 ║  0 ║    0 ║
 0  1  0  0  0  0  1  0 ║  1 ║    0 ║
 0  1  0  0  0  0  0  1 ║  1 ║    0 ║
 0  0  1  0  1  0  0  0 ║  0 ║    1 ║
 0  0  1  0  0  1  0  0 ║  0 ║    1 ║
 0  0  1  0  0  0  1  0 ║  0 ║    0 ║
 0  0  1  0  0  0  0  1 ║  1 ║    0 ║
 0  0  0  1  1  0  0  0 ║  0 ║    1 ║
 0  0  0  1  0  1  0  0 ║  0 ║    1 ║
 0  0  0  1  0  0  1  0 ║  0 ║    1 ║
 0  0  0  1  0  0  0  1 ║  0 ║    0 ║
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz