Der Tastenprogramm-Tippomat
Bei
der Entwicklung des Lernpakets zur Tastenprogrammierbaren Steuerung waren immer wieder umfangreiche Tests
nötig. Wenn man nun einen Fehler entdeckte, war oft nicht gangz
klar: Ist das wirklich ein Fehler oder hat man sich vertippt? Ein
unfehlbarer Tippomat musste entwickelt werden! Und weil ja nur drei
Tasten bedient werden müssen, war die Sache einfach: Die Leitungen
TXD, DTR und RTS einer seriellen Schnittstelle steuern jeweils einen
Transistor an, der pararllel zu der eigentlichen Tatse liegt. Ohne
Ansteuerung ist der Transistor sozusagen garnicht da, an der
übrigen Bedienung ändert sich also nichts. Erst wenn man die
Schnttstelle anschließt und das Tippomatprogramm startet, tut
sich was. Die Schaltung ist sehr einfach und konnte auf einer
Elexs-Platine untergebracht werden. Ursprünglich wurden die vier
Drähte in die Steckplatine gesteckt. Aber jetzt wurden sie an
einen Pfostenverbinder gelötet, damit auch die Franzis-Platine
bedient werden kann.
Die
zugehörige Software wurde mit VB6 geschrieben. Man tippt oder
kopiert das Programm in Fom von Hexadezimalzahlen in das obere
Textfenster. Dann drückt man auf die Prog-Schaltfläche und
startet damit die Übertraghung. An der TPS-Platine sieht man die
einzelnen Eingaben genauso, als würde man sie selbst eintippen.
Klar, der TPS-Controller kann nicht unterscheiden, wer da gerade tippt.
Nach dem Ende der Übertragung startet das neue Programm, weil der
Tippomat die Rest-Taste drückt. Bei Bedarf kann man auch im
laufenden Betreib die Reset-Schaltfläche betätigen, um ein
Programm neu zu starten. Noch ein besonderer Luxus: Das Programm
muss nicht auf der Seite Null starten, sondern man kann z.B. ein
Unterprograogramm weiter unten eingeben lassen. Dazu ändert man
das Page-Textfenster.
Video zum Tippomat in Aktion: http://youtu.be/c6oaJzAajE0
Private Sub Command1_Click()
Command1.Enabled = False
prog$ = Text1.Text
Text2 = ""
RTS 1 'Programmiermodus
TXD 1 'Reset
DELAY 200
TXD 0
DELAY 1000
RTS 0
DELAY 300
Page = Val(Text3.Text)
If Page > 0 Then
For n = 1 To Page
For i = 1 To 16
RTS 1
DELAY 100
RTS 0
DELAY 100
RTS 1
DELAY 100
RTS 0
DELAY 400
Next i
Next n
End If
p = 0
For n = 1 To Len(prog$)
z = Mid$(prog$, n, 1)
If z > " " Then
d = Asc(z)
If d > 64 Then d = d - 65 + 10 Else d = d - 48
If (d > -1) And (d < 16) Then
Text2 = Text2 + Str(d) + " "
DoEvents
DTR 1
DELAY 50
DTR 0
DELAY 50
If d > 0 Then
For j = 1 To d
DTR 1
DELAY 50
DTR 0
DELAY 50
Next j
End If
DELAY 80
RTS 1
DELAY 80
RTS 0
DELAY 200
p = p + 1
If p = 2 Then
p = 0
DELAY 800
End If
End If
End If
Next n
TXD 1
DELAY 200
TXD 0
Command1.Enabled = True
End Sub