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)