ЖУРНАЛ СТА №3/2023
ного метода), что позволяет создавать и использовать его экземпляры. Для примера опишем требуемое по- ведение котла модели М1 (класс BoilerModelM1 ) с помощью UML-диа- граммы состояний (см. рис. 3). При инициализации начального состояния запускается генератор, т.е. он будет все- гда работать и периодически (напри- мер, каждые 0,5 с) вызывать метод tick() . В начальном состоянии ( wait start ) котёл ожидает запуска. Каждое состоя- ние имеет свой код, который хранится в виде значения атрибута status . При событии вызова метода startHeating() , если температура воды ( outWaterTemp ) меньше 90 градусов, то подаётся искра ( spark ), открывается газовый клапан ( gasValve ) и запускается таймер конт- рольного времени розжига горелки. Также происходит переход в составное состояние ожидания останова котла ( wait stop ). Здесь начальным состояни- ем является состояние запуска горения ( start burning ). В итоге status примет значение 1. По истечении контрольно- го времени (например, 4 с) возникает событие вызова метода timeout() . Если у горелки есть пламя ( flame = true ), то отключается подача искры ( spark = false ) и происходит переход в состояние горения ( burning ). Если у горелки нет пламени, то отключается подача ис- кры, закрывается газовый клапан ( gasValve = false ) и происходит переход в состояние ошибки ( error ). Если в со- стоянии горения ( burning ) пламя погас- ло, то при очередном событии вызова метода tick() будет закрыт газовый кла- пан и произойдёт переход в состояние ошибки ( error ). В составном состоянии ( wait stop ) котёл ожидает останова. При событии вызова метода stopHeating() го- релка немедленно прекращает свою ра- боту и происходит переход в начальное состояние (wait start) . Реализация всех четырёх методов класса BoilerModelM1 задана на диа- грамме состояний. Например, метод startHeating() проверяет два условия: ( status = 0 ) и ( outWaterTemp < 90 ). Если оба условия выполняются, то spark и gasValve устанавливаются в True , запус- кается таймер – timer.run() , status уста- навливается в 1. Если хотя бы одно из условий не выполняется, то ничего не происходит. Остальные методы стро- ятся аналогично. Драйвер для управления газовым кот- лом задаётся набором из этих четырёх методов: timeout() , tick() , startHeating() , stopHeating() . Для каждой модели котла разрабатывается свой драйвер, кото- рый должен подгружаться OPC-серве- ром при создании объекта. Драйвер может быть более сложным, чем в приведённом примере, но вся эта сложность скрыта от OPC-клиента. Для управления котлом со сложным алго- ритмом запуска и останова OPC-клиент всегда использует только два простых метода: startHeating() и stopHeating() со- ответственно. Драйвер для управления газовым котлом может быть изменён, но это никак не повлияет на работу OPC-клиента – для него интерфейс с объектом OPC-сервера, представляю- щим реальный котел, остаётся не- изменным. Таким образом, изменения инкапсулированной реализации клас- са прозрачны для OPC-клиента. Инкапсуляция делает реализацию класса недоступной, т.е. исключает лю- бое влияние на неё извне. В итоге за по- ведение оборудования отвечает только реализация. Следовательно, требова- ния корректности управления обору- СТА 3/2023 57 www.cta.ru НОУ - ХАУ ОТВЕТСТВЕННАЯ ЭЛЕКТРОНИКА ДЛЯ ЖЕСТКИХ УСЛОВИЙ ЭКСПЛУАТАЦИИ 100% РОССИЙСКАЯ КОМПАНИЯ • Модификация КД существующего изделия • Разработка спецвычислителя на базе COM-модуля • Конфигурирование модульного корпусированного изделия • Сборка магистрально-модульной системы по спецификации заказчика • Разработка изделия с нуля КОНТРАКТНОЕ ПРОИЗВОДСТВО Разработка электронного оборудования по ТЗ заказчика в кратчайшие сроки • ОКР, технологические консультации и согласования • Макеты, установочные партии, постановка в серию • Полное комплектование производства импортными и отечественными компонентами и материалами; поддержание складов • Серийное плановое производство; тестирование и испытания по методикам и ТУ Контрактная сборка электроники уровней модуль/ узел/ блок/ шкаф/ комплекс ЗАКАЗНЫЕ РАЗРАБОТКИ ( 4 9 5 ) 2 3 2 - 2 0 3 3 • WWW . D O L OM A N T . R U Реклама
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy