Neste tutorial estão descritas orientações e procedimentos para alterar o estado do seu CLP por meio do programa de usuário.
Componentes
Software: MasterTool IEC XE 3.34
CLP: XP325
Seções do Tutorial
1. ARQUITETURA
2. DESENVOLVIMENTO
1. ARQUITETURA
Na arquitetura deste tutorial foi utilizado um CLP Série Nexto Xpress alimentado por fonte 24VDC, onde conectou-se a porta Ethernet do XP325 na porta Ethernet do computador, utilizando o cabo NX92xx.
2. DESENVOLVIMENTO
Neste tutorial será explicado os passos para alterar o estado do CLP com a aplicação em execução, por meio do programa do usuário. O estado do CLP (RUN/STOP) pode ser controlado usando funções fornecidas pela biblioteca CmpApp. Como o programa do usuário não é executado em STOP, será utilizado um recurso chamado System Event para permitir que o código seja executado independente do estado da aplicação. O primeiro passo é configurar um evento do sistema que será usado para executar o código:
1. Acesse a janela “Configuração de Tarefas”.
2. Vá para a guia “Eventos do Sistema”.
3. Clique no botão “Add Event Handler”, uma nova página aparecerá para configurar o evento.
4. Selecione o evento “BeforeReadInputs”, que será executado antes da execução das Tarefas IEC. O campo “Descrição” mostra detalhes sobre o evento escolhido.
5. Em “Função a chamar”, digite o nome da função desejada. É aqui que o código será implementado.
6. O campo “Escopo” define como a Função será colocada no projeto. Não há necessidade de mudar isso. Mantenha o padrão.
7. O campo “Implementation language” seleciona o idioma IEC para a função que será criada.
8. Em seguida, pressione OK.
Uma nova POU de Função será criada de acordo com o idioma selecionado. No exemplo acima, o nome da função será ApplicationControl, em ST.
Em seguida, é necessário adicionar as bibliotecas CmpIecTask e Systypes no Library Manager:
Finalmente, a lógica para controlar o estado da aplicação pode ser implementada. Conforme mostrado na captura de tela abaixo, o código é composto por três partes:
- A GVL ApplicationCommands
- Um código em StartPrg
- A Função ApplicationControl
A GVL contém as variáveis para controlar o estado da aplicação (RUN/STOP). O StartPrg contém o código para obter o ponteiro do aplicativo, necessário para utilizar as funções do CmpApp. Por fim, a função ApplicationControl contém o código principal, que executa as funções do CmpApp.
Abaixo segue o código completo de cada parte:
// ApplicationCommands GVL
VAR_GLOBAL
bStop: BOOL := FALSE;
bRun: BOOL := FALSE;
pApp: POINTER TO APPLICATION := NULL;
Result: RTS_IEC_RESULT;
END_VAR
(*O código inserido pelo usuário nesta POU é executado uma vez após a inicialização. Antes deste primeiro ciclo não é executado novamente. No caso de sistema redundante, este é executado em ambas as CPUs durante a inicialização.*)
PROGRAM StartPrg
VAR
Result: RTS_IEC_RESULT;
END_VAR
---------------------------------------------------------------------------------------------------------------
ApplicationCommands.pApp := CmpApp.AppGetCurrent(ADR(Result));
FUNCTION ApplicationControl : DWORD
VAR_IN_OUT
EventPrm: CmpIecTask.EVTPARAM_CmpIecTask;
END_VAR
VAR
END_VAR
---------------------------------------------------------------------------------------------------------------
IF ApplicationCommands.pApp <> NULL THEN
IF ApplicationCommands.bStop THEN
ApplicationCommands.bStop := FALSE;
ApplicationCommands.Result := CmpApp.AppStopApplication(ApplicationCommands.pApp);
ELSIF ApplicationCommands.bRun THEN
ApplicationCommands.bRun := FALSE;
ApplicationCommands.Result := CmpApp.AppStartApplication(ApplicationCommands.pApp);
END_IF
END_IF
IMPORTANTE: Logo após o download de um aplicativo, a CPU estará em STOP, e este código só terá efeito após colocá-lo em RUN manualmente. Adicionalmente, se o estado da aplicação for controlado remotamente, é necessário utilizar um protocolo de comunicação que funcione mesmo quando a UCP estiver em STOP, como OPC DA ou OPC UA.
Comentários
0 comentário
Por favor, entre para comentar.