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
Na árvore do projeto, clique com o botão direito em POUs (ou em uma pasta dentro dele) e escolha Adicionar Programa.
Escolha o Tipo de Programa (Programa, Função ou Bloco de Função), mantenha a Linguagem Fonte Texto Estruturado (ST) e dê um nome.
Clique em Criar. A POU abre no editor.
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.
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.
Clique no recurso (Resource_01) na árvore do projeto.
Na aba Configuração, cartão Tarefas, abra a tarefa que vai executar o programa (por exemplo Task_01).
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
O programa compila mas não faz nada no equipamento: confira se ele está atribuído a uma tarefa (veja Fazer um programa novo rodar).
A compilação acusa
ST3010numa variável global: declare-a emVAR_EXTERNALna POU (veja Usar variáveis globais numa POU).O editor sublinha uma variável como não declarada: declare-a na POU ou nas variáveis globais do recurso (ver Usar entradas, saídas e variáveis globais).
Os erros da compilação estão explicados na aba PROBLEMAS (ver Painel de Problemas).