Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Tecnologia industrial

Implantando Node-RED no PLCnext com Docker: Guia Passo a Passo

Um container Docker pode ser usado para rodar um servidor node-RED em um dispositivo PLCnext. Embora o outro método descrito aqui seja um pouco mais rápido. O uso de containers OCI traz algumas vantagens. Por exemplo, ao usar repetidamente os mesmos pacotes para uma aplicação, pode ser útil construir uma imagem padrão e apenas baixá-la do Docker Hub. O Docker também pode ser usado para iniciar e parar o servidor node-red quando quisermos.

Este blog explicará exatamente isso. Primeiro, guiarei você pelo processo de instalação do Docker e verificaremos a instalação. Construiremos uma imagem personalizada com pacotes de nossa preferência pré-instalados com um Dockerfile e criaremos um container a partir da nossa imagem recém-criada. Finalmente, garantiremos que nosso container inicie no boot do controlador e enviaremos nossa imagem para o Dockerhub.

Instalação do Balena Engine

Menti um pouco quando disse que containers Docker podem ser usados para rodar um runtime node-RED em um dispositivo PLCnext. Como você verá, usamos o Balena-engine como engine para rodar containers, mais especificamente usaremos containers OCI (Open Container Initiative). Discutir a nomenclatura nos levaria longe demais para um Makersblog, mas na seção de leitura adicional no final deste blog adicionei alguns links para os interessados.

O procedimento de instalação é bastante fácil e pode ser encontrado aqui para referência completa, mas por razões práticas os comandos também são dados na próxima seção.
Certifique-se de estar logado como usuário root, para criar uma nova senha root digite o seguinte comando no shell e digite sua senha de admin seguida de duas vezes a nova senha root.

sudo passwd root

Faça login como usuário root digitando su seguido da sua senha recém-criada.

Clone o repositório git e vá para a nova pasta

git clone https://github.com/PLCnext/Docker_GettingStarted.git
cd Docker_GettingStarted

Torne o script de setup executável e execute dito script.

chmod +x setup.sh
./setup.sh

Obtendo Acesso à Internet dos Seus Containers

Às vezes, durante a instalação, as tabelas nft são configuradas incorretamente. Felizmente, esta é uma correção fácil.
A referência completa pode ser encontrada aqui, mas uma breve descrição do progresso é dada abaixo.

No seu shell digite

ifconfig

A configuração das suas interfaces de rede aparece. Uma delas chamada Balena, anote o endereço Inet desta interface.
Deveria ser algo como: 172.17.0.1

Digite o seguinte comando no seu shell e compare o endereço Inet recebido no passo anterior com a segunda linha no script.
Os dois endereços devem ser iguais, se sim, você pode ir para a próxima seção.
Se não, execute o próximo comando no seu shell e altere o endereço na segunda linha para corresponder ao recebido pelo ifconfig.

nano /etc/nftables/balena.nft

Pare e inicie o balena-engine-daemon para recarregar as tabelas nft.

/etc/init.d/balena stop
/etc/init.d/balena start

Meu Primeiro Container

Para baixar seu primeiro container, use o próximo comando, as flags serão explicadas depois, não se preocupe com elas agora. Agora baixaremos um container node-red sem pacotes personalizados. Se você não precisa de pacotes personalizados, pode parar aqui e navegar para a porta 1880 do controlador.

balena-engine run -d -p 1880:1880 --name nodered --restart always nodered/node-red

Docker Hub

A imagem arm32v7/debian usada na seção anterior foi baixada do Docker Hub.
O Docker Hub é essencialmente um local onde imagens de containers são reunidas e podem ser facilmente baixadas.
Posso recomendar a organização arm32v7, esta organização cria imagens compatíveis com a arquitetura do AXC F 2152.

A organização node-red criou uma imagem compatível com o AXC F 2152, usaremos esta imagem na próxima seção, mas primeiro gostaria de mencionar que se você for usar containers muito, deve criar uma conta no Docker Hub e usar seus repositórios. Você obterá repositórios públicos quase ilimitados e um repositório privado ao criar uma conta gratuita. Resisti a usar o Docker Hub por um tempo, mas me custou muito tempo.
Na última seção deste blog, achatarei um pouco a curva de aprendizado de usar o Docker Hub mostrando como fazer login, re-tag uma imagem e enviar uma imagem para o Docker Hub.

Dockerfile

Um dockerfile é, em certo sentido, a receita para uma imagem docker. Neste blog, usaremos um Dockerfile para criar nossa própria imagem node-red, com os pacotes que precisamos instalados.
A primeira linha de um Dockerfile é quase sempre o comando FROM. Com este comando, definimos uma imagem base a partir da qual construiremos nossa própria imagem.
Após a declaração FROM, começamos a construir nossa imagem. Existem muitos comandos possíveis que podem ser usados em um Dockerfile, mas aqui usaremos apenas RUN.
Uma referência de Dockerfile é fornecida na seção de leitura adicional.

A declaração RUN executará o comando que segue dentro do container que estamos construindo.
Então, para instalar um novo pacote, por exemplo, o pacote SNMP, declaramos: RUN npm install node-red-node-snmp

Após a teoria, vamos construir um Dockerfile. Espero que você ainda esteja em uma sessão SSH (certifique-se de estar de volta no AXC F 2152 e não no container debian de duas seções atrás!).
Você pode criar o Dockerfile com nano e copiar e colar o conteúdo no novo arquivo. Salve (ctrl + s) e saia (ctrl + x).nano Dockerfile

FROM nodered/node-red:latest-minimal
RUN npm install node-red-node-snmp

Agora é hora de construir nossa nova imagem!

balena-engine build . --tag myimage

Quando você receber a mensagem de que a imagem foi tagueada com sucesso, você construiu sua primeira imagem!
Para ver a imagem que você acabou de construir, use o comando: balena-engine images

Rodando Nossa Nova Imagem

Finalmente, estamos prontos para rodar nossa imagem e criar um container a partir dela!
Execute o seguinte comando no shell para rodar o container interativamente.
Interativamente significa que podemos ver no terminal o que está acontecendo dentro do container.
O oposto é detached, marcado com a flag -d

balena-engine run -it -p 1880:1880 --name nodered myimage

Para sair do container e mantê-lo rodando, use ctrl + p ctrl +q
Quando você navegar para o endereço IP do controlador seguido pela porta 1880, o ambiente node red aparece e vemos o pacote snmp instalado!

Iniciando a Imagem no Boot e um Primer sobre Flags do Docker Run

É impraticável inicializar o container manualmente toda vez que o AXC F 2152 é reiniciado. Felizmente, podemos dizer ao Docker para iniciá-lo para nós, e é fácil!
Use apenas o comando listado abaixo. Este também é o momento de obter uma melhor compreensão das flags do docker run usadas. Para começar, uma flag é algo que damos após o comando e começa com -- ou -.
Até agora vimos apenas -it, para rodar um container interativamente e -d para rodar um container detached (em segundo plano).

A flag -p mapeia a porta do container para a porta do host. Primeiro o número da porta do host é declarado, depois o número da porta do container.
Podemos dar um nome ao container com a flag --name. Este nome será mostrado quando você usar balena-engine ps, para listar todos os containers ativos ou balena-engine ps -a para listar todos os containers.
Quando nenhuma flag --name é usada, o balena-daemon atribuirá um nome aleatório ao container.

E por último, mas não menos importante, uma política de restart pode ser atribuída a um container com a flag --restart.
As configurações possíveis podem ser encontradas no link de referência listado nas leituras adicionais.
Por enquanto --restart always fará o truque! Nosso comando será:

balena-engine run -it -p 1880:1880 --name nodered --restart always myimage

Enviando para o Docker Hub

Quando você quiser usar sua imagem em diferentes controladores. É uma boa ideia fazer upload da sua imagem para o Docker Hub.
Pressupondo que você já tenha uma conta e criou um repositório docker, continuaremos. Primeiro, precisaremos fazer login na nossa conta. Isso pode ser feito digitando balena-engine login seguido do seu usuário e senha. Agora é possível baixar imagens de repositórios privados e enviar sua imagem para o Docker Hub.

Para enviar sua imagem para o Docker Hub, é importante acertar o nome. Quando criei um repositório myrep e minha conta de usuário é myaccount, o nome da imagem deve ser myaccount/myrep.
Quando você não nomeou assim ao construir a imagem, você tem que re-tag a imagem usando balena-engine tag oldimagetag newimagetag. No nosso caso, seria:

balena-engine tag myimage myaccount/myrep

Quando nada mais é definido, ele receberá o label latest. É possível adicionar um label adicionando : e um nome de label. Por exemplo:

balena-engine tag myimage myaccount/myrep:alabel

A única coisa que resta é enviar nossa imagem para o Docker Hub com o comando:

balena-engine push myaccount/myrep

Leituras Adicionais e Referências

Tecnologia industrial

  1. Guia Prático de Impressão 3D em Cerâmica: Técnicas, Materiais e Dicas de Design
  2. Entendendo Corantes Básicos: Usos, Segurança e Aplicações Industriais
  3. Corantes e Pigmentos Industriais: Guia Completo de Aplicações e Tipos
  4. Primeiros Passos com TJBot: Construa, Configure e Controle por Voz seu Próprio Robô de IA
  5. Guia Passo a Passo para Implantar Gateway LoRa RAK 831 no Raspberry Pi 3
  6. Construa um Gateway LoRa com Módulo RAK831 no Raspberry Pi 3 – Guia Passo a Passo
  7. Sucesso Duradouro: Lições de Persistência de Abraham Lincoln e Liderança em Manutenção
  8. IA em Seguros: Guia Prático Inicial para Implementação no Mundo Real
  9. Tutorial Arduino Iniciante 01: Comece seu Primeiro Projeto
  10. Otimize Máquinas Cat®: O Guia Definitivo do My.Cat.com