Skip to content

Создание папки для проекта ПЛК Unimod 2 в SVN

В типовой структуре Uniplant Atomix проекты ПЛК Unimod 2 хранятся в каталоге Unimod внутри проекта автоматизации. Путь в репозитории: svn://nashgit.ru/automiq/Projects/{Project Name}/Unimod/. Внутри Unimod может быть своя иерархия папок (зоны, участки и т.д.), а на нижнем уровне — папки с именами проектов Unimod 2 (например, P0-80-030-JF01-CA1001-1A).

В папке каждого такого проекта каталоги types и functions должны быть SVN externals на соответствующие каталоги библиотечного проекта — AfaProject (АСПСиПТ) или ApucsProject (РСУ, ПАЗ, АСУЭ). Так обеспечивается единый набор типовых блоков и типов данных из библиотеки без копирования файлов в проект. Ниже описаны три способа получить такую папку.

Контекст: Unimod 2 — SVN externals, Содержимое типового каталога проекта, Репозитории (сводка).

Ниже — три способа получить папку проекта ПЛК Unimod 2 в репозитории с уже настроенными или настраиваемыми externals для types и functions.

Вариант 1: Copy to из репозитория с шаблонами пустых проектов

Section titled “Вариант 1: Copy to из репозитория с шаблонами пустых проектов”

В репозитории есть каталог с шаблонами пустых проектов Unimod 2, разбитыми по используемым библиотекам и моделям CPU:

Шаблоны Unimod по библиотекам и CPU в репозитории

svn://nashgit.ru/automiq/Brunches/Unimod

