Escrever um programa

O código da aplicação fica em POUs: programas, funções e blocos de função. Esta página mostra como criar cada tipo, como fazer um programa novo rodar e como organizar o código. As regras da linguagem ST estão em Linguagem Texto Estruturado (ST).

Qual tipo de POU usar

Tipo

Use para

Programa

A lógica principal de uma parte da máquina. É o único tipo que uma tarefa executa.

Função

Um cálculo que só depende das entradas e devolve um valor, como converter uma escala. Não guarda nada de um ciclo para o outro.

Bloco de função

Algo que precisa de memória entre ciclos, como um temporizador, uma rampa ou o controle de um motor. É usado através de instâncias: uma por equipamento controlado.

Na dúvida entre função e bloco de função, pergunte-se se o resultado depende do que aconteceu nos ciclos anteriores. Se depende, é um bloco de função.

Criar uma POU

  1. Na árvore do projeto, clique com o botão direito em POUs (ou em uma pasta dentro dele) e escolha Adicionar Programa.

  2. Escolha o Tipo de Programa (Programa, Função ou Bloco de Função), mantenha a Linguagem Fonte Texto Estruturado (ST) e dê um nome.

  3. Clique em Criar. A POU abre no editor.

  4. Declare as variáveis na área Declaração de Variáveis e escreva o código na área Lógica do Programa. Para uma função, defina o Tipo de Retorno na aba Variáveis.

  5. Salve com CTRL + S.

Resultado: a POU aparece na árvore. O editor confere o código enquanto você digita e sublinha os erros (ver Editor ST).

Fazer um programa novo rodar

Um programa só é executado se estiver atribuído a uma tarefa. Um programa recém-criado ainda não está: ele é compilado, mas não roda.

  1. Clique no recurso (Resource_01) na árvore do projeto.

  2. Na aba Configuração, cartão Tarefas, abra a tarefa que vai executar o programa (por exemplo Task_01).

  3. Em Programas Atribuídos, clique em Adicionar Programa e escolha o programa.

Os programas de uma tarefa rodam na ordem da lista. Para entender tarefas e escolher o tipo certo, veja Configurar tarefas e o tempo de ciclo.

Usar um bloco de função

Declare uma instância do bloco no programa que vai usá-lo e chame a instância a cada ciclo. No exemplo, o programa também usa três variáveis globais do projeto, por isso as declara em VAR_EXTERNAL (veja Usar variáveis globais numa POU):

VAR
    bomba : FB_BOMBA;
END_VAR
VAR_EXTERNAL
    Bomba_Ligada : BOOL;
    Nivel_Alto : BOOL;
    Alarme_Geral : BOOL;
END_VAR

bomba(habilita := Bomba_Ligada, sensor_nivel := Nivel_Alto);
Alarme_Geral := bomba.ligar AND NOT Bomba_Ligada;

Cada instância tem a sua própria memória: para controlar duas bombas iguais, declare duas instâncias (bomba1, bomba2) do mesmo bloco.

Para usar blocos prontos das bibliotecas da HI Tecnologia (temporizadores, contadores, comunicação), procure-os no painel Bibliotecas da barra lateral direita. Os blocos da biblioteca HI_STD são chamados com o prefixo HILS. (por exemplo HILS.MDB_GATEWAY_EX).

Usar variáveis globais numa POU

Uma POU só enxerga uma variável global depois de declará-la num bloco VAR_EXTERNAL, com o mesmo nome e o mesmo tipo da declaração global. A declaração deixa explícito, em cada POU, de quais dados globais ela depende. Sem ela, a compilação acusa o problema ST3010 (A variável global ‘…’ precisa ser declarada em VAR_EXTERNAL para ser usada nesta POU).

Você pode escrever o bloco na área Declaração de Variáveis ou, na aba Variáveis da POU, adicionar uma variável da classe Externa e escolhê-la em Selecionar Variável Global. As entradas e saídas (io.…) não precisam dessa declaração.

Organizar o código

  • Pastas: clique com o botão direito em POUs, escolha Adicionar Pasta e arraste as POUs para ela. As pastas só organizam a árvore; não mudam nada na compilação.

  • Documentação: na aba Documentação da POU, escreva para que ela serve. A Descrição Curta aparece na pesquisa e ajuda quem for mexer no projeto depois.

  • Pesquisa: a atividade Pesquisar (CTRL + SHIFT + F) procura um nome em todas as POUs (ver Pesquisa no projeto).

  • Reaproveitar entre projetos: código usado em vários projetos deve ir para uma biblioteca (ver Criar uma biblioteca e usá-la em outros projetos).

Se algo der errado