PDA

Просмотр полной версии : Эффективное использование USB Flash на ПЛК110 М02



Филоненко Владислав
29.08.2017, 09:21
ПЛК110-М02 имеет разьём USB A, на котором поддерживаются хабы, HID устройства и MSD форматированные в FAT12/16/32

Рассмотрим особенности использования флешек на ПЛК.
0. Используем только библиотеку ассинхронного доступа. Открытие файла 30 секунд на медленной и забитой файлами флешке - это суровая реальность!
А используя библиотеку, не забываем обрабатывать коды ошибок.

1. Процедура удаления/замены флешки -
Для безопасного удаления флешки необходимо закрыть все файлы на плк и дождавшись прекращения активности флешки (на некоторых ждать нужно несколько секунд), вынуть накопитель. Если просто вынуть - файлы могут испортится вплоть до полного разрушения таблицы FAT.

Вставлять флешку следует тоже при всех закрытых файлах!
Однако из-за статического напряжения, скапливающегося на человеке, я не рекомендую заменять флешку при работающем ПЛК (если Вы не используете антистатическую обувь, а пол не покрыт антистатическим покрытием).


2. Простые правила работы с флешкой, к-е позволят сохранить производительность.
Создание файлов
а. Не создавайте слишком много файлов - типичная (читаем дешёвая) флешка с 2000 файлами сначала сильно тупит (торможение операций до 1000 раз!), а затем просто отказывается выполнять операции записи.
б. Создавая сотни и тысячи файлов с одинаковым началом, типичный пример неправильного названия от наших пользователей: 54214161132238368_MS_20000101-160000.csv, где 54214161132238368_MS_20 - это константа,
Вы лишь усложняете работу ПО USB MSD по созданию коротких имён. Время поиска свободного имени может (и возрастает!) в тысячи раз.
Идеально использовать только имена в формате 8.3
Ну или менять начальные символы имени, а не конечные.

Запись
Не пишите по 10 байт. Это вызовет лишь лишние телодвижения секторов внутри флешки. Опять же, типичная флешка имеет слишком маленький ресурс перезаписей и может очень быстро умереть от таких манипуляций. Даже если она формально большая по объёму, а данных вроде мало.
Накапливайте данные на RAM-диске и сохраняйте крупными кусками.
Сохраняйте данные на внутренней Flash, её ресурс по записям на порядки выше.

Отдых
да, флешкам нужен отдых. Процедуры самооочистки и оптимизации внутри флешки запускаются не сразу, а через большой таймаут, поэтому обращение к файлам на флешке лучше организовать раз в 15-20 минут.

Используя эти нехитрые советы, Вы избавите себя и клиентов от лишних проблем.

alewka006
13.09.2017, 15:16
ПЛК110-М02 имеет разьём USB A, на котором поддерживаются хабы, HID устройства и MSD форматированные в FAT12/16/32

Рассмотрим особенности использования флешек на ПЛК.
0. Используем только библиотеку ассинхронного доступа. Открытие файла 30 секунд на медленной и забитой файлами флешке - это суровая реальность!
А используя библиотеку, не забываем обрабатывать коды ошибок.

1. Процедура удаления/замены флешки -
Для безопасного удаления флешки необходимо закрыть все файлы на плк и дождавшись прекращения активности флешки (на некоторых ждать нужно несколько секунд), вынуть накопитель. Если просто вынуть - файлы могут испортится вплоть до полного разрушения таблицы FAT.

Вставлять флешку следует тоже при всех закрытых файлах!
Однако из-за статического напряжения, скапливающегося на человеке, я не рекомендую заменять флешку при работающем ПЛК (если Вы не используете антистатическую обувь, а пол не покрыт антистатическим покрытием).


2. Простые правила работы с флешкой, к-е позволят сохранить производительность.
Создание файлов
а. Не создавайте слишком много файлов - типичная (читаем дешёвая) флешка с 2000 файлами сначала сильно тупит (торможение операций до 1000 раз!), а затем просто отказывается выполнять операции записи.
б. Создавая сотни и тысячи файлов с одинаковым началом, типичный пример неправильного названия от наших пользователей: 54214161132238368_MS_20000101-160000.csv, где 54214161132238368_MS_20 - это константа,
Вы лишь усложняете работу ПО USB MSD по созданию коротких имён. Время поиска свободного имени может (и возрастает!) в тысячи раз.
Идеально использовать только имена в формате 8.3
Ну или менять начальные символы имени, а не конечные.

Запись
Не пишите по 10 байт. Это вызовет лишь лишние телодвижения секторов внутри флешки. Опять же, типичная флешка имеет слишком маленький ресурс перезаписей и может очень быстро умереть от таких манипуляций. Даже если она формально большая по объёму, а данных вроде мало.
Накапливайте данные на RAM-диске и сохраняйте крупными кусками.
Сохраняйте данные на внутренней Flash, её ресурс по записям на порядки выше.

