Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
ОРС 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. Популярное:
|
Последнее изменение этой страницы: 2016-06-05; Просмотров: 1331; Нарушение авторского права страницы