Table of Contents

Оглавление

2 Общие сведения

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

  • Единое и предсказуемое расположение всех компонентов системы
  • Удобство навигации и поддержки проектов
  • Возможность автоматизированной обработки данных
  • Совместную работу нескольких разработчиков
  • Интеграцию с системой контроля версий (SVN)

Все проекты, создаваемые с использованием AutomiqAutomation, должны следовать единому стандарту структуры. Это позволяет системе однозначно находить исходные данные, библиотеки, конфигурации и генерируемые артефакты.

Ниже описана базовая структура рабочего окружения и назначение каждого ключевого каталога.

2.1 Родительский каталог проекта

Родительский каталог является корневым для всей экосистемы AutomiqAutomation. Он содержит четыре основных подкаталога:

Родительский каталог проекта является корневой директорией, в которой организованы все необходимые для разработки компоненты. Его типичная структура включает следующие основные каталоги:

Название каталога Описание Ссылка SVN
AutomiqAutomation Основной каталог системы автоматизации, содержащий исполняемый файл, конфигурации и внешние модули. svn://nashgit.ru/automiq/AutomiqAutomation
Projects Каталог, в котором хранятся конкретные проекты АСУ. Каждый проект (например, GPP_AFA) является подкаталогом внутри Projects. svn://nashgit.ru/automiq/Projects/{Project Name} (где {Project Name} — имя проекта, например, GPP_AFA)
Libraries Каталог, содержащий библиотечные проекты (типы, модели, HMI-компоненты), используемые всеми проектами. svn://nashgit.ru/automiq/Libraries
SavedProjects Каталог для хранения архивных копий завершенных проектов. Используется для резервного копирования и извлечения типовых решений. svn://nashgit.ru/automiq/SavedProjects
[Корневой каталог]
├── AutomiqAutomation
│   ├── ExternalModules
│   │   ├── AfasModules      # Внешние модули для проектов АСПСиПТ (Автоматизированные системы пожарной сигнализации и пожаротушения)
│   │   ├── AucsModules      # Внешние модули для проектов АСУЭ (Автоматизированные системы управления энергопотреблением)
│   │   ├── EsdDcsModules    # Внешние модули для проектов РСУ/ПАЗ (Регулирование, Сигнализация, Управление / Противоаварийная защита)
│   │   └── StandardModules  # Базовые модули, реализующие общую функциональность для всех систем автоматизации
│   ├── GAP                  # Библиотека пользовательских скриптов (Global Automation Platform) на C#, используемых в процессе генерации
│   ├── Release              # Стабильные, релизные версии конфигуратора
│   └── ReleaseCandidate     # Тестовые сборки конфигуратора, проходящие предрелизное тестирование
├── Libraries
│   ├── AlphaHMI             # Типовые компоненты и символы для мнемосхем HMI системы alpha
│   ├── DevStudio            # Типовые модели объектов, используемые в SCADA-системе alpha.DevStudio
│   ├── Docs                 # Шаблоны и типовая документация
│   ├── Firmware             # Прошивки для контроллеров (например, Unimod 2)
│   ├── JscGlobalConf        # Глобальные конфигурационные файлы, общие для всех проектов (например, EventLists.xls)
│   └── Unimod               # Типовые функциональные блоки (FB) и библиотеки для ПЛК Unimod 2
├── Projects
│   └── [Имя проекта]        # Корневая директория конкретного проекта
│       ├── DevStudio        # Сгенерированный проект для SCADA-системы alpha.DevStudio
│       ├── Unimod           # Сгенерированный проект для ПЛК Unimod 2
│       ├── HMI              # Сгенерированный проект для панели оператора (HMI)
│       ├── Weintek          # Сгенерированный проект для панелей оператора Weintek
│       ├── SavedConf        # Архивная копия модели данных проекта (JSC) на момент генерации
│       └── JSC              # Основной каталог с моделями данных проекта
└── SavedProjects            # Архивный каталог для хранения завершенных и сданных проектов

Рисунок 1 – Структура корневого каталога проекта

Подробнее о структуре каждого каталога см. в соответствующих разделах.

2.1.1 Каталог AutomiqAutomation

Содержит исполняемые модули, документацию и вспомогательные компоненты самой системы AutomiqAutomation:

flowchart TD
	A[AutomiqAutomation]
	A1[AutomiqAutomation <br> Documentation<br>руководства, <br>спецификации]
	A2[ExternalModules<br>модули интеграции]
	A3[GAP<br>вспомогательные <br>библиотеки]
	A4[Release<br>релизные версии]
	A --> A1
	A --> A2
	A --> A3
	A --> A4

