Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

RS232-komunikation veränder Variable Kategorie: Verschiedenes (von Max - 8.04.2015 12:32)


Hallo,
in meinen Projekt habe ich als Master einen AVR32 und als Slave einen MEGA32.
Beide sind ├╝ber die Serielle Schnittstelle ( 30 cm lang) miteinander verbunden.  
Vom Master werden Einstellungswerte gesendet und der Slave schickt  seine
gemessenen Temperaturwerte zur├╝ck.
Das klappt auch einigerma├čen, es sind nur relativ viele Fehlversuche dabei.

Aber jetzt zum gro├če Problem.
Die globalen Variablen
vEFeAuWo  veFeZuWo  veFeAuGa  veFeZuGa
veFeAuBa  veFeAuBa  veFeAuWC veFeZuWC        

werden w├Ąhrend Kommunikation ver├Ąndert bzw gel├Âscht.

Diese Variablen werden nur einmal in der Routine Init() mit Werten aus der
SD initiiert.
Im weiteren Programmverlauf  werden sie nur f├╝r
Vergleichsoperationen herangezogen.

Das hei├čt, hier d├╝rfte sich nichts ver├Ąndern.

Kann mir jemand weiterhelfen.
Max

Hier der Code vom Master:


Dim vEFeAuWo As Byte                                        
Dim veFeZuWo As Byte                                        
Dim veFeAuGa As Byte                                      
Dim veFeZuGa As Byte                                      
Dim veFeAuBa As Byte                                      
Dim veFeZuBa As Byte                                      
Dim veFeAuWC As Byte                                        
Dim veFeZuWC As Byte  
Dim vBuffer(255) As Byte                                     'Puffer f├╝r RS232
Dim vFC As Byte                                             'Fehlerz├Ąhler
Dim vZS(10) As Byte                                         'Zwischenspeicher f├╝r komischen Fehler

Sub Slave(vVWo As Byte, vVGa As Byte, vVBa As Byte, vVWC As Byte, vSWo As Byte, vSGa As Byte, vSBa As Byte, vSWC As Byte)
Dim vC As Integer
Dim vP As Integer
Dim vX As Integer
Dim vT As Long
Dim vFehlerByte As Byte                                     'gibt Fehlermeldungen an den Slave weiter
Dim vData(80) As Byte
Dim vVentilauswahl As Byte
Dim vEmpf As Byte                                           'ist True wenn sich Zeichen im Empfanspufer befinden
'wird hier zwischengespeichert weil die Variablen auf dem weg durch diese Routine gel├Âscht werden
vZS(0) = veMZU : vZS(1) = veMAuf
vZS(2) = vEFeAuWo : vZS(3) = veFeZuWo : vZS(4) = veFeAuGa : vZS(5) = veFeZuGa
vZS(6) = veFeAuBa : vZS(7) = veFeAuBa : vZS(8) = veFeAuWC : vZS(9) = veFeZuWC

vFC = 0
vEmpf = False
Serial_Init_IRQ(0,vBuffer,255,255,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD9600) 'RS232-Schnittstelle
Lab RSStart
AbsDelay(300)
If vFC > 19 Then
   vStoerung = 52
   vStoerTextLCD1 = "20 Fehler bei"                         'St├Ârtext f├╝r LCD Zeile 1
   vStoerTextLCD2 = "RS232      52"                         'St├Ârtext f├╝r LCD Zeile 2
   vTextSD = "10 Fehler bei 10 Fehler St.Nr.52" 'St├Ârtext f├╝r Protokolldatei
   Protokoll()                                              'St├Ârung in Protokolldatei speichern
   StoerStop()                                              'stoppt das Programm und schaltet alles was sich bewegt ab
   vNeustart = 1                                            'Flag f├╝r einen Neustart setzen
End If
'vAnzeigeStop = 1                                            'LCD nicht aktualisieren
vVentilauswahl = 0                                          'die Bits f├╝r die Ventilauswahl setzten
If vVWo = 1 Then
   vVentilauswahl = vVentilauswahl + 0b00000001
