Вход

Просмотр полной версии : ПЛК100 Сброс ретэйнов в "0" (потеря файлов "ретайн")



Sergey666
03.11.2014, 14:16
Ну снова , привет Овен.
Вот уже сколько лет и зим и , уже ,кажется, везде соломки подстелил , но...
На очередном объекте уже второй раз после отключения питания все ретэйны в "0".
После записи файлов и перезагрузки все "ОК" и так может быть месяц до очередного "привета" .
Т.е штатный механизм сохранения ретэйнов работает , но!!! каким-то образом иногда дает сбой.
И!!! при этом теряются значения даже "старых" ретэйнов .

Установка работает уже около полугода и сегодня пришел второй такой "привет" .

Николаев Андрей
03.11.2014, 19:02
К сожалению, скорее всего, это вся та же проблема с аккумулятором.
В течение месяца мы ее окончательно решим.

Sergey666
03.11.2014, 21:23
Как показывает практика если аккум. дохлый , то сохранение не происходит никогда .
А в моем случае изменения сохраняются , такое впечатление что иногда процесс записи не завершается .

Sergey666
03.11.2014, 23:09
К сожалению, скорее всего, это вся та же проблема с аккумулятором.
В течение месяца мы ее окончательно решим.

Андрей! Проблема с акумулятором решается установкой более мощного акумулятора и не за 7 лет (2008 г начало ПЛК 100) , а за ... 30 дней (поиск , согласование и пр).

Каким путем вы ее окончательно будете решать?

amn
03.11.2014, 23:24
Т.е штатный механизм сохранения ретэйнов работает , но!!! каким-то образом иногда дает сбой.

Могу предположить, что аккумулятор может быть полудохлым. В момент выключения переменные начали сохраняться и... не успели, а старый файл уже удален.

Такое может быть, когда несколько раз подряд отключается электричество и полудохлый аккумулятор не успевает зарядиться.

Sergey666
03.11.2014, 23:52
Могу предположить, что аккумулятор может быть полудохлым. В момент выключения переменные начали сохраняться и... не успели, а старый файл уже удален.

Такое может быть, когда несколько раз подряд отключается электричество и полудохлый аккумулятор не успевает зарядиться.

Может быть. Установка работает от электростанции , "заводится" по необходимости давать бетон .
Минимальный рабочий цикл минут 10 .
Придется ПЛК "турбировать" сильнейщим аккумулятором , заодно и кондеры на нижней плате "прокачать" до 63 в .:confused:

capzap
03.11.2014, 23:56
там где в ответственных местах пропадает свет, обычно бесперебойники ставят, это дает шанс закрыть все корректно

amn
04.11.2014, 00:35
Я так понял там не свет пропадает, а установку включают ненадолго. А при включении аккумулятор много энергии теряет и не успевает зарядиться. А может проще отказаться от ретайн переменных и сохранять нужные переменные в файл перед отключением оборудования?

Николаев Андрей
04.11.2014, 19:48
Не всегда стоит хвастаться большим размером.
Стали уменьшать ток зарядки (большой разрушал аккумулятор).
Был найден паразитный канал разрядки аккумулятора даже у выключенного ПЛК.

Sergey666
15.11.2014, 00:35
Да , ток зарядки очень большой .
На днях разбирал ПЛК 100 (менял кондеры 470х16в) на нижней плате (Вот еще темка для размышления и оценки , как высохнут ПЛК 40 минут грузится).
На данном ПЛК более года назад был установлен аккумулятор от мобильника , аккумулятор после 14 мес работы внутри ПЛК слегка вздут , но .... работает без проблемм.

А по поводу размера и прочего скажу так -
Когда линия , которая должна что-либо производить , становится или работает не корректно из-за ПЛК или запчасти внутри ПЛК , владелец линии (или производства) требует (вполне справедливо) запустить производство ЛЮБЫМИ СРЕДСТВАМИ и !!! Обеспечить ЛЮБОЙ ценой стабильную работу оборудования .

amn
15.11.2014, 01:04
На данном ПЛК более года назад был установлен аккумулятор от мобильника , аккумулятор после 14 мес работы внутри ПЛК слегка вздут , но .... работает без проблемм.

Сергей, скажите, аккумулятор от мобильника Вы устанавливали прямо внутри корпуса ПЛК? Вы прямо к нему провода припаивали или как-то иначе делали?

Я вот думаю для аккумулятора вывести провода наружу, чтобы в случае необходимости легко его заменить, не разбирая ПЛК.

