- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 8 von 8

Thema: Kalman für Anfänger

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Das was du in Sheet 2 ausrechnest, kannst du im Sheet 3 ohne Fließkomma so ausrechnen.
    (Beachte den Faktor 1024, um den jeder Wert zu groß ist.)

    Code:
    Public Sub CalculateSheet3Formular()
    Dim nNoise As Long
    Dim nEstimation As Long
    Dim nLastEstimation As Long
    Dim nPresition As Long
    Dim nLastPresition As Long
    Dim nKalmanKoeffizent As Long
    Dim nADC As Long
    Dim nTemperatur As Long
    Dim objWorkbork As Workbook
    Dim FAKTOR As Long
    Dim i As Integer
        
        Set objWorkbork = ThisWorkbook
        
        FAKTOR = 1024   'am besten Potenz von 2 als Faktor (hier: 2^10)
        nNoise = 2 * FAKTOR / 10    ' enspricht 0,2 * FAKTOR
        nLastEstimation = 0
        nPresition = 1 * FAKTOR
    
        For i = 2 To 22
            
            nADC = objWorkbork.Sheets(3).Cells(i, 1).Value
            nADC = nADC * FAKTOR * 64
            
            nTemperatur = 82 * FAKTOR + nADC
            nTemperatur = nTemperatur / 101
            nTemperatur = nTemperatur - (150 * FAKTOR)
            
            objWorkbork.Sheets(3).Cells(i, 2).Value = nTemperatur
    
            nLastPresition = nPresition
            nKalmanKoeffizent = nPresition * FAKTOR / (nPresition + nNoise)
            
            nEstimation = (nLastEstimation * FAKTOR + nKalmanKoeffizent * (nTemperatur - nLastEstimation)) / FAKTOR
            nPresition = ((FAKTOR - nKalmanKoeffizent) * nPresition) / FAKTOR
            nLastEstimation = nEstimation
            
            objWorkbork.Sheets(3).Cells(i, 3).Value = nKalmanKoeffizent
            objWorkbork.Sheets(3).Cells(i, 4).Value = nPresition
            
            objWorkbork.Sheets(3).Cells(i, 5).Value = i - 1
            objWorkbork.Sheets(3).Cells(i, 6).Value = nEstimation
            
            ' Zu Vergleichszwecken Tabelle mit rückgewandelten Werten:
            
            objWorkbork.Sheets(3).Cells(i, 8).Value = CDbl(objWorkbork.Sheets(3).Cells(i, 3).Value) / FAKTOR
            objWorkbork.Sheets(3).Cells(i, 9).Value = CDbl(objWorkbork.Sheets(3).Cells(i, 4).Value) / FAKTOR
            
            objWorkbork.Sheets(3).Cells(i, 10).Value = CDbl(objWorkbork.Sheets(3).Cells(i, 5).Value) / FAKTOR
            objWorkbork.Sheets(3).Cells(i, 11).Value = CDbl(objWorkbork.Sheets(3).Cells(i, 6).Value) / FAKTOR
            
        Next i
    
    
    End Sub
    Geändert von Sisor (03.11.2014 um 15:48 Uhr)

Ähnliche Themen

  1. RP6 Von Anfänger für Anfänger
    Von littles im Forum Robby RP6
    Antworten: 8
    Letzter Beitrag: 08.07.2011, 10:07
  2. ST LPR530AL + Kalman Filter
    Von Pepade im Forum Sensoren / Sensorik
    Antworten: 3
    Letzter Beitrag: 23.04.2010, 07:29
  3. Kalman Filter für BASCOM
    Von harry1 im Forum Sensoren / Sensorik
    Antworten: 30
    Letzter Beitrag: 28.10.2009, 23:22
  4. CRP5: meine Erweiterung (vom Anfänger für Anfänger)
    Von loewenzahn im Forum Robby CCRP5
    Antworten: 11
    Letzter Beitrag: 21.03.2007, 18:37
  5. Kalman-Filter - wie/wo/was ?
    Von Crazy Harry im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 02.02.2006, 10:23

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress