Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


ОРС DA-сервер в среде MS Excel



Microsoft Excel является хорошей средой для разработки несложных систем автоматизации благодаря тому, что он содержит удобный пользовательский интерфейс для обработки данных, построения графиков, вставки рисунков, выполнения анимации и т.п. Он содержит также встроенные элементы управления (раскрывающиеся списки, «радиокнопки», «чек-боксы» и т.п.).

Excel позволяет сделать специализированный пользовательский интерфейс, не уступающий по дизайну профессиональным SCADA-пакетам. Особенно удобным является простое сохранение выполненной работы в файл.

Недостатком MS Excel является низкое быстродействие при записи данных в ячейки таблицы и отсутствие в VBA возможности выполнения задач в нескольких параллельных потоках. VBA включает в себя Visual Basic и дополнительные функции, обеспечивающие работу с приложением, например с ячейками MS Excel или с параграфами MS Word. Рекомендуется использовать MS Excel только для применений, использующих не более 10...30 тегов при периоде их опроса не менее 1 с. Однако это касается только операций в ячейках и динамического обновления графиков и не распространяется на обработку данных средствами языка VBA.

Возможность работы MS Excel (и других приложений Microsoft Office) с ОРС-сервером обеспечивается благодаря тому, что Visual Basic, входящий в состав MS Excel, поддерживает технологию Automation (OLE Automation) (Microsoft). Эта технология позволяет одному приложению (клиенту) использовать объекты другого приложения (сервера). Применительно к задаче ПА это означает, что приложение клиент может использовать объекты ОРС-сервера, который, в свою очередь, может получать данные из физического устройства или записывать их в него.

Automation позволяет использовать в среде MS Excel также объекты других приложений, например ActiveX-объекты, объекты MS Word, Outlook Express и др. Интерфейс Automation позволяет использовать ОРС-сервер с любыми другими приложениями, имеющими встроенный Visual Basic for Application.

На рис. 9.8 показала иерархия объектов, предоставляемых интерфейсом ОРС Automation. Значение данных, считанных из устройства ввода, параметр качества данных и временная метка хранятся в объекте OPCItem. Несколько OPCItem могут составлять коллекцию. (Коллекция - термин VBA, - группа связанных объектов, каждый из которых называется элементом коллекции и может быть вызван по его индексу). Каждая коллекция имеет свойство Count, которое позволяет подсчитать количество элементов.

 

 

Рис. 9.8. Иерархия объектов интерфейса Automation

 

Объект OPCServer - экземпляр ОРС-сервера. Этот объект должен быть создан до того, как будут установлены ссылки на другие объекты. Он содержит коллекцию OPCGroups и создает объект OPCBrowser, который используется в ОРС-клиенте для построения навигатора тегов.

Рассмотрим пример чтения значения тега из ОРС-сервера в ячейку листа MS Excel. Сначала необходимо создать модуль в Visual Basic, входящем в состав MS Excel. В заголовке модуля объявляются переменные Server и Group как имеющие тип OPCServer и OPCGroup соответственно, с областью видимости Public (строки 1 и 2 в листинге 1):

Листинг 1. Подсоединение к ОРС-серверу

1 Public Server As OPCServer

2 Public Group As OPCGroup

3 Sub Connect()

4 If Server Is Nothing Then

5 Set Server = New OPCServer

6 End If

7 If Group Is Nothing Then GoTo noGroup

8 Set Group - Nothing

9 noGroup:

10 Server. Connect " NLopc.server"

11 Set Group = Server.OPCGroups.Add(" RLDA" )

12 End Sub

Первым делом нужно создать связь MS Excel с ОРС-сервером. Для этого используется процедура Connect() (строка 3). Для того чтобы не создавать новые объекты, если они уже существуют, используется проверка существования объекта Server (строка 4), и если он не существует, то создается новый оператором New (строка 5).

