Уважаемые знатоки RSView32, пожалуйста подскажите, кто знает, как решить данную проблемку:
// ЦЕЛЬ: при запущенном проекте RSView32 динамически генерировать сигналы тревоги
Чем штатные средства не устраивают?
Если будешь много работать с базой тегов (создавать, удалять, изменять теги) - получишь тормоз (смотри на процесс rtdsk40.exe в диспетчере задач).
Все дело в том, что код, который я привел, замечательно работает (и tag.DigitalTagAlarmCfg.AlarmType = roAlarmTypeOn – не требуется, т.к. уже установлено по умолчанию, да и вообще в данном случае меня не интересует тип аларма), однако генерировать тревожные сигналы (т.е. типа: tag.Value = 1; tag.Value = 0 возможно только после перезагрузки проекта, что полностью противоречит поставленной цели.
Далее, почему не стандартными средствами? Конечно в рамках какого-либо проекта, вполне сойдут и стандартные средства RSView32, однако была сделана попытка, автоматизировать процесс проектирования различных проектов. К сожалению, создается впечатление, что ПО RSView32 оставляет желать лучшего…
... да и вообще в данном случае меня не интересует тип аларма...
Тогда зачем создавать Alarm?
scout писал(а):
...однако генерировать тревожные сигналы (т.е. типа: tag.Value = 1; tag.Value = 0 возможно только после перезагрузки проекта, что полностью противоречит поставленной цели.
Непонятно к чему относится возможно.
scout писал(а):
Далее, почему не стандартными средствами? Конечно в рамках какого-либо проекта, вполне сойдут и стандартные средства RSView32, однако была сделана попытка, автоматизировать процесс проектирования различных проектов. К сожалению, создается впечатление, что ПО RSView32 оставляет желать лучшего…
Неужели каждый раз при пуске проекта идет создание базы данных тегов?
scout писал(а):
...сделана попытка, автоматизировать процесс проектирования различных проектов.
Автоматизировать можно и на VB6.
scout писал(а):
К сожалению, создается впечатление, что ПО RSView32 оставляет желать лучшего…
Используйте "современные" системы (не RS) в которых без программиста никуда.
создается впечатление, что ПО RSView32 оставляет желать лучшего…
Хотя я и не совсем представляю себе, чего именно оставляет желать RSView32, хотелось бы обратить Ваше внимание на то, что RSView32 - это довольно уже пожилой продукт, который выпускается и с успехом применяется уже более 10 лет (с модификациями, опциями и дополнениями).
Возможно, Вас больше устроил бы такой современный продукт, как FactoryTalkSE (который тоже уже несколько лет выпускается)?
Зарегистрирован: Feb 18, 2009 Сообщения: 9 Рейтинг: +0/-0
Добавлено: Пн 02 Мар, 2009 9:42:13 Заголовок сообщения:
Уважаемые знатоки RSView32, вообще-то я просил помощи у тех, кто реально может помочь, в контексте сформулированной задачи, именно для этого я выкладывал фрагмент исходника, и совсем не просил мне указывать какой продукт мне использовать. Почему?: ПО RSView32 оставляет желать лучшего…, все очень просто , если бы, тот кто, попытался понять, суть поставленной задачи, а также запустить мой фрагмент кода, то данная фраза стала бы ясней …
Добавлено: Пн 02 Мар, 2009 9:55:46 Заголовок сообщения:
scout писал(а):
... если бы, тот кто, попытался понять, суть поставленной задачи, а также запустить мой фрагмент кода, то данная фраза стала бы ясней …
Зачем запускать фрагмент кода, когда понятно и без этого.
Мне непонятно - зачем динамически создавать теги в работающем проекте (одну цель знаю, пробовал - плохо), картинки динамически не создаются.
Ранее забыл сообщить, что после создания тега с тревогой (не важно как), надо перезапустить подсистему тревог:
Код:
AlarmOff
AlarmOn
Аналогично и для новых (или измененных) Derived Tag, Event Detector, DataLog.
Зарегистрирован: Feb 18, 2009 Сообщения: 9 Рейтинг: +0/-0
Добавлено: Пн 02 Мар, 2009 11:36:56 Заголовок сообщения:
да AlarmOff/AlarmOn помогает, но только при создании тега …
// а что делать с этим?, если далее мы хотим динамически менять Description у тега, НЕ ОСТАНАВЛИВАЯ проект:
RSView32.Tag tag = tags.GetTag("temp");
tag.Description = "--- NEW TEST ---";
tag.WriteConfiguration();
// все благополучно сохранилось в базе данных тегов, новую Description тега мы можем увидеть в Tag Monitor
// однако когда мы хотим tag.Value = 1, в журнале алармов получаем старое Description?
Добавлено: Пн 02 Мар, 2009 12:20:43 Заголовок сообщения:
scout писал(а):
да AlarmOff/AlarmOn помогает, но только при создании тега …
// а что делать с этим?, если далее мы хотим динамически менять Description у тега, НЕ ОСТАНАВЛИВАЯ проект:
RSView32.Tag tag = tags.GetTag("temp");
tag.Description = "--- NEW TEST ---";
tag.WriteConfiguration();
// все благополучно сохранилось в базе данных тегов, новую Description тега мы можем увидеть в Tag Monitor
// однако когда мы хотим tag.Value = 1, в журнале алармов получаем старое Description?
Опять применить AlarmOff/AlarmOn.
Если есть большое желание делать все самостоятельно и динамически обрати внимание на команды AlarmEvent и AlarmLogRemark.
Кстати, при этом нагрузка на процессор от RTDSK40.EXE будет меньше.
Проведи экперимент: побалуйся с конфигурированием тегов, например 1000 шт. и при этом смотри в диспетчер задач.
Остаюсь в недоумении - зачем все это надо. Удаленная часть кода при "Последний раз редактировалось: scout (Чт 26 Фев, 2009 6:32:12), всего редактировалось 1 раз" ответа не давала.
Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
Добавлено: Пн 02 Мар, 2009 13:24:10 Заголовок сообщения:
2 scout
Хм...
Обычно все тэги создаются не на ходу, во время работы аппликации, а на этапе создания проекта. Просто не представляю, почему бы не создать все тэги вместе с их описаниями и алармами на этапе проектирования аппликации. Какой в этом великий смысл? Возможно, если Вы рассказали бы нам, зачем это Вам нужно, мы смогли бы Вам посоветовать что-нибудь более эффективное?
Не покидает ощущение, что Ваша конечная цель может быть достигнута несколько иными средствами
Зарегистрирован: Feb 18, 2009 Сообщения: 9 Рейтинг: +0/-0
Добавлено: Вт 03 Мар, 2009 10:43:57 Заголовок сообщения:
Уважаемые знатоки, постараюсь Вам объяснить, причины моих изысканий…
Разумеется, можно создать все тэги вместе с их описаниями и алармами на этапе проектирования, здесь бессмысленно спорить, НО вопрос можно задать и по-другому, ведь ПО RSView32 не дешевый коммерческий продукт (в своем составе имеет интегрированный VBA), и как было очень верно отмечено выше, уже давно присутствует на рынке…, и чуть ли не в каждом рекламном буклете разработчики заявляют об ОБЪЕКТНой МОДЕЛи RSView32 (Object Model), а в официальном руководстве, ей посвящены целые главы. Так какая ее практическая ценность? …, если на форумах мне говорят? – это “нештатные” средства, или это “нестандартные” методы, или обычно так с RSView32 не работают … - что это?, какие “штаты, стандарты, обычаи?” – в чем тут дело? А может все гораздо проще и, на мой взгляд, RSView32 Object Model недоработана, неверно документирована и ведет себя непредсказуемо. Поэтому я прошу Вас, пожалуйста, помогите мне изменить мнение о ней …, ведь я не могу понять, как она работает, на простом примере, и прошу Вас уважаемые знатоки RSView32 помочь мне. Вот элементарный пример:
//1.В RSView32 создал тег "temp" с Description = “TEST” и с сигналом тревоги.
//2.Создал процедуру, (к примеру наVBA), смысл которой:
RSView32.Tag tag = tags.GetTag("temp");
tag.Description = "??? NEW TEST ???";
tag.WriteConfiguration();
//3.Использую рекомендации форума, смысл которых:
Command.Execute("AlarmOff", RSView32.WaitConstants.roWait);
Command.Execute("AlarmOn", RSView32.WaitConstants.roWait);
//4.Запустил проект, запустил тестовую процедуру (пусть на VBA), смысл которой описан на шаге 2,3
//5.Все удачно сохранилось в базе данных тегов, новую Description = "??? NEW TEST ???" тега мы можем увидеть в Tag Monitor
//6.Убеждаюсь, что рекомендации НЕ РАБОТАЮТ, поскольку, когда мы хотим tag.Value = 1, в журнале тревог получаем старое Description = “TEST”
Так, где здесь здравый смысл? ... когда RSView32 Tag Monitor (как заявлено самим производителем, спец.инструмент для оперативного наблюдением за тегом), показывает нам одно значение Description = "??? NEW TEST ???", а в журнал тревог (который можно просмотреть с помощью др. спец.инструмента RSView32 Alarm Log Viewer), пишутся совершенно другие данные ТОГОЖЕ САМОГО ТЕГА, в нашем случае Description = “TEST”. ЭТО ведь АБСУРТ какой-то!
Надеюсь, что Ваши ответы более не будут выпадать из темы (а именно “VBA RSView32”), заранее Вам благодарен.
Добавлено: Вт 03 Мар, 2009 14:05:46 Заголовок сообщения:
VBA нужен для расширить возможности, когда не хватает штатных средств.
Может заменить штатные, только зачем?
EventDetector, DerivedTag - в работе до 20 шт. и до 1000 строк в каждом.
Сколько сценариев VBA можно запустить?
"В очередь, в очередь сучьи дети" (с) Шариков.
При этом есть механизм доступа в базу тегов.
Плохо это или хорошо, думаю что хорошо, т.к. пользовался при разработке для узких однократных целей с большим количеством тегов (например: проверить Node, изменить Min, Max...).
Злоупотреблять этим при работе не стоит, т.к. тормозит.
А, что будет, если все грохнется в момент работы с базой тегов?
Цель до сих пор не понятна.
Может надо иметь AlarmedTag больше ограничения?
Непохоже, т.к. тогда зачем менять Description.
Обойти ограничения… Какие не приведу, чтобы не иметь обвинений в нарушении.
Если кого обидел – приношу извинения, и в дальнейшей перепалке не участвую.
Зарегистрирован: May 14, 2005 Сообщения: 290 Рейтинг: +9/-0 Откуда: г.Самара
Добавлено: Вт 03 Мар, 2009 18:06:46 Заголовок сообщения:
Привет всем!
Несколько раз прочитал тему, так и не понял в чем засада. Время было - проверил в Runtime:
1. С помощью VBA создал тэг типа Digital. Изменил св-ва по умолчанию. Сделал его Alarm. Перезапустил AlarmMonitor.
2. Проверил с помощью TagMonitor - все в порядке. С помощью VBA изменил Value.
3. С помощью VBA изменил Description. Перезапустил AlarmMonitor.
4. Проверил с помощью TagMonitor - Description изменился.
5. С помощью VBA изменил Value.
6. Проверил с помощью TagMonitor - Value изменился, цвет строки указал, что тег в состоянии Alarm.
7. Вышел в Desinger и посмотрел AlarmLogViewer - все записи в том виде, как сконфигурированы в проекте. Description отображаются в порядке их изменения.
Хотя хотелось бы узнать хоть одну причину необходимости делать это в VBA.
PS: Так Вы кошек не любите? Просто Вы их готовить не умеете!!!
Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
Добавлено: Вт 03 Мар, 2009 21:53:42 Заголовок сообщения:
scout писал(а):
если на форумах мне говорят? – это “нештатные” средства или это “нестандартные” методы
Будьте добры, приведите цитату, пожалуйста, где написано, что VBA - это нештатные средства или нестандартные методы.
scout писал(а):
, или обычно так с RSView32 не работают … - что это?, какие “штаты, стандарты, обычаи?” – в чем тут дело?
Какие "обычаи"? Вот Вам тут, собственно, как раз и показали, какие.
Цитата:
А может все гораздо проще и, на мой взгляд, RSView32 Object Model недоработана, неверно документирована и ведет себя непредсказуемо.
Это всего лишь Ваше индивидуальное предположение. Object Model доработана, существует, работает, документирована. Она продана уже в тысчах тысяч копий, получила множество наград, и не в последней степени благодаря своей функциональности и встроенному VBA в том числе.
Другое дело, если Вы пока не вполне понимаете мехнаизмы её работы, это ничего, опыт - дело наживное. Уважаемый коллега DIMIOKS только что показал Вам, как, в частности, из VBA динамически меняется Description.
Зарегистрирован: Feb 18, 2009 Сообщения: 9 Рейтинг: +0/-0
Добавлено: Ср 04 Мар, 2009 10:46:49 Заголовок сообщения:
Уважаемые знатоки RSView32, прошу Вас не делать из форума SHOW, а руководствоваться фактами.
К примеру, мои утверждения основаны на фактах, что это значит? это значит что любому, пожелавшему проверить мои утверждения я готов предоставить тестовый проект. Проект выполнен в RSView32 v7.50 состоит из экрана, на котором 3 кнопки, а также элемент Alarm Summary, (К СОЖЕЛЕНИЮ, в пред. моем сообщении я опечатался, и вместо Alarm Log Viewer я имел ввиду Alarm Summary) и если запустить проект, то нажимая эти кнопки можно легко убедиться в правоте моих утверждений, поскольку в элементе Alarm Summary не меняется Description.
В проекте создан всего лишь один тег с тревогой: test
привязка для кнопки №1: VbaExec test "TEST #1"; test = 1; test = 0
привязка для кнопки №2: VbaExec test "TEST #2"; test = 1; test = 0
привязка для кнопки №3: VbaExec test "TEST #3"; test = 1; test = 0
процедура VBA:
Sub test(ByVal Descripotion As String)
Dim t As RSView32.Tag
Set t = gTagDb.GetTag("test")
t.Description = Descripotion
t.WriteConfiguration
gCommand.Execute "AlarmOff"
gCommand.Execute "AlarmOn"
End Sub
Теперь, на счет КОШЕК, я конечно признателен Вам, что Вы уделили время, и реально попытались проверить мою проблему, ОДНАКО не будем торопиться с “долгоиграющими” выводами, пожалуйста, посмотрите мой проект (готов выслать на любой e-Mail), ведь, как я отмечал Выше, для моей задачи ВАЖНО не перезапускать проект! и возможно тогда, ВЫ сможете мне пояснить, как все-таки этих КОШЕК готовить? (и только в этом случаи, я буду Вам очень признателен), а просто утверждать … ну, это неубедительно.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
Smart Solutions VDT GmbH | Friedrich-List-Allee 38, D-41844 Wegberg-Wildenrath, Germany Tel.: +49 2432 933 57 83 | e-Mail: office@vdt-solutions.de Все товарные знаки и торговые марки являются собственностью их владельцев.
При использовании материалов сайта ссылка на данный сайт обязательна. Открытие страницы: 0.141 секунды