Существуют ли реалистичные / полезные решения для управления исходным кодом для программ Ladder Logic?


17

Управление версиями для программ релейной логики (LL) для программируемых логических контроллеров (ПЛК), по-видимому, практически отсутствует. Это может быть потому, что LL является визуальным языком и, как правило, хранится в двоичных файлах, или это может быть потому, что управление исходным кодом не «завоевало популярность» в кругах инженеров по управлению процессами - или, возможно, мой Google-Fu сегодня слаб.

Знаете ли вы какие-либо реалистичные и полезные решения для контроля версий для таких систем?

Определения:

  • реалистичный = изменения в программах отслеживаются пользователем и подлежат возврату и слиянию
  • полезно = система интегрируется с визуальными дизайнерами LL, не ограничивается LL от одного производителя ПЛК и не стоит нелепой суммы денег?

Примечание: я слышал о людях, использующих SVN или Mercurial и др. Для отслеживания двоичных файлов, но я не думаю, что возможности diff / merge будут отображать читабельные различия.

ДОПОЛНЕНИЕ:

Сначала нам нужно было поддерживать только ПЛК Allen-Bradley. Теперь у нас также есть ПЛК Siemens и MicroLogix. Все еще в поисках жизнеспособного решения ...


1
Этот вопрос может иметь к вам отношение: stackoverflow.com/questions/4216619/plc-version-control
blueberryfields

Привет @Stevenalowe, были ли какие-либо события на эту тему?
Montag451

@EnmosProje: не то, что я знаю, извините!
Стивен А. Лоу

Ответы:


13

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

Rockwell предлагает FactoryTalk AssetCenter, если вы используете Allen-Bradley. Я не оценил это, но это, вероятно, дорого. Это делает больше, чем контроль источника, хотя.

Я использовал регулярный (Mercurial) контроль исходного кода с файлами PLC Beckhoff TwinCAT. Кажется, это работает хорошо, но мне никогда не приходилось сливаться ни с кем. Предполагается, что их новая версия TwinCAT (3), выпущенная позднее в этом году, будет построена на Visual Studio 2010, и я предполагаю, что у нее будет гораздо больше готовых предложений для интеграции контроля версий. Скрещенные пальцы.

Начать редактировать

