Смекни!
smekni.com

Разработка модуля для контура управления tic-104 (стр. 2 из 4)

Так как PI-SDK может взаимодействовать с любыми программными оболочками, то для разработки модуля был выбран Visual Basic.

2. Анализ и планирование требований к модулю “tic-104”

Для возможности использования разрабатываемого модуля необходимо следующее установленное программное обеспечение: Visual Basic и PI-System. Самонастраивающийся модуль tic-104, конфигурируемый для регулирования температуры в резервуаре, выполняет функции ПИД-регулятора, как было указано выше.

Функции «самонастройки» по запросу повторяют операции, выполняемые квалифицированным инженером для настройки контура регулирования во время запуска системы. К тому же регуляторы с самонастройкой «на лету» могут продолжать обновлять константы настройки контуров уже после запуска системы в эксплуатацию.

В связи с вышесказанным, можно выделить следующие функции разрабатываемого модуля:

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

· Удобный интерфейс для настройки параметров: для настройки параметров всех модулей используется единый набор инструментальных средств с общим интерфейсом.

· Человеко-машинный интерфейс. Функции обслуживания человеко-машинного интерфейса встроены в операционную систему контроллера. Эти функции позволяют существенно упростить программирование. Система или устройство человеко-машинного интерфейса запрашивает необходимые данные у контроллера, контроллер передает запрашиваемые данные с заданной периодичностью. Все операции по обмену данными выполняются автоматически под управлением операционной системы контроллера с использованием одинаковых символьных имен и общей базы данных.

· Диагностические функции, встроенные в операционную систему контроллера. С их помощью осуществляется непрерывный контроль функционирования системы, и выявляются все возникающие отказы. Диагностические сообщения с отметками даты и времени накапливаются в кольцевом буфере для последующего анализа.

· Парольная защита: обеспечивает эффективную защиту программы от несанкционированного доступа, попыток копирования и модификации программы.

Выделим приоритетные функции. Несомненно, это быстродействие, диагностические функции и парольная защита.

3. Проектирование модуля “tic-104”

Целью создания Модульной базы данных (PI Module Database) является упрощение доступа к данным временных рядов PI. Типичной задачей при работе с архивом PI является нахождение связанных между собой точек, которые нужно использовать в приложении. Например, контуры управления с ПИД-регулятором включают в себя несколько точек PI. Для каждого атрибута контура требуется определенная точка из архива.

Для контура “tic-104” требуется 7 точек PI: переменная процесса, уставка (set point), выход, коэффициент пропорциональности (proportional constant), константа интегрирования (integral constant), производная (derivative), и режим. Как видно, данный контур очень удобно представить в виде модуля. Создадим этот модуль при помощи Visual Basic.

4. Построение модуля “tic-104”

модуль контур база процесс

Модульная база данных. Главной входной точкой в PI-SDK и базы данных PI является объект PI-SDK Server. Для начала, мы создадим экземпляр Server и откроем сеанс связи с сервером с достаточными правами для изменения модульной базы данных.

Каждый Server имеет свойство PIModuleDB. Модули в PIModuleDB хранятся в коллекции PIModuleDB.PIModules. Эта коллекция существует в PI Server в виде базы данных, аналогичной Базе данных точек (PI Point Database). Коллекция PIModules является иерархичной структурой, представляющей модули; она аналогична структуре каталогов файловой системы. Добавим этот модуль не в корневую коллекцию, создадим модуль, который будет действовать в качестве “папки”, содержащей tic-104, после чего мы создадим модуль для tic-104. Вотсоответствующийкодна VB:

Option Explicit

Dim Srv As Server

Dim Controllers As PIModule

Dim Tic104 As PIModule

Private Sub CreateTic104()

Set Srv = PISDK.Servers.DefaultServer

Srv.Open (“uid=piadmin”)

Set Controllers = Srv.PIModuleDB.PIModules.Add(“Controllers”)

Set Tic104 = Controllers.PIModules.Add(“tic-104”)

End Sub

На нашем сервере по умолчанию мы создали, на уровне корня, модуль под названием “Controllers.” Затем, в коллекции модулей этого контроллера мы создали модуль “tic-104.”

Доступ к данным временных рядов PI (PIAliases). Цель состоит в том, чтобы "добраться" до данных. Для этого нам требуются ссылки на семь точек PI, которые составляют этот контроллер (рисунок 4.2). Каждый модуль имеет коллекцию, которая называется PIAliases. Эта коллекция состоит из объектов, каждый из которых имеет тип PIAlias. PIAlias обеспечивает ссылку на точку PI Point через удобное для употребления имя или псевдоним (alias). PI-SDK представляет точку PI через объект PIPoint. Вот код, который это выполняет:

Private Sub CreateTheAliases()

Dim pts(7) As PIPoint

Set Srv = PISDK.Servers.DefaultServer

Srv.Open (“uid=piadmin”)

Set Controllers = Srv.PIModuleDB.PIModules.Item(“Controllers”)

Set Tic104 = Controllers.PIModules.Item(“tic-104”)

‘Создаемссылкинаточки PI

Set pts(1) = Srv.PIPoints.Item(“tic-104.pv”)

Set pts(2) = Srv.PIPoints.Item(“tic-104.sp”)

Set pts(3) = Srv.PIPoints.Item(“tic-104.o”)

Set pts(4) = Srv.PIPoints.Item(“tic-104.i”)

Set pts(5) = Srv.PIPoints.Item(“tic-104.p”)

Set pts(6) = Srv.PIPoints.Item(“tic-104.d”)

Set pts(7) = Srv.PIPoints.Item(“tic-104.m”)

‘Создаем псевдонимы в нашем модуле контроллера

