Научная статья на тему 'Исследование возможности создания модуля визуализации и его подключения к базе программной среды MatLab'

Исследование возможности создания модуля визуализации и его подключения к базе программной среды MatLab Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
143
22
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
SCADA-СИСТЕМА / СПОСОБЫ ПОДКЛЮЧЕНИЯ К MATLAB / МОДУЛЬ MATLAB / SCADA-SYSTEM / METHODS TO CONNECT TO MATLAB / MODULE MATLAB

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Евстропов Василий Александрович

Статья посвящена исследованию возможности написания дополнительного модуля к программному продукту MatLab, позволяющего использовать графическую визуализацию при работе. Исследованы способы подключения дополнительной динамической библиотеки, и методы написания с использованием различных языков программирования. Изучены приемы объединения трех уровней (ERP, MES, SCADA) автоматизации производства и их интеграции в единый программный пакет.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Евстропов Василий Александрович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Research of the possibility of visualization module and its connection to the base ofMATLAB

The article is dedicated to the possibility of creating an additional module to the program package MatLab, thatallows using the graphical visualization at work. It explores ways to connect an additional dynamic library, and methods of creating it using a variety of programming languages. Studied Methods of combining the three levels (ERP, MES, SCADA) of automation, and integrating them into a single program package have been studied.

Текст научной работы на тему «Исследование возможности создания модуля визуализации и его подключения к базе программной среды MatLab»

ИССЛЕДОВАНИЕ ВОЗМОЖНОСТИ СОЗДАНИЯ МОДУЛЯ ВИЗУАЛИЗАЦИИ И ЕГО ПОДКЛЮЧЕНИЯ К БАЗЕ ПРОГРАММНОЙ СРЕДЫ МЛТЬЛБ

В. А. Евстропов

Научный руководитель — С. В. Швец, канд. техн. наук, проф.

Хакасский государственный университет им. Н. Ф. Катанова

Статья посвящена исследованию возможности написания дополнительного модуля к программному продукту MatLab, позволяющего использовать графическую визуализацию при работе. Исследованы способы подключения дополнительной динамической библиотеки, и методы написания с использованием различных языков программирования. Изучены приемы объединения трех уровней (ERP, MES, SCADA) автоматизации производства и их интеграции в единый программный пакет.

Ключевые слова: SCADA-система, способы подключения к MatLab, модуль MatLab.

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

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

Требования к информационным системам (ИС) финансово-экономической деятельности для различных областей, как правило, единообразны.

Производственная деятельность более специфична в силу использования различного сырья, технологий, способов его обработки, выпуска конечной продукции и поэтому необходимо контролировать технологические цепочки на всех этапах. Даже незначительные сбои могут привести к авариям и финансовым потерям. Поэтому контроль нужно осуществлять непрерывно и в реальном времени, что требует от ИС надежности и высокого качества [1].

В настоящее время разработано достаточно большое количество отраслевых и производственных автоматизированных систем управления (АСУ), реализующих автоматизированный сбор и обработку информации, необходимой для принятия решений по управлению объектом. При этом обычно в АСУ выделяют три уровня: ERP (Enterprise Resource Planning), MES (Manufacturing Execution System), SCADA (Supervisory Control and Data Acquisition) [2].

Уровень ERP включает в себя планирование ресурсов предприятия, в том числе бухгалтерию, снабжение, маркетинг и управление ресурсами предприятия. Уровень MES является системой исполнения производства -управление технологией. Уровень SCADA представляет собой диспетчерскую систему сбора и управления -систему оперативного управления технологическим процессом. В настоящее время на рынке программного обеспечения систем автоматизации имеется большое число разнообразных SCADA-систем. К числу наиболее распространенных относятся следующие:

CIMPLICITY HMI, фирма-разработчик GE FANUC Automation, США;

Citect фирмы CI technologies, Австралия;

IFIX фирмы Intellution, США;

