PDA

Просмотр полной версии : Как принудительно обновить мнемосхему или комбинированное окно (Массив)?



aaaSashaMGGU
23.10.2023, 19:27
Добрый день!
Есть самое обычное "Комбинированное окно (Массив)", привязанный к обычному же массиву из обычного POU. В окне выбран условный 25-й элемент.
Где-то через код я меняю значение этого 25-го элемента. Теперь в окне у меня УЖЕ неверное значение. Значение обновится только после щелчка на окно, либо после выбора туда-сюда другой визуализации
Как принудительно обновить всё окно? Или только хотя бы этот элемент?

P.S.
Пока придумал только делать плюс 1 к индексу, ждать секунду, затем минус к индексу. Так работает, хоть и костыль, конечно...
P.P.S.
Быстро сменить мнемосхему туда-сюда не работает; быстро сменить индекс туда-сюда не работает (поэтому и пауза 1 секунда); вызвать дочернее окно с одной кнопкой "ОК" не работает

МихаилГл
24.10.2023, 01:41
У меня вроде всё меняется без проблем. Поменял индекс, всё элементы на окне привязались к другим данным из массива.

У меня сделано так, есть временная структура, при изменении индекса в структуру копируются данные из массива с этим индексом. А в визуализации всё привязано к временной структуре.

aaaSashaMGGU
24.10.2023, 07:10
У меня вроде всё меняется без проблем. Поменял индекс, всё элементы на окне привязались к другим данным из массива.

У меня сделано так, есть временная структура, при изменении индекса в структуру копируются данные из массива с этим индексом. А в визуализации всё привязано к временной структуре.

Не-не, если меняется индекс, то как раз всё ОК. А у меня меняется значение по выбранному в данный момент индексу - но в окне остаётся старое значение, пока по нему не щёлкнешь (или пока не сменишь мнемосхему)

Евгений Кислов
24.10.2023, 08:13
Не-не, если меняется индекс, то как раз всё ОК. А у меня меняется значение по выбранному в данный момент индексу - но в окне остаётся старое значение, пока по нему не щёлкнешь (или пока не сменишь мнемосхему)

Не смог повторить вашу проблему.
Проверьте - я делаю то же самое, что и вы?
https://disk.yandex.ru/i/AA1O_lpjbmUKyg

МихаилГл
24.10.2023, 08:51
Ну у меня таких проблем не было...

aaaSashaMGGU
24.10.2023, 08:56
Не смог повторить вашу проблему.
Проверьте - я делаю то же самое, что и вы?
https://disk.yandex.ru/i/AA1O_lpjbmUKyg

Как будто всё верно. Но у меня вот именно так и не работает.
Выбранное значение не обновляется
Может, сам элемент как-то специфично настроен?

Евгений Кислов
24.10.2023, 08:56
Как будто всё верно. Но у меня вот именно так и не работает.
Выбранное значение не обновляется
Может, сам элемент как-то специфично настроен?

Какой контроллер, версию CODESYS и версию плагина визуализации вы используете?
Выложите, пожалуйста, простейший проект, в котором у вас повторяется данная проблема.

aaaSashaMGGU
24.10.2023, 09:28
Какой контроллер, версию CODESYS и версию плагина визуализации вы используете?
Выложите, пожалуйста, простейший проект, в котором у вас повторяется данная проблема.

Имя: PLC200-01
Производитель: Production association OWEN
Группы:
Тип: 40102
ID: 1628 0001
Версия: 3.5.17.3001
Порядковый номер: -
Описание: PLC200-01

71133

Евгений Кислов
24.10.2023, 09:48
Попробуйте снять эту галочку:

71135

aaaSashaMGGU
24.10.2023, 09:51
Попробуйте снять эту галочку:

71135

Снял. Не помогло

Евгений Кислов
24.10.2023, 10:05
Снял. Не помогло

Повторил проблему с вашим проектом.
Она исчезла, когда поменял начальный индекс массива с 1 на 0.

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

МихаилГл
24.10.2023, 10:24
Повторил проблему с вашим проектом.
Она исчезла, когда поменял начальный индекс массива с 1 на 0.

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

Да уж, интересный баг... Скоро напишу тему по багу с ПЛК210 и ИП320, когда кнопочная панель в виде мастера шлет в контроллер переменную и похоже проверяет ее или досылает, что в результате для определенных программ требуется программная заплатка... Пока нет времени...

aaaSashaMGGU
24.10.2023, 11:09
Да, спасибо, всё получилось
Не люблю массивы с нуля - вот и поплатился :)

К слову о при запуске в качестве индекса указан "несуществующий" индекс массива - это не так. У меня (в моем текущем проекте) индекс массива - это RETAIN, так что, там точно был не ноль по старту

capzap
24.10.2023, 11:43
У меня (в моем текущем проекте) индекс массива - это RETAIN, так что, там точно был не ноль по старту
возможно такое приходит в голову, если считать что инициализация происходит позже чем применяются загруженные ретайн переменные