Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 18

Тема: SysDir - вдруг пригодится?

  1. #1

    Wink SysDir - вдруг пригодится?

    dinfo:ARRAY [1..20] OF DirInfo;
    res:UDINT;
    handle:UDINT;
    dirs:ARRAY [1..20] OF STRING(255);



    PLC_PRG.cnt:=1;
    str1:='/mnt/ufs/root/';
    PLC_PRG.handle:=SysDirOpen(PLC_PRG.str1,'',20,ADR( PLC_PRG.dinfo[1]),ADR(PLC_PRG.res));
    IF PLC_PRG.handle=-1 THEN
    RETURN;
    END_IF
    WHILE (ERR_OK=SysDirRead(PLC_PRG.handle,PLC_PRG.str1,20, ADR(PLC_PRG.dinfo))) DO
    IF FIND(str1,'.dat')<>0 THEN
    PLC_PRG.dirs[PLC_PRG.cnt]:=PLC_PRG.str1;
    PLC_PRG.cnt:=PLC_PRG.cnt+1;
    END_IF
    END_WHILE
    SysDirClose(PLC_PRG.handle);
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  2. #2

    По умолчанию

    Спасибо пригодилось

  3. #3

    По умолчанию

    Цитата Сообщение от Малышев Олег Посмотреть сообщение
    SysDir - вдруг пригодится?
    А что это? Коллеги подскажите, может и мне пригодится.
    Ищу инфу как архивы сохранять на флэшку СПК, подозреваю это что то из этой темы.
    Прошу не сильно пинать Поиском нашел доку CODESYS_Control_3.4.3.0_Reference.pdf
    но пока ничего не понял

  4. #4

    По умолчанию

    Цитата Сообщение от alexmaemur Посмотреть сообщение
    А что это? Коллеги подскажите, может и мне пригодится.
    Ищу инфу как архивы сохранять на флэшку СПК, подозреваю это что то из этой темы.
    Прошу не сильно пинать Поиском нашел доку CODESYS_Control_3.4.3.0_Reference.pdf
    но пока ничего не понял
    Надо прописать путь к флэшки СПК. Возможно не подходит флэшка.
    Если еще актуально могу посмотреть тип флэшки на которую копирую.

  5. #5

    По умолчанию

    Цитата Сообщение от Ave Посмотреть сообщение
    Надо прописать путь к флэшки СПК. Возможно не подходит флэшка.
    Если еще актуально могу посмотреть тип флэшки на которую копирую.
    Спасибо Ave
    Я еще полный ноль в Codesys, да и задачи ранее были несколько иные соответственно приходится все с нуля поднимать кроме SCL
    Задача с панельки сохранять, а в последствии (дальнем будущем) передавать в 1С массив данных. Пока задача минимум - получить в CSV подобном формате текстовик для открытия его в Excel. Имеющаяся библиотека ArchivatorOwenLib этот вопрос почти решила. Но... пока что почти Вот и ищу еще какие варианты.

    А попутно по форуму собираю все что в будущем может пригодится, вот и эта тема возможно тоже, но т.к полный ноль то и задал вопрос что это SysDir. К сожалению в Help ни слова, на вскидку что этот кусок кода делает мне не понятно, а очень любопытно. К сожалению в S7-400 операции с файлами никогда не требовались, а вот в СПК стали особенно актуальны и важны.

  6. #6

    По умолчанию

    var
    // handle для работы с файлами
    handle_rf: SYSFILE.RTS_IEC_HANDLE;
    // путь к директории на USB Flash
    heatPath: STRING(INT#128):= '/mnt/ufs/media/mmcblk0p1/archive/';
    // путь к файлам в директории на SD /mnt/ufs/media/sda1/ дальше указываете имя вашей директории
    //
    heatPathUSB: STRING(INT#128):= '/mnt/ufs/media/sda1/archive/';
    sPath:STRING; // путь на CD в папку Archieve
    var_end

    (*

    проверка существования файла, если нет то открываем для записи и записываем заголовок
    Для создания формата cvs разделитель надо использовать точка с запятой(
    SysDir... для работы с файлами в директории на Flash или SD
    *)

    sPath:= CONCAT(STR1:= heatPath, STR2:= '1.calibr');
    handle_rf:= SysFileOpen(szFile:= sPath, am:= AM_READ, pResult:= error_rf1);
    IF handle_rf = 16#FFFFFFFF THEN
    handle_rf:= SysFileOpen(szFile:= sPath, am:= AM_WRITE, pResult:= error_rf1);
    FOR jj:= 0 TO 14 DO
    sFileCSV:= CONCAT(STR1:= nameString[jj], STR2:= ';');
    SysFileWrite(hFile:= handle_rf, pbyBuffer:= ADR(sFileCSV), ulSize:= INT_TO_DWORD(Standard.LEN(sFileCSV)), pResult:= error_rf1);
    END_FOR
    SysFileWrite(hFile:= handle_rf, pbyBuffer:= ADR(strPSVK), ulSize:= 2, pResult:= error_rf1);
    END_IF
    SysFileClose(hFile:= handle_rf);

  7. #7

    По умолчанию

    Надо подключить библиотеку CAA File.
    Набрать в тексте например SysDirOpen. Нажать правую кнопку мышки. Выбрать пункт меню Обзор->перейти к определению.
    Там описано подробней

    SysDirOpen открывает директорию и получаете хэндел. Если он не равен 16#ffffffff все нормально можно читать.
    SysDirRead читает названия файлов
    SysDirClose закрывает работу с директорией.

  8. #8

    По умолчанию

    Я использую JetFlash Transcend 4Gb. Пробовал Verbatun 8G не заработала. Так что надо пробовать разные, какая-то и заработает.

  9. #9

    По умолчанию

    Подскажите пожалуйста. Верх у меня на Мастер Скада, низ CoDeSysOPCDA. При обрыве связи не диагностируется потеря связи. Всё замирает по последним данным и не подхватывает возобновление связи. Постоянно приходится перезагружать АРМ. что делать?

  10. #10

    По умолчанию

    Кто подскажет SysDir В Обьявления переменных сделал
    szSourceDir :STRING := 'D:/Papers'; (*путь откуда копировать*)
    szDestDir :STRING := 'D:/Papers2/'; (*путь куда копировать*)
    xRecursiveDir :BOOL := TRUE; (*Копировать все подпапки True, или пропускать подпапки False*)
    xOverwriteDir :BOOL := TRUE; (*Перезаписать файлы True, оставить без изменения False*)
    stResult :SysDir.RTS_IEC_RESULT; (*Код системной ошибки среды выполнения*)
    в коде вот что
    stResult := SysDirCopy(szSourceDir, szDestDir, xRecursiveDir, xOverwriteDir) - ни чего не происходит - а в режиме эмуляции с библиотекой SysFile вот этот код работает stResult := SysFileCopy(strDestFile, strSourceFile, ADR(nCopiedSize)); - попробовал блок на CFC тоже глухо, не нашёл информацию как указывать папки нужно. Кто знает ?

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

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