End If
If vVGa = 1 Then
   vVentilauswahl = vVentilauswahl + 0b00000010
End If
If vVBa = 1 Then
   vVentilauswahl = vVentilauswahl + 0b00000100
End If
If vVWC = 1 Then
   vVentilauswahl = vVentilauswahl + 0b00001000
End If
Do While True
   vP = Serial_ReadExt(0)                                   'Empfangspuffer leeren
   If vP = &H100 Then : Exit : End If
End While
Serial_Write(0,245)                                         'Startsequen senden
Serial_Write(0,7)
Serial_Write(0,248)
Serial_Write(0,36)
Serial_Write(0,vVentilauswahl)                              'Ventilauswahl senden
Serial_Write(0,vSWo)                                        'Ventielstufen senden
Serial_Write(0,vSGa)
Serial_Write(0,vSBa)
Serial_Write(0,vSWC)
Serial_Write(0,0)                                           'Reserve
Serial_Write(0,0)                                           'Reserve
Serial_Write(0,0)                                           'Reserve
Serial_Write(0,0)                                           'Reserve
Serial_Write(0,0)                                           'Reserve
Serial_Write(0,vFehlerByte)                                 'Fehler senden
Serial_Write(0,vVentilauswahl)                              'Ventilauswahl senden  2. mal
Serial_Write(0,vSWo)                                        'Ventielstufen senden  2. mal
Serial_Write(0,vSGa)
Serial_Write(0,vSBa)
Serial_Write(0,vSWC)
Serial_Write(0,0)                                           'Reserve
Serial_Write(0,0)                                           'Reserve
Serial_Write(0,0)                                           'Reserve
Serial_Write(0,0)                                           'Reserve
Serial_Write(0,0)                                           'Reserve
Serial_Write(0,vFehlerByte)                                 'Fehler senden
Serial_Write(0,36)                                          'Startsequen senden
Serial_Write(0,248)
Serial_Write(0,7)
Serial_Write(0,245)
AbsDelay(500)
vTOut = 0
Do While True
   vX = Serial_IRQ_Info(0,RS232_FIFO_RECV)                  'es geht erst weiter wenn min 78 Byte empfangen wurden
   If vX >= 78 Then : Exit : End If
   If vX > 0 And vEmpf = False Then                         'sind Zeichen im Empfangspuffer
      vT = vTOut                                            'aktuelle timerzeit speichern
      vEmpf = True
   End If
   If (vTOut - vT) > 500 And vEmpf = True Then              'sind 5 sec vergangen nach dem der Empfangspuffer Date empfangen hat
      vFC = vFC + 1                                         'Fehlerz├Ąhler
      Msg_WriteText("Fehler unvollst├Ąndiger Empfangspuffer " ):Msg_WriteInt(vFC ):Msg_WriteChar(13 )
      Goto RSStart                                          'aber nicht vollst├Ąndig gef├╝llt wurde
   End If                                                   'Empfang zur├╝cksetzen
   If vTOut > 3500 Then                                     'sind mehr als 35 sec vergangen     6000 = 1 min
      vStoerung = 51
      vStoerTextLCD1 = "TimeOut bei"                        'St├Ârtext f├╝r LCD Zeile 1
      vStoerTextLCD2 = "RS232 Empfang 51"                   'St├Ârtext f├╝r LCD Zeile 2
      vTextSD = "TimeOut bei RS232 Empfang St.Nr.51"        'St├Ârtext f├╝r Protokolldatei
      Protokoll()                                           'St├Ârung in Protokolldatei speichern
      StoerStop()                                           'stoppt das Programm und schaltet alles was sich bewegt ab
      vNeustart = 1                                         'Flag f├╝r einen Neustart setzen
   End If
End While

Msg_WriteText("vFeAuXX A "):Msg_WriteInt( vEFeAuWo):Msg_WriteText(" " ):Msg_WriteInt( veFeZuWo):Msg_WriteText(" " )
Msg_WriteInt( veFeAuGa):Msg_WriteText(" " ):Msg_WriteInt( veFeZuGa)
Msg_WriteText(" " ):Msg_WriteInt( veFeAuBa):Msg_WriteText(" " ):Msg_WriteInt( veFeZuBa):Msg_WriteText(" " )
Msg_WriteInt( veFeAuWC):Msg_WriteText(" " ):Msg_WriteInt( veFeZuWC):Msg_WriteText("r" )

vP = Serial_ReadExt(0)                                      'Fehlerzahl von Slave   10101010 = OK
vX = Serial_ReadExt(0)                                      'Fehlerzahl von Slave   01010101 = OK
If vP <> 0b10101010 Or vX <> 0b01010101 Then
   vFC = vFC + 1                                            'Fehlerz├Ąhler
   Msg_WriteText("Quittungszahlen von Slave falsch  vFC=" ) : Msg_WriteInt(vFC ):Msg_WriteChar(13 )
   Goto RSStart
End If
vX = 0
Do While True
   vP = Serial_ReadExt(0)                                   'Daten von Empfangspuffer lesen
   vData(vX) = vP                                           'und in die Datenbank schreiben
   vX++
   If vP = &H100 Then : Exit : End If                       'Ende der Daten
End While
'___________________________________________________________
Msg_WriteText("vData(72 - 75) "):Msg_WriteInt( vData(72)):Msg_WriteText(" " ):Msg_WriteInt( vData(73)):Msg_WriteText(" " )
Msg_WriteInt( vData(74)):Msg_WriteText(" " ):Msg_WriteInt( vData(75)):Msg_WriteChar(13 )
If vData(0) = 245 And vData(1) = 7 And vData(2) = 248 And vData(3) = 37 And _
 vData(72) = 37 And vData(73) = 248 And vData(74) = 7 And vData(75) = 245 Then  'Anfangs und Schlusssequenz pr├╝fen
   For vC = 0 To 33
       Msg_WriteInt(vData(vC + 4) ):Msg_WriteText("-" ):Msg_WriteInt(vData(vC + 38) ):Msg_WriteText(" " )
      If vData(vC + 4)<> vData(vC + 38) Then                'ersten mit zweiten Datensatz vergleichen
         vFC = vFC + 1                                      'Fehlerz├Ąhler
         Msg_WriteText("Fehler Temperaturdaten " ):Msg_WriteInt(vFC ):Msg_WriteChar(13 )
         Goto RSStart
      End If
   Next
   Msg_WriteChar(13 )
   vTWWohnz = vData(5) : vTWWohnz = vTWWohnz << 8 : vTWWohnz = vTWWohnz + vData(4)   'Temperaturwert aus Hbyte + LByte
   vTZWohnz = vData(7) : vTZWohnz = vTZWohnz << 8 : vTZWohnz = vTZWohnz + vData(6)   'Temperaturwert aus Hbyte + LByte
   vTRWohnz = vData(9) : vTRWohnz = vTRWohnz << 8 : vTRWohnz = vTRWohnz + vData(8)   'Temperaturwert aus Hbyte + LByte
   vTBGang = vData(11) : vTBGang = vTBGang << 8 : vTBGang = vTBGang + vData(10)   'Temperaturwert aus Hbyte + LByte
   vTZGang = vData(13) : vTZGang = vTZGang << 8 : vTZGang = vTZGang + vData(12)   'Temperaturwert aus Hbyte + LByte
   vTRGang = vData(15) : vTRGang = vTRGang << 8 : vTRGang = vTRGang + vData(14)   'Temperaturwert aus Hbyte + LByte
   vTBBad = vData(17) : vTBBad = vTBBad << 8 : vTBBad = vTBBad + vData(16)   'Temperaturwert aus Hbyte + LByte
   vTZBad = vData(19) : vTZBad = vTZBad << 8 : vTZBad = vTZBad + vData(18)   'Temperaturwert aus Hbyte + LByte
   vTRBad = vData(21) : vTRBad = vTRBad << 8 : vTRBad = vTRBad + vData(20)   'Temperaturwert aus Hbyte + LByte
   vTBWC = vData(23) : vTBWC = vTBWC << 8 : vTBWC = vTBWC + vData(22)   'Temperaturwert aus Hbyte + LByte
   vTZWC = vData(25) : vTZWC = vTZWC << 8 : vTZWC = vTZWC + vData(24)   'Temperaturwert aus Hbyte + LByte
   vTRWC = vData(27) : vTRWC = vTRWC << 8 : vTRWC = vTRWC + vData(26)   'Temperaturwert aus Hbyte + LByte
   vTVorlOben = vData(29) : vTVorlOben = vTVorlOben << 8 : vTVorlOben = vTVorlOben + vData(28)  
   vVentilstufeWo = vData(31)                               'aktuelle Ventilstufen ├╝bergeben
   vVentilstufeGa = vData(32)
   vVentilstufeBa = vData(33)
   vVentilstufeWC = vData(34)
   AbsDelay(100)
   Serial_Disable(0)                                        'RS232 abschalten
   TempMessung()                                            'Temperaturen des Masters messen
