В интернете и без меня много ютуб учебников, поэтому кратко:
- 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.
Добрый день.
ReplyDeleteС удовольствием читаем блог, много полезной информации.
Недавно столкнулись с такой вещью, по рекомендации не включаем файл .tmc в git, так он генерируется автоматически.
Но у нас были структуры, переведены в Global Data Type для сохранения в RETAIN.
Так вот они только в tmc файле и сохраняются видимо.
Зато нашли новый выход, объявить сразу структуру как STRUCT RETAIN, тогда входные переменные экземпляров ФБ сохраняются и глобальная структура вообще не нужна.
Т.е. обращаемся напрямую к входным переменным экземпляра ФБ.
.tmc хранит информацию о типах данных. RETAIN как раз про это, так как связываются данные в NVRAM-маппинг-переменные ПЛК. В отличии от PERSISTENT, который просто сохраняется на диск (флэш/CF/HDD/SSD).
DeleteЕсли какие-либо переменные функционального блока обозначить как RETAIN или PERSISTENT, то будут сохранены и восстановлены переменные всех типов функционального блока (то есть все переменные ФБ вообще). Когда переменных много, они занимает больше места в NVRAM (а оно не бесконечное) и потребуется больше времени на загрузку/сохранение данных. Но чаще всего это совсем не заметно.
Сама переменная в функциональном блоке не объявляется как RETAIN:
ReplyDeleteVAR_INPUT
Settings : PS_Settings;
END_VAR
А вот сама структура объявлена как:
TYPE PS_Settings :
STRUCT RETAIN
END_STRUCT.
В PLC_Instance в retain Видно, что в нее попадают переменные только этой структуры.
Когда человек взял себе проект из репозитория без tmc файла, у него структур с Global Data Type и не оказалось, пришлось ручками добавлять.
ReplyDelete