PDA

Просмотр полной версии : Реализация всплывающих окон в CodeSys V 3.5



Спорягин Кирилл
11.07.2024, 16:00
День добрый!

Выкладываю видео вопрос.

Здесь уточню текстом некоторые моменты:
1. Ключевое значение имеет оптимальность, т.е. подразумевается, что данные окна должны быть копиями, а не привязаны каждое индивидуально (ведь насосов может быть не 3, а 33...)!
В Кодесис V3 есть элемент визуализации "диалог", но привязать к нему ФБ (структуру) у меня не получается.
2. Если использовать для таких "всплывающих окон" фрейм, то нужно работать с его видимость?
3. Визуализация "диалог" в Кодесис может быть перемещена по экрану?

Евгений Кислов
11.07.2024, 16:59
Добрый день.


В Кодесис V3 есть элемент визуализации "диалог", но привязать к нему ФБ (структуру) у меня не получается.

Сделать это - не проблема.
Мой телеграм указан в подписи. Со мной очень просто связаться по утрам.


Если использовать для таких "всплывающих окон" фрейм, то нужно работать с его видимость?

Да.


Визуализация "диалог" в Кодесис может быть перемещена по экрану?

Начиная с версии 3.5.17.30 есть штатная возможность это сделать - но только для ПЛК2хх (для СПК - не получится).
См. стр. 37:
https://ftp.owen.ru/CoDeSys3/99_ForumFiles/CODESYS_V3.5_SP17_features_forum.pdf

Спорягин Кирилл
11.07.2024, 17:12
Евгений, а можете накидать алгоритм (текстом, без видео и рисунков), как сделать, то как это показано на видео?

Вижу несколько решений в Кодесис V3.5.

1. Использовать фреймы.
В целом такую конструкцию уже сделал, но вот какие недостатки: - фрейм нельзя таскать по экрану (или я не знаю как), все фреймы должны быть на экране разработки (и они мешают просто).
В общем решение есть, но с недостатками.
2. Использовать визуализацию диалог.
Как привязать к диалогу ФБ (или структуру) я вижу. НО! При открытии диалога данные читаются из ФБ и показываются корректно, но передача данных из диалога в ФБ у меня не идет. Не знаю, что я делаю не так.
Еще момент с диалогом. Так понимаю, что он может быть открыт один! Ну, а если я 3 захочу?

Вот такие вопросы.
Может я где-то просто не вижу куда галочку поставить? Все делаю в SP16.

Евгений Кислов
11.07.2024, 17:20
можете накидать алгоритм (текстом, без видео и рисунков), как сделать, то как это показано на видео?

Вы это уже сами сделали в своем посте. Осталось только разобраться с


но передача данных из диалога в ФБ у меня не идет. Не знаю, что я делаю не так.




Еще момент с диалогом. Так понимаю, что он может быть открыт один! Ну, а если я 3 захочу?

Сколько угодно.

77202

Спорягин Кирилл
11.07.2024, 17:40
Пока не понимаю, почему нажатие кнопок в диалоге не приводит к передаче команды в ФБ.
Выкладываю поясняющее видео и архив проекта (в формате ZIP).

Евгений Кислов
11.07.2024, 18:03
У меня, естественно, в режиме симуляции обе кнопки в диалоге неактивны, потому что по дефолту PumpIN.Mode <> euMode.Manual.
Видимо, связаться по телеграм или хотя бы выложить простой проект с одним экраном визуализации и одним диалогом без всего лишнего - нерешаемая задача. =)

Тогда давайте гадать на хрустальном шаре. Жаль, что приходится прибегать к этому в случае с таким квалифицированным специалистом, как вы.

77205

Если бы в диалоге был элемент с действием Закрыть диалог и результатом Нет - то при нажатии на него произошла бы запись значений PumpIN в PLC_PRG.Pump1.
Но такого элемента, как я понимаю, нет.

Если потребуется записывать "на лету" без закрытия диалога - то см. соответствующий атрибут:
https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_pragma_var_in_out_as_pointer.html

Спорягин Кирилл
11.07.2024, 18:29
У меня, естественно, в режиме симуляции обе кнопки в диалоге неактивны, потому что по дефолту PumpIN.Mode <> euMode.Manual.
Видимо, связаться по телеграм или хотя бы выложить простой проект с одним экраном визуализации и одним диалогом без всего лишнего - нерешаемая задача. =)
Тогда давайте гадать на хрустальном шаре. Жаль, что приходится прибегать к этому в случае с таким квалифицированным специалистом, как вы.


