РефератыИнформатика, программированиеРаРазработка модуля для контура управления tic-104

Разработка модуля для контура управления tic-104

Федеральное агентство по образованию


Филиал государственного образовательного учреждения высшего профессионального образования


КУРСОВОЙ ПРОЕКТ


по курсу


«Автоматизация технологических процессов и производств»


Разработка модуля для контура управления tic-104 при помощи модуля PI-SDK инструментальной среды PI-System и программной среды Visual Basic


Стерлитамак 2011


Содержание


Введение


1. Краткая характеристика PI System и контура управления tic-104


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


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


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


5. Внедрение модуля в приложение PI ProcessBook


Заключение


Введение


Актуальность проекта.
Современный нефтеперерабатывающий завод представляет собой все более и более сложную систему, а значит, для обеспечения безопасного и эффективного производства необходимо учитывать и контролировать все возрастающее число различных технологических параметров. Кроме того, важно проводить планирование и прогнозирование дальнейшей деятельности как отдельной установки, так и нефтеперерабатывающий завод (НПЗ) в целом. Для решения всех этих задач применяются различные системы управления и контроля. Для ОАО «Салаватнефтеоргсинтез» выбрана система PI, которая позволяет проводить мониторинг производственного процесса в режиме реального времени как операторам установок, так и специалистам, находящимся в головном офисе Общества. Наличие открытой информации о работе как отдельной установки, так и всего НПЗ позволяет обеспечивать управление предприятием на всех уровнях: сотрудники НПЗ осуществляют контроль технологических дисциплин и режимов, а также проводят экспресс-анализ технологической ситуации; на уровне Общества отслеживается фактическое наличие и отгрузка продукции, ее качество, а также своевременно обнаруживаются возможные проблемы. Кроме того, система PI позволяет составлять ежедневный баланс производства, а также проводить план-факт анализ, оценку направления потерь и мобильную корректировку. Среди других целей ее внедрения можно отметить необходимость актуализации линейных моделей, повышение уровня безопасности производства, улучшение возможностей по анализу инцидентов, а также определение качественных показателей выходной продукции. Все вышеперечисленные факты доказывают актуальность рассматриваемой программной среды.


PI-System является системой MES уровня. Являясь гибким инструментом для создания информационной системы производства, PI System позволяет при помощи интерфейсов получать данные от:


• распределенных систем управления (DCS);


• систем операторского контроля, сбора данных и управления (SCADA);


• непосредственно от контроллеров (PLC);


• лабораторных систем (LIMS);


• устройств ручного ввода.


Цель проекта.
Разработка модуля для контура управления tic-104 при помощи модуля PI-SDK инструментальной среды PI-System и программной среды Visual Basic.


Для достижения указанной цели в проекте поставлены и решены следующие задачи:


1. Проследить полный путь, который проходит информация.


2. Изучить модуль PI-SDK.


3. Создать модуль для контура управления tic-104 при помощи PI-SDK и Visual Basic для решения проблемы быстродействия системы.


Новизна и практическая ценность.
Целью создания Модульной базы данных является упрощение доступа к данным временных рядов PI. Быстрота действия системы является в настоящее время одним из первоочередных критериев, по которым оценивается качество, востребованность и удобство системы. Также безусловная практическая ценность заключается в масштабируемости и надежности баз данных.


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


1.
Краткая характеристика
PI
System
и контура управления tic-104

В данном проекте рассматривается самонастраивающийся терморегулятор (TIC), конфигурируемый для регулирования температуры в резервуаре.


По своей сути, это ПИД-регулятор. Как известно, ПИД-регулятор — это звено в контуре управления с обратной связью, используемое для поддержания заданного значения измеряемого параметра. ПИД-регулятор измеряет отклонение стабилизируемой величины от заданного значения (так называемой уставки) и генерирует управляющий сигнал, являющийся суммой трёх слагаемых, первое из которых пропорционально этому отклонению, второе пропорционально интегралу отклонения и третье пропорционально производной отклонения. На любом производстве используется множество ПИД-регуляторов.


Множество простых методик настройки пропорционально-интегрально – дифференциальных (ПИД) контуров были автоматизированы и встроены в коммерческие регуляторы. Функции «самонастройки» по запросу повторяют операции, выполняемые квалифицированным инженером для настройки контура регулирования во время запуска системы. К тому же регуляторы с самонастройкой «на лету» могут продолжать обновлять константы настройки контуров уже после запуска системы в эксплуатацию.


Хотя оба подхода нашли признание среди специалистов по АСУ ТП, самонастройка «по запросу» пользуется большей популярностью. С 80-х и начала 90-х годов, когда были проведены основные исследования, самонастройка стала ведущим направлением.


Разработка осуществляется при помощи модуля PI-SDK программы PI-System. OSI Software, Inc. разрабатывает и поставляет Plant Information System, сокращенно PI System – семейство клиент/серверных и Web программных продуктов. PI System является инфраструктурой реального времени и используется в качестве одного из основных компонентов корпоративной информационной системы для интеграции и согласования данных, интеграции приложений и разнородных “островов” автоматизации (DCS, PLC, SCADA и т.д.). PI System дает возможность эффективно хранить, быстро обновлять и отображать, совместно использовать и анализировать как текущие, так и архивные данные.


Говоря в целом, PISystem- это:


- Это инструмент построения информационной системы производства реального времени для промышленных предприятий. PI System наилучшим образом обеспечивает сбор, хранение и представление в едином формате данных от различных SCADA-систем, DCS, ПЛК, устройств ручного ввода, заводских лабораторий и т. п.


- PI System предоставляет информацию о технологических процессах в реальном масштабе времени на уровень управления производством и бизнес-систем для специалистов среднего и верхнего звена предприятия.


- PI System служит инструментом для анализа и оптимизации производственных процессов.


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


PISystem внедрили такие крупные мировые компании, как Total, Shell, BritishPetroleum, SaudiAramco, ExxonMobil, ChevronTexaco. PISystem также внедрена во многих компаниях в СНГ и Странах Балтии .


Продукт PI-SDK является, по своей сути, иерархической объектной моделью, основанной на ActiveX-технологии фирмы Microsoft.


PI-SDK (PI Software Development Kit) – пакет средств разработки программного обеспечения PI который представляет собой инструмент создания программ доступа к PI-серверам. Он состоит из встроенного ActiveX-сервера, элемента управления ActiveX и библиотек поддерживающих программ. Предшественником PI-SDK являлся так называемый интерфейс прикладного программирования PI-API (PI Application Programming Interface).


PI‑SDK не существует в виде отдельного процесса вне приложения. Вместо этого, он становится частью самого процесса, реализуемого в приложении.


PI-SDK построен из коллекций объектов и индивидуальных объектов, которые упорядочены в иерархическую модель, представляющую PI-серверы. Свойства этих объектов доступны вызывающей программе.


В общем случае приложение получает доступ к объекту верхнего уровня иерархии либо при помощи создания нового объекта (C++), или по умолчанию (Visual Basic). Через этот объект верхнего уровня приложение получает доступ к другим объектам и коллекциям, которые, в свою очередь, открывают доступ к следующим объектам и коллекциям.


В корне этой схемы лежит объект PI-SDK. Этот объект обладает свойством, называемым Servers
(Серверы), которое возвращает ссылку на коллекцию Servers. Коллекция Servers может возвращать ссылки на любой доступный в системе сервер-объект. Каждый объект Server
может вернуть ссылки на целый ряд объектов, включая его коллекцию PIPoints
(PI-точки), PI BatchDB
(База данных производственных циклов) и PI ModuleDB
(модульная база данных). Коллекция PIPoints может возвратить ссылки на различные объекты PIPoint, а те в свою очередь – на другие объекты, относящиеся к данному PIPoint. Коллекция PointAttributes
(Атрибуты точки) объекта PIPoint обеспечивает доступ ко всей информации об этой точке, имеющейся в базе данных. Затененный объект Data
обеспечивает доступ к архивной и текущей динамической информации для данного PIPoint. В текущей версии имеется только ограниченный доступ к данным.


Пакет PI-SDK может быть использован в целом ряде сред программирования и во множестве прикладных областей. Первоначально он предназначался для обеспечения внутреннего интерфейса между PI-сервером и конечными пользовательскими приложениями.


В зависимости от архитектуры приложения, PI-SDK можно вызвать из самого приложения, из некоторых объектов или приложений среднего уровня или через другие приложения, такие как Web-серверы.


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


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

ic
-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


<
p>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


strEntry = Prop.Name & “: “ & Prop.Value


Set mItem = lvwMfgData.ListItems.Add(iIndex, Prop.Name, Prop.Name)


iIndex = iIndex + 1


