Подскажите, может кто сталкивался с такой проблемой: ПЛК150 не сохраняет в памяти переменные типа RETAIN ? пробовал объявлять их в глобальных, пробовал менять прошивку, не помогает.
Вид для печати
Подскажите, может кто сталкивался с такой проблемой: ПЛК150 не сохраняет в памяти переменные типа RETAIN ? пробовал объявлять их в глобальных, пробовал менять прошивку, не помогает.
http://www.owen.ru/forum/showpost.ph...34&postcount=5 здесь читали?
Прочитал. Впринципе все так и делаю. Просто создаю переменную типа RETAIN , меняю её значение, записываю, выключаю питание, жду 7 минут, включаю питание, переменная равна 0.
главное, не забудьте дать контроллеру проработать пару часов перед выключением чтобы зарядить аккумулятор )))) иначе электричества для фокуса не будет
и установите время до остановки по питанию поменьше... секунд 10
Как давно покупался контроллер?
Попробуйте зарядить аккумулятор (подержать контроллер включенным пару часов).
Если не поможет - сможете после зарядки замерять напряжение, выдаваемое аккумулятором (ПОСЛЕ ЗАРЯДКИ)
зарядить аккумулятор попробую, сейчас напряжение 4,3 В. Вопрос: где устанавливается время для остановки попитанию?
Контроллер покупался менее года назад.
4,3 более чем достаточный заряд. Аккумулятор в норме.
Надо смотреть программу.
Был у меня давно плк 154 с такой же проблемой, хоть убей а retein не сохраняются, при нормальном аккумуляторе.
Проблема так и не решилась!
С тех пор мучает вопрос, можно ли както программно анализировать состояние аккумулятора, чтоб:
1.Заранее выдать предупреждающее сообщение.
2.Сохранить на флэш память плк важные данные.
Энергонезависимые переменные сохраняются в файл. Если есть желание, вы можете сами реализовать работу с файлами. Как это сделать:
1) Добавляем модуль статистика, с помощью него контролируем питание ПЛК
2) если питание выкл. , то делаем запись в файл
3) Если питание вкл. , то восстанавливаем данные из файла
4) Запускаем основную программу
Что касается не сохранения ретейнов, присылайте программу. Может затык программный.
Заряд на аккумуляторе за ночь не изменился (4.19В). В программе ничего нет только ";" :-)
Объявляю одну единственную переменнаю типа RETAIN, меняю её значение Выключаю контроллер,включаю и она сбрасывается в 0. Видимо вариант один : менять по гарантии.
А как Вы объявили переменную? прям копипаст сделайте из программы.
вот так я объявляю переменную
PROGRAM PLC_PRG
VAR RETAIN
k:INT
END_VAR
а вот весь мой проект
;
больше ничего в программе нет, после запуска присваиваю новое значение отличное от нуля и нажимаю "WRITE Values" , дальше выключаю, включаю контроллер и переменная сбрасывается в 0
Ещё одним подтерждением не сохранения переменных RETAIN является то , что при работе с панелью оператора СП270Т переменным я присваивал значения байтов получаемых с панели и эти переменные тоже сбрасывались хотя тот же самый принцип без проблем работал на других конроллерах.
Ох!!!
Как я Вас понимаю точно такие синдромы наблюдал и я!!!:(
Все вроде правильно, не считая того, что после объявления переменной ; не хватает, не копипаст... :)
Попробуйте мой проект. Ничего не изменилось, но все же. (надо только на Ваш тип контроллера переделать).
Работа с панелью - отдельная тема. Где то обсуждалось, что надо переменные для работы с панелью сохранять в Retain при выключении питания, а при включении - из Retain считывать. Делаются обе операции по триггеру от параметра power в подмодуле statistic
И как Вы решили вопрос?
Пример с панелью можно посмотреть тут.
http://www.owen.ru/forum/showpost.ph...2&postcount=41
Максим_В, вышлите мне на почту ваш пример. Проверим на нашем ПЛК.
Можете связаться со мной по телефону (495) 64-111-56 доб 1121
Никак не решил!
Мне тогда нужен был ПЛК 100, а его небыло, ПЛК 154 я брал для экспериментов, затем вернул.:(
Когда получил ПЛК 100 проверил и данной проблемы не обнаружил!:o
Вообще складывается впечатление что ПЛК 100 самый стабильный контроллер!:cool:
Два ПЛ150 2009 года. Прошивка 2.10.5, проект одинаковый.
"Первый" запоминает RETAIN "второй" не запоминает.
Меняю аккумуляторы местами--- "1"-НЕ помнит, "2"-Помнит.
Смотрел тестером питание на аккумуляторах примерно одинаковое, при отключении питания аккум проседает на секунду до 3,1-3,2v потом становится 3,6-3,7v.
Что делать. У меня ПЛК от 2008 по 2011 год.
Из за этого начинаются проблемы.
Что снимать штук 30 ПЛК и отправлять в серв центр?????????????
3,7 - рабочее напряжение.
Надо смотреть дополнительные данные.
Подскажите как можно обойти такую проблему ( без замены аккумуляторов больше 50шт плк150).
Прошу ответить.
Для того, чтоб сказать что делать - слишком мало данных, как я уже и писал.
Присылайте проект и все данные по контроллерами на plc@owen.ru
Какие еще данные, по 68 штукам ПЛК150?
У меня ПЛК от 2008 по 2011 год.
Два ПЛ150 2009 года. Прошивка 2.10.5, проект одинаковый.
"Первый" запоминает RETAIN "второй" не запоминает.
Меняю аккумуляторы местами--- "1"-НЕ помнит, "2"-Помнит.
Глючат больше 30 ПЛК.
Выходов из ситуации несколько:
Либо действительно доставлять ПЛК в СЦ, либо заказать в СЦ нужное количество аккумуляторов.
Были слова про то, что часы не слетают на контроллере, который не запоминает Retain... Что с часами?
У меня была проблема с ретайнами с ПЛК 63. Сохранялись только, если объявлял их в PLC_PRG, в других блоках - дохлый номер. Поэтому в своих проектах я пользуюсь теперь другим методом (про ретайны забудь). Используя промежуточный буфер, то записываю из него переменные в файловую систему, то идёт их полное считывание и запись в буфер при включении питания. Попробуй приспособить к своему проекту. Будут вопросы пиши на личку.
Файл не могу прикрепить - интернет глючит, еле форум открывается...
Проблема не решилась и по сей день как я смотрю. У меня аналогичная проблема, не сохраняются не retain, не retain persistent (плк 150). Необходимо сохранять моточасы на оборудовании! Что же делать?
Всё выше перечитанное делал. Объявленных в ретаин пер-нт около 15, их считывание происходит по переднему фронту Power, так вот в неккоторые считываются значения вовсе не то что было записанно. Тоесть я записал например 3 в ретаин пер-нт, перезагружаю (или выключаю и жду 20 мин) включаю, по power считывается уже не 3, а 20!!!
Вместо 3 можно записать что угодно, а возвращает 20 (не во всех). Если я добавлю хотяб еще одну ретаин пер-нт, то всё меняется и возращать может уже кто угодно (из тех кто объявлен в ретаин пер-нт) и что угодно, в основном 0!
Не надо считывать и записывать retain принудительно с использованием Power. Просто используйте сами retain переменные в программе не задумываясь о состоянии Power (тем более куда Вы записываете и от куда считываете не понятно).
если аккумулятор исправный retain сохраняются и восстанавливаются автоматически в (из) специальный файл
А Вы своими действиями по флагу Power может мешаете этому процессу.
Сделал и так, после включения\перезагрузки всёравно 0.:(
Вы не знаете может иных способов сохранения значений и считывания их по необходимости?
То же самое но на 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
Ищите альтернативу, например сохранять время работы оборудования в файл. Но не часто, а то портрете во флешке контроллера дырку:) Ее ресурс циклов записи тоже ограничен.
Нет ничего лучше старого электромеханического счетчика хранит информацию вечно (шутка):)