Array variabler länge Typenkonvertierung Vorkompilierungsfehler

Deutsch
lennartt
2020-09-10
2020-09-10
  • lennartt

    lennartt - 2020-09-10

    Hallo,
    wenn ich einem FB-InOutput array[ * ] of Interfaces ein Array mit definierter Größe übergebe, bekomme den Vorkompilierungsfehler: C0032: Typ 'Array[1..2] of ITF_Stoermeldung' kann nicht in Typ 'Array [ * ] of ITF_Stoermeldung' konvertiert werden.

    FUNCTION_BLOCK fbStoermeldung IMPLEMENTS ITF_Stoermeldung
    VAR_INPUT
    
    END_VAR
    
    FUNCTION_BLOCK fbSammelstoermeldungen IMPLEMENTS ITF_Sammelstoermeldung
    VAR_IN_OUT 
        arInterfaceSSM      : ARRAY [*] OF ITF_Stoermeldung;            // 
    END_VAR
    .
    .
    .
    FOR diZaehler := LOWER_BOUND(arInterfaceSSM, 1) TO UPPER_BOUND(arInterfaceSSM, 1) DO
        IF arInterfaceSSM[diZaehler].mStoerungsFlag() THEN
    ...
    
    PROGRAM Anlagenueberwachung
    VAR
        fbSM1   :   fbStoermeldung;
        fbSM2   :   fbStoermeldung;
        fbSSM   :   fbSammelstoermeldungen;
    
        arITFStoermeldung       : ARRAY [1..2] OF ITF_Stoermeldung :=  [fbSM1,fbSM2];            
    END_VAR
    
    fbSSM(arInterfaceSSM:= arITFStoermeldung);  // hier wird der Konvertierungsfehler angezeigt
    

    Scheinbar läuft der kompilierte Code auf der SPS einwandfrei - kann der Fehler also getrost ignoriert werden oder kann er mir später auf die Füße fallen?
    Danke im Voraus! [Codesys V3.5.14.4]

     
  • i-campbell

    i-campbell - 2020-09-10

    Es war ein Bug mit der Precompiler. Aber kein Bug mit der Compiler (er ist immer ein bisschen schlauer). CompilerVersion >= 3.5.16.0 gesetzt, oder genau wie Sie sagte, kann man ignorieren.

     
  • lennartt

    lennartt - 2020-09-10

    vielen Dank für die schnelle Antowrt!

     

Log in to post a comment.