Existem soluções realistas / úteis para controle de origem em programas de lógica ladder

17

O controle de versão para programas de lógica ladder (LL) para controladores lógicos programáveis ​​(PLCs) parece praticamente inexistente. Pode ser porque o LL é uma linguagem visual e tende a ser armazenado em arquivos binários, ou porque o controle do código-fonte não "pegou" nos círculos de engenharia de controle de processo - ou talvez meu Google-Fu esteja fraco esta noite.

Você conhece alguma solução realista e útil para controle de versão de tais sistemas?

Definições:

  • realista = alterações nos programas são rastreadas pelo usuário e estão sujeitas a reversão e mesclagem
  • útil = o sistema se integra aos projetistas visuais de LL, não se limita a LL de um único fabricante de PLC e não custa uma quantia ridícula de dinheiro?

Nota: Eu ouvi falar de pessoas que usam SVN ou Mercurial et al para rastrear os arquivos binários, mas não acho que os recursos de diff / merge exibam diferenças legíveis.

TERMO ADITIVO:

No começo, tínhamos que suportar apenas CLPs da Allen-Bradley. Agora também temos PLCs Siemens e MicroLogix. Ainda à procura de uma solução viável ...

Steven A. Lowe
fonte
1
Esta questão pode ser relevante para você: stackoverflow.com/questions/4216619/plc-version-control
blueberryfields
Olá @Stevenalowe, houve alguma evolução sobre este assunto?
precisa saber é o seguinte
@EnmosProje: não que eu saiba, desculpe!
Steven A. Lowe

Respostas:

13

Infelizmente, a resposta vai depender do fornecedor do PLC que você está usando. A maioria deles armazena seu código em formatos de arquivo proprietários, tornando difícil o uso de controle de origem regular.

A Rockwell oferece o FactoryTalk AssetCenter se você estiver usando a Allen-Bradley. Eu não o preço, mas provavelmente é caro. Ele faz mais do que o controle de origem.

Eu usei controle de fonte regular (Mercurial) com arquivos Beckhoff TwinCAT PLC. Isso parece funcionar bem, mas nunca tive que me fundir com ninguém. A nova versão do TwinCAT (3), lançada no final deste ano, deve ser criada no Visual Studio 2010, e suponho que haverá ofertas melhores e prontas para a integração do controle de versão. Dedos cruzados.

Iniciar Edição

Eu só queria acrescentar que agora usei o novo produto TwinCAT 3 e estou usando o Mercurial (TortoiseHg e o suplemento VisualHg do Visual Studio). Está funcionando muito bem. Antes de tudo, o VisualHg faz com que se sinta muito integrado ao IDE do Visual Studio 2010 que o TwinCAT 3 usa. No entanto, o código fonte dos programas TwinCAT 3 geralmente é armazenado em arquivos XML. Essa é uma grande melhoria em relação aos formatos binários proprietários de outros fornecedores que eu usei, mas ainda não se fundem bem. Alguns dos arquivos não possuem nenhuma quebra de linha no XML (escrevi para Beckhoff sobre isso), o que significa que um sistema de controle de fonte linha por linha não faz muito. Além disso, como é XML, a ordem dos nós no arquivo XML parece mudar aleatoriamente, mesmo quando você não faz nenhuma alteração. Além disso, Eu acho que às vezes gera novos IDs para alguns nós quando não é necessário, o que gera alterações supérfluas que Hg capta. Isso efetivamente torna impossível fazer alterações em um programa TwinCAT 3 por 2 programadores ao mesmo tempo e depois mesclar as alterações. É uma infeliz supervisão dos desenvolvedores do TwinCAT 3, que sem dúvida usam o controle da fonte regularmente em seu próprio trabalho, e não viram a vantagem para nós, programadores de automação humilde, de ter acesso a ferramentas igualmente poderosas. :( que, sem dúvida, usam o controle de origem regularmente em seu próprio trabalho e não viram a vantagem para nós, programadores de automação humilde, de ter acesso a ferramentas igualmente poderosas. :( que, sem dúvida, usam o controle de origem regularmente em seu próprio trabalho e não viram a vantagem para nós, programadores de automação humilde, de ter acesso a ferramentas igualmente poderosas. :(

End Edit

Iniciar edição nº 2

Gostaria de salientar que o TwinCAT 3.1 agora possui formatos de arquivo mais adequados ao controle de origem, principalmente os arquivos de linguagem de texto estruturados. De fato, agora o produto foi desenvolvido para oferecer suporte à integração com o Team Foundation Server, acredito.

Finalizar edição nº 2

A outra alternativa é que a maioria dos programas PLC pode ser exportada para arquivos de texto. O RSLogix 5000, por exemplo, exporta seus projetos para um arquivo L5K, que é apenas texto. Eu executei scripts nesses arquivos antes - eles são fáceis de analisar. Eles funcionariam bem com o controle de origem. Claro que isso significa exportar toda vez, o que é péssimo.

Se você optar por qualquer controle de versão padrão, sugiro um VCS distribuído, como Git ou Mercurial, porque com CLPs, metade do tempo em que você está no local e não pode se conectar ao servidor doméstico, então a capacidade de realizar confirmações locais é um bônus real.

A outra coisa que você precisa entender é que alguns ambientes de programação de CLP, como o RSLogix, já incluem uma ferramenta diff, para que você possa executar diffs em duas versões de seus projetos. Combinado a salvar um novo arquivo com a data de hoje todos os dias, é com isso que a maioria das lojas de automação parece se dar bem.

Scott Whitlock
fonte
Você já usou o Autosave? wingtipllc.com/products/autosave-plc-version-control/…
blueberryfields
@blueberryfields: sim, eu usei o recurso de gravação automática na maioria dos softwares que o suportam, e sim, ele salvou minha bunda algumas vezes. No entanto, usá-lo como controle de versão não é uma boa ideia. O controle de versão deve ter mais do que apenas um carimbo de data / hora, deve ter autor e uma descrição das alterações. Também deve ser possível fazer uma fusão de três vias entre uma versão pai e dois garfos.
Scott Whitlock
Os projetos TwinCAT da Beckhoff também podem ser exportados e importados para / de arquivos de texto. É assim que os colocamos sob controle de versão. Funciona bem para projetos escritos em ST. Ainda não tentei com linguagens gráficas como LL.
stmax
@stmax - Acabei de editar a resposta para fornecer minha experiência mais recente. Como eu disse, funciona, mas não da melhor maneira possível.
21118 Scott Whitlock
Aceitei isso como 'a resposta', porque parece que exportar para arquivos de texto e usar o SCC é a única solução viável para vários fornecedores de CLP.
Steven A. Lowe
4

Se puder, veja a B&R Automation.

Divulgação total ... Trabalho para um parceiro de vendas da B&R Automation.

Os projetos modernos da B&R Automation funcionam muito bem com o software de controle de versão. Atualmente, uso o GIT (que não está integrado), embora seja suposto haver integração com o SVN no software. Toda a fonte da IHM é salva como XML, e todas as suas fontes de linguagem do PLC (incluindo escada) são salvas com base em texto em vez de binárias (principalmente XML também). Se você precisar fazer mesclagens manuais, precisará "descobrir" o XML até certo ponto, mas não achei isso tão difícil. E a mesclagem automática geralmente torna isso desnecessário.

Paulo
fonte
3

Acabei de ver essa pergunta e há realmente uma solução enlatada - da GE-IP de todos os lugares. Confira Proficy Change Management. Este produto controla a versão do ponto de vista dos sistemas de controle PLC, em vez de um controle de versão puro dos arquivos - funciona como uma camada em cima de um VCS (a parte mais assustadora é que originalmente esse VCS era o Visual SourceSafe) e lida com gerenciamento de direitos, relatórios e check-out / check-in.

Embora o produto seja da GE-IP, ele foi projetado para suportar uma variedade de sistemas de PLC e HMI imediatamente.

Divulgação completa, usei para trabalhar em uma empresa que vende e instala PCM (mas isso foi há 7 anos). Então, se você me perguntar como era antes, é provável que eu diga onde tudo deu errado!

Peter M
fonte
1

Por mais horrível que isso pareça, em um caso, acabei usando o recurso "Imprimir em PDF" do software de lógica ladder (nesse caso, era o Horner CScape) e, em seguida, um programa gráfico gratuito de diferenciação de PDF (por exemplo, DiffPDF ) para comparar as alterações, porque o código-fonte estava disponível apenas em um formato binário proprietário.

iX3
fonte