Показано с 1 по 10 из 412

Тема: Codesys v3 + Raspberry Pi

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Banned
    Регистрация
    03.02.2014
    Адрес
    Санкт-Петербург
    Сообщений
    848

    По умолчанию

    retain можно и на флешку сохранять в виде файла и при загрузки подгружать обратно (а в программе просто VAR RETAIN использовать и все)

    PROGRAM RetainManager
    VAR_INPUT
    RetainFilePathName : STRING := '/root/Retain';
    SaveFilterTime : TIME := T#5S;
    ForceSave : BOOL;
    END_VAR
    VAR
    Init: BOOL;
    pRetainFilePathName : POINTER TO STRING;
    pCurrentApp : POINTER TO APPLICATION;
    RetainAreaSize: __XWORD;
    pRetainArea: POINTER TO BYTE;
    dwCRCSave: DWORD;
    dwCRC: DWORD;
    TOF1 : TOF := (PT := SaveFilterTime);
    R_TRIG1: R_TRIG;
    END_VAR
    VAR_OUTPUT
    RTSIECResult: cmpapp.RTS_IEC_RESULT;
    AttemptSaveCounter: INT;
    END_VAR

    IF NOT Init THEN
    pCurrentApp := AppGetCurrent(ADR(RTSIECResult));
    IF RTSIECResult<>0 THEN RETURN; END_IF
    RetainAreaSize := AppGetAreaSize(pApp:= pCurrentApp, uiType:= DA_RETAIN, pResult:= ADR(RTSIECResult));
    IF RTSIECResult<>0 THEN RETURN; END_IF
    pRetainArea := AppGetAreaAddress(pApp:= pCurrentApp, uiType:= DA_RETAIN, pResult:= ADR(RTSIECResult));
    IF RTSIECResult<>0 THEN RETURN; END_IF
    IF LEN(RetainFilePathName) <> 0 THEN
    pRetainFilePathName := ADR(RetainFilePathName);
    ELSE
    pRetainFilePathName := ADR(pCurrentApp^.szName);
    END_IF
    RTSIECResult := AppRestoreRetainsFromFile(pCurrentApp, pRetainFilePathName^);
    CASE RTSIECResult OF
    0: // #define ERR_OK 0x0000
    16#1E: // #define ERR_SIGNATURE_MISMATCH 0x001E /* Signature mismatch of an api function */
    16#32: // #define ERR_FILE_ERROR 0x0032 /* File error. e.g. cannot open a file for writing because it could be write protected */
    ELSE RETURN;
    END_CASE
    dwCRCSave := CRC32Finish(ulCRC:= CRC32Update(ulCRC:= CRC32Init(), pData:= pRetainArea, ulSize:= RetainAreaSize));
    Init := TRUE;
    END_IF

    R_TRIG1(CLK := ForceSave);

    dwCRC := CRC32Finish(ulCRC:= CRC32Update(ulCRC:= CRC32Init(), pData:= pRetainArea, ulSize:= RetainAreaSize));

    IF dwCRC <> dwCRCSave OR R_TRIG1.Q THEN
    IF NOT TOF1.Q OR R_TRIG1.Q THEN
    RTSIECResult := AppStoreRetainsInFile(pCurrentApp, pRetainFilePathName^); // записасать в файл
    IF RTSIECResult = 0 THEN
    dwCRCSave := dwCRC;
    END_IF
    AttemptSaveCounter := AttemptSaveCounter + 1;
    TOF1(IN := TRUE);
    END_IF
    END_IF

    IF TOF1.Q THEN
    TOF1(IN := FALSE);
    END_IF

    http://forum.codesys.com/viewtopic.p...=5722&start=15
    Последний раз редактировалось murdemon; 24.12.2015 в 13:28.

Похожие темы

  1. CoDeSys V3 и ноутбук
    от smk1635 в разделе СПК2xx (архив)
    Ответов: 14
    Последнее сообщение: 23.09.2020, 08:11
  2. codesys v3
    от nevii в разделе ПЛК3xx (архив)
    Ответов: 3
    Последнее сообщение: 18.09.2014, 11:23
  3. ПЛК110 и CoDeSys v3
    от DIG в разделе ПЛК1хх
    Ответов: 32
    Последнее сообщение: 09.11.2011, 17:02
  4. CodeSys V3
    от nnesterov в разделе ПЛК3xx (архив)
    Ответов: 13
    Последнее сообщение: 05.04.2010, 14:12
  5. CoDeSys v3
    от Alor в разделе Трёп (Курилка)
    Ответов: 1
    Последнее сообщение: 02.12.2008, 10:48

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •