Внесу свои пять копеек.
Я считаю что если есть хоть какаято возможность НЕ архивироватьв плк, то её надо использовать, но бывают, понятное дело, и другие ситуации...
Про бинарные файлы vs CSV.
Конечно бинарные намного дешевле обходятся. Со структурой тоже возился, но там есть большая проблема всегда кратно 4 байтам и всякие пляски приходится делать.
От структур ушел. По опыту понял что нужно использовать "свои" протоколы и использовать хеш суммы не обязательно. Я обхожусь 3 байтами, 1й - старт (254), 2й - следующее колво байт (length-1), последний (255).
Этого вполне достаточно, плюс в протоколе нет ограничения по длине, она может быть динамической благодаря 2му байту.
Насчет считывания.
Поигрался и пришел положительному результату. Вобщем как сказали уже если грузится на ПК, то там праграмма парсер потом расшифрует эти данные, так вот я выкачиваю файлы по модбас с помощью 20й функции. Это очень удобно, и глубоких навыков не понадобилось реализовать хоть на паскале, хоть в java. К сожелению готового решения нет, показать пока не могу, все по кускам пробовал, реализовывать готовое решение (для себя) буду позже, времени нет.
Считаю что архивировать надо с помощью библиотек, а выкачивать через модбас (также можно установить с какого байта будете считывать файл, тоесть не обязательно качать весь).
Есть и минусы такого подхода.
1) Имя файла нельзя изменить без перепрошивки плк.
2) Довольно спецефическая бибка, и иногда невозможно создать файл с именем, которое использовалось раньше, файл удалили не освободив дискриптор и тогда мешает пункт 1. Там много магии...
Насчет сжатия.
Естественно если 8 булево переменных пакуем, то их закидываем в 1 байт. Например 16 дискретных входов плк = 2 байтам. Далее все просто, если переменная никогда не будет > 255, то это байт, не более 65535, то word ну вы поняли. Еще лично я, очень не люблю real, часто их кидаю в word * 10(*100), конечно при этом я знаю границы показаний датчика, ктото скажет не красиво, я отвечу поф.наКрАсАту, далее все парсится программой и в конечном итоге пользователю выводится дробное, как должно быть.




Ответить с цитированием