PDA

Просмотр полной версии : СП310 Архивирование на USB



koksha
13.06.2017, 10:50
Здравствуйте.
Требуется архивирование необходимых параметров на USB-носителе. Работаю через "Конфигуратор СП300". При попытке экспорта данных чаще всего создаётся пустой файл (нулевой длины), правда с нужным именем. Статус и прогресс экспорта при этом показывают, что всё в порядке. Код ошибки экспорта 0. Экспорт осуществляю через функциональную область с помощью бита управления. Если произвести экспорт несколько раз подряд, то может записать необходимые параметры, а может все данные выдать 0 (нулями). Причем, количество экспортируемых данных больше, но не кратно необходимому количеству. Объём носителя и файловая система соответствуют тех. описанию.
Прошу помощи.

Евгений Кислов
13.06.2017, 11:51
Добрый день. Вы ознакомились с примером? http://www.owen.ru/uploads/sp307_archivation.zip

Он описан в руководстве пользователя, п. 9.7.

koksha
13.06.2017, 14:23
Добрый день. Вы ознакомились с примером? http://www.owen.ru/uploads/sp307_archivation.zip

Он описан в руководстве пользователя, п. 9.7.

Конечно, ознакомился и разобрался с данным примером. Пробовал указывать регистр хранилища как PSW, так и PFW. Результат прежний. Кстати, ячейки PFW я использую для хранения "рецептов". В конфигураторе изменяются, сохраняются, в программе считываются, всё как надо. Ещё одна непонятка - чтобы сохранить регистры PFW300 - PFW350, например, приходится указывать PFW296 - PFW346, т.е. коррекция номера (-5)??? Иначе, в случае, когда всё же удается провести экспорт, первые пять регистров равны 0. Сброс регистров прогресса и статуса я осуществляю через макрос, а не через функциональную область, как в примере (но дело не в нём, проверил).

Евгений Кислов
13.06.2017, 14:27
Конечно, ознакомился и разобрался с данным примером. Пробовал указывать регистр хранилища как PSW, так и PFW. Результат прежний. Кстати, ячейки PFW я использую для хранения "рецептов". В конфигураторе изменяются, сохраняются, в программе считываются, всё как надо. Ещё одна непонятка - чтобы сохранить регистры PFW300 - PFW350, например, приходится указывать PFW296 - PFW346, т.е. коррекция номера (-5)??? Иначе, в случае, когда всё же удается провести экспорт, первые пять регистров равны 0. Сброс регистров прогресса и статуса я осуществляю через макрос, а не через функциональную область, как в примере (но дело не в нём, проверил).

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

koksha
13.06.2017, 14:45
Возвращаясь к выложенному вами примеру. Сейчас я загрузил его в панель и ориентировался по индикатору контроль экспорта, результат и прогресс. При первом обращении к USB (попытке экспорта), создается пустой файл. Далее (через 2 секунды) происходит следующее обращение и только тогда записываются первые пять параметров с указанием названий и времени. Если подождать ещё пару секунд, то в файл допишутся ещё 5 значений параметров. Но при первом обращении (особенно если удалить файл с флешки), создаётся только файл нулевой длины.

Евгений Кислов
13.06.2017, 15:02
Возвращаясь к выложенному вами примеру. Сейчас я загрузил его в панель и ориентировался по индикатору контроль экспорта, результат и прогресс. При первом обращении к USB (попытке экспорта), создается пустой файл. Далее (через 2 секунды) происходит следующее обращение и только тогда записываются первые пять параметров с указанием названий и времени. Если подождать ещё пару секунд, то в файл допишутся ещё 5 значений параметров. Но при первом обращении (особенно если удалить файл с флешки), создаётся только файл нулевой длины.

Я такое наблюдал с при работе с неотформатированными noname накопителями. Попробуйте отформатировать накопитель в FAT32 с помощью утилиты HP USB Disk Storage Format Tool.

koksha
13.06.2017, 15:14
Выложенный мною пример работает у вас корректно? В его архивном файле пропусков нет?
Выложите ваш проект, пожалуйста, и описание действий, которые необходимо произвести, чтобы запустить архивацию.
Проект ещё в стадии разработки. Требуется перейти на 4-й экран вправо (желтая стрелка справа внизу). Справа будут таблицы, в них отображаются значения первых 75 параметров (для информативности). Кнопка "Экспорт" для экспорта на USB включает бит управления экспортом. Сам процесс экспорта осуществляется в функциональной области (в конфигураторе экран ID00007 Импорт/экспорт). Мне не нужен циклический процесс экспорта, только по необходимости. Возможно, я что-то упустил.

koksha
13.06.2017, 15:23
Провел форматирование с помощью указанной вами утилиты - результат прежний. Или только имя файла, или файл с 32000(??? откуда) значений и все 0.

petera
13.06.2017, 16:40
Проект ещё в стадии разработки. Требуется перейти на 4-й экран вправо (желтая стрелка справа внизу). Справа будут таблицы, в них отображаются значения первых 75 параметров (для информативности). Кнопка "Экспорт" для экспорта на USB включает бит управления экспортом. Сам процесс экспорта осуществляется в функциональной области (в конфигураторе экран ID00007 Импорт/экспорт). Мне не нужен циклический процесс экспорта, только по необходимости. Возможно, я что-то упустил.
1. Вы не должны использовать циклический буфер. Из-за этого Ваше смещение "т.е. коррекция номера (-5)???".
Адрес хранилища должен быть 300
31659
Циклический буфер используется совсем для других случаев экспорта.
2. И формат Ваших данных не Float.

ЗЫ. И экспортировать/Импортировать Вы должны не регистры PSW, а регистры PFW, ведь 750 регистров с рецептами (15 х 50) у Вас именно в PFW.
По этому адрес хранилища для функций экспорта и импорта д.б. именно PFW300.
Кроме того в ф. экспорта и импорта нужно сделать по три столбца, а кол-регистров на самом деле это число строк по три столбца и д. быть равным 50
31660

koksha
13.06.2017, 22:01
Простите, но вы, видимо, решили пройтись по самым простым и заметным местам, и не читали одно из моих сообщений
"Возвращаясь к выложенному вами примеру. Сейчас я загрузил его в панель и ориентировался по индикатору контроль экспорта, результат и прогресс. При первом обращении к USB (попытке экспорта), создается пустой файл. Далее (через 2 секунды) происходит следующее обращение и только тогда записываются первые пять параметров с указанием названий и времени. Если подождать ещё пару секунд, то в файл допишутся ещё 5 значений параметров. Но при первом обращении (особенно если удалить файл с флешки), создаётся только файл нулевой длины."

Конечно же сперва я делал всё, как в инструкции. И адрес PFW300, и тип данных не Float, и кол-во регистров экспорта 750. Но...
При указании адреса хранилища PFW300 первые 5 регистров были равны 0, и это только в том случае, когда удавалось создать не пустой файл. Не знаю почему, закономерности не нашел. Перепробовал множество вариантов, отключал циклический буфер. Многодневное топтание на месте, потому и написал в форум, надеясь услышать мнение более умных и опытных людей. А то, что приходится вводить коррекцию на номера регистров, столкнулся ещё раньше. Когда стыковал панель с PLC по ModBus. При чтении контроллером номера регистров нужно сдвинуть в -1 (или в +1), а при записи оставить в покое, кажется, сейчас уже не помню.
Еще, специально обращаю внимание, вышеуказанный архив это пример, часть программы для попытки выяснения конкретной проблемы.
Всё еще с нетерпением жду помощи.

Евгений Кислов
14.06.2017, 08:31
Я бы к замечаниям Petera добавил еще одно - ваш бит архивации не скидывается. Да, вы написали макрос (к сожалению, с ошибкой - неправильно обозначена операция присваивания - "==" вместо "=") - но вы нигде не вызываете.

Отредактировал ваш проект (убрав все то, что не имеет отношения к делу). У меня он работает так, как задумывалось - каждое нажатие на кнопку Экспорт заносит в архив 50 float-значений, расположенных на экране.

Причем первый попавший накопитель, который я нашел, мне тоже пришлось отформатировать HP Format Tool (полное форматирование в FAT32) - до этого с записью архива также были проблемы.

koksha
14.06.2017, 09:38
Спасибо за участие, но... Только что загрузил и опробовал отредактированный проект. Результат прежний - файл нулевой длины. Что касается макроса. Да, я очень плохо знаю язык С, просто не было необходимости в применении. Однако, я его использую, функциональная кнопка, вкладка "отжата". И ещё, по незнанию я пробовал и "==" и "=". Но я думаю его требуется вставить на вкладке " не нажата". Что я делаю не так (?) по прежнему не понятно. Возможно проблема в USB-носителе?

Евгений Кислов
14.06.2017, 09:49
Спасибо за участие, но... Только что загрузил и опробовал отредактированный проект. Результат прежний - файл нулевой длины. Что касается макроса. Да, я очень плохо знаю язык С, просто не было необходимости в применении. Однако, я его использую, функциональная кнопка, вкладка "отжата". И ещё, по незнанию я пробовал и "==" и "=". Но я думаю его требуется вставить на вкладке " не нажата". Что я делаю не так (?) по прежнему не понятно. Возможно проблема в USB-носителе?

Да, проблема явно в USB-носителе - я, разумеется, проверил проект из #11 на своей панели, прежде чем выкладывать его.

koksha
14.06.2017, 11:59
Проблема действительно оказалась в USB-носителе. Всегда был уверен, что накопители фирмы Kingmax достаточно надёжны. А вот тут взял минифлешку Sandisk (музыку в машине слушаю) и всё пишется и читается как надо. Сравнил их по скорости записи/чтения и на ошибки с помощью ChkFlsh.exe - примерно одинаковые. Всем спасибо за участие.

vniko
06.01.2018, 02:03
Здравствуйте. Думаю автор темы простит меня, не не хотелось плодить темы, а заголовок подходит.

1. Есть замечание по макросу чтения группы регистров в "sp3xx._rukovodstvo_polzovatelya_[1.1].pdf" и примере "Архивация с помощью макросов".
Для функции Reads указан шаблон:
Reads(PortName, SlaveID, DeviceRegType, Adr, Length, &ArrVar);
Последним аргументом является указатель, но знак & перед ArrVar не нужен, так как имя массива есть указатель.
По этому должно быть так:
Reads(PortName, SlaveID, DeviceRegType, Adr, Length, ArrVar);

2. Для начинающих использовать макросы для архивации и др. полезно было бы знать, что при вводе:
Read(
Reads(
Write(
Writes(
открывается окно с удобным автоматизированным вводом адресов PLC и HMI для чтения/записи.

3. Вопрос к специалистам ОВЕН:
Есть ли способы, условия и требования для безопасного извлечения/подключения USB Flash из/в СП3хх?

Евгений Кислов
06.01.2018, 21:22
Здравствуйте. Думаю автор темы простит меня, не не хотелось плодить темы, а заголовок подходит.

1. Есть замечание по макросу чтения группы регистров в "sp3xx._rukovodstvo_polzovatelya_[1.1].pdf" и примере "Архивация с помощью макросов".
Для функции Reads указан шаблон:
Reads(PortName, SlaveID, DeviceRegType, Adr, Length, &ArrVar);
Последним аргументом является указатель, но знак & перед ArrVar не нужен, так как имя массива есть указатель.
По этому должно быть так:
Reads(PortName, SlaveID, DeviceRegType, Adr, Length, ArrVar);

2. Для начинающих использовать макросы для архивации и др. полезно было бы знать, что при вводе:
Read(
Reads(
Write(
Writes(
открывается окно с удобным автоматизированным вводом адресов PLC и HMI для чтения/записи.

3. Вопрос к специалистам ОВЕН:
Есть ли способы, условия и требования для безопасного извлечения/подключения USB Flash из/в СП3хх?

1. Cпасибо, справедливое замечание.
3. Достаточно остановить процесс архивации (например, через бит управления).