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

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

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

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

Сообщение 8bit » 25 авг 2021, 18:29

tangra.god писал(а):Доброго времени суток!
Панель является мастером в сети Modbus RTU, необходимо принять переменную в 6х_Bit с одного слейв устройства и записать в 6x_Bit во второе слейв устройство, как это можно реализовать?
Заранее благодарю!


Согласно встроенной справки Weintek
6x - A read and write device type. When reading data, the function code is 03H. The difference from 4x is that when writing data, the function code is 06H, meaning to write a single register.


Т.е. в чтении это 03H, отличие от от только в записи. Почему вы выбрали для чтения именно 6x_bit ?

Попробуйте циклически выполняющийся макрос следующего содержания:

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

bool bit_0

GetData(bit_0, "MODBUS RTU 1", 6x_Bit, 1201, 1)
SetData(bit_0, "MODBUS RTU 2", 6x_Bit, 2302, 1)


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

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

Сообщение tangra.god » 25 авг 2021, 18:59

8bit писал(а):Согласно встроенной справки Weintek
6x - A read and write device type. When reading data, the function code is 03H. The difference from 4x is that when writing data, the function code is 06H, meaning to write a single register.


Т.е. в чтении это 03H, отличие от от только в записи. Почему вы выбрали для чтения именно 6x_bit ?

Попробуйте циклически выполняющийся макрос следующего содержания:

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

bool bit_0

GetData(bit_0, "MODBUS RTU 1", 6x_Bit, 1201, 1)
SetData(bit_0, "MODBUS RTU 2", 6x_Bit, 2302, 1)



Благодарю за помощь, макросы пока для меня непонятны =)
Сделал через журнал событий, создал событие, в неиспользуемой категории 255, по переменной 3x_Bit Slave1, в событии включил "уведомления" и указал адрес записи 4x_Bit Slave2 с активацией галочки "Выпонить (в положение Выключено, когда событие восстановлено)"
tangra.god
 
Сообщения: 33
Зарегистрирован: 10 июн 2021, 11:45

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

Сообщение tangra.god » 25 авг 2021, 21:03

8bit писал(а):
Согласно встроенной справки Weintek
6x - A read and write device type. When reading data, the function code is 03H. The difference from 4x is that when writing data, the function code is 06H, meaning to write a single register.


Т.е. в чтении это 03H, отличие от от только в записи. Почему вы выбрали для чтения именно 6x_bit ?

6x_bit выбрал потому что, если читать , а писать в , то офлайн симуляторе индикация уже не работает
tangra.god
 
Сообщения: 33
Зарегистрирован: 10 июн 2021, 11:45

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

Сообщение tangra.god » 26 авг 2021, 00:59

8bit писал(а):Почему вы выбрали для чтения именно 6x_bit ?

В описании к частотнику написано, что успользуются функции 03 и 06
tangra.god
 
Сообщения: 33
Зарегистрирован: 10 июн 2021, 11:45

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

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

tangra.god писал(а):Благодарю за помощь, макросы пока для меня непонятны =)


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

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

Сообщение evgeni85 » 26 авг 2021, 17:35

Здравствуйте. Нужно в макросе найти максимальное значение из массива. Сделал макрос, но почему то в качесве максимального он выдает первое значение.

Код: Выделить всё
sel_l=1+(sel_eqv-1)*100
SetData(sel_l, "Local HMI", LW, 30, 1)
sel_l_end=sel_l+99
i=1
max_lenght=0
SetData(max_lenght, "Local HMI", LW, 34, 1)

while sel_l<sel_l_end
temp_eqv[i]=lenght[sel_l]
GetData(max_lenght, "Local HMI", LW, 34, 1)
   if (max_lenght<temp_eqv[i]) then
   max_lenght=temp_eqv[i]
   SetData(max_lenght, "Local HMI", LW, 34, 1)
   end if
i=i+1
sel_l=sel_l+1
wend

SetData(temp_eqv[1], "Local HMI", LW, 100, 100)
evgeni85
 
Сообщения: 31
Зарегистрирован: 21 сен 2020, 12:13

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

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

evgeni85 писал(а):Здравствуйте. Нужно в макросе найти максимальное значение из массива.


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

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

Сообщение evgeni85 » 26 авг 2021, 17:56

8bit писал(а):
evgeni85 писал(а):Здравствуйте. Нужно в макросе найти максимальное значение из массива.


используйте встроенную функцию MAX из раздела Статистика

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

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

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

evgeni85 писал(а):
8bit писал(а):
evgeni85 писал(а):Здравствуйте. Нужно в макросе найти максимальное значение из массива.


используйте встроенную функцию MAX из раздела Статистика

Все тоже самое


а функция 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) // выводим результат

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

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

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

Доброго дня. Помогите пожалуйста. Есть 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
Serg290
 
Сообщения: 66
Зарегистрирован: 18 окт 2020, 17:17

Пред.След.

Вернуться в Weintek

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

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