Структура: внутри Unimod/2x/ находятся AfaProjectLib (для АСПСиПТ) и ApucsProject (для РСУ, ПАЗ, АСУЭ); в каждом — подпапки по моделям CPU (например, M401E, M501E, M1201E). Каждый такой подкаталог — готовый шаблон с уже настроенными externals на types и functions.

  1. Откройте Обозреватель хранилища (TortoiseSVN → Repo-Browser) и перейдите в целевую папку вашего проекта — каталог Unimod (например, svn://nashgit.ru/automiq/Projects/PSaLA_MST/Unimod). Правый клик по этой папке → Копировать в буфер обмена (Copy to clipboard) → Urls. URL целевой папки окажется в буфере — он понадобится при копировании шаблона.

    Копирование URL целевой папки в обозревателе хранилища

  2. Перейдите в репозиторий шаблонов: svn://nashgit.ru/automiq/Brunches/Unimod/2x/. Выберите библиотеку (AfaProjectLib или ApucsProject) и нужную модель CPU (например, M501E).

  3. Правый клик по папке шаблона → Копировать в… (Copy to…) или Копировать в рабочую копию… (Copy to working copy…).

    Выбор шаблона и пункт «Копировать в…» в обозревателе хранилища

  4. В поле URL вставьте скопированный URL целевой папки (Unimod). Тег ПЛК (имя новой папки) указывать не надо — папка будет создана с тем же именем, что и шаблон (например, M1201E).

    Диалог «Копировать в…» — указание URL назначения

  5. Нажмите OK. После копирования выполните SVN Обновить в рабочей копии проекта — папка появится с уже настроенными externals (имя папки совпадает с именем шаблона, например M1201E).

    Папка проекта ПЛК после копирования шаблона

  6. Переименуйте папку в соответствии с тегом ПЛК (например, P0_84_010_JP01_CC1001_1A). В рабочей копии: правый клик по папке → TortoiseSVNПереименовать… (Rename…). В обозревателе хранилища можно использовать Rename по папке. После переименования зафиксируйте изменение (SVN зафиксировать…).

  7. Если раскрыть полученную папку, в содержимом каталоги types и functions должны отображаться как ссылки (иконка папки со стрелкой) — это SVN externals на библиотечный проект.

    Каталоги types и functions как ссылки (externals) в папке проекта ПЛК

Для проверки корректности можно зайти в свойства созданного каталога (правый клик по папке проекта ПЛК → TortoiseSVNСвойства). В них должна быть одна переменная svn:externals с двумя записями — путями к каталогам types и functions библиотечного проекта (AfaProject или ApucsProject в зависимости от типа проекта).

Свойства каталога — svn (types и functions)

  1. Отредактируйте файл project.uprj в папке проекта: измените значение в поле name на тег ПЛК. Правый клик по файлу → Открыть или Изменить (Edit).

    Файл project.uprj в папке проекта ПЛК

  2. Теперь можно обновить папку Unimod соответствующего проекта (SVN Обновить по каталогу Unimod), чтобы получить новую папку проекта ПЛК на этом или другом компьютере.

Пример фрагмента project.uprj (поле name — тег ПЛК):

{
"app_crc": 0,
"app_size": 0,
"build_date": "",
"build_number": 0,
"fileversion": 1,
"last_uid": "2014056",
"name": "P0_84_010_JP01_CC1001_1A",
"uid": "",
"version": 1
}

Репозитории шаблонов по моделям ЦПУ ПЛК:

Section titled “Репозитории шаблонов по моделям ЦПУ ПЛК:”
Модель ЦПУ ПЛКAfaProjectLib (АСПСиПТ)ApucsProject (РСУ, ПАЗ, АСУЭ)
M401Esvn://nashgit.ru/automiq/Brunches/Unimod/2x/ApucsProject/M401E
M501Esvn://nashgit.ru/automiq/Brunches/Unimod/2x/AfaProjectLib/M501Esvn://nashgit.ru/automiq/Brunches/Unimod/2x/ApucsProject/M501E
M1201Esvn://nashgit.ru/automiq/Brunches/Unimod/2x/ApucsProject/M1201E

Вариант 2: Copy to из существующего проекта в репозитории

Section titled “Вариант 2: Copy to из существующего проекта в репозитории”

Если в том же или другом проекте уже есть папка проекта ПЛК с нужными externals, её можно скопировать в нужное место.

  1. Откройте Обозреватель хранилища (TortoiseSVN → Repo-Browser) и перейдите в целевую папку вашего проекта — каталог Unimod (например, svn://nashgit.ru/automiq/Projects/PSaLA_MST/Unimod). Правый клик по этой папке → Копировать в буфер обмена (Copy to clipboard) → Urls. URL целевой папки окажется в буфере — он понадобится при копировании шаблона.

    Копирование URL целевой папки в обозревателе хранилища

  2. Правый клик по папке шаблона → Копировать в… (Copy to…) или Копировать в рабочую копию… (Copy to working copy…).

    Выбор шаблона и пункт «Копировать в…» в обозревателе хранилища

  3. В поле URL вставьте скопированный URL целевой папки (Unimod). Тег ПЛК (имя новой папки) указывать не надо — папка будет создана с тем же именем, что и шаблон (например, M1201E).

    Диалог «Копировать в…» — указание URL назначения

  4. Укажите URL назначения: svn://nashgit.ru/automiq/Projects/{Ваш проект}/Unimod/ и при необходимости новое имя папки (например, P0-88-010-JG01-CA10011).

  5. Переименуйте папку в соответствии с тегом ПЛК (например, P0_84_010_JP01_CC1001_1A). В рабочей копии: правый клик по папке → TortoiseSVNПереименовать… (Rename…). В обозревателе хранилища можно использовать Rename по папке. После переименования зафиксируйте изменение (SVN зафиксировать…).

  6. Если раскрыть полученную папку, в содержимом каталоги types и functions должны отображаться как ссылки (иконка папки со стрелкой) — это SVN externals на библиотечный проект.

    Каталоги types и functions как ссылки (externals) в папке проекта ПЛК

Externals при копировании в репозитории сохраняются, поэтому types и functions останутся ссылками на библиотеку.

Вариант 3: Создание папки вручную и добавление externals

Section titled “Вариант 3: Создание папки вручную и добавление externals”

Создайте пустую папку в репозитории и настройте в ней externals для types и functions вручную или из готовых файлов свойств.

Шаг 1: Создать папку в репозитории

Section titled “Шаг 1: Создать папку в репозитории”
  1. Обозреватель хранилища → URL проекта, например svn://nashgit.ru/automiq/Projects/PSaLA_MST_AFA → каталог Unimod (и при необходимости подпапку).
  2. Правый клик в пустом месте → Создать папку… (Create folder…). Введите имя папки проекта ПЛК (например, P0-88-010-JG01-CA10011) → OK.
  3. Введите сообщение коммита и подтвердите. В рабочей копии выполните SVN Обновить.

Шаг 2: Настроить externals для types и functions

Section titled “Шаг 2: Настроить externals для types и functions”

В папке проекта должны быть ссылки на библиотечный проект:

  • АСПСиПТAfaProject: svn://nashgit.ru/automiq/Libraries/Unimod/2x/AfaProject
  • РСУ, ПАЗ, АСУЭApucsProject: svn://nashgit.ru/automiq/Libraries/Unimod/2x/ApucsProject

Способ А — применить готовый файл свойств. В TortoiseSVN можно применить к папке готовые свойства из файла AFA.svnprops (для AfaProject) или Apucs.svnprops (для ApucsProject). Эти файлы задают свойство svn:externals с нужными ссылками types и functions. После применения выполните SVN зафиксировать… по папке и SVN Обновить.

Способ Б — ввести externals вручную. В рабочей копии откройте созданную папку проекта ПЛК. Правый клик → TortoiseSVNСвойства (Properties) → вкладка Свойства SubversionСвойства externals… (или Edit для svn:externals). Добавьте две строки по одной из таблиц ниже в зависимости от библиотеки.

AFA (АСПСиПТ) — AfaProject:

Локальная папкаURL репозитория (SVN External)
typessvn://nashgit.ru/automiq/Libraries/Unimod/2x/AfaProject/types
functionssvn://nashgit.ru/automiq/Libraries/Unimod/2x/AfaProject/functions

APUCS (РСУ, ПАЗ, АСУЭ) — ApucsProject:

Локальная папкаURL репозитория (SVN External)
typessvn://nashgit.ru/automiq/Libraries/Unimod/2x/ApucsProject/types
functionssvn://nashgit.ru/automiq/Libraries/Unimod/2x/ApucsProject/functions

Сохраните свойства, выполните SVN зафиксировать… и SVN Обновить.

Подробный пример: Unimod 2 — пример настройки SVN externals.

  • Именование: используйте принятые в проекте обозначения (например, по типу контроллера и позиции на схеме). Примеры: P0-80-030-JF01-CA1001-1A, L1_12Y02_000_JP04_CC1001_1A.
  • Структура: при большом количестве проектов ПЛК удобно группировать папки внутри Unimod (по зонам, шкафам и т.д.) и создавать новые папки в этих подкаталогах.
  • Крупные бинарные и редко меняющиеся данные лучше хранить в NextCloud, а не в SVN.

См. также: Система контроля версий SVN, Unimod 2.