Como um projeto é organizado

Um projeto do OnStudio segue o modelo da norma IEC 61131-3. Os nomes podem parecer abstratos no começo (recurso, POU, tarefa), mas cada um corresponde a uma pergunta concreta sobre a sua aplicação. Esta página explica o que cada parte do projeto representa e como elas se encaixam, usando o projeto de exemplo Manual_Exemplo.

../../_images/shell_projeto_aberto.png

Fig. 3 O projeto Manual_Exemplo na árvore do projeto.

Aplicação ou biblioteca

Todo projeto é de um de dois tipos:

  • Aplicação: o programa que vai rodar num controlador. É compilado para um equipamento e implantado nele.

  • Biblioteca: um conjunto de funções, blocos de função e tipos de dados para reaproveitar em várias aplicações. É compilada para famílias de equipamento e publicada no computador; não é implantada (ver Criar uma biblioteca e usá-la em outros projetos).

O resto desta página trata de projetos de aplicação.

As partes de uma aplicação

Parte

Responde à pergunta

Recurso

Qual é o conjunto que roda num controlador? Reúne o hardware, as tarefas, as variáveis globais e as POUs. Um projeto novo já vem com o recurso Resource_01, e a maioria das aplicações não precisa de outro.

Hardware (dispositivo)

Em que equipamento ela roda? O controlador (família, modelo e firmware) e os módulos de entrada e saída instalados em cada slot. No exemplo, NEON_1, um NEON5-2S com três módulos.

Tarefas

Quando cada programa roda? Uma tarefa executa um ou mais programas, continuamente ou a cada intervalo. Um projeto novo vem com a tarefa contínua Task_01.

POUs

O que a aplicação faz? O código, em blocos chamados POUs (Program Organization Units): programas, funções e blocos de função. No exemplo, o programa MAIN e o bloco de função FB_BOMBA.

Variáveis globais

Que dados são compartilhados? Variáveis visíveis por todas as POUs e, quando têm endereço, acessíveis de fora do controlador (supervisório, outros equipamentos).

Tipos de dados

Que estruturas a aplicação usa? Estruturas, enumerações e vetores definidos para o projeto, como T_MOTOR e T_ESTADO_MAQUINA no exemplo.

Mapeamento de dados

Que dados vêm e vão para outros equipamentos? Canais Modbus, MQTT ou LoRa usados pelos blocos de comunicação da biblioteca HI_STD (ver Trocar dados com outros equipamentos por Modbus).

Como as partes se encaixam

O controlador executa tarefas. Cada tarefa executa, na ordem, os programas atribuídos a ela. Um programa que não está atribuído a nenhuma tarefa é compilado, mas nunca roda: é um engano comum depois de criar um programa novo (ver Escrever um programa).

Os programas chamam funções e usam blocos de função. Um bloco de função tem memória própria, por isso é usado através de uma instância: no exemplo, MAIN declara bomba : FB_BOMBA e chama bomba(...) a cada ciclo; a instância guarda, entre um ciclo e outro, quantas partidas a bomba já teve.

As entradas e saídas do equipamento aparecem para o código como variáveis no namespace io, com nomes gerados a partir dos módulos do hardware (io.DI00, io.DO03…). Você pode dar a elas nomes mais claros, como Botao_Liga (ver Usar entradas, saídas e variáveis globais).

As variáveis globais ligam as partes: um programa escreve, outro lê; e, quando a variável tem endereço, um supervisório ou outro controlador lê e escreve pela rede. Cada POU declara, em VAR_EXTERNAL, as globais que usa (ver Usar variáveis globais numa POU).

Projeto, aplicação compilada e equipamento

Três coisas diferentes costumam ser chamadas de “programa”:

  • o projeto, que você edita no OnStudio e fica guardado no computador;

  • a aplicação compilada (arquivo .wca), gerada a partir do projeto para um equipamento e um firmware (ver O que acontece quando você compila);

  • a aplicação no equipamento, que é a aplicação compilada depois de implantada.

Alterar o projeto não muda nada no equipamento até você compilar e implantar de novo. A aba Aplicação do Gerenciamento do Dispositivo mostra o nome, a versão e o CRC da aplicação que está no equipamento, para conferir se é a mesma do projeto.