Добрый день.
Если речь о новых СПК1хх (с маркировкой М01 и портом Ethernet) - то это возможно.
Вид для печати
Здравствуйте! У меня большой вопрос по работе Retain переменных. Контроллер СПК110. Имеется функциональный блок, который считает время наработки, и в зависимости от прошедшего количества рабочих часов активизирует индикатор на СПК о необходимости проведения регламентных работ. Ранее переменные, отвечающие за часы, минуты наработки, были выходными переменными функционального блока, и когда я в теле основной программы привязывал к этим выходам переменные и объявлял их Retain, они при выключении питания не сохранялись. Затем я их объявил Retain уже внутри ФБ, и значения этих переменных стали сохраняться. НО у меня есть еще переменная внутри ФБ, которая привязана к выходу CV счетчика CTU и показывает количество проведенных регламентных работ, и соответственно должна быть тоже энергонезависимой, но когда я ее объявляю Retain внутри ФБ, то значение ее все равно не сохраняется при сбросе питания. Помогло только объявление всего ФБ как Retain. Почему такое происходит? одни переменные, объявленные внутри ФБ как Retain сохраняются,другие не сохраняются?Вложение 50594
Добрый день.
Чтобы осознать происходящее - надо всегда помнить о том, что по умолчанию выход CV счетчика CTU не является энергонезависимым.
После перезагрузки CV = 0 (помним, что он не энергонезависимый) - и это значение копируется в RETAIN-переменную программы.Цитата:
Ранее переменные, отвечающие за часы, минуты наработки, были выходными переменными функционального блока, и когда я в теле основной программы привязывал к этим выходам переменные и объявлял их Retain, они при выключении питания не сохранялись.
Тут все логично и не требует объяснений.Цитата:
Затем я их объявил Retain уже внутри ФБ, и значения этих переменных стали сохраняться.
После перезагрузки CV = 0 (помним, что он не энергонезависимый) - и это значение копируется в RETAIN-переменную ФБ.Цитата:
НО у меня есть еще переменная внутри ФБ, которая привязана к выходу CV счетчика CTU и показывает количество проведенных регламентных работ, и соответственно должна быть тоже энергонезависимой, но когда я ее объявляю Retain внутри ФБ, то значение ее все равно не сохраняется при сбросе питания.
После этого ВСЕ переменные ФБ стали энергонезависимыми. В том числе - экземпляр счетчика, и, соответственно, его выходная переменная CV также стала энергонезависимой.Цитата:
Помогло только объявление всего ФБ как Retain. Почему такое происходит? одни переменные, объявленные внутри ФБ как Retain сохраняются,другие не сохраняются?
С точки зрения практической части - посмотрите этот пример, он позволил бы не писать свой код для данной задачи:
https://owen.ru/forum/showthread.php...l=1#post336945
Евгений, спасибо за быстрый ответ!
Разместил здесь сообщение, исчезло бесследно, но в личке 1 ответ есть. Где искать само сообщение?
Я его перенес сюда:
https://owen.ru/forum/showthread.php?t=10555&page=795
так как оно не касается данной темы (CODESYS V3.5)
Странная ситуация. Дано CDS 3.5 SPK107 и CDS 2.3 PLC110. Определено несколько структур, которые есть и там и там. Структуры в CDS 3.5 и CDS 2.3 одинаковы. Но когда я смотрю их размер (sizeof) там и там, то у некоторых структур размер одинаковый, а у некоторых он отличается в CDS 2.3 в большую сторону. Как такое возможно?