Динамические комментарии easybuilder pro

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

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

Динамические комментарии easybuilder pro

Сообщение Konstantin88 » 29 фев 2016, 17:33

Здравствуйте, коллеги.

Возможна ли реализация динамических комментариев в Журнале сигналов/событий easybuilder pro.

Задача следующая.
Панель устанавливает флаг на запрос.
Из ПЛК в панель передается пакет, состоящий из 0 - 20 событий, содержащий некий ID каждого события (от 1 до 300) вместе с его меткой времени ПЛК в формате UTC.
Панель снимает флаг на запрос, записывает полученные данные в журнал и устанавливает флаг на запрос следующей посылки.

С выводом в журнал времени мы благо разобрались, спасибо вот этому человеку https://github.com/ViacheslavMezentsev/ ... %D1%8F.ebm

Далее идут комментарии. Каждому ID соответствует свой комментарий. Т.е. мы имеем некий массив, состоящий из ID события типа INT + комментарий типа String. Никогда не работали с панелями Wientek. Не могли бы вы помочь в написании макроса?

В данный момент параметр Massage в журнале сигналов/событий easybuilder pro настроен следующим образом:
СОБЫТИЕ - %(WATCH8)s Время - %(WATCH1)d:%(WATCH2)d:%(WATCH3)d %(WATCH4)d:%(WATCH5)d:%(WATCH6)d.%(WATCH7)d

Но вот к чему вязать этот %(WATCH8)s? Может кто-нибудь сталкивался с подобной проблемой.

p.s. ПЛК не умеет передавать string.
p.s.s. В Easy Builder вообще поддерживаются многомерные массивы?
Konstantin88
 
Сообщения: 2
Зарегистрирован: 29 фев 2016, 15:59

Re: Динамические комментарии easybuilder pro

Сообщение den_po » 01 мар 2016, 13:06

Я бы предложил создать отдельные события на каждый из 300 ID.
Многомерных массивов нет.
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Re: Динамические комментарии easybuilder pro

Сообщение Konstantin88 » 01 мар 2016, 15:44

den_po писал(а):Я бы предложил создать отдельные события на каждый из 300 ID.
Многомерных массивов нет.


К этому варианту мы в итоге и пришли сегодня утром...Но тогда возникает вопрос: Как развести события, если в одном пакете придёт ПРИШЛО-УШЛО-ПРИШЛО?

На пример, если выключатель включится, отключился, а потом опять включился...Т.е. в посылке будет массив 1,2,1...Нужно как-то сбрасывать...Но такой код не работает...Журнал не заполняется, хотя триггер установлен на "Local HMI", LW, 150 <> 0

if event[0] <> 0 then
if event[0] == 1 then
id_flag[0] = 1
SetData(id_flag[0], "Local HMI", LW, 150, 1)
id_flag[0] = 0
SetData(id_flag[0], "Local HMI", LW, 150, 1)
end if
end if

p.s. 1 - это индекс события ПРИШЛО, 2 - это индекс события УШЛО
Konstantin88
 
Сообщения: 2
Зарегистрирован: 29 фев 2016, 15:59

Re: Динамические комментарии easybuilder pro

Сообщение den_po » 02 мар 2016, 16:11

Не надо ничего сбрасывать, просто если заполняете несколько событий из макроса пачкой, стоит после SetData добавлять задержку (DELAY).
den_po
 
Сообщения: 436
Зарегистрирован: 04 фев 2013, 12:25

Re: Динамические комментарии easybuilder pro

Сообщение uni » 03 мар 2016, 22:20

По поводу %(WATCH8)s. По указанному адресу в памяти панели должна находиться ASCIIZ строка, т.е. строка с завершающим нулём в Windows кодировке (русская 1251 не понимается). Один символ занимает один байт.

Пользоваться этой возможностью нет смысла, если нужно выводить русский динамический текст. Могли бы и реализовать поддержку unicode, как в списке хотя бы.
Россия - навсегда!
http://git.io/vOZo0
uni
 
Сообщения: 57
Зарегистрирован: 14 май 2015, 14:39
Откуда: Екатеринбург


Вернуться в Weintek

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

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