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

Usando tipos de dados simples e complexos em C++


Olá a todos,

Nesta postagem do blog, exploraremos tipos de dados simples e complexos em C++ e PLCnext Engineer. Ele conterá duas partes distintas, um exercício simples e um complexo.

Este tutorial pressupõe que você tenha alguma experiência com C++ e PLCnext Engineer.

começar

Primeiro, você precisará das ferramentas certas para o trabalho, um editor C++, o software PLCnext Engineer e um PLC Phoenix Contact para executá-lo. Estes são os materiais que usei:

Eu pessoalmente escolhi o Visual Studio como meu editor C++, mas o eclipse também pode ser usado. Os links para os tutoriais podem ser encontrados aqui:

Quanto ao PLCnext Engineer, ele pode ser encontrado em nosso site.

Exercício simples

Para este primeiro exemplo estaremos fazendo uma pequena aplicação que verifica se o número correto é enviado do CP. Primeiro faça um novo projeto C++. Então vamos para o arquivo de cabeçalho, o nome deve ser algo assim [NameOfTheProject].hpp, também existem arquivos com o nome [nameOfTheProject]component.hpp que não usaremos. Quando estiver no arquivo de cabeçalho, haverá uma parede de código diante de você, mas não se preocupe, será simples. Primeiramente, estaremos definindo as portas, uma IN e uma OUT. Eles podem ser definidos assim, lembre-se de que isso é apenas para tipos de dados simples:

//#porta
//#attributes(entrada)
//#name(InputTest)
int64 InputTest =0;



//#porta
//#attributes(Saída)
//#name(saídaTeste)
int64 Teste de Saída =0;


Em seguida, passamos para o próximo arquivo onde faremos a codificação real. Isso deve ser nomeado [NameOfTheProject].cpp e não deve conter muito. Estaremos mudando isso em breve. Vamos adicionar algum código para verificar os números usando ifs ou um switch case, isso é com você. Eu usei if estruturas neste:

void PLMProjectReadInputProgram::Execute()void PLMProjectReadInputProgram::Execute(){
if (InputTest ==1) {
Teste de Saída =15;}



if (InputTest ==2) {
Teste de Saída =150;}



if (InputTest ==3) {
Teste de Saída =1500;}



if (InputTest ==4) {
Teste de Saída =15000;}

}

Antes de passarmos para o engenheiro do PLCnext, precisamos transformar esse projeto C++ em uma biblioteca para o PLC entender. Isso é feito apenas clicando em construir na parte superior da tela. Isso deve ser executado um pouco e informará quando a biblioteca estiver concluída. Se esta etapa não estiver clara, recomendo que você verifique os tutoriais listados acima.

Navegue até o programa principal na aba de componentes em programação na pasta ‘Local’ e selecione as variáveis ​​dentro da tela principal para ver as variáveis ​​no CP. Aqui podemos escolher um nome e um tipo de dados e o uso. Os tipos de dados no PLCnext Engineer precisam ser os mesmos que no programa C++ um link para os diferentes tipos e seus iguais podem ser encontrados aqui. O uso definirá se as variáveis ​​são locais ou podem ser usadas para enviar e receber dados de programas ou variáveis ​​externas.

Depois de fazer isso, começaremos a conectar as variáveis ​​após adicionarmos a nova biblioteca. Isso pode ser feito assim:

A biblioteca que você criou pode ser encontrada dentro da pasta bin do seu projeto, copie para a pasta bibliotecas do PLCnext Engineer. A localização é mais ou menos assim:

C:\Users\Public\Documents\PLCnext Engineer\Libraries

Depois disso voltamos ao engenheiro do PLCnext para adicionar a biblioteca ao nosso programa. Navegaremos até a guia de componentes, abrindo a caixa de bibliotecas e clicando com o botão direito do mouse em bibliotecas. Em seguida, clique em 'adicionar biblioteca de usuários', isso o levará à pasta de bibliotecas que acessamos anteriormente. Escolha a biblioteca que deseja usar e continue.

