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.
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, |
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 |
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 |
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.