Safron
15.11.2014, 13:47
Попробуте эти Ретайн объявить в PLC_PRG (если они не там объявлены). У меня как-то была проблема. С новым контроллером ПЛК63. Пока не там не объявил не сохранялись вообще. Ни как локальные в других ФБ , ни в глобальных переменных

Sergey666
16.11.2014, 11:57
Сергей, скажите, аккумулятор от мобильника Вы устанавливали прямо внутри корпуса ПЛК? Вы прямо к нему провода припаивали или как-то иначе делали?

Я вот думаю для аккумулятора вывести провода наружу, чтобы в случае необходимости легко его заменить, не разбирая ПЛК.
Внутри ПЛК аккумулятор помещается между верхней и средней платой .
Наружу выводить не стал , т.к не люблю когда "яйца" :p висят наружу :p;):D.
Думаю что схема доказала на практике свою работоспособность , хотя по сути это "костыли".

amn
16.11.2014, 16:01
Я так понял Вы аккумулятор просто припаяли. Спасибо.

Lode Runner
21.11.2014, 06:35
Могу предположить, что аккумулятор может быть полудохлым. В момент выключения переменные начали сохраняться и... не успели, а старый файл уже удален.

Так ведь такое решается предельно просто: при отключении не нужно ничего удалять, надо писать в новый файл рядом, а при включении уже смотреть, что успело записаться и заменять в старом файле значения новыми уцелевшими данными.

Lode Runner
21.11.2014, 07:04
И ещё, очень не хватает индикатора заряда. Системной переменной в конфигурации, которая бы содержала значение остатка заряда. Можно было бы заранее отсылать СМС, что пора менять батарею...

amn
21.11.2014, 17:14
Так ведь такое решается предельно просто: при отключении не нужно ничего удалять, надо писать в новый файл рядом, а при включении уже смотреть, что успело записаться и заменять в старом файле значения новыми уцелевшими данными.
Речь шла о переменных RETAIN.

Lode Runner
25.11.2014, 06:59
Да, я о них же, просто забыл уточнить, что это было пожелание, даже скорее, просьба к разработчикам прошивок для ОВЕН ПЛК.

Scream
25.11.2014, 12:32
Ну да)) Потом выключится именно перед тем когда надо было удалить старый файл. После включения не знает какой грузить, новый? или старый? зависнет, появятся новые предложения, костыли и так бесконечно....

Lode Runner
25.11.2014, 13:05
Не надо удалять при отключении. Надо проверить целостность нового при включении и если цел - взять всё оттуда и удалить старый, а если новый повреждён, то использовать старый и сигналить в сервисную переменную, что во время последнего отключения питания настройки не были сохранены из-за того, что батарейка не вытянула. Хотя бы так.

Lode Runner
25.11.2014, 13:08
Целостность можно проверять специальным сервисным битом, который сбрасывать в false перед началом записи и поднимать в true в самую последнюю очередь, когда все данные в новый файл уже записаны. Он же и будет сигналить о неуспешной записи во время старта контроллера.

Иван Воронин
03.08.2015, 21:24
К сожалению, скорее всего, это вся та же проблема с аккумулятором.
В течение месяца мы ее окончательно решим.

Не всегда стоит хвастаться большим размером.
Стали уменьшать ток зарядки (большой разрушал аккумулятор).
Был найден паразитный канал разрядки аккумулятора даже у выключенного ПЛК.

Андрей, озвучьте, пожалуйста, решение проблемы с аккумулятором.

Николаев Андрей
04.08.2015, 10:25
По моим данным вопрос решен.
Была изменена топология платы и некоторые элементы.
Подробностей не помню - надо уточнять у руководителя проекта.

Иван Воронин
04.08.2015, 11:26
Буду просто счастлив, если проблема наконец решится.


По моим данным вопрос решен.
Была изменена топология платы и некоторые элементы.
Подробностей не помню - надо уточнять у руководителя проекта.

Вы, пожалуйста, уточните.
Мне сегодня поддержка ответила.
Однако, полагаю, данный вопрос будет интересен не только мне.

Николаев Андрей
04.08.2015, 13:02
Обязательно уточню

LUCHNICK
04.08.2015, 15:41
Андрей, озвучьте, пожалуйста, решение проблемы с аккумулятором.

Самое надежное решение проблемы с ретайн-переменными- их вообще не использовать в проекте. Допустим производитель добьется продление службы аккумулятора, но ведь не до бесконечности. В первом проекте, где использовали Ретейн-переменные было установлено 2 новых ПЛК110 (около 2-х лет назад), аккумулятор в обоих прослужили менее года и умерли с интервалом где-то в месяц с общим сроком жизни около 9-10 месяцев. После этого пришлось немного подумать и полностью отказаться от применения ретейн-переменных. С тех пор используем архивирование переменных и сохранение уставок в архиве при каждом их изменении. Для наших применений вполне нормальное решение. После ПНР практически уже уставки не меняются. Да в процессе ПНР количество изменений не более нескольких десятков раз, что не критично для флэш-памяти ПЛК.