Tic104.PIAliases.Add “ProcessVariable”, pts(1)

Tic104.PIAliases.Add “SetPoint”, pts(2)

Tic104.PIAliases.Add “Output”, pts(3)

Tic104.PIAliases.Add “Integral”, pts(4)

Tic104.PIAliases.Add “Proportion”, pts(5)

Tic104.PIAliases.Add “Derivative”, pts(6)

Tic104.PIAliases.Add “Mode”, pts(7)

EndSub

Теперь в нашем распоряжении имеется модуль, представляющий контур управления tic-104. Добавим этот модуль к модулю Controllers в целях улучшения организации модулей. Соответствующие точки PI связаны с модулем при помощи коллекции псевдонимов. Обычно, имеются и другие данные, которые требуется связать с контроллерами - например, номер модели производителя, ссылка на базу данных с технической информацией (maintenance database), а также информация по тонкой настройке (tuning). С этой целью, у каждого PIModule имеется коллекция PIProperties. Коллекция PIProperties может использоваться для хранения любых пользовательских данных или данных приложения вместе с модулем.

Свойства модуля (PI Properties). Коллекция PIProperties является иерархической коллекцией данных, связанных с модулями. Эта коллекция является местом, где хранятся данные о модуле. Коллекция PIProperties является коллекцией объектов типа PIProperty. Объект PIProperty имеет свойства Name (имя), Value (значение), а также свою собственную коллекцию PIProperties. В качестве Value можно использовать практически любую переменную типа VARIANT-- строки, числа, даты, хранимые процедуры, и даже двоичные объекты, например, изображения. Коллекции данных могут быть связаны с каждым объектом типа PIProperty при помощи коллекции PIProperties.

Итак, добавим к контроллеру дополнительные данные. Мы собираемся добавить информацию о производителе и некоторую информацию по настройке. Что касается производителя, мы добавим имя компании, адрес, номер модели и серийный номер. В качестве информации по настройке, мы укажем дату выполнения настройки, имя технолога и некоторые комментарии. Эти данные можно добавить непосредственно в коллекцию PIProperty модуля. Но поскольку PIProperties поддерживает создание иерархии, мы можем добавить эти данные более удачным с организационной точки зрения образом, для чего мы создадим две записи типа PIProperty -- одну для данных о производителе, другую - для данных о настройке. Затем мы добавим данные в соответствующие коллекции свойств. Вот код на Visual Basic, который выполняет описанные действия:

Private Sub CreateTheProperties()

Dim MfgData As PIProperty

Dim InstallationData As PIProperty

Dim Prop As PIProperty

Set Srv = PISDK.Servers.DefaultServer

Srv.Open (“uid=piadmin”)

Set Controllers = Srv.PIModuleDB.PIModules.Item(“Controllers”)

Set Tic104 = Controllers.PIModules.Item(“tic-104”)

Set MfgData = Tic104.PIProperties.Add(“Manufacturer Data”)

Set InstallationData = Tic104.PIProperties.Add(“Installation Data”)

Set Prop = MfgData.PIProperties.Add(“Name”, “Acme Controller, Inc.”)

Set Prop = MfgData.PIProperties.Add(“Model”, “ABC-4331”)

Set Prop = MfgData.PIProperties.Add(“Serial Number”, “102938475”)

Set Prop = InstallationData.PIProperties.Add(“Technician”, “John Doe”)

Set Prop = InstallationData.PIProperties.Add(“Comments”, “No problem.”)

EndSub

Интеграция с приложением. Теперь у нас имеется модуль, представляющий контроллер tic-104; мы можем легко обратиться к соответствующим временным рядам и метаданным. Но такая структура не имела бы особого практического значения, если к ней не могло бы обращаться приложение. Имеется много различных путей использования этих данных; например, они могут потребоваться приложению, которое предназначено для оценки состояния и технического обслуживания контроллера. Будущие версии PI ProcessBook будут поддерживать работу с Модульной базой данных PI; однако, уже сейчас мы можем работать с ModuleDataBase (MDB) в PI ProcessBook при помощи VisualBasicApplication (VBA). Мы начнем с рассмотрения исходного экрана ProcessBook для tic-104 и усовершенствуем его таким образом, чтобы он мог выполнять загрузку из модуля.

Прежде всего, мы отобразим данные о производителе и об установке в экране PI ProcessBook. PI ProcessBook является OLE-контейнером, поэтому мы можем добавить два элемента управления ListView к этому экрану, и загрузить свойства (рисунок 4.4). Вот VBA-код, который поставляет данные в два элемента управления ListView и в экран PI ProcessBook:

Option Explicit

Dim Srv As Server

Dim Controllers As PIModule

Dim Controller As PIModule

Private Sub Display_Open()

Set Srv = PISDK.Servers.DefaultServer

Srv.Open “uid=piadmin”

Set Controllers = Srv.PIModuleDB.PIModules.Item(“controllers”)

Set Controller = Controllers.PIModules.Item(“tic-104”)

LoadMfgData

LoadInstallationData

End Sub

Private Sub LoadMfgData()

Dim MfgData As PIProperty

Dim Prop As PIProperty

Dim strEntry As String

Dim mItem As ListItem

Dim iIndex As Integer

lvwMfgData.ListItems.Clear

lvwMfgData.ColumnHeaders.Clear

lvwMfgData.ColumnHeaders.Add , , “Property”, lvwMfgData.Width * 3 / 16

lvwMfgData.ColumnHeaders.Add , , “Value”, lvwMfgData.Width * 12 / 16

lvwMfgData.View = lvwReport

Set MfgData = Controller.PIProperties.Item(“Manufacturer Data”)

iIndex = 1

For Each Prop In MfgData.PIProperties