SMI для CRW-DAQ


SMI++ или просто SMI (state manager interface) - сетевая технология на основе DIM, разработанная в CERN для задач автоматизации больших экспериментов на ускорителях и задач автоматизации распределенных систем реального времени на основе концепции Конечных Автоматов - FSM (finite state machine). Справка по SMI входит в дистрибутив CRW-DAQ, поэтому рекомендуется с ней ознакомиться.

С точки зрения пользователя, SMI - это библиотека программ и функций на языках C/C++, Pascal, которая позволяет создавать объекты FSM. На нижнем уровне SMI реализована на основе DIM, то есть изначально является распределенной системой. Это отличает её от других конечных автоматов, которые обычно являются локальными и работают в рамках одной машины или даже одного процесса. С распределенным сетевым характером технологии SMI связана и её относительная сложность. В реальности SMI обслуживает конечные автоматы FSM, работающие на десятках компьютеров в сети и совместно выполняющих общую задачу управления.

Конечный автомат FSM является весьма полезной логической моделью задачи управления. Использование конечного автомата FSM значительно облегчает и упорядочивает работу операторов АСУ, т.к. фактически вводит четкий регламент работы (что и в каком порядке можно делать). Это также снижает риск ошибок операторов и тем самым повышает качество управления.

Согласно концепции SMI, конечный автомат FSM состоит из именованных логических объектов (object) - то есть более мелких конечных автоматов, которые могут объединяться в домены (domain) - группы связанных объектов, выполняемых на одной машине. Каждый домен - это (по факту) DIM сервер smiSM.exe, т.е. процесс, который обслуживает эту группу логических объектов. Имена объектов SMI имеют вид DOMAIN::OBJECT (например DEMO::LOGGER), что позволяет различать одноименные объекты, принадлежащие разным доменам. Объекты и домены образуют иерархическую структуру, т.е. группа объектов или доменов может рассматриваться как составной логический объект, которым управляет другой объект более высокого уровня.

Согласно концепции FSM, объекты SMI имеют конечное число состояний (state), которые в рамках SMI описываются строковыми именами (существительными или прилагательными) без пробелов (например READY). Для перехода из одного состояния в другое объекты посылают друг другу сообщения, называемые действиями (action) или командами (command). Обычно термин action используется для обозначения действия как такового и описывается строковым именем (глаголом) без пробелов (например RESET), а термин command включает в себя также передаваемые параметры. По соглашениям SMI команды имеют формат ACTION/PARAM1(S)=ABC/PARAM2(I)=123/PARAM3(F)=1.23, где ACTION - имя действия; PARAM1,PARAM2,PARAM3 - имена параметров; (S),(I),(F) - описатель типа (string, integer, float).

Объекты делятся на логические объекты, выполняемые целиком в рамках SMI, и ассоциированные объекты (т.е. связанные с аппаратурой) (object associated), которые для краткости именуются также прокси объектами (proxy). Прокси объекты - это логические "представители" объектов реального мира (т.е. аппаратуры). Прокси объекты реализуют самый нижний слой логической иерархии SMI - аппаратный. Прокси объекты - это на самом деле единственные объекты SMI, которые прямо связаны с реальным миром (драйверами аппаратуры). Это, так сказать "глаза и руки", с помощью которых FSM управляет аппаратурой.

Объекты SMI описываются на языке SML (state manager language) и хранятся в файлах *.SML. Затем файлы *.SML преобразуется с помощью транслятора (smiTrans.exe) в объектные файлы (*.SOBJ), которые исполняются серверами доменов (smiSM.exe). Прокси объекты (поскольку они связаны с аппаратурой) создаются прикладным программистом на языках (C/C++,Pascal,..) с использованием библиотек (smirtl.dll, smiuirtl.dll) и генератора кода (smiTrans.exe).

При использовании SMI в пакете CRW-DAQ прикладные программы предполагается создавать на привычном языке DaqPascal. Для интеграции SMI в пакет CRW-DAQ связь объектов SMI с пакетом осуществляется через специально разработанные библиотеки и серверы. Для реализации прокси объектов создана библиотека SmiProxy и сервер SmiProxy.exe. Для управления доменами и SMI-серверами создана библиотека SmiSrv и сервер SmiSrv.exe. Совместно эти средства позволяют создавать весь прикладной код на языке DaqPascal.

Ссылки: DIM SMI

SmiProxy - библиотека для реализации Proxy объектов SMI

SmiSrv - сервер для управления доменами и объектами SMI

Структура объектов SMI. Иерархия объектов SMI.
Цикл разработки FSM в SMI.
Цикл разработки FSM в CRW-DAQ.

© 2020-2022 Курякин Алексей Валерьевич, kouriakine@mail.ru.