mItem.SubItems(1) = Prop.Value


Next Prop


End Sub


Private Sub LoadInstallationData()


Dim InstallationData As PIProperty


Dim Prop As PIProperty


Dim strEntry As String


Dim mItem As ListItem


Dim iIndex As Integer


lvwInstallationData.ListItems.Clear


lvwInstallationData.ColumnHeaders.Clear


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


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


lvwInstallationData.View = lvwReport


SetInstallationData = Controller.PIProperties.Item(“Installation Data”)


iIndex = 1


For Each Prop In InstallationData.PIProperties


strEntry = Prop.Name & “: “ & Prop.Value


Set mItem = lvwInstallationData.ListItems.Add(iIndex, Prop.Name, Prop.Name)


iIndex = iIndex + 1


mItem.SubItems(1) = Prop.Value


NextProp


EndSub


Усовершенствуем наш модуль. Добавим тип контроллера к данным производителя, при этом новая информация отобразится при следующей загрузке экрана; никаких изменений в клиентском приложении при этом не потребуется.


Данный экран PI ProcessBook отображает стандартным образом работу контура управления, а также отображает имя производителя и информацию об установке. Для того, чтобы повторно использовать этот экран, нужно прежде всего добавить VBA-код, заменяющий использованные при конфигурировании экрана PI-точки, на операторы связи с Модульной базой данных. Для нужно задать свойства TagName или Trace объектов экрана. PI ProcessBook автоматически присваивает имена этим объектам. В режиме создания PI ProcessBook позволяет по правому щелчку мыши вывести свойства каждого объекта. Отображается имя объекта; можно также переименовать объект. Следующие VBA-функции извлекают соответствующие псевдонимы (alias) из модуля контроллера и и затем используют свойство datasource (источник данных) псевдонима для присвоения точке PI:


Private Sub LoadAliasesIntoTrend()


Dim Alias As PIAlias


DimPtAsPIPoint


‘ Убрать существующие точки


While Trend.TraceCount <> 0


Trend.RemoveTrace 1


Wend


Set Alias = Controller.PIAliases.Item(“Output”)


Set Pt = Alias.DataSource


Trend.AddTrace Pt.Name


Set Alias = Controller.PIAliases.Item(“ProcessVariable”)


Set Pt = Alias.DataSource


Trend.AddTrace Pt.Name


Set Alias = Controller.PIAliases.Item(“Setpoint”)


Set Pt = Alias.DataSource


Trend.AddTrace Pt.Name


Trend.GetFormat().ShowTagName = True


End Sub


Private Sub LoadAliasesIntoBarChart()


Dim Alias As PIAlias


Dim Pt As PIPoint


Set Alias = Controller.PIAliases.Item(“ProcessVariable”)


Set Pt = Alias.DataSource


Bar.SetTagName (Pt.Name)


Set Alias = Controller.PIAliases.Item(“SetPoint”)


Set Pt = Alias.DataSource


Bar1.SetTagName (Pt.Name)


Set Alias = Controller.PIAliases.Item(“Output”)


Set Pt = Alias.DataSource


Bar4.SetTagName (Pt.Name)


End Sub


Private Sub LoadAliasesIntoValues()


Dim Alias As PIAlias


Dim Pt As PIPoint


Set Alias = Controller.PIAliases.Item(“Proportion”)


Set Pt = Alias.DataSource


Value.SetTagName (Pt.Name)


Set Alias = Controller.PIAliases.Item(“Integral”)


Set Pt = Alias.DataSource


Value2.SetTagName (Pt.Name)


Set Alias = Controller.PIAliases.Item(“Derivative”)


Set Pt = Alias.DataSource


Value3.SetTagName (Pt.Name)


Set Alias = Controller.PIAliases.Item(“Mode”)


Set Pt = Alias.DataSource


Value9.SetTagName (Pt.Name)


EndSub


Предположим, что нам потребовались дополнительные контроллеры (на работающих предприятиях обычно очень много контроллеров). Мы воспользуемся дополнительными точками-имитаторами и создадим еще 9 модулей контроллеров. Приведенный код легко соответствующим образом модифицировать, либо можно воспользоваться инструментом конфигурирования. После того, как контроллеры созданы, мы добавим элемент управления "pick list" (список выбора) к экрану PI ProcessBook. При загрузке экрана мы будем добавлять ссылки на все контроллеры.



