Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Sollwertinit in Funktion Kategorie: Programmierung (von Tinber - 30.03.2007 21:20)
Als Antwort auf Re: Sollwertinit in Funktion von André H. - 30.03.2007 8:17
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT V3.1
Hallo André

Danke für deine Antwort, du hattest natürlich Recht so konnte es nicht gehen.
Die doppelte Definition war ein Kopierfehler beim erstellen des Postings.
Die eigentliche Ursache habe ich mittlerweile herausgefunden.

Der Init Thread wurde nach der Ausführung richtigerweise angehalten ,
aber anschlieÃ?end aber in der Main immer wieder gestartet, wodurch bereits laufende
Programmzustände wieder auf die Startwerte gesetzt wurden.

GruÃ? Martin


> Hallo Tinber,
>
> Da� überhaupt eine der beiden Varianten funktioniert, wunder mich.
> Denn beides ist kein gültiger C2-Syntax.
> Man kann in C2 einer Variabel nicht bereits bei der Definition einen Wert zuweisen.
> Der Compiler muÃ? hier meckern!
> Und zwar in etwa: "Modulname(Zeile): ;expectet"
>
> auÃ?erdem willst Du scheinbar folgende Variablen doppelt definieren:
>
>  int heizkurve_soll;
>  byte T_Nachlauf_FBHb;
>  byte FBH_pu_anforderung;
>

> Denn Du definierst diese einmal global und einmal lokal.
> (Definitionen von Variablen innerhalb Threads und Funktionen sind lokal.)
>
> Ich vermute, Du willst die Variabeln lediglich global definieren, und aus dem Thread bzw.
> der Funktion lediglich darauf zugreifen.
> Dann benutze einfach folgenden korrekten Syntax mit Deinen beiden Varianten:
>
> //**********************************************************
> //Variante 1 so klappts wirklich
> const Betr_Meld = 10;
> const textsJ_N[]= "Ja  ", "Nein";
> const textsA_E[]= "Aus", "Ein";
> int heizkurve_soll;
> byte T_Nachlauf_FBHb;
> byte FBH_pu_anforderung;
> long counter[4],online;
> //usw.
>
> thread glob_init
> {
>  heizkurve_soll = 10;
>  T_Nachlauf_FBHb = 5;
>  FBH_pu_anforderung = 1;
>  //weitere befehle
>  halt;
> }//end thread
>
> //**********************************************************
> //Variante 2 klappt so auch;-)
> const Betr_Meld = 10;
> const textsJ_N[]= "Ja  ", "Nein";
> const textsA_E[]= "Aus", "Ein";
> int heizkurve_soll;
> byte T_Nachlauf_FBHb;
> byte FBH_pu_anforderung;
> long counter[4],online;
>  //usw.
>
> function fxInitSollwGrundeinstellung ()
> {
>  heizkurve_soll = 10;
>  T_Nachlauf_FBHb = 5;
>  FBH_pu_anforderung = 1;
> }
>
> thread glob_init
> {
>  fxInitSollwGrundeinstellung ();
>  //weitere befehle
>
>  halt;
> }//end thread
>

>
> MfG André H.
>
>
>
> > Hallo zusammen
> >
> > Ich bin dabei meine Regelung um einige Feinheiten zu erweitern.
> > Um Sollwerte die ich am Display ändere ohne Reset übernehmen zu können,
> > sollen diese in einer Funktion Initialisiert werden.
> > Es handelt sich dabei um Global gültige Variablen und Konstanten die im ersten Modul stehen.
> > Die Codeschnipsel stehen stellvertretend für einige Hundert Variablen und Konstanten,
> > verdeutlichen aber die Struktur im Modul, es werden tatsächlich ca. 50 Variablen Initialisiert.
> > Die bestehende Variante 1 funzt tadellos, während Variante 2 zwar ausgeführt wird der Programmablauf
> > aber gestört ist, z.B. beginnen Ausgänge die gesetzt sind zu Takten und Displayausgaben brechen
> >  vorzeitig ab.
> > Zum Zeitpunkt der Funktionsdefinition sind alle Variablen bekannt, der Compiler meckert auch nicht.
> > Ist gegen Variante 2 etwas einzuwenden?
> >
> > Danke
> > GruÃ? Martin
> >
> >
> >
> > //**********************************************************
> > //Variante 1 so klappts
> > const Betr_Meld = 10;
> > const textsJ_N[]= "Ja  ", "Nein";
> > const textsA_E[]= "Aus", "Ein";
> > int heizkurve_soll;
> > byte T_Nachlauf_FBHb;
> > byte FBH_pu_anforderung;
> > long counter[4],online;
> > //usw.
> >
> > thread glob_init
> > {
> > int heizkurve_soll = 10;
> > byte T_Nachlauf_FBHb = 5;
> > byte FBH_pu_anforderung = 1;
> > //weitere befehle
> > run 0;
> > }//end thread
> >
> > //**********************************************************
> > //Variante 2 klappt nicht
> > const Betr_Meld = 10;
> > const textsJ_N[]= "Ja  ", "Nein";
> > const textsA_E[]= "Aus", "Ein";
> > int heizkurve_soll;
> > byte T_Nachlauf_FBHb;
> > byte FBH_pu_anforderung;
> > long counter[4],online;
> > //usw.
> >
> >
> > function fxInitSollwGrundeinstellung ()
> >                {
> >                 int heizkurve_soll = 10;
> >                 byte T_Nachlauf_FBHb = 5;
> >                 byte FBH_pu_anforderung = 1;
> >                 }
> >
> > thread glob_init
> > {
> > fxInitSollwGrundeinstellung ();
> > //weitere befehle
> >
> > run 0;
> > }//end thread
> >
> >

> >


    Antwort schreiben


Antworten:

Re: Sollwertinit in Funktion (von André H. - 9.04.2007 19:23)