Feito isso, precisaremos adicionar o programa às tarefas que são feitas da seguinte maneira. No lado esquerdo da tela dentro da área da planta clique duas vezes em PLCnext. Deve abrir no meio. Em seguida, vá para a guia 'tarefas e eventos' e adicione um novo programa após o MainInstance. Isso pode ser feito de duas maneiras, selecionando o tipo de programa ou arrastando-o da área de componentes em ‘PLCnext Components &Programs’.

Em seguida, as variáveis ​​devem aparecer na guia 'Lista de portas' localizada ao lado da guia 'tarefas e eventos'. Abra isto para ser saudado por todas as suas variáveis ​​de C++ e PLCnext. Deve ser algo assim:

Se você fez tudo corretamente, você deve conseguir conectar as portas OUT do seu CLP à porta IN do programa C++, o contrário também é possível, e deve ficar assim. Se isso não funcionar, tente verificar seus tipos de dados.

Para adicionar um valor fictício à nossa variável, vamos navegar até o programa principal na guia de componentes e selecionar o código dentro da tela principal para ver o código e adicionar alguns dos nossos. Estaremos apenas definindo a variável saindo para um valor numérico, neste caso 1.

Agora vamos implantar o projeto no plc e devemos obter 15 como resposta do código C++. Você pode ver as variáveis ​​na 'Lista de Portas' de antes.

Exercício complexo

Para este exemplo, faremos um pequeno aplicativo que enviará um array de structs para e do PLC. Primeiro faça um novo projeto C++. Então vamos para o arquivo de cabeçalho, o nome deve ser algo assim [NameOfTheProject].hpp, também existem arquivos com o nome [nameOfTheProject]component.hpp que não usaremos. Quando estiver no arquivo de cabeçalho, haverá uma parede de código diante de você, mas não se preocupe, será simples. Primeiro, precisaremos fazer uma estrutura para este exemplo, faremos uma estrutura para um carro. Isto se faz do seguinte modo:

public:// typedefs
struct StrCar{
StaticString<80> sbrand;
int16 iHorsepower;
int16 iAno;
boolean xSegurado;
};

!IMPORTANTE! Os nomes e tipos no engenheiro C++ e PLCnext precisam ser os mesmos! Os tipos de dados podem ser encontrados aqui.

Em seguida estaremos definindo as portas, uma IN e uma OUT porque serão listas de dados torná-las como tal. Também é importante fazer uma lista de ‘carros’. Isso é feito assim:

//#porta
//#attributes(Input)
//#name(CarIn)
StrCar CarToC[2];

//#porta
//#attributes(Saída)
//#name(CarOut)
StrCar CarFromC[2];

Em seguida, passamos para o próximo arquivo onde faremos a codificação real. Isso deve ser nomeado [NameOfTheProject].cpp e não deve conter muito. Estaremos mudando isso em breve. Aqui estaremos alterando os valores do carro um e do carro dois.

//Define o primeiro membro da lista de carros igual ao carro do PLC
CarFromC[0].sbrand =CarToC[1].sbrand;
CarFromC[0].iHorsepower =CarToC[1].iHorsepower;
CarFromC[0].iYear =CarToC[1].iYear;
CarFromC[0].xInsured =CarToC[1].xInsured;

//Adiciona valores fictícios ao segundo membro
CarFromC[1].sbrand =CarToC[0].sbrand;
CarFromC[1].iHorsepower =CarToC[0].iHorsepower;
CarFromC[1].iYear =CarToC[0].iYear;
CarFromC[1].xInsured =CarToC[0].xInsured;

Antes de passarmos para o engenheiro do PLCnext, precisamos transformar esse projeto C++ em uma biblioteca para o PLC entender. Isso é feito apenas clicando em construir na parte superior da tela. Isso deve ser executado um pouco e informará quando a biblioteca estiver concluída. Se esta etapa não estiver clara, recomendo que você verifique os tutoriais listados acima.

Agora, antes de podermos fazer variáveis ​​no PLCnext engenheiro, precisaremos criar um tipo de dados próprio, neste caso um struct car e uma lista de carros. Para isso, precisaremos de um arquivo de tipos de dados e pode ser encontrado e criado aqui:

Abra este arquivo se ainda não o fez, então podemos começar a fazer nossa própria estrutura da seguinte forma:

