Страница 1 из 1

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

СообщениеДобавлено: 29 фев 2016, 17:33
Konstantin88
Здравствуйте, коллеги.

Возможна ли реализация динамических комментариев в Журнале сигналов/событий 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 вообще поддерживаются многомерные массивы?

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

СообщениеДобавлено: 01 мар 2016, 13:06
den_po
Я бы предложил создать отдельные события на каждый из 300 ID.
Многомерных массивов нет.

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

СообщениеДобавлено: 01 мар 2016, 15:44
Konstantin88
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 - это индекс события УШЛО

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

СообщениеДобавлено: 02 мар 2016, 16:11
den_po
Не надо ничего сбрасывать, просто если заполняете несколько событий из макроса пачкой, стоит после SetData добавлять задержку (DELAY).

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

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

Пользоваться этой возможностью нет смысла, если нужно выводить русский динамический текст. Могли бы и реализовать поддержку unicode, как в списке хотя бы.