May 28, 2019

Git Ignore для TwinCAT

TwinCAT 3 благополучно переполз на текстовые форматы данных. Никаких больше бинарников невнятного формата, которые не сравнить и не выгрузить в системы контроля версий. GitHub, GitLab, Bitbucket и много других бесплатных онлайн сервисов. Правда, если вы не боитесь выгружать свои совершенные проекты в облако.



В интернете и без меня много ютуб учебников, поэтому кратко:
  • git — распределённая система управления версиями. Есть и другие.
  • github и ко — крупнейший веб-сервис для хостинга IT-проектов и совместной разработки.
Не равно: git != github или git <> github.
Когда вы наконец-то освоите последовательность действий: init, commit, push, итд., приходит время для нюансов. Например, не имеет смысл держать в проекте студийный мусор и бинарные библиотеки. Для исключений используется файл .gitignore и он автоматически исключает из проекта ненужное. Или то, что разработчик сочтет ненужным.

Для проектов Visual Studio есть стандартно-универсальный VisualStudio.gitignore. Там есть все, кроме части, ответственной за TwinCAT проекты. Я добавил.


.gitignore для TwinCAT проектов


Файл .gitignore можно отредактировать в любом текстовом редакторе. Добавляете в конец файла:

# Beckhoff TwinCAT3 projects
*.~u
_Libraries/
_Boot/
_CompileInfo/
*.tclrs
*.tclrq
*.tpy
*.tmc
*.bak


И получаете незамусоренный проект. Возможно, вы захотите что-то оставить или что-то удалить. Есть с чего начать: Source Control.

4 comments

  1. Добрый день.
    С удовольствием читаем блог, много полезной информации.
    Недавно столкнулись с такой вещью, по рекомендации не включаем файл .tmc в git, так он генерируется автоматически.
    Но у нас были структуры, переведены в Global Data Type для сохранения в RETAIN.
    Так вот они только в tmc файле и сохраняются видимо.

    Зато нашли новый выход, объявить сразу структуру как STRUCT RETAIN, тогда входные переменные экземпляров ФБ сохраняются и глобальная структура вообще не нужна.
    Т.е. обращаемся напрямую к входным переменным экземпляра ФБ.

    ReplyDelete
    Replies
    1. .tmc хранит информацию о типах данных. RETAIN как раз про это, так как связываются данные в NVRAM-маппинг-переменные ПЛК. В отличии от PERSISTENT, который просто сохраняется на диск (флэш/CF/HDD/SSD).

      Если какие-либо переменные функционального блока обозначить как RETAIN или PERSISTENT, то будут сохранены и восстановлены переменные всех типов функционального блока (то есть все переменные ФБ вообще). Когда переменных много, они занимает больше места в NVRAM (а оно не бесконечное) и потребуется больше времени на загрузку/сохранение данных. Но чаще всего это совсем не заметно.

      Delete
  2. Сама переменная в функциональном блоке не объявляется как RETAIN:
    VAR_INPUT
    Settings : PS_Settings;
    END_VAR

    А вот сама структура объявлена как:
    TYPE PS_Settings :
    STRUCT RETAIN
    END_STRUCT.

    В PLC_Instance в retain Видно, что в нее попадают переменные только этой структуры.



    ReplyDelete
  3. Когда человек взял себе проект из репозитория без tmc файла, у него структур с Global Data Type и не оказалось, пришлось ручками добавлять.

    ReplyDelete

Note: Only a member of this blog may post a comment.