Иван Воронин
04.08.2015, 16:09
Самое надежное решение проблемы с ретайн-переменными- их вообще не использовать в проекте. Допустим производитель добьется продление службы аккумулятора, но ведь не до бесконечности. В первом проекте, где использовали Ретейн-переменные было установлено 2 новых ПЛК110 (около 2-х лет назад), аккумулятор в обоих прослужили менее года и умерли с интервалом где-то в месяц с общим сроком жизни около 9-10 месяцев. После этого пришлось немного подумать и полностью отказаться от применения ретейн-переменных. С тех пор используем архивирование переменных и сохранение уставок в архиве при каждом их изменении. Для наших применений вполне нормальное решение. После ПНР практически уже уставки не меняются. Да в процессе ПНР количество изменений не более нескольких десятков раз, что не критично для флэш-памяти ПЛК.

В целом согласен.
В нашем случае срок жизни аккумуляторов тоже меньше года.
В случае с уставками все не так сложно.
Однако в случае с использованием Retain переменных для хранения текущих состояний в технологическом процессе все сложнее.
Можно сделать сохранение/восстановление и в этом случае, но это уже сложнее, да и писать файл часто при изменении не хочется по причине низкого ресурса FLASH.

Мы попробуем исправление проблемы от Овена, если результат нас не удовлетворит, то будем работать с файлами.

Валенок
04.08.2015, 18:40
Если решат с штатным ретайном - отлично. Но

... решение проблемы с ретайн-переменными- их вообще не использовать в проекте. Допустим производитель добьется продление службы аккумулятора, но ведь не до бесконечности...После ПНР практически уже уставки не меняются. ....изменений не более нескольких десятков раз, что не критично для флэш-памяти ПЛК...
Да и даже если технологические - 300млн записей по 0.5к маленький ресурс ?
Кто заставляет писать каждое изменение. Тупая задержка проверки изменений в 1сек - и имеем 10 (десять)лет. См. ресурс ПЛК

Эдуард_Н
04.08.2015, 18:51
Поделитесь опытом как переменные в место ретайна писать во флэш-память ПЛК, желателен пример написанный в CFC.

LUCHNICK
04.08.2015, 19:26
В целом согласен.
В нашем случае срок жизни аккумуляторов тоже меньше года.
В случае с уставками все не так сложно.
Однако в случае с использованием Retain переменных для хранения текущих состояний в технологическом процессе все сложнее.
Можно сделать сохранение/восстановление и в этом случае, но это уже сложнее, да и писать файл часто при изменении не хочется по причине низкого ресурса FLASH.

Мы попробуем исправление проблемы от Овена, если результат нас не удовлетворит, то будем работать с файлами.

В наших применениях нет необходимости сохранения текущих технологических параметров, поэтому нам пока проще. У нас только задаваемые уставки для работы. Поэтому, как только на панели ввели новое значение, оно сразу сохраняется в архиве. В Вашем случае, я бы использовал ИБП. Если входное напряжение пропало (сигнал заводится в ПЛК), то принимаем меры к прекращению работы и записываем текущие парааметры в архив. После появления питания, считываем из архива параметры и возобновляем работу (естесвенно, с учетом технологических особенностей).

LUCHNICK
04.08.2015, 19:33
Если решат с штатным ретайном - отлично. Но


Я так понимаю, что со старой версией ПЛК уже никто ничего не решит, а в новой версии какой-то новый метод сохранения Ретейн-переменных, независимый от аккумулятора (там уже батарейки)

petera
04.08.2015, 21:24
Я так понимаю, что со старой версией ПЛК уже никто ничего не решит, а в новой версии какой-то новый метод сохранения Ретейн-переменных, независимый от аккумулятора (там уже батарейки)
Для ретейн в этой версии используется память MRAM (магниторезистивное ОЗУ, без дополнительного питания), 16Кб. Поэтому батарейка для этой памяти ненужна.

Sergey666
05.08.2015, 00:02
Для ретейн в этой версии используется память MRAM (магниторезистивное ОЗУ, без дополнительного питания), 16Кб. Поэтому батарейка для этой памяти ненужна.