Else
   vFC = vFC + 1                                            'Fehlerz├Ąhler
   Msg_WriteText("Fehler Anfangs und Schlusssequenz pr├╝fen " ):Msg_WriteInt(vFC ):Msg_WriteChar(13 )
   Goto RSStart
End If

Msg_WriteText("vFeAuXX B "):Msg_WriteInt( vEFeAuWo):Msg_WriteText(" " ):Msg_WriteInt( veFeZuWo):Msg_WriteText(" " )
Msg_WriteInt( veFeAuGa):Msg_WriteText(" " ):Msg_WriteInt( veFeZuGa)
Msg_WriteText(" " ):Msg_WriteInt( veFeAuBa):Msg_WriteText(" " ):Msg_WriteInt( veFeZuBa):Msg_WriteText(" " )
Msg_WriteInt( veFeAuWC):Msg_WriteText(" " ):Msg_WriteInt( veFeZuWC):Msg_WriteText("r" )

If vData(30) > 6 And vData(30) < 15 Then                    'bei St├Ârmeldungen vom Slave
   vStoerung = vData(30)                                    'St├Ârungsnummer an lokale Varable ├╝bergeben
   Select Case vData(30)                                    'St├Ârungszahlen von Slave selektieren
      Case 7
         vStoerTextLCD1 = "TimeOut Wohnz."                  'St├Ârtext f├╝r LCD Zeile 1
         vStoerTextLCD2 = "Ventil AUF"                      'St├Ârtext f├╝r LCD Zeile 2
         vTextSD = "Fehler Ventil Wohnzimmer Endschalter AUF wurde nicht erreicht St.Nr.7"  'St├Ârtext f├╝r Protokolldatei
      Case 8
         vStoerTextLCD1 = "TimeOut Gang"                    'St├Ârtext f├╝r LCD Zeile 1
         vStoerTextLCD2 = "Ventil AUF"                      'St├Ârtext f├╝r LCD Zeile 2
         vTextSD = "Fehler Ventil Gang Endschalter AUF wurde nicht erreicht St.Nr.8"  'St├Ârtext f├╝r Protokolldatei
      Case 9
         vStoerTextLCD1 = "TimeOut Bad"                     'St├Ârtext f├╝r LCD Zeile 1
         vStoerTextLCD2 = "Ventil AUF"                      'St├Ârtext f├╝r LCD Zeile 2
         vTextSD = "Fehler Ventil Bad Endschalter AUF wurde nicht erreicht St.Nr.9"  'St├Ârtext f├╝r Protokolldatei
      Case 10
         vStoerTextLCD1 = "TimeOut WC"                      'St├Ârtext f├╝r LCD Zeile 1
         vStoerTextLCD2 = "Ventil AUF"                      'St├Ârtext f├╝r LCD Zeile 2
         vTextSD = "Fehler Ventil WC Endschalter AUF wurde nicht erreicht St.Nr.10"  'St├Ârtext f├╝r Protokolldatei
      Case 11
         vStoerTextLCD1 = "TimeOut Wohnz."                  'St├Ârtext f├╝r LCD Zeile 1
         vStoerTextLCD2 = "Ventil ZU"                       'St├Ârtext f├╝r LCD Zeile 2
         vTextSD = "Fehler Ventil Wohnzimmer Endschalter ZU wurde nicht erreicht St.Nr.11"  'St├Ârtext f├╝r Protokolldatei
      Case 12
         vStoerTextLCD1 = "TimeOut Gang"                    'St├Ârtext f├╝r LCD Zeile 1
         vStoerTextLCD2 = "Ventil ZU"                       'St├Ârtext f├╝r LCD Zeile 2
         vTextSD = "Fehler Ventil Gang Endschalter ZU wurde nicht erreicht St.Nr.12"  'St├Ârtext f├╝r Protokolldatei
      Case 13
         vStoerTextLCD1 = "TimeOut Bad"                     'St├Ârtext f├╝r LCD Zeile 1
         vStoerTextLCD2 = "Ventil ZU"                       'St├Ârtext f├╝r LCD Zeile 2
         vTextSD = "Fehler Ventil Bad Endschalter ZU wurde nicht erreicht St.Nr.13"  'St├Ârtext f├╝r Protokolldatei
      Case 14
         vStoerTextLCD1 = "TimeOut WC"                      'St├Ârtext f├╝r LCD Zeile 1
         vStoerTextLCD2 = "Ventil ZU"                       'St├Ârtext f├╝r LCD Zeile 2
         vTextSD = "Fehler Ventil WC Endschalter ZU wurde nicht erreicht St.Nr.14"  'St├Ârtext f├╝r Protokolldatei
   End Select
   Protokoll()                                              'St├Ârung in Protokolldatei speichern
   vNeustart = 1                                            'Flag f├╝r einen Neustart setzen
   StoerStop()                                              'stoppt das Programm und schaltet alles was sich bewegt ab
