В SCADA системе Vijeo Citect 2015 появилась новая мощная функциональность - возможность использования программной архитектуры Microsoft .NET Framework при разработке систем диспетчеризации. Как использовать эту функциональность, какие существуют нюансы, какие могут быть получены преимущества от ее использования - все это рассматривается в статье.
Назначение статьи
Цель статьи - дать знания о том, как в Vijeo Citect 2015 получить доступ к .NET сборкам. Такая возможность позволяет напрямую использовать Microsoft .NET Framework, либо самостоятельно написанные .NET сборки через ряд cicode функций в Vijeo Citect 2015. Благодаря этому достигается большая гибкость в разработке систем диспетчеризации. Например, надо ли нам получить данные от веб-службы в систему диспетчеризации или передать данные из системы диспетчеризации во внешнюю информационную систему, все это делается достаточно эффективно с использованием .NET Framework, более того, огромное количество различных примеров использования .NET Framework в сети Интернет существенно упрощает и ускоряет решение многих инженерных задач.
Статья покажет, как создать простую .NET сборку и как её использовать в Vijeo Citect 2015 для тех, у кого недостаточно опыта в написании своих собственных .NET сборок. Для более продвинутых приводятся примеры прямого вызова функций из .NET Framework, а также описывается как .NET Framework может быть использован для построения более сложных решений.
Статья является комплементарной ко встроенной или онлайн помощи Vijeo Citect. Для получения более детальной информации об использованных в статье cicode функциях, пожалуйста, обратитесь ко встроенной или онлайн помощи Vijeo Citect.
Терминология
Термин | Описание |
---|---|
Assembly (Сборка) |
Сборка - файл, который создается автоматически, когда C# проект успешно откомпилирован. Сборка может быть в виде исполняемого файла (с расширением .exe) или в виде динамически связываемой библиотеки (файл с расширением .dll). |
Class |
Класс - тип данных, который описывает объект. Классы содержат данные и методы, которые выполняют действия над данными класса. |
Method (Метод) |
Метод - имя блока кода, который определяет поведение класса или структуры. |
Property |
Свойство - член класса, которое обеспечивает гибкий механизм для чтения, записи или вычисления значения для приватного поля класса. |
Member (Член класса) |
Член класса - поле, свойство, метод или событие объявленные в классе или структуре. |
Struct (Структура) |
Структура - составной тип данных, который обычно используется для хранения нескольких переменных, которые логически связанны друг с другом. Структура может также содержать методы и события. Структура не поддерживает наследование, но поддерживает интерфейс. |
Static (Статичный) |
Класс или метод объявленный как статический, создаются автоматически, поэтому нет необходимости создавть их экземпляры с помощью ключевого слова new. |
Object (Объект) |
Объект - экземпляр класса. Объект существует в памяти и имеет данные и методы, которые выполняют действия над данными объекта. |
MSDN | Microsoft developer network (Сеть разработчиков Microsoft). Сайт содержащий документацию и примеры использования Microsoft .NET Framework. Сайт находится по адресу: http://msdn.microsoft.com. |
Namespace (Пространство имен) |
Namespace - ключевое слово, которое используется для объявления области видимости, которое в свою очередь содержит набор связанных объектов. Можете использовать пространство имен для организации элементов кода и для создания глобально уникальных типов. |
Constructor (Конструктор) |
Конструктор - специальный метод класса или структуры, который инициализирует объекты соответствующего типа. |
Используемые сicode функции
В статье будут часто использоваться ряд cicode функций, которые позволят получать доступ к .NET сборам. Перед чтением статьи, пожалуйста, изучите их подробное описание во встроенной или онлайн помощи Vijeo Citect 2015:- DllClassCreate;
- DllClassCallMethod;
- DllClassGetProperty;
- DllClassDispose.
Hello World (C#)
В этом примере будет создана простая C# сборка, которая будет вызвана из cicode Vijeo Citect 2015. В примере используется Visual Studio 2015 Community для создания .NET сборки на языке программирования C#.
Полный код на C# данного примера может быть найдет в Приложении А: "Hello World!" код на C# (Visual Studio 2015).
Создание новой библиотеки классов
Первое, что необходимо сделать - это запустить Visual Studio 2015 Community и создать новый проект.
Рис. 1. Создание проекта новой библиотеки классов
В диалоге создания нового проекта выберите "Class Library" и введите имя библиотеки классов и имя решения "HelloWorld", затем щелкните на кнопке "OK".
Рис. 2. Выбор типа проекта "Class Library"
Рис. 3. Новый проект библиотеки классов HelloWorld создан.
Переименуйте класс "Class1" в "HelloWorld". В результате должен получится следующий код:
Теперь сохраним проект, для этого необходимо щелкнуть на кнопке "Save all".
Конструктор
Для создания экземпляра класса, класс должен содержать конструктор. Каждый не статический класс может содержать один и более конструкторов. Каждый конструктор должен отличаться набором аргументов. В нашем случае конструктор будет без аргументов.
Создадим в классе "HelloWorld" приватное поле строкового типа с именем "_helloWorldString", поле будет содержать текстовое сообщение. В конструкторе полю присвоим значение "Hello World!", как показано ниже:
Свойства
Свойства позволяют читать приватные поля и присваивать им значения. Для выполнение этих действий для каждого свойства необходимо определить get-метод, для чтения значения и set-метод, для присвоения значения. В нашем примере добавим публичное свойство "Message" в класс "HelloWorld", которое возвращает и присваивает значение приватному полю "_helloWorldString". Чтобы можно было выполнять чтение и присваивание значения определим соответственно get- и set-методы, как показано ниже:
Методы
Метод - это группа инструкций, которые выполняют определенную задачу. Аналогично cicode функции, метод может иметь ряд аргументов и может возвращать (опционально) некоторое значение.
Создадим метод, который будет отображать стандартное модальное диалоговое окно Windows с текстом из свойства "Message". Для отображения стандартного модального диалогового окна будем вызывать метод из .NET Framework. Чтобы можно было использовать данный метод, необходимо добавить в наш проект ссылку на соответствующее пространство имен, которому принадлежит данный метод. Для этого щелкните правой кнопкой мыши на элемент "References" в "Solution Explorer" и выберите пункт контекстного меню "Add Reference...".
В диалоговом окне "Reference Manager" щелкните слева на элементе "Assemblies", затем на элементе "Framework" и прокрутите открывшийся табличный список вниз, пока не увидите сборку "System.Windows.Forms", выделите её и нажмите на кнопку "OK".
После добавления в проект ссылки на сборку "System.Windows.Forms", необходимо воспользоваться инструкцией "using", чтобы получить доступ ко всем членам пространства имен "System.Windows.Forms", как показано ниже:
Теперь можно реализовать метод для отображения диалоговое окно, как показано ниже:
Завершив написание простой .NET сборки необходимо выполнить процедуру ее построения. Для этого щелкните правой кнопкой мыши на элементе "HelloWorld" в "Solution Explorer" и выберите пункт контекстного меню "Build". После успешного построения решения будет создан файл "HelloWorld.dll" в директории "\bin\Debug" проекта. В нашем случае .NET сборка будет находится по пути "D:\www.proasutp.com\HelloWorld\HelloWorld\bin\Debug".