TIA ET200sp Baugruppen über Projekt ändern funktioniert nicht

litlegerman

Level-2
Beiträge
318
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich versuche grade diesen FB von Siemens zu verarbeiten:
29430270_Config-Control-Modular_PROJ_V31_TIAV15_1
Das Original-Projekt hab ich in V16 hochgerüstet und hab damit auch die gewünschten Funktionen ausführen können ohne Probleme.
Jetzt hatte ich de Bausteine aus dem Projekt in mein Projekt eingefügt und bekomme nach dem Übersetzt diesen Fehler:
1646232866213.png
Aber bei dem alten Projekt hat es wunderbar funktioniert?
CPU: S7-1516F
Tia V16


Code:
//=============================================================================
// SIEMENS AG (c)Copyright 2018
//-----------------------------------------------------------------------------
// Library:       LCC
// Tested with:   CPU 1214C DC/DC/DC
// Engineering:   TIA Portal V14 SP1
// Restrictions:  For central peripherie call FB in startup OB
// Requirements:  --
// Functionality: Writes data records for configuration control to device.
//-----------------------------------------------------------------------------
// Change log table:
// Version   Date        Expert in charge  Changes applied
// 01.00.00  01.09.2014  Online Support    First released version
// 02.00.00  17.08.2018  Online Support    Renamed to "LCC_ConfigDevice"
//                                         Adaption of programming styleguide
//                                         Versioned as type
//=============================================================================

// Serialize data record
#tempRetVal := Serialize(SRC_VARIABLE := #dataRec, DEST_ARRAY => #tempDataRec, POS := #tempBufferPos);

IF #tempRetVal <> #STATUS_OK THEN // Error occured in serialize instruction
  #tempDataRec[2] := 0; // Set to 0 so the case instruction throws error
END_IF;

// Indentify device type
CASE BYTE_TO_INT(#tempDataRec[2]) OF
  2: // ET 200SP or ET 200AL
    IF #tempDataRec[3] = 0 THEN // ET 200SP
      ;
    ELSIF #tempDataRec[3] = 1 THEN // ET 200AL
      ;
    END_IF;
  4: // S7-1500
    ;
  3: // ET 200MP
    ;
  5: // S7-1200
    ;
  ELSE
    #statusID := #STATUS_ID_INTERNAL;
    #status := #STATUS_WRONG_DATAREC;
    RETURN;
END_CASE;

// Write record to device
#statReq := true;

REPEAT
  #instWriteRecord(REQ := #statReq,
                   ID := #hwID,
                   INDEX := 196,
                   LEN := BYTE_TO_UINT(#tempDataRec[0]),
                   STATUS => #status,
                   RECORD := #dataRec);
 
  #statReq := false;
 
UNTIL #instWriteRecord.DONE OR #instWriteRecord.ERROR
END_REPEAT;

// Output status information
IF #instWriteRecord.DONE THEN
  #statusID := #STATUS_ID_INTERNAL;
  #status := #STATUS_OK;
END_IF;

Kann mir hier einer weiterhelfen?
Gruß
 
#tempRetVal := Serialize(SRC_VARIABLE := #dataRec, DEST_ARRAY => #tempDataRec, POS := #tempBufferPos);

Hier ist übrigens die Fehlerstelle, laut Übersetzung
 
ist das so richtig?
#tempRetVal := Serialize(SRC_VARIABLE := #dataRec, DEST_ARRAY => #tempDataRec, POS := #tempBufferPos);

oder so?
#tempRetVal := Serialize(SRC_VARIABLE := #dataRec, DEST_ARRAY := #tempDataRec, POS := #tempBufferPos);
 
ist das so richtig?
#tempRetVal := Serialize(SRC_VARIABLE := #dataRec, DEST_ARRAY => #tempDataRec, POS := #tempBufferPos);

oder so?
#tempRetVal := Serialize(SRC_VARIABLE := #dataRec, DEST_ARRAY := #tempDataRec, POS := #tempBufferPos);

Der Aufruf sollte so schon richtig sein.

Code:
Serialize(SRC_VARIABLE:=_variant_in_, DEST_ARRAY=>_variant_out_, POS:=_dint_inout_)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist der FB auf "optimierter Bausteinzugriff" gestellt?

-chris
Ja, ist eingestellt

Wenn ich den optimierten Zugriff ausschalte, läuft die Übersetzung durch.
Aber ich weis nicht ob die Funktion dann noch einwandfrei arbeitet??
Komisch ist es ja das es vorher gelaufen hatte!?!

Gruß
 
Zuletzt bearbeitet:
Die Funktion "Serialize" kann erst ab der Version 2.0 optimierte Speicherzugriffe. Gleich am Anfang in der Doku:
1646289792502.png

Also sichergehen, dass du die "Verschieben"-Funktionsgruppe auf V2.4 eingestellt hast und eventuell die Zeile einmal löschen und neu tippseln.
1646289939870.png
 
Zurück
Oben