Замечание принято. Я и сам терпеть не могу, когда ко мне (с объектов) обращаются с вопросом "у нас ничего не работает, что делать?" )))

Но все же в свое оправдание скажу, что я и видео приложил и архив проекта (не учел, что по умолчанию насос без питания). И к тому же я все же воспринимаю вопрос как общий, а не частный случай. С помощью видео и проекта хотел пояснить лучше что ли....



Если потребуется записывать "на лету" без закрытия диалога - то см. соответствующий атрибут:
https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_pragma_var_in_out_as_pointer.html

Вот добавил этот атрибут и все заработало как ожидаю.

Спасибо!!!!


П.С. Сейчас еще попробую с несколькими экземплярами.

Спорягин Кирилл
11.07.2024, 19:33
Выкладываю видео, как работают всплывающие окна в Codesys V3.5 SP16.

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

П.С. В проекте пока много лишнего, так как он в разработке, но для просмотра технологии "всплывающих окон" это не должно мешать.

Спорягин Кирилл
11.07.2024, 19:35
Начиная с версии 3.5.17.30 есть штатная возможность это сделать - но только для ПЛК2хх (для СПК - не получится).
См. стр. 37:
https://ftp.owen.ru/CoDeSys3/99_ForumFiles/CODESYS_V3.5_SP17_features_forum.pdf

Пробежался глазами документ и не увидел в нем описание как таскать диалоги по экрану.
Евгений, тыкните в страницу/пункт?

Евгений Кислов
12.07.2024, 06:14
Пробежался глазами документ и не увидел в нем описание как таскать диалоги по экрану.
Евгений, тыкните в страницу/пункт?

Стр. 37 (как уже упоминал) п. 10

d.dronov
10.11.2025, 15:00
Добрый день! Попробовал в своем проекте поставить атрибут VAR_IN_OUT_AS_POINTER, но он работает только на первую нижестоящую под атрибутом переменную. Есть ли возможность, чтобы атрибут применился на несколько переменных?

Евгений Кислов
10.11.2025, 15:08
Добрый день! Попробовал в своем проекте поставить атрибут VAR_IN_OUT_AS_POINTER, но он работает только на первую нижестоящую под атрибутом переменную. Есть ли возможность, чтобы атрибут применился на несколько переменных?

Добрый день.
Вы можете перед каждой нужной вам переменной добавить отдельную строку с этим атрибутом.

d.dronov
10.11.2025, 15:10
Пробовал, на панели вылезает exception

Евгений Кислов
10.11.2025, 15:17
Пробовал, на панели вылезает exception

Выложите, пожалуйста, простейший проект, в котором я смогу это увидеть.

d.dronov
10.11.2025, 15:39
Выложите, пожалуйста, простейший проект, в котором я смогу это увидеть.
Есть видео с проблемой:
https://cloud.elcomspb.ru/s/5NPcqn63WdSCbke

Евгений Кислов
10.11.2025, 15:43
Есть видео с проблемой:
https://cloud.elcomspb.ru/s/5NPcqn63WdSCbke

Нужен именно проект.

d.dronov
10.11.2025, 16:05
Нужен именно проект.
Сделал тестовый проект, только тут теперь даже при наличии атрибута, вылезает exception
https://cloud.elcomspb.ru/s/4PxXKkRqcQkdqF7

Евгений Кислов
11.11.2025, 06:40
Сделал тестовый проект, только тут теперь даже при наличии атрибута, вылезает exception
https://cloud.elcomspb.ru/s/4PxXKkRqcQkdqF7

У меня в выложенном проекте исключение не воспроизводится.
Пожалуйста, свяжитесь со мной по телеграм (см. в подписи) и продемонстрируйте вашу ситуацию по AnyDesk.

d.dronov
11.11.2025, 15:13
У меня в выложенном проекте исключение не воспроизводится.
Пожалуйста, свяжитесь со мной по телеграм (см. в подписи) и продемонстрируйте вашу ситуацию по AnyDesk.

Подскажите, а в какой версии codesys вы проверяли? Может в этом дело

Евгений Кислов
11.11.2025, 16:29
Подскажите, а в какой версии codesys вы проверяли? Может в этом дело

V3.5 SP17 Patch 3