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

Re: Kennfeld und Array Kategorie: Programmierung (von André H. - 14.05.2006 15:12)
Als Antwort auf Kennfeld und Array von Alexander Richter - 14.05.2006 11:50
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0, OSOPT V3.1
Hallo Alex,

> ich habe mir vor einiger Zeit eine C-Control II zugelegt, mir mit der Zeit ein Applicationboard drum herum gebaut
> (alles was ich brauche) und scheiter nun leider so ein wenig an der Programmierung.
> Oft komme ich mit lesen und fragen irgendwie weiter... aber nun bäuchte ich professionelle Hilfe :-)
> Also, ich möchte eine Art Kennfeld erstellen, in dem eine Ausgangsvariable von 2 Eingangsvariablen
> abhängt; ich messe z.B. Spannung 1 und Spannung 2, und mein Ausgabewert ist Spannung 3. Mit dem Stichwort Array
> kam ich via Internetrecherche nur bedingt weiter, da C++ in dieser Hinsicht ja doch etwas anders
> funktioniert und die C-Control laut Handbuch nur eindimensionale Arrays unterstützt. Also kurzum: Ich
> komme als motivierter Laie mit dem Handbuch nur Mühsam zurecht.
> Daher meine Bitte an Euch: Ich erwarte nicht daÃ? mir hier einer ein Programm runterschreibt, aber
> für eine Literaturempfehlung oder noch vielmehr ein BEISPIELPROGRAMM, das diese Problematik bearbeitet,
> wäre ich sehr dankbar!

Rudimentär gesehen kann die CC2 keine Mehrdimensionalen Arrays.
Technisch gesehen jedoch schon.
Die Frage ist nur, wie groÃ? dieses Array sein muÃ?.
Als Variable kann man beispielsweise ein zweidimensionales Array in C2 folgendermaÃ?en anlegen:

type meinArray
{
 int y[64];
}

meinArray x[64];

Das wäre ein Beispiel für ein zweidimensionales Integer-Array mit 64 x 64 Feldern.
Und so wird z.B. darauf zugegriffen:

x[0].y[1]=12345;
x[5].y[4]=6789;

Sei aber vorsichtig it der Grö�e. Die CC2 hat "nur" 64kB RAM.
Schon einfache Mehrdimensionale Arrays können sehr gro� werden.
Das obige Array hat beispielsweise eine Grö�e 64 x 64 x 2 Byte= 8192Byte = 8kB
Auf dieselbe Weise könnte man auch dreidimensionale Arrays aufbauen.
Aber hier kommt man sehr schnell an die Grenzen des RAMs, so daÃ? man
dann eher gro�e externe Speciher benötigt.
(Ein dreidimensionales Integer-Array mit z.B. 64 x 64 x 64 Feldern würde 512kB benötigen.)

Auch über Konstanten-Arrays könnte man mehrere Dimensionen verwirklichen.
Dies jedoch nur über den mathematischen Umweg.
D.h., Du benutzt ein eindimensionales Array als zweidimensionales.
Der Vorteil hier wäre jedoch, da� 128kB für konstanten bereitstehen. Zusätzlich
könnte man zwei komplette Flashsegmente (ebenfalls 128kB) dafür "mi�brauchen".
Ein einfaches Bsp. für ein kleines Konstanten-Array, das zweidimensional genutzt wird:
(5x5 Felder)
const Array[]= 1, 2, 3, 4, 5,
              11,12,13,14,15,
              21,22,23,24,25,
              31,32,33,34,35,
              41,42,43,44,45;
const Offset=5;
   
function getArray(int x, int y) returns int
{
 return Array[x+(y*Offset)];
}

Auf das Array wird dann einfach über die Funktion getArray() zugegriffen:
wert=getArray(0,4); //erste Spalte, fünfte Zeile


Die Frage ist aber, ob Du das ganze überhaupt benötigst, oder, ob sich
Deine Aufgabe evtl. auch rechnerisch löschen lä�t.
Beschreib' mal grob, was Du vorhast, vielleicht gibt's eine ganz einfache Lösung
unter Verwendung einer Formel.

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: Kennfeld und Array (von Alexander Richter - 14.05.2006 22:40)