GENESIS-32 фирмы ICONICS, США;

InTouch фирмы Wonderware, США;

SIMATIC WinCC фирмы Siemens, Германия;

Wizcon фирмы PC Soft International, Израиль;

Real Flex for QNX Real Flex Systems, США;

TRACE MODE AdAstrA Research Group, Россия;

КРУГ-2000 НПФ «КРУГ», Россия;

MasterSCADA фирмы InSat Company, Россия.

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

В настоящей работе предлагается использовать программный продукт MatLab, последние версии которого позволяют эффективно решать задачи уровней ERP и MES. Задачи уровня SCADA также могут быть решены на этой платформе при соответствующей доработке.

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

Рассмотрим наиболее важные в данном аспекте тулбоксы.

Data Acquisition Toolbox - коллекция M- и MEX-(|)aiooB(DLLs). созданных в среде MatLab, обеспечивают:

- среду для обработки информации, получаемой с подключенного PC-совместимого оборудования для сбора данных;

- поддержку аналогового входа (AI), аналогового выхода (АО), и цифровых I/O (DIO) подсистем, включая мгновенные аналоговые I/O преобразования;

- поддержку наиболее распространенного оборудования:

1) модули Agilent Technologies E1432A/33A/34A VXI;

2) платы, использующие драйвера DriverLINX;

3) платы Measurement Computing Corporation (ComputerBoards);

4) платы National Instruments, которые используют программное обеспечение NI-DAQ (кроме SCXI);

5) параллельные порты LPT1-LPT3;

6) звуковые карты Windows.

- дополнительно можно использовать Data Acquisition Toolbox Adaptor Kit для работы с неподдерживаемым оборудованием.

Database Toolbox дает возможность пользоваться мощными инструментами визуализации и анализа данных MatLab для работы с базами данных, а также обеспечивает взаимодействие с ODBC/JDBC-совместимыми базами данных: Oracle, Sybase SQL Server, Sybase SQL Anywhere, Microsoft SQL Server, Microsoft Access, Informix и Ingres и позволяет пользователям, незнакомым с SQL, работать с ODBC/JDBC-совместимыми базами данных из MatLab.

Control System Toolbox представляет собой алгоритмы анализа, проектирования и моделирования систем автоматического управления. Пакет включает традиционные передаточные функции и методы пространства состояний. Данный инструмент позволяет моделировать и анализировать непрерывные и дискретные системы.

Fuzzy Logic Toolbox имеет простой интерфейс для диагностики нечетких моделей. Поддерживаются адаптивные нечеткие нейронные сети. Интерфейс Fuzzy Logic Toolbox позволяет интерактивно следить за поведением системы. Данный инструмент предназначен для совместной работы с Simulink.

Financial Toolbox - основа решения финансовых задач. Пакет Financial может использоваться для расчета прибыли, анализа депозитов, оптимизации инвестиций. Алгоритмы пакета Financial позволяют вычислять, в том числе процентные ставки по кредитам, кредитные поступления, коэффициенты рентабельности и вычислять показатели износа [4].

Все вышеизложенное является предпосылкой для создания нового программного продукта, который будет являться модульным приложением системы MatLab. Учитывая набор инструментов, MatLab является универсальной системой, которая при использовании модуля визуализации объединит все три уровня АСУ.

Возможно несколько способов подключения модуля к MatLab:

- написание расширения с помощью языков программирования, таких как C++, Fortran и т. п.;

- написание собственной программы, которая будет использовать вычислительное ядро MatLab в качестве вычислительного сервера;

- управление ActiveX Automation объектами, а также командами DDE (Dynamic Data Exchange);

- обмен со средой MatLab через Mat-файлы, описание структуры которых находится в системной документации.

Возможности подключения к данному программному пакету являются весьма полными и гибкими, однако наиболее часто создание отдельных узлов осуществляется программированием на языке C++. Как правило, это обусловлено тем, что С++ обрабатывает данные намного быстрее самой среды MatLab.

