Вход на форум 
В начало e-Mail

Форум

Ресурсы Rockwell

Product Directory

Essential Components

Literature Library

Knowledge Base

Electronic News&Magazines

Блог

Encompass Program

Product Certification

  


Предыдущие результаты



Предыдущие результаты



Предыдущие результаты

 Здравствуйте, ув. спецы и простые смертные. :) Проблема следующая. Имеем RSview32 7.20, WinXP sp2. В проекте используются процедуры VBA и некоторые запускаются периодически (раз в 2 минуты) и выполняются по времени 2-3 секунды. Столкнулся с тем, что если при запущенном в runtime проекте нажать на клавиатуре ESC, вываливается сообщение [b:c22c47bb1d]VBA code has been halted. Reason: User interrupt [/b:c22c47bb1d] и кнопки Continue, End, Debug, Help. При нажимании на Continue выполнение VBA продолжается без никаких проблем. Debug высвечивает текущую позицию в коде, где он был прерван. Help говорит, что при нажимании на Ctrl+Break (Windows) и Esc (в Excel) действует как брейкпоинт для VBA. Но я то нажимаю ESC, а не Ctrl+Break, и не в Excel, а в RSView на любой картинке в рантайме, или даже в блокноте (notepad) при свернутом RSView! :evil: Кто сталкивался и как с этой заразой бороться, плз

 

