Der Kontakt Bb6 Pin 34 und der Kontakt Bb6 Pin 33 soll mit Kontakt Ba6 Pin16 verbunden werden.

Bezüglich Signalfluss stellen Kontakt Bb6 Pin 34 und der Kontakt Bb6 Pin 33 einen Ausgang dar.

An dem Eingang Kontakt Ba6 Pin16 kann aber nur ein Drahtende und damit nur ein Ausgangspin angeschlossen werden. Außerdem wirken die beiden Ausgangskontakte von Bb6 zusammen mit dem Eingang von Ba6 Pin16 wir ein Oder. Deshalb muss dieses Oder zusätzlich simuliert werden.

Dafür wurde ein zusätzlicher Oder-Bauteiltyp, mit der Bezeichnung E_DOder, erstellt. Mit diesem E_DOder-Typ kann in der Bauteiliste ein DOder-Bauteil angelegt werden.

 

Beispiel der DOder-Anwendung:

Das DOder hat den Namen E_DOderA6 bekommen.

damit:

       {E_Bb6,Ro34,E_DOderA6,1},         // Kontakt Bb6 Pin34 an Eingang DOder Pin1

       {E_Bb6,Rs33,E_DOderA6,2},         // Kontakt Bb6 Pin33 an Eingang DOder Pin2

       {E_DOderA6,0,E_Ba6,Rs16},         // Ausgang DOder Pin0 an Kontakt Ba6 Pin16

 

Anschlusspins des DOders:

Pin 0        =   Oderausgang

Pin 1…5   =   Odereingänge 1…5

 

Durch das Einfügen des DOders wird nur eine Drahtverbindung und damit nur eine Anweisung mehr benötigt.

 

Im Umgekehrten Fall, wenn der Signalfluss von einem Kontakt auf die Eingänge beider Kontakte aufgeteilt werden soll,  wird kein DOder benötigt.

Bauteiltypen festlegen

Oben wurden die Namen der im Schaltschrank eingebauten Bauteile festgelegt. Nun muss noch zu jeden Bauteil der Bauteiltyp  definiert werden. Für die Zuordnung gibt es eine Zuordnungsliste „BTTYPEINTRAGLISTE“.  Hier wird zu jeden Bauteiltyp der Name des 1. und letzten Bauteils aus der Bauteilliste angegeben. Diese Zuordnung funktioniert nur so lange, wie die Bauteile in der Bauteilliste zum gleiche Bauteiltyp in einer Reihen stehen. Wenn das nicht durchgängig gegeben ist kann eine 2. und 3. Bauteiltyp-Zuordnung eingetragen werden. Unten ist ein Beispiel angegeben. Man kann am unteren Beispiel erkennen, dass im Allgemeinen mit nur sehr wenigen Einträgen auskommt.

 

// Bauteiltyp wird entsprechend dieser Liste in die Bauteilliste Eingetragen

//=======================================================

BTTYPEINTRAGLISTE BtTypEintragliste[BtTypEintraglisteMax] =

{

                        // Relais 6 Wechser

                        {E_RelL2W6,E_Rel6anf,E_RelW6end},   // bischer wurden nur Relais mit 6 Wechsler eingesetzt.

                        {E_SignalH,E_SigH,E_SigH},                 // ein fiktives Bauteil welches Signal = High liefert

                        {E_SignalL,E_SigL,E_SigL},                  // ein fiktives Bauteil welches Signal = Low liefert

                        // Draht-Oder-Verknüpfung

                        {E_DOder,E_DOderanf,E_DOderend},  // ein fiktives Bauteil für eine Oderverbindung

                        // Taktgeber

                        {E_StufenR40,E_Spiel,E_Spiel},// erzeugt 5*40mSek-Takte für ein Spiel

                        // Drehwähler

{E_DrehW_10,E_DdA,E_DdA},              // Drehwähler mit 10 Schaltschritte

usw  bis………………………

{E_DrehW_21,E_WdA,E_WdA},            // Drehwähler mit 21 Schaltschritte

                        // Speicherrrelais

                        {E_RelL2W6,Ca01,Ca022+64},              // Speicherrelias

{E_RelL2W6,Cc01,Cc05+64},                // Relais des Adderessdecodierers

{E_DOder,DOderS1,DOderS22+64},       // erforderkiche Oderanweisungen

                        {BtTypEintraglisteEnde,0,0}                   // Ende der BtTypzuweisungsliste

};

 

Oben sind die Anweisungen aufgeführt,  die zur Eintragung aller bisher verwendeten Bauteiltypen erforderlich sind.

