Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Hallo? Wer hat MIR eigentlich geantwortet? (Außer Stefan?) Kategorie: Verschiedenes (von Manuel - 22.01.2006 13:50)
 Als Antwort auf Re: Hallo? Wer hat MIR eigentlich geantwortet? (Außer Stefan?) von dierk - 20.01.2006 22:02
Manuel nutzt:  CC1-M-Unit V1.2/2.0
Hallo,

danke für den Tipp - ich hab ihm meinen Beispielcode mal zugeschickt...
Übrigens hab ich schon alle verfügbaren Programmiersprachen für CC1 durch - und vom Umfang und der Übersichtlichkeit her ist Basic++ einfach die beste.

Hier noch der Beispielcode, der in Basic++ meine CC1 zum Absturz bringt und davor noch totalen Müll ausspuckt:

type TCurrent
  Eg            Word  'Eg = Integral von Ig'
  Ig            Word  'I aufsummiert für Integral
  Iav           Word  'durchschnitts-I des letzten Intervalls  
  Is            Word  'Strom (neg oder positiv) - signed
  I1Offset      Byte  'Werte beim Start
  I2Offset      Byte
  IntegralCount Byte  'Zeit bis zum Integrieren  
  lTime         Word 'letzte Zeitmessung
  I1            AD[5] 'pos Strom
  I2            AD[6] 'neg Strom
end type

define CU       TCurrent
define x        Byte
const cDispTime = 50


CU.Eg = 0
CU.Ig = 0
CU.Iav = 0
CU.lTime = 0
CU.IntegralCount = 0


#MainLoop

if Abs(Timer - CU.lTime) >= cDispTime then ReadOut  'Jede Sekunde Strom auslesen und aufsummieren




pause 1

goto MainLoop



function ReadOut()

 'Timer speichern, IntegralCount erhöhen
  CU.lTime = Timer
  CU.IntegralCount = CU.IntegralCount + 1

 
 'hier steht normalerweise die Stromabfrage über die AD-Ports - für den Test ist I = const
  CU.Is = -62
 
 'I Aufsummieren
  CU.Ig = (CU.Ig + CU.Is)
  print CU.Ig

 'Zeit zum Integrieren ?
  if CU.IntegralCount >= 60 then Integral
 
end function







function Integral()
 'Durchschnitts Is berechnen,
  CU.Iav = CU.Iav + (CU.Ig / CU.IntegralCount)
   
 'Rest in Ig speichern - vorsicht: Mod beachtet keine Vorzeichen
  if CU.Ig < 0 then  
    CU.Ig = ((-CU.Ig) Mod CU.IntegralCount)
    CU.Ig = -CU.Ig
  else
    CU.Ig = (CU.Ig Mod CU.IntegralCount)
  end if
 
  Print "Iav: " & CU.Iav
  print "Rest Ig: " & CU.Ig
 
  'Quasi-Integrieren
   CU.Eg = CU.Eg + (CU.Iav / 60)
 
  'Rest in Iav speichern
  if CU.Iav < 0 then    
    x = ((-CU.Iav) Mod 60)  
    CU.Iav = -x
  else
    CU.Iav = (CU.Iav Mod 60)
  end if
 
  print "Rest Iav: "& CU.Iav
  print "Eg: " & CU.Eg
 
 
  'Counter resetten
  CU.IntegralCount = 0


end function

 Antwort schreiben

Bisherige Antworten:

Re: Hallo? Wer hat MIR eigentlich geantwortet? (Außer Stefan?) (von Dietmar - 22.01.2006 15:30)
    Re: Hallo? Wer hat MIR eigentlich geantwortet? (Außer Stefan?) (von Manuel - 23.01.2006 19:51)