
Das Relais-Interface, Programmierung
Das erste Programmbeispiel soll die direkte Steuerung der
Relais über Visual Basic demonstrieren. Hier wird die generelle Geräteadresse
255 verwendet, sodass die Geräteadresse nicht bekannt sein muss und mehrere
Geräte mit unterschiedlichen Adressen parallel gesteuert werden können.
Private Sub Form_Load()
i = OPENCOM("COM1")
If i = 0 Then
i = OPENCOM("COM2")
Option1.Value = True
End If
If i = 0 Then MsgBox ("COM Error")
Timer1.Interval = 100
End Sub
Private Sub Form_Unload(Cancel As Integer)
CLOSECOM
End Sub
Private Sub Option1_Click()
CLOSECOM
i = OPENCOM("COM1")
If i = 0 Then MsgBox ("COM1 Error")
End Sub
Private Sub Option2_Click()
CLOSECOM
i = OPENCOM("COM2")
If i = 0 Then MsgBox ("COM2 Error")
End Sub
Sub Relaisout(Dat)
SENDBYTE 27
SENDBYTE 255
SENDBYTE 64
SENDBYTE Dat
SENDBYTE 0
End Sub
Private Sub Timer1_Timer()
Dat = 0
Dat = Dat + Check1.Value
Dat = Dat + Check2.Value * 2
Dat = Dat + Check3.Value * 4
Dat = Dat + Check4.Value * 8
Dat = Dat + Check5.Value * 16
Dat = Dat + Check6.Value * 32
Dat = Dat + Check7.Value * 64
Dat = Dat + Check8.Value * 128
Relaisout Dat
End Sub
Das zweite Programmbeispiel nutzt den Programmiermodus des
Geräts für einen vierfachen Timer. Es sollen z.B. vier Akkus nacheinander an
einem Ladegerät geladen werden. Für jeden Akku wird eine eigene Ladezeit
eingestellt. Die Zeiten sollen im Bereich 1 Minute bis 240 Minuten wählbar
sein. Nach der Übertragung der Programmdaten kann das Relaisinterface vom PC
getrennt werden. Der Programmablauf beginnt mit jedem Einschalten der
Betriebsspannung neu.
Das Programm zeigt Basisprozeduren für die einzelnen
Funktionen des Geräts. Beim Druck auf den Start-Button wird zunächst eine
Geräteadresse zugewiesen und alle Relais werden ausgeschaltet. Dann werden
Programmdaten in das EEPROM des Geräts übertragen. Die Zeitbasis wird auf eine
Minute eingestellt. Es folgen die erforderlichen Bitmuster und die über
Schieberegler eingestellten Zeiten. Die Zeit 0 beim letzten Muster beendet den
Schaltzyklus. Daher muss hier für jedes Relais eine Mindestzeit von einer
Minute vorgegeben werden. Die größte mögliche Schaltzeit wäre 255 Minuten. Die
Schieberegler sind auf einen Bereich von 1 bis 240 eingestellt.
Private Sub Form_Load()
i = OPENCOM("COM1")
If i = 0 Then
i = OPENCOM("COM2")
Option1.Value = True
End If
If i = 0 Then MsgBox ("COM Error")
Timer1.Interval = 100
End Sub
Private Sub Form_Unload(Cancel As Integer)
CLOSECOM
End Sub
Private Sub HScroll1_Change()
Label1.Caption = Str$(HScroll1.Value)
End Sub
Private Sub HScroll2_Change()
Label2.Caption = Str$(HScroll2.Value)
End Sub
Private Sub HScroll3_Change()
Label3.Caption = Str$(HScroll3.Value)
End Sub
Private Sub HScroll4_Change()
Label4.Caption = Str$(HScroll4.Value)
End Sub
Private Sub Option1_Click()
CLOSECOM
i = OPENCOM("COM1")
If i = 0 Then MsgBox ("COM1 Error")
End Sub
Private Sub Option2_Click()
CLOSECOM
i = OPENCOM("COM2")
If i = 0 Then MsgBox ("COM2 Error")
End Sub
Sub RelaisOut(Dat)
SENDBYTE 27
SENDBYTE 255
SENDBYTE 64
SENDBYTE Dat
SENDBYTE 0
End Sub
Private Sub EEPROM(Adr, Dat)
SENDBYTE 27
SENDBYTE 1
SENDBYTE 66
SENDBYTE Adr
SENDBYTE Dat
DELAY 50
End Sub
Private Sub DeviceAdr(Adr)
SENDBYTE 27
SENDBYTE 255
SENDBYTE 72
SENDBYTE Adr
SENDBYTE 9
DELAY 50
End Sub
Private Sub StartProg()
SENDBYTE 27
SENDBYTE 1
SENDBYTE 74
SENDBYTE 0
SENDBYTE 0
DELAY 50
End Sub
Private Sub Command1_Click()
DeviceAdr 1
RelaisOut 0 'alle aus
EEPROM 2, 3
EEPROM 3, 192 'Zeitbasis 1 Minute
EEPROM 4, 1 'Relais 1
EEPROM 5, HScroll1.Value 'Zeit1
EEPROM 6, 2 'Relais 2
EEPROM 7, HScroll2.Value 'Zeit2
EEPROM 8, 3 'Relais 3
EEPROM 9, HScroll3.Value 'Zeit3
EEPROM 10, 8 'Relais 4
EEPROM 11, HScroll4.Value 'Zeit4
EEPROM 12, 0 'alle aus
EEPROM 13, 1 'Zeit1
EEPROM 14, 0 'Relais 1
EEPROM 15, 0 'Ende
StartProg
End Sub
Download der VB-Beispiele, Quelltexte und EXE (Relaisvb.zip, 12 KB)