Разработка клиентского интерфейса для мониторинга состояния устройств в промышленных сетях передачи данных
Основные компоненты системы и управление ими. Распределенная система управления и человеко-машинный интерфейс. Инструментарий для создания OPC-серверов и OPC-клиентов. Техническое руководство для администраторов, обслуживающих OPC-клиент и веб-сервер.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 20.10.2011 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
3.11 Инструментарий для создания OPC-серверов и OPC-клиентов
Как уже было сказано, чтобы создать OPC-сервер или OPC-клиент, нужно только взаимодействие с OPC Foundation (получить OPC-спецификации) и Microsoft (приобрести Visual Cи++ и пр.). Но имеется много сложных вопросов, которые придется решить при программировании OPC-интерфейсов.
Во-первых, само программирование COM весьма сложная задача даже с применением библиотеки активных шаблонов (ATL).
Во-вторых, сами OPC-объекты и их OPC-интерфейсы достаточно сложны и громоздки.
Проблема памяти весьма актуальна, так как в COM допускается (и сплошь и рядом в OPC используется) выделение памяти в сервере, а удаление ее возлагается на клиент. Малейшая неточность -- и пойдут трудно устранимые утечки памяти. А учитывая, что OPC-сервер обычно должен работать стационарно, рано или поздно крах системы неизбежен.
Всего этого можно избежать, если воспользоваться специальным инструментарием разработчика.
Типичный инструментарий представляет собой библиотеку, состоящую из OPC-объектов выбранной спецификации. Разработчику же, например, OPC-сервера, предлагается некий набор вызовов, достаточно простых (read, write), которые необходимо приложить к своему оборудованию для доступа к его данным.
Для тех, кто знает объектное программирование, заметим, что эти функции могут быть реализованы как виртуальные функции некоторого класса - их нужно перегрузить в своем приложении. Так устроен, например, инструментарий фирмы FactorySoft См.: www.factorysoft.com.
3.12 OPC и Интеграция
Рассмотрим возможные области применения OPC-серверов в АСУ предприятия. Мы различаем несколько уровней управления:
* нижний уровень -- полевые шины (fieldbus) и отдельные контроллеры;
* средний уровень -- цеховые сети;
* уровень АСУТП -- уровень работы систем типа SCADA;
* уровень АСУП -- уровень приложений управления ресурсами предприятия.
Каждый из этих уровней может обслуживаться OPC-сервером, поставляя данные OPC-клиенту на более высоком или на равном уровне.
Так, если имеется оборудование, например, плата АЦП, управляемая через драйвер на компьютере с Windows или другой ОС, поддерживающей COM/DCOM, то это самый главный кандидат на то, чтобы непосредственно поверх драйвера реализовать OPC-сервер. Замена устройства не потребует изменения остальных приложений: драйвер изменяется, но OPC-интерфейс поверх него остается прежним.
При наличии устройства, управляемого через какой-нибудь сетевой протокол, вполне возможна реализация OPC-сервера, получающего данные по этому протоколу. Единственная особенность -- следует предусмотреть механизмы восстановления связи в случае сбоев.
Несколько более сложной будет схема при работе управляющих приложений на компьютере, не поддерживающем COM/DCOM. В этом случае применим двухкомпонентный OPC-сервер. На стороне ОС, не поддерживающей COM, устанавливается сетевой модуль, который, с одной стороны, связан с приложением (ями), а с другой -- через сеть с OPC-сервером.
Заметим, что сетевой модуль может быть стандартным (как, например, ISaNet в системе ISaGRAF). В этом случае необходимо разработать только OPC-сервер. По такому принципу функционирует OPC-сервер ISaGRAF фирмы «РТСофт» См.: www.rtsoft.ru.
Иногда сетевой модуль создается специально для OPC-сервера. Возможна даже реализация, при которой этот модуль не ориентирован на конкретное приложение, а предоставляет некоторый API-интерфейс для любых приложений, желающих обслуживаться с помощью OPC. Так действует OPC-сервер для операционной системы OS-9, также разработанный в «РТСофт».
Еще одна разновидность OPC-сервера -- шлюз к сети полевой шины, такой как Profibus или Lonworks. Реализация этой схемы очень похожа на предыдущие случаи. Скорее всего, на компьютере с ОС Windows будет установлен адаптер fieldbus-сети, а OPC-сервер будет взаимодействовать с этой сетью через драйвер адаптера.
В Internet можно найти немало таких примеров. Идея подобной схемы достаточно очевидна. Сеть полевой шины работает в жестком реальном времени, а OPC предоставляет менее требовательный шлюз к этой сети из приложений более высокого уровня.
Можно назвать много других мест применения OPC: для работы с базами данных в качестве вспомогательных или промежуточных OPC-серверов и т. д.
Технология DCOM, как уже говорилось, не очень пригодна для глобальных сетей. Поэтому для привлечения к OPC-технологии Internet-технологий можно набросать такой путь. Расширение Web-сервера является OPC-клиентом, собирающим данные от OPC-серверов. А на стороне клиентов запускается динамическая html- или xml-страница, получающая данные от этого Web-сервера. Ее можно сделать даже OPC-сервером для других приложений.
Полезность применения OPC с точки зрения интеграции достаточно прозрачна и вытекает из самой сути OPC. Это стандарт на интерфейс обмена данными с оборудованием. Первое преимущество -- если вы заменяете какой-нибудь компонент, то нет нужды корректировать другое ПО, так как даже при замене драйвера поверх него работает OPC. Второе -- если вы хотите добавить в систему новые программы, нет необходимости предусматривать в них драйверы устройств, кроме OPC-клиента, разумеется. Ну и так далее.
3.13 ОСОБЕННОСТИ ВНЕДРЕНИЯ OPC-стандарта
До сих пор мы описывали технологию и ее возможности. А каково же состояние дел с её внедрением?
Для улучшения обстановке с OPC, необходимо чтобы основная часть производителей признали OPC своим стандартом. При этом поставщики оборудования, в том числе полевых шин, снабжают выпускаемые продукты OPC-серверами, а поставщики программ для систем управления делают собственные продукты OPC-клиентами и во многих случаях еще и OPC-серверами. При этом и те, и другие реализуют все спецификации и поддерживают все интерфейсы OPC. А все производители операционных систем встраивают в свои ОС технологии COM/DCOM, а также предоставляют сервисный инструментарий, как для него, так и для OPC. И при этом все делается на высоком профессиональном уровне и очень грамотно рассказывается сборщикам систем, как это все собирать и конфигурировать. Вот тогда вопрос обмена данными в системах автоматизации можно было бы считать закрытым.
Но пока положение дел несколько иное.
В настоящее время общепризнанным стандартом является только OPC DA, а остальные спецификации только начинают внедряться. Не все спецификации завершены, по крайней мере, с точки зрения интерфейса автоматизации (например, для OPC Batch уже существует версия 2.0 custom-интерфейса, а интерфейса автоматизации - только версия 1.0, для некоторых других спецификаций тоже существует отставание интерфейсов автоматизации от custom-интерфейсов; для OPC Security спецификации на интерфейс автоматизации вообще не существует).
Соответственно, широкое распространение получил лишь стандарт OPC DA. Можно сказать, что сейчас действительно очень многие производители снабжают свои продукты OPC DA-серверами. Чего нельзя сказать о других спецификациях.
Среди программ высокого уровня аналогичная картина. Спросом пользуется лишь OPC DA. Все известные нам SCADA-продукты являются OPC-клиентами, например Wonderware InTouch, CiTect (Ci Technologies), а многие из них и OPC-серверами (в частности, CiTect). Другое ПО подвержено влиянию OPC в гораздо меньшей степени.
Из операционных систем технологию COM/DCOM поддерживают следующие:
- все Windows, начиная с Windows 95. Это обеспечивается самой компанией Microsoft;
- большинство Unix-подобных ОС, включая Linux; поддерживается фирмой GE Software;
- ОС реального времени VxWorks; обеспечивается фирмой-разработчиком WindRiver; имеется поддержка OPC, встроенная в систему разработки Tornado.
В других операционных системах, насколько нам известно, поддержки COM/DCOM нет. Это не очень отрадный факт, поскольку разработчиков систем автоматизации в первую очередь интересуют ОС реального времени.
3.14 Перспективы развития OPC-технологии
Итак, в настоящее время картина далеко не идеальна. Еще довольно много оборудования и ПО не охвачено OPC-технологиями. Даже технологией DA. Но нам представляется, что сейчас в мире налицо некий бум OPC, по крайней мере, в отношении опять же DA. Думается также, что Microsoft рано или поздно доведет все до желаемого уровня по всем направлениям.
Тем более что альтернативных вариантов пока нет. Мы имеем в виду не COM/DCOM, а именно спецификации на обмен технологическими данными. Поскольку для COM/DCOM замена как раз имеется -- CORBA. Это действительно изначально платформенно-независимая технология взаимодействия приложений.
Но это не обмен технологическими данными, реализующий более высокий уровень абстракции. Кстати, заметим, что на рынке имеются OPC-шлюзы к CORBA (это возможно, как и к любому другому протоколу).
Таким образом, технология OPC предлагает стандарты для обмена технологическими данными, в которые заложены самые широкие возможности. Учитывая большой авторитет вовлеченных в данную деятельность фирм можно ожидать, что технология OPC будет набирать силу. Это перспективная технология для интеграции разнородных систем в частности, и, в особенности, сложных систем в составе различных технологических процессов и линий производства.
3.15 Программное обеспечение
SCADA-системы чаще всего имеют закрытый код и поставляются вместе с оборудованием (в данном случае с пультами, которые встраиваются в станок).
SCADA-система устанавливается на серверную версию операционной системы Microsoft и включает в себя OPC сервер и Microsoft SQL сервер. OPC сервер не обрабатывает результаты, а помещает их в базу данных, а уже OPC клиенту, которые установлен у пользователя, приходится обрабатывать полученый результат, что приводит к задержкам получения данных на пользовательской машине.
Для решения данной проблемы можно воспользоваться OPC клиентом, который будет заранее подсчитывать результаты полученные с OPC сервера и переводить их в web форму. Чтобы не вмешиваться в работу сервера SCADA-системы (чтобы не вызывать задержки получения данных с пультов) необходимо организовать сервер для OPC клиента, который в последствии будет и web-сервером.
Многие OPC протоколы базируются на Windows-технологиях (OLE, ActiveX, COM/DCOM), но также была найдена утилита для языка программирования Python - OpenOPC.
Данная утилита свободная и поставляется с открытым кодом, что позволяет при необходимости изменять её код. Она состоит из двух частей - серверная и клиентская. Серверная часть устанавливается на SCADA-систему в виде службы, а клиентская на наш дополнительный сервер. Для работы данной утилиты на дополнительном сервере необходимо установить язык программирования Python. Так же для нашего дополнительного сервера понадобится любой web-сервер, например, Apache, так же для обработки данных понадобиться препроцессор гипертекста, например, PHP, а для хранения данных, полученных с OPC сервера можно использовать MySQL.
Кроме того, необходимо использовать утилиту для диагностики работы сети, которая будет проверять работоспособность пультов и сервера, а так же активного сетевого оборудования на пути от пультов до сервера.
Для получения данных с OPC будет использоваться написанная Нами программа, которая работает за счет библиотек утилиты OpenOPC. Данная программа будет посылать запрос, например, раз в день на OPC сервер, а полученные результаты сохранять в базе данных MySQL. При этом конечный пользователь при обращении к web-серверу будет получать информацию незамедлительно, без каких-либо технических задержек, так как клиентской машине не нужно будет преобразовывать получаемые данные, а только лишь отображать полученные результаты в виде web-страницы на экране конечного пользователя.
Важно, что данные утилиты (т.е. OPC-клиент, OPC-сервер, база данных MySQL, web-сервер, PHP, собственно язык программирования Pyton и т.д.) являются свободными и кросплатформенными, и, поэтому их можно установить фактически на любую современную систему, например на unix-подобные системы, Windows и другие.
Следует рассмотреть отдельные программные средства, необходимые для создания web-сервера; такие, как web-сервер Apache, препроцессор гипетреткста PHP и база данных MySQL. Выбор этих программных продуктов обусловлен, прежде всего, надёжностью в использовании, возможностью получения обновлений в ходе работы, а также - некоммерческим характером их распространения. В современных условиях нашей страны, последнее свойство, несомненно, кажется особенно привлекательным.
3.16 Web сервер Apache
Apache является кроссплатформенным программным обеспечением, является свободным и поддерживается операционными системами GNU/Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.
Основными достоинствами Apache считаются надежность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т.д. Поддерживает IPv4 и IPv6.
Недостатком считается отсутствие удобного стандартного интерфейса для администратора.
Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол http и система загрузки модулей. Ядро (в отличии от модулей) полностью разрабатывается Apache Softaware Foundation, без участия сторонних программистов.
Теоретически, ядро Apache может функционировать в чистом виде, без использования модулей. Однако, функциональность такого решения крайне ограничена. Ядро Apache полностью написано на языке программирования C.
Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:
· Конфигурирования сервера (http.conf).
· Конфигурирования виртуального хоса (http.conf, c версии 2.2 extra/httpd-vhost.conf).
· Конфигурация уровня директории (.htaccess).
Имеется собственный язык конфигурационных файлов, основанных на блоках директив. Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть до управления мултипроцессорной модели Симметричное мультипроцессирование (англ. Symmetric Multiprocessing, или SMP) это архитектура многопроцессорных компьютеров, в которой два или более одинаковых процессоров подключаются к общей памяти. Большинство многопроцессорных систем сегодня используют архитектуру SMP.. Большая часть модулей имеет собственные параметры.
Часть модулей использует в своей работе конфигурационные файлы операционной системы (например, /etc/passwd и /etc/hosts).
Помимо этого, параметры могут быть заданы через ключи командной строки.
Apache HTTP Server поддерживает модульность. Существует более 400 модулей, выполняющих различные функции. Часть из них разрабатывается командой Apache Software Foundation, но основное количество - отдельными open source разработчиками.
Модули могут быть как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла.
Модули могут быть как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла.
В модулях реализуются так возможности, как:
· Поддержка языков программирования.
· Добавление функционала.
· Исправление ошибок или модификация основных функций.
· Усиление безопасности.
Apache имеет встроенный механизм виртуальных хостов. Он позволяет полноценно обслуживать на одном ip-адресе множество сайтов (доменных имен), отображая для каждого из них собственное содержимое.
Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам. Некоторые МРМ, например Apache-ITK позволяют запускать процесс httpd для каждого виртуального хоста с отдельными идентификаторами uid и gid.
Также, существуют модули, позволяющие учитывать и ограничивать ресурсы сервера (CPU, RAM, трафик) для каждого виртуального хоста.
Существует множество модулей, добавляющих к Apache поддержку различных языков программирования и систем разработки. К ним относятся:
· PHP (mod_php).
· Python (mod_python)
· Ruby (apache-ruby).
· Perl (mod_perl).
· ASP (apache-asp).
Кроме того, Apache поддерживает механизмы CGI и FastCGI, что позволяет исполнять программы на практически всех языках программирования, в том числе C, C++, sh, Perl и Java.
Apache имеет различные механизмы обеспечения безопасности и разграничения доступа к данным. Основным механизмами являются:
· Ограничение доступа к определенным директориям или файлам.
· Механизм авторизации пользователей для доступа к директории по методу HTTP-Авторизации (mod_auth_basic) и digest-авторизации (mod_auth_digest).
· Ограничение доступа к опеределенным директориям или всему серверу, основанное на IP-адресах пользователей.
· Запрет доступа к определенным типам файлов для всех или части пользователей, например, запрет доступа к конфигурационным файлам и файлам баз данных.
· Существуют модули, реализующие авторизацию через СУБД или PAM.
В некоторых MPM-модулях присутствует возможность запуска каждого процесса Apache используя различные uid и gid с соответствующими этим пользователям и группам пользователей.
Также, существует механизм suexec, используемый для запуска скриптов и CGI-приложений с правами и идентификационными данными пользователя.
Для реализации шифрования данных, передающихся между клиентом и сервером, используется механизм SSL, реализованный через библиотеку OpenSSL. Для удостоверения подлинности web-сервера используются сертификаты X.509.
Существуют внешние средства обеспечения безопасности, например mod_security.
Начиная с версии 2.0, появилась возможность определения сервером набора параметров, в т.ч. набора региональных символов, регионального языка пользователя, страны и местного времени.
Сообщения об ошибках и событиях, посылаемые браузеру, теперь представлены на нескольких языках и используют SSI технологию.
Apache поддерживает множество кодировок, в том числе Unicode, что позволяет использовать страницы, созданные в любых кодировках и на любых языках.
Администратор может установить собственные страницы и обработчики для всех HTTP ошибок и событий, таких как 404 (Not Found) или 403 (Forrbiden). В том числе существует возможность запуска скриптов на разных языках.
В версиях 1.3 и старше был реализован механизм Server Side Includes, позволяющий динамически формировать HTML-документы на стороне сервера.
Управлением SSI занимается модуль mod_include, включенный в базовую поставку Apache.
3.17 PHP
PHP (от анг. PHP: Hypertext Preprocessor -- «PHP: препроцессор гипертекста») -- скриптовый язык программирования общего назначения, применяющийся для разработки веб-приложений.
В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.
Язык и его интерпретатор разрабатываются группой энтузиастов в рамках проекта с открытым кодом. Проект не является свободным и распространяется под собственной лицензией.
В области программирования для Сети, PHP -- один из популярнейших скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности, кроссплатформенности и распространению исходных кодов на основе лицензии PHP.
Популярность в области построения веб-сайтов, определяется наличием большого набора встроенных средств для разработки веб-приложений. Основные из них:
· Автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределенные массивы;
· Файловые функции успешно обрабатывают как локальные, так и удаленные файлы;
· Автоматическая отправка HTTP-заголовков;
· Работа с cookies и сессиями;
· Обработка файлов, загружаемых на сервер;
· Работа с HTTP заголовками и HTTP авторизацией;
· Работа с XForms;
· Работа с удаленными файлами и сокетами
В настоящее время PHP используется сотнями тысяч разработчиков. Согласно рейтингу Tiobe, базирующемуся на данных поисковых систем, в октябре 2009 года PHP находится на 3 месте среди языков программирования (уступая Java и C), поднявшись за год на две позиции.
3.18 MySQL
MySQL -- свободная система управления базами данных (СУБД). MySQL является собственностью компании Sun Microsystems, осуществляющей разработку и поддержку приложения.
Распространяется под GNU General Public License и под собственной коммерческой лицензией, на выбор. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.
MySQL является решением для малых и средних приложений. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.
MySQL портирована на большое количество платформ: AIX, BSDi, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, OpenBSD, OS/2 Warp, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Server 2003, WinCE, Windows Vista и Windows 7.
Существует также порт MySQL к OpenVMS. Важно отметить, что на официальном сайте СУБД для свободной загрузки предоставляются не только исходные коды, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули СУБД MySQL.
3.19 Язык программирования Python
Python - высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.
Python поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное. Основные архитектурные черты -- динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Питоне организовывается в функции и классы, которые могут объединяться в модули (которые в свою очередь могут быть объединены в пакеты).
Эталонной реализацией Python является интерпретатор CPython, поддерживающий большинство активно используемых платформ. Он распространяется свободно под очень либеральной лицензией, позволяющей использовать его без ограничений в любых приложениях, включая проприетарные. Есть реализации интерпретаторов для JVM (с возможностью компиляции), MSIL (с возможностью компиляции), LLVM и других. Проект PyPy предлагает реализацию Питона на самом Питоне, что уменьшает затраты на изменения языка и постановку экспериментов над новыми возможностями.
Python -- активно развивающийся язык программирования, новые версии (с добавлением/изменением языковых свойств) выходят примерно раз в два с половиной года. Вследствие этого и некоторых других причин на Python отсутствуют ANSI, ISO или другие официальные стандарты, их роль выполняет CPython.
Разработка языка Python была начата в конце 1980-х годов сотрудником голландского института CWI Гвидо ван Россумом. Для распределённой ОС Amoeba требовался расширяемый скриптовый язык, и Гвидо начал писать Python на досуге, позаимствовав некоторые наработки для языка ABC (Гвидо участвовал в разработке этого языка, ориентированного на обучение программированию). В феврале 1991 года Гвидо опубликовал исходный текст в ньюсгруппе alt.sources. С самого начала Python проектировался как объектно-ориентированный язык.
Название языка произошло вовсе не от вида пресмыкающихся. Автор назвал язык в честь популярного британского комедийного телешоу 1970-х «Воздушный цирк Монти Пайтона». Впрочем, всё равно название языка чаще ассоциируют именно со змеёй, нежели с фильмом -- пиктограммы файлов в KDE или в Microsoft Windows и даже эмблема на сайте python.org (до выхода версии 2.5) изображают змеиные головы.
Наличие дружелюбного, отзывчивого сообщества пользователей считается наряду с дизайнерской интуицией Гвидо одним из факторов успеха Python. Развитие языка происходит согласно чётко регламентированному процессу создания, обсуждения, отбора и реализации документов PEP (Python Enhancement Proposal) -- предложений по развитию Python.
Большая часть других возможностей Python (например, байт-компиляция исходного кода) также была реализована ранее в других языках.
Python портируем и работает почти на всех известных платформах -- от КПК до мейнфреймов. Существуют порты под Microsoft Windows, все варианты UNIX (включая FreeBSD и GNU/Linux), Plan 9, Mac OS и Mac OS X, Palm OS, OS/2, Amiga, AS/400 и даже OS/390, Symbian и Android .
По мере устаревания платформы её поддержка в основной ветви языка прекращается. Например, с серии 2.6 прекращена поддержка Windows 95, Windows 98 и Windows ME. Однако на этих платформах можно использовать предыдущие версии Python -- на данный момент сообщество активно поддерживает версии Python начиная от 2.3 (для них выходят исправления).
При этом, в отличие от многих портируемых систем, для всех основных платформ Python имеет поддержку характерных для данной платформы технологий (например, Microsoft COM/DCOM). Более того, существует специальная версия Питона для виртуальной машины Java -- Jython, что позволяет интерпретатору выполняться на любой системе, поддерживающей Java, при этом классы Java могут непосредственно использоваться из Питона и даже быть написанными на Питоне. Также несколько проектов обеспечивают интеграцию с платформой Microsoft .NET, основные из которых -- IronPython и Python.Net.
Python поддерживает динамическую типизацию, то есть тип переменной определяется только во время исполнения. Поэтому вместо «присваивания значения переменной» лучше говорить о «связывании значения с некоторым именем». В Питоне имеются встроенные типы: булевые, строки, Unicode-строки, целые числа произвольной точности, числа с плавающей запятой, комплексные числа и некоторые другие. Из коллекций Python поддерживает кортежи (tuples), списки, словари (ассоциативные массивы) и, начиная с версии 2.4, множества. Все значения в Питоне являются объектами, в том числе функции, методы, модули, классы.
Добавить новый тип можно либо написав класс (class), либо определив новый тип в модуле расширения (например, написанном на языке C). Система классов поддерживает наследование (одиночное и множественное) и метапрограммирование. Возможно наследование от большинства встроенных типов и типов расширений.
Все объекты делятся на ссылочные и атомарные. К атомарным относятся int, long, complex и некоторые другие. При присваивании атомарных объектов копируется их значение, в то время как для ссылочных копируется только указатель на объект, таким образом обе переменные после присваивания используют одно и то же значение. Ссылочные объекты бывают изменяемые и неизменяемые. Например, строки и кортежи являются неизменяемыми, а списки, словари и многие другие объекты -- изменяемыми. Кортеж в Питоне является, по сути, неизменяемым списком.
Язык обладает чётким и последовательным синтаксисом, продуманной модульностью и масштабируемостью, благодаря чему исходный код написанных на Питоне программ легко читаем.
Набор операторов достаточно традиционен. Вот некоторые из них:
· условный оператор if (если). Альтернативный блок после else (иначе). Если условий и альтернатив несколько, можно использовать elif (сокр. от else if).
· операторы цикла while (пока) и for (для). Внутри цикла возможно применение break и continue для прерывания цикла и перехода сразу к следующей итерации соответственно.
· оператор определения класса class.
· оператор определения функции, метода или генератора def. Внутри возможно применение return (возврат) для возврата из функции или метода, а в случае генератора -- yield (давать).
· оператор обработки исключений try -- except -- else или try -- finally (начиная с версии 2.5 можно использовать finally, except и else в одном блоке).
· оператор pass ничего не делает. Используется для пустых блоков кода.
Одной из интересных синтаксических особенностей языка является выделение блоков кода с помощью отступов (пробелов или табуляций), поэтому в Питоне отсутствуют операторные скобки begin/end как в языке Паскаль или фигурные скобки, как в Си. Такой «трюк» позволяет сократить количество строк и символов в программе и приучает к «хорошему» стилю программирования. С другой стороны, поведение и даже корректность программы может зависеть от начальных пробелов в тексте. Некоторые критики языка считают такое поведение неинтуитивным и неудобным.
Python -- стабильный и распространённый язык. Он используется во многих проектах и в различных качествах: как основной язык программирования или для создания расширений и интеграции приложений. На Python реализовано большое количество проектов, также он активно используется для создания прототипов будущих программ.
3.20 ХАРАКТЕРИСТИКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Scada-системы чаще всего имеют закрытый код и поставляются вместе с оборудованием (в данном случае с пультами, которые встраиваются в станок). Scada-система устанавливается на серверную версию операционной системы Microsoft и включает в себя OPC сервер и Microsoft SQL сервер. OPC-сервер не обрабатывает результаты, а помещает их в базу данных, а уже OPC клиенту, который установлен у пользователя, приходится обрабатывать полученный результат, что приводит к задержкам получения данных на пользовательской машине.
Для решения данной проблемы можно воспользоваться OPC клиентом, который будет заранее подсчитывать результаты, полученные с OPC сервера, и переводить их в web форму. Чтобы не вмешиваться в работу сервера Scada-системы (это необходимо для того, чтобы не вызывать задержки получения данных с пультов) необходимо организовать сервер для OPC клиента, который в последствии будет и web-сервером.
Многие OPC протоколы базируются на Windows-технологиях (OLE, ActiveX, COM/DCOM), но была найдена утилита для языка программирования Python - OpenOPC. Данная утилита свободная и поставляется с открытым кодом, что позволяет легко изменять ее код.
Она состоит из двух частей - серверная и клиентская. Серверная часть устанавливается на Scada-систему в виде службы, а клиентская на наш дополнительный сервер. Для работы данной утилиты на дополнительном сервере необходимо установить язык программирования Python.
Так же для нашего дополнительного сервера понадобится любой web сервер, например, Apache, так же для обработки данных понадобиться препроцессор гипертекста, например, PHP, а для хранения данных, полученных с OPC сервера можно использовать MySQL. Так же необходимо использовать утилиту для диагностики работы сети, которая будет проверять работоспособность пультов и сервера, а так же активного оборудования на пути от пультов до сервера.
Для получения данных с OPC будет использоваться написанная мною программа, которая работает за счет библиотек утилиты OpenOPC. Данная программа будет посылать запрос раз в день на OPC сервер, а полученные результаты сохранять в базе данных MySQL.
При этом конечный пользователь при обращении к web серверу будет получать мгновенно информацию о работе станков, так как клиентской машине не будет необходимости считать полученные данные.
Данные утилиты являются свободными и кросплатформенными и поэтому их можно установить фактически на любую современную систему, например на unix подобные системы, Windows и другие.
3.20.1 Утилита диагностики сети «Pinger»
Данная утилита требует установленную среду программирования Python. В данном случае она адоптирована под Unix системы и запускается по расписанию. Запускается с помощью скрипта для SH SH - командный интерпретатор, используемый в операционных системах семейства UNIX. В первую очередь, под shell понимаются POSIX-совместимые оболочки, восходящие к Bourne shell, появившемуся в Unix Version 7.:
Данная утилита помогает узнать в каком сегменте сети (активное сетевое оборудование, пульт и сервер обычно работают с протоколом ICMP ICMP (англ. Internet Control Message Protocol -- межсетевой протокол управляющих сообщений) -- сетевой протокол, входящий в стек протоколов TCP/IP. В основном ICMP используется для передачи сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных. Также на ICMP возлагаются некоторые сервисные функции.) произошла неполадка и почему не пришел результат с пульта на сервер.
Основной отчет с пультов на сервер OPC приходит в период от 5:00 до 10:00. В это период сеть должна работать стабильно.
Исходный код программы см. приложение №1.
3.20.2 Opc_client
Данная утилита требует установленную среду программирования Python.
Для работы данной утилиты необходимо, чтобы на OPC-сервере был установлен и запущен в виде службы компонент OpenOPC под название OpenOPC Gateway Service.
Исходный код программы см. приложение №2.
3.20.3 Веб-интерфейс
Веб-интерфейс необходим для того, что бы конечный пользователь мог получить необходимую информацию в понятном виде. В рассматриваемой SCADA-системе веб-интерфейс выполнен на языке PHP с элементами java script. Получение необходимых данных происходит с помощью взаимодействия PHP и MySQL.
Таким образом, интерфейс, полученный на экране клиентской машины представляет собой:
1) С помощью удобного календаря можно выбирать дату, по которой необходимо вывести статистику работы станков.
2) После выбора даты происходит вывод на экран работающих станков и сопутствующая информация.
Информация о станках представляет собой таблицу, в которую входят следующие столбцы:
1) Название оборудования
2) Месторасположение оборудования
3) Время работы оборудования
4) Время работы оборудования под нагрузкой
5) Время простоя оборудования из-за отсутствия заготовок
6) Время простоя оборудования по другим причинам
Так же можно внедрить дополнительные столбцы для отображения других информационных полей, которые поддерживает пульт, подключенный непосредственно к станку.
Данная информация может поступать на OPC-сервер, и впоследствии с помощью OPC-клиента поступать в базу данных, чтобы в дальнейшем ее можно было вывести на экран клиентской машины с помощью веб браузера.
На основании полученных данных конечный пользователь будет уведомлен о реальной загрузке станков, а также, о причинах простоя оборудования.
Наличие данной информации позволяет руководству цеха, плановым службам, а также лицам, ответственным за производство и эффективное использование оборудования, оперативно и целенаправленно влиять на ход производства в соответствии с полученными данными, а также использовать эти сведения для совершенствования организации производства в целом.
SCADA-системы осуществляет сбор информации о состоянии станочного парка в полуавтоматическом и автоматическом режимах. Оба режима работают параллельно и не оказывают влияния друг на друга.
На каждый станок, подключенный к системе, устанавливается пульт сбора данных. На пульт собирается информация в полуавтоматическом режимах.
В автоматическом режиме на пульт сбора данных поступает следующая информация:
· Состояние вводного автоматического выключателя или разъединителя станка (включен/отключен);
· Состояние главных приборов станка (работают/не работают);
· Состояние аварийных блокировок станка (включены/выключены);
· Ток потребляемый станком.
В полуавтоматическом режиме операторы станков вводят информацию о текущем состоянии станка через панель оператора или через сканер штрих-кода. Есть возможность вводить следующие состояния оборудования:
1. Время простоя оборудования, в т.ч. из-за ремонта, из-за отсутствия заготовок, либо по другим причинам.
Данные по каждому станку, собранные в полуавтоматическом и автоматическом режиме обрабатываются в локальном контроллере пульта сбора данных и передаются по сети Ethernet на сервера заводов.
В рассматриваемой SCADA-системе веб-интерфейс выполнен на языке PHP с элементами java script.
Получение необходимых данных происходит с помощью взаимодействия PHP и MySQL.
Поиск данных происходит по дате с помощью календаря, написанного на java script - при выборе определенной даты в календаре, данные передаются в PHP и, в результате запроса, к MySQL.
Получаемый результат с помощью PHP распределяется по таблице и выводится на экран пользователя.
Работоспособность данного веб-интерфейса является кросплатформенной, что было проверено на различных браузерах (Internet Explorer 8.0, FireFox, Safari, Opera), также браузеры мобильных устройств (iPhone 3G и Samsung WiTu с операционной системой Windows Mobile 6.1), на игровой приставке Sony PS3, и везде веб сайт корректно отображался.
Исходный код программы см. приложение №3.
ГЛАВА 4. ОПИСАНИЕ РЕЗУЛЬТАТОВ РАБОТЫ СИСТЕМЫ
Результаты работы SCADA-системы отображены на веб странице. Мы приводим два снимка с экрана, которые наглядно демонстрируют проделанную дипломную работу. На этих снимках пользователь получает необходимые данные о работе оборудвоания, которые предварительно запрашивает. В первом случае при выборе отчета за один день (рис.1), а во втором случае за период (рис. 2), в котором 5 дней. В принципе, возможно получение отчета за любой период (например, декада, месяц, квартал, год и т.д.)
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
ГЛАВА 5. ДОКУМЕНТАЦИЯ
5.1 Техническое руководство по пользованию веб-интерфейсом
В адресной строке Вашего веб-браузера (интернет обозревателя) необходимо ввести имя или ip адрес сервера (сервера, где установлен OPC-клиент) и нажать клавишу “Enter” и в результате откроется страница. Теперь Вам предстоит выбрать какой вид отчета Вас интересует (можно выбрать отчет за один день или за любой другой период, например, за несколько дней, недель, месяцев и т.д.) Если Вас интересует отчет за один день, то необходимо в первое поле ввести необходимую дату, либо выбрать ее на календаре. После ввода даты необходимо нажать на кнопку «Выполнить» и вы получите информацию, выбранную за один день.
Если Вас интересует отчет за период больше, чем один день, то необходимо ввести дату начала периода в первое поле, а дату окончания периода во второе поле, здесь также можно воспользоваться календарем. После ввода дат необходимо нажать на кнопку «Выполнить» и вы получите информацию, выбранную за период.
5.2Техническое руководство для администраторов, обслуживающих OPC-клиент и веб-сервер
Для добавления дополнительных столбцов в таблицу, которая генерируется при запросе пользователя, необходимо изменить следующие файлы.
В opc_client.php:
Добавить переменную, например:
time_work_karusel = opc.read('Random.Int1')
Сначала указать название переменной, а также указать переменную, получаемую с OPC-сервера в (' '). Данную переменную необходимо узнать у организации, которая обслуживает OPC-сервер и подключенные к нему пульты.
Также, в этом файле необходимо изменить sql запрос:
b.query("INSERT INTO `stanok`.`main` (`id_stanok`, `name`, `where`, `time_work`, `time_work_nagruzka`, `time_remont`, `time_nometal`, `time_another`, `date`) VALUES ('NULL', 'Карусель' , '1 пролет', '%s', '%s', '%s', '%s', '%s', CURDATE())" % (time_work_karusel, time_work_nagruzka_karusel, time_remont_karusel, time_nometal_karusel, time_another_karusel))
Если добавляется новое оборудование, то необходимо написать подобный запрос, если же добавляется новая характеристика к существующему оборудованию, то необходимо добавить переменную в запрос.
В файле index.php необходимо изменить следующую строку (если добавляется только новое оборудование, то ничего менять не надо, а если добавляется новая характеристика, то необходимо добавить).
echo '</font><table border=black"><tr><th>Номер</th><th>Название оборудования</th><th>Месторасположение</th><th>Время работы оборудования</th><th>Время работы оборудования под нагрузкой</th><th>Время простоя оборудования из-за ремонта</th><th>Время простоя оборудования из-за отсутствия заготовок</th><th>Время простоя из-за других причин</th></tr>';
for ($i=1; $i<=$rows; $i++)
{
$r=mysqli_fetch_array($result);
echo "<tr>";
echo "<td>$i</td>";
echo "<td>$r[name]</td>";
echo "<td>$r[where]</td>";
echo "<td>$r[time_work]</td>";
echo "<td>$r[time_work_nagruzka]</td>";
echo "<td>$r[time_remont]</td>";
echo "<td>$r[time_nometal]</td>";
echo "<td>$r[time_another]</td>";
}
echo "</tr>";
}
echo "</table>";
В элемент таблицы необходимо внести изменения, а так же внести новую переменную, получаемую из запроса sql.
ЗАКЛЮЧЕНИЕ
Таким образом, данная система позволяет, путем анализа данных полученных о работе трех единиц оборудования, правильно оценить их загрузку, квалификацию персонала работающего на них, эффективность работы планового бюро, бюро подготовки производства, ремонтных служб, мастера (подбор инструмента, оснастки, своевременная подача заготовок, качественный ремонт и т.д.).
Добавляя к анализу данные о работе оборудования в целом участка, цеха, производства данная система позволит правильно оценить работу этих производственных подразделений и соответствующих служб.
Такой анализ позволит правильно оценить возможности производственных подразделений любого уровня, выявить «узкие» места, наметить пути по повышению эффективности их работы, снижению затрат, повышению прибыли, принимать своевременно руководству необходимые решения по управлению материально-техническим снабжением, производством, персоналом, сбытом и т.д., в конечном случае повысить конкурентоспособность предприятия в целом.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Бенкен Е. С. Администрирование web-приложений с использованием PHP и MYSQL (альбом-конспект по курсу). СПБГПУ, СПБ., 2008.
2. Бенкен Е. С. Технологии HTML и XHTML/XML (альбом-конспект к курсу). СПБГПУ, СПб., 2008.
3. Брык И. Ю. Построение вычислительных сетей на основе технологий CISCO. Технология TCP/IP. Конспект лекций. СПБГПУ, СПб., 2007.
4. Кетов Д. В., Державин Д. К. Архитектура UNIX - LUNUX/FREEBDS. Конспект лекций. СПбГПУ, СПб., 2007.
5. Они же. Системное администрирование UNIX. Конспект лекций. СПбГПУ, СПб., 2007.
6. Кудаков А. А. Администрирование Windows. (альбом-конспект по курсу). СПбГПУ, СПб., 2007.
7. Скотт Хокинс. Администрирование Web-сервера Apache и руководство по электронной коммерции. Изд. «Вильямс», 2001. (без указания города издания).
8. www.php.ru
9. www.mysql.ru
1o. www.opcfoundation.org
11. www.openopc.sourceforge.net
12. www.ubuntu.ru
13. www.piton.ru
14. www.google.ru/codesearch
15. www.wikipedia.org
16. www.apache.ru
ПРИЛОЖЕНИЕ
Приложение 1
Утилита pinger (Для диагностики сети)
# -*- coding: utf-8 -*-
import MySQLdb
import OpenOPC
opc = OpenOPC.open_client('192.168.142.130')
opc.connect('Matrikon.OPC.Simulation')
time_work_karusel = opc.read('Random.Int1')
time_work_nagruzka_karusel = opc.read('Random.Int2')
time_remont_karusel = opc.read('Random.Int3')
time_nometal_karusel = opc.read('Random.Int4')
time_another_karusel = opc.read('Random.Int5')
time_work_molot = opc.read('Random.Int6')
time_work_nagruzka_molot = opc.read('Random.Int7')
time_remont_molot = opc.read('Random.Int8')
time_nometal_molot = opc.read('Random.Int9')
time_another_molot = opc.read('Random.Int10')
time_work_tokarniy = opc.read('Random.Int11')
time_work_nagruzka_tokarniy = opc.read('Random.Int12')
time_remont_tokarniy = opc.read('Random.Int13')
time_nometal_tokarniy = opc.read('Random.Int14')
time_another_tokarniy = opc.read('Random.Int15')
db= MySQLdb.connect(host='localhost', user='opc_insert', passwd='stanok', db='stanok')
db.query("INSERT INTO `stanok`.`main` (`id_stanok`, `name`, `where`, `time_work`, `time_work_nagruzka`, `time_remont`, `time_nometal`, `time_another`, `date`) VALUES ('NULL', 'Карусель' , '1 пролет', '%s', '%s', '%s', '%s', '%s', CURDATE())" % (time_work_karusel, time_work_nagruzka_karusel, time_remont_karusel, time_nometal_karusel, time_another_karusel))
db.query("INSERT INTO `stanok`.`main` (`id_stanok`, `name`, `where`, `time_work`, `time_work_nagruzka`, `time_remont`, `time_nometal`, `time_another`, `date`) VALUES ('NULL', 'Молот' , '2 пролет', '%s', '%s', '%s', '%s', '%s', CURDATE())" % (time_work_tokarniy, time_work_nagruzka_tokarniy, time_remont_tokarniy, time_nometal_tokarniy, time_another_tokarniy))
db.query("INSERT INTO `stanok`.`main` (`id_stanok`, `name`, `where`, `time_work`, `time_work_nagruzka`, `time_remont`, `time_nometal`, `time_another`, `date`) VALUES ('NULL', 'Токарный станок' , '3 пролет', '%s', '%s', '%s', '%s', '%s', CURDATE())" % (time_work_molot, time_work_nagruzka_molot, time_remont_molot, time_nometal_molot, time_another_molot))
Скрипт для запуска:
python pinger.py >>$(date +%d_%m_%Y).log
Получаемый файл журнала:
20:52:49 Testing 85.249.168.5 No response
20:53:00 Testing 85.249.168.11 Alive
20:53:01 Testing 85.249.168.12 No response
20:53:12 Testing 85.249.168.13 No response
Приложение 2
OPC Client
# -*- coding: utf-8 -*-
import MySQLdb
import OpenOPC
opc = OpenOPC.open_client('192.168.142.130')
opc.connect('Matrikon.OPC.Simulation')
time_work_karusel = opc.read('Random.Int1')
time_work_nagruzka_karusel = opc.read('Random.Int2')
time_remont_karusel = opc.read('Random.Int3')
time_nometal_karusel = opc.read('Random.Int4')
time_another_karusel = opc.read('Random.Int5')
time_work_molot = opc.read('Random.Int6')
time_work_nagruzka_molot = opc.read('Random.Int7')
time_remont_molot = opc.read('Random.Int8')
time_nometal_molot = opc.read('Random.Int9')
time_another_molot = opc.read('Random.Int10')
time_work_tokarniy = opc.read('Random.Int11')
time_work_nagruzka_tokarniy = opc.read('Random.Int12')
time_remont_tokarniy = opc.read('Random.Int13')
time_nometal_tokarniy = opc.read('Random.Int14')
time_another_tokarniy = opc.read('Random.Int15')
db= MySQLdb.connect(host='localhost', user='opc_insert', passwd='stanok', db='stanok')
db.query("INSERT INTO `stanok`.`main` (`id_stanok`, `name`, `where`, `time_work`, `time_work_nagruzka`, `time_remont`, `time_nometal`, `time_another`, `date`) VALUES ('NULL', 'Карусель' , '1 пролет', '%s', '%s', '%s', '%s', '%s', CURDATE())" % (time_work_karusel, time_work_nagruzka_karusel, time_remont_karusel, time_nometal_karusel, time_another_karusel))
db.query("INSERT INTO `stanok`.`main` (`id_stanok`, `name`, `where`, `time_work`, `time_work_nagruzka`, `time_remont`, `time_nometal`, `time_another`, `date`) VALUES ('NULL', 'Молот' , '2 пролет', '%s', '%s', '%s', '%s', '%s', CURDATE())" % (time_work_tokarniy, time_work_nagruzka_tokarniy, time_remont_tokarniy, time_nometal_tokarniy, time_another_tokarniy))
db.query("INSERT INTO `stanok`.`main` (`id_stanok`, `name`, `where`, `time_work`, `time_work_nagruzka`, `time_remont`, `time_nometal`, `time_another`, `date`) VALUES ('NULL', 'Токарный станок' , '3 пролет', '%s', '%s', '%s', '%s', '%s', CURDATE())" % (time_work_molot, time_work_nagruzka_molot, time_remont_molot, time_nometal_molot, time_another_molot))
Приложение 3
Веб сайт.
Основная страница
index.php
<?php
include("month_rus.php");
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8">
<meta http-equiv="content-style-type" content="text/css">
<title>Мониторинг оборудования</title>
<link rel="stylesheet" href="style.css" type="text/css">
<style type="text/css">
#calc {display:none; z-index:0; position:absolute;
background-color: white;}
#mainarea {z-index: 1;display:inline; width:100%; height:100%}
.dateinput {position:relative; top:0px; left:3px; border:1px solid gray;}
</style>
<script type="text/javascript" src="calendar.js"></script>
<script type="text/javascript" src="functions.js"></script>
<script type="text/javascript">
var calcflag = false;
var cur_form;
</script>
</head>
<font size="14">Доброе время суток, сегодня
<?php
$month=date("m");
$day=date("d");
$year=date("Y");
echo month_rus($day, $month, $year);
?>.
<br>
Нажмите на поле, чтобы выбрать на календаре даты или введите ее в ручную:<br>
<body id="body" onclick="hidecalc()">
<div id="mainarea">
<form action="<?php $date1 = $_POST['date1']; $date2 = $_POST['date2']?>" name="myform" method="post">
<input id="date1" class="dateinput" type="text" name="date1" onfocus="showcalc(this)" onmouseover="javascript: calcflag=true" onmouseout="javascript: calcflag=false">
<input id="date2" class="dateinput" type="text" name="date2" onfocus="showcalc(this)" onmouseover="javascript: calcflag=true" onmouseout="javascript: calcflag=false">
<input name="Submit" type=submit value="Выполнить">
<br>Например:<br>
23-12-2009 25-12-2009 - чтобы получить данные за период<br>
23-12-2009 - чтобы получить данные за день
<br>
<?php
if (empty ($date1))
{echo "<br>Нет данных для отображения";}
else
if (empty ($date2))
{
$sqldate = $date1;
echo "<br>Выбран отчет за ";
$parts = explode('-', $sqldate);
$convertdate="{$parts[2]}-{$parts[1]}-{$parts[0]}";
echo "$convertdate <br>";
$db=mysqli_connect ("localhost", "stanok_site", "stanok")
or die ("can't connect to server");
mysqli_select_db($db, "stanok");
$request="select * from main where date='$sqldate'";
$result=mysqli_query ($db,$request);
$rows=mysqli_num_rows($result);
mysqli_close($db);
if (empty($rows))
{echo "Нет данных для отображения";}
else
{
echo '</font><table border=black"><tr><th>Номер</th><th>Название оборудования</th><th>Месторасположение</th><th>Время работы оборудования</th><th>Время работы оборудования под нагрузкой</th><th>Время простоя оборудования из-за ремонта</th><th>Время простоя оборудования из-за отсутствия заготовок</th><th>Время простоя из-за других причин</th></tr>';
Подобные документы
Человеко-машинный интерфейс. Текстовый и смешанный (псевдографический) интерфейсы. Применение человеко-машинного интерфейса в промышленности. Программные средства для разработки человеко-машинного интерфейса. Среда разработки мнемосхем GraphworX32.
дипломная работа [5,3 M], добавлен 19.03.2010Выбор сервера базы данных, инструментальных средств разработки клиентского интерфейса и технологий. Описание таблиц базы данных системы мониторинга. Разработка инструментальных средств создания элементов системы. Интерфейс генерации тестов. Расчет затрат.
дипломная работа [1,9 M], добавлен 12.03.2013Анализ предметной области. Выработка требований и ограничений. Серверная часть информационной системы. Запросы клиентского приложения. Триггеры для поддержки сложных ограничений целостности в базе данных. Пользовательский интерфейс клиентского приложения.
курсовая работа [2,6 M], добавлен 21.02.2016Основные понятия серверов. Модель клиент-сервер. Классификация стандартных серверов. Недостатки файл-серверной системы. Криптографические методы защиты информации. Серверы удаленного доступа. Методы и средства обеспечения безопасности информации.
контрольная работа [36,3 K], добавлен 13.12.2010Функции системы и обоснование выбора контроллера. Обработка данных по web–технологии клиент-сервер. Организация Web–интерфейса в инструментальном пакете Trace Mode. Методика расчета показателей надежности. Структурная схема с цифровым регулятором.
дипломная работа [1,6 M], добавлен 30.09.2013Основные понятия серверов, базы данных и их классификация. Задача логического проектирования - разработка схемы, ориентированной на выбранную СУБД. Понятия сервер и клиент и закрепленные за ними роли. Специализация и комплектация серверного оборудования.
реферат [33,2 K], добавлен 08.04.2009Автоматизированная система управления, важные компоненты. Описание SCADA-системы WinCC v6. Graphics Designer как редактор для разработки кадров пользовательского интерфейса. Alarm Logging как редактор для конфигурирования и архивации аварийных сообщений.
презентация [415,0 K], добавлен 06.08.2013Системный анализ предметной области. Выбор инструментальных средств для создания программного обеспечения. Программирование на стороне SQL-сервера. Создание клиентского Win-приложения, пользовательский интерфейс. Физическое проектирование базы данных.
курсовая работа [3,7 M], добавлен 20.11.2013Описание предметной области и разработка электронного учебника на основе архитектуры "клиент – сервер". Тестирование программы менеджера и создание интерфейса главного меню. Вход в программу в качестве пользователя и обеспечение перехода к данным лекций.
курсовая работа [1,5 M], добавлен 26.02.2015Описание системы управления реляционными базами данных MySQL. Изучение факторов влияющих на пропускную способность в беспроводных сетях. Особенности применения языка Java Script. Методы тестирования web-приложений. Разработка пользовательского интерфейса.
дипломная работа [2,1 M], добавлен 24.06.2015