Создание папки для проекта ПЛК 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:

svn://nashgit.ru/automiq/Brunches/Unimod
Структура: внутри Unimod/2x/ находятся AfaProjectLib (для АСПСиПТ) и ApucsProject (для РСУ, ПАЗ, АСУЭ); в каждом — подпапки по моделям CPU (например, M401E, M501E, M1201E). Каждый такой подкаталог — готовый шаблон с уже настроенными externals на types и functions.
-
Откройте Обозреватель хранилища (TortoiseSVN → Repo-Browser) и перейдите в целевую папку вашего проекта — каталог Unimod (например,
svn://nashgit.ru/automiq/Projects/PSaLA_MST/Unimod). Правый клик по этой папке → Копировать в буфер обмена (Copy to clipboard) → Urls. URL целевой папки окажется в буфере — он понадобится при копировании шаблона.
-
Перейдите в репозиторий шаблонов:
svn://nashgit.ru/automiq/Brunches/Unimod/2x/. Выберите библиотеку (AfaProjectLib или ApucsProject) и нужную модель CPU (например, M501E). -
Правый клик по папке шаблона → Копировать в… (Copy to…) или Копировать в рабочую копию… (Copy to working copy…).

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

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

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

-
Отредактируйте файл
project.uprjв папке проекта: измените значение в полеnameна тег ПЛК. Правый клик по файлу → Открыть или Изменить (Edit).
-
Теперь можно обновить папку 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 (РСУ, ПАЗ, АСУЭ) |
|---|---|---|
| M401E | — | svn://nashgit.ru/automiq/Brunches/Unimod/2x/ApucsProject/M401E |
| M501E | svn://nashgit.ru/automiq/Brunches/Unimod/2x/AfaProjectLib/M501E | svn://nashgit.ru/automiq/Brunches/Unimod/2x/ApucsProject/M501E |
| M1201E | — | svn://nashgit.ru/automiq/Brunches/Unimod/2x/ApucsProject/M1201E |
Вариант 2: Copy to из существующего проекта в репозитории
Section titled “Вариант 2: Copy to из существующего проекта в репозитории”Если в том же или другом проекте уже есть папка проекта ПЛК с нужными externals, её можно скопировать в нужное место.
-
Откройте Обозреватель хранилища (TortoiseSVN → Repo-Browser) и перейдите в целевую папку вашего проекта — каталог Unimod (например,
svn://nashgit.ru/automiq/Projects/PSaLA_MST/Unimod). Правый клик по этой папке → Копировать в буфер обмена (Copy to clipboard) → Urls. URL целевой папки окажется в буфере — он понадобится при копировании шаблона.
-
Правый клик по папке шаблона → Копировать в… (Copy to…) или Копировать в рабочую копию… (Copy to working copy…).

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

-
Укажите URL назначения:
svn://nashgit.ru/automiq/Projects/{Ваш проект}/Unimod/и при необходимости новое имя папки (например,P0-88-010-JG01-CA10011). -
Переименуйте папку в соответствии с тегом ПЛК (например,
P0_84_010_JP01_CC1001_1A). В рабочей копии: правый клик по папке → TortoiseSVN → Переименовать… (Rename…). В обозревателе хранилища можно использовать Rename по папке. После переименования зафиксируйте изменение (SVN зафиксировать…). -
Если раскрыть полученную папку, в содержимом каталоги
typesиfunctionsдолжны отображаться как ссылки (иконка папки со стрелкой) — это SVN externals на библиотечный проект.
Externals при копировании в репозитории сохраняются, поэтому types и functions останутся ссылками на библиотеку.
Вариант 3: Создание папки вручную и добавление externals
Section titled “Вариант 3: Создание папки вручную и добавление externals”Создайте пустую папку в репозитории и настройте в ней externals для types и functions вручную или из готовых файлов свойств.
Шаг 1: Создать папку в репозитории
Section titled “Шаг 1: Создать папку в репозитории”- Обозреватель хранилища → URL проекта, например
svn://nashgit.ru/automiq/Projects/PSaLA_MST_AFA→ каталог Unimod (и при необходимости подпапку). - Правый клик в пустом месте → Создать папку… (Create folder…). Введите имя папки проекта ПЛК (например,
P0-88-010-JG01-CA10011) → OK. - Введите сообщение коммита и подтвердите. В рабочей копии выполните 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) |
|---|---|
types | svn://nashgit.ru/automiq/Libraries/Unimod/2x/AfaProject/types |
functions | svn://nashgit.ru/automiq/Libraries/Unimod/2x/AfaProject/functions |
APUCS (РСУ, ПАЗ, АСУЭ) — ApucsProject:
| Локальная папка | URL репозитория (SVN External) |
|---|---|
types | svn://nashgit.ru/automiq/Libraries/Unimod/2x/ApucsProject/types |
functions | svn://nashgit.ru/automiq/Libraries/Unimod/2x/ApucsProject/functions |
Сохраните свойства, выполните SVN зафиксировать… и SVN Обновить.
Подробный пример: Unimod 2 — пример настройки SVN externals.
Рекомендации
Section titled “Рекомендации”- Именование: используйте принятые в проекте обозначения (например, по типу контроллера и позиции на схеме). Примеры:
P0-80-030-JF01-CA1001-1A,L1_12Y02_000_JP04_CC1001_1A. - Структура: при большом количестве проектов ПЛК удобно группировать папки внутри
Unimod(по зонам, шкафам и т.д.) и создавать новые папки в этих подкаталогах. - Крупные бинарные и редко меняющиеся данные лучше хранить в NextCloud, а не в SVN.
См. также: Система контроля версий SVN, Unimod 2.