Для подключения к среде достаточно написать обычную динамическую библиотеку (DLL) с использованием специального интерфейса. В расширениях MatLab для обмена параметрами с вычислительной средой MatLab используется всего лишь одна структура - mxArray (Matlab Extension Array). Программный интерфейс создаваемой динамической библиотеки прост. Обязательно должна быть экспортирована функция с двумя параметрами - входным массивом структур mxArray и выходным массивом структур mxArray. Соответственно задача модуля расширения заключается в том, чтобы на основе входной информации создать выходной массив. Необходимо подчеркнуть, что mxArray может описать любую переменную MatLab и дает возможность создать расширение, работающее с любым типом данных[5].

В DLL, вызываемой из MatLab, обязательно должна присутствовать экспортируемая функция mexFunction. Её прототип выглядит следующим образом:

void cdecl mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] );

MexFunction аналогична функции main( ) в обычных С-программах, т. е. с нее начинается выполнение кода. Рассмотрим параметры этой функции. Общий вызов MatLab-функции выглядит следующим образом:

[outParam1, outParam2, outParam3] = mlFunc(inParam1, inParam2), где inParam1, inParam2 - входные параметры, outParam1, outParam2, outParam3 - выходные параметры.

При этом число и тех, и других параметров для одной и той же функции может быть разным. Так как DLL-функция должна работать так же, как и любая функция MatLab, то при её выполнении необходимо знать, сколько задано входных и выходных параметров. Для этого служат параметры:

- int nlhs (количество выходных параметров);

- int nrhs (количество входных параметров).

Сами параметры передаются в массивах plhs (выходные параметры) prhs (входные параметры).

Эти параметры имеет тип mxArray.

Существует ряд функций для работы с этим типом, например:

- bool mxIsChar(const mxArray *array_ptr) - указывает, является ли данный mxArray строкой или нет;

- mxArray То String - возвращает строку, содержащуюся в mxArray;

- double *mxGetPr(const mxArray *array_ptr) возвращает указатель на первый элемент массива, содержащийся

в параметре.

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

MatLab, дополнительные модули не являются необходимыми. Соответственно задача сводится у построению

удобного пользовательского интерфейса.

При этом существует ряд сложностей, связанных с переносом численных значений из модуля в MatLab.

Основным типом данных, с которым производятся вычисления в среде MatLab, являются конечные десятичные дроби, приближающие с заданной точностью произвольные вещественные числа (double). Вещественное число задаётся мантиссой и показателем степени. Целые числа не имеют дробных частей, но они обрабатываются системой MatLab в той же форме, что и дробные числа.

Тип данных double применяется «по умолчанию» к каждой переменной. Под мантиссу и показатель степени отводится 8 байт памяти [6]. В результате достигается точность представления десятичных чисел порядка 15 значащих цифр.

Произвольное изображение на экране компьютера представляет собой массив пикселей, каждый из которых характеризуется своим цветом. Цвет пикселя определяется тремя составляющими: красным, зелёным и синим (Red, Green, Blue - RGB). Для задания величины составляющей цвета пикселя достаточно одного байта памяти (8 битов), где можно записать целые числа от нуля до 255.

Каждому пикселю экрана должны соответствовать три целых числа в диапазоне от 0 до 255. В системе MatLab таким целым числам соответствует тип данных, обозначаемый как uint8. Под такой тип данных отводится в памяти всего один байт, вместо 8 байт для обычных вещественных (дробных) чисел типа double. По умолчанию любой переменной в системе MatLab ставится в соответствие тип double независимо от числовых значений, которые присваиваются переменным [6].

Например, в результате выполнения следующей команды P1 = 128 создаётся переменная с именем P1 и типом double, которой присваивается значение 128. Для хранения этого значения достаточно одного байта памяти, но для переменной P1 типа double отводится 8 байт памяти. Как можно заметить, происходит перерасход памяти.

