EasyBuilder - Скорая помощь новичкам

Работа с панелями оператора Weintek - подключение, программирование, совмещение с ПЛК

Модераторы: kiv, 8bit, VanMo

Re: EasyBuilder - Скорая помощь новичкам

Сообщение dimensy » 13 сен 2023, 19:58

dikh писал(а):Добрый день.
Есть задачка - если пользователь находится на странице настроек и происходит разлогинивание по причине долгого отсутствия действий, то организовать переход на "общедоступную" страницу.
Есть мысль что можно как то организовать макрос проверку, которая на данной странице, что если id пользователя = такому то, тогда переходим на страницу. Как понять, что пользователю условно нельзя сюда - если имя пользователя LW-10754 = "", тогда переходим на страницу. Но команды в макросе "переход на страницу" не нашел чтото. Такая существует? Или возможно есть штатный способ выполнить данную функцию?

Как вариант, привязываете к странице настроек макрос в режиме цикл, который мониторит регистр LW-10754. Как только регистр становится равен нулю, записываете в какой-нибудь регистр, например, LW-0 номер окна на который нужно перейти. Создаете триггер "Сменить окно", ставите галку "Очистка данных после смены окна" и регистр для триггера указываете LW-0.
dimensy
 
Сообщения: 177
Зарегистрирован: 14 мар 2018, 17:54

Re: EasyBuilder - Скорая помощь новичкам

Сообщение SibChief » 14 сен 2023, 08:10

8bit писал(а):
SibChief писал(а):Подскажите, пожалуйста, если я присвоил метку переменной, то могу я как-то получить адрес ячейки, в которой она располагается в макросе?

все встроенные функции описаны в главе 18.7. Built-In Function Block Руководства пользователя EasyBuilder Pro


Я, наверное, не совсем точно сформулировал вопрос. Попробую по другому.

В памяти панели расположены несколько переменных, которые расположены последовательно в памяти. У каждой из них есть тэг.

Я хочу произвести обработку этих переменных, для этого в макросе я их должен считать из памяти.
Обработку провожу в цикле. Считываю переменную, обрабатываю её, записываю в память.
Как в функции GetData задать обработку со смещением, то есть я записываю функцию таким образом GetData(stat, "Local HMI", LB, st_addr + i*2, 1), где st_addr - это адрес в памяти первой переменной. И перед этой функцией мне нужно вручную посмотреть, по какому адресу находится интересующая меня переменная и записать этот адрес. Вопрос в том, можно ли как-то вместо ручного просмотра, зная имя тэга присвоить адрес этой переменной. Или, как написать синтаксис функции GetData, чтобы использую тэг задать смещение для именованной переменной.
В мануале такого синтаксиса или функции не нашел.
SibChief
 
Сообщения: 3
Зарегистрирован: 05 окт 2022, 18:37

Re: EasyBuilder - Скорая помощь новичкам

Сообщение X200881 » 14 сен 2023, 09:13

dikh писал(а):Добрый день.
Есть задачка - если пользователь находится на странице настроек и происходит разлогинивание по причине долгого отсутствия действий, то организовать переход на "общедоступную" страницу.

Я обычно использую авто логофф (1-5 мин) и на странице настроек объекты воздействия имеют доступ по паролю. Пусть смотрят но взаимодействовать после логофф ни с чем не смогут, останется лишь перейти на другую страницу. Если наладчик забыл выйти из настроек и нажать логофф
X200881
 
Сообщения: 45
Зарегистрирован: 27 авг 2014, 13:00

Re: EasyBuilder - Скорая помощь новичкам

Сообщение dimensy » 14 сен 2023, 09:20

X200881 писал(а):Доброго дня.
Имеется окно "Ошибки" которое может быть вызвано из разных мест. В нем кнопка с функцией "возврат на предыдущее окно" и если в нем остаться, и включится заставка, то при откл. заставки кнопка с функцией "возврат на предыдущее окно" будет переходить на заставку.
Как в EasyBuilder Pro вызывать заставку так, что бы она не меняла значении предыдущего окна. Либо перед включением заставки копировать значение предыдущего окна, а после отключения заставки прописать на зад?
Прямую адресацию на нужные окна знаю как сделать. Можно конечно и заставку отключить, и просто глушить экран.

1. Создаете триггер "Сменить окно", задаете адрес ячейки, например LW-0 (LW-1 тоже будет занят)
2. На окно настроек переходите с помощью комбинированной кнопки, в которой прописано два действия: запись в LW-0 номера окна настроек и запись в другой регистр, например LW-3 номера окна с которого осуществляется переход
3. В окне настроек размещаете объект "Передача данных (Окно)" с настройками: режим - внешний триггер, ON->OFF, источник LW-3, назначение LW-0, триггер, например LB-0.
4. Возврат из окна настроек выполняете битовой кнопкой с атрибутом "моментально" и адресом записи LB-0
dimensy
 
Сообщения: 177
Зарегистрирован: 14 мар 2018, 17:54

Re: EasyBuilder - Скорая помощь новичкам

Сообщение dimensy » 14 сен 2023, 09:52

SibChief писал(а):
Я, наверное, не совсем точно сформулировал вопрос. Попробую по другому.

В памяти панели расположены несколько переменных, которые расположены последовательно в памяти. У каждой из них есть тэг.