Я просто хотел добавить, что теперь я использую новый продукт TwinCAT 3 и использую Mercurial (TortoiseHg и надстройка VisualHg для Visual Studio). Это работает довольно хорошо. Прежде всего, VisualHg делает его очень интегрированным в среду разработки Visual Studio 2010, которую использует TwinCAT 3. Однако исходный код для программ TwinCAT 3 обычно хранится в файлах XML. Это значительное улучшение по сравнению с проприетарными двоичными форматами других производителей, которые я использовал, но оно все еще не очень хорошо сливается. В некоторых файлах нет никаких разрывов строк в XML (я написал об этом Бекхоффу), что означает, что система построчного управления исходным кодом мало что делает. Кроме того, поскольку это XML, порядок узлов в XML-файле меняется случайным образом, даже если вы не вносите никаких изменений. Также, Я думаю, что иногда он генерирует новые идентификаторы для некоторых узлов, когда в этом нет необходимости, что приводит к лишним изменениям, которые обнаруживает Hg. Это фактически делает невозможным внесение изменений в программу TwinCAT 3 двумя программистами одновременно, а затем объединение изменений. Это неудачный недосмотр разработчиков TwinCAT 3, которые, несомненно, регулярно используют контроль исходного кода в своей работе и не видят преимущества для нас, программистов автоматизации, в доступе к таким же мощным инструментам. :( которые, несомненно, регулярно используют управление исходным кодом в своей работе, и не видят для нас преимущества в том, чтобы мы, программисты автоматизации, имели доступ к таким же мощным инструментам. :( которые, несомненно, регулярно используют управление исходным кодом в своей работе, и не видят для нас преимущества в том, чтобы мы, программисты автоматизации, имели доступ к таким же мощным инструментам. :(

Конец Править

Начать редактировать # 2

Я хотел бы отметить, что TwinCAT 3.1 теперь имеет форматы файлов, которые лучше подходят для управления исходным кодом, особенно файлы на языке структурированного текста. На самом деле, я считаю, что продукт теперь создан для поддержки интеграции с Team Foundation Server.

Конец Правки № 2

Другой альтернативой является то, что большинство программ ПЛК можно экспортировать в текстовые файлы. Например, RSLogix 5000 экспортирует свои проекты в файл L5K, который является просто текстом. Раньше я запускал сценарии для этих файлов - их довольно легко разобрать. Они будут хорошо работать с контролем версий. Конечно, это означает, что экспорт каждый раз, что отстой.

Если вы используете какой-либо стандартный контроль версий, я настоятельно рекомендую распределенную VCS, такую ​​как Git или Mercurial, потому что с ПЛК половину времени вы находитесь на месте и не можете подключиться к вашему домашнему серверу, поэтому возможность делать локальные коммиты это настоящий бонус.

Еще одна вещь, которую вы должны понять, это то, что некоторые среды программирования ПЛК, такие как RSLogix, уже включают инструмент diff, поэтому вы можете запускать diff для двух версий ваших проектов. Это, в сочетании с сохранением нового файла с сегодняшней датой каждый день, - то, с чем, похоже, справляется большинство магазинов автоматизации.


Вы когда-нибудь использовали автосохранение? wingtipllc.com/products/autosave-plc-version-control/…
blueberryfields

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

Проекты Beckhoff TwinCAT также можно экспортировать и импортировать в / из текстовых файлов. Вот как мы ставим их под контроль версий. Работает хорошо для проектов, написанных на ST. Хотя не пробовал с такими графическими языками, как LL.
Stmax

@stmax - я только что отредактировал ответ, чтобы поделиться своим последним опытом. Как я уже сказал, это работает, но не так хорошо, как могло бы.
Скотт Уитлок

Я принял это как «ответ», потому что кажется, что экспорт в текстовые файлы и использование SCC - единственное жизнеспособное решение для нескольких поставщиков ПЛК.
Стивен А. Лоу

4

Если вы можете, посмотрите на B & R Automation.

Полное раскрытие ... Я работаю с торговым партнером B & R Automation.

Современные проекты B & R Automation очень хорошо работают с программным обеспечением контроля версий. В настоящее время я использую GIT (который не интегрирован), хотя в программном обеспечении должна быть интеграция с SVN. Весь источник HMI сохраняется в виде XML, а все их источники языка ПЛК (включая лестничный) сохраняются на основе текста, а не двоичного кода (в основном также и XML). Если вам нужно выполнить ручное слияние, вам придется в некоторой степени «разобраться» с XML, но я не нашел это таким сложным. И автоматическое слияние обычно делает это ненужным в любом случае.


3

Я только что видел этот вопрос, и на самом деле есть консервативное решение - от GE-IP всех мест. Проверьте Proficy Change Management. Этот продукт осуществляет управление версиями с точки зрения систем управления ПЛК, а не просто управление версиями с точки зрения файлов - он работает как слой, расположенный поверх VCS (страшно то, что изначально эта VCS была Visual SourceSafe) и управляет управлением правами, отчетностью и проверкой / регистрацией.

Несмотря на то, что продукт от GE-IP, он предназначен для поддержки различных систем ПЛК и HMI из коробки.

Полное раскрытие я использовал для работы в компании по продаже и установке PCM (но это было 7 лет назад). Так что, если вы спросите меня, как это было тогда, я, вероятно, скажу вам, где все пошло не так!


1

Как бы ужасно это ни звучало, в одном случае я использовал функцию «Печать в PDF» программного обеспечения релейной логики (в данном случае это был CScape Хорнера), а затем бесплатную графическую разностную программу PDF (например, DiffPDF ) для сравнения изменений, потому что исходный код был доступен только в проприетарном двоичном формате.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.