Страница 167 из 250

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

СообщениеДобавлено: 03 дек 2021, 13:32
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) при отрицательном значении

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

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

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

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


1) отведите один регистр для номера последнего всплывающего окна
2) на каждом всплывающем окне расположите объект "Кнопка" с параметрами "писать постоянное значение (введите номер этого окна) при открытии страницы"
3) считывайте ранее выбранный регистр чтобы узнать номер последнего (ибо открывать-то омжно несколько всплывающих окон одновременно)

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

СообщениеДобавлено: 03 дек 2021, 16:40
Number17
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 загружено что то не то, в случае отрицательного значения

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

СообщениеДобавлено: 03 дек 2021, 16:45
ArtemPM
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 и все должно получиться

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

СообщениеДобавлено: 03 дек 2021, 16:48
8bit
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



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

СообщениеДобавлено: 03 дек 2021, 19:59
dikh
Спасибо, с шортом заработало.
Но появилась другая проблемка - из 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

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

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

Макрос корректен, ищите где у вас в проекте еще изменяется LW303

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

СообщениеДобавлено: 04 дек 2021, 15:09
tangra.god
Как заставить работать планировщик нормально? =)
Работает только если активировать его после выставления всех значений, если в процессе поменять время начала или останова уже не работает, нужно после смены уставок деактивировать его и активировать снова.

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

СообщениеДобавлено: 04 дек 2021, 19:09
Voldemus
Добрый день.

Случайно закрыл Дерево окон и Окно предпросмотра. Как восстановить ?