Подкаталог ExternalModules

Содержит специализированные модули для работы с различными внешними системами:

flowchart TD
	EM[ExternalModules]
	EM1[AfasModules<br>интеграция с АФАС]
	EM2[AucsModules<br>интеграция с АСУ Ц]
	EM3[EsdDcsModules<br>ESD и DCS]
	EM4[StandardModules<br> универсальные <br>модули]
	EM --> EM1
	EM --> EM2
	EM --> EM3
	EM --> EM4

2.1.2 Каталог Libraries

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

Libraries/
├── AplhaHMI/               – шаблоны графических элементов и объектов для Alpha.HMI
├── DevStudio/              – типовые структуры, теги, события для Alpha.DevStudio
├── Docs/                   – общая документация по библиотекам и стандартам
├── Firmware/               – образы прошивок для контроллеров и HMI-устройств
├── JscGlobalConf/          – глобальные конфигурации среды JSC
├── Unimod/                 – библиотеки функциональных блоков и драйверов для ПЛК ТРЕЙ (Unimod 2)
├── Weintek/                – шаблоны экранов и объектов для HMI-панелей Weintek
└── Контроль версий ПО/     – архивы версий программного обеспечения оборудования
flowchart TD
	L["Libraries"]
	L1["AplhaHMI"]
	L2["DevStudio"]
	L3["Docs"]
	L4["Firmware"]
	L5["JscGlobalConf"]
	L6["Unimod"]
	L7["Weintek"]
	L8["Контроль версий ПО"]
	L --> L1
	L --> L2
	L --> L3
	L --> L4
	L --> L5
	L --> L6
	L --> L7
	L --> L8

⚠️ Примечание: Все проекты используют данные из Libraries как основу. Обновление библиотек автоматически отражается на новых проектах, что обеспечивает согласованность и масштабируемость.

2.1.3 Каталог Projects

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

Projects/
└── <Имя_проекта>/
    ├── DevStudio/              – Сгенерированные и редактируемые проекты для Alpha.DevStudio
    ├── HMI/                    – Проекты верхнего уровня для Alpha.HMI
    ├── JSC/                    – Основной каталог для разработки, содержащий модели и конфигурации
    ├── SavedConf/              – Сохранённые конфигурации завершённых проектов (титулов)
    ├── Unimod/                 – Проекты, программы и конфигурации для ПЛК (среда Unimod 2)
    └── Docs/                   – Документация проекта (контроль версий ПО, протоколы и т.д.)

📌 Примечание: Структура каталогов отдельного проекта описана в разделе 2.2 Структура каталога проекта

2.1.4 Каталог SavedProjects

Предназначен для архивации завершённых, сданных или резервных копий проектов. Используется для:

  • Хранения финальных версий проектов после сдачи
  • Создания резервных копий перед крупными изменениями
  • Реиспользования фрагментов (узлов, конфигураций) в новых проектах
  • Поддержки обратной совместимости и аудита

2.2 Структура каталога проекта

Типовая структура каталога отдельного проекта, независимо от его местоположения (Projects или SavedProjects):

<Имя_проекта>/
├── DevStudio/          – файлы и проекты для Alpha.DevStudio (конфигурации, теги, события)
├── Doc/                – техническая документация: P&ID, ведомости КИПиА, отчёты
├── HMI/                – HMI-проекты для Alpha.HMI, Weintek, MiniScada
├── JSC/                – [конфигурации и скрипты среды JSC](#211-каталог-automiqautomation)
├── SavedConf/          – сохранённые конфигурации AutomiqAutomation (исходные данные, шаблоны)
└── Unimod/             – проекты и программы для ПЛК ТРЕЙ в среде Unimod 2

Каждый подкаталог соответствует определённому компоненту ПТК и используется как точка назначения для генерируемых файлов.

2.2.1 Каталог HMI

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

Структура каталога:

  • externals\ — Каталог, содержащий внешние ссылки (SVN externals) на общие библиотечные компоненты.
  • objects\ — Основной каталог проекта, в котором хранятся мнемосхемы, окна, группы объектов и другие проектные элементы, специфичные для данного проекта.
  • output\ — Каталог, используемый для временного хранения файлов, генерируемых в процессе сборки проекта HMI.
  • resources\ — Каталог для хранения ресурсов проекта, таких как изображения, шрифты, звуковые файлы и т.д.

Каталог externals: Каталог externals содержит ссылки на общие библиотечные проекты, расположенные в репозитории svn://nashgit.ru/automiq/Libraries. Это позволяет всем проектам использовать унифицированные и актуальные версии базовых компонентов. Ссылки настраиваются как SVN Externals.

Каталог в проекте Ссылка на репозиторий (SVN External) Назначение
externals\Alarms svn://nashgit.ru/automiq/Libraries/AplhaHMI/Alarms Библиотека визуализации и управления аварийными сообщениями.
externals\CommonLib svn://nashgit.ru/automiq/Libraries/AplhaHMI/CommonLib Общие библиотечные объекты, символы и стили, используемые во всех проектах.
externals\Explorer svn://nashgit.ru/automiq/Libraries/AplhaHMI/Explorer Компоненты для навигации по проекту (дерево объектов, панели поиска).
externals\IntegrityControl svn://nashgit.ru/automiq/Libraries/AplhaHMI/IntegrityControl Инструменты для контроля целостности данных и состояния системы.
externals\SecurityConfigurator svn://nashgit.ru/automiq/Libraries/AplhaHMI/SecurityConfigurator Библиотека для настройки прав доступа и пользовательских ролей.
externals\Trends svn://nashgit.ru/automiq/Libraries/AplhaHMI/Trends Готовые компоненты для отображения графиков и трендов.
externals\DCS_ESD_lib svn://nashgit.ru/automiq/Libraries/AplhaHMI/DCS_ESD_lib Библиотека символов и объектов для систем управления технологическим процессом (DCS) и аварийного отключения (ESD).
externals\Statistics svn://nashgit.ru/automiq/Libraries/AplhaHMI/Statistics Компоненты для сбора и отображения статистической информации.

Актуализация проекта

В случае выхода обновления компонентов платформы Alpha, все измененные библиотечные компоненты заливаются в глобальный репозиторий svn://nashgit.ru/automiq/Libraries. Для актуализации любого проекта до последней версии библиотек достаточно выполнить обновление (update) содержимого каталога HMI. Это обеспечивает быстрое и согласованное обновление всех проектов, использующих общие библиотеки.

graph TB

    %% =============== ГЛОБАЛЬНЫЙ РЕПОЗИТОРИЙ ===============
    subgraph "Глобальный репозиторий"
        direction TB
        Libraries[Libraries]
        Libraries --> AplhaHMI[AplhaHMI]

        AplhaHMI --> Alarms_Lib[Alarms]
        AplhaHMI --> CommonLib_Lib[CommonLib]
        AplhaHMI --> Explorer_Lib[Explorer]
        AplhaHMI --> IntegrityControl_Lib[IntegrityControl]
        AplhaHMI --> SecurityConfigurator_Lib[SecurityConfigurator]
        AplhaHMI --> Trends_Lib[Trends]
        AplhaHMI --> DCS_ESD_lib_Lib[DCS_ESD_lib]
        AplhaHMI --> Statistics_Lib[Statistics]
    end

    %% =============== ПРОЕКТНЫЙ РЕПОЗИТОРИЙ ===============
    subgraph "Проектный репозиторий"
        direction TB
        HMI[HMI]
        HMI --> externals[externals\]
        
        externals --> Alarms[Alarms]
        externals --> CommonLib[CommonLib]
        externals --> Explorer[Explorer]
        externals --> IntegrityControl[IntegrityControl]
        externals --> SecurityConfigurator[SecurityConfigurator]
        externals --> Trends[Trends]
        externals --> DCS_ESD_lib[DCS_ESD_lib]
        externals --> Statistics[Statistics]

        HMI --> objects[objects\]
        HMI --> output[output\]
        HMI --> resources[resources\]
    end

    %% =============== СВЯЗИ (SVN EXTERNAL) — БЕЗ ПРОБЕЛОВ ===============
    Alarms         -->|SVN_External|Alarms_Lib
    CommonLib      -->|SVN_External|CommonLib_Lib
    Explorer       -->|SVN_External|Explorer_Lib
    IntegrityControl       -->|SVN_External|IntegrityControl_Lib
    SecurityConfigurator   -->|SVN_External|SecurityConfigurator_Lib
    Trends         -->|SVN_External|Trends_Lib
    DCS_ESD_lib    -->|SVN_External|DCS_ESD_lib_Lib
    Statistics     -->|SVN_External|Statistics_Lib

    %% =============== СТИЛИ ===============
    style Libraries fill:#fff2cc,stroke:#333
    style AplhaHMI fill:#fff9c4,stroke:#333

    style Alarms_Lib fill:#d9ead3,stroke:#333
    style CommonLib_Lib fill:#d9ead3,stroke:#333
    style Explorer_Lib fill:#d9ead3,stroke:#333
    style IntegrityControl_Lib fill:#d9ead3,stroke:#333
    style SecurityConfigurator_Lib fill:#d9ead3,stroke:#333
    style Trends_Lib fill:#d9ead3,stroke:#333
    style DCS_ESD_lib_Lib fill:#d9ead3,stroke:#333
    style Statistics_Lib fill:#d9ead3,stroke:#333

    style HMI fill:#e6f3ff,stroke:#333
    style externals fill:#d9ead3,stroke:#333
    style Alarms fill:#d9ead3,stroke:#333
    style CommonLib fill:#d9ead3,stroke:#333
    style Explorer fill:#d9ead3,stroke:#333
    style IntegrityControl fill:#d9ead3,stroke:#333
    style SecurityConfigurator fill:#d9ead3,stroke:#333
    style Trends fill:#d9ead3,stroke:#333
    style DCS_ESD_lib fill:#d9ead3,stroke:#333
    style Statistics fill:#d9ead3,stroke:#333

2.2.2 Каталоги JSC: Глобальный и локальный уровень

Каталог JSC является основным рабочим пространством для разработки проекта автоматизации. Он четко разделен на два уровня: глобальный (Conf) и локальный (USR\PRJ), что обеспечивает баланс между унификацией и гибкостью.

graph TD
    subgraph "Проектный репозиторий"
        JSC[JSC]
        JSC --> Conf[Conf\]
        JSC --> USR[USR\PRJ\]
        
        USR --> PRJ_Conf[Conf\]
        PRJ_Conf --> Models_PLC[Models\PLC\]
        PRJ_Conf --> NetSwitches[NetSwitches\]
        PRJ_Conf --> EventLists[EventLists\]
        USR --> ResultFiles[ResultFiles\]
    end

    subgraph "Глобальный репозиторий"
        Libraries[Libraries]
        Libraries --> JscGlobalConf[JscGlobalConf]
    end

    Conf -->|SVN External<br>svn://nashgit.ru/automiq/Libraries/JscGlobalConf| JscGlobalConf

    style JSC fill:#e6f3ff,stroke:#333
    style Libraries fill:#fff2cc,stroke:#333
    style Conf fill:#d9ead3,stroke:#333
    style JscGlobalConf fill:#d9ead3,stroke:#333

Рис. 2. Диаграмма связей каталога JSC с глобальным репозиторием.

Диаграмма отображает структуру каталога JSC и его зависимость от централизованной библиотеки типовых моделей. Каталог JSC\Conf является ссылкой (SVN External) на репозиторий svn://nashgit.ru/automiq/Libraries/JscGlobalConf

Каталог Расположение Назначение
JSC\Conf Глобальный уровень Ссылка на централизованный репозиторий svn://nashgit.ru/automiq/Libraries/JscGlobalConf/Automiq. Содержит типовые модели устройств, системные настройки, шаблоны и утилиты, которые должны применяться во всех проектах АСПСиПТ.
JSC\Conf\Models\ObjTypes Глобальный уровень Содержит файлы моделей (XLS) типовых объектов (например, TreiS304.xls, NetDiag1.xls), используемых для генерации устройств в DevStudio. Модели могут быть сгруппированы в подкаталоги (например, Diagnostic\Snmp\, AFA\).
JSC\Conf\Models\System Глобальный уровень Содержит системные модели, необходимые для функционирования генератора:
Labels\ — Сопоставление тегов и наименований сигналов.
Events\ — Определение шаблонов аварийных сообщений.
Modbus\Devices\ — Описание состава фреймов для устройств Modbus.
JSC\Conf\Models\TagAssignement Глобальный уровень Содержит модели (Map.*.xls) для преобразования тегов исполнительных механизмов в наименования сигналов.
JSC\Conf\Tools Глобальный уровень Содержит утилиты для настройки и управления проектом:
SettingManager — Для управления глобальными переменными.
Selector — Для выбора моделей из списка.
JSC\USR\PRJ\Conf\Models\PLC Локальный уровень Содержит модели ПЛК, разработанные специально для данного проекта.
JSC\USR\PRJ\Conf\NetSwitches Локальный уровень Может содержать проектные переопределения или дополнения к глобальной модели NetSwitches.xls.
JSC\USR\PRJ\ResultFiles Локальный уровень Каталог, в который система AutomiqAutomation сохраняет результаты своей работы (сгенерированные файлы импорта для DevStudio, HMI и т.д.).

Примечание:

Использование глобального репозитория для хранения каталога JSC\Conf обеспечивает единообразие и согласованность всех проектов. При обновлении типовой модели (например, добавлении нового типа датчика или исправлении ошибки в модели коммутатора) все проекты могут быть легко актуализированы простым обновлением (update) своего каталога JSC\Conf.

Это позволяет:

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

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

2.2.3 Каталог Unimod

Каталог Unimod является рабочим пространством для проектов, разрабатываемых в среде программирования ПЛК ТРЕЙ — Unimod 2. В нем хранятся все проектные файлы, включая логику, типы данных, теги и конфигурации задач.

Каждый проект Unimod имеет собственную подпапку (например, P0-80-030-JF01-CA1001-1A), внутри которой организована стандартная структура:

Каталог Назначение
{UnimodProject}\app\ Содержит основные приложения проекта
{UnimodProject}\tags\ Хранит теги и переменные проекта.
{UnimodProject}\tasks\ Содержит задачи исполнения (цикл, фоновые задачи и т.д.).
{UnimodProject}\varLists\ Содержит списки переменных.
{UnimodProject}\functions\ Ссылка на глобальный репозиторий. Содержит библиотечные функции
{UnimodProject}\types\ Ссылка на глобальный репозиторий. Содержит определения типов данных (UDT) и функциональные блоки.

Примечание:

Каталоги functions и types являются SVN externals, которые ссылаются на соответствующие библиотечные проекты в глобальном репозитории svn://nashgit.ru/automiq/Libraries/Unimod/. Выбор конкретной библиотеки зависит от специфики проекта автоматизации:

Глобальный репозиторий Назначение Статус
svn://nashgit.ru/automiq/Libraries/Unimod/2x/AfaProject/ Библиотечный проект, содержащий типовые блоки и типы данных для систем АСПСиПТ (Автоматизация Систем Пожаротушения и Сигнализации Пожара). Актуальный
svn://nashgit.ru/automiq/Libraries/Unimod/2x/ApucsProject/ Объединенный библиотечный проект, используемый для систем РСУ, ПАЗ и АСУЭ. Является основным для новых проектов этих направлений. Актуальный
svn://nashgit.ru/automiq/Libraries/Unimod/2x/DcsEsdProject/ Устаревший библиотечный проект с блоками для систем РСУ, ПАЗ и СКЗ. Устаревший (используется только для поддержки старых проектов)
svn://nashgit.ru/automiq/Libraries/Unimod/2x/AucsProject/ Устаревший библиотечный проект с блоками для систем АСУЭ. Устаревший (используется только для поддержки старых проектов)

Пример внешних ссылок для проекта АСПСиПТ:

Для проекта АСПСиПТ, например PSaLA_MST_AFA, настройки SVN externals будут выглядеть следующим образом:

Каталог в проекте Ссылка на репозиторий (SVN External)
P0-80-030-JF01-CA1001-1A/functions svn://nashgit.ru/automiq/Libraries/Unimod/2x/AfaProject/functions
P0-80-030-JF01-CA1001-1A/types svn://nashgit.ru/automiq/Libraries/Unimod/2x/AfaProject/types

Это обеспечивает использование единой, проверенной библиотеки типов и функций для всех проектов АСПСиПТ.

2.3 Использование системы контроля версий

Система AutomiqAutomation интегрирована с SVN (Subversion) — централизованной системой контроля версий, обеспечивающей:

  • Совместную работу команды разработчиков
  • Контроль изменений и ведение истории правок
  • Возможность отката к предыдущим версиям
  • Согласованность между проектами и библиотеками

Связи между каталогами Libraries и проектом

  • Каталог Libraries является общим репозиторием, доступным для всех проектов.
  • При создании нового проекта система автоматически подтягивает актуальные версии библиотек.
  • Изменения в Libraries могут быть синхронизированы со всеми проектами через обновление (Update).

Основные правила пользования SVN

  1. Перед началом работы — выполнить обновление (Update) репозитория.
  2. После внесения изменений — зафиксировать (Commit) с понятным комментарием.
  3. Не коммитить временные файлы (кэш, логи, локальные конфигурации).
  4. Все изменения в Libraries должны быть согласованы с руководителем проекта.
  5. Версии проектов в SavedProjects также подлежат архивации в SVN.

Необходимость использования SVN

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