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

Definindo matrizes personalizadas em blocos funcionais nativos – um guia prático

Por que esta postagem?


Na verdade, este post foi criado porque quando eu estava desenvolvendo o Native Function Block, descobri que era impossível usar um array de estruturas customizadas. Ou dito de outra forma, é uma pena que o GitHub oficial do PLCnext não possua tutoriais deste tipo. Se você usar o tutorial C# para criar um array personalizado no Native Function Block, você descobrirá que não pode compilá-lo com sucesso ou definir os valores do array no PLCnext Engineer não tem resposta. O exemplo do caso está relacionado ao banco de dados, só isso.

Descrição da demonstração


https://github.com/Leeable/UserDefineArray_NativeFB/tree/Master


Requisitos

05 

PASSO 1

  • Crie um novo projeto usando o Visual Studio, selecione o tipo de projeto "Shared Native Function Block" e nomeie o projeto como "ArrayTest".
  • Em seguida, dentro do projeto ArrayTest no Visual Studio, crie um novo Bloco de Função Nativo chamado "ArrayCplus".


PASSO2


  • Copie esse código para ArrayCplus.cs

  • Como há alguns problemas de exibição ao incluir diretamente o código-fonte aqui, como &e>, forneci um link.

  • por exemplo, o &será codificado como 04 neste html.....

ArrayCplus.cs

PASSO3


Abra o terminal na pasta ArrayTestCpp e digite o seguinte.
14 
Após gerar o código, localize o ArrayTest-cli32.h e ArrayTest-cli64.h arquivos no diretório src e encontre os locais onde #error é indicado.



Precisamos remover os comentários e melhorar o código. Clique para navegar até InArrayFB-cli.cpp e modificar a implementação.

IntArrayFB-cli.cpp

PASSO 4


Em ArrayCplus.cpp , insira o seguinte código. O conteúdo que contém strings deve ser inicializado no processo e não na região Init; inicializá-los na região Init não funcionará, resultando na incapacidade de gravar valores em sName e sAttribute por meio do Engineer.

ArrayCplus-cli.cpp

PASSO5


Abra o terminal na pasta ArrayTestCpp e digite o seguinte.
22 

PASSO 6


Abra o PLCnext Engineer e carregue o ArrayTest.pcwlx adicione uma variável ao ArrayTest chamada arr

Agora pode funcionar


Perguntas

  • Embora este método funcione na prática, por que é necessário inicializar o conteúdo contendo IecString ou String definida pelo usuário no void PInvoke ArrayTest::ArrayCplus::Process() em vez de void PInvoke ArrayTest::ArrayCplus::Init() ? não funciona se eu colocar o código em void PInvoke ArrayTest::ArrayCplus::Init() .
  • Está claro que não há tutorial correspondente sobre matrizes definidas pelo usuário para blocos de funções nativas no GitHub. Alguém pode complementá-lo e melhorá-lo? (a maneira como o array Csharp Userdefine não funciona no bloco de função nativo)
  • Um último ponto que também me confunde é por que, independentemente de ser IecString, String definida pelo usuário ou IecStringEx*, se contiverem strings, devem estar na forma de 【InOut 】no código CSharp quando usado como um bloco de função nativo?

Observação:


O Makers Blog mostra aplicativos e histórias de usuários de membros da comunidade que não foram testados ou revisados pela Phoenix Contact. Use-os por sua própria conta e risco.

Tecnologia industrial

  1. 5 benefícios do compartilhamento de conhecimento no setor
  2. Conheça a RT100XF da Guhring:uma broca de metal duro de alto desempenho desenvolvida para metais resistentes
  3. Soluções CAD/CAM integradas:é certo para você?
  4. O que é um designador de referência e como o usamos na montagem?
  5. Quais são as consequências de não seguir as instruções de trabalho?
  6. Como o balanceamento de ferramentas aumenta a vida útil e a produtividade da ferramenta
  7. Como a IA e a robótica estão aumentando a qualidade e a eficiência da fabricação?
  8. O que é Logística da Cadeia de Suprimentos? Uma Definição e Análise dos Desafios e Benefícios da Logística da Cadeia de Suprimentos
  9. Material útil relacionado a inversores multinível
  10. O Gaudio transforma o design do fone de ouvido intra-auricular com o Fusion 360