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

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

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

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

Сообщение 8bit » 27 авг 2021, 17:36

Serg290 писал(а):Доброго дня. Помогите пожалуйста. Есть 3 переменные.
1- Давление на входе
2- Давление на выходе
3- Разница 1-2
Помогите макросом, пожалуйста. Постоянно переменные сбрасываются на 0.

macro_command main()
float X
float Y
float W
GetData(X, "Local HMI", LW, 1031, 1)
GetData(Y, "Local HMI", LW, 1032, 1)
W=X-Y
SetData(W, "Local HMI", LW, 1033, 1)
end macro_command


Посмотрите, пожалуйста, тут размерность типа float, а LW регистры - 16-битные (вы можете самостоятельно это проверить взяв два поля ввода/вывод и привязать к ним два идущих подряд регистра, указав формат данных как 16-битные в HEX виде и третье поле ввода/вывода, привязав его к адресу первого регистра, но формат данных выберите любой 32-битный и посмотреть , что получится при ввода разных чиселв третье поле ввода/вывода).
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1134
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение Serg290 » 27 авг 2021, 19:31

Так и что делать? Создать переменную 32 бит типа FLOAT (пользовательскую метку) и писать в нее?
Serg290
 
Сообщения: 66
Зарегистрирован: 18 окт 2020, 17:17

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

Сообщение ArtemPM » 28 авг 2021, 10:41

Serg290 писал(а):Доброго дня. Помогите пожалуйста. Есть 3 переменные.
1- Давление на входе
2- Давление на выходе
3- Разница 1-2
Помогите макросом, пожалуйста. Постоянно переменные сбрасываются на 0.

macro_command main()
float X
float Y
float W
GetData(X, "Local HMI", LW, 1031, 1)
GetData(Y, "Local HMI", LW, 1032, 1)
W=X-Y
SetData(W, "Local HMI", LW, 1033, 1)
end macro_command

Вы не правильно берете размерности переменных. Так как Float это 32-битная переменная, то она занимает сразу два регистра. У вас должно быть: X = LW1031, Y=LW1033, W=LW1035
ArtemPM
 
Сообщения: 197
Зарегистрирован: 14 апр 2021, 05:16

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

Сообщение w1nn1ep00h » 28 авг 2021, 15:17

Добрый день.
Первый проект с Weintek и EBPro.
1)В журнале сигналов/событий для каждого события можно выставлять свой фон, который отображается только в реальном времени, при возникновении события. Можно ли , чтобы данный фон оставался для данного сообщения?
Просто у меня разбиты события по категориям и у каждой категории свой фон. Но при квитировании или возвращении в нормальное состояние, цвет сбрасывается на предустановленный для дисплея событий. Не говоря уже про архив.
Т.е. для каждой категории событий, мне нужен свой фон в журналах(реального времени и архиве), такое возможно?
2) Можно ли делать выборку в трендах и событиях, не только по дате, но и по времени?
w1nn1ep00h
 
Сообщения: 40
Зарегистрирован: 25 авг 2021, 01:14

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

Сообщение w1nn1ep00h » 28 авг 2021, 22:34

Также забыл спросить. Я правильно понимаю, что нельзя в одном графике тренда указать величины из двух разных выборок данных? Для каждой выборки отдельный тренд?
w1nn1ep00h
 
Сообщения: 40
Зарегистрирован: 25 авг 2021, 01:14

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

Сообщение Serg290 » 29 авг 2021, 17:38

ArtemPM писал(а): [quote/] Вы не правильно берете размерности переменных. Так как Float это 32-битная переменная, то она занимает сразу два регистра. У вас должно быть: X = LW1031, Y=LW1033, W=LW1035

Спасибо, въехал!!! Работает!
Serg290
 
Сообщения: 66
Зарегистрирован: 18 окт 2020, 17:17

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

Сообщение evgeni85 » 30 авг 2021, 08:03

8bit писал(а):
evgeni85 писал(а):[quote="8bit"

а функция MIN() у вас корректно работает ? Подобный вопрос, но про функцию MIN() уже был - проверяли - все работает согласно документации.

в какой версии EasyBuilder Pro у вас не работает функция MAX() ?

Вот такой код прекрасно работает (EB 6.06.01.322):

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

short arr_int[5]
short result

GetData(arr_int[0], "Local HMI", LW, 0, 5) // считываем значения регистров в массив

MAX(arr_int[0], result, 5) // получаем максимальную величину

SetData(result, "Local HMI", LW, 100, 1) // выводим результат


Попробовал на симуляторах на разных ПК. На одном работает, на другом не работает. Почем так?
evgeni85
 
Сообщения: 31
Зарегистрирован: 21 сен 2020, 12:13

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

Сообщение 8bit » 30 авг 2021, 12:20

w1nn1ep00h писал(а):1)В журнале сигналов/событий для каждого события можно выставлять свой фон, который отображается только в реальном времени, при возникновении события. Можно ли , чтобы данный фон оставался для данного сообщения?
Просто у меня разбиты события по категориям и у каждой категории свой фон. Но при квитировании или возвращении в нормальное состояние, цвет сбрасывается на предустановленный для дисплея событий. Не говоря уже про архив.
Т.е. для каждой категории событий, мне нужен свой фон в журналах(реального времени и архиве), такое возможно?


Цвет текста и фона для состояний "Подтверждение" и "Возврат к нормали" задается в настройках объекта "Отображение событий".
Можете сделать несколько объектов "Отображение событий" под разные категории с соответствующими настройками цветов для состояний "Подтверждение" и "Возврат к нормали"

В документации так и сказано "Все эти настройки не работают для [Отображение событий] в режиме Журнала."

w1nn1ep00h писал(а):2) Можно ли делать выборку в трендах и событиях, не только по дате, но и по времени?

По времени как "с 22.43 по 23.58" нет, но вообще фильтровать/листать можно не по дате, а по файлам, см. главу 13.17. Trend Display (где про Trend type на странице 296) . Вы можете настроить создание Файлов каждый час и тогда в объекте "Список опций" будут видны файлы архива трендов с периодом час... возможно это вам подойдет...
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1134
Зарегистрирован: 20 апр 2020, 19:07

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

Сообщение evgeni85 » 30 авг 2021, 12:51

Код: Выделить всё
int temp_max[5]
int m_l
GetData(temp_max[0],"Local HMI", LW, 0, 5)
MAX(temp_max[0], m_l, 100)
SetData(m_l, "Local HMI", LW, 13, 1)

вот такой макрос не работает на симуляторе
evgeni85
 
Сообщения: 31
Зарегистрирован: 21 сен 2020, 12:13

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

Сообщение evgeni85 » 30 авг 2021, 13:31

evgeni85 писал(а):
Код: Выделить всё
int temp_max[5]
int m_l
GetData(temp_max[0],"Local HMI", LW, 0, 5)
MAX(temp_max[0], m_l, 100)
SetData(m_l, "Local HMI", LW, 13, 1)

вот такой макрос не работает на симуляторе

с этим разобрался
evgeni85
 
Сообщения: 31
Зарегистрирован: 21 сен 2020, 12:13

Пред.След.

Вернуться в Weintek

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

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