![]() |
![]() ![]() |
|
SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#1 |
Member
Регистрация: Jun 2019
Адрес: Новосибирск
Сообщения: 76
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Здравствуйте, товарищи и коллеги.
Изучаю работу SMLogix, это для меня новая среда. И конкретно сейчас столкнулся с нюансом, который объяснить для себя не могу. В чём суть: решаю элементарую формальную задачку. поверх текущего экрана (в данном случае это просто картинка на весь экран) нарисовать прямоугольник при касании экрана, потом этот прямоугольник убрать, когда убирают палец. Поскольку у нас нет возможности при отрисовке чего-либо на экране запоминать старое содержимое экрана, и нет в картинках прозрачности, то нам необходимо при "убирании" динамического объекта чистить весь экран и перерисовывать фон. Вот с этим и возник вопрос. Как следует из хелпов, блок очистки экрана работает по уровню управляющего сигнала: пока там 1, Трим непрерывно циклически чистит экран. В этом можно убедиться на практике, если в проекте тупо соединить выход "состояние" от экранной кнопки и вход enable у блока очистки. Держим палец на кнопке - экран залит, отпускаем - снова видим текущий экран. Если же мы хотим производить отрисовку и очистку по фронту (однократно, в момент нажимании-отпускании), то тут начинается непонятное. Если используем блок Fronts (см. картинку 1), то при отпускании кнопки мы не увидим текущий экран проекта. Мы будем наблюдать очищеный экран устройства. Если же детектировать спадающий фронт ручками (см. картинку 2), то экран устройства очищается, и задник текущего экрана вслед за этим прорисовывается. Насколько я понимаю, и связи между блоками, и сами блоки работают в единой временной сетке, задаваемой тиками. Следовательно, две схемы эквивалентны, но реальное поведение разное. Вопросы: в какие моменты в работающем проекте происходит перерисовка экрана? Можно ли как-то влиять на этот процесс? В лоджиксе есть UI-выходы, но где их найти СМАрте и как ими пользоваться? Можно просто ссылку. Какой из двух вариантов поведения проекта является глючным, а какой правильным с точки зрения идеологии сегнетикс? Что из этого мне лучше использовать в своих проектах в дальнейшем? Если я перерисую вручную задник экрана (передёрну видимость), то перекроет ли он всё остальное, что было до этого поверх него (кнопки, текст и тд)? Лоджикс 3.28, Trim5 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Регистрация: May 2009
Сообщения: 1 033
Благодарил(а): 9 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
![]() __________________ RTFM |
![]() |
![]() |
![]() |
#3 |
Member
Регистрация: Jun 2019
Адрес: Новосибирск
Сообщения: 76
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() ![]() ![]() фух... ну надо же такую глупость ляпнуть, а )) Разобрались. |
![]() |
![]() |
![]() |
#4 |
Сотрудник Сегнетикс
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 094
Благодарил(а): 0 раз(а)
Поблагодарили:
232 раз(а) в 229 сообщениях
|
![]()
А вы пока просто "играетесь" и это была конечная цель? Или она глобальнее?
|
![]() |
![]() |
![]() |
#5 |
Member
Регистрация: Jun 2019
Адрес: Новосибирск
Сообщения: 76
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() Теперь я собираюсь развивать функционал, делать дополнительные меню, алгоритмы регулирования, ротации, оповещения и тд И конечно же, красивую графику, дабы заказчик увидел "товар лицом". С этой целью пытаюсь получше прочувствовать механизмы работы лоджикса (а точнее - проектов и графики в частности), чтобы понять свои возможности и ограничения. Надо выработать функциональную базу для построения развитого графического интерфейса. Чтобы в едином подходе все было построено, и в будущем можно было масштабировать и заимствовать. Сейчас я выяснил: информация, что графические блоки не умеют себя стирать, всётки актуальна. Но по событиям на тачскрине (или где-то уровнем выше) происходит автоматическая перерисовка экрана... и при отпускании кнопки блок как бы "стирается". Вобщем, актуальными остались следующие вопросы: 1 как передавать в SMArt значения с UI-выходов, и что с ними можно там делать? В хелпах есть есть об этом упоминание, но ни конкретных инструкций, ни чего-то такого в интерфейсе я не нашёл 2 можно ли как-то из fbd-редактора активировать/деактивировать, переключать экраны? или как-то вызывать обновление экрана обходными путями? |
![]() |
![]() |
![]() |
#6 |
Senior Member
Регистрация: May 2009
Сообщения: 1 033
Благодарил(а): 9 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
![]() __________________ RTFM |
![]() |
![]() |
![]() |
#7 |
Member
Регистрация: Jun 2019
Адрес: Новосибирск
Сообщения: 76
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Да, нашёл.
В подсказке написано, что переход происходит по положительному фронту ui-переменной, к нему привязанной. Это вполне логично, я бы тоже так сделал. Однако, это на практике не так. На самом деле переход происходит при условии переменная=1. Посмотрите на скриншоты. Пока тик=1, экраны быстро-быстро переключаются друг на друга. Когда тик=0, ничего не происходит. И на главные вопросы я пока не могу найти ответ. 1 что сделать, чтобы после очистки экрана прорисовалась форма SMArt? 2 в какие моменты (или при каких условиях) обновляется экран SMArt? За всем этим стоит желание делать комбинированный графический интерфейс: что-то мы прописываем в SMArt, а что-то в fbd. Так можно создавать "композитные" элементы вывода в макросах (например число в рамке, табличка) и параметризовать графику, легко менять внешний вид и легенду. Ну и в общем-то нет проблем, кроме одной: можно показать, но нельзя погасить... Последний раз редактировалось MadKid, 13.06.2019 в 22:44 |
![]() |
![]() |
![]() |
#8 |
Member
Регистрация: Jun 2019
Адрес: Новосибирск
Сообщения: 76
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Собсно, всё придумал, задача решена.
Может кто воспользуется. Задача: поверх экрана SMArt выводить и гасить fbd-элементы графики. Решение. Помещаем на экран "прозрачку" - картинку .png, любого размера, в любом месте, с полностью прозрачным изображением. Из fbd меняем видимость этой картинки только для того, чтобы перерисовывался экран. Собсно, ClrScreen в этом случае не нужен, вся fbd-графика, у которой выключен enable, сама стряхивается. Документация не рекомендует нам рисовать фигуры непрерывно-циклично. Тогда мы будем держать enable=0, и надо будет его передёргивать всякий раз, как только на экране что-то меняется, чтобы и наша графика тоже отобразилась. Не очень удобно, но можно. ЗЫ можно и не прозрачку, а любую картинку, лишь бы на самый задний план, чтоб её никогда видно не было. Последний раз редактировалось MadKid, 14.06.2019 в 00:18 |
![]() |
![]() |
![]() |
#9 |
Senior Member
Регистрация: May 2009
Сообщения: 1 033
Благодарил(а): 9 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
![]() __________________ RTFM |
![]() |
![]() |
![]() |
#10 |
Member
Регистрация: Jun 2019
Адрес: Новосибирск
Сообщения: 76
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() Эт саааавсем не то же самое, и как минимум доку надо подкорректить. Ведь это важно: все переменные, по которым возможен выход из экрана, должны быть = 0 при входе в него. Несмотря на то, что управление вроде как фронтом осуществляется. |
![]() |
![]() |
![]() |
#11 |
Senior Member
Регистрация: May 2009
Сообщения: 1 033
Благодарил(а): 9 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
![]() __________________ RTFM |
![]() |
![]() |
![]() |
#12 |
Member
Регистрация: Jun 2019
Адрес: Новосибирск
Сообщения: 76
Благодарил(а): 1 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() Однако, не хочу показаться занудой, но всё же. "Чаще всего" != "всегда". Если вдруг у кого-то будет другой подход при создании проекта, и он будет полагаться на определение "по фронту ui-переменной", то у него могут возникнуть непонятки. И такой момент: это особенно вероятно, если человек в этой области ещё свежий )), что само по себе не добавляет ситуации ловкости. Ведь фактически выход из экрана управляется уровнем ui-переменной. Активность = !переменная (только на 1 цикл нарушается). И сразу требования к схеме управления экранами становятся другие. А так-то понятно всё. |
![]() |
![]() |
![]() |
#13 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 357
Благодарил(а): 15 раз(а)
Поблагодарили:
607 раз(а) в 555 сообщениях
|
![]() Но оно понятно, гораздо приятнее придумывать, чем читать ![]() Добавлено через 1 минуту __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Включение\выключения режима или устройства (нет проблемы) | vergin | SMLogix | 3 | 09.07.2018 23:27 |
Проблема зависание 2Gi/MC | djaval | Вопросы о SMH-2G(i) | 108 | 20.09.2017 18:58 |
Логика FBD не работает правильно (проблемы нет) | vlanaz | SMLogix | 8 | 30.11.2016 00:44 |