Масштабируемость и иерархия
.
Для того, чтобы использовать несколько контроллеров в одной группе, необходима масштабируемость. Масштабируемое решение состоит в том, чтобы организовать модули в более глубокую иерархию. Начиная с контроллеров и двигаясь "вверх", мы построим всю иерархию в соответствии со следующим подходом.



Масштабируемость (PIHeadingSets
)
.
Модульная база данных PI обеспечивает механизм для присвоения имен категориям и задания рекомендуемого уровня в иерархии. Каждой категории можно присвоить PIHeading (заголовок). Объекты типа PIHeading группируются в объект PIHeadingSet. Поскольку не существует ограничений на схемы иерархий, то нет и ограничений на количество объектов PIHeadingSet, которые можно сконфигурировать. Мы реализуем указанные группировки путем создания набора заголовков (heading set) и добавления 6 заголовков. Эти заголовки используются идентификации или присвоения меток модулям в данной схеме. Представим набор заголовков в виде таблицы:


Вот VB-код, который конфигурирует набор заголовков для данной схемы:


Private Sub cmdCreateHeadingSet_Click()


Dim Srv As Server


Dim HeadingSet As PIHeadingSet


Dim Heading As PIHeading


Set Srv = Servers.DefaultServer


Srv.Open


Set HeadingSet = Srv.PIModuleDB.PIHeadingSets.Add(“S-88 Equipment”, “S 88 equipment for example”)


Set Heading = HeadingSet.PIHeadings.Add(“Enterprise”, “S-88 Equipment definition”, 1)


Set Heading = HeadingSet.PIHeadings.Add(“Site”, “S-88 Equipment definition”, 2)


Set Heading = HeadingSet.PIHeadings.Add(“Area”, “S-88 Equipment definition”, 3)


Set Heading = HeadingSet.PIHeadings.Add(“Line”, “S-88 Equipment definition”, 4)


Set Heading = HeadingSet.PIHeadings.Add(“Unit”, “S-88 Equipment definition”, 5)


Set Heading = HeadingSet.PIHeadings.Add(“Controller”, “S-88 Equipment definition”, 6)


End Sub


Объект PIHeading имееттрисвойства: name (имя), description (описание) и level (уровень). Имя обязательно должно быть уникальным внутри набора заголовков. Уровень указывает желаемую позицию в иерархии; причем чем меньше это число, тем выше объект находится в иерархии. Свойство level (уровень), однако, не задает жестко иерархию.


Иерархия оборудования
.
Мы создадим иерархическую модель оборудования, начиная с самого верха иерархии и продвигаясь вниз к модулям. Контроллеры будут являться частью модуля. Поскольку один и тот же модуль может существовать в нескольких позициях иерархии, нет необходимости заново создавать каждый контроллер или перемещать контроллеры. Мы создадим новую иерархию и затем поместим контроллеры в соответствующие модули. Метод PIModules выполняет эту задачу..


Далее приведен блок VB-кода, где мы создаем модули более высокого уровня, а затем добавляем контроллеры в модуль. Метод insert (вставить) позволяет сделать ссылку на существующий контроллер в коллекции PIModules другого модуля.


Dim Enterprise As PIModule


Dim Site As PIModule


Dim Area As PIModule


Dim Line As PIModule


Dim Unit As PIModule


Dim Controllers As PIModule


Dim Controller As PIModule


Set Srv = PISDK.Servers.DefaultServer


Srv.Open (“uid=piadmin”)


On Error Resume Next


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


Set Enterprise = Srv.PIModuleDB.PIModules.Add(“Demo Enterprises”)


Set Site = Enterprise.PIModules.Add(“Cleveland”)


Set Area = Site.PIModules.Add(“Area C-1”)


Set Line = Area.PIModules.Add(“Line 4”)


Set Unit = Line.PIModules.Add(“R-401”)


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


Unit.PIModules.Insert Controller


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


Unit.PIModules.Insert Controller



5.
Внедрение
модуля
в
приложение
PI ProcessBook


Теперь, когда у нас имеется иерархическое представление оборудования, необходимо запрограммировать экран PI ProcessBook таким образом, чтобы он мог воспользоваться этой иерархией. Мы применим два подхода: 1) каскад из элементов управления типа "combo box"(комбинированный список выбора) 2) элемент управления Tree View (просмотр в виде дерева). В первом подходе мы используем combo box для сайта (site), зоны (area), линии (line), модуля (unit), и наконец, контроллеров. Изменение выбранных элементов в верхнем окне приведет обновлению нижних окон - в них появятся соответствующие модули.


Вот код VBA, который загружает элементы "combo box"; он вызывается при открытии экрана:


Private Sub LoadAllComboBoxes()


Dim i As Integer


For Each Site In Enterprise.PIModules


cboSites.AddItem Site.Name


Next Site


Set Site = Enterprise.PIModules.Item(1)


For Each Area In Site.PIModules


cboAreas.AddItem Area.Name


Next Area


Set Area = Site.PIModules.Item(1)


For Each Line In Area.PIModules


cboLines.AddItem Line.Name


Next Line


Set Line = Area.PIModules.Item(1)


For Each Unit In Line.PIModules


cboUnits.AddItem Unit.Name


Next Unit


Set Unit = Line.PIModules.Item(1)


For Each Controller In Unit.PIModules


cboControllers.AddItem Controller.Name


Next Controller


Set Controller = Unit.PIModules.Item(1)


cboSites.ListIndex = 0


cboAreas.ListIndex = 0


cboLines.ListIndex = 0


cboUnits.ListIndex = 0


cboControllers.ListIndex = 0


End Sub


Для каждого combo box имеется обработчик события выбора (select). Окна "combo box", находящиеся выше в иерархии, вызывают событие “select” у ближайшего снизу окна в иерархии. Это автоматически приводит к генерации последовательности событий выбора, что заставляет обновиться все окна, а вслед за ними, и экраны. Вотсоответствующийкод:


Private Sub cboControllers_Click()


Dim Reload As Boolean


Reload = False


If Controller Is Nothing Then


Reload = True


ElseIf cboControllers.Text <> Controller.Name Then


Reload = True


End If


If Reload Then


‘Set Controller = Controllers.PIModules.Item(cboControllers.Text)


Set Controller = Unit.PIModules.Item(cboControllers.Text)


LoadMfgData


LoadInstallationData


LoadAliasesIntoDisplay


End If


End Sub


Private Sub cboUnits_Click()


Dim Reload As Boolean


Reload = False


If Unit Is Nothing Then


Reload = True


ElseIf cboUnits.Text <> Unit.Name Then


Reload = True


End If


If Reload Then


Set Unit = Line.PIModules.Item(cboUnits.Text)


cboControllers.Clear


For Each Controller In Unit.PIModules


cboControllers.AddItem Controller.Name


Next Controller


If cboControllers.ListCount > 0 Then


cboControllers.ListIndex = 0


End If


End If


End Sub


Private Sub cboLines_Click()


Dim Reload As Boolean


Reload = False


If Line Is Nothing Then


Reload = True


ElseIf cboLines.Text <> Line.Name Then


Reload = True


End If


If Reload Then


Set Line = Area.PIModules.Item(cboLines.Text)


cboUnits.Clear


For Each Unit In Line.PIModules


cboUnits.AddItem Unit.Name


Next Unit


If cboUnits.ListCount > 0 Then


cboUnits.ListIndex = 0


Else


cboControllers.Clear


End If


End If


End Sub


Private Sub cboAreas_Click()


Dim Reload As Boolean


Reload = False


If Area Is Nothing Then


Reload = True


ElseIf Area.Name <> cboAreas.Text Then


Reload = True


End If


If Reload Then


Set Area = Site.PIModules.Item(cboAreas.Text)


cboLines.Clear


For Each Line In Area.PIModules


cboLines.AddItem Line.Name


Next Line


If cboLines.ListCount > 0 Then


cboLines.ListIndex = 0


Else


cboUnits.Clear


cboControllers.Clear


End If


End If


End Sub


Private Sub cboSites_Click()


If cboSites.Text <> Site.Name Then


Set Site = Enterprise.PIModules.Item(cboSites.Text)


cboAreas.Clear


For Each Area In Site.PIModules


cboAreas.AddItem Area.Name


Next Area


If cboAreas.ListCount > 0 Then


cboAreas.ListIndex = 0


Else


cboLines.Clear


cboUnits.Clear


cboControllers.Clear


End If


End If


End Sub


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


Первый шаг состоит в том, чтобы при загрузке экрана загрузить модули в элемент управления – дерево. В данном примере будет загружена вся структура. В усовершенствованном варианте можно было бы загружать нижние узлы дерева в тот момент, когда они выбираются. Иерархические структуры данных можно загружать при помощи рекурсивного кода (re-entrant code) – то есть функций, которые вызывают сами себя. Вот код, который загружает модули в элемент управления "tree view":


Private Sub LoadTreeView()


Dim EnterpriseNode As Node


Dim i As Long


tvwEnterprise.nodes.Clear


tvwEnterprise.Sorted = False


Set EnterpriseNode = tvwEnterprise.nodes.Add(, , “Enterprise”, “Enterprise”)


LoadTreeViewNodes Enterprise.PIModules, EnterpriseNode, i


EnterpriseNode.Expanded = True


End Sub


Private Sub LoadTreeViewNodes(Modules As PIModules, ParentNode As Node, i As Long)


Dim Module As PIModule


Dim SubNode As Node


DimstrKeyAsString


‘ свойство “Key” узла должно быть уникальным. Поскольку модули могут одновременно присутствовать в нескольких разных местах,


‘ нельзя полагаться на уникальный идентификатор модуля. По этой причине мы добавим целое число к уникальному ID


For Each Module In Modules


i = i + 1


strKey = Module.UniqueID & “-“ & i


Set SubNode = tvwEnterprise.nodes.Add(ParentNode, tvwChild, strKey, Module.Name)


LoadTreeViewNodes Module.PIModules, SubNode, i ‘ рекурсивныйвызовметодовявляетсянаилучшимспособомобработкииерархий


NextModule


EndSub


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


Значение node.text совпадает с именем модуля. Используемый метод заключается в том, чтобы пройти вверх по иерархии к родителям узла, создавая массив узлов, а затем пройти вниз по массиву, используя свойство node.text, чтобы получить элемент модуля. Другой способ, который можно было бы здесь применить, состоит в том, чтобы хранить каждый модуль в этом дереве. Однако, этот подход не очень хорошо масштабируется.


Вот код, который это выполняет:


Private Sub tvwEnterprise_NodeClick(ByVal Node As MSComctlLib.Node)


Dim Module As PIModule


Dim i As Long


Dim ParentNodes(20) As Node


i = 1


Set ParentNodes(i) = Node.Parent


On Error GoTo Done


WhileTrue


i = i + 1


‘ следующая строка приведет к ошибке после нахождения последнего родителя, после чего произойдет переход к метке “Done”


Set ParentNodes(i) = ParentNodes(i - 1).Parent


Wend


Done:


i = i - 3 ‘ спускаемсявнизот enterprise


Set Module = Enterprise


While i >= 1


‘ Используем массив узлов, чтобы пройти вниз по иерархии


Set Module = Module.PIModules.Item(ParentNodes(i).Text)


i = i - 1


Wend


Set Module = Module.PIModules.Item(Node.Text)


If Module.PIHeading.Name = “Controller” Then


Set Controller = Module


LoadMfgData


LoadInstallationData


LoadAliasesIntoDisplay


EndIf


EndSub


Заключение

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


Модуль “tic-104” разработан с помощью Visual Basic для контура управления температурой в резервуаре. В модуле учтены масштабируемость и иерархичность. Это означает, что для остальных контроллеров, участвующих в процессе, не нужно разрабатывать аналогичные модули, достаточно ввести их параметры в существующий модуль. Этот факт подчеркивает практическую ценность разработки.


Данный модуль используется в составе системы PI System. Эта система широко применяется в крупных мировых компаниях, таких как Лукойл, Газпром, Юкос, Сибур и многие другие. PI System разработан фирмой OSI Software GmbH (Германия), в России с 2000 года.


Наконец, говоря о финансовом вопросе, достаточно привести несколько цифр. Стоимость внедрения проекта PI в среднем составляет $ 100000 – 500 000. А экономия складывается из совокупности различных факторов. Допустим, если ранее состав нефти определялся только в лаборатории с помощью длительного анализа, то благодаря PI System удается оперативно, с помощью виртуального анализа показать поставщику реальное качество сырья. Было подсчитано, что за счет этого удалось сэкономить около $200000. Общая экономия от автоматизации отчетов составила $ 44 000 в год. Общая экономия на обслуживании насосов позволяет экономить в сумме $ 100000.


В целом экономисты компании посчитали, что однократная экономия составила $ 1 500 000, а регулярная экономия (задокументированная) составляет около $ 300 000 в год.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Разработка модуля для контура управления tic-104

Слов:4608
Символов:43570
Размер:85.10 Кб.