Я хочу произвести обработку этих переменных, для этого в макросе я их должен считать из памяти.
Обработку провожу в цикле. Считываю переменную, обрабатываю её, записываю в память.
Как в функции GetData задать обработку со смещением, то есть я записываю функцию таким образом GetData(stat, "Local HMI", LB, st_addr + i*2, 1), где st_addr - это адрес в памяти первой переменной. И перед этой функцией мне нужно вручную посмотреть, по какому адресу находится интересующая меня переменная и записать этот адрес. Вопрос в том, можно ли как-то вместо ручного просмотра, зная имя тэга присвоить адрес этой переменной. Или, как написать синтаксис функции GetData, чтобы использую тэг задать смещение для именованной переменной.
В мануале такого синтаксиса или функции не нашел.


Ну, читать вы можете так
Код: Выделить всё
GetData(A, "Local HMI", "Имя_Тега", 1)
dimensy
 
Сообщения: 177
Зарегистрирован: 14 мар 2018, 17:54

Re: EasyBuilder - Скорая помощь новичкам

Сообщение SibChief » 14 сен 2023, 10:13

dimensy писал(а):
SibChief писал(а):
Я, наверное, не совсем точно сформулировал вопрос. Попробую по другому.

В памяти панели расположены несколько переменных, которые расположены последовательно в памяти. У каждой из них есть тэг.

Я хочу произвести обработку этих переменных, для этого в макросе я их должен считать из памяти.
Обработку провожу в цикле. Считываю переменную, обрабатываю её, записываю в память.
Как в функции GetData задать обработку со смещением, то есть я записываю функцию таким образом GetData(stat, "Local HMI", LB, st_addr + i*2, 1), где st_addr - это адрес в памяти первой переменной. И перед этой функцией мне нужно вручную посмотреть, по какому адресу находится интересующая меня переменная и записать этот адрес. Вопрос в том, можно ли как-то вместо ручного просмотра, зная имя тэга присвоить адрес этой переменной. Или, как написать синтаксис функции GetData, чтобы использую тэг задать смещение для именованной переменной.
В мануале такого синтаксиса или функции не нашел.


Ну, читать вы можете так
Код: Выделить всё
GetData(A, "Local HMI", "Имя_Тега", 1)


Да, могу. Но это, если я работаю с одной переменной. Мне их нужно обработать, условно, 5 раз по 10 переменных. Поэтому я заворачиваю это в цикл. И получается, что мне нужно смещение задавать к начальному адресу. Сейчас приходится для этого смотреть в карте переменных по какому адресу лежит интересующая меня переменная, и вручную её записывать, чтобы можно было как-то смещение задавать. И при этом, нужно держать в памяти, что адреса лучше не менять.
SibChief
 
Сообщения: 3
Зарегистрирован: 05 окт 2022, 18:37

Re: EasyBuilder - Скорая помощь новичкам

Сообщение 8bit » 14 сен 2023, 10:39

dikh писал(а):Добрый день.
Есть задачка - если пользователь находится на странице настроек и происходит разлогинивание по причине долгого отсутствия действий, то организовать переход на "общедоступную" страницу.
Есть мысль что можно как то организовать макрос проверку, которая на данной странице, что если id пользователя = такому то, тогда переходим на страницу. Как понять, что пользователю условно нельзя сюда - если имя пользователя LW-10754 = "", тогда переходим на страницу. Но команды в макросе "переход на страницу" не нашел чтото. Такая существует? Или возможно есть штатный способ выполнить данную функцию?

для какой серии ?
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1134
Зарегистрирован: 20 апр 2020, 19:07

Re: EasyBuilder - Скорая помощь новичкам

Сообщение dimensy » 14 сен 2023, 11:18

SibChief писал(а):
Да, могу. Но это, если я работаю с одной переменной. Мне их нужно обработать, условно, 5 раз по 10 переменных. Поэтому я заворачиваю это в цикл. И получается, что мне нужно смещение задавать к начальному адресу. Сейчас приходится для этого смотреть в карте переменных по какому адресу лежит интересующая меня переменная, и вручную её записывать, чтобы можно было как-то смещение задавать. И при этом, нужно держать в памяти, что адреса лучше не менять.


Если значения лежат в соседних регистрах по порядку, то читайте все регистры одновременно в массив, а там уже обрабатывайте
dimensy
 
Сообщения: 177
Зарегистрирован: 14 мар 2018, 17:54

Re: EasyBuilder - Скорая помощь новичкам

Сообщение Number17 » 14 сен 2023, 11:46

8bit писал(а):
Number17 писал(а):Панель MT8071iP(или iE). Задумал организовать MODBUS RTU сервер. По настройкам вроде бы всё понятно, с адресным пространством тоже: пишем читаем диапазон LW 0-9999 c возможностью ограничения верхнего адреса. Вопрос вот какой: возможно ли запретить запись в определённый диапазон адресов? Например запретить запись в диапазон LW100 - LW200 при пытке записать что то туда с помощью 4x внешним устройством? То есть определить ячейки памяти как Read Only.

а свою таблицу Modbus адресов создать ?

Системные параметры -> Устройства -> Локальная панель -> Настройки/Безопасность, а там разберетесь ......

Спасибо! Разобрался.
Number17
 
Сообщения: 156
Зарегистрирован: 06 мар 2018, 12:08

Re: EasyBuilder - Скорая помощь новичкам

Сообщение Number17 » 14 сен 2023, 12:43

PCL Control по бит-триггеру OFF->ON запускает некий макрос. В макросе бит-триггер сбрасываю посредством SetData в OFF. Так этот бит часто не сбрасывается в OFF.
Сброс бит-триггера не происходит именно в макросе, который этот бит активирует. Если же его сбрасывать как иначе, в ином каком то макросе, то всё нормально.
Почему так происходит?
Number17
 
Сообщения: 156
Зарегистрирован: 06 мар 2018, 12:08

Пред.След.

Вернуться в Weintek

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], Google [Bot] и гости: 6