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

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo Leo, > > > Ich dachte mir schon, daß es keine einfache Lösung gibt. > > Es sollen die unterschiedlichsten Variablen der Heizungsregelung geloggt werden können, also von > > Termpaturen über Outputs der Regelkreise bis zu Ansteuerzustand von Pumpen. > > Diese Variablen sind natürlich quer über die Module verteilt. Ich werde sicher nicht den modularen > > Aufbau opfern, sonst kenne ich mich über kurz oder lang in meine eigenen Programm nicht mehr aus. > > Dumußt nicht den Modularen Aufbau opfern. > Allerdings rate ich dennoch immer ein eigenes Modul z.B. mit dem Namen var.c2 > anzulegen, in dem alle globalen, aus mehreren Modulen genutzten Variablen angelegt werden. > Dazu kannst Du noch eine eben höher ein Modul konst.c2 anlegen. > > So kann man dann folgende Konstrukte machen: > <code>var.temp[konst.puffer_oben]=x;</code> > in var.c2 ist ein Array <code>temp[]</code> mit dern nötigen Größe angelegt. > In konst.c2 legst Du dann einfach Konstanten mit den nötigen Indizies an. > > Bei Ausgängen benötigst Du nur eine Funktion, die Dir anhand eines Index > den entsprechnden Port abfragt. > Als Bsp. aus meinem seit nunmehr fast 4 Jahre alten Provisorium: > <code>function get(int port) returns int > { > if port>=8 return states[port]!=0; > if port>=5 and port<=7 return not rbports.get(port); > if port>=0 and port<=2 return rbports.get(port); > if port==-1 return IWP[0]; > if port==-2 return IWP[1]; > }</code> > > > > Momentan schwebt mir eher vor eine beschränkgte Anzahl an logbaren Variablen zu haben und für jede > > Variable ein Bit zu reservieren, das angibt, ob die Variable nun geloggt werden soll oder nicht. > > Natürlich muß es pro Variable auch einen String mit deren Namen geben (sonst kann man's auf der > > Station ja nicht im Menü auswählen). > > Die zum loggen gekennzeichneten Variablen werden dann einfach in einer zyklischen Log-Routine ins > > RAM-Device kopiert. > > Um die Sache nicht zu komplizhieren sind alle logbaren Variablen Integer oder werden zu Integer auf- > > geblasen. Es gibt momentan keine Motivation Datentypen unterschiedlicher Länge zu implementieren. > > Wie gesagt, ist es dann das einfachste, einfach die globalen Variablen > für Temperaturen in ein Array zu packen, um sie dann über einen Index ansprechen zu können. > für die LCD-Texte kannst Du einfach ein String-Konstanten-Array mit übereinstimmenden > Indizies anlegen. > > > > Jetzt muß ich mich nur noch schlau machen wie man in C2 bits anspricht. Es geht mir schon länger auf > > die Nerven für jede boolsche Variable ein Byte zu verwenden. Wo ich doch glaube, daß der µC Bits und > > Bitfields unterstützt (so diese im Bitadressierbaren Bereich liegen). Bei einzelnen boolschen Variablen > > kann ich es verschmerzen Bytes zu verwenden. Aber wenn ich jetzt ein Array von boolean für das > > log-flag brauche, muß ich mich mir was einfallen lassen ;-). > > Prinzipiell gibt es in C2 keine Bit-Variablen und auch keine VMCodes > für den gezielten Bitzugriff. > Es bleibt hier nur das Maskieren von Bits. (siehe z.B. im Modul srrel.c2 oder rbports.c2) > Man könnte sich hier natürlich auch ASM-Routinen schreiben, aber das wäre für > ein paar Temperaturen ein unnötiger Aufwand. > Den bitadressierbaren bereich kann man aus C2 direkt nicht nutzen. Auch wird ein Teil > bereits vom OS bzw. von Systemtreibern benötigt. > > Auch wenn es natürlich Speicherverschwendungen ist, kannst Du ohne > weiteres ein Bytearray benutzen. Die CC2 hat 64kB RAM. Hier darf > man schon vereinzelt etwas verschwenderisch werden. ;-) > Und selbst bei 100 Variablen, die Du loggen willst, wären es nur 100 Byte von 64kB. > Das sind gerade etwas über 0,15% des RAMs. > Aber soviele unterschiedliche Werte werden es sicher nichteinmal sein. ;-) > > MfG André H.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB