Baixe o app para aproveitar ainda mais
Prévia do material em texto
TIA PORTAL TIA Portal Estrutura Básica Versão 1 Elaboração: Prof. Cesar Roberto de Souza � Cesar Roberto de Souza � Prof. Cesar Roberto de Souza � Cesar Roberto de Souza � @Souzcesat � @Souzcesar1 Plataforma LATTES - Cesar Roberto de Souza https://industria4-0.com - Prof. Cesar Roberto de Souza Strava - Cesar Roberto de Souza 29 de fevereiro de 2020 https://br.linkedin.com/in/profengcesarrobertodesouza https://www.youtube.com/channel/UCdaWrafKjyxugCNR-qBI1xQ https://web.facebook.com/cesar.robertodesouza https://www.instagram.com/souzcesat/ https://twitter.com/souzcesar1/ http://lattes.cnpq.br/4840072717699677 https://industria4-0.com/assunto/redes-industriais-2/ https://www.strava.com/athletes/10384610 O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N 1 Objetivo Apresentar estrutura do CLP e comandos básicos 2 Tipos de Blocos para Programação Figura 1: Tipos de Blocos para Programação O CLP disponibiliza diversos tipos de blocos que o programa de usuário e os dados relacionados podem ser armazenados, conforme mostrado na figura 1. Porém, a escolha desses blocos não é aleatória, portanto, dependendo dos requisitos do sistema ele pode ser estruturado em diferentes blocos, como veremos a seguir. �Cesar Roberto de Souza 1 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N 2.1 Organization Block (OBs) Os blocos de organização (OBs) formam a interface entre o sistema ope- racional e o programa de usuário. As rotinas devem sempre ser chamadas a partir de uma OB. Por exemplo a OB1 é uma OB cíclica, ou seja, chamada ciclicamente pelo sistema operacional. Se você criar todo o programa dentro da OB1 você acabou de criar um programa linear, não estruturado. Agora, caso você efetue a divisão das rotinas em diversos outros blocos, você criará um programa estruturado, ou seja, você cria uma estrutura padrão para seu projeto. Programas divididos em blocos (estruturado), deixa a OB1 com um mí- nimo de chamadas em outros blocos que contém códigos. 2.2 Function (FCs) A função (FC) pode conter uma funcionalidade parcial do projeto como um todo, ou seja, uma determinada função executada em algum ponto do processo, como por exemplo contagem de peças. Ainda assim, em uma fun- ção é possível associar parâmetros, dessa forma, informações provenientes de outra parte do programa são passadas para a função executar um procedi- mento específico de acordo com os parâmetros recebidos. Portanto, funções podem ser utilizadas em programações recorrentes (repetitivas), funcionali- dades parciais complexas como por exemplo cálculos. 2.3 Function Block (FBs) Basicamente, os Blocos de Funções (FBs) oferecem as mesmas possibili- dades que as Funções (FCs). Porém, as FBs possuem suas áreas de memória próprias, na forma de Instance Data Blocks (DBs). Dessa forma, os blo- cos de funções são adequados para situações que ocorrem frequentemente no processo, funcionalidades complexas, como por exemplo, tarefas em malha fechada. 2.4 Execução do programa Na figura 2 é possível verificar como ocorre a execução do programa. �Cesar Roberto de Souza 2 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU NFigura 2: Ciclo da CPU Quando a CPU é alterada do estado de stop para RUN, a CPU executa um reinício completo (chama a OB100). Durante o reinício, o sistema opera- cional deleta todos os bits memórias não retentivas, temporizadores e conta- dores, deleta o Interrupt Stack e o Block Stack, reseta todos os processos de interrupção e interrupção de diagnostico e inicia o ciclo de monitoração. O ciclo de programa é contínuo, ou seja, não possui fim. Dessa forma, quando o ciclo de programa é completo, a execução do próximo ciclo ocorre de maneira automática. Os seguintes paços são executados em todo ciclo de CPU: • A CPU verifica o estado das entradas digitais e atualiza o processo de imagem das entradas (Process Image Input - PII); • A CPU processa as instruções contidas no programa de usuário, que �Cesar Roberto de Souza 3 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N trabalha diretamente com a memória de imagem das entradas digitais, dessa forma, podemos ver que ela não trabalha diretamente com os módulos de entrada e saída digitais; • Por fim, a CPU transfere as informações da memória de imagem das saídas digitais (Process Image Output – PIQ) para os módulos de saída digitais. O tempo que a CPU leva para fazer um ciclo completo é chamado de Cycle time que é monitorado pelo sistema operacional da CPU. Caso esse ciclo exceda o ciclo máximo configurado no hardware a CPU não entra em erro, porém, chama a OB80. Caso o ciclo seja excedido seja acima de duas vezes o ciclo máximo, a OB80 não é chamada e a CPU entra em erro. 3 Clock Memory Acesse propriedades da CPU na configuração do hardware conforme mos- trado na figura 3. Selecione a CPU depois vá no item Clock memory, selecione o check box > Clock memory e no campo Memory byte coloque o byte 10. �Cesar Roberto de Souza 4 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N Figura 3: Configurar Clock Memory O clock memory é um bit de memória que alterna seu status periodica- mente, no Byte selecionado cada bit irá alternar seu status entre 0 e 1 em determinados períodos conforme mostrado na figura 4. Figura 4: Ciclo de cada bit do byte selecionado O clock memory funciona de maneira assíncrona com a CPU, portanto, em um ciclo de clock ele pode alternar inúmeras vezes. Porém, uma vez sele- �Cesar Roberto de Souza 5 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N cionado o byte do clock memory, não pode mais ser utilizado para armazenar status de memória. 4 Entradas e Saidas Digitais Ainda em configuração de Hardware, selecione DI 24/DO 16, após isso, acesso I/O addresses e efetue a alteração do campo Start address, tanto das entradas digitais quanto das saídas digitais, para 0 (Zero) conforme mostrado na figura 5. Esse procedimento se faz necessário para padronizarmos o ende- reçamento de entradas e saídas digitais, para iniciar a partir do 0 e não do 136. Figura 5: Alterar endereçamento de entradas e saídas digitais �Cesar Roberto de Souza 6 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N 5 Temporizadores 5.1 TP – Generate Pulse Você pode utilizar o temporizador “Gerador de Pulso” para ligar a saída Q durante um tempo pre-definido. Dessa forma, o temporizador inicia a contagem no momento que a entrada IN recebe uma borda de subida, ou seja, o tempo começa a ser contado. Com isso, a saída Q é ativada durante a contagem do tempo, assim que o tempo terminar e a entrada IN estiver ativada, a saída Q permanece ativada até que a entrada IN seja desativada, caso contrario a saída Q é desativada assim que a contagem é finalizada. A figura 6demonstra essa funcionalidade. Figura 6: Temporizador TP – Generate Pulse 5.2 TOF – Generate OFF-Delay É utilizado como retardo de desenergização da saída Q, ou seja, quando a entrada IN recebe uma borda de subida, a saída Q é ligada e permanece assim, até que a entrada IN receba uma borda de descida. Assim que receber uma borda de descida, o temporizador dispara o timer e assim que o tempo finalizar a contagem, a saída Q é desligada. Conforme mencionado, quando a �Cesar Roberto de Souza 7 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N entrada IN é desligada, o timer começaa contar o tempo para desligamento, porém, se nesse tempo, a entrada for acionada novamente, o timer para a contagem e é zerado, dessa forma, somente irá iniciar novamente, quando a entrada IN for desativada novamente. Na figura 7 podemos verificar esse funcionamento. Figura 7: Temporizador Generate OFF-Delay 5.3 TON – Generate ON-Delay Temporizador por atraso na energização, ou seja, assim que a entrada IN é acionada, o temporizador inicia a contagem de tempo e assim que finalizar, aciona a saída Q. A saída Q permanece ligada enquanto a entrada estiver aci- onada, assim que a entrada for desativada a saída Q também será desligada. Caso a entrada IN seja ativada e desativada antes de transcorrer o tempo, o tempo transcorrido é zerado e nada ocorre à saída. A funcionalidade desse �Cesar Roberto de Souza 8 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N temporizador pode ser verificada na figura 8. Figura 8: Temporizador ON Delay 5.4 TONR: Timer accumulator É um timer que está disponível apenas nas linhas do CLP 1200 e 1500. É utilizado para acumular o valor do timer durante o tempo transcorrido, enquanto a entrada IN estiver ativada. Dessa forma, caso a entrada IN seja ativada e desativada antes de transcorrido o tempo, o tempo do temporiza- dor é pausado e reiniciado de onde parou quando a entrada IN é acionada novamente, e assim vai até transcorrer todo o tempo configurado na entrada PT. A saída Q é acionada assim que o tempo parametrizado para o timer tenha transcorrido, assim que a saída Q for ativada, somente poderá ser de- sativada se enviar um sinal na entrada R, pois, ela permanecerá em nível alto mesmo que a entrada IN seja desativada. Caso desejar que o timer seja �Cesar Roberto de Souza 9 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N zerado antes de transcorrer o tempo, basta mandar um pulso na entrada R que o tempo transcorrido no temporizador será reiniciado. Essa situação pode ser verificada na figura 9. Figura 9: Temporizador TONR – Timer Accumulator 5.5 Reset Timer (RT) É utilizado para resetar qualquer um dos timers IEC declarados anteri- ormente, ou seja, caso um timer esteja ativado e deseja desativá-lo em outro ponto do programa, basta utilizar o Reset Timer, conforme mostrado na �Cesar Roberto de Souza 10 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N figura 10. Esse bloco também está disponível somente para CPU 1200 e 1500. Figura 10: Reset Timer 5.6 Load Time Duration (PT) Essa rotina está disponível somente na CPU 1200 e 1500. Essa instrução pode ser utilizada para setar um outro valor de tempo em um IEC Timer, ou seja, em qualquer dos temporizadores mencionados anteriormente. Imagine que você tenha um timer do tipo TON com duração padrão de tempo de 10s e deseja alterar esse tempo em algum ponto do programa. Basta utilizar a função Load Time Duration (PT), conforme apresentado na figura 11. �Cesar Roberto de Souza 11 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N Figura 11: Load Time Duration (PT) 6 Contadores 6.1 Contador UP (CTU) O Contador UP (Crescente) incrementa o valor no campo CV toda vez que receber uma borda de subida na entrada CU. A contagem continua até que o acumulador CV atinja seu limite máximo. A saída Q é alterada do estado 0 para o estado 1 quando o valor de CV for igual ou superior ao valor parametrizado em PV. O valor do acumulador CV é zerado quando o contador receber um pulso na entrada R. Na figura 12 temos um exemplo de utilização desse contador. �Cesar Roberto de Souza 12 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N Figura 12: Contador UP 6.2 Contador Down (CTD) O contador Down (decrescente) decrementa o valor do campo CV toda vez que o contador receber uma borda de subida na entrada CD. O decremento de CV continua até que o valor atinja o limite mínimo declarado em CV (se for do tipo INT o mínimo é -32768). Toda vez que o campo LD receber o valor 1 o acumulador CV receberá o valor parametrizado no campo PV. A saída Q é somente acionada quando CV for menor ou iguala zero. Conforme pode verificar na figura 13. �Cesar Roberto de Souza 13 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N Figura 13: Contador Down 6.3 Contador UP/Down O Contador Crescente e decrescente incrementa ou decrementa o valor do acumulador CV, de acordo com o sinal que receber em suas entradas. Dessa forma, caso o campo CU receba um pulso o contador CV é incrementado e caso CD receba um pulso o contador CV é decrementado. Caso ambas as entradas recebam um pulso alto no mesmo ciclo, o contador CV permanece sem alteração. Quando o campo LD recebe um pulso, o contador CV recebe o valor parametrizado em PV. Já quando o campo R recebe um pulso o contador CV é zerado. A saída QU vai para o nível alto quando o contador CV for maior ou igual ao valor de PV. A saída QD vai para o nível alto quando o contador CV for menor ou igual a zero. Na figura 14 temos um exemplo de sua utilização. �Cesar Roberto de Souza 14 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N Figura 14: Contador UP/Down 7 Comparadores Para o S7-300/ 400 os comparadores continuam os mesmos, porém, no TIA Portal você tem a possibilidade de definir o tipo de variável a ser com- parada no próprio bloco. Para o S7-1200/ 1500 além dos habituais, existem novos comparadores disponíveis, como estamos em um curso de TIA Portal, vamos analisar, além dos comparadores comuns, os novos disponíveis para o 1200/ 1500. Na figura 15 podemos verificar a nova visualização dos blocos de compa- ração. �Cesar Roberto de Souza 15 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N Figura 15: Comparadores Como podemos verificar na figura 15, os blocos de comparação simplifi- caram, pois, agora basta mover o bloco de comparação desejado e selecionar o tipo de variável que desejamos comparar, a partir de um combo disponível no bloco. Lembrando que nas novas famílias de CPUs Siemens novos tipos de dados foram implementados, portanto, existem diversos outros tipos de dados para comparação possível. No caso da figura 15, o bloco de compara- ção é para uma CPU 1200, por isso, estão disponíveis diversos outros tipos de dados. Para a linha 300 temos os tipos de dados: • INT • DInt • Real • Byte • Word, �Cesar Roberto de Souza 16 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N • DWord • Time 7.1 Utilização dos Blocos Na figura 16 é possível verificar o exemplo de utilização dos blocos. Figura 16: Utilização de bloco de comparação Conforme podemos verificar na figura 16 é necessário selecionar o tipo da variável que se deseja efetuar a comparação, na parte superior do bloco seleciona-se a variável a ser comparada e na parte inferior seleciona-se o comparador do bloco. Caso a condição seja verdadeira, irá acionar a bobina saída, caso contrário a bobina permanece desligada. No exemplo está sendo efetuado comparação entre duas variáveis novas: • LReal : Variável do tipo real de 64 bits • USInt: Variável inteira sem sinal de 8 bits. 7.2 Comparadores Padrão Os comparadores padrão são: �Cesar Roberto de Souza 17 https://br.linkedin.com/in/profengcesarrobertodesouza OSU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N • CMP == : Comparador de igualdade, ou seja, compara se duas variáveis são iguais; • CMP <> : Comparador de desigualdade, ou seja, compara se duas variáveis são diferentes; • CMP >= : Comparador Maior ou igual, ou seja, compara se uma variável é maior ou igual que a outra variável; • CMP <= : Comparador Menor ou igual, ou seja, compara se uma variável é menor ou igual que a outra variável; • CMP > : Comparador Maior que, compara se uma variável é maior que outra variável; • CMP < : Comparador Menor que, compara se uma variável é menor que outra variável. Para os próximos itens, essa funcionalidade está disponível apenas nas CPUs 1200 e 1500. 7.3 Comparador IN_Range Pode-se utilizar esse comparador para verificar se um determinado va- lor está dentro de um range desejado. Na figura 17 é apresentado o bloco IN_Range. Figura 17: Representação do bloco IN_RANGE �Cesar Roberto de Souza 18 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N Neste caso coloca-se no parâmetro MIN o valor mínimo desejável na en- trada do parâmetro VAL. Em MAX coloca-se o valor máximo desejável para o parâmetro VAL. Portanto, enquanto a variável no parâmetro VAL estiver entre MIN e MAX a saída da função estará em nível alto, quando a variável sair fora do range a saída da função é desativada. Dessa forma, você poderia configurar um alarme quando determinada variável do processo sair fora de seu range. 7.4 Comparador OUT_RANGE Esse bloco é similar ao anterior, porém, a saída dele é o inverso do bloco IN_RANGE. Dessa forma, quando o valor da variável VAL estiver fora do range, parametrizado em MIN e MAX, a saída estará em nível alto. Caso a valor do parâmetro VAL estiver dentro dos limites desejados, a saída perma- necerá em nível baixo. Lembrando que, caso o contato da entrada da função não estiver habi- litada, o bloco não é executado. Na figura 18 temos a representação deste bloco. Figura 18: Bloco de comparação OUT_RANGE. 7.5 Checagem de Validade (OK – CHECK Validity) O Operando OK verifica se uma varável é um tipo válido de Floating point, caso ela seja válida, a saída da função é habilitada. Essa verificação é iniciada a cada ciclo de clock da CPU. Dessa forma podemos utilizar essa função para verificar se as variáveis são floating point válidas, antes de executar uma função específica, conforme mostrado na figura 19. �Cesar Roberto de Souza 19 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N Figura 19: Utilização da função para validar uma função matemática Na figura 19 verificamos que, antes de realizar a divisão é verificado se as variáveis #dividendo e #divisor são realmente do tipo float, caso ocorra algum problema, a função CHECK não irá habilitar o bloco DIV. 7.6 Checagem de não Válido (NOT OK) O Operando NOT OK realiza o inverso da função OK, dessa forma, ele verifica se uma variável não é do tipo floating point, dessa forma, quando uma variável não for do tipo floating point sua saída é verdadeira, do contrário é falsa. Na figura 20 temos um exemplo dessa função. Figura 20: Função NOT OK Como podemos ver, se a função não for floating point sua saída vai sair nível lógico alto e depois invertida na função NOT, dessa forma o bloco de MOVE não será executado. Agora, se a função for do tipo floating point, �Cesar Roberto de Souza 20 https://br.linkedin.com/in/profengcesarrobertodesouza O SU CE SS O TE M 5 L ET RA S: FA ZE R ER FO LG HA T DR EI BU CH ST AB EN : TU N seu resultado vai sair nível lógico baixo, porém, será invertido quando passar pelo operando NOT fazendo com que o bloco MOVE seja executado. �Cesar Roberto de Souza 21 https://br.linkedin.com/in/profengcesarrobertodesouza Objetivo Tipos de Blocos para Programação Organization Block (OBs) Function (FCs) Function Block (FBs) Execução do programa Clock Memory Entradas e Saidas Digitais Temporizadores TP â•fi Generate Pulse TOF â•fi Generate OFF-Delay TON â•fi Generate ON-Delay TONR: Timer accumulator Reset Timer (RT) Load Time Duration (PT) Contadores Contador UP (CTU) Contador Down (CTD) Contador UP/Down Comparadores Utilização dos Blocos Comparadores Padrão Comparador IN_Range Comparador OUT_RANGE Checagem de Validade (OK â•fi CHECK Validity) Checagem de não Válido (NOT OK)
Compartilhar