Встроенные языки программирования.
Встроенные технологические языки программирования – это инструмент, который предназначен для решения новых задач на базе уже существующей системы контроля и управления технологическими процессами. Такими задачами являются:
- программно-логическое управление технологическим оборудованием;
- алгоритмы оптимального (рационального) управления;
- расчет значений переменных по формулам;
- визуализация значений трендов целевой обработки (т.е. построение каких-либо расчетных трендов на базе полученных в результате измерений); в качестве исходных трендов могут быть использованы тренды реального времени и/или исторические тренды;
- архивирование дат и времени определенных событий;
- создание сценариев динамики экрана;
- интегрирование мгновенных значений расхода в задачах дозирования;
- создание альтернативных фильтров входных переменных.
В каждой SCADA-системе имеется встроенный набор стандартных алгоритмов, однако для решения уникальных задач приходится прибегать к созданию собственных алгоритмов на встроенных языках. Большинство SCADA-систем имеют встроенные языки высокого уровня, подобные языку Visual Basic. Эти языки позволяют задать адекватную реакцию приложения на события, связанные с изменением значений переменных, с выполнением некоторого логического условия, с нажатием комбинации клавиш. Также возможно создание программных фрагментов, циклически выполняемых с заданной частотой.
Встроенные языки программирования - мощное средство SCADA-систем, предоставляющее разработчику гибкий инструмент для разработки сложных приложений. Первые версии SCADA-систем либо не имели подобных языков, либо эти языки реализовывали небогатый набор функций. В современных версиях SCADA-систем функциональные возможности языков становятся существенно богаче. Можно выделить два подхода, используемых разработчиками встроенных в SCADA-системы языков программирования:
1) ориентация языка программирования на потребности и задачи технолога;
2) ориентация языка программирования на потребности и задачи системного интегратора.
Ориентация встроенного языка на потребности и задачи технолога.
Функции в таких языках являются высокоуровневыми, не требующими профессиональных навыков программирования при их использовании. Количество таких функций в базовых поставках исчисляется сотнями, и существуют свободно распространяемые библиотеки дополнительных функций. Операции в подобных языках часто направлены на выполнение конкретных технологических операций, т.е. такие языки являются узкоспециализированными проблемно-ориентированными языками.
Ориентация встроенного языка на потребности и задачи системного интегратора.
В этом случае в качестве языков чаще всего используются Visual Basic-подобные языки. В некоторых системах также используются языки на основе С++. Такой подход является наиболее универсальным, однако разработка программ для SCADA-систем на таких языках подчас весьма трудоемка.
В каждом языке допускается расширение набора функций. В языках, ориентированных на технологов, это расширение достигается с помощью дополнительных инструментальных средств (Toolkits). Разработка дополнительных функций выполняется обычно программистами - профессионалами.
Разработка новых функций при втором подходе выполняется обычно разработчиками приложений (как и в традиционных языках программирования).
Полнота использования возможностей встроенных языков (особенно при втором подходе) требует соответствующего уровня квалификации разработчика. Однако, большинство встроенных языков достаточно просты, и, поскольку они специально ориентированы на работу со SCADA-системой, освоение их элементарных возможностей обычно не представляет особых затруднений.
Во всех языках функции разделяются на группы, часть из которых являются общеупотребительными: математические функции, функции работы со строками, обмен по SQL , DDE-обмен и т. д. Наряду с этими группами во многих SCADA-системах есть собственные уникальные наборы функций.
В разрабатываемом приложении создаются программные фрагменты, состоящие из операторов и функций языка, которые выполняют некоторую последовательность действий. Эти программные фрагменты связываются с разнообразными событиями в приложении, такими как нажатие кнопки, открытие окна, выполнение некоторого логического условия. Каждое из событий ассоциируется с графическим объектом, окном, таймером, открытием/ закрытием приложения. Когда приложение содержит сотни окон, тысячи различных графических объектов, а с каждым из них связано несколько событий, в приложении может «работать» огромное количество отдельных программных фрагментов. Велика вероятность их одновременной активизации.
Каждая из функций во встроенном языке выполняется в синхронном или асинхронном режиме. В синхронном режиме выполнение следующей функции не начинается до тех пор, пока не завершилось исполнение предыдущей. При запуске асинхронной функции управление переходит к ней, не дожидаясь завершения исполнения предыдущей функции.
В связи с этим возникает несколько вопросов. С каким приоритетом исполняется каждый из фрагментов, допускается ли рекурсия при обработке событий и если да, то каков уровень вложенности? В SCADA-системах уровень вложенности пока не стандартизован, но оговаривается особо в рамках каждой из них.
Разработанные программные фрагменты (часто их называют «скрипты») могут выполняться в режиме интерпретации, могут быть скомпилированы в исполняемый код, и выполняться, например, как вызовы функций из библиотеки DLL.
Необходимо отметить, что в том и другом случае скрипты могут выполняться в том же потоке, что и основная часть программы, либо могут выполняться в отдельном потоке. Это зависит, в частности, от типа используемой SCADA – системы.
В SCADA различают следующие типы скриптов:
- глобальные (выполняются при запуске АРМ, либо вручную, при помощи менеджера скриптов);
- периодические (выполняются периодически, через заданный интервал времени);
- «условные» (выполняются при наступлении определенного условия, т.е. когда некоторое логическое выражение становится истинным);
- по алармам (выполняются при возникновении аларма, после подтверждения аларма, после неподтверждения аларма, и т.д.).
Базы данных в SCADA. Основные понятия БД. Краткая история развития БД.
В настоящее время ни одна АСУТП, выполняющая функции ведения архива параметров ТП, не может обойтись без базы данных.
В самом общем смысле база данных (БД) - это система хранения информации, обращение к которой осуществляется через средство управления базой данных (СУБД). На практике БД - это данные, рассортированные по уникальным идентификаторам и организованные в виде таблиц. Основное назначение БД - предоставить пользователю нужную информацию в нужном месте и в нужное время. И надо сказать, что по мере своего развития БД справляются с этой задачей все лучше и лучше. Тем не менее, первые БД не вполне соответствовали ожиданиям пользователей. Организации и предприятия должны были бороться с огромными объемами дублированной и иногда противоречивой информации, предоставляемой, к тому же, различными и, зачастую, несовместимыми друг с другом способами.
Можно сказать, что путь развития БД - это путь все большего и большего отстранения программного обеспечения от физических структур данных. До появления БД информация хранилась в отдельных файлах. Самые первые системы управления файлами позволяли программистам создавать, записывать, обновлять и читать эти файлы. Файловая система имеет органический недостаток: программы должны точно "знать", где расположены данные. Как следствие - для определения адресов в развитых системах хранения данных необходимо применение довольно сложных, трудно оптимизируемых и модифицируемых алгоритмов.
Первыми попытками абстрагирования программ от физических структур данных были индексные файлы, обеспечивающие доступ к информации посредством индексных ключей, т.е. для поиска записей в файле использовалась совокупность указателей. Такой подход решал определенный круг проблем, но индексным файлам по-прежнему были присущи многие ограничения, характерные для простых структур с единственной точкой входа. Сюда можно отнести, в частности, и неоптимальное хранение информации (дублирование, недостаточное структурирование), и значительное время поиска в больших файлах.
В качестве возможного решения этих проблем явились иерархические БД. В таких базах элементы данных строго упорядочены, причем так, что данные одного уровня подчиняются данным другого, более высокого уровня, иными словами, данные более низкого уровня являются подмножеством данных более высокого уровня. В такой модели связи данных могут быть отражены в виде дерева-графа, где допускаются только односторонние связи от старших вершин к младшим. Иерархические БД не получили широкого распространения. Реальный мир отнюдь не является иерархическим.
Перспективнее оказались сетевые БД, учитывающие более сложные взаимосвязи между элементами, составляющими БД (теоретически, по крайней мере, допускаются связи «всех со всеми»). Управляющие программы для таких БД становились все более и более независимыми от физических структур данных. Но все равно необходимо знать, как управлять этими структурами. По-прежнему для таких моделей характерна сложность реализации БД, а сами программы остаются весьма чувствительными к модификациям. А поскольку каждый элемент данных должен содержать ссылки на другие элементы, требуются значительные объемы памяти, как дисковой, так и оперативной. Дефицит последней может приводить к замедлению доступа к данным, лишая сетевую БД основного ее достоинства - быстродействия.
Процесс отделения программ от структур данных в конечном итоге завершили реляционные базы данных (РБД). В РБД все данные представлены исключительно в формате таблиц или, по терминологии реляционной алгебры, отношений (relation). Таблица в реляционной алгебре - это неупорядоченное множество записей (строк), состоящих из одинакового набора полей (столбцов). Каждая строка характеризует некий объект, каждый столбец - одну из его характеристик. Совокупность таких связанных таблиц и составляет БД, при этом таблицы полностью равноправны - между ними не существует никакой иерархии. Реляционная модель является простейшей и наиболее привычной формой представления данных. РБД позволили моделям данных отражать взаимосвязи прикладной области, а не методы программного доступа к данным и структурам данных. Это - огромный шаг вперед по нескольким причинам:
- отражающие прикладную область знаний модели данных являются интуитивно понятными конечному пользователю;
- реорганизация данных на физическом уровне совершенно не влияет на выполнение прикладных программ;
- возможно создание СУБД с клиент-серверной архитектурой, сохраняющих все достоинства централизованного администрирования и управления данными, с одной стороны, и дружески настроенных по отношению к пользователю клиентских программ, с другой;
- благодаря нормализации удается избежать чрезмерного дублирования данных.
Индустрия РБД в настоящее время вполне созрела. Условия на рынке сейчас диктует «большая пятерка»: IBM, Informix, Microsoft, Oracle и Sybase. На нее падает львиная доля всех расходов на разработку БД.
Можно выделить две категории приложений в БД: системы оперативной обработки транзакций (OLTP - Online Transaction Processing) и системы поддержки принятия решений (DSS - Decision Support System).
OLTP-системыиспользуются для создания приложений, поддерживающих ежедневную активность организации. Обычно это критические для деятельности приложения, требующие быстроты отклика и жесткого контроля над безопасностью и целостностью данных.
DSS (Decision Support System)- системы поддержки принятия решений, как правило, крупнее, чем OLTP-системы. Обычно они используются с целью анализа данных и выдачи отчетов и рекомендаций. Пользователи должны иметь возможность конструировать запросы различной степени сложности, осуществлять поиск зависимостей, выводить данные на графики и использовать информацию в других приложениях типа электронных таблиц, текстовых процессорах и статистических пакетов. Еще более широкую поддержку в процессе принятия решений обеспечивают системы оперативной аналитической обработки (OLAP - Online Analytical Processing).
Модель «клиент-сервер»при построении БД в настоящее время стала доминирующей компьютерной архитектурой после того, как предприятия осознали преимущество объединения удобных персональных компьютеров с централизованными, надежными и отказоустойчивыми мэйнфреймами. Клиент-серверные системы одновременно используют вычислительную мощь как клиента, так и сервера, возлагая интенсивную обработку данных на сервер и оптимизируя сетевой трафик так, чтобы повысить общую эффективность работы.
Для интерфейса в клиент-серверных БД используется SQL (Structured Query Language - язык структурированных запросов). Он представляет собой средство организации, управления и поиска информации в РБД. Широкое признание SQL приобрел благодаря таким следующим своим характеристикам:
- независимость от поставщика;
- переносимость на разные компьютерные платформы;
- опора на реляционные принципы хранения информации;
- высокоуровневая англоязычная структура;
- интерактивное выполнение запросов;
- полнофункциональный язык БД;
- поддержка со стороны IBM, Oracle, Sybase, Microsoft и др.
Язык SQL поддерживается всеми крупными поставщиками серверов БД и огромным большинством производителей различных прикладных средств разработки и языков программирования.
Дата добавления: 2018-11-26; просмотров: 1297;