PDA

Просмотр полной версии : ПЛК160 ограничение размера архивного файла



Григорий Чумакин
06.07.2023, 03:53
Добрый день.

Имеется несколько контроллеров котрые пишут архив операций в режиме «Shift Mode», длинна файла в настройках указана 100 записей, выяснилось что данная настройка игнорируется и файл размером не ограничиваеться.

В задаче архив пишеться по команде, для проверке писал по таймеру - проблема остается.


К сожалению не нашел поиском похожую проблему, подскажите если кто сталкивался и если решили то каким образом.

PLCInfo
PLC model MODEL PLC 160
Âåðñèÿ ÏÎ ìåòð: 2.0
Binary VERSION 1.2.42
Need Target version >= 3.12
Compiled: 14:40:51 Feb 8 2021
STM32 binary version 114
MAC E4:1E:0A:01:68:39
IP 192.168.1.10
GATE 192.168.1.1
MASK 255.255.255.0
68661

UPD добавил тестовую программу для воспроизводства проблемы - пишем в архив единственную переменную инкрементируемую раз в секунду + файл архива(не могу загрузить - пишет некорректный файл :confused:)
прошу поверить на слово - там более 100 записей - оставил ПЛК включенным посмотрю на каком размере он остановиться

Григорий Чумакин
08.07.2023, 01:57
Добрый день.

Продолжаем эксперимент. Архив растет как внешний долг известного государства ;). Сейчас он размером уже 1МБ. Очевидно что режим ShiftMode не работает. Теперь у меня сомнения в том что в итоге контроллер не остановиться по заполнению флэш.

Уважаемое сообщество не мог бы кто нибудь попробовать запустить архив в ShiftMode и подтвердить или опровергнуть мои выводы.

С уважением.

Григорий Чумакин
10.07.2023, 07:59
Так хотелось убедиться что эта проблема именно в контроллере, а не у меня в программе, прежде чем изучать досконально sislibfile и переделывать код. Ну и как-бы других предупредить чтобы не надеялись на то что контроллер ведет себя согласно руководству в этом конкретном случае :)
Эх, а так красиво все было встроенными средствами архивирования :)

Григорий Чумакин
11.07.2023, 07:55
Добрый день.

Завершил я свой "ниокр" ))):
Файл заполнил всю память и перестал писать. При этом переменная статуса файла как была 0 так и осталась, статус архива сменился на 2. Программа работать продолжает но новый загрузочный проект уже не записать без форматирования памяти (что как бы логично )). Делаю вывод - режим архивирования в файл с настройкой работы файла в режиме Shiftmode неработоспособен. Такие вот пироги с котятами. Техподдержка - багбонус будет? :D

kondor3000
11.07.2023, 10:20
Добрый день.

Завершил я свой "ниокр" ))):
Файл заполнил всю память и перестал писать. При этом переменная статуса файла как была 0 так и осталась, статус архива сменился на 2. Программа работать продолжает но новый загрузочный проект уже не записать без форматирования памяти (что как бы логично )). Делаю вывод - режим архивирования в файл с настройкой работы файла в режиме Shiftmode неработоспособен. Такие вот пироги с котятами. Техподдержка - багбонус будет? :D

Вы тут читали? https://owen.ru/forum/showthread.php?t=27316&page=5

Григорий Чумакин
11.07.2023, 12:56
День добрый.


Вы тут читали? https://owen.ru/forum/showthread.php?t=27316&page=5

Прочитал всю тему. Если вы про вот это:


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

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

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

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

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

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

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

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

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

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