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

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

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

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

Сообщение dikh » 03 дек 2021, 13:32

Number17 писал(а):Если нет, то ищите подобным способом выше где прокол.

При а < 0 абракабадра:
Код: Выделить всё
[ID 2, Ln 9] Read from LW a = 64536
[ID 2, Ln 11] j  = a / 100.0 = 645.359985
[ID 2, Ln 14] i = 13376.621094
[ID 2, Ln 17] j = 1337662.125000
[ID 2, Ln 19] a = 1337662

Он почему то не может сделать нормальный GetData(a, "Local HMI", LW, 501, 1) при отрицательном значении
dikh
 
Сообщения: 24
Зарегистрирован: 02 дек 2021, 08:29

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

Сообщение Andrei » 03 дек 2021, 15:05

Добрый день.
Как считать номер открытого экрана на панели. LW9050 не подходит т.к. он показывает только номер основных окон. Мне надо номер всплывающих.
Andrei
 
Сообщения: 16
Зарегистрирован: 23 мар 2019, 13:10

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

Сообщение 8bit » 03 дек 2021, 16:34

Andrei писал(а):Добрый день.
Как считать номер открытого экрана на панели. LW9050 не подходит т.к. он показывает только номер основных окон. Мне надо номер всплывающих.


1) отведите один регистр для номера последнего всплывающего окна
2) на каждом всплывающем окне расположите объект "Кнопка" с параметрами "писать постоянное значение (введите номер этого окна) при открытии страницы"
3) считывайте ранее выбранный регистр чтобы узнать номер последнего (ибо открывать-то омжно несколько всплывающих окон одновременно)
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1108
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение Number17 » 03 дек 2021, 16:40

dikh писал(а):
Number17 писал(а):Если нет, то ищите подобным способом выше где прокол.

При а < 0 абракабадра:
Код: Выделить всё
[ID 2, Ln 9] Read from LW a = 64536
[ID 2, Ln 11] j  = a / 100.0 = 645.359985
[ID 2, Ln 14] i = 13376.621094
[ID 2, Ln 17] j = 1337662.125000
[ID 2, Ln 19] a = 1337662

Он почему то не может сделать нормальный GetData(a, "Local HMI", LW, 501, 1) при отрицательном значении


Так может быть у вас изначально в LW-501 загружено что то не то, в случае отрицательного значения
Number17
 
Сообщения: 152
Зарегистрирован: 06 мар 2018, 12:08

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

Сообщение ArtemPM » 03 дек 2021, 16:45

dikh писал(а):
Number17 писал(а):Если нет, то ищите подобным способом выше где прокол.

При а < 0 абракабадра:
Код: Выделить всё
[ID 2, Ln 9] Read from LW a = 64536
[ID 2, Ln 11] j  = a / 100.0 = 645.359985
[ID 2, Ln 14] i = 13376.621094
[ID 2, Ln 17] j = 1337662.125000
[ID 2, Ln 19] a = 1337662

Он почему то не может сделать нормальный GetData(a, "Local HMI", LW, 501, 1) при отрицательном значении

Я кажется понял где у вас проблема. Тип int он 32-битный, и вы читаете в него сразу два слова 501 и 502. Используйте short и все должно получиться
ArtemPM
 
Сообщения: 197
Зарегистрирован: 14 апр 2021, 05:16

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

Сообщение 8bit » 03 дек 2021, 16:48

dikh писал(а):Добрый день.
Пытаюсь пересчитать температуру в давление с помощью следующего кода:
Код: Выделить всё
macro_command main()
int a



сделайте вместо

Код: Выделить всё
int a


так
Код: Выделить всё
short a


Ибо
Variable Type ; Description ; Range

.Bool ; 1 bit (1 bit) ; 0, 1

.Char ; 8 bits (1 byte) ; ±127

Short ; 16 bits (1 word) ; ±32767

Int ; 32 bits (double word) ; ±2147418112

.Float ; 32 bits (double word)

.Unsigned Char ; 8 bits (1 byte) ; 0 ~ 255

.Unsigned Short ; 16 bits (1 word) ; 0 ~ 65535

.Unsigned Int ; 32 bits (double word) ; 0 ~ 4,294,967,295


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

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

Сообщение dikh » 03 дек 2021, 19:59

Спасибо, с шортом заработало.
Но появилась другая проблемка - из LW303 всегда считывается 0, хотя в конце исполнения макроса он всегда 1 и фактически он всегда отображается как 1.
Код: Выделить всё
   TRACE ("Module start")
   short var1
   GetData(var1, "Local HMI", LW, 303, 1)
   TRACE ("Read var1= %d", var1)
   var1 = var1 + 1
      if (var1 < 0) then
      var1 = 0
      TRACE ("var1 < 0")
   end if   
   if (var1 > 4) then
      var1 = 0
      TRACE ("var1 > 0")
   end if
   TRACE ("Write var1= %d", var1)
   SetData(var1, "Local HMI", LW, 303, 1)
   TRACE ("Module end")

Вот что показывает трайс:

Код: Выделить всё
[ID 0, Ln 238] Module start
[ID 0, Ln 241] Read var1= 0
[ID 0, Ln 251] Write var1= 1
[ID 0, Ln 253] Module end
dikh
 
Сообщения: 24
Зарегистрирован: 02 дек 2021, 08:29

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

Сообщение ArtemPM » 04 дек 2021, 09:04

dikh писал(а):Спасибо, с шортом заработало.
Но появилась другая проблемка - из LW303 всегда считывается 0, хотя в конце исполнения макроса он всегда 1 и фактически он всегда отображается как 1.

Макрос корректен, ищите где у вас в проекте еще изменяется LW303
ArtemPM
 
Сообщения: 197
Зарегистрирован: 14 апр 2021, 05:16

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

Сообщение tangra.god » 04 дек 2021, 15:09

Как заставить работать планировщик нормально? =)
Работает только если активировать его после выставления всех значений, если в процессе поменять время начала или останова уже не работает, нужно после смены уставок деактивировать его и активировать снова.
tangra.god
 
Сообщения: 33
Зарегистрирован: 10 июн 2021, 11:45

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

Сообщение Voldemus » 04 дек 2021, 19:09

Добрый день.

Случайно закрыл Дерево окон и Окно предпросмотра. Как восстановить ?
Voldemus
 
Сообщения: 26
Зарегистрирован: 27 авг 2015, 15:41

Пред.След.

Вернуться в Weintek

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4