End If
AbsDelay(200)
'wird hier zur├╝ckgespeichert weil die Variablen auf dem weg durch diese Routine gel├Âscht werden
veMZU = vZS(0): veMAuf = vZS(1)                            
vEFeAuWo = vZS(2) : veFeZuWo = vZS(3) : veFeAuGa = vZS(4) : veFeZuGa = vZS(5)
veFeAuBa = vZS(6) : veFeAuBa = vZS(7) : veFeAuWC = vZS(8) : veFeZuWC = vZS(9)
End Sub



Hier das Ausgabeprotokoll:

Interpreter gestartet - 64kb RAM                                                                                        
SYSDaten gelesen                                                                                                        
SDC_Init x 0                                                                                                            
vFeAuXX A 4 2 4 2 4 2 4 2                                                                                              
vData(72 - 75) 232 1 14 4                                                                                              
Fehler Anfangs und Schlusssequenz pr├╝fen 1                                                                              
vFeAuXX A 0 0 0 0 0 0 15 36                                                                                            
vData(72 - 75) 0 190 0 36                                                                                              
Fehler Anfangs und Schlusssequenz pr├╝fen 2                                                                              
vFeAuXX A 0 0 0 0 0 0 15 36                                                                                            
vData(72 - 75) 37 248 7 245                                                                                            
195-195 0-0 192-192 0-0 193-193 0-0 191-191 0-0 196-196 0-0 190-190 0-0 195-195 0-0 194-194 0-0 191-191 0-0 197-197 0-0
196-196 0-0 195-195 0-0 190-190 0-0 36-36 0-0 0-0 0-0 0-0 0-0 0-0 0-0                                                  
Wand Wohnzimmer 195                                                                                                    
Zimmer Wohnzimmer 192                                                                                                  
R├╝cklauf Wohnzimmer 193                                                                                                
Boden Gang 191                                                                                                          
Zimmer Gang 196                                                                                                        
R├╝cklauf Gang 190                                                                                                      
Boden Bad 195                                                                                                          
Zimmer Bad 194                                                                                                          
R├╝cklauf Bad 191                                                                                                        
Boden WC 197                                                                                                            
Zimmer WC 196                                                                                                          
R├╝cklauf WC 195                                                                                                        
Vorlauf unten 185                                                                                                      
Vorlauf Oben 190                                                                                                        
Aussen 187                                                                                                              
Kessel 188                                                                                                              
vFeAuXX B 0 0 0 0 0 0 15 36                                                                                            
Mischer Pos in MPVNull -2                                                                                              
Anfang veMZU-- 0  25                                                                                                    
vFeAuXX A 4 2 4 2 4 0 4 2                                                                                              
Quittungszahlen von Slave falsch  vFC=1                                                                                
vFeAuXX A 0 0 0 0 0 0 0 36                                                                                              
vData(72 - 75) 37 248 7 245                                                                                            
Fehler Anfangs und Schlusssequenz pr├╝fen 2                                                                              
vFeAuXX A 0 0 0 0 0 0 0 36                                                                                              
vData(72 - 75) 37 248 7 245                                                                                            
195-195 0-0 192-192 0-0 192-192 0-0 190-190 0-0 195-195 0-0 190-190 0-0 195-195 0-0 193-193 0-0 190-190 0-0 196-196 0-0
195-195 0-0 193-193 0-0 190-190 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0                                                    
Wand Wohnzimmer 195                                                                                                    
Zimmer Wohnzimmer 192                                                                                                  
R├╝cklauf Wohnzimmer 192                                                                                                
Boden Gang 190                                                                                                          
Zimmer Gang 195                                                                                                        
R├╝cklauf Gang 190                                                                                                      
Boden Bad 195                                                                                                          
Zimmer Bad 193                                                                                                          
R├╝cklauf Bad 190                                                                                                        
Boden WC 196                                                                                                            
Zimmer WC 195                                                                                                          
R├╝cklauf WC 193                                                                                                        
Vorlauf unten 185                                                                                                      
Vorlauf Oben 190                                                                                                        
Aussen 187                                                                                                              
Kessel 188                                                                                                              
vFeAuXX B 0 0 0 0 0 0 0 36                                                                                              
Anfang veMZU-- 0  25                                                                                                    
                                                                                                                       