Beispiel für die Eintragung der Relais mit 6 Wechsler:     {E_RelL2W6,E_Rel6anf,E_RelW6end},  

            E_RelL2W6      gibt den einzutragenden Bauteityp an

E_Rel6anf         gibt den Anfang des Eintrages in der Bauteilliste an

                        In der Bauteilliste wurde hierfür ein fiktives Bauteil für die Anfangskennung eingefügt

E_RelW6end     gibt das Ende des Eintrages in der Bauteilliste an

                        In der Bauteilliste wurde hierfür ein fiktives Bauteil für die Endekennung eingefügt

Durch diese Anweisung in der Bauteilliste werden vom Simulationsprogram ca. 500 mal der Relaistyp „E_RelL2W6“ eingetragen.

 

// Liste der vorhandenen BauteilTypen. Nur parametrieren, wenn neuer BauteilTyp erstellt wurde !!

//=================================================================================

enum {

            E_BauteilTypAnf,                      // Nr = 0 nicht verwenden

            E_SignalL, E_SignalH,              // liefert Signal = 0 bzw. Signal = 1        

            E_DOder,                                 // Oder-Verbindung, wird als zusätzliches Bt benötigt

            E_RelL1W6,                             // Relais mit 1 Rel.Spule und 6 Wechsler ( Anzahl parametrierbar)

            E_RelL2W6                              // Relais mit 2 Rel.Spulen und 6 Wechsler ( Anzahl parametrierbar)

            E_RelL1S6                               // Relais mit 1 Rel.Spule und 6 Schließer ( Anzahl parametrierbar)

E_RelL2S6                               // Relais mit 2 Rel.Spulen und 6 Schließer ( Anzahl parametrierbar)

            E_RelL1O6                               // Relais mit 1 Rel.Spule und 6 Öffner ( Anzahl parametrierbar)

            E_RelL2O6                               // Relais mit 2 Rel.Spulen und 6 Öffner ( Anzahl parametrierbar)

            E_DrehW_10,                           // DrehWähler mit 10 Schritte

E_DrehW_14,                           // DrehWähler mit 14 Schritte

E_DrehW_17,                           // DrehWähler mit 17 Schritte

E_DrehW_21,                           // DrehWähler mit 21 Schritte ( bis 29 Schritte parametrierbar)

            E_StufenR40,                           // erzeugt 5*40mSek-Takte für ein Spiel

            E_TaktR40,                              // erzeugt einen 40mSek-Takt ( Takt paramertierbar)

            E_BauteilTypEnde                    // Kennung Listenende

};

// Kontakt-Nummerierung  der verwendeten Bauteile entsprechend den Zuse-Schaltplänen

//*****************************************************************************************************

// Relais mit 6 Wechsler

//-------------------------

#define Rl1        0                      // Relaisspule 1

#define Rl2        1                      // Relaisspule 2

#define Ro11     4                      // Öffner

#define Rk12     2                      // Mitte W1

#define Rs13     3                      // Schließer

#define Ro14     7                      // Öffner

#define Rk15     5                      // Mitte  W2

#define Rs16     6                      // Schließer

#define Ro21     10                    // Öffner

#define Rk22     8                      // Mitte  W3

#define Rs23     9                      // Schließer

#define Ro24     13                    // Öffner

#define Rk25     11                    // Mitte  W4

#define Rs26     12                    // Schließer

#define Ro31     16                    // Öffner

#define Rk32     14                    // Mitte  W5

#define Rs33     15                    // Schließer

#define Ro34     19                    // Öffner

#define Rk35     17                    // Mitte  W6

#define Rs36     18                    // Schließer

 

// Drehwähler

//-----------------

// Für die Schaltstufen des Drehwählers werden wie im Schaltplan nur die Stufen-Nr. angegeben.

// weiterhin gibt es die Kontakte für:

#define DWl1    31                    // Erregerspule,  nur bei Schalterebene A wirksam

#define DWk1   30                    // Verteilerkontakt (Eingang), für alle Schalterebenen A...F

 

// DrahtOder

//-----------------

// Anschlusspins des DOders:

// 0       =   Oderausgang

// 1…5              =   Odereingänge 1…5

 

// Stützpunkte für Taktkombinationen innerhalb eines Spiels

//---------------------------------------------------------

#define SP_I                             E_Spiel,1                                

#define SP_II                            E_Spiel,2

#define SP_III                           E_Spiel,3

#define SP_IV                           E_Spiel,4                                

#define SP_V                           E_Spiel,5                                

#define SP_I_II                          E_DOder_I_II,0

#define SP_I_II_III                      E_DOder_I_II_III,0         

