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

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

Olá a todos,

Neste post 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 assume que você tem alguma experiência com C++ e PLCnext Engineer.

início

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

Escolhi pessoalmente 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, pode ser encontrado em nosso site.

Exercício Simples

Para este primeiro exemplo, faremos uma pequena aplicação que verifica se o número correto é enviado do PLC. Primeiro crie um novo projeto C++. Então vamos ao arquivo header, o nome deve parecer algo como [NomeDoProjeto].hpp, existem também arquivos com o nome [nomeDoProjeto]component.hpp que não usaremos. Uma vez no arquivo header, haverá uma parede de código à sua frente, mas não se preocupe, será simples. Primeiro, definiremos as portas, uma IN e uma OUT. Elas podem ser definidas assim, lembre-se que isso é apenas para tipos de dados simples:

//#port
//#attributes(input)
//#name(InputTest)
int64 InputTest = 0;

//#port
//#attributes(Output)
//#name(outputTest)
int64 OutputTest = 0;

Então passamos para o próximo arquivo onde faremos a codificação real. Este deve ser chamado [NomeDoProjeto].cpp e não deve conter muito. Vamos mudar isso em breve. Vamos adicionar algum código para verificar números usando If's ou switch case, isso fica a seu critério. Usei estruturas if neste:

void PLMProjectReadInputProgram::Execute() {
    if (InputTest == 1) {
        OutputTest = 15;
    }
    if (InputTest == 2) {
        OutputTest = 150;
    }
    if (InputTest == 3) {
        OutputTest = 1500;
    }
    if (InputTest == 4) {
        OutputTest = 15000;
    }
}

Antes de irmos para o PLCnext Engineer, precisamos transformar este projeto C++ em uma biblioteca para o PLC entender. Isso é feito apenas clicando em build no topo da tela. Isso deve rodar por um tempo e avisará quando a biblioteca estiver completa. Se este passo não estiver claro, recomendo fortemente verificar os tutoriais listados acima.

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

Navegue até o programa principal na aba components sob programming na pasta 'Local' e selecione variables dentro da tela principal para ver as variáveis no PLC. Aqui podemos escolher um nome, um tipo de dado e o uso. Tipos de dados no PLCnext Engineer precisam ser os mesmos do programa C++. Um link para os diferentes tipos e seus equivalentes pode ser encontrado 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.

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

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

A biblioteca que você fez pode ser encontrada dentro da pasta bin do seu projeto, copie esta para a pasta libraries do PLCnext Engineer. O local parece algo como:

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

Depois disso, voltamos ao PLCnext Engineer para adicionar a biblioteca ao nosso programa. Navegamos para a aba components, abrindo a caixa libraries e clicando com botão direito em libraries. Então clique em 'add user library', isso o levará à pasta libraries que fomos antes. Escolha a biblioteca que deseja usar e continue.

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

Uma vez feito isso, precisaremos adicionar o programa às tasks, o que é feito da seguinte forma. No lado esquerdo da tela dentro da área plant, dê duplo clique em PLCnext. Deve abrir no meio. Então vá para a aba 'tasks and events' e adicione um novo programa após o MainInstance. Isso pode ser feito de duas formas, seja selecionando o tipo de programa ou arrastando-o da área components sob 'PLCnext Components & Programs'.

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

Então as variáveis devem aparecer na aba 'Port list' encontrada ao lado da aba 'tasks and events'. Abra esta para ser saudado por todas as suas variáveis de C++ e PLCnext. Deve parecer algo assim:

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

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

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

Para adicionar um valor dummy à nossa variável, vamos navegar até o programa principal na aba components e selecionar code dentro da tela principal para ver o código e adicionar o nosso. Vamos apenas definir a variável de saída para um valor numérico, neste caso 1.

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

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

Exercício Complexo

Para este exemplo, faremos uma pequena aplicação que enviará um array de structs para e do PLC. Primeiro crie um novo projeto C++. Então vamos ao arquivo header, o nome deve parecer algo como [NomeDoProjeto].hpp, existem também arquivos com o nome [nomeDoProjeto]component.hpp que não usaremos. Uma vez no arquivo header, haverá uma parede de código à sua frente, mas não se preocupe, será simples. Primeiro, precisaremos criar uma struct para este exemplo, faremos uma struct para um carro. Isso é feito da seguinte forma:

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

IMPORTANTE! Os nomes e tipos em C++ e PLCnext Engineer precisam ser os mesmos! Tipos de dados podem ser encontrados aqui.

Então definiremos as portas, uma IN e uma OUT, porque elas serão listas de dados, faça-as como tal. Também importante é fazer uma lista de 'carros'. Isso é feito assim:

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

//#port
//#attributes(Output)
//#name(CarOut)
StrCar CarFromC[2];

