Вы не знаете может иных способов сохранения значений и считывания их по необходимости?
Вид для печати
Вы не знаете может иных способов сохранения значений и считывания их по необходимости?
То же самое но на ST
Уберите в проекте любое упоминание о RETAIN переменных, уберите функции считывания/записи от переменной power или как там Вы её называете. Добавте в конфигурацию слейв на какой нибудь незадействованный интерфейс, создайте в нем соответствующие каналы, именуйте их, так как должны выглядеть Ваши сохраняемые переменные и проведите процедуру выключения до полной остановки и последующего включения.
Не забудьте отписаться сохранятся ли после перезапуска значения тех переменных
Да, опробую и отпишусь сегодня. Скажите, а сброс в 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 должен так работать! Так задумано в кодесис.
Но компания ОВЕН придумала дебильную возможность работать контроллеру после отключения питания на аккумуляторе.
Управлять обесточенными механизмами какого-либо оборудования полный бред, а иногда и до беды не далеко, если например произошло кратковременное пропадание питания.
Например, ПЛК управлял клапаном подачи газа в котел и на несколько секунд пропало питание в котельной.
Клапан без напряжения закроется автоматически.
Контроллер бодро продолжает работать на батарейке и удерживает свой выход управления клапаном во включенном состоянии.
Клапан закрылся без участия контроллера, пламя в котле потухло.
Через несколько секунд в котельной появилось питание клапан открылся и запустил несколько кубометров газа в раскаленную топку котла.
Все. Взрыв. Нет больше котла, а может и котельной тоже больше нет:D
Но это лирическое отступление.
Контроллер ОВЕН, вместо выполнения действий п.3 сразу после отключения напряжения питания, упорно продолжает работать на аккумуляторе средне потолочное время в зависимости от здоровья аккумулятора, а затем когда заряд в аккумуляторе практически исчерпан начинает записывать в файл retain.bin текущие значения retain-переменных.
Если аккумулятор умер, то и retain-переменные ни где и ни когда не сохранятся.
В этом случае. При включении питания контроллера retain-переменным присваиваются данные из файла retain.bin. А это файл мог быть создан при удачном отключении питания, день или неделю или месяц назад.:D
Но я бы не очень радовался по поводу "Теперь всё работает как надо."
1. Несколько выключений подряд с интервалом 20 мин приводят к полной разрядке аккумулятора и Вы вернетесь в начало проблемы т.к на полный заряд разряженного аккумулятора надо 3 часа.
2. Аккумулятор имеет ограниченное количество циклов заряд-разряд и имеет свойство умирать через несколько лет эксплуатации.
Так, что моточасы Вы сможете считать несколько лет подряд, а затем замена аккумулятора и подсчет моточасов с 0 :D
Ищите альтернативу, например сохранять время работы оборудования в файл. Но не часто, а то портрете во флешке контроллера дырку:) Ее ресурс циклов записи тоже ограничен.
Нет ничего лучше старого электромеханического счетчика хранит информацию вечно (шутка):)