Отдых
да, флешкам нужен отдых. Процедуры самооочистки и оптимизации внутри флешки запускаются не сразу, а через большой таймаут, поэтому обращение к файлам на флешке лучше организовать раз в 15-20 минут.

Используя эти нехитрые советы, Вы избавите себя и клиентов от лишних проблем.

Почему эта информация появилась спустя столько времени после выхода контроллера? Почему при всех этих требованиях в описании контроллера написано, что можно вести архив? Есть внешний архиватор который замечательно справляется со своими функциями. На мой взгляд размещение USB разъема на борту контроллера должно расширять функционал, а на деле его лучше сразу супер клеем залить чтобы соблазна использовать не было. В ram диск записать более 32 кБ не получается. Даже если эта проблема решится... Как можно хранить архив в энергозависимой памяти 20 минут? За это время столько всего может произойти.

Филоненко Владислав
13.09.2017, 19:26
Потому что оказалось, что 99% флешек на рынке - фуфло, которое через пару суток непрерывной архивации начинает жутко тормозить и в конце концов просто отклоняют команды интерфейса.
Потому что пользователи начали создавать на флешке по 4000 файлов вида 54214161132238368_MS_20000101-160000.csv и система преобразования в короткие имена начала сходить с ума.
Потому что записывать по 10 байт так легко, но смотрим п.1 - 99% флешек фуфло и быстро выходят из строя.

Владимир Ситников
13.09.2017, 19:34
Потому что пользователи начали создавать на флешке по 4000 файлов вида 54214161132238368_MS_20000101-160000.csv
В этом плане особенно забавно звучит обновление Linux 4.13:

https://www.opennet.ru/opennews/art.shtml?num=47126 : В файловой системе ext4 реализована опция "largedir", при указании которой увеличивается число файлов, которое может размещаться в одной директории. Без данной опции действует лимит на 10 млн файлов в одной директории, а при указании опции "largedir" лимит увеличивается до 2 миллиардов файлов. Опция подготовлена разработчиками кластерной файловой системы Lustre;

Филоненко Владислав
14.09.2017, 09:24
Владимир, не позорьтесь, FAT и EXT4 разделяет десятилетия прогресса.

melky
14.09.2017, 10:07
Владимир Ситников на Raspberry с установленной scada системой и записью текущих данных непосредственно на flash карту она умирает месяца через 3.
основной раздел ext4. Так что засуньте свои заключения между fat и ext4 туда :) не работает это....

Так что подтверждаю, что флешки нынче фуфло. Промышленные стоят на порядок дороже.

Владимир Ситников
14.09.2017, 10:53
Ладно Ситников не раскрыл полностью, что хотел сказать

Да уж. Я думал всем будет понятно, что "только дурак будет хранить 2 миллиарда файлов в одной папке, а потом доблестно пытаться открыть её в проводнике/Far/далее по списку".

Необходимость делить большие папки на подпапки вызвана не только особенностями файловых систем, но и тем, что большие папки долго/неудобно смотреть в стандартных инструментах.

alewka006
14.09.2017, 11:38
Потому что оказалось, что 99% флешек на рынке - фуфло, которое через пару суток непрерывной архивации начинает жутко тормозить и в конце концов просто отклоняют команды интерфейса.
Потому что пользователи начали создавать на флешке по 4000 файлов вида 54214161132238368_MS_20000101-160000.csv и система преобразования в короткие имена начала сходить с ума.
Потому что записывать по 10 байт так легко, но смотрим п.1 - 99% флешек фуфло и быстро выходят из строя.

1. Если 99% фуфло зачем вообще было затевать это все и вводить потребителя в заблуждение? В описании контроллера фразы типа "Внимание! Из-за плохого качества флешек не рекомендуем пользоваться портом USB" нету.
2. Только вчера провалился тест в котором имя файла было не типа 54214161132238368_MS_20000101-160000.csv, а в формате 8.3. Не проработав и сутки запись прекратилась. Всего 2 файла.

Филоненко Владислав
14.09.2017, 11:49
2. Таки пункт 1. 4000 файлов - это вишенка на торте.

alewka006
14.09.2017, 12:01
2. Таки пункт 1. 4000 файлов - это вишенка на торте.

Почему 4000? Менее чем за сутки всего 2 файла

Филоненко Владислав
14.09.2017, 12:28
4000 файлов - это вишенка на торте. Пример того, что делать не надо.

Например, не надо бросать ПЛК в воду, бить кувалдой и перезжать автомобилем.
И в инструкции к ПЛК всех производителей Вы не найдёте этих пунктов. Т.к. существует "здравый смысл".

Т.к. по результатам эксплуатации флешек нашими пользователями "здравый смысл" в их действиях не был обнаружен, мы были вынуждены потратить кучу времени, чтобы убедится в чём причина проблем с флешкой у пользователя и выпустить эту инструкцию. Не суйте кота в микроволновку.

melky
14.09.2017, 13:08
capzap - есть еще раздел boot, который в Fat, служит только для загрузки. все остальное не посмотреть НИКАК на Винде, кроме boot раздела Винда ничего не увидит. Все таки там Linux стоит

з.ы. зачем затевать ? для ПЛК существуют промышленные flash карты, которые лишены недостатков ширпотреба, но их цена 100 баксов за штучку многих не будет радовать.

melky
14.09.2017, 13:47
я всего лишь привел пример, что ext4 не является гарантом, по отношению к fat при постоянной записи. Это вы уже зацепились за Малину и Linux.
Если качество флешек фуфло, то никакая файловая система ее не спасет.

Если на то пошло, то штатными средствами и ntfs в Linux не разглядеть, так что спич про Тотал точно не в тему, ага... и речь совершенно была о другом.

melky
14.09.2017, 14:16
бл... еще раз повторяю, флешка, которую я втыкаю в Малину имеет файловую систему EXT4 (ЭКСТ4) а не гребанный FAT, так по русски объяснил или вам вывод команды blkid показать ?

По части Тотала - чтобы видет ext4 необходимо установить плагин для него в Винде
По части обратного просмотра ntfs в Linux необходимо установить драйвер (модуль ядра для ntfs) в системе. Этот модуль не является обязательным в Linux и часть дистрибутивов его даже не включают так как ntfs является проприетарным. Отсюда суть - штатными средствами (если выкинуть всю проприетарщину) раздел виден не будет.

melky
14.09.2017, 14:53
По моему первый раз я ясно и написал, что при записи текущих данных на ext4 флешка на Малине умирает за 3 месяца. Самое первое мое сообщение. И какая разница есть там boot с fat или его нет, а это просто отдельная флешка с ext4?

melky
14.09.2017, 15:40
да какая разница форматируется флешка или записывается уже размеченный образ на флешку если там файловая система ext4 и даже при ней флешка не вытягивает тележку при постоянной записи на нее и начинает сыпаться ??????

Вот объясните, КАКАЯ РАЗНИЦА в способе создания разделов ????? Речь о плохом качестве флеш карт, не зависящих от типа файловой системы. мой пример именно об этом...

Засуньте такую карту в смартфон или ноутбук и пишите на нее постоянно, она тоже умрет

alewka006
14.09.2017, 18:14
зачем Вы мне это всё рассказываете, тема про флешки а не про малину, во вторых раз уж говорите никак, плагины тотал командера позволяет просматривать линукс разделы и в винде если что.
Мне известно что на плк-MS4 стоит линукс, на остальных его скорее всего нет, поэтому говорить о монтировании флешек с отличной файловой системой от FAT смысла нет, не те объемы памяти чтоб внедрять дополнительный код для этого.
Крайне не понятно зачем пытаться накапливать до 32кБ информацию чтоб писать на флеш, панели вейнтек пишут в свою внутреннюю память после накопления до 4кБ и всё всех устраивает

Накапливать для того, чтобы реже обращаться к флешке. В последней рекомендации время обращения к флешке должно быть не чаще 15-20 минут

Филоненко Владислав
14.09.2017, 20:57
Данные раз в 10 мс??? Это система управления ракетным пуском? Делали тут одни на ПЛК, всё взорвалось, ПЛК уцелел :) Перекись она такая - уже 100 лет всё взрывает.
Для реальных объектов раз в 5 минут - и то часто будет. Или по событиям, смотря по потребностям.

Опять же наблюдал логи в стиле: "дайте нам гигабайт - мы найдем мусор чтобы его забить".

Scream
14.09.2017, 21:27
Для реальных объектов раз в 5 минут - и то часто будет.


Тоесть вы делаете ПЛК для каких-то своих реальных объектов??
Что для вас реальный объект? КАК вообще можно говорить о объектах, вы знаете каждый ПЛК где стоит??

Мне, например, было бы полезно писать логи на объекте, где идёт нормальный цикл от 3х до 6ти секунд, в цикле 6 word чисел ВАЖНЫХ + время, хотяб в миллисекундах.
На другом объекте температуры и давление, там пореже.

Филоненко Владислав
15.09.2017, 13:32
Таки да, я делал и делаю множество научных приборов (и не научных), используя как продукцию ОВЕН, так и самопал.
И чётко разделяю оперативные данные, к-е в реальном времени идут в верхний уровень/SCADA/ПО на ПК и логирование, призванное сохранить состояние системы в случае сбоев, смены режимов и т.п.
раз в 3 секунды - это не логи, а оперативные данные. И коли их хочется иметь их в виде истории - надо использовать внешние носители (самописец, МСД200, флешка с настроенным многоуровневым алгоритмом записи с накоплением и прореживанием, запись на удалённый сервер и т.п.).
Т.к. история процессов пишется для последующего анализа в случае БП. И тут ПЛК как хранилище ну никак не может выступать.

Scream
15.09.2017, 14:46
Таки да, я делал и делаю множество научных приборов (и не научных), используя как продукцию ОВЕН, так и самопал.
И чётко разделяю оперативные данные, к-е в реальном времени идут в верхний уровень/SCADA/ПО на ПК и логирование, призванное сохранить состояние системы в случае сбоев, смены режимов и т.п.
раз в 3 секунды - это не логи, а оперативные данные. И коли их хочется иметь их в виде истории - надо использовать внешние носители (самописец, МСД200, флешка с настроенным многоуровневым алгоритмом записи с накоплением и прореживанием, запись на удалённый сервер и т.п.).
Т.к. история процессов пишется для последующего анализа в случае БП. И тут ПЛК как хранилище ну никак не может выступать.

HMI weintek может, а ПЛК 110 М02 не может.

Данные передаются в верхний уровень, я рассматриваю USB накопитель в качестве вторичного архива, если проблемы с сервером\сетью\скадой\электриками\погодой и т.д., то данные можно будет достать, они очень важны для учёта и тот поток данных который я указал просто ничтожен, даже ардуина справится.

И с мсд200 не надо мне, купили раз, лежит на полке 4 года уже.

Ближе к делу.
Где посмотреть ПРИМЕР КАК НАДО делать с ПЛК 110 М02 запись на USB в режиме shift mode??
Просто готовый пример есть?

Sergey666
22.01.2018, 14:14
Таки да , я вернулся к теме годовой давности о перемешивании данных при записи файлов на usb. Во вложении проект для ПЛК110-30М[M02], буферный массив данных логируется с периодом 10секунд , запись на usb в файл Data_log.csv выполняется при заполнении 7го элемента (счет от 0), запись событий в файл Alarm_log.csv производится вручную кнопкой в визуализации. При записи файла Alarm_log.csv в него попадают данные из Data_log.csv. Образцы файлов также прикладываю.
Думал может в обновленной прошивке исправилось, ан нет.
Да,еще... господин Филоненко, на сайте фирмы Овен, в которой вы работаете, в примере для архивирования на USB вообще период записи 1секунда. В подборке нет библиотеки OwenLibUsbSerial.lib , в подборке библиотек Овен для ПЛК110/160 нет библиотек для асинхронной работы с файлами.
В описании к примеру не указано, что проверка наличия флэшки Обязательна!!! При записи на отсутствующую флэшку ПЛК глючит и перезагружается.
Г-н Филоненко я желаю вам взять подряд на изготовление какого-нибудь прибора(научного или не очень) для Лукойла,Газпрома,или Роснефти. Может быть они вас научат работать, а вы уж с коллегами поработаете.

Филоненко Владислав
22.01.2018, 15:25
Сколько сарказма.
Писать на отсутствующую флешку - интересно зачем? Проверить, что её нет - не не вариант?
А вынимать флешку на ходу прямо запрещает так любимая Вами инструкция!

Что же касается записи 2-х файлов - для начала программа имеет ряд логических ошибок, например в case 50:
Так же нет блокировки от одновременной записи.

В логах тоже странная штука

К примеру в логе массивов идут записи каждые 10 секунд.
...
22.1.2018;13:37:18;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0 ;0.0;0;0;0;0; (далее куча пустого места, поскипано)
22.1.2018;13:37:28;0.0;0.0;0.0;0.0;0.0;0.0;0.0;0.0 ;0.0;0;0;0;0; (далее куча пустого места, поскипано)
...
А в логе эвентов
22.1.2018;13:37:22;Тайм-срез№1;
0;0.0;0.0;0.0;0.0;0.0;0; ;0;
22.1.2018;13:37:27;Тайм-срез№2;
0;0.0;0.0;0.0;0.0;0.0;0;0;0;
22.1.2018;13:37:32;Тайм-срез№3;
0;0.0;0.0;0.0;0.0;0.0;0; ;0;0
22.1.2018;13:38:22;Тайм-срез№4;
0;0.0;0.0;0.0;0.0;0.0;0; ;0;
22.1.2018;13:38:25;Тайм-срез№5;
0;0.0;0.0;0.0;0.0;0.0;0;0;0;

