CoDeSys: Problem mit ARRAY[*] OF <Ein FV>

drfunfrock

Level-1
Beiträge
934
Reaktionspunkte
72
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe in einem FB eine Variable so deklariert

Code:
VAR_IN_OUT
    Inverters : ARRAY
[*] OF I_Inverter;        
END_VAR

I_Inverter ist ein Interface. Wenn ich dann den FB benutze

Code:
FB(Inverters:=InverterArray);

gibt es die Meldung

Code:
C0032:  Cannot convert type 'ARRAY [0..N_Inverters] OF FB_Drv_ACS880' to type 'ARRAY
[*] OF I_Inverter'

FB_Drv_ACS880 implementiert natürlich das richtige Interface.

Wie kann ich das Problem lösen?
 
Ich habe in einem FB eine Variable so deklariert

Code:
VAR_IN_OUT
    Inverters : ARRAY
[*] OF I_Inverter;        
END_VAR

I_Inverter ist ein Interface. Wenn ich dann den FB benutze

Code:
FB(Inverters:=InverterArray);

gibt es die Meldung

Code:
C0032:  Cannot convert type 'ARRAY [0..N_Inverters] OF FB_Drv_ACS880' to type 'ARRAY
[*] OF I_Inverter'

FB_Drv_ACS880 implementiert natürlich das richtige Interface.

Wie kann ich das Problem lösen?

Aber in der Fehlermeldung steht explizit:

'ARRAY [0..N_Inverters]

Wirklich kein Schreibfehler?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, das ist kein Schreibfehler, weil Konstanten in der Deklaration funktionieren. Das ist der Grund, warum ich mir OOP hier versuche zu starten. Eine Klasse (FB) wird im Array instanziert und das Array soll dann einer anderen Klasse zur Verfügung gestellt werden. Das Programm kann dann über Konstanten skaliert werden.
 
Ein FB_Drv_ACS880 implementiert ein I_Inverter, aber er ist keines. Du wirst noch ein ARRAY[0..N_Inverters] OF I_Inverter brauchen, in das Du beim Programmstart die FBs einträgst.
 
Zurück
Oben