Чтобы избежать такого перерасхода, переменную нужно объявлять как целую, используя модификатор uint8: P2 = uint8(128).

Созданная таким образом переменная P2 считается целой, и под неё отводится один байт памяти. В системе MatLab подобные переменные используются исключительно для хранения целых значений от 0 до 255 (с целью экономии памяти) и не предназначены для вычислений. Например, для следующей команды P2 = P2 + 1; получим сообщение об ошибке: ??? Function '+' not defined for variables of class 'uint8'.

Результатом обработки данных ситемой MatLab является большой массив данных, который трудно анализировать без визуализации. Поэтому дополнительная графическая система представляет практическую ценность.

Ее возможности должны быть разнообразными, но, прежде всего, следует создать наиболее простые в использовании возможности, которые автоматически реализуют трёхмерную графику без специальных усилий со стороны пользователя. Пусть в точке с координатами x1,y1 вычислено значение функции z=f(x,y) и оно равно z1. В иной точке x2,y2 вычисляют значение функции z2. Продолжая этот процесс, модуль получит массив точек (x1,y1,z1), (x2,y2,z2), ... (xN,yN,zN) количеством N. Специальные функции позволят проводить через эти точки гладкие поверхности и проецировать их на дисплей.

Точки, как правило, располагаются в области определения функции в виде матрицы. В нашем случае набор точек представляет собой две матрицы с одинаковой структурой: матрица x-координат и матрица y-координат. Необходимо создать функцию, на входе которой будут два вектора, представляющие массивы точек на осях координат, и которая возвращает сразу два искомых двумерных массива. Каждая линия графика состоит из отрезков прямых, образованных набором точек, с координатами из одинаковых столбцов матриц X, Y и Z. То есть первая линия соответствует первым столбцам матриц X, Y Z; вторая линия - вторым столбцам этих матриц и так далее.

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

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

Опираясь на вышеизложенное, можно предположить, что дополнительный модуль к программному пакету MatLab позволит с большей скоростью обрабатывать графические данные, в том числе - трехмерные объекты.

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

Сценарий - это текстовый файл, где в нужном порядке записаны команды, подлежащие последовательному выполнению. Создать такой файл можно с помощью любого текстового редактора, но система MatLab располагает собственным текстовым редактором для этих целей. Сценарий производит вычисления как с переменными, которые определяются непосредственно внутри него, так и с переменными, ранее определёнными в рабочем пространстве системы, следовательно, пространство переменных у них общее [7].

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

Таким образом, можно сделать заключение о целесообразности и возможности создания новой конкурентоспособной SCADA-системы на базе MatLab, обладающей достоинствами своих предшественников и учитывающей замечания к ним.

Библиографический список

1. Мамиконов, А. Г. Методы разработки автоматизированных систем управления / А. Г. Мамиконов. - М.: 1973.

2. Информационные системы в металлургии : учебник для вузов / Н. А. Спирин, В. В. Лавров; под ред. Н. А. Спирина. - Екатеринбург: Уральский государственный технический университет - УПИ, 2004. - 495 с.

3. Rabiner, L. R., B. Gold. Theory and Application of Digital Signal Processing [Text]. - Englewood Cliffs, NJ: Prentice Hall, 1975.

4. http://www.mathworks.com/help/techdoc/apiref/mxarray.html (Дата обращения 25.07.2012)

5. Гонсалес, Р. Цифровая обработка изображений в среде MatLab / Р. Вудс, С. Эддинс. - М: Техносфера, 2006. - 616 с.

6. Иглин, С. П. Математические расчеты на базе MatLab / С. П. Иглин. - С-Пб: «BHV-Санкт-Петербург», 2005. - 640 с.

© Евстрапов В. А., 2012

i Надоели баннеры? Вы всегда можете отключить рекламу.