Тут дублирующихся записей не вижу. Времена в логе эвентов не соответствуют временам
в логе массивов.
А нули - это скорее переполнение буферов где-то вылазит. Замените динамически генерируемые строки на константы и проверьте.

Ну или предположить, что немцы, ваявшие файловую систему, встроили туда механизм выбора изюма из булки :) Нули оставляем, а даты не оставляем.

Sergey666
22.01.2018, 16:01
на вскидку, когда в комментах написано, что состояние ошибки это не только ноль, но и числа с единицей в старшем разряде двойного слова, то не стоит использовать условие не равно нулю чтобы записывать в файл.
Не понял. Конкретней пожалуйста.


Что же касается записи 2-х файлов - для начала программа имеет ряд логических ошибок, например в case 50:
Так же нет блокировки от одновременной записи.

В case 50 закрытие файла. Запись в 30м, защита от одновременной записи в 2 файла реализована на уровне спуска всего этого алгоритма. Пока флэш не освободится процедура записи не стартует. Да времена естественно не совпадают Даталог ведется по таймеру , лог событий по ручному нажатию.
И все лишнее в Alm_log это куски из файла Data_log.
Собственно мои предположения:
1. Не чистится буфер внутри функции.
2. Странно, что разные файлы открываются с одним дескриптором.Хотя если одновременного открытия нет , то и дескриптор может быть один. Может быть надо не закрывать файлы после записи, а держать их открытыми.
3. Собственно запись ведется, только бесят (и не только меня) лишние записи. Если у меня ошибка - укажите на нее конкретно.


Ну или предположить, что немцы, ваявшие файловую систему, встроили туда механизм выбора изюма из булки http://www.owen.ru/forum/images/smilies/smile.png Нули оставляем, а даты не оставляем.

Ага! Они немцы такие , изюм выкавыривать , фильмы снимать...:p

Филоненко Владислав
22.01.2018, 18:06
Замените все буфера на константы и удивитесь отсутствию мусора.
Хендл может быть один, это просто "место" в массиве.

Sergey666
23.01.2018, 11:34
Замените все буфера на константы и удивитесь отсутствию мусора.
Хендл может быть один, это просто "место" в массиве.

Владислав, что вы подразумеваете под "константы"?
Фиксированные строки типа "Здравствуй мир"?
Я пробовал ранее и сейчас убрать буферный массив строк данных и писать строку по факту появления-обновления(период 30сек). События так и оставил запись по "ручному" вводу. Ничего не поменялось.

Это в этом проекте мало данных и они нормально вмещаются в одну строку, изначально ,еще год назад планировалось создавать и вести несколько файлов логов данных (напр температура,давление,другие датчики) и два файла событий (аварии, собственно события(пуск,стоп, и тд)).Так вот когда это было собрано в рабоче-тестовую конструкцию на стадии проверки было обнаружено дикое(дичайшее) смешение данных.Естественно не обошлось и без моих косячков, но пофиксенное-приглаженное тоже давало кашу на выходе, поэтому было принято решение оставить один файл логов данных и один файл для аварий, чтобы хоть что-то, как-то было. В техподдержку обращался, там какое-то мычание ягнят раздавалось...

Неужели нет возможности у производителя привести в соответствие с заявленным функционал данной линейки контроллеров??? Неужели это невозможно- сделать нормальные функциональные блоки для корректной работы с файлами? Для чего , или для кого вы выпустили эту серию(ПЛК110[M02]), для управления движением они не годятся, для ведения логов данных они тоже не годятся.

Сема
11.04.2018, 09:43
Приветствую всех, уважаемые коллеги.

Немного не в тему, подскажите пожалуйста, с помощью чего и как вести архивацию файлов на ПЛК110 М02 ? Есть какие-нибудь примеры и стоит ли оно того??

Вопрос решён, спасибо.

Филоненко Владислав
12.04.2018, 12:51
Владислав, что вы подразумеваете под "константы"?
Фиксированные строки типа "Здравствуй мир"?
Я пробовал ранее и сейчас убрать буферный массив строк данных и писать строку по факту появления-обновления(период 30сек). События так и оставил запись по "ручному" вводу. Ничего не поменялось.

Это в этом проекте мало данных и они нормально вмещаются в одну строку, изначально ,еще год назад планировалось создавать и вести несколько файлов логов данных (напр температура,давление,другие датчики) и два файла событий (аварии, собственно события(пуск,стоп, и тд)).Так вот когда это было собрано в рабоче-тестовую конструкцию на стадии проверки было обнаружено дикое(дичайшее) смешение данных.Естественно не обошлось и без моих косячков, но пофиксенное-приглаженное тоже давало кашу на выходе, поэтому было принято решение оставить один файл логов данных и один файл для аварий, чтобы хоть что-то, как-то было. В техподдержку обращался, там какое-то мычание ягнят раздавалось...