Аналогично поступают с объектом Group (строка 7). Если объект не существует, то переходят к метке noGroup:, за которой вызывается метод Connect объекта Server, который осуществляет соединение с сервером «гNLopc.server» (в этом примере использован ОРС-сервер Nopс (НИЛ АП). Далее создается новая объектная переменная Group и добавляется методом Add в коллекцию OPCGroups с любым именем, например « RLDA ». Если объект Group существует, то его сначала удаляют (строка 8), чтобы не проверять, откуда он появился, затем создают заново (строка 10, 11).

После выполнения процедуры листинга 1 можно прочитать данные из ОРС- сервера. Пример чтения данных иллюстрирует листинг 2.

Предположим, что нужно считать данные тега, указанного на рис. 9.1. Его имя присваивают переменной tagname (строка 7). Далее имя тега нужно добавить к коллекции OPCItems с помощью метода Addltem (строка 8). Второй переменной после имени тега является номер тега в коллекции. После этого объектную переменную anltem ассоциируют с объектом Item, имеющим порядковый номер 1, под этим номером в коллекцию OPCItems был добавлен новый тег.

Объект anltem имеет метод Read, который позволяет прочесть параметры интересующего тега: значение Value, качество Quality и временную метку TimeStamp (строка 10).

После чтения этих переменных (строка 10) их значения записываются ячейки листа Excel с именем Лист1, находящиеся на пересечении 10-й, 11-й и 12-й строки с 5-м столбцом. Функция DoEvents необходима для того, чтобы Excel мог обрабатывать другие события, происходящие в системе, когда процедура ReadQ используется в цикле.

После получения данных от ОРС-сервера тег нужно удалить из коллекции. Для этого находят его указатель с помощью метода ServerHandle (строка 15), затем удаляют из коллекции OPCItems методом Remove. Далее удаляют ассоциацию объектной переменной anltem с реальным объектом (строка 17).

Листинг 2. Чтение данных из ОРС-сервера

1 Sub Read()

2 If Server Is Nothing Then Exit Sub

3 If Group Is Nothing Then Exit Sub

4 Dim serverHandles(l) As Long, Errors() As Long

5 Dim tagname As String, anltem As OPCItem

6 Dim Value, Quality, TimeStamp As Variant

7 tagname = " NL8TI.Laboratory32.Top.Vin4"

8 Group.OPCItems.Addltem tagname, 1

9 Set anltem = Group. OPCItems. Item(l)

10 anltem.Read OPCCache, Value, Quality, TimeStamp

11 JIucml.Cells(10, 5). Value = Value

12 JIucml.Cellsfll, 5). Value = Quality

13 JIucml.Cells(12, 5). Value = TimeStamp

14 DoEvente

15 serverHandles(l) = anltem. ServerHandle

16 Group. OPCItems.Remove 1, serverHandles, Errors

17 Set anltem = Nothing

18 End Sub

 

Упрощенный интерфейс Easy Access. Описанная процедура работы с ОРС-сервером хороша, когда на основе Visual Basic делается удобная заказная программа и нужно использовать все богатство возможностей ОРС-сервера. Однако для быстрого получения данных при проведении несложного эксперимента применение ОРС-сервера неоправданно сложно. В этих случаях можно использовать упрощенный СОМ-объект Easy Access. Для того чтобы считать из ОРС-сервера значение тега, например «NL8TI.Laboratory32.Top.Vin4» (листинг 3), достаточно после объявления переменных создать объект функцией «CreateObject» (строка 5) и сразу после этого получить значение тега (строка 7). Строка 8 записывает это значение на лист Excel в ячейку (7, 6).

Листинг 3. Применение упрощенного интерфейса Easy Access

1 Sub OnReadTag()

2 Dim obj As Object

3 Dim val As Variant

4 Dim tag As String

5 Set obj = CreateObject(." NLopc.console" )

6 tag = " NL8TI.Laboratory32.Top.Vin4"

7 obj.GetTagValue tag, val

8 Лист 1.Cells(7, 6). Value = val

9 End Sub

Для записи данных в физическое устройство вместо функции obj.Get TagValue используют obj.SetTagValue.

Построение графиков, обработка полученных данных выполняются обычными средствами Visual Basic.


Поделиться:



Популярное:

  1. А кто соблазнит одного из малых сих, верующих в Меня, тому лучше было бы, если бы повесили ему мельничный жернов на шею и потопили его во глубине морской.
  2. АВГУСТ И СЕНАТОРСКОЕ СОСЛОВИЕ
  3. Авторская программа 3TP Б. И. Шейко
  4. Авторская программа ЗТР Б. И. Шейко
  5. Авторская программа ЗТР И. Ю. Беляева
  6. Авторский договор. Классификация авторских договоров
  7. Авторское видение роли специалиста по ОРМ в обеспечении социальной безопасности молодежи: итоги авторских исследований, проектов, модели.
  8. Авторское право - правовое положение авторов и созданных их творческим трудом произведений литературы, науки и искусства.
  9. Авторское право как объект интеллектуальной собственности
  10. Анализ дебиторской задолженности по счету 206 по срокам возникновения.
  11. Анализ соотношения дебитОрской и кредиторской задолженности
  12. Анализ структуры и динамики дебиторской задолженности.


Последнее изменение этой страницы: 2016-06-05; Просмотров: 1263; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.017 с.)
Главная | Случайная страница | Обратная связь