Das jährliche Weihnachtsfest von Kattenvenne findet in der großen Scheune von Bauer Hagemann statt. Dieses Jahr soll eine besondere Beleuchtung mit über 30 Lampen zum Einsatz kommen. Alles muss vollautomatisch gesteuert werden. Da bietet sich das Relais-Interface an. Man kann z.B. vier Interfaces zusammen verwenden und hat dann bis zu 32 Ausgänge. Nur gab es bisher keine geeignete Software für diesen Zweck.
Die Lösung bringt das kleine VB-Programm Relais32.exe. Es erlaubt sowohl eine direkte Steuerung mit der Maus als auch eine Programmierung. Es wird vorausgesetzt, dass bis zu vier Relais-Interfaces mit den Adressen 1, 2, 3 und 4 angeschlossen sind. Es funktioniert aber auch, wenn nur zwei oder drei Interfaces verwendet werden.
Download Relais32.exe mit Quelltext (Relais32.zip, 42 KB)
Die Programmierung erfolgt durch die Datei Relais32.txt, die mit einem beliebigen Texteditor bearbeitet werden kann. Jeweils eine Zeile enthält die gewünschten Bitmuster, eine zweite die Zeit in Millisekunden. Die maximal erlaubte Zeit ist hier etwa 60000 ms, also eine Minute. Am Ende der Datei steht endweder "Stop" für einen einfachen Durchlauf oder "Endlos" für Dauerbetrieb.
11111111111100001000000110000000 500 ms 01111111000011111100001101000000 200 ms 00111111001111001110011100100000 500 ms 00011111000110001111111100010000 200 ms 00001111000000001110011100001000 500 ms 00000111000000001110101100000100 200 ms 00000011000000001110101100000010 500 ms 00000001000000001111111100000001 200 ms 00000000000000001111111100000000 500 ms Stop 'Endlos
Hier ein Auszug aus dem Quelltext: Im Timer2 wird die Datei Relais32.txt gelesen und ausgeführt. Es wird jeweils eine Zeile gelesen, in Blöcke von 8 Bits zerteilt und an die einzelnen Interfaces gesendet.
Sub Relaisout(Adr, Dat) SENDBYTE 27 SENDBYTE Adr SENDBYTE 64 SENDBYTE Dat SENDBYTE 0 End Sub
Private Sub Timer2_Timer() Input #1, zeile Kommando = Left(zeile, 4) If Kommando = "Stop" Then Close #1 Timer2.Enabled = False Command1.Enabled = True End If If Kommando = "Endl" Then Close #1 Open "Relais32.txt" For Input As #1 Input #1, zeile End If Kommando = Left(zeile, 1) If (Kommando = "0") Or (Kommando = "1") Then n = Len(zeile) If n < 32 Then zeile = zeile + " " Dat = 0 d = Mid(zeile, 1, 1) If d = "1" Then Dat = Dat + 128 d = Mid(zeile, 2, 1) If d = "1" Then Dat = Dat + 64 d = Mid(zeile, 3, 1) If d = "1" Then Dat = Dat + 32 d = Mid(zeile, 4, 1) If d = "1" Then Dat = Dat + 16 d = Mid(zeile, 5, 1) If d = "1" Then Dat = Dat + 8 d = Mid(zeile, 6, 1) If d = "1" Then Dat = Dat + 4 d = Mid(zeile, 7, 1) If d = "1" Then Dat = Dat + 2 d = Mid(zeile, 8, 1) If d = "1" Then Dat = Dat + 1 Relaisout 1, Dat 'Adr = 1 Dat = 0 d = Mid(zeile, 9, 1) If d = "1" Then Dat = Dat + 128 d = Mid(zeile, 10, 1) If d = "1" Then Dat = Dat + 64 d = Mid(zeile, 11, 1) If d = "1" Then Dat = Dat + 32 d = Mid(zeile, 12, 1) If d = "1" Then Dat = Dat + 16 d = Mid(zeile, 13, 1) If d = "1" Then Dat = Dat + 8 d = Mid(zeile, 14, 1) If d = "1" Then Dat = Dat + 4 d = Mid(zeile, 15, 1) If d = "1" Then Dat = Dat + 2 d = Mid(zeile, 16, 1) If d = "1" Then Dat = Dat + 1 Relaisout 2, Dat 'Adr = 2 Dat = 0 d = Mid(zeile, 17, 1) If d = "1" Then Dat = Dat + 128 d = Mid(zeile, 18, 1) If d = "1" Then Dat = Dat + 64 d = Mid(zeile, 19, 1) If d = "1" Then Dat = Dat + 32 d = Mid(zeile, 20, 1) If d = "1" Then Dat = Dat + 16 d = Mid(zeile, 21, 1) If d = "1" Then Dat = Dat + 8 d = Mid(zeile, 22, 1) If d = "1" Then Dat = Dat + 4 d = Mid(zeile, 23, 1) If d = "1" Then Dat = Dat + 2 d = Mid(zeile, 24, 1) If d = "1" Then Dat = Dat + 1 Relaisout 3, Dat 'Adr = 3 Dat = 0 d = Mid(zeile, 25, 1) If d = "1" Then Dat = Dat + 128 d = Mid(zeile, 26, 1) If d = "1" Then Dat = Dat + 64 d = Mid(zeile, 27, 1) If d = "1" Then Dat = Dat + 32 d = Mid(zeile, 28, 1) If d = "1" Then Dat = Dat + 16 d = Mid(zeile, 29, 1) If d = "1" Then Dat = Dat + 8 d = Mid(zeile, 30, 1) If d = "1" Then Dat = Dat + 4 d = Mid(zeile, 31, 1) If d = "1" Then Dat = Dat + 2 d = Mid(zeile, 32, 1) If d = "1" Then Dat = Dat + 1 Relaisout 4, Dat 'Adr = 4 Input #1, zeile Zeit = Val(zeile) Timer2.Interval = Zeit End If End Sub
Zurück zur Startseite der MB-News
Zurück zur Startseite AK-Modul-Bus