Итак. Если на одном и том же ПЛК пример пишет а Ваша программа нет, то проблема, конечно же, не в Вашей программе.
Перемычку не надо снимать, это информация для других модификаций ПЛК.
Перемычку XP2 надо ставить, если прошивка через bat-файл. В большинстве случаев прошивка через UpdateCore достаточна.
Тролль-наседка, добрый, нежный и ласковый
Чтобы не плодить тем:
Столкнулся с аналогичной проблемой.
Использовал работающий блок на ПЛК160/ПЛК110[М01] записи в файл на библиотеке SysLibFile на ПЛК110[M02]. На выходе получал пустой файл. Перепроверил опять же на ПЛК160 - работает. Переписал блок на библиотеке OwenLibFileAsync - на выходе пустой файл. Писал на внутреннюю флэш. Подумал, что возможно дело в старой прошивке (стояла 0.52). При попытке записать файл прошивки: либо практически сразу отваливалась связь и записывался только кусок файла, либо сразу ошибка 80. Помучился с этим делом, но записать так и не получилось. А вот после этого попробовал создать загрузочный проект - и ошибка 80:. Также обнаружил, что при включении плк зуммер не пищит (но правда не помню работал ли он вообще, так что возможно этот момент не принципиален).
С чем такое поведение может быть связано и можно ли это победить не отправляя в СЦ?
Из Архива, приведенного в посте №6.
Проект 110_60_click_asyncfile.pro
Почему при открытии файла используются разные пути?
Как я понимаю по первому состоянию мы инициализируем открытие файла, по второму проверяем, что файл открыт. Но почему пути разные? Где-то на форуме читал, что префикс "usb:" для обращения к порту на корпусе ПЛК, а запись без префикса - обращение к внутренней флешке. Или я что-то путаю?Код:0: res:=OwenFileOpenAsync('usb:test.dat','a',ADR(handle)); IF res=ASYNC_WORKING THEN state:=1; END_IF 1: res:=OwenFileOpenAsync('test.dat','a',ADR(handle)); IF res=ASYNC_DONE THEN IF handle<>0 THEN state:=2; ELSE state:=0; END_IF ELSIF res<0 THEN state:=0; END_IF
usb:test.dat и test.dat - это 2 разных файла
Тролль-наседка, добрый, нежный и ласковый
Хорошо, пусть так. При запуске программы на ПЛК в браузере вижу, что файл создается. Какой из них? тот который просто test.dat?
То есть логику этих операций нужно понимать следующим образом:
Пробуем открыть файл на внешней флешке. Если ответа нет, переходим к попытке открытия файла на внутренней флешке. Далее анализируем удачная ли попытка, есть ли такой файл и т.д. Так?
если набираете filedir - видим внутренний диск. Если набираем filedir usb - то флешку, Если filedir ram - то RAM-диск
Тролль-наседка, добрый, нежный и ласковый
Владислав, спасибо за ваши ответы. Это очень полезная информация, но вопрос так и остался без ответа. Почему используются разные пути. Ведь как я понимаю пример написан для работы с одним файлом. Это не придирка к вашему коду, а желание разобраться в примере и не использовать его как бездумный копи-паст.
Последний раз редактировалось AlekseyK; 18.04.2016 в 17:02.