Interpreter gestoppt  



Hier der Code vom Slave

Sub main()
Dim vData(32) As Byte  'tempor├Ąre Daten wird erst g├╝ltig wenn die ├ťbertragung verifiziert wurde
Dim vFehlerByte1, vFehlerByte2 As Byte                      'Fehlerbyte
Dim vEmpf As Byte                                           'ist True wenn sich Zeichen im Empfanspufer befinden
Init()
Lab Anfang
Do While True
   Y = Serial_ReadExt(0)                                    'Empfangspuffer leeren
   If Y = &H100 Then : Exit : End If
End While
vEmpf = False
Do While True
   Do While True
      ChackMasterStoerung()                                 'pr├╝ft ob eine St├Ârsignal vom Master kommt
      Y = Serial_IRQ_Info(0,RS232_FIFO_RECV)                'pr├╝ft wie viele Zeichen empfangen wurden
      If Y < 30 Then                                         'wenn keine Daten im Empfangspuffer sind
         TempMessung()                                      'Temperaturen messen
         LCD_Anzeige()                                      'Anzeige aktualisieren
         AbsDelay(100)
      Else
         vEmpf = False
         Exit                                               'Empfangspuffer ist gef├╝llt
      End If
      If Y > 0 And vEmpf = False Then                       'sind Zeichen im Empfangspuffer
         vTimer = 0
         vEmpf = True
      End If
      If vTimer > 200 And vEmpf = True Then 'sind 2 sec vergangen nach dem der Empfangspuffer Date empfangen hat
         Goto Anfang                                        'aber nicht vollst├Ąndig gef├╝llt wurde
      End If                                                'Empfang zur├╝cksetzen
   End While
   X = 0
   Do While True
      Y = Serial_ReadExt(0)                                 'Daten aus Empfangspuffer
      vData(X) = Y
      X++
      Msg_WriteInt(Y):Msg_WriteText("* ")
      If Y = &H100 Then                                     'Ende der Daten
         Msg_WriteChar(13)
         Exit                                               'bei &H100 ist der Empfangspuffer leer
      End If
   End While
   vFehlerByte1 = 0b10101010
   vFehlerByte2 = 0b01010101
   If vData(0) = 245 And vData(1) = 7 And vData(2) = 248 And vData(3) = 36 And vData(26) = 36 And _
    vData(27) = 248 And vData(28) = 7 And vData(29) = 245 Then
      For X = 0 To 10
          Msg_WriteInt(vData(4 + X)):Msg_WriteText("-" ):Msg_WriteInt(vData(15 + X)):Msg_WriteText(" " )
         If vData(4 + X) <> vData(15 + X) Then
            vFehlerByte1 = 0b01010101                       'bei Empfangsfehler die Bits wechsel
            vFehlerByte2 = 0b10101010
            Msg_WriteText("Fehler in Empfangsdaten r" )
         End If
      Next
   Else
      Msg_WriteText("Fehler Anfang oder Schluss r" )
      vFehlerByte1 = 0b01010101                             'bei Empfangsfehler die Bits wechsel
      vFehlerByte2 = 0b10101010
   End If
   Msg_WriteChar(13 )
   Msg_WriteText("Daten anwendenr" )
   vVentilauswahl = vData(4)                         'wenn alles OK Daten auf die Variablen ├╝bertragen
   vVentilPosWo = vData(5)
   vVentilPosGa = vData(6)
   vVentilPosBa = vData(7)
   vVentilPosWC = vData(8)
   vVentAuswWo = vVentilauswahl And 0b00000001           'die Ventilauswahl aufteilen
   vVentAuswGa = vVentilauswahl And 0b00000010
   vVentAuswBa = vVentilauswahl And 0b00000100
   vVentAuswWC = vVentilauswahl And 0b00001000
   'Ventile stellen
   Ventilstufe(vVentAuswWo, vVentAuswGa, vVentAuswBa, vVentAuswWC, vVentilPosWo, vVentilPosGa, vVentilPosBa, vVentilPosWC)  
   Msg_WriteChar(13 )
   Msg_WriteText("Data OK " )
   Msg_WriteInt(vVentilPosWo)
   Msg_WriteText(" " )
   Msg_WriteInt(vVentilPosGa)
   Msg_WriteText(" " )
   Msg_WriteInt(vVentilPosBa)
   Msg_WriteText(" " )
   Msg_WriteInt(vVentilPosWC)
   Msg_WriteText("r" )


   Serial_Write(0,vFehlerByte1)
   Serial_Write(0,vFehlerByte2)
   Serial_Write(0,245)                                      'Startsequen senden
   Serial_Write(0,7)
   Serial_Write(0,248)
   Serial_Write(0,37)
   For X = 0 To 26
      Serial_Write(0,vMessWerte(X))
   Next
   Serial_Write(0,vVentilPosWo)
   Serial_Write(0,vVentilPosGa)
   Serial_Write(0,vVentilPosBa)
   Serial_Write(0,vVentilPosWC)
   Serial_Write(0,0)                                        'Reserve
   Serial_Write(0,0)                                        'Reserve
   Serial_Write(0,0)                                        'Reserve
   For X = 0 To 26
      Serial_Write(0,vMessWerte(X))
   Next
   Serial_Write(0,vVentilPosWo)
   Serial_Write(0,vVentilPosGa)
   Serial_Write(0,vVentilPosBa)
   Serial_Write(0,vVentilPosWC)
   Serial_Write(0,0)                                        'Reserve
   Serial_Write(0,0)                                        'Reserve
   Serial_Write(0,0)                                        'Reserve
   Serial_Write(0,37)                                       'Schlusssequenz senden
   Serial_Write(0,248)
   Serial_Write(0,7)
   Serial_Write(0,245)
   AbsDelay(1000)
End While
End Sub



 6 And vData(30)


    Antwort schreiben


Antworten: