Доброго времени суток. Хочу уточнить как часто Retain переменные пишутся в файл retain.bin
Доброго времени суток. Хочу уточнить как часто Retain переменные пишутся в файл retain.bin
Один раз при каждом пропадании питания.
Не совсем так.
Retain перестает сохраняться, когда выходит из строя аккумулятор, который и позволяет записать Retain при пропадании. Аккумулятор выходит из строя при определенных условиях эксплуатации - это пром. никелевыый аккумулятор. Аккумулятор может быть заменен, либо самостоятельно, либо в СЦ ОВЕН.
Если сохранение Retain критично, и аккумулятор может выйти из строя - с помощью SysLibFile можно формировать на Flash ПЛК свой файл и сохранять в нем данные.
Беда толко, что если аккумулятор мертв и питание пропало - файл не запишется. По этому надо проводить перезапись значений в файле достаточно часто...
да если б он ещё там был на разъёмчике каком нибудь, а то с паяльником по объектам лазить не удобно!
Ну, вряд ди ресурс такой малый. Речь же не идет о сохранении поминутно?
А есть паспортное значение числа перезаписей?
Так значит, оформив некоторое количество переменных в виде файла, можно этот файл записывать во флэш на борту ПЛК? Это выглядит просто как вызов функции? И происходит в фоновом режиме - или процессор тормозит, пока не запишет?
Вот. Жизненно.
Позволю сформулировать свои вопросы развернуто.
Возникла потребность в сохранении значений некоторых переменных в энергонезависимой памяти ПЛК100. Просмотрев форум, поэкспериментировав на железке, хочу высказать несколько мыслей с надеждой на оценку их верности — или конструктивную критику. Для меня важно, не ошибаюсь ли я.
Итак, я думаю, что в ПЛК100 есть ОЗУ на батарейном питании (RETAIN-переменные) и ЭППЗУ, именуемое флешкой.
Объем RETAIN-памяти — 4...16 Кбайт. О ресурсе и надежности здесь на форуме говорится много, но похоже, что есть 2 момента, которые сделали для меня эту память не интересной.
1) При аппаратном сбросе ПЛК кнопочкой данные теряются.
2) При "зависании" программы — тот же эффект.
Все это — следствие того, что сохранение в RETAIN-памяти происходит явным образом в момент, когда процессор почуял недоброе. Либо это пропадание питания, либо еще что — но при нажатии грубым животным весом более 1 кг (как сказал В.Филоненко) кнопки СБРОС или при улете программы по какому-нибудь недолеченному багу процессор ничего не учует.
ВОПРОС НОМЕР 1: Я правильно понимаю эту слабость RETAIN-памяти?
Как я понял, в ПЛК100 из-за питания всего контроллера от аккумулятора ресурс последнего — год или два, как я понял из отзывов. Сам не проверял. А мне не нужно, чтобы ПЛК боролся за жизнь 10 минут после выключения питания. Пусть лучше только память кушает электроэнергию.
ВОПРОС НОМЕР 2: Есть ли возможность "отучить" ПЛК пожирать аккумулятор, а просто складывать ласты и тихо отходить — сразу по выключению питания? А еще лучше — сделать при этом сохранение указанных переменных в RETAIN-памяти, как ему и предписано.
Флешка. Тут много спорят о ее ресурсе, цифры называются в диапазоне от мизерных 10 тысяч до маловероятных 20 миллионов циклов. Но другого в ПЛК100 нет, поэтому присмотрелся, пописАл в нее, почитал из нее.
Верно ли, что туда-сюда можно только в виде файлов? Уточните, кто знает.
Вроде как без проблем пишутся и читаются любые переменные, структуры, массивы (пример прилагается).
ИНОФРМАЦИЯ НОМЕР 1: см.пример.
Может кому будет полезно в том примере вот что. Меня порадовало то, что указатель на область, запихиваемую в файл (область эту в доках называют байтовым буфером, поэтому я определяю указатели именно как указатели на байтовые переменные), вполне можно направить на что угодно. Таким образом, поставив указатель на переменную иного, чем байт типа, указав СКОКА байт хотим в файл запихнуть — пишем без проблем. И достаем так же.
А теперь о своих страхах. Мне кажется, что использование энергонезависимой памяти в ПЛК, популярное в задачах автоматики, несколько отличается от того, что нужно в моей задаче. У меня ПЛК есть просто контроллер (практически автономного) измерительного устройства. Он:
а) чаще всего работает совершенно автономно и никакой СКАДы над ним не нависает. Не стоит перед ним задача журналирования событий, столь распространенная в системах автоматики, как некому и сбрасывать журнал
б) энергонезависимая память нужна моему ПЛК для 2-х вещей:
- накопление некоторой переменной, просто как счетчик электроэнергии: растет-растет, дошел до 9 девяток и сбросился в ноль, начинает расти дальше. Его приращение происходит реально раз на несколько секунд-несколько десятков секунд, поэтому за 8-10 лет работы в 3 смены теоретически может быть 60 млн приращений. Реально так не бывает, но речь идет о миллионах, а не о десятках тысяч раз;
- запоминание некоторых конфигурационных параметров. Это параметры, настраиваемые в процессе работы прибора, с соблюдением прав доступа и прочей лабуды, ВОПЧЕМ, важные параметры. Случай повреждения такого параметра может приравниваться к серьезной поломке прибора, причем стоимость восстановления может быть больше цены прибора. Без шуток.
И вот я думаю.
Можно доверить RETAIN-памяти хранение моих данных? Стремно, если через год-два начнет пропадать.
Можно ли обойтись одной только флешкой ПЛК100? Нельзя. Нет ресурса на миллионы записей.
Поэтому хочу использовать компромиссное решение: накапливаю переменную в RETAIN-памяти, а раз в ??? минут — сбрасываю во флешку. Вот тут-то и пригодилась бы непротиворечивая информация о ресурсе флешки — чтобы верно оценить, какой делать интервал. В году полмиллиона минут...
ВОПРОС НОМЕР 3: Так сколько же раз допускает флешка запись?
И хочу попросить, бесперебойники и комп верхнего уровня — не предлагайте. И кучерявые ПЛК с карточкой. Мне во всем хватает старичка ПЛК100.
с большой вероятностью правда
возможность есть, на форуме даже решения есть. гарантии только нет, что через год-два все будет работать так же идеально как в первую неделю
интервал скорее надо рассчитывать из допустимой ошибки подсчета. если за полчаса не сильно изменяется, можно раз в полчаса, если же меняется кардинально раз в минуту...