#define SP_II_III            E_DOder_II_III,0           

#define SP_IV_V                       E_DOder_IV_V,0

#define SP_III_IV_V                   E_DOder_III_IV_V,0

#define SP_V_I_II                      E_DOder_V_I_II,0         

Im Schaltplan wird dabei für SP_I_II_III nur I_II_II angegeben.

 

// Stützpunkte mit Pegel = 1

//-----------------------------

#define SP_G                           E_SigH,0                                 //

#define SP_G1                         E_SigH,0

#define SP_G2                         E_SigH,0

#define SP_G3                         E_SigH,0

#define SP_G4                         E_SigH,0

#define SP_G5                         E_SigH,0

#define SP_G6                         E_SigH,0

#define SP_G7                         E_SigH,0

#define SP_G8                         E_SigH,0

#define SP_G9                         E_SigH,0

Im Schaltplan wird dabei für SP_G1 nur G1 angegeben.

 

SimulationsProgramm

Wird in Teil 2 fortgeführt.

Das Simulationsprogramm hat folgende Aufgaben:

-          Die oben beschriebene Parametrierung wird optimiert für die Anwendung der Simulation aufbereitet.

-          Die zu Bauteile werden zyklisch im 0.2mSek-Takt entsprechend einer Abarbeitungsliste, den Bauteiltaten, der Bauteilverdrahtung und den jeweils aktuellen Bauteilstatus simuliert.

-          Für die Testphase gibt es eine Ein-, Ausgabe-Konsole.

-          Protokolldaten werden in eine Datei abgespeichert oder in einem Protokollfenster angezeigt.

-          Das Einlesen des Rechenprogramms wird nicht wie beim Original nicht vom Lochstreifen sondern aus einer Textdatei eingelesen.

-          Die endgültige Ein-, Ausgabe-Oberfläche  wird  weitgehend  gleich der Bedienoberfläche des Originals sein.

Bedienoberfläche

Wird in Teil 2 fortgeführt.

Projektfortschritt

26. 4.2015   Konzepterstellung

  1. 4.2015   Beginn der Z3-Simulations-Programms

15. 4.2015   Beginn der Mantissen-Addition

20. 4.2015   Umstellung auf vereinfachte Parametereingabe

24. 4.2015   Exponenten-Addition fertig

  8. 5.2015   Große Wechselstraße fertig

14. 5.2015   einfache Konsolenbedienung fertig

24. 5.2015   Bauteil-Kontaktnummernbezeichnung entsprechen Zuse Schaltplänen umgestellt

27. 5.2015   Implementierung des Speicherwerks einschließlich der Adressdekodierung (nicht getestet)

Resümee

-          Mit dem oben beschriebenen Verfahren ist man in der Lage die von Konrad Zuse bereitgestellten Schaltbilder der Zuse Z3 für die Simulation, durch Erstellung von Listen, aufzubereiten.

-          Das Simulationsprogramm wandelt die oben erstellten Listen in eine für die Simulation geeignete Form um.

-          Bisher wurden alle Relais parametriert und die Verdrahtung für die

o       Mantissen-Addition, Exponenten-Addition entsprechen Schaltbild 3/004 teilweise 3/002 und 3005

o       Große Weichenstraße entsprechend Schaltbild 3/003, sowie für den

o       Datenspeicher mit Adressdecodierer entsprechend Schaltbild 3/010, 3/011 und 3/013

realisiert.

-          Alle Funktionen bis auf den Speicher sind getestet.

-          Im Simulationspragramm sind bereits alle Simulationsroutinen realisiert die für das Rechenwerk und den Speicher erforderlich sind, zB. auch der Drehwähler .

-          Für den Test wurde eine Eingabefunktion in C sowie eine ausführliche Testprotokollierung erstellt.

-          Die Realisierung der Binär/Dezimal-Kodierung zur Eingabe und Anzeige werden erst realisiert, wenn alle anderen  Funktionen getestet sind.

-          Mit diesem Simulationskonzept kann das Schalten (Knacken) aller Relais mittels Analog- oder Digitalausgabe am Lautsprecher hörbar gemacht werden.

 

Ich würde mich sehr freuen, wenn sich jemand bei der Fertigstellung der Verdrahtung oder an der Erstellung einer „originalen“ Z3-Ein-/ Ausgabe-Konsole beteiligen würde.

 

Diese Website nutzt ausschließlich technisch erforderliche Cookies. Wir benutzen keine Cookies, die eine Einwilligung erfordern würden. Weitere Informationen finden Sie in unserer Datenschutzerklärung. X