Вы не знаете может иных способов сохранения значений и считывания их по необходимости?
Вы не знаете может иных способов сохранения значений и считывания их по необходимости?
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
То же самое но на ST
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Уберите в проекте любое упоминание о RETAIN переменных, уберите функции считывания/записи от переменной power или как там Вы её называете. Добавте в конфигурацию слейв на какой нибудь незадействованный интерфейс, создайте в нем соответствующие каналы, именуйте их, так как должны выглядеть Ваши сохраняемые переменные и проведите процедуру выключения до полной остановки и последующего включения.
Не забудьте отписаться сохранятся ли после перезапуска значения тех переменных
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Да, опробую и отпишусь сегодня. Скажите, а сброс в Codesys->онлайн->сброс и сброс со скрытой кнопки на панели плк эквивалентны? При нажатии того или этого сброса RETAIN сохраняются? или только через 10 мин после отключения питания происходит запись RETAIN?
Вот собственно как я делаю, может чтото не так в программе?
запись RETAIN происходит не через 10 мин после отключения питания, а после того, как на ПЛК перестанет моргать лампочка "работа"
Т.е Codesys->онлайн->сброс не трогает RETAIN переменные какое у них было значение, такое и останется, значение моточасов в Вашем случае останутся, если конечно Вы с ними ни чего не делаете в программе, а она начнет выполняться с нуля, как после включения питания.'Онлайн' 'Сброс'
Заново инициализирует все переменные, за исключением VAR RETAIN. Если вы определили начальные значения переменных, они будут присвоены (включая VAR PERSISTENT). Прочие переменные приобретут стандартные значения по умолчанию (например, 0 для целых типов). Перед тем как переменные будут инициализированы, вы должны будете подтвердить это. Данный сброс аналогичен выключению и включению питания ПЛК при работающей программе.
Т.е Codesys->онлайн->сброс(холодный) эквивалентен аппартной кнопке сброс контроллера, при этом значения RETAIN (значение моточасов в Вашем случае) пропадут'Онлйн' 'Сброс (холодный)'
Выполняет те же действия, что и команда "Онлайн" 'Сброс', , и дополнительно выполняет инициализацию энергонезависимой области памяти RETAIN.
Вы должны понять, что любой способ сброса не вызывает принудительной записи RETAIN куда-нибудь или загрузки их откуда-нибудь.
В контроллере есть файл retain.bin.
1.При включении питания контроллера данные из файла retain.bin присваиваются retain-переменным.
2.Программа выполняется и в ней изменяются текущие значения retain-переменных. Содержимое файла retain.bin остается пока не изменным. И так продолжается до момента выключения питания.
3. В момент выключения питания, текущие значения retain-переменных сохраняются в файле retain.bin, автоматически без Вашего участия
Пункт 3 должен так работать! Так задумано в кодесис.
Но компания ОВЕН придумала дебильную возможность работать контроллеру после отключения питания на аккумуляторе.
Управлять обесточенными механизмами какого-либо оборудования полный бред, а иногда и до беды не далеко, если например произошло кратковременное пропадание питания.
Например, ПЛК управлял клапаном подачи газа в котел и на несколько секунд пропало питание в котельной.
Клапан без напряжения закроется автоматически.
Контроллер бодро продолжает работать на батарейке и удерживает свой выход управления клапаном во включенном состоянии.
Клапан закрылся без участия контроллера, пламя в котле потухло.
Через несколько секунд в котельной появилось питание клапан открылся и запустил несколько кубометров газа в раскаленную топку котла.
Все. Взрыв. Нет больше котла, а может и котельной тоже больше нет
Но это лирическое отступление.
Контроллер ОВЕН, вместо выполнения действий п.3 сразу после отключения напряжения питания, упорно продолжает работать на аккумуляторе средне потолочное время в зависимости от здоровья аккумулятора, а затем когда заряд в аккумуляторе практически исчерпан начинает записывать в файл retain.bin текущие значения retain-переменных.
Если аккумулятор умер, то и retain-переменные ни где и ни когда не сохранятся.
В этом случае. При включении питания контроллера retain-переменным присваиваются данные из файла retain.bin. А это файл мог быть создан при удачном отключении питания, день или неделю или месяц назад.![]()
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Но я бы не очень радовался по поводу "Теперь всё работает как надо."
1. Несколько выключений подряд с интервалом 20 мин приводят к полной разрядке аккумулятора и Вы вернетесь в начало проблемы т.к на полный заряд разряженного аккумулятора надо 3 часа.
2. Аккумулятор имеет ограниченное количество циклов заряд-разряд и имеет свойство умирать через несколько лет эксплуатации.
Так, что моточасы Вы сможете считать несколько лет подряд, а затем замена аккумулятора и подсчет моточасов с 0![]()
Ищите альтернативу, например сохранять время работы оборудования в файл. Но не часто, а то портрете во флешке контроллера дыркуЕе ресурс циклов записи тоже ограничен.
Нет ничего лучше старого электромеханического счетчика хранит информацию вечно (шутка)![]()
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg