там где блок CASE мне кажется не хватает дефолтного условия, state может присваиваться например число 11, а такого кейса нет
там где блок CASE мне кажется не хватает дефолтного условия, state может присваиваться например число 11, а такого кейса нет
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Копи-паст не удался Ищите ошибку в программе
Тролль-наседка, добрый, нежный и ласковый
Я прошу прощения - Вы смотрели проект или это просто утверждение на основе уверенности в работоспособности кода в примере?
Перед тем как писать я все проверял. Со своей стороны я ошибок не нашел.
Допустим косяк в куске программы на библиотеке SysLibFileAsync. Тогда как же быть с кодом на библиотеке SysLibFile, который работает на ПЛК110-60 (старой версии).... Или библиотека SysLibFile в новой версии ПЛК 110 не поддерживается?
Еще одни момент: ошибка 80 при попытке создать загрузочный проект. Данная ошибка не дает создать проект даже с (*;*) в plc_prg. На форуме есть посты в которых решением данной проблемы была перепрошивка ПО самого микроконтроллера.
В руководстве по программированию со вкладки ПЛК110-M[02] описано, что при изменении прошивки контроллера нужно снять перемычку на плате.
На плате моего контроллера подобных перемычек нет, следовательно вопрос - как перепрошить ПО моего ПЛК?
P.S. Архив с файлами прошивок *.bin скачал.
Последний раз редактировалось Allmax; 14.04.2016 в 13:30.
Итак. Если на одном и том же ПЛК пример пишет а Ваша программа нет, то проблема, конечно же, не в Вашей программе.
Перемычку не надо снимать, это информация для других модификаций ПЛК.
Перемычку XP2 надо ставить, если прошивка через bat-файл. В большинстве случаев прошивка через UpdateCore достаточна.
Тролль-наседка, добрый, нежный и ласковый
Из Архива, приведенного в посте №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.