O software editor das IHM’s Weintek dispõe de um amplo repertório de funções pré-programadas para a construção de gráficos, configuração de alarmes, criação de tabelas, etc, mas principalmente oferece funções que permitem ao operador ler e escrever variáveis na memória de um CLP.

Caso você não encontre exatamente uma função específica para sua necessidade, você poderá construí-la usando instruções para criar algoritmos específicos (macros).

Macros são seqüências de instruções que serão executados somente quando forem chamados dentro do programa.

1. Construção de um macro

No software EasyBuider8000, clique em Tools > Macro… Clique em NEW e na janela WorkSpace no campo “Macro name:” digite um nome para o seu macro ou utilize o default “macro_1”.
Dentro deste arquivo, logo após o comando “macro_command main()”, vamos iniciar a construção do nosso código.


Um macro inicia pela declaração das variáveis que devem ser escritas logo após “macro_command main()”. Qualquer variável a ser utilizada nas operações do macro deve primeiro ser declarada pelo tipo (bool, char, short, int ou float) e pelo seu nome.

Após a declaração das variáveis escreveremos a seqüencia das instruções que irão operar sobre as variáveis já declaradas e que vão compor o nosso algoritmo. Estas instruções serão executadas de forma seqüencial na ordem em que foram escritas.
O macro sempre termina com o comando “end macro_command”.

Os macros não compartilham diretamente a memória da IHM, assim para que os valores armazenados na IHM fiquem disponíveis dentro do macro eles precisam primeiro ser transferidos para as variáveis através da função GetData.

Clique no botão [GET/SET FN…] e a janela API irá aparecer:

Siga as instruções acima, clique ‘OK’, clique ENTER e a instrução seguinte deve aparecer no seu macro:GetData

(x, “Local HMI”, LW, 0, 1) Esta instrução copia o valor contido no endereço LW0 para dentro da variável “x”.

Agora vamos construir a nossa equação:

Digite “y = 123”, esta instrução move o valor “123” para dentro da variável “y”.
Digite “z = x * y”, esta é a operação desejada, ou seja, multiplicar o valor em “x” (LW0) por “123” e colocar o resultado em “z”.

Os macros não compartilham a memória da IHM, então para que os valores das variáveis do Macro fiquem disponíveis na IHM eles precisam ser transferidos para a IHM através da função SetData.

Clique novamente no botão [GET/SET FN…], escolha: SetData, variável “z”, LW, endereço 1 e confirme com OK’ e ENTER:
SetData(z, “Local HMI”, LW, 1, 1) Esta instrução copia o valor da variável “z” do Macro para o endereço LW1 da IHM.

Agora temos nosso macro terminado:

Omacro que acabamos de editar precisa agora ser compilado para se tornar executável pelo processador da IHM.
Clique em “COMPILE”, em “EXIT” e por último em OK. O macro agora está pronto, mas ainda precisamos indicar como e quando ele será executado.

2. Formas de execução dos Macros

Um macro é executado somente na transição do estado lógico do bit de controle, ele não é executado continuamente.

Existem 3 maneiras de ativar um macro: Por ação do operador através de um botão dentro de uma tela, automaticamente pelo programa ou via chamada dentro de outro Macro.

Por ação do operador: São 3 tipos de botões, “Function key object”, “Set bit” ou “Toggle switch Object”.
Vá em “Objects” > Button > e escolha um botão nas opções acima. Na aba “General” escolha a opção “Execute Macro” e em seguida, na lista, escolha o macro a ser executado.
O macro será executado quando ocorrer uma transição no bit de controle (acionamento do botão).

Pelo programa: “PLC Control object”:
Vá em “Objects” > ”PLC Control” e escolha “New”, no campo “Type of control” selecione “Execute macro program”, escolha na lista o macro a ser executado, em “Trigger address” selecione o tipo e o endereço do bit e finalmente em “Trigger mode” a forma de gatilhamento: Borda de subida (OFF>ON), de descida (ON>OFF), ambos (OFF<->ON) ou sempre ativo (Always active when ON), este último, se o bit estiver ligado, ativa o macro ciclicamente a cada 0,5s aproximadamente.

Via chamada dentro de outro Macro:
Dentro de um macro utilize a função SYNC_TRIG_MACRO(macro ID) para chamar o novo macro e pausar a execução do primeiro até o término do segundo. Se desejar executar os 2 macros simultaneamente utilize a função ASYNC_TRIG_MACRO(macro ID).

3. Criação de uma tela para testar o macro.

Na tela Default (WINDOW_10) vamos adicionar 3 objetos para testar o funcionamento deste macro:

a) Caixa de entrada:
Clique em “Objects” > ”Numeric/ASCII” > “Numeric input” configure como abaixo e posicione a caixa à esquerda na tela:

imag49.jpg

B) Caixa de saída:
Clique em “Objects” > ”Numeric/ASCII” > “Numeric display” configure como abaixo e posicione o componente a direita na tela:

imag50.jpg

C) Botão para ativação do macro a cada 0.1s:
Clique em “Objects” > Button > “Set Bit” escolha o atributo “Periodic toggle” com 0.1s e posicione no meio da tela:

imag51.jpg

D) Agora você deve ter uma tela semelhante a esta:

imag52.jpg

4. Simulando a IHM no EasyBuilder.

Para testar o macro vamos colocar o EasyBuilder no modo de simulação: Clique “Tools” > “On-line Simulation”, escolha um nome e salve o seu projeto. Agora na tela de simulação clique sobre o display da esquerda e insira um número, o resultado processado pelo macro, armazenado na variável LW1, vai aparecer no display da direita.

imag53.jpg

Normalmente na criação de um projeto devemos primeiro salvar o programa e depois compilá-lo. Quando utilizamos a simulação, este processo é automático.