Это с каких пор в ПЛК100 MRAM появилась ?
Чего муть разводить ? Николаев сказал н-ным количеством постов выше , что да разрабы му...ки , накосяпурили в двух транзисторах и 4х резисторах и ток заряда разрушает аккум (причем катастрофически убивает его) и это еще не все - по той же причине - косяк схемотехников наконец-то нашли "типа паразитную цепь разряда" .
Теперь утверждается что эти косяки устранили - ха-ха-ха .

Для себя решение определил установкой аккума от мобильника , решение работает нормально , только дешевые аккумы от неизвестных телефонов током заряда раздувает и убивает за 1год ,Нокии живут уже года 2 . Но заводской аккум живет только 3 месяца .

Решение записи-чтения в файл из той оперы что какой-то дополнительный - обслуживающий процесс сложнее основного , не всегда удобно .

Валенок
05.08.2015, 00:29
Соббсно в чем сложность обслуживающего процесса ?

Поделитесь опытом как переменные в место ретайна писать во флэш-память ПЛК, желателен пример написанный в CFC.
Вот пример

PS
Т.к. не мазохист - на ST. Но в квадратики - имплантируется

Эдуард_Н
05.08.2015, 03:32
Соббсно в чем сложность обслуживающего процесса ?

Вот пример

PS
Т.к. не мазохист - на ST. Но в квадратики - имплантируется

Ну тогда хоть какое ни будь описание(инструкцию) приложите, пожалуйста.
Производители тоже могли бы какой ни будь учебный пдф по этому поводу выложить, проблема такая не только у ПЛК100, а у 154 и 110, 160.

Иван Воронин
05.08.2015, 09:11
Если решат с штатным ретайном - отлично. Но

Да и даже если технологические - 300млн записей по 0.5к маленький ресурс ?
Кто заставляет писать каждое изменение. Тупая задержка проверки изменений в 1сек - и имеем 10 (десять)лет. См. ресурс ПЛК
В официальной документации говорится о ресурсе 50 000 записей.
Конечно, можно мудрить, но будет еще сложнее (более затратно/менее надежно).
Потенциально проблемные решения (сохранение после отключения) лучше не применять, но если аккумулятор/батарея смогут обеспечивать надежное сохранение Retain в течение 10 лет (ну или хотя бы 5), то оно нас устроит.
Если года 2, то можно смириться при условии простоты замены аккумулятора.


Я так понимаю, что со старой версией ПЛК уже никто ничего не решит, а в новой версии какой-то новый метод сохранения Ретейн-переменных, независимый от аккумулятора (там уже батарейки)
Обещают заменить верхнюю плату.


В наших применениях нет необходимости сохранения текущих технологических параметров, поэтому нам пока проще. У нас только задаваемые уставки для работы. Поэтому, как только на панели ввели новое значение, оно сразу сохраняется в архиве. В Вашем случае, я бы использовал ИБП. Если входное напряжение пропало (сигнал заводится в ПЛК), то принимаем меры к прекращению работы и записываем текущие парааметры в архив. После появления питания, считываем из архива параметры и возобновляем работу (естесвенно, с учетом технологических особенностей).
ИБП не хотим, т.к.: место - в щитках его нет, рядом болтаться не вариант; стоимость; дополнительные заморочки с батареями. На этот вариант заказчик не пойдет.


Для ретейн в этой версии используется память MRAM (магниторезистивное ОЗУ, без дополнительного питания), 16Кб. Поэтому батарейка для этой памяти ненужна.
MRAM - круто. Есть ссылки на официальные источники?


Решение записи-чтения в файл из той оперы что какой-то дополнительный - обслуживающий процесс сложнее основного , не всегда удобно .
Согласен. Если изменения производителя не помогут, будем усложнять.

Юрий Горелый
05.08.2015, 10:26
Именно так.

В новой версии верхней платы уменьшен и ток заряда, и потребление в спящем режиме.

Так же изменен алгоритм вычисления оставшегося времени работы от аккумулятора - приведен к описанному в РЭ: время может корректироваться в сторону уменьшения, с целью сохранения RETAIN переменных в течении указанного срока.


В целом новая плата дает больший срок службы аккумулятора и время сохранения retain переменных.

Приборы с новой верхней платой выпускаются с апреля 2015 года.

Эдуард_Н
05.08.2015, 10:54
Приборы с новой верхней платой выпускаются с апреля 2015 года.

А с остальными ПЛК как обстоят дела? Когда у них устранят подобную проблему?

Вольд
05.08.2015, 11:23
Не всегда стоит хвастаться большим размером.
Стали уменьшать ток зарядки (большой разрушал аккумулятор).
Был найден паразитный канал разрядки аккумулятора даже у выключенного ПЛК.

