PDA

Просмотр полной версии : Правильная практика работы с параметрами в энергонезависимой памяти



Dima.Silorov
25.05.2018, 08:13
Добрый день!
Есть ли у уважаемой аудитории проверенные методы работы с переменными, которые хранятся в энергонезависимой памяти?
Проблема в том, что при перезагрузке контроллера ФБ накопителя (интегратор или счетчик) первым циклом записывает в переменную "0", затирая значение, которое было записано ранее.
т.е. счетчик копит значения месяц, контроллер перезагрузился, значение (несмотря на энергонезависимость) обнулилось.
Смысл тогда в таких переменных?

пока пришлось соорудить костыль в виде скрипта на C, но это костыль.
Есть какое-нибудь стандартное решение?

Сергей Сисейкин
28.05.2018, 11:27
Добрый день!
Есть ли у уважаемой аудитории проверенные методы работы с переменными, которые хранятся в энергонезависимой памяти?
Проблема в том, что при перезагрузке контроллера ФБ накопителя (интегратор или счетчик) первым циклом записывает в переменную "0", затирая значение, которое было записано ранее.
т.е. счетчик копит значения месяц, контроллер перезагрузился, значение (несмотря на энергонезависимость) обнулилось.
Смысл тогда в таких переменных?

пока пришлось соорудить костыль в виде скрипта на C, но это костыль.
Есть какое-нибудь стандартное решение?

Ставим галочку сохранять в энергонезависимой памяти. Используется для переменных, а не просто входов\выходов ФБ37460

Dima.Silorov
04.06.2018, 20:31
Так интегратор в первом же цикле перезапишет эту переменную на текущее значение.. Обычно - в ноль.
Приходится интегратор замыкать на самого себя через Cнач и Хнач
37554
37555

Яшина Татьяна
05.06.2018, 13:47
При рестарте ПЛК для переменных которые хранятся в энергонезависимой памяти восстанавливается значение из памяти. В вашем случае значение обнуляется потому что это специфика работы непосредственно этого ФБ
Описание данного блока в справочной системе:

В ФБ предусматривается установка начального значения. Если дискретный сигнал на выходе Снач равен 0, то выполняется основная функция интегратора. При Снач равном 1 интегратор переходит в режим уставки начального значения, при этом выход Y=Xнач.

Для того чтобы избавится от "костыля" используйте переменную, в которой будете хранить значение - ее привязывайте к выходу блоку и на вход Хнач. Вход Снач можно поставить по умолчанию в 1 и программно обнулять при начале расчета.
для Переменной Счетчик установлено начальное значение и стоит галочка "энергонезависимая память"

3756437565

Dima.Silorov
05.06.2018, 19:48
Ошибку - игнорировать?
37568

Яшина Татьяна
07.06.2018, 11:13
Интересная вещь) в принципе можно игнорировать, а можжно чтоб не смущала все таки писать выход через промежуточный элемент,например такой ( можете скопировать код далее и вставить в область задач в своей программе)


<?xml version="1.0" encoding="windows-1251"?>
<KLogicDocumentPart><ItemType7><FBNumber>150</FBNumber><Settings><Name>CopyInt 5</Name><Type>150</Type><ChannelCount>0</ChannelCount><Left>1202</Left><Top>590</Top></Settings><InOut Name="AI"><Settings><wKind>5</wKind><Connected></Connected><IVDefined0>True</IVDefined0><InitValue0>0,00000</InitValue0><KId>164</KId></Settings></InOut><InOut Name="AO"><Settings><KId>172</KId></Settings></InOut><ScriptSettings><Language>PascalScript</Language><Text>Var var1 : Real;
{---------- main program -----------}
begin
ReadFloat(&apos;AI&apos;, var1);
WriteFloat(&apos;AO&apos;,var1);
end.
</Text><Comments></Comments><DateTimeModifed>07.06.2018 11:10:58</DateTimeModifed></ScriptSettings></ItemType7></KLogicDocumentPart>

Dima.Silorov
07.06.2018, 17:34
Ну я так в своем скрипте и сделал :) Только на Си. Только еще обнуление прикрутил...

Archisan
14.06.2018, 09:53
Здравствуйте, существует ли конечный цикл перезаписи у энергонезависимой памяти? Например, в структуру, которая хранится в энергонезависимой памяти в 500 переменных 10 раз в секунду перезаписываются данные. Это не ушатает энергонезависимую память? В какой момент физически происходит запись?

Яшина Татьяна
15.06.2018, 09:33
Добрый день.

На данный момент в ИС контроллера заложен следующий алгоритм - значения копятся в ОЗУ и записываются раз в минуту. Если значение статично ,т.е оно не изменяется постоянно, оно пишется в энергонезависимую память только по изменению.
Но чтобы поберечь ресурс контроллера рекомендуем все же не писать в энергонезависимую память 500 переменных изменяемых 10 раз в секунду, а оптимизировать программу или хранить эти значения на ВУ)

Archisan
17.06.2018, 20:51
Спасибо, полезная информация. И так все таки, какой конечный цикл перезаписи у энергонезависимой памяти? Очень не хочется ломать структуру.

Popov Boris
22.06.2018, 12:45
Спасибо, полезная информация. И так все таки, какой конечный цикл перезаписи у энергонезависимой памяти? Очень не хочется ломать структуру.

У ПЛК 323-ТЛ тип памяти MRAM-количество циклов неограниченно.

RollForRepair
06.06.2022, 15:38
Добрый день! Нужно в проекте вести учёт пробега компрессора, для чего хочу записывать в энергонезависимую память выход ФБ 'Пробег'. Отсюда вопрос, как часто порекомендуете делать запись, чтобы ресурс энергонезависимой использовался эффективно? Поминутная точность неважна, я думал остановиться на записи 1 раз в 20 минут непрерывной работы (3 раза в час, 72 в день, 26280 в год; реально 24/7 работы не будет, но она будет продолжительной, не берусь судить насколько).

Если это имеет значение, я использую ПЛК110.