Você está na página 1de 18

Tratamento de Erros

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Manipulando Erros Assíncronos
Erros Assíncronos não são atribuídos a posição particular do programa,
isto é, eles aparecem assíncronos para o processamento do programa.
Tipo de Erro Exemplo OB de erro

Erro de Tempo Máx. tempo de varredura excedido OB 80

Erro da Fonte de
Falha da bateria de backup OB 81 2)
Alimentação

Diagnóstico de Quebra-de-fio na entrada de um módulo com


OB 82
Interrupção capacidade de interrupção

Removendo/Inserindo Removendo um módulo de sinal no S7-400


OB 83 1)
módulo de Interrupção durante o modo de operação (RUN)

Erro de Hardware CPU Nível de sinal de falha na interface MPI OB 84 1)

Erro de seqüência no Erro na atualização da imagem de processo


OB 85 somente com
1)
programa (módulo com defeito) S7-400
Defeito no bastidor Defeito em fonte de alimentação de bastidor não vai p/Stop
2)
OB 86 1) sem OB de erro
ou bastidor de expansão

Erro de comunicação Identificador de mensagem incorreta OB 87

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Manipulando os Blocos de Organização de Erros
 De forma a impedir que a CPU vá para Stop no caso de um erro,
transferir um OB de erro vazio.

 Você pode programar a resposta desejada no OB de erro e, se


necessário, requisitar o estado Stop com a função do sistema SFC
46 depois da execução do OB de erro.

 Um identificador de erro adicional é armazenado nas informações de


partida do OB de erro, o qual pode se avaliado no programa.

 Uma descrição dos OB‘s de erro podem ser encontrados no “ajuda“


Online ou do sistema e Manual de Funções Padrão.

 A transmissão dos OBs de erro que não são suportados por


determinadas CPU são rejeitados com uma mensagem de erro.

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Exemplo de um OB de Erro Assíncrono

OB81: OB de erro: defeito na fonte de alimentação

Network 1: defeito na bateria, chegada do evento

L #OB81_FLT_ID // Carrega identificador de erro


L B#16#22 // Identificador: defeito bateria no
==I // bastidor central (CR)
= M 81.1 // Seta flag de memória auxiliar
L #OB81_EV_classe // Identificador: entrando, saindo
L B#16#39 // Identificador: entrando evento
==I
= M 81.2 // Flag mem. aux. entrando evento
A M 81.1 // Defeito na bateria e
A M 81.2 // entrando evento
S M 81.0 // Seta flag mem. aux. para mostrar
// erro

Network 2: Reseta flag de memória auxiliar, quando bateria O.K.

L #OB81_EV_classe // Identificador: entrando, saindo


L B#16#38 // Identificador: saindo
==I
R M 81.0 // Reset flag de memória auxiliar

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Manipulando Erros Síncronos
 Erros síncronos são atribuídos diretamente a uma posição no
programa do usuário
 Erros em instruções aritméticas (overflow, REAL número inválido)
Ajuste de Bits de Status

Erros no processamento de instruções STL (erro síncrono)


Chamada do OB de erro síncrono

Tipo de erro Exemplo OB de erro

Erro de programação Bloco chamado não existe na CPU OB 121

Erro de acesso Acesso direto a um módulo com defeito OB 122


ou não existente

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Informações de partida do OB121 para Erros de Programação

Nome da variável Tipo de dado Descrição, parametrização

OB121_EV_classe BYTE B#16#25= Chamada erro de programação OB121

OB121_SW_FLT BYTE Código de erro (ver texto)

OB121_PRIORITY BYTE Classe de prioridade na qual o erro ocorreu

OB121_OB_NUMBER BYTE Número do OB (B#16#79)

Tipo de bloco interrompido (somente S7-400)


OB121_BLK_TYPE BYTE
OB: B#16#88, DB: B#16#8A, FB: B#16#8E, FC: B#16#8C

OB121_RESERVED_1 BYTE Adição ao código de erro (ver texto)

OB121_FLT_REG WORD OB121: fonte do erro

OB121_BLK_NUM WORD Número de blocos no qual o erro ocorreu

Endereço do erro no bloco causador do erro


OB121_PRG_ADDR WORD
(somente S7-400)

OB121_DATE_TIME DT Momento da gravação do erro de programação

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Informações de partida do OB122 para Erros de Acesso

Nome da variável Tipo de dado Descrição, parametrização

OB122_EV_CLASS BYTE B#16#29= Chamada erro acesso

Código de erro (valores possíveis : B#16#42, B#16#43,


OB122_SW_FLT BYTE
B#16#44, B#16#45)

OB122_PRIORITY BYTE Classe de prioridade na qual o erro ocorreu

OB122_OB_NUMBR BYTE Número do OB (B#16#80)

Tipo de bloco interrompido(somente S7-400)


OB122_BLK_TYPE BYTE
OB: B#16#88, DB: B#16#8A, FB: B#16#8E, FC: B#16#8C

OB122_MEM_AREA BYTE Adição ao código de erro (ver texto)

OB122_FLT_REG WORD OB122: identificador do endereço onde ocorreu o erro.

OB122_BLK_NUM WORD Número do bloco no qual o erro ocorreu

Endereço do erro no bloco causador do erro


OB122_PRG_ADDR WORD
(somente S7-400)

OB122_DATE_TIME DT Momento da gravação do erro de programação.

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Máscara de Erros Síncronos
Desvantagens do OB de erro síncrono :
 Código para o gerenciamento de processo e para a manipulação de
erro é distribuído entre pelo menos dois blocos
 Problemas com subseqüentes mudanças ou com manutenção

Melhor:
 Código para gerenciamento de processo e para a manipulação de erro
é no mesmo bloco
Mascaramento da falha síncrona:
 Antes de instruções "críticas":
SFC 36 MSK_FLT: mascara falhas síncronas
(OB12x – inibe a chamada)
 Executa instruções "críticas"
 Avalia se um erro ocorreu
SFC 38 READ_ERR: lê registrador de erro
 OB12x - habilita a chamada uma vez novamente:
SFC 37 DMSK_FLT: demascara falhas síncronas

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
SFC 36 para Máscara de Falhas Síncronas

"MSK_FLT"
EN ENO

??.? PRGFLT_SET_MASK RET_VAL ??.?

??.? ACCFLT_SET_MASK PRGFLT_MASKED ??.?

ACCFLT_MASKED ??.?

Parâmetro Declaração Tipo dado Área de memória Descrição


PRGFLT_SET_MASK INPUT DWORD I, Q, M, D, L, Const. Nova (adicional) programação
filtro de falhas
ACCFLT_SET_MASK INPUT BYTE I, Q, M, D, L, Const. Novo (adicional) acesso filtro de falha

RET_VAL OUTPUT INT I, Q, M, D, L Retorna o valor do SFC,


W#16#0001: o novo filtro fica com
área em comum com o filtro existente
PRGFLT_MASKED OUTPUT DWORD I, Q, M, D, L Programação completa filtro de falhas
ACCFLT_MASKED OUTPUT DWORD I, Q, M, D, L Acesso completo filtro de falhas

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Estrutura de programação de Filtro de Falhas

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Erro de conversão BCD


DB não carregado Erro escrita no DB Erro tamanho faixa, leitura
Erro escrita no DB instance
FC não carregado Erro tamanho faixa, escrita
Erro de número de bloco DB Erro de faixa, leitura
FB não carregado
Erro de número de bloco DI Erro de faixa, escrita
Erro de número de bloco FC Erro do número do temporizador
Erro de número de bloco FB Erro do número do contador
Erro de alinhamento, leitura
sem significado Erro de alinhamento, escrita

Nota: Os bits correspondentes do parâmetro de saída PRGFLT_MASKED


são setados como a seguir:
Valor = “1“: erro está mascarado.
Valor = “0“: erro não está mascarado.

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Estrutura de acesso ao Filtro de Falhas
31 30 29 ... 7 6 5 4 3 2 1 0

. . .

Erro de acesso a I/O em leitura

Erro de acesso a I/O em escrita

sem significado Somente S7-400:


Erro de acesso a I/O em leitura de módulo
não existente ou com acesso repetido

Somente S7-400:
Erro de acesso a I/O em escrita de módulo
não existente ou com acesso repetido
Nota: Os bits correspondentes do
parâmetro de saída ACCFLT_MASKED
são setados como a seguir:
Valor = "1": Erro está mascarado.
Valor = "0": Erro não está mascarado.
Os bits não relevantes têm o valor "1".

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
SFC 38 para leitura do Registrador de Erros

"READ_ERR"
EN ENO

??.? PRGFLT_QUERRY RET_VAL ??.?

??.? ACCFLT_QUERRY PRGFLT_CLR ??.?

ACCFLT_CLR ??.?

Parâmetro Declaração Tipo dado Área de memória Descrição


PRGFLT_QUERRY INPUT DWORD I, Q, M, D, L, Const. Programação filtro de falhas para checagem
ACCFLT_QUERRY INPUT BYTE I, Q, M, D, L, Const. Acesso filtro de falhas para checagem
RET_VAL OUTPUT INT I, Q, M, D, L Retorna valor do SFC,
W#16#0001: o filtro de verificação contém
bits que não são setados (no filtro armazenado)
PRGFLT_CLR OUTPUT DWORD I, Q, M, D, L Programação filtro de falhas com mensagens
de erro
ACCFLT_CLR OUTPUT DWORD I, Q, M, D, L Acesso filtro de falhas com mensagens de erro

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
SFC 37 para desmascaramento de Falhas Síncronas

"DMSK_FLT"
EN ENO

??.? PRGFLT_RESET_MASK RET_VAL ??.?

??.? ACCFLT_RESET_MASK PRGFLT_MASKED ??.?

ACCFLT_MASKED ??.?

Parâmetro Declaração Tipo dado Área de memória Descrição


PRGFLT_RESET_MASK INPUT DWORD I, Q, M, D, L, Const. Programação filtro de falhas para resetar
ACCFLT_RESET_MASK INPUT BYTE I, Q, M, D, L, Const. Acesso ao filtro de falhas para resetar
RET_VAL OUTPUT INT I, Q, M, D, L Retorna valor do SFC,
W#16#0001: o novo filtro contém bits que
não são setados no filtro armazenado
PRGFLT_MASKED OUTPUT DWORD I, Q, M, D, L Mantém mascarados erros programação
ACCFLT_MASKED OUTPUT DWORD I, Q, M, D, L Mantém mascarados erros de acesso

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Exemplo: Testando Bloco de Dados
Network 1: Mascaramento, Teste, Desmascaramento
// Mascara "DB não existe"
Call SFC 36(
PRGFLT_SET_MASK := DW#16#4000000, // Identificador: DB não existe
ACCFLT_SET_MASK := DW#16#0, // na máscara para erros de acesso
RET_VAL := #SFC36Error,
PRGFLT_MASKED := #Prog36Mask,
ACCFLT_MASKED := #Acc36Mask);

// Testa chamada
OPN DB[DB_NO];

// Checa programação de erro


Call SFC 38(
PRGFLT_QUERRY := DW#16#4000000, // Identificador: DB não existe
ACCFLT_QUERRY := DW#16#0, // na máscara para erros de acesso
RET_VAL := #SFC38Error,
PRGFLT_MASKED := #Prog38Mask,
ACCFLT_MASKED := #Acc38Mask);

// Avalia resultado
L #Prog38Mask
L DW#16#4000000
==D
= #DB_NOT_THERE // Seta variável auxiliar “DB não existe“

// Desmascara "DB não existe"


Call SFC 37(
PRGFLT_RESET_MASK := DW#16#4000000, // Identificador: DB não existe
ACCFLT_RESET_MASK := DW#16#0, // na máscara para erros de acesso
RET_VAL := #SFC37Error,
PRGFLT_MASKED := #Prog37Mask,
ACCFLT_MASKED := #Acc37Mask);

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Descrição: Expansão do Programa para Tratamento de Erros

"FC_Read" (FC50), Versão 3

Máscara de erros síncronos (SFC 36)

Programa Atual

• Avaliação dos erros síncronos


ocorridos (SFC 38)
• possivelmente gerar o código do
erro
• Alimentar o bit BR

Desmascarar os erros síncronos


(SFC 37)

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Exercício 8.1: Manipulação de Erro no FC81

Decl. Nome Tipo


in Meas_values ANY
out RET_VAL INT
out Sum REAL
out Mean_value REAL
Causa Código erro
Tudo O. K. 0
Tipo dado <>REAL -1
DB não existe -2
EN
FC 81 ENO
Erro compr. faixa -4

Meas_values RET_VAL
Código de erro
Sum
Mean_value

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Se você deseja saber mais

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.
Exercício: Integrando o Tratamento de Erros no "FC_Read" (FC50)

SIMATIC S7 SITRAIN Training for


Automation and Drives
Siemens Ltda.

Você também pode gostar