Неужели нет возможности у производителя привести в соответствие с заявленным функционал данной линейки контроллеров??? Неужели это невозможно- сделать нормальные функциональные блоки для корректной работы с файлами? Для чего , или для кого вы выпустили эту серию(ПЛК110[M02]), для управления движением они не годятся, для ведения логов данных они тоже не годятся.

Массированная запись - такие тесты у нас проводились и никаких проблем не выявлено. Где-то в проекте путаются переменные/буфера/вызовы функций.
Оставьте 1 место, где будет запись не более одного файла за раз не более чем из 1 буфера фиксированной длины и расположения. И буфер в момент записи не менять!

Sergey666
24.05.2018, 11:53
Массированная запись - такие тесты у нас проводились и никаких проблем не выявлено. Где-то в проекте путаются переменные/буфера/вызовы функций.
Оставьте 1 место, где будет запись не более одного файла за раз не более чем из 1 буфера фиксированной длины и расположения. И буфер в момент записи не менять!
Ну , если тесты проводились, то прошу предоставить подробное описание условий,вводных,результатов и проект с тестовой программой.

приборист
19.07.2018, 22:33
Добрый день!
Подниму старую избитую тему.
Имеем ПЛК 110-30 М02.
Архивирование осуществляется на USB флэшку. (Потом вычитываются файлы и отправляются на сервер через сокеты).
Архивируем с помощью асинхронной библиотеки.
И имеем следующий эффект:
Стоит 5 ПЛК, 4 из них были с прошивкой 0.3.72, запись на флэш остановилась, подумал - обновлю на 0.3.73 (Хотя у нас много ПЛК работает на 0.3.67 \ 0.3.68 и проблемы там нет).
Теперь у всех прошивка 0.3.73.
1 - Не сохраняет данные на USB
Не возвращает количество байт, записанный на Flash.
Меняю путь на ram: - все сохраняет и отправляет.
Возвращая путь на usb: - не работает.
Перезагрузка - помогла.Вопрос - на долго ли.

4 - пока держатся (2 день пошел).
Флешки в 5 ПЛК одинаковые


На столе лежит такой же ПЛК. Там все еще интереснее.
Handle все время 0.
В ПЛК браузере команду filesir usb: не выполняет (Пишет Directory not found: usb:)
При этом GetUSBSerial(0, ADR(arrUSB) - возвращает 0 и передает номер USB Flash.
Выход что проверка на наличие USB не гарантирует записи на диск? Что делать и как быть?


Сразу скажу - есть около 30 ПЛК с прошивками 0.3.67, 0.3.68 где модуль архивирования работает (Уже более года).
Программа везде одинаковая, модуль сохранения и отправки не изменялся.

ЗЫ
Функционала создания папок вообще ждать?
Простыня из файлов на USB Flash напрягает.

DmitriyP
20.07.2018, 18:05
Я как раз насилую сейчас этот 110-30 м02. Методом тыка пришел к выводу, любые файловые операции осуществлять не более одной за основной цикл контроллера. Пока не привел всю программу к этому алгоритму, до смерти вымучился. У меня так же ведется логирование на USB, проблемы были при переключении и записи в файл, хендлы возвращались нолем и еще куча всякой нечисти. После приведения алгоритма к стандарту "цикл - 1 операция с файлом", проблемы пропали. Рядом стоит ПЛК 100, на нем и без этих танцев с бубном все работает уже два года без перезагрузки. Может быть и у вас в этом дело.

приборист
20.07.2018, 20:31
У меня и не бывает несколько операций за цикл.
Пользуюсь асинхронной библиотекой, там такое не прокатывает.
Все через Case, как в примере.
В каждом Case одна операция.

В другом месте оставил хранение некоторых данных на ffs.
Сделано через Syslibfile (Осталось с прошлых проектов).
Проблем нет (Но там и данных совсем мало и пишутся редко).
Может и тут перевести, глядишь и заработает нормально))

Евгений Дударев
02.08.2018, 15:10
Прошу обратить внимание на тему: http://www.owen.ru/forum/showthread.php?t=27316

Филоненко Владислав
03.08.2018, 09:32
Используйте асинхронную библиотеку

Филоненко Владислав
03.08.2018, 10:03
Входные данные не копируются во внутренний буфер ? Новое слово от овена для ввода/вывода.

Библиотека асинхронная, когда данные скопируются предсказать нельзя. гарантированно они скопировались, когда функция возвратила результат.