А вы всё работаете? :D


 [quote:142c418a29="FilmFilmFillm"]...Да и красивее будет когда кнопки обрабатываются(будет значит защита от дурака). можно примерчиком кинуть в меня?[/quote:142c418a29] В RSView32 есть функция [b:142c418a29]currentuserhascode( )[/b:142c418a29], результат которой применяй к кнопке, например на видимость или невидимость. Нет кнопки - нет проблемы.

 [quote:58f1e16c2f]иначе, у мну заходит по пользователем default.[/quote:58f1e16c2f] Ну и что? оставьте пользователю с именем default только те права, на которые он должен иметь право. Если хотите - можете написать после входа на стартовом экране, что "Вы зашли как пользователь по умолчанию (default) и имеет право только на то-то и то-то". Пример - если будет побольше времени, то напишу.

 [quote:5f4adaba2a="oldDad"] А зачем обрабатывать кнопки?[/quote:5f4adaba2a] потому что иначе, у мну заходит по пользователем default. Да и красивее будет когда кнопки обрабатываются(будет значит защита от дурака). можно примерчиком кинуть в меня?

 В процессоре есть теги (может поможет) @Mode @ProcessorName @Revision и т.д. Но каждый ест при передаче по одному конекшену. А вообще правилом хорошего тона считается днлать экран состояния КТС, на котором отображается исправность каждого составляющего вашей системы. Тогда версии сравнивать не нужно - сразу видно где косяк.

 Используется RSView32 7.20. На объекте работают 3 равноправные операторские станции, связь по Ethernet. Проект на всех станциях работает один и тот же, только конфигурация Nod'ов в зависимости от конкретной станции меняется. А Нодов сконфигуривано везде 6: 3 Нода для каждой станции - (RSview OPC Tag Server, remote) и еще три нода для OPC-сервера собственного производства, который на каждой станции связывается с определенными девайсами, тоже remote. Потом на каждой станции (локальной) убирается галочка с Enable в Нодах для RSview OPC Tag Server и OPC-сервер для девайсов делается не remote, а local. По рсвьюшному OPC передаются некоторые внутренние теги (memory), ну а по второму - теги с девайсов. Проблема в том, что если на какой-то станции перезапускается RSView, или мой OPC-сервер, то на остальных станциях ее данные не подхватываются, они как бы "замораживаюся", (на экранах показыватся последнее значение, которое было до перезапуска). Я посмотрел в Tag Monitor'е, в момент, когда теряется связь с одной из удаленных станций, статус ее тегов становится "Error". Поэтому решил обработать эту ситуацию так. Через скрипт VBA регистрирую событие _StatusCommErr для коллекции тегов (пары внутренних тегов с каждой станции и еще пары тегов с девайсов) и по этому событию делаю нехитрую процедуру: деактивирую и тут же активирую соответствующий Node. И все. Я проверял: если вручную убрать и поставить галку Enable в Node Editor для Node той станции, которая перезапустилась и не подхватывается - через пару секунд значения начинают нормально передаваться. Даже кнопки такие поделал на одном экране с командами "NodeDisable Node1; NodeEnable Node1" как временную меру на случай потери связи. Теперь захотел сделать это в автомате через скрипт, но не выходит: при потере связи теги в Tag Monitor переходят в состояние "error", но процедура моя не активируется почему-то. Как будто не было события StatusCommErr. Текст процедуры привожу ниже: [code:1:67bf376e44] Private Sub tConn_Monitor_StatusCommErr(ByVal CommErrTags As RSView32.Tags) Dim ComErrTag As Tag For Each ComErrTag In CommErrTags If gNodes(ComErrTag.NodeName).Enabled = True Then gNodes(ComErrTag.NodeName).Enabled = False gNodes(ComErrTag.NodeName).WriteConfiguration End If gNodes(ComErrTag.NodeName).Enabled = True gNodes(ComErrTag.NodeName).WriteConfiguration Next End Sub [/code:1:67bf376e44] [i:67bf376e44]tConn_Monitor[/i:67bf376e44] - это коллекция тегов, для которых проверяется состояние связи. В макрос, который выполняется при запуске проекта, добавил строчку: [code:1:67bf376e44]VbaExec ConnMonitorInit[/code:1:67bf376e44] где ConnMonitorInit - процедура, в которой инициализируется коллекция тегов tConn_Monitor: [code:1:67bf376e44]Sub ConnMonitorInit() Dim Tgs As Variant Dim Tg As Variant Dim tTags As Tags Set tTags = New Tags Tgs = Array("NSMV1\PC_01\Ch_01", "NSMV2\PC_01\Ch_01","NSMV3\PC_01\Ch_01", _ "NSMV1\R_1", "NSMV2\R_1", "NSMV3\R_1") For Each Tg In Tgs tTags.Add gTagDb.GetTag(Tg) Next Set tConn_Monitor = tTags End Sub [/code:1:67bf376e44] Коллекция tConn_Monitor объявлена в разделе Declarations->General так: [code:1:67bf376e44]Private WithEvents tConn_Monitor As Tags[/code:1:67bf376e44] Что я делаю неправильно?

 [quote:6c65af5ab2="DIMIOKS"]Добрый вечер всем! Самый простейший способ увидеть значение тега в Exel: 1. Создаем топик 2. Открываем в Linx Edit - Copy DDE/OPC Link - указываем необходимый тег в контроллере. 3. Открываем Exel. В свободную ячейку делаем: Правка - Специальная вставка - указываем "связать" - "текст". 4.С чуством глубочайшего удовлетворения наблюдаем значение тега :D Только что проверял на Емуляторе - работает. Как сделать обратное (занести какое - либо значение в тег) таким же простым способом - еще не знаю :D :D :D[/quote:6c65af5ab2] Если бы всё так было просто: теперь попрубуй передать таким образом свойства карты( серийник, номер фирмвари...)

 Добрый вечер всем! Самый простейший способ увидеть значение тега в Exel: 1. Создаем топик 2. Открываем в Linx Edit - Copy DDE/OPC Link - указываем необходимый тег в контроллере. 3. Открываем Exel. В свободную ячейку делаем: Правка - Специальная вставка - указываем "связать" - "текст". 4.С чуством глубочайшего удовлетворения наблюдаем значение тега :D Только что проверял на Емуляторе - работает. Как сделать обратное (занести какое - либо значение в тег) таким же простым способом - еще не знаю :D :D :D

 нашел вот такую информацию, только где бы взять такой CD-ROM? RSTestStand Lite v1.00.04 is included on the RSEmulate 5000 CD-ROM может знает кто где можно скачать в нете RSTestStand Lite ? очень интересует его способности и возможность применения в учебном процессе..



Предыдущие результаты


Ещё результаты



Предыдущие результаты



Предыдущие результаты



Предыдущие результаты



Предыдущие результаты




  
RA & VDT GmbH


Облако тэгов
Fatal Error RSLogix ControlLogix sound FTView Control Logix MVI56-104S 1734-AENTR Altivar Add-on Instruction MVI46MCM Ethernet PLC-5 SLC-500 1757-SRM Firmware ComactLogixL32E 1756-L75 1756-RM2 Controlnet cable Promass Client Memory 1769-L32E execution minutes seconds Windows Build 00000d5c Unspecified terminate geehrter automatisch keine globale

Яндекс цитирования

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.121 секунды