eindimensionales Array in die Zeile eines zweidimensionalen Arrays einfügen

internizer

Member
Beiträge
7
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo zusammen liebe SPS-Community,

ich bin Student und habe bereits ein wenig Erfahrung mit CoDeSys V3.5 sammeln könne. Momentan versuche ich eine FuzzyControl Baustein zu entwerfen. Allerdings habe ich das Problem, dass sich ein eindimensionales Array der Länge n nicht in die Zeile eines zweidimensionalen Arrays der Spaltenanzahl n einfügen lässt.

//Parametersatz der Stützstellen der Zugehörigkeitsfunktionen zi für die Fuzzyfizierung der 1. Eingangsgröße in der Form:
//z1 [a1,b1,c1,d1] (Parameterzeile)
//...
//zn [an,bn,cn,dn]
para_MF_IN_e1 : ARRAY [1..4,1..MAX_MF_e1] OF REAL;

//Schleife für den ersten Parametersatz der Regeldifferenz
FOR i:=1 TO 7 DO
e1_ZugeWerte:= Funktionsauswahl_IN(x_k:= e1_k , para:= para_MF_IN_e1)//Aufruf des Funtionsauswahlbausteins der den entsprechenden Zugehörigkeitswert liefert.
END_FOR

Mit dem Ausdruck para_MF_IN_e1 lässt sich scheinbar die i-te Parameterzeile wie in höheren Programmiersprachen z.B. Java nicht ansprechen. Ist das in CoDeSys überhaupt möglich?

LG

internizer
 

MasterOhh

Well-known member
Beiträge
1.545
Punkte Reaktionen
372
So wie du das vor hast geht das nicht, wenn du ein 2D Array anlegst musst du beim Zugriff beide Dimensionen angeben und bekommst dann einen Wert (in deinem Fall ein Real)

Du könntest deine Parameter aber in einer Struktur zusammenfassen und dann ein 1D Array vom Typ dieser Struktur erstellen.
 

StructuredTrash

Well-known member
Beiträge
1.100
Punkte Reaktionen
291
Zuviel Werbung?
->Hier kostenlos registrieren
Doch, das geht, das Array muss nur anders deklariert werden:
para_MF_IN_e1:ARRAY[1..4] OF ARRAY[1..MAX_MF_e1] OF REAL;
Die Schreibweise für den Zugriff auf einzelne Felder ist dann allerdings auch anders:
para_MF_IN_e1[x][y]:=irgendwas;
 
Oben