Страница 13 из 18 ПерваяПервая ... 31112131415 ... ПоследняяПоследняя
Показано с 121 по 130 из 177

Тема: Работа с USB Flash карт в новом ПЛК110

  1. #121
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,246

    По умолчанию

    Цитата Сообщение от AlekseyK Посмотреть сообщение
    Владислав, спасибо за ваши ответы. Это очень полезная информация, но вопрос так и остался без ответа. Почему в вашем примере для обращения к файлу используются разные пути. Это не придирка к вашему коду, а желание разобраться в примере и не использовать его как бездумный копи-паст.
    опечатку, как объяснение не рассматриваете?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  2. #122

    По умолчанию

    Конечно рассматриваю. Если бы Владислав ответил, что это опечатка, то вопрос был бы сразу закрыт.

  3. #123

    По умолчанию

    Да, очепятка.
    Тролль-наседка, добрый, нежный и ласковый

  4. #124
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Владислав, добрый день!
    Подскажите по такому вопросу:
    Делаю архивирование на флешку.
    С записью все ОК.
    Некая проблема с чтением.
    При MinCycleLenght в 1 мс - выходит статус ASYNC_BLOCK_ACCESS
    Опытным путем понял, что при цикле в 4 мс ошибка не вылетает, и все нормально работает.

    Флешка пустая, 8 гб.
    Далее от ошибки не избавиться никак, помогает лишь перезагрузка.
    Пробовал при ошибке выполнять OwenFileCloseAllOpenAsync, так же не помогает.

    И подскажите - SysLibDir не поддерживается?
    Можно как то папки создавать?

  5. #125

    По умолчанию

    Если всё и сразу делать с циклом 1 мс - конечно будет блокировка, вы сколько файлов за раз пытаетесь обрабатывать? Максимум можно 5 штук.
    Тролль-наседка, добрый, нежный и ласковый

  6. #126
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Если всё и сразу делать с циклом 1 мс - конечно будет блокировка, вы сколько файлов за раз пытаетесь обрабатывать? Максимум можно 5 штук.
    Файл один.
    Чтение и запись разнесены (и блокируют друг друга, чтобы избежать одновременной работы с файлом).

    Все обращения к файл разделены на два этапа (как в примере).
    CASE state OF
    0: (*Открытие файла - этап 1*)
    res:=OwenFileOpenAsync(Queue[0],'r',ADR(handle));(*возвращает дескриптор файла, либо 0 (в некоторых случаях 4 294 967 295 или -1) в случае ошибки*)
    IF res=ASYNC_WORKING THEN
    state:=1;(*нет ошибок, переход на открытие файла этап 2*)
    ELSE
    state:=0;
    END_IF


    1: (*Открытие файла - этап 2*)
    res:=OwenFileOpenAsync(Queue[0],'r',ADR(handle));
    IF res=ASYNC_DONE THEN (*если "готов", и нет ошибок, то переход в состояние 2*)
    IF handle<>0 THEN
    state:=11;(*нет ошибок, переход на чтение длины файла 1*)
    ELSE
    state:=0;(*иначе можно перейти на 1 этап открытия файла, либо предусмотреть собственное действие самостоятельно *)
    END_IF
    ELSIF res<0 THEN
    state:=0;
    END_IF


    11: (*Чтение размера, этап 1*)
    res:=OwenFileGetSizeAsync(Queue[0],ADR(sizeRead));(*возвращает дескриптор файла, либо 0 (в некоторых случаях 4 294 967 295 или -1) в случае ошибки*)
    IF res=ASYNC_WORKING THEN
    state:=12;(*нет ошибок, переход на открытие файла этап 2*)
    ELSE
    state:=4;
    END_IF


    12: (*Чтение размера, этап 2*)
    res:=OwenFileGetSizeAsync(Queue[0],ADR(sizeRead));(*возвращает дескриптор файла, либо 0 (в некоторых случаях 4 294 967 295 или -1) в случае ошибки*)
    IF res=ASYNC_DONE THEN
    (*нет ошибок, переход на открытие файла этап 2*)
    По условию либо state:=13; либо state:=2;
    ELSE
    state:=4;
    END_IF

    13: (*Установим начальную позиция для чтения этап 1*)
    res:=OwenFileSetPosAsync(handle,posQueue,ADR(resul t));(*возвращает дескриптор файла, либо 0 (в некоторых случаях 4 294 967 295 или -1) в случае ошибки*)
    IF res=ASYNC_WORKING THEN
    state:=14;(*нет ошибок, переход на открытие файла этап 2*)
    ELSE
    state:=4;
    END_IF

    14: (*Установим начальную позиция для чтения этап 1*)
    res:=OwenFileSetPosAsync(handle,posQueue,ADR(resul t));(*возвращает дескриптор файла, либо 0 (в некоторых случаях 4 294 967 295 или -1) в случае ошибки*)
    IF res=ASYNC_DONE THEN
    state:=2;(*нет ошибок, переход на открытие файла этап 2*)
    ELSE
    state:=4;
    END_IF

    2: (*Чтение из файл - этап 1*)
    (*Читаем кусок из файла*)
    res:=OwenFileReadAsync(handle,ADR(arrPostData), sizeRead, ADR(result));(*пишем данные *)
    IF res=ASYNC_WORKING THEN
    state:=3;(*нет ошибок, переход на запись файла этап 2, либо по усмотрению пользователя*)
    ELSE
    state:=4;(*иначе можно перейти на этап закрытия файла, либо предусмотреть собственное действие самостоятельно *)
    END_IF

    3: (*Запись в файл - этап 2*)
    res:=OwenFileReadAsync(handle,ADR(arrPostData), sizeRead, ADR(result));(*пишем данные *)
    IF res=ASYNC_DONE THEN
    SysMemCpy(ADR(strAll),ADR(arrPostData),2048);
    state:=4;
    bGoGet:=TRUE;
    ELSIF res<0 THEN
    state:=0;
    END_IF

    4: (*Закрываем файл - этап 1*)
    res:=OwenFileCloseAsync(handle, ADR(result));
    IF res=ASYNC_WORKING THEN
    state:=5;(*нет ошибок, переход на закрытие файла этап 2*, либо по усмотрению пользователя*)
    ELSE
    state:=0;(*иначе можно перейти на этап открытия файла, либо предусмотреть собственное действие самостоятельно *)
    END_IF

    5: (*Закрываем файл - этап 2*)
    res:=OwenFileCloseAsync(handle, ADR(result));
    IF res=ASYNC_DONE THEN
    bDataRead:=FALSE;
    handle:=0;
    IF result=0 THEN
    state:=0;(*если файл закрыт успешно, то выходим из условного оператора CASE *)
    ELSE
    state:=0;(*иначе всё равно выходим, либо предусмореть собственное действие*)
    END_IF
    ELSIF res<0 THEN (*выход, либо собственное действие*)
    state:=0;
    END_IF
    ELSE state:=0;
    END_CASE

  7. #127

    По умолчанию

    ASYNC_BLOCK_ACCESS возвращается если есть доступ к библиотеке с др. запросом до окончания первого.
    Тролль-наседка, добрый, нежный и ласковый

  8. #128
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Как же тогда возможность работы с 5 файлами?
    Тогда точно будет доступ к библиотеке с другим запросом, до окончания первого.

    Что делать с этим ASYNC_BLOCK_ACCESS?
    Только перезагружать?

  9. #129

    По умолчанию

    Цитата Сообщение от Allmax Посмотреть сообщение
    Я прошу прощения - Вы смотрели проект или это просто утверждение на основе уверенности в работоспособности кода в примере?
    Перед тем как писать я все проверял. Со своей стороны я ошибок не нашел.
    Допустим косяк в куске программы на библиотеке SysLibFileAsync. Тогда как же быть с кодом на библиотеке SysLibFile, который работает на ПЛК110-60 (старой версии).... Или библиотека SysLibFile в новой версии ПЛК 110 не поддерживается?

    Еще одни момент: ошибка 80 при попытке создать загрузочный проект. Данная ошибка не дает создать проект даже с (*;*) в plc_prg. На форуме есть посты в которых решением данной проблемы была перепрошивка ПО самого микроконтроллера.
    В руководстве по программированию со вкладки ПЛК110-M[02] описано, что при изменении прошивки контроллера нужно снять перемычку на плате.
    На плате моего контроллера подобных перемычек нет, следовательно вопрос - как перепрошить ПО моего ПЛК?
    P.S. Архив с файлами прошивок *.bin скачал.
    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Итак. Если на одном и том же ПЛК пример пишет а Ваша программа нет, то проблема, конечно же, не в Вашей программе.
    Перемычку не надо снимать, это информация для других модификаций ПЛК.
    Перемычку XP2 надо ставить, если прошивка через bat-файл. В большинстве случаев прошивка через UpdateCore достаточна.
    Цитата Сообщение от Allmax Посмотреть сообщение
    ПЛК 110-32 М(02) не пишет данные в открытый файл. Файл создается и сохраняется на внутреннюю флэш-память ПЛК. Но массив байт (размером 300...600 байт) не сохраняется в файл - размер файла 0 байт!
    Проверял на библиотеках SysLibFileAsync и SysLibFile, возвращаемое значение записанных байт 0...
    Проект:
    Еще, как выяснилось, при попытке создать загрузочный проект кодесис выдал ошибку 80:
    Вложение 23869
    Чтобы не плодить тем:
    Столкнулся с аналогичной проблемой.
    Использовал работающий блок на ПЛК160/ПЛК110[М01] записи в файл на библиотеке SysLibFile на ПЛК110[M02]. На выходе получал пустой файл. Перепроверил опять же на ПЛК160 - работает. Переписал блок на библиотеке OwenLibFileAsync - на выходе пустой файл. Писал на внутреннюю флэш. Подумал, что возможно дело в старой прошивке (стояла 0.52). При попытке записать файл прошивки: либо практически сразу отваливалась связь и записывался только кусок файла, либо сразу ошибка 80. Помучился с этим делом, но записать так и не получилось. А вот после этого попробовал создать загрузочный проект - и ошибка 80:. Также обнаружил, что при включении плк зуммер не пищит (но правда не помню работал ли он вообще, так что возможно этот момент не принципиален).

    С чем такое поведение может быть связано и можно ли это победить не отправляя в СЦ?

  10. #130

    По умолчанию

    Цитата Сообщение от приборист Посмотреть сообщение
    Как же тогда возможность работы с 5 файлами?
    Тогда точно будет доступ к библиотеке с другим запросом, до окончания первого.

    Что делать с этим ASYNC_BLOCK_ACCESS?
    Только перезагружать?
    5 одновременных запросов к РАЗНЫМ файлам
    Тролль-наседка, добрый, нежный и ласковый

Страница 13 из 18 ПерваяПервая ... 31112131415 ... ПоследняяПоследняя

Похожие темы

  1. Работа с USB флешками в ПЛК110 [м02]
    от alexx12 в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 22.12.2015, 18:28
  2. Библиотеки для работы ПЛК110 с USB
    от Ilych в разделе ПЛК1хх
    Ответов: 12
    Последнее сообщение: 30.05.2015, 00:14
  3. Ответов: 12
    Последнее сообщение: 25.12.2014, 10:55
  4. Связь ПК с ПЛК110-30 при помощи USB
    от Иван Юрьевич в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 17.12.2014, 12:19
  5. связь с плк110 по Usb-com
    от Валерий Бурик в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 05.05.2010, 09:12

Ваши права

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