TIPO

StrCar:

ESTRUTURA

sMarca:STRING;
iHorsepower:INT;
iAno:int;
xSegurado:BOOL;

END_STRUCT

END_TYPE

!IMPORTANTE! Os nomes e tipos no engenheiro C++ e PLCnext precisam ser os mesmos! Os tipos de dados podem ser encontrados aqui.

Depois de fazer a struct precisamos fazer um array desse tipo e é feito assim e no mesmo arquivo que estamos atualmente:

TIPO

carList:ARRAY[0..1] OF StrCar;

END_TYPE

Para criar uma variável do tipo ‘carList’ navegue até o programa principal na aba de componentes em ‘programação’ depois dentro da pasta ‘Programas’ e selecione as variáveis ​​dentro da tela principal para ver as variáveis ​​no CP. Aqui podemos escolher um nome e um tipo de dados e o uso. Como tipo de dados, selecione nosso personalizado:

Depois de fazer isso, começaremos a conectar as variáveis ​​após adicionarmos a nova biblioteca. Isso pode ser feito assim:

A biblioteca que você criou pode ser encontrada dentro da pasta bin do seu projeto, copie para a pasta bibliotecas do PLCnext Engineer. A localização é mais ou menos assim:

C:\Users\Public\Documents\PLCnext Engineer\Libraries

Depois disso voltamos ao engenheiro do PLCnext para adicionar a biblioteca ao nosso programa. Navegaremos até a guia de componentes, abrindo a caixa de bibliotecas e clicando com o botão direito do mouse em bibliotecas. Em seguida, clique em 'adicionar biblioteca de usuários', isso o levará à pasta de bibliotecas que acessamos anteriormente. Escolha a biblioteca que deseja usar e continue.

Feito isso, precisaremos adicionar o programa às tarefas que são feitas da seguinte maneira. No lado esquerdo da tela dentro da área da planta clique duas vezes em PLCnext. Deve abrir no meio. Em seguida, vá para a guia 'tarefas e eventos' e adicione um novo programa após o MainInstance. Isso pode ser feito de duas maneiras, selecionando o tipo de programa ou arrastando-o da área de componentes em ‘PLCnext Components &Programs’.

Em seguida, as variáveis ​​devem aparecer na guia 'Lista de portas' localizada ao lado da guia 'tarefas e eventos'. Abra isto para ser saudado por todas as suas variáveis ​​de C++ e PLCnext. Deve ser algo assim.

Se você fez tudo corretamente, você deve conseguir conectar as portas OUT do seu CLP à porta IN do programa C++, o contrário também é possível, e deve ficar assim. Se isso não funcionar, verifique os tipos de dados e nomes de suas variáveis.

Para adicionar um valor fictício à nossa variável, vamos navegar até o programa principal na guia de componentes e selecionar o código dentro da tela principal para ver o código e adicionar alguns dos nossos. Estaremos apenas definindo a variável saindo para algumas especificidades do carro. Eles podem ser escolhidos aleatoriamente, mas precisarão corresponder aos tipos de dados. (dependendo do que você escolheu, use strings onde você usou strings etc.)

CarToC[0].sBrand :='Audi';
CarToC[0].iHorsepower :=200;
CarToC[0].iAno :=2020;
CarToC[0].xSegurado :=TRUE;

CarToC[1].sBrand :='Mazda';
CarToC[1].iHorsepower :=120;
CarToC[1].iAno :=2001;
CarToC[1].xSegurado :=FALSO;

Assim que implantarmos este exemplo, a lista de saída deve ser trocada na lista de entrada. Você pode ver as variáveis ​​na 'Lista de Portas' de antes.

Tecnologia industrial

  1. Para a nuvem infinita e além
  2. Tensão complexa e cálculos de corrente
  3. Entrada e saída básica em C#
  4. Classes e objetos C++
  5. Estruturas e classes em C ++
  6. Data e hora do C++
  7. Procedimentos de escrita:simples e eficientes ao digital
  8. gRPC remoto usando grpcurl
  9. Como criar um aplicativo de console PLCnext simples em C#
  10. Instalando o gerenciador de pacotes apt(-get) no PLCnext