Добрый день.
В новом ПЛК110 есть возможность работы с USB Flash картой. Где можно почитать о том, как это делается ? Интересуют процедуры чтения/записи.
Вид для печати
Добрый день.
В новом ПЛК110 есть возможность работы с USB Flash картой. Где можно почитать о том, как это делается ? Интересуют процедуры чтения/записи.
На данном этапе это делается с помощью SysLibFile.
ссылка есть в руководстве пользователя и в описании самой библиотеки.
Программирование программируемых логических контроллеров ОВЕН ПЛК110 и ПЛК160
Руководство пользователя
Версия 1.9
В этом документе есть раздел 7.4.10 Модуль «Архиватор» (Archiver), в котором, в частности, написано
Модуль «Archiver (Архиватор)» используется для архивирования требуемых данных. Архивируемые данные могут храниться на Flash диске ПЛК и извлекаться оттуда при необходимости ...
Как я понял там речь идет о внутренней Flash ПЛК объемом 6 Мб доступной для хранения файлов и архивов.
Меня же интересует работа с внешней Flash картой, которая вставляется В USB разъем (USB A) обновленного ПЛК110.
В описании Библиотека SysLibFile.lib вообще ни слова о том как работать с файлами. размещенными во внешней Flash ПЛК.
Задаёте в имени файла префикс usb: и наслаждаетесь. В архиваторе в т.ч.
Внимание, Флешка должна поддерживать USB1.1 ! Многие дешёвые флешки этого не умеют.
SysLibFile для работы с файлами (ну кроме Ram-диска) мы настоятельно не рекомендуем. Используйте OwenAsyncLibFile
Также по префиксам usb: и ram: можно смотреть файлы в PLCBrowser и работать с ними. Ограниченно поддерживаются каталоги (без создания, но возможен просмотр и перемещение файлов в /из)
Спасибо за ответ по существу вопроса. А где найти OwenAsyncLibFile ?
Там же где РЭ на ПЛК. На нашем сайте. Но пока не выложили. Приношу свои извинения.
Ну а чтобы наши клиенты не испытывали проблем с М02 - выкладываю пакет библиотек с примерами.
Еще бы надо описание к этой библиотеке сделать.
Сообщите, что вы приобрели ПЛК110 М02 и хотите получить РЭ и пр. на support@owen.ru
Уважаемый, В.Филоненко, дайте, пожалуйста, краткие пояснения к той библиотеке, которую вы недавно любезно выложили.
Лично меня интересуют два простых вопроса, как прочитать из USB-Flash в ОЗУ (в массив) ПЛК и обратная процедура.
Там же пример есть. Работа с USB ничем не отличается от работы с файлами на внутреннем диске, окромя префикса.
Что у Вас не получается то?
В чем разница между библиотеками SysLibFile.lib и OwenLibFileAsync.lib ? Зачем понадобилась новая библиотека ?
К библиотеке OwenLibFileAsync.lib нет описаний, к кодам функций библиотеки нет ни единого комментария.
Филоненко Владислав, вы хоть опишите назначения функций библиотеки OwenLibFileAsync.lib.
Также важно знать, что передается в функции и что возвращают функции.
да как везде, слово async обозначает что работает так же как в обычной бибке только в асинхронном режиме, в архиве есть примеры работы, что там сложного. Причем я это смортел даже без КДС проста в винраре и комменты есть, ну разве что DONE без комментария, так и смысл оного понятен
ну и что собственно требуется комментировать то?
комменты есть что означают ошибки возвращаемого результата, в добавок без комментариев остались две позиции это идет процесс обработки и успешное окончание, working и done - их Вам надо объяснять что ли?
Лень искасть на русском, на диске нашел такой файл, мне больше и не надо
Спасибо. А где этот диск на сайте найти.
где то в разделе плк110 ссыль, я не помню
Вот обращение к функции Чтения данных из файла: res:=OwenFileReadAsync(handle,ADR(bufin),14,ADR(re sult));
res объявлена как ASYNC_RET_VALUE
Что это за тип возвращаемого значения ASYNC_RET_VALUE ?
capzap, что эта функция возвращает, т.е. что будет присвоено res ?
А это что?
TYPE ASYNC_RET_VALUE :
(
ASYNC_PAUSED:= -1000, (*Система по своим внутренним причинам приостановила обработку асинхронных запросов*)
ASYNC_QUERY_FULL:= -1001, (*>5 запросов в очереди*)
ASYNC_BLOCK_ACCESS := -1002,(*Запрос к уже обрабатываемому объекту с другой функцией*)
ASYNC_GENERAL_ERROR:= -1003,
ASYNC_INVALID_HANDLE_ERROR:= -1004, (*Запрос к неоткрытому/открытому не через асинхронную библиотеку файлу*)
ASYNC_WORKING:= 16#7FFE,
ASYNC_DONE:=16#7FFF
);
END_TYPE
Библиотека асинхронного доступа нужна для ускорения работы цикла управления.
Т.к. появились внешние флешки, а они могут тормозить операцию (например записи) до секунды спокойно, то при использовании обычной синхронной библиотеки весь цикл управления на 1 секунду замирает.
Что неприемлемо.
Доступ к внутренней Flash, конечно быстрее, но тоже возможны задержки при записи.
Поэтому мы настоятельно рекомендуем в новых проектах использовать только функции асинхронного доступа к файлам.
Туман потихоньку рассеивается. ;)
Что это за тип возвращаемого значения ASYNC_RET_VALUE ? С чем его едят ? Как с ним работать ? Это число или что-то другое ?
Waiting -
waiting for function result — ожидание результата функции
I am still in waiting for my plc M02. — Я всё ещё жду ПЛК М02.
ASYNC_RET_VALUE - Обычный пользовательский тип. Есть его не надо, просто сравниваете возвращаемое значение с константами в библиотеке.
ну да, именно так
Еще вопрос. Как прочитать файл по частям, сначала первую половину файла, а через n минут вторую половину файла ?
Если знаете размер файла, то вычисляете до какой позиции нужно читать, и двигаете указатель файла от его начала до нужной позиции с помощью OwenFileSetPosAsync, ну и читаете что Вам нужно с помощью OwenFileReadAsync. Если не знаете размер файла - воспользуйтесь OwenFileGetSizeAsync для выяснения размера файла
Большое спасибо.
Добрый день.
На флешке записан текстовый файл. В файле через запятую перечисляются целые положительные числа в диапазоне от 0 до 255 (1,3,7,5,11,13 ...). Надо прочитать файл в ОЗУ ПЛК110-М[02]. Какой тип данных может иметь буфер, куда будет считываться файл ? В программе мне надо работать с числами.
Я когда-то писал пример на чтение констант с текстового файла, перечисленных через точку с запятой (приложил к письму). Пользовался массивом типа string и на тот момент не асинхронной библиотекой SysLibFile (я думаю, если поймете этот пример, то и на асинхронной библиотеке получится).
Код назвать профессиональным не могу, но в помощь сойдет:)
Newcomer, это не библиотека Овен, просто так сохранил. Весь код программы в файле с расширением.lib - двойной щелчок, откроется Кодесис.
Что-то я не понимаю вас.
simply_usb.pro - это ваша программа.
syslibfile_for_ustav_wr_final.lib - это библиотека.
На картинках все видно.
В программе файл читается в массив типа INT.
Все прекрасно, только я в асинхронной библиотеке такого ФБ (ARCHIV_FROM_USB_TXT) не нашел. Или я плохо смотрел ?
Может многоуважаемый В.Филоненко прояснит ситуацию ?
Newcomer, объясняю:
1) Код сохранил в формате библиотеки (чтобы воспользоваться ею как функциональным блоком в проекте simply_usb.pro). Как я разбирал константы из текстового файла, указано именно там. Вы можете (если уж сильно лень) копипастить в свою программу.
2) Можете файл вовсе simply_usb.pro не использовать (это проект, в котором я вызываю ФБ).
syslibfile_for_ustav_wr_final.lib - это библиотека, которую вы создали. В состав библиотеки входит один ФБ под названием archiv_from_usb_txt.
Как я понял, прочитать файл из Flash можно только в строковую переменную, а далее выковыривать из строки эти самые циферки.
ARCHIV_FROM_USB_TXT - это не мы делали :cool: