Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Здравствуйте! У меня большой вопрос по работе Retain переменных. Контроллер СПК110. Имеется функциональный блок, который считает время наработки, и в зависимости от прошедшего количества рабочих часов активизирует индикатор на СПК о необходимости проведения регламентных работ. Ранее переменные, отвечающие за часы, минуты наработки, были выходными переменными функционального блока, и когда я в теле основной программы привязывал к этим выходам переменные и объявлял их Retain, они при выключении питания не сохранялись. Затем я их объявил Retain уже внутри ФБ, и значения этих переменных стали сохраняться. НО у меня есть еще переменная внутри ФБ, которая привязана к выходу CV счетчика CTU и показывает количество проведенных регламентных работ, и соответственно должна быть тоже энергонезависимой, но когда я ее объявляю Retain внутри ФБ, то значение ее все равно не сохраняется при сбросе питания. Помогло только объявление всего ФБ как Retain. Почему такое происходит? одни переменные, объявленные внутри ФБ как Retain сохраняются,другие не сохраняются?123.png
Добрый день.
Чтобы осознать происходящее - надо всегда помнить о том, что по умолчанию выход 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
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Евгений, спасибо за быстрый ответ!
Разместил здесь сообщение, исчезло бесследно, но в личке 1 ответ есть. Где искать само сообщение?
Я его перенес сюда:
https://owen.ru/forum/showthread.php?t=10555&page=795
так как оно не касается данной темы (CODESYS V3.5)
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru (личка на форуме - не подходит)
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | AnyDesk
Странная ситуация. Дано CDS 3.5 SPK107 и CDS 2.3 PLC110. Определено несколько структур, которые есть и там и там. Структуры в CDS 3.5 и CDS 2.3 одинаковы. Но когда я смотрю их размер (sizeof) там и там, то у некоторых структур размер одинаковый, а у некоторых он отличается в CDS 2.3 в большую сторону. Как такое возможно?