Литий-полимерный аккумулятор не переносит перезаряда и глубокого разряда. Существуют специальные микросхемы, контролирующие эти процессы. Фирма "ОВЕН" использует такие микросхемы или нет ?

Валенок
05.08.2015, 14:53
В официальной документации говорится о ресурсе 50 000 записей....
Ну да - 300 млн записей по 512 байт.

Иван Воронин
05.08.2015, 15:11
Ну да - 300 млн записей по 512 байт.
С понял:) Но это дополнительная забота о распределении по диску.

Валенок
05.08.2015, 15:28
Ну тогда хоть какое ни будь описание(инструкцию) приложите, пожалуйста..

В примере:
Всё для чего нужен ретайн - собрано в одну структуру - Flash (глобал)
A,B,C - просто пример данных. Набиваете что нужно для себя.
Начальные значения - желательны (используются при первом старте)
Вместо STRUCT использован FB - так проще сделать контроль диапазона ввода (для уставок бывает нужно)
Доступ к этим данным - из любого места просто объявление через точку Flash.A, Flash.B (и квадратиках
тоже)
Основной процесс не PLC_PRG, а Main.
Если привыкли к PLC_PRG, то вместо Main в начало PLC_PRG вставляете квадратик вида:
-------------
|_Setting_|
|___Ready|o------<|RETURN|>
-------------

При старте - читается файл с данными. Если его нет - пишется (стартовые значения)
Setting имеет копию ретайна. Периодически проверяются изменения. При их наличии - слив на флеш.



.. проблема такая не только у ПЛК100, а у 154 и 110, 160.
Достаточно одной таблэтки (C)
Для всех.

Валенок
05.08.2015, 15:29
С понял:) Но это дополнительная забота о распределении по диску.
Этим озабочена "операционная система"

LUCHNICK
05.08.2015, 15:54
В примере:


При старте - читается файл с данными. Если его нет - пишется (стартовые значения)
Setting имеет копию ретайна. Периодически проверяются изменения. При их наличии - слив на флеш.

В наших случаях изменения уставок (значений) может проводить только оператор(наладчик) с панели оператора. Поэтому, если были введены с панели значения, не одинаковые с имеющимися в ПЛК, то тогда перезапись их в архиве ПЛК.

Валенок
05.08.2015, 23:12
В наших случаях изменения уставок (значений) может проводить только оператор(наладчик) с панели оператора. Поэтому, если были введены с панели значения, не одинаковые с имеющимися в ПЛК, то тогда перезапись их в архиве ПЛК.
Дык Flash может быть прям области обмена ))


В наших случаях
К тому же терпеть не могу частных решений. Только общие.

Эдуард_Н
06.08.2015, 03:56
По моим данным вопрос решен.
Была изменена топология платы и некоторые элементы.
Подробностей не помню - надо уточнять у руководителя проекта.

Ответ производителей:

Здравствуйте!

Уже исправили, переразведена верхняя плата и создана новая прошивка перефирийного процессора. Если у Вас имеются, для которых необходмимо произвести замену верхней платы для устранения проблем с работоспособностью аккум-ра, то Вы можете прислать эти контроллеры в СЦ, либо если нет возможности отправть контроллеры в СЦ.


Новые переразведенные платы есть только для контроллеров ПЛК100/150/154.

Иван Воронин
06.08.2015, 12:20
Дык Flash может быть прям области обмена ))
Можете пояснить?
То есть записываемая структура содержит переменные, которые напрямую задаются с ИП-320?
Можно пример такой реализации?

Валенок
06.08.2015, 13:55
init : bool;
pflash : pointer to fb_flash; //вместо глобальной flash

if not init then
init := true;
pflash := adr(где-то в области обмена);
...
end_if

Дальше доступ : pflash^.X ..
Может потребоваться начальная инициализация - по месту

Иван Воронин
06.08.2015, 14:02
init : bool;
pflash : pointer to fb_flash; //вместо глобальной flash

if not init then
init := true;
pflash := adr(где-то в области обмена);
...
end_if

Дальше доступ : pflash^.X ..
Может потребоваться начальная инициализация - по месту
А как обеспечить нахождение в этой области переменных - параметров процесса?

Валенок
06.08.2015, 14:38
Разместите там TON (абсолютно такой же ФБ) Вызывать его только не забывайте.
TON.IN, TON.PT - параметр,
TON.Q, TON.ET данные,
TON.M, TON.START - "привате" данные.
Но все это лежит там. Ессно не желательно извне (из ИП320) писать в данные и "привате" данные. Но никто и не запрещает.