Prévia do material em texto
Siemens Ltda. Training Center ST-7PRO2 Instr. Dependentes Estado Lóg. BinárioPágina 1 Conteúdo Pág. Registradores e Áreas de Memória em uma CPU S7...................................................................... 2 Estrutura da Status Word ................................................................................................................. 3 Checando os Bits de Status ............................................................................................................. 4 Instruções com os Status Bits .......................................................................................................... 5 Bit BR e ENO em uma Chamada de Bloco ou Funções Complexas .............................................. 6 Funções de Salto Dependentes do Status Bits ................................................................................ 7 Funções de Salto Dependentes dos Códigos de Condição ............................................................. 8 Programação do Distribuidor de Saltos ........................................................................................... 9 Programação de Instruções de Loop ............................................................................................... 10 Instruções para Fim de Bloco .......................................................................................................... 11 Exercício 1.1: Salto depois de uma Subtração ................................................................................ 12 Exercício 1.2: Salto depois de uma Multiplicação ........................................................................... 13 Exercício 1.3: Programando um Distribuidor de Saltos ................................................................... 14 Data: 5/11/2000 Arquivo: PRO2_01P.1 SIMATIC S7 Siemens AG 1998. All rights reserved. Conhecimento em Automação Training Center Instruções Dependentes do Estado Lógico Binário Created with novaPDF Printer (www.novaPDF.com) http://www.novapdf.com Siemens Ltda. Training Center ST-7PRO2 Instr. Dependentes Estado Lóg. BinárioPágina 2 Visão Geral Uma CPU-S7 contém vários registradores e áreas de memória para assegurar uma execução eficiente do programa. Registradores da CPUOs registradores da CPU são usados para endereçar ou processar dados. Os dados podem, com ajuda de comandos associados (L, T,...), ser trocados entre áreas de memórias e registradores da CPU: • Acumuladores: Dois (com S7-300) ou quatro (S7-400) acumuladores são usados para instruções byte, word e double word em operações aritméticas, comparações e outras. • Registrador de Endereços: Dois registradores de endereço são usados como ponteiros para o registro de endereçamento indireto. • Registrador de Bloco de Dados: Os registradores de bloco de dados contêm os números dos blocos de dados que estão abertos(ativos). Assim é possível que dois DBs estejam simultaneamente abertos; um DB com ajuda do registrador de DB e o outro como DB instance com o registrador DI. • Palavra de Status: Contém vários bits, que refletem o resultado ou o estado lógico de instruções individuais dentro da execução de programa. Áreas de Memória A memória das CPUs S7 podem ser divididas em quatro áreas: • A memória de carga é usada para armazenar o programa de usuário sem a função de endereçamento simbólico ou comentário. A memória de carga pode ser RAM ou memória FEPROM. • A memória de trabalho (RAM integrada) é usada para armazenar a parte pertinente do programa de S7 necessário para sua execução. A execução do programa utiliza exclusivamente partes da memória de trabalho. • A área de I/O permite o acesso direto das entradas e saídas dos sinais conectados aos módulos ou dispositivos de campo. • A memória do sistema (RAM) contém áreas, como a tabela de imagem de processo de entradas e saídas, memória de bits, temporizadores e contadores. Adicionalmente, pilha de dados locais, pilha de blocos e a pilha de interrupção. Data: 5/11/2000 Arquivo: PRO2_01P.2 SIMATIC S7 Siemens AG 1998. All rights reserved. Conhecimento em Automação Training Center Registradores e Áreas de Memória em uma CPU S7 Acumuladores ACCU1 ACCU4 ACCU3 ACCU2 Somente S7-400 AR2 AR1 Registradores de Endereços DB aberto Registrador de Bloco de Dados DI aberto Status Bits Palavra de Status 32 Bit 32 Bit 32 Bit 32 Bit 32 Bit 32 Bit 16 Bit16 Bit 16 Bit Memória de Carga - Blocos Lógicos - Blocos de Dados Memória de Trabalho - Blocos Lógicos - Blocos de Dados Área de I/O Memória de Sistema - Imagem de processo de entrada - Imagem de processo de saída - Bit de memória - Temporizadores - Contadores - Pilha de Dados Locais - Pilha de Interrupção - Pilha de Blocos Registradores na CPU S7 Áreas de Memórias na CPU S7 T, S, =,... L, A, O,... Tamanho DB Tamanho DI Created with novaPDF Printer (www.novaPDF.com) http://www.novapdf.com Siemens Ltda. Training Center ST-7PRO2 Instr. Dependentes Estado Lóg. BinárioPágina 3 Palavra de Status Os bits individuais da palavra de status, fornecem a informação sobre o resultado ou o estado lógico da instruções executadas como também erros que possam ter surgido. Você pode integrar o estado do sinal dos status bit´s diretamente em seu programa usando lógicas binárias e assim controlar o fluxo do programa. Primeiro Cheque O bit 0 da palavra de status é chamado de bit de primeiro cheque (/FC= First Check). A condição ”0” no bit /FC indica, que uma nova seqüência lógica está começando em seu programa. O barra diagonal na frente da abreviação FC indica que o bit de /FC é negado. Resultado Lógico O bit 1 da palavra de status é o bit RLO (RLO= ”Result of Logic Operation”). É usado como memória temporária em operações de lógica binárias. Uma instrução gerada pelo texto de uma instrução lógica checa, por exemplo, o estado do sinal de um contato e o combina logicamente com o resultado do cheque (bit de estado) de acordo com as regras da lógica booleana com o bit de RLO. O resultado da operação lógica é armazenado de volta no bit de RLO. Bit de Status O bit de status (bit 2) salva o valor de um bit endereçado. O bit de status sempre mostra, por varredura (A, AN, O,...) ou instruções de escrita (=, S, R,) o estado do bit endereçado. Bit OR O bit OR é utilizado quando você executa uma operação lógica AND antes de uma OR com a instrução O. O bit OR indica que uma operação lógica AND foi executada anteriormente e recebeu o valor “1”, pelo qual o resultado da operação lógica OR está sempre determinado como sendo “1.” Bit OV O bit OV (estouro de capacidade) mostra um erro em uma instrução matemática ou em uma instrução de comparação com números em ponto flutuante. O bit é “1” ou “0” de acordo com o resultado da operação da instrução matemática ou da instrução de comparação realizada. Data: 5/11/2000 Arquivo: PRO2_01P.3 SIMATIC S7 Siemens AG 1998. All rights reserved. Conhecimento em Automação Training Center Estrutura da Palavra de Status Bit Tarefa Grandeza Significado 0 /FC 20 Primeiro Cheque 1 RLO 21 Resultado Lógico da Operação 2 STA 22 Status 3 OR 23 Or (ou) 4 OS 24 Estouro Armazenado 5 OV 25 Estouro 6 CC0 26 Bit de Resultado 7 CC1 27 Bit de Resultado 8 BR 28 Resultado Binário 9...15 sem 29 ..210 função Significado dos bits na palavra de status Created with novaPDF Printer (www.novaPDF.com) http://www.novapdf.com Siemens Ltda. Training Center ST-7PRO2 Instr. Dependentes Estado Lóg. BinárioPágina 4 Bit OS O bit OS (estouro de capacidade memorizada) é estabelecido juntamente com o bit OV. O bit OS permanece memorizado depois de uma nova instrução matemática, quer dizer, não é mudado pelo resultado da próxima instrução matemática. Assim você tem a oportunidade, até mesmo em um local posterior em seu programa, avaliar um estouro de capacidade de um número ou uma instrução com números Reais inválidos. O bit OS somente é zerado com os comandos: JOS (salta, se OS = 1), chamadas de bloco efim de bloco. CC1 e CC0 Os bits CC1 e CC0 (códigos de condições) informam sobre os seguintes resultados: • resultado de uma instrução matemática. • ou instrução de comparação. • uma instrução lógica de palavra, ou • sobre os bits jogados fora por uma instrução de deslocamento. Os códigos de condição CC1 e CC0 podem ser testados indiretamente por meios das seguintes instruções. CC1 CC0 Checa,se 0 0 A ==0 Resultado = 0 (ACCU2 = ACCU1) 1 0 A >0 Resultado > 0 (ACCU2 > ACCU1) 0 1 A 0 M 4.0M 4.0 S Cheque em STL A OV Verifica o estouro de capacidade A OS Verifica o estouro de capacidade memorizado A BR Verifica o bit de memória BR Cheque do Resultado Binário (CC0, CC1) A ==0 Resultado igual a 0 A > 0 Resultado maior que 0 A 0 Resultado não igual a 0 A ="RLO" =1 JCN Label1) salto se o bit "RLO" = 0 JCB Label1) salto se o bit "RLO" = 1 e salva RLO JNB Label1) salto se o bit "RLO" = 0 e salva RLO JBI Label1) salto se o bit "BR" = 1 JBNI Label1) salto se o bit "BR" = 0 JO Label1) salto se o bit "OV" na palavra de status =1 JOS Label1) salto se o bit "OS" na palavra de status =1 1) Rótulo (Label) pode ser constituído de até 4 dígitos alfanuméricos Created with novaPDF Printer (www.novaPDF.com) http://www.novapdf.com Siemens Ltda. Training Center ST-7PRO2 Instr. Dependentes Estado Lóg. BinárioPágina 8 Funções de salto Os saltos JO e JOS são executados se um estouro tiver ocorrido. Em uma com OV e OS rotina de cálculo com diversas instruções executadas sucessivamente, a avaliação do bit OV deve ser realizada após cada função matemática. Uma instrução matemática que gera um estouro, cujo resultado mascara a faixa de números permitidos, zera o bit OV. Para permitir avaliar um estouro de faixa de números permissíveis no fim de uma rotina de cálculo, checa-se o bit OS. O bit OS somente é zerado com chamada de blocos e fim de bloco bem como com salto JOS. Os bits restantes na palavra de status não são alterados com as funções de salto JO e JOS. Funções de salto Uma função de programa pode ser dependente dos bits de status CC0 e com CC0 e CC1 CC1. Deste modo, você pode, por exemplo, checar se o resultado de um cálculo é positivo, negativo ou zero. As funções de salto dependem dos bits de status CC0 e CC1 e não alteram qualquer bit de status. O resultado da operação lógica é monitorável por saltos e pode ser utilizado por conseqüentes operações lógicas no programa do usuário (não alterado pelo /FC). Exemplo Subtração de dois inteiros com subseqüente avaliação: L MW2 L MW8 -I JZ ZERO // ocorre o salto se o resultado for igual a "0" // Instruções, se o resultado for diferente de "0" ZERO: NOP 0 // Instruções p/reação quando resultado for igual "0" Data: 5/11/2000 Arquivo: PRO2_01P.8 SIMATIC S7 Siemens AG 1998. All rights reserved. Conhecimento em Automação Training Center Funções de Salto dependentes dos Códigos de Condição JZ Label1) Salta se na palavra de status o bit "CC1"=0 e "CC0"=0 (Resultado = 0) JN Label1) Salta se na palavra de status o bit "CC1" não for igual a "CC0" (Resultado 0) JP Label1) Salta se na palavra de status o bit "CC1"=1 e "CC0"=0 (Resultado > 0) JM Label1) Salta se na palavra de status o bit "CC1"=0 e "CC0"=1 (Resultado = 0) JMZ Label1) Combina os saltos JM e JZ (Resultado e o : . Se “0” estiver guardado no ACCU1-L-L, a primeira instrução de salto é executada, com “1” a segunda, etc. Se o número for maior do que o tamanho da lista, JL salta para o fim da lista. A instrução JL é executada apesar de quaisquer condições e desta forma não altera os bits de status. Nota Os saltos podem tomar lugar dentro do comprimento total do bloco (mesmo além dos limites do network). Por esta razão, os nomes dos rótulos dos saltos dentro de um bloco devem ser únicos. Somente é possível saltar dentro do bloco de programa, desde que a distância de salto possa somente ser determinada para os saltos por meio dos rótulos dos saltos. O comprimento do rótulo de salto é limitado a quatro caracteres alfanuméricos, pelo qual o primeiro caracter deve ser uma letra. É feita distinção entre letras maiúsculas e minúsculas no rótulo dos saltos. Uma instrução deve sempre ser colocada depois do rótulo do salto separada por “:“. A máxima distância de salto é –32768 ou + 32767 palavras de código de programa. O máximo número atual de instruções que você pode sobre saltar depende do misto de instruções utilizadas em seu programa (instruções de uma, duas ou três palavras). Data: 5/11/2000 Arquivo: PRO2_01P.9 SIMATIC S7 Siemens AG 1998. All rights reserved. Conhecimento em Automação Training Center Programação do Distribuidor de Saltos Carrega o número do salto JL Over ... Instruções para ACCU1 > n Exemplo: Distribuidor de saltos com 3 entradas L Recipe no // Carrega o número da receita JL OVER // Distribuidor de saltos com 3 entradas JU Rec0 // Salta para receita No. 0 (ACCU1 = 0) JU Rec1 // Salta para receita No. 1 (ACCU1 = 1) JU Rec2 // Salta para receita No. 2 (ACCU1 = 2) OVER: JU ERROR // Salta se ACCU1 > 2 ... Rec0: L DBW4 ... Rec1: L DBW6 ... Rec2: L DBW8 ... ERROR: CLR ... Modo de Operação Label_n: JU Label_1 JU Label_n Instruções para ACCU1 = 0 ... Instruções para ACCU1 = n Over: Label_1: Created with novaPDF Printer (www.novaPDF.com) http://www.novapdf.com Siemens Ltda. Training Center ST-7PRO2 Instr. Dependentes Estado Lóg. BinárioPágina 10 Instrução de Loop A instrução de volta LOOP permite uma programação simplificada de loop. Para a programação da instrução de loop o número desejado de execuções a serem realizadas é carregado no ACCU1-L. LOOP interpreta a palavra da direita do ACCU 1 como um número inteiro não sinalizado de 16 bits na faixa de valores entre 0 a 65535. Com cada execução da instrução LOOP, o valor em ACCU1-L é decrementado de um. Subseqüentemente, o valor é comparado com zero. Se o valor é diferente de zero, um salto toma lugar para o rótulo de salto designado na instrução LOOP. Se o valor é igual a zero, não há salto e a próxima instrução, após a instrução LOOP, será executada. Nota O contador de voltas não deve ser inicializado com “0”, porque isto irá causar um loop a ser executado 65535 vezes. Data: 5/11/2000 Arquivo: PRO2_01P.10 SIMATIC S7 Siemens AG 1998. All rights reserved. Conhecimento em Automação Training Center Programação de Instruções de Loop (voltas) Inicializa o contador de voltas LOOP NEXT (Decrementa ACCU1 ACCU10?) Sim Não Continuar NEXT: Sessão de códigos a serem executados diversas vezes Carrega o contador de voltas no ACCU1. Exemplo: Instruções de Loop (voltas) com 4 varreduras L +4 // Carrega o contador de voltas NEXT: T MW10 // Início do loop . // Código . // Código . // Código L MW10 // Carrega o contador de voltas // novamente LOOP NEXT // Contador de voltas -1 e // salta para o rótulo NEXT // se Accu 1> 0 Modo de Operação Transfere para o contador de voltas Created with novaPDF Printer (www.novaPDF.com) http://www.novapdf.com Siemens Ltda. Training Center ST-7PRO2 Instr. Dependentes Estado Lóg. BinárioPágina 11 Funções de Você pode terminar o processamento de blocos com BEC dependendo do Fim de Bloco resultado lógico operacional ou com BEU ou BE independentemente das condições. BE A instrução BE termina o processamento do programa no bloco de programa corrente. BE é sempre a última instrução do bloco. Esta é automaticamente criada pelo STEP 7 quando um bloco é salvo. Desta forma, esta não tem que ser introduzida separadamente. O sistema operacional diversifica suas atividades de chamada de blocos e recomeça o processamento de programas pela primeira instrução após a chamada do programa. A área de dados locais reservada pelo bloco é habilitada uma vez de novo. BEU A instrução BEU termina o processamento do programa do bloco de programa corrente da mesma forma que BE. Diferentemente da instrução BE, você pode programar BEU repetidasvezes dentro de um bloco. A secção de programa após a instrução BEU somente será processada se houver um salto para esta parte do programa. BEC O bloco é finalizado dependendo do valor do bit RLO. Se RLO = 1, o processamento do programa é finalizado no bloco corrente e recomeça no próximo bloco chamado com a primeira instrução após a chamada de programa. A área de dados locais reservada pelo bloco é habilitada uma vez de novo. Se RLO = 0, a instrução BEC não é executada. A CPU fixa o RLO em “1” e processa a instrução seguinte a BEC. Data: 5/11/2000 Arquivo: PRO2_01P.11 SIMATIC S7 Siemens AG 1998. All rights reserved. Conhecimento em Automação Training Center BE Fim de Bloco BEU Fim de Bloco Incondicional (dentro de um bloco) BEC Fim de Bloco Condicional (dependente do RLO) (RET) mostrado em LAD mostrado em FBD Instruções de Fim de Bloco RET Created with novaPDF Printer (www.novaPDF.com) http://www.novapdf.com Siemens Ltda. Training Center ST-7PRO2 Instr. Dependentes Estado Lóg. BinárioPágina 12 Data: 5/11/2000 Arquivo: PRO2_01P.12 SIMATIC S7 Siemens AG 1998. All rights reserved. Conhecimento em Automação Training Center Exercício 1.1: Salto após uma Subtração Chave rotativa 1 2 3 4 - D Resultado positivo (>=0) Escreve o valor de IW 4 no display Deleta o display Resultado negativo [JM Label] converte p/ DINT converte p/ DINT BTD BTD Chave rotativa: IW4 (IW2, mod. 32 bit) Chaves de teste: IW0 (IW0, mod. 32 bit) Display: QW12 (QW6, mod. 32 bit) 20215 27 Chaves de teste no simulador 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 Vista Geral Com funções de salto, o processamento linear de um programa pode ser interrompido e continuar em outro local. Um salto pode ser realizado, particularmente, em função de condições ou resultados. Objetivo do Exercício Programação de uma função de salto, esta é executada dependendo do resultado da subtração. Enunciado Gerar um projeto PRO2 e subseqüentemente uma pasta de programa S7 com o nome EXERCÍCIO e criar um FC 11 com a seguinte funcionalidade: 1. Carregar a palavra de entrada da chave rotativa e das chaves de teste como valor codificado em BCD nos acumuladores. 2. Subseqüentemente executar uma conversão dos valores para DINT. Para a conversão usar o comando BTD (BCD_TO_DINT). Este comando assegura que os valores lidos sejam interpretados como um número decimal positivo de quatro dígitos. 3. Então subtrair o valor gerado pelas chaves de teste do valor gerado pela chave rotativa. 4. Executar, dependendo do resultado, as seguintes ações: Resultado = 0: escreve o valor codificado BCD da chave rotativa no display. Notas: usar o comando de salto "JM [Label]“ para o caso distinto. Para mascarar erros de conversão durante o ajuste dos números, programar o OB 121com uma instrução: NOP 0. 5. Chamar o FC 11 no OB 1 e transferir os blocos (OB 1, OB 121 e FC 11) na CPU S7. 6. Teste seu programa. Created with novaPDF Printer (www.novaPDF.com) http://www.novapdf.com Siemens Ltda. Training Center ST-7PRO2 Instr. Dependentes Estado Lóg. BinárioPágina 13 Objetivo do Exercício Programação de uma função de salto, esta é executada dependendo do resultado da multiplicação. Enunciado Criar um FC 12 com a seguinte funcionalidade: : 1. Carregar a palavra de entrada da chave rotativa e das chaves de teste como valor codificado em BCD (sem sinal) nos acumuladores. 2. Subseqüentemente executar uma conversão dos valores para DINT. Para a conversão usar o comando BTD (BCD_TO_DINT). Este comando assegura que os valores lidos sejam interpretados como um número decimal positivo de quatro dígitos. 3. Então execute uma multiplicação em 16 bits. 4. Cheque seu resultados dos cálculos para “Estouro” e execute as seguintes ações: Estouro: apague o display Sem Estouro: execute a conversão do resultado em um número BCD positivo correspondente e mostre o resultado (pelo menos com os últimos quatro menos significativos) no display. Notas: use o comando de salto "JO [Label]“ para testar o “Estouro”. Para mascarar erros de conversão durante o ajuste dos números, programar o OB 121 com uma instrução: NOP 0. 5. Chamar o FC 11 no OB 1 e transferir os blocos (OB 1, OB 121 e FC 11) na CPU S7. 6. Teste seu programa. Data: 5/11/2000 Arquivo: PRO2_01P.13 SIMATIC S7 Siemens AG 1998. All rights reserved. Conhecimento em Automação Training Center Exercício 1.2: Salto após uma Multiplicação *I Sem estouro Escreve o resultado no display Apaga o display Estouro [JO Label] DTB Converte o resultado para BCD Chave rotativa: IW4 (IW2, mod. 32 bit) Chaves de teste: IW0 (IW0, mod. 32 bit) Display: QW12 (QW6, mod. 32 bit) Chave rotativa 1 2 3 4 converte p/ DINT converte p/ DINT BTD BTD 20215 27 Chaves de teste no simulador 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 Created with novaPDF Printer (www.novaPDF.com) http://www.novapdf.com Siemens Ltda. Training Center ST-7PRO2 Instr. Dependentes Estado Lóg. BinárioPágina 14 Objetivo do Exercício Familiarizar você com o uso de Salto para Lista. Enunciado Criar um FC 13 com a seguinte funcionalidade: • Um número de 1a 5 pode ser passado via o parâmetro de entrada "Seleção“ com o tipo de dado INT. • Dependendo do número passado, as seguintes ações são executadas: 1: O motor gira para direita 2: O motor gira para esquerda. 3: O motor para. 4: A buzina é ligada. 5: A buzina é desligada. • Todos os outros números são interpretados como erros, isto é, o “parâmetro de saída” ENO é fixado para FALSO. Procedimento 1. Criar um FC 13 com a funcionalidade descrita acima. Na implementação do salto para lista note que somente saltos absolutos podem ser utilizados. 2. Chamar FC 13 no OB 1 em dependência do I 0.0. O valor do parâmetro de entrada "Seleção" será passado ou ajustado com ajuda da chave rotativa no simulador e ser aceito com um valor de nível positive no I 0.0. 4. No caso de um erro, isto é, o valor da "Seleção” ser maior que 5 ou menor que 1, a saída Q 8.0 será zerada no OB 1 via o parâmetro ENO. 5. Transferir o OB 1 e o FC 13 e testar o programa. Data: 5/11/2000 Arquivo: PRO2_01P.14 SIMATIC S7 Siemens AG 1998. All rights reserved. Conhecimento em Automação Training Center Exercício 1.3: Programando um Distribuidor de Saltos Chave rotativa 1 1 2 3 4 5 Motor_girar para direita Motor_girar para esquerda Desligar motor Ligar buzina Desligar buzina Saltar via salto para lista Função: [JL Label] Label: Endereços: S7-300 (16-Bit) S7-300 (32-Bit) I0.0 I0.0 Q8.0 Q4.0 Motor_direita: Q20.5 Q8.5 Motor_esquerda: Q20.6 Q8.6 Buzina: Q20.7 Q8.7 Created with novaPDF Printer (www.novaPDF.com) http://www.novapdf.com