SIEMENS, DF&PD

Предыдущее посещение: Ср июл 06, 2016 5:09 Текущее время: Ср июл 06, 2016 5:09

Часовой пояс: UTC + 3 часа




 [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Сообщения об авариях во всплывающем тексте
СообщениеДобавлено: Чт июл 18, 2013 10:10 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 02, 2010 12:40
Сообщения: 135
У заказчика на предыдущей визухе была возможность при наведении курсора мыши на какой-то механизм видеть диагностические и аварийные сообщения по нему и теперь он очень просит тоже самое реализовать на WinCC.
Всплывающий текст у ВинСС как я понимаю возможно реализовать только в свойстве объекта TooltipText. Конечно плохо что все сообщения будут писаться в одну строчку и будут статичными, но думаю они бы это пережили.
Сам себе представляю что на TooltipText надо повесить скрипт. который будет опрашивать теги аварий и добавлять соответствующий текст в TooltipText. Не совсем тут понимаю как по умному реализовать вставку разделителя между сообщениями.
И главное, добавлять - это еще понятно, но вот как убрать из общего текста сообщение, которое уже не актуально?

з.ы. Рад буду любому совету касающемуся этого вопроса. Возможно кто-то посоветует другую реализацию.

з.ы.ы. насчет сообщение в 1 строчку был не прав. vbCrLf позволяет сделать нормально. Еще бы цвет тексту задать в зависимости от того авария или просто диагностическое сообщение, но это уже наверно мечты.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 18, 2013 13:33 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 02, 2010 12:40
Сообщения: 135
Решил что скрипт в самом элементе на TooltipText будет не очень, так как циклический получается.
Ну я создал в VBS Action новый экшн ToolTipText со следующим содержанием:

Option Explicit
Function action

Dim WinName
WinName = "@screen.@win12:@1001.@Desk:Trends.PicturePen:CHOSETrend.PW1:Electrica"
HMIRuntime.Screens(WinName).ScreenItems("Rectangle1").ToolTipText = ""

If HMIRuntime.Tags("Alarm_1").Read=1 Then
HMIRuntime.Screens(WinName).ScreenItems("Rectangle1").ToolTipText = "Авария 1"
Else
End If

If HMIRuntime.Tags("Alarm_2").Read=1 Then
If HMIRuntime.Screens(WinName).ScreenItems("Rectangle1").ToolTipText="" Then
HMIRuntime.Screens(WinName).ScreenItems("Rectangle1").ToolTipText = "Авария 2"
Else
HMIRuntime.Screens(WinName).ScreenItems("Rectangle1").ToolTipText = HMIRuntime.Screens(WinName).ScreenItems("Rectangle1").ToolTipText & vbCrLf & "Авария 2"
End If
Else
End If

If HMIRuntime.Tags("Diagnos").Read=1 Then
If HMIRuntime.Screens(WinName).ScreenItems("Rectangle1").ToolTipText="" Then
HMIRuntime.Screens(WinName).ScreenItems("Rectangle1").ToolTipText = "Диагностика"
Else
HMIRuntime.Screens(WinName).ScreenItems("Rectangle1").ToolTipText = HMIRuntime.Screens(WinName).ScreenItems("Rectangle1").ToolTipText & vbCrLf & "Диагностика"
End If
Else
End If

End Function


Эти 3 тега внутренние для теста. Взводятся кнопками.

Вроде все правильно, но при этом не работает. Триггер вешал и на тег по изменению (это в принципе и нужно) и циклический, но ничего не работает.
При этом если этот скрипт добавить скажем в Event дополнительной кнопки на экране с элементом, TooltipText которого мы меняем, тоесть запускать по нажатию на нее, то все работает нормально.
Что я делаю не так? Почему не работают Global Script?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 18, 2013 14:00 
Не в сети
Известный Писатель

Зарегистрирован: Ср фев 16, 2011 14:23
Сообщения: 434
Откуда: Санкт-Петербург, Москва
Забудьте про бейсик - для такой задачи это гребаная какашня.

Никаких циклических скриптов - на тултип объекта вешаете сишный скрипт, возвращающий в тултип текст аларма по изменению любого из алармов, связанных с данным объектом.


Второй вариант, куда хуже - делаете глобальный скрипт, записывающий тултип в объект. Но это криво и тормозно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт июл 18, 2013 14:54 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 02, 2010 12:40
Сообщения: 135
У меня и с VBS то проблемы, а на С я вообще такие запросы не знаю как писать.
Можете дать пример как возвращается текст аларма по его изменению?


Про второй вариант это вы обсуждаете то что я писал во втором посту? Так у меня и не работает он вообще в отличие от скрипта на самом тултипе. Просто меня сама WinCC предупредила, что обилие таких скриптов на экране грузит систему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 19, 2013 15:18 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 02, 2010 12:40
Сообщения: 135
Проблема актуальна..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 19, 2013 16:36 
Не в сети
Известный Писатель

Зарегистрирован: Пн янв 24, 2011 19:45
Сообщения: 167
Откуда: Ukraine, Zp
У меня было оборудование(кондиционеры), которое имело только веб интерфейс и в нем писало свой статус, температуру и тд. В частности были как текстовые теги (Unit Status On/Off, Cooling Status On/Off) так и числовые (Температура, влажность).
Каждый кондиционер представлял собой квадратик на мнемосхеме. В зависимости от статуса работы(Работает, Выключен, Авария) менялся Backgroud color квадрата(зеленый,серый,красный). Ну и если статус авария - сделал чтобы включалась звуковая сигнализация.
В tooltip text повесил скрипт:
Код:
'скрипт формирует tooltip text для модуля
'Триггер скрипта - все тэги для устройства
'prefix - "префикс" для тегов
'param - массив для формирования тегов
'description - массив с описанием
'item.ToolTipText - шапка tooltip`a
Dim prefix, param, description,i

prefix = "19216811_"
param = Array ("Unit_status", "Return_Air_Temperature_1", "Return_Air_Humidity", _
"Fan_Status", "Cooling_Status", "Humidity")
description = Array ("Состояние устройства", "Температура входящего воздуха, °C", _
"Влажность выходящего воздуха, %", "Состояние вентилятора", "Состояние охлаждения", "Состояние увлажнения")
item.ToolTipText = ("IP - 192.168.1.1")

item.ToolTipText = item.ToolTipText & vbCrLf & description(0) & " - " & HMIRuntime.Tags(prefix&param(0)).Read 
item.ToolTipText = item.ToolTipText & vbCrLf & description(1) & " - " & HMIRuntime.Tags(prefix&param(1)).Read & _
" (" & HMIRuntime.Tags(prefix&param(1)&"_min").Read &" - "  & HMIRuntime.Tags(prefix&param(1)&"_max").Read &" C°)"
For i = 3 To 6
item.ToolTipText = item.ToolTipText & vbCrLf & description(i-1) & " - " & HMIRuntime.Tags(prefix&param(i-1)).Read 
Next


Поэтому когда квадрат зеленый - всё окей, аварий нет.
Когда прямоугольник красный, еще и сигнализация включилась - наводим мышкой на квадрат и смотрим статус
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 19, 2013 16:53 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 02, 2010 12:40
Сообщения: 135
Я в принципе первый раз и сделал подобно вашему способу. Только так как у меня нет текстовых тегов с готовыми сообщениями, а только битовые, то и использую условия и пишу текст сам.
Но как я уже сказал выше WinCC предупреждает что подобная реализация может плохо сказаться на производительности, если подобных механизмов будет на мнемосхеме много.
А когда я стал пытаться переносить скрипт с Tooltiptext в GlobalScript и запускать его по изменению любого из тегов, которые в нем и опрашиваются, то работать в таком виде он не хочет.
А вон Alexey_Spb_82 вообще считает что надо использовать С.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 19, 2013 16:56 
Не в сети
Известный Писатель

Зарегистрирован: Пн янв 24, 2011 19:45
Сообщения: 167
Откуда: Ukraine, Zp
Так а в чем проблема использовать скрипт в свойстве Tooltip text с триггером по изменению тега/тегов?
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 19, 2013 17:08 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 02, 2010 12:40
Сообщения: 135
О, спасибо. Я как то упустил момент что тут тоже можно устанавливать тригер. Я думаю такого варианта заказчику вполне хватит.

Тем не менее было бы интересно узнать способ возврата текста измененного аларма для повышения уровня знаний.
Все таки я думаю такой запрос мог быть более универсальным нежели прописывать каждое сообщение вручную.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group