3. Обобщенное представление классов

Как уже отмечалось, оборудование современной СУТС разрабатывается исходя из двухуровневой схемы: на нижнем уровне находятся периферийные приборы - станции локальные технологические (СЛТ), а на верхнем уровне находятся пульты управления - станции операторские (СО). Все приборы (СО и СЛТ) связаны как правило магистралью. Собственно логическое управление осуществляется в СЛТ как на основе анализа входной локальной информации, так и по командам, формируемым в СО. Локальная информация из СЛТ передается в СО для представления оператору. Нас больше будут интересовать алгоритмы СЛТ.

Первый накопленный автором опыт синтеза функционального ПО СЛТ с использованием ООП показал ряд положительных свойств, а именно:

* Алгоритмы управления и контроля отдельными агрегатами оформлены в виде автономных классов,
* Классы изолированы друг от друга в силу инкапсуляции и могут быть независимо спроектированы и отлажены,
* Объекты классов реализуются строго последовательно, что существенно упрощает алгоритмизацию и программирование,
* Объектно-ориентированные алгоритмы отвечают требованию независимых фрагментов,
* В целом ПО слабо связано с используемой операционной системой, и может быть сравнительно легко перенесено даже в простейшую среду MS DOS.



На базе изложенного автором предложена концепция типового класса контроля и управления агрегатом общего вида. При этом полагаем, что класс размещается на текущем программно-аппаратном уровне, нижним уровнем по отношению к классу является уровень оборудования управляемого (контролируемого) агрегата, верхним уровнем по отношению к классу является программно-аппаратное обеспечение станций операторских.
Определим типовой класс как десятку
(3.1)
T = {A, S, D, X, Y, U, V, K, M, Z},
где:

* А - множество настроек объекта класса Т,
* S - множество состояний автоматных алгоритмов, входящих в класс Т как методы,
* D - множество закрытых данных - членов класса Т,
* X - множество входных сигналов нижнего уровня, или множество контролируемых параметров агрегата,
* Y - множество выходных сигналов нижнего уровня (управляющие агрегатом сигналы),
* U - открытые входные данные - члены класса Т,
* V - открытые выходные данные - члены класса Т,
* К - множество команд с верхнего уровня, на которые должен реагировать объект класса Т,
* М - множество сигналов, посылаемых объектом класса Т на верхний уровень
* Z - множество открытых и закрытых методов класса Т.



Графическая структура класса изображена на рис.4.



Множество Z = {z0, z1, ... , zN} представляет собой набор открытых и закрытых методов (функций-членов класса Т). Методы могут быть переопределяемыми (виртуальными). Обязательными методами являются:

* run - основной открытый метод (z0), в теле которого последовательно вызываются остальные N методов класса Т. Если Т - базовый класс, то метод run может быть либо виртуальным, либо избыточным (вызывающим пустые функции-члены).
* get - закрытый метод (z1), который осуществляет вызов и запоминание входной информации (X) нижнего уровня, а также осуществляющий необходимые преобразования этой информации к виду, удобному для последующей обработки. Метод может быть виртуальным.
* put - закрытый метод, осуществляющий вывод результатов обработки как на нижний уровень (Y), так и на верхний уровень (M). Метод может быть виртуальным.
*



Не обязательными, но наиболее часто используемыми являются закрытые, в том числе виртуальные, методы Zon и Zoff обработки команд (К) или условий автоматического включения - отключения (U) управляемого агрегата.

Кроме перечисленных, класс может содержать и другие закрытые методы (подмножество Zcl) и открытые методы (подмножество Zop).

Множество настроек А - перечень данных и функций, которые должны идентифицировать и инициализировать конкретные объекты класса Т. Данный перечень включается в качестве набора параметров в открытом методе, называемом конструктором класса и имеющем то же имя что и класс Т. В теле конструктора выполняется присваивание закрытым данным - членам класса значений параметров из множества А.

Множество состояний S = {s0, s1, ... , sN} объекта класса Т состоит из перечня наименований состояний алгоритмов методов z0, ... , zN. Таким образом, объект класса Т характеризуется вектором значений переменных состояния всех алгоритмов - методов класса. Переменные состояний должны иметь имена, начинающиеся с буквы s и далее имени метода. Например, sget, sput, szon и так далее. Переменные состояний принадлежат к закрытым данным - членам класса Т. Эти переменные недоступны другим алгоритмам вне объекта класса Т, но являются доступны всем методам данного класса. При необходимости иметь информацию о состоянии алгоритма того или иного метода класса необходимо предусмотреть специальный открытый метод, возвращающий при его вызове значение переменной состояния.

Множество D представляет собой набор закрытых данных - членов класса, используемых в функциях - членах класса. Эти данные запоминаются, модифицируются и сохраняются от цикла к циклу.

Множество U - это открытые данные - члены класса Т, доступные для модификации из других объектов других классов.

Множество V - это открытые данные - члены класса Т, доступные для чтения другими объектами других классов.

Множество К - это набор кодов команд, на которые должны реагировать конкретные объекты данного класса. Эти коды задаются и запоминаются конструктором класса. Код команды, получаемой из станции операторской обозначим " komanda ". Закрытые переменные - конкретные коды команд начинаются с буквы К, например: Kon, Koff (включить и отключить, соответственно).

Множество М - сигналы, передаваемые в станцию операторскую. Эти сигналы могут быть двух типов. Первый тип сигналов предполагает передачу в станцию операторскую пары: номер сообщения и обобщенного кода состояния контролируемого агрегата. Номер сообщения задается одним из параметров настройки А. Обобщенный код формируется всеми методами класса и кодируется методом put. При этом сигналы первого типа передаются в станцию операторскую в произвольном порядке от различных объектов различных классов.

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

Множество Х представляет собой подмножество разрядов вектора всех входных двоичных сигналов, получаемых методом опроса в каждом программном цикле (с помощью драйверов ввода). Номера разрядов перечисляются в множестве А параметров настройки. (Для класса измерений или вычисления уставки множество Х есть либо дискретное значение аналогового параметра, либо множество последовательных отсчетов, например, синусоидального сигнала).

Множество Y - это значения подмножества разрядов вектора всех выходных дискретных сигналов контроллера. Номера разрядов этого подмножества задаются в множестве А параметров настройки. Множество Y формируется методом put на основе результатов вычислений в остальных методах класса.

Предложенная схема типового класса контроля и управления агрегатом используется в дальнейшем как база для синтеза конкретных классов контроля, управления и измерений.
Information
  • Posted on 31.01.2010 21:58
  • Просмотры: 774