приборист
06.08.2018, 21:30
Добрый день!
Подниму старую избитую тему.
Имеем ПЛК 110-30 М02.
Архивирование осуществляется на USB флэшку. (Потом вычитываются файлы и отправляются на сервер через сокеты).
Архивируем с помощью асинхронной библиотеки.
И имеем следующий эффект:
Стоит 5 ПЛК, 4 из них были с прошивкой 0.3.72, запись на флэш остановилась, подумал - обновлю на 0.3.73 (Хотя у нас много ПЛК работает на 0.3.67 \ 0.3.68 и проблемы там нет).
Теперь у всех прошивка 0.3.73.
1 - Не сохраняет данные на USB
Не возвращает количество байт, записанный на Flash.
Меняю путь на ram: - все сохраняет и отправляет.
Возвращая путь на usb: - не работает.
Перезагрузка - помогла.Вопрос - на долго ли.

4 - пока держатся (2 день пошел).
Флешки в 5 ПЛК одинаковые


На столе лежит такой же ПЛК. Там все еще интереснее.
Handle все время 0.
В ПЛК браузере команду filesir usb: не выполняет (Пишет Directory not found: usb:)
При этом GetUSBSerial(0, ADR(arrUSB) - возвращает 0 и передает номер USB Flash.
Выход что проверка на наличие USB не гарантирует записи на диск? Что делать и как быть?


Сразу скажу - есть около 30 ПЛК с прошивками 0.3.67, 0.3.68 где модуль архивирования работает (Уже более года).
Программа везде одинаковая, модуль сохранения и отправки не изменялся.

ЗЫ
Функционала создания папок вообще ждать?
Простыня из файлов на USB Flash напрягает.

По теме кто-то что-то скажет?

-=Vovka=-
13.10.2018, 09:53
Да,еще... господин Филоненко, на сайте фирмы Овен, в которой вы работаете, в примере для архивирования на USB вообще период записи 1секунда. В подборке нет библиотеки OwenLibUsbSerial.lib , в подборке библиотек Овен для ПЛК110/160 нет библиотек для асинхронной работы с файлами.

Что-то на сайте не нашел, можно ссылочку?

Евгений Дударев
15.10.2018, 09:10
Что-то на сайте не нашел, можно ссылочку?
https://www.owen.ru/uploads/127/plc110_m02__usb_archivation.zip

Василий353
16.10.2018, 19:46
Добрый день!

Пишу на Flash события. Новое событие - немедленная запись (Включился двигатель 1) и т.д.
Все нормально. Но при пропадании питания и последующего восстановления запись прекращается, пока физически не вынешь и снова не вставишь.
В чем может быть проблема?

Филоненко Владислав
17.10.2018, 09:15
Папок не будет. Слишком уж гемороен механизм папок в CoDeSys.

По поводу флешек - были у нас флешки, которые на 3-й день переставали работать, а перезагрузка помогала не на долго, были и надёжные.
И программными средствами не все вылечивается. Просто флешка перестаёт отвечать на запросы хоста. И хоть кол ей теши.
Рекомендации - не использовать флешку как постоянный накопитель. Для длительного хранения есть внутренний диск, он ГОРАЗДО надёжнее.
Мне возразят - диск маленький и туда гигабайты архивов всего на свете не помещаются - да, и задачей ПЛК не является хранение файлов, для это есть такие штуки как файл-серверы. И размеры были ограничены именно потому, что большие размеры мешали бы ПЛК выполнять ОСНОВНУЮ задачу - управлять техпроцессом, а не архивировать график прироста кур за последний год, вести лог всех действий всех исполнительных устройств и действий оператора и много другое.

Если у Вас такая "зависающая" флешка - ей поможет только перетыкание или пересброс питания. В принципе, в ПЛК есть механизм отключения питания хоста. Сейчас он работает автоматически при перегрузке по питанию. Можно его сделать управляемым из программы. Если есть герои на бета-тест - можем протестировать функционал на таких "зависающих" флешках.

Василий353
20.10.2018, 16:55
Добрый день!

Пишу на Flash события. Новое событие - немедленная запись (Включился двигатель 1) и т.д.
Все нормально. Но при пропадании питания и последующего восстановления запись прекращается, пока физически не вынешь и снова не вставишь.
В чем может быть проблема?

Сейчас пишу архив в плк. По нажатию на кнопку копирую его на usb.
Если вставил одну флешку, то оан и будет работать. Вынул/вставил - файл копируется без проблем.
Беру другу флешку - копиру - светодиод маргнет а файла на ней нет. Перезагружаю плк. плк начинает работать с этой флешкой. И теперь на первую не мог ничего сохранить. и т.д.

Филоненко Владислав
22.10.2018, 08:12
Сейчас пишу архив в плк. По нажатию на кнопку копирую его на usb.
Если вставил одну флешку, то оан и будет работать. Вынул/вставил - файл копируется без проблем.
Беру другу флешку - копиру - светодиод маргнет а файла на ней нет. Перезагружаю плк. плк начинает работать с этой флешкой. И теперь на первую не мог ничего сохранить. и т.д.

Проектик не пришлёте? Если все правильно открывать?закрывать - флешки мы сменяли без проблем.

Вова13
28.09.2022, 17:24
Добрый день. Посоветуйте промышленную флешку для USB(ПЛК 110-30 MS4D)Бытовые мрут.

ПавелП
15.02.2023, 11:03
Привет всем.

Петренко опубликовал с год назад толковый пример (http://www.youtube.com/watch?v=Q6ETFE6dr4g)
"Овен ПЛК 110-М02 сохранение переменных REAL на USB FLASH в Excel"
но, как всегда, самое интересное утаил... :(

Макрос позволяет указанные переменные писать в лог фай на внешнюю флешку в формате Excel.
Где такое взять? Хоть в текстовый файл.

Есть описание Navigator_PLC_DVD_v3\04. Библиотеки\2022\Описание\OwenLibFileAsync.pdf.
Но там с ходу в 10 листах трудно разобраться.

Есть ли готовые и проверенные примеры, типа:

<имя файла.txt>, дописать с новой строки <Data>, <TIME>,
<Var1>, <Var2>, <Var3>, <Var4>, <Var5>, <Var6>, <Var7>, <Var8>.

Необходимо вести простой лог-файл раз в минуту - одна запись - одна строка.

P.S. Используется визуализация в Codesys V2 - может там есть какая фитча по теме???

Cs-Cs
15.02.2023, 16:05
ПавелП Напиши мне на info@cs-cs.net - я делал пример сбора данных для себя (когда ПЛК тестировал). Могу скинуть. Вроде как это то, что тебе надо - дописать в строку и запустить. Под CodeSys 2.3.
Но без наглости с твоей стороны чтобы было: только пример, и всё. Без "А как быть", "А вот ещё подскажи". Не хочу этого.

ПавелП
15.02.2023, 17:25
ПавелП Напиши мне на info@cs-cs.net - я делал пример сбора данных для себя (когда ПЛК тестировал). Могу скинуть. Вроде как это то, что тебе надо - дописать в строку и запустить. Под CodeSys 2.3.
Но без наглости с твоей стороны чтобы было: только пример, и всё. Без "А как быть", "А вот ещё подскажи". Не хочу этого. Спаcибо! :)

ПавелП
13.03.2023, 12:31
Привет всем.

Петренко опубликовал с год назад толковый пример (http://www.youtube.com/watch?v=Q6ETFE6dr4g)
"Овен ПЛК 110-М02 сохранение переменных REAL на USB FLASH в Excel"
но, как всегда, самое интересное утаил... :(

Макрос позволяет указанные переменные писать в лог фай на внешнюю флешку в формате Excel.
Где такое взять? Хоть в текстовый файл.

Есть описание Navigator_PLC_DVD_v3\04. Библиотеки\2022\Описание\OwenLibFileAsync.pdf.
Но там с ходу в 10 листах трудно разобраться.

Есть ли готовые и проверенные примеры, типа:

<имя файла.txt>, дописать с новой строки <Data>, <TIME>,
<Var1>, <Var2>, <Var3>, <Var4>, <Var5>, <Var6>, <Var7>, <Var8>.

Необходимо вести простой лог-файл раз в минуту - одна запись - одна строка.

P.S. Используется визуализация в Codesys V2 - может там есть какая фитча по теме???


Сам же и отвечаю, дошёл в документации до этой темы: :)

Использовал для лог-файла Модуль «Archiver» (Архиватор) уже в ПЛК160.

Эти команды выполняются нормально:

By timer (по таймеру) – данные записываются в архив с заданным периодом архивации, значение по умолчанию;

By change value (по изменению значений) – если какая-то переменная, включенная в список архивации, меняет свое значение, то происходит ее архивация,
причем только этой переменной.
Правда, тут сохраняются все переменные - но что, в итоге, мне и надо. :)

А вот с этой загвоздка:

By command (по команде) – если в переменной Status модуля архивации записана специальная команда, то происходит старт архивации, либо ее остановка (0x00FE –«стоп», 0x00FF – «старт»)

Обозвал в настройках модуль Status, присвоил 255 - не пишет в файл. Status :=255;
Пробовал 0x00FF - пытается это объявить как переменную.
и не понятно, сколько надо ждать, чтоб все 16 переменных записались, и остановить запись.

Проверил - работает Status :=255; пишет переменные в файл.
Сразу чтение Status ещё 255,
и второй раз чтение Status уже =1.
Фактические это флаг выполнения операции записи переменных в файл.