Então passamos para o próximo arquivo onde faremos a codificação real. Este deve ser chamado [NomeDoProjeto].cpp e não deve conter muito. Vamos mudar isso em breve. Aqui mudaremos os valores do carro um e 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 dummy 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 irmos para o PLCnext Engineer, precisamos transformar este projeto C++ em uma biblioteca para o PLC entender. Isso é feito apenas clicando em build no topo da tela. Isso deve rodar por um tempo e avisará quando a biblioteca estiver completa. Se este passo não estiver claro, recomendo fortemente verificar os tutoriais listados acima.

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

Agora, antes de podermos criar variáveis no PLCnext Engineer, precisaremos criar um tipo de dado nosso, neste caso uma struct carro e uma lista de carros. Para isso precisaremos de um arquivo de datatypes que pode ser encontrado e criado aqui:

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

Abra este arquivo se ainda não estiver aberto, então podemos começar a criar nossa própria struct da seguinte forma:

TYPE
    StrCar:
    STRUCT
        sBrand: STRING;
        iHorsepower: INT;
        iYear: int;
        xInsured: BOOL;
    END_STRUCT
END_TYPE

IMPORTANTE! Os nomes e tipos em C++ e PLCnext Engineer precisam ser os mesmos! Tipos de dados podem ser encontrados aqui.

Após criar a struct, precisamos criar um array deste tipo e é feito assim e no mesmo arquivo em que estamos atualmente:

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

Para criar uma variável com o tipo 'carList', navegue até o programa principal na aba components sob 'programming' então dentro da pasta 'Programs' e selecione variables dentro da tela principal para ver as variáveis no PLC. Aqui podemos escolher um nome, um tipo de dado e o uso. Como tipo de dado, selecione nosso customizado:

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

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

A biblioteca que você fez pode ser encontrada dentro da pasta bin do seu projeto, copie esta para a pasta libraries do PLCnext Engineer. O local parece algo como:

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

Depois disso, voltamos ao PLCnext Engineer para adicionar a biblioteca ao nosso programa. Navegamos para a aba components, abrindo a caixa libraries e clicando com botão direito em libraries. Então clique em 'add user library', isso o levará à pasta libraries que fomos antes. Escolha a biblioteca que deseja usar e continue.

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

Uma vez feito isso, precisaremos adicionar o programa às tasks, o que é feito da seguinte forma. No lado esquerdo da tela dentro da área plant, dê duplo clique em PLCnext. Deve abrir no meio. Então vá para a aba 'tasks and events' e adicione um novo programa após o MainInstance. Isso pode ser feito de duas formas, seja selecionando o tipo de programa ou arrastando-o da área components sob 'PLCnext Components & Programs'.

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

Então as variáveis devem aparecer na aba 'Port list' encontrada ao lado da aba 'tasks and events'. Abra esta para ser saudado por todas as suas variáveis de C++ e PLCnext. Deve parecer algo assim.

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

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

Dominando Tipos de Dados Simples e Complexos em C++ com PLCnext Engineer

Para adicionar um valor dummy à nossa variável, vamos navegar até o programa principal na aba components e selecionar code dentro da tela principal para ver o código e adicionar o nosso. Vamos apenas definir a variável de saída para algumas especificações de carro. Estas podem ser escolhidas aleatoriamente, mas precisarão corresponder aos tipos de dados. (dependendo do que você escolheu, use strings onde usou strings etc.)

CarToC[0].sBrand := 'Audi';
CarToC[0].iHorsepower := 200;
CarToC[0].iYear := 2020;
CarToC[0].xInsured := TRUE;

CarToC[1].sBrand := 'Mazda';
CarToC[1].iHorsepower := 120;
CarToC[1].iYear := 2001;
CarToC[1].xInsured := FALSE;

Uma vez que implantarmos este exemplo, a lista de saída deve ser invertida na lista de entrada. Você pode ver as variáveis na 'Port List' de antes.

Tecnologia industrial

  1. Expandindo horizontes da nuvem: novas zonas, contêineres e estratégias multicloud
  2. Análise Avançada de Circuitos DC Reativos com Condições Iniciais Não-Nulas
  3. Fundamentos de C#: Essenciais de Entrada e Saída
  4. Classes e Objetos em C++: Guia Prático de Programação Orientada a Objetos
  5. Estruturas vs Classes em C++: Guia Prático para Desenvolvedores Embarcados
  6. Guia Completo de Data e Hora em C++
  7. Escrita de Procedimentos Digitais: Simples, Eficiente e Confiável
  8. Acesso Remoto Seguro gRPC com grpcurl em Dispositivos PLCnext
  9. Desenvolver Aplicação Console PLCnext em C#: Guia para Iniciantes
  10. Instalando o Gerenciador de Pacotes APT no Linux PLCnext: Guia Passo a Passo