1. Lidando com Erros Síncronos e Assíncronos
SIMATIC S7
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.1
Conhecimento em Automação
Training Center
2. 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
Alimentação
Falha da bateria de backup
OB 81 2)
Diagnóstico de
Interrupção
Quebra-de-fio na entrada de um módulo com
capacidade de interrupção
OB 82
Removendo/Inserindo
módulo de Interrupção
Removendo um módulo de sinal no S7-400
durante o modo de operação (RUN)
OB 83 1)
Erro de Hardware CPU
Nível de sinal de falha na interface MPI
OB 84 1)
Erro de seqüência no
programa
Erro na atualização da imagem de processo
(módulo com defeito)
OB 85
Defeito no bastidor
ou bastidor
Defeito em fonte de alimentação de bastidor
de expansão
OB 86 1)
Erro de comunicação
Identificador de mensagem incorreta
OB 87
SIMATIC S7
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.2
1) somente
com
S7-400
2) não
vai p/Stop
sem OB de erro
Conhecimento em Automação
Training Center
3. 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
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.3
Conhecimento em Automação
Training Center
4. Exemplo de um OB de Erro Assíncrono
OB81: OB de erro: defeito na fonte de alimentação
Network 1:
L
L
==I
=
L
L
==I
=
A
A
S
defeito na bateria, chegada do evento
#OB81_FLT_ID
B#16#22
M
M
M
M
81.2
81.1
81.2
81.0
Carrega identificador de erro
Identificador: defeito bateria no
bastidor central (CR)
Seta flag de memória auxiliar
Identificador: entrando, saindo
Identificador: entrando evento
//
//
//
//
//
M
81.1
#OB81_EV_classe
B#16#39
//
//
//
//
//
//
Flag mem. aux. entrando evento
Defeito na bateria e
entrando evento
Seta flag mem. aux. para mostrar
erro
Network 2: Reseta flag de memória auxiliar, quando bateria O.K.
L
L
==I
R
SIMATIC S7
Siemens AG 1999. All rights reserved.
#OB81_EV_classe
B#16#38
// Identificador: entrando, saindo
// Identificador: saindo
M
// Reset flag de memória auxiliar
81.0
Date:
File:
09.03.2014
PRO2_08P.4
Conhecimento em Automação
Training Center
5. 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
ou não existente
OB 122
SIMATIC S7
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.5
Conhecimento em Automação
Training Center
6. 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)
OB121_BLK_TYPE
BYTE
Tipo de bloco interrompido (somente S7-400)
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
OB121_PRG_ADDR
WORD
Endereço do erro no bloco causador do erro
(somente S7-400)
OB121_DATE_TIME
DT
Momento da gravação do erro de programação
SIMATIC S7
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.6
Conhecimento em Automação
Training Center
7. 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
OB122_SW_FLT
BYTE
Código de erro (valores possíveis : B#16#42, B#16#43,
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)
OB122_BLK_TYPE
BYTE
Tipo de bloco interrompido(somente S7-400)
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
OB122_PRG_ADDR
WORD
Endereço do erro no bloco causador do erro
(somente S7-400)
OB122_DATE_TIME
DT
Momento da gravação do erro de programação.
SIMATIC S7
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.7
Conhecimento em Automação
Training Center
8. 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
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.8
Conhecimento em Automação
Training Center
9. 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.
ACCFLT_SET_MASK
INPUT
BYTE
I, Q, M, D, L, Const.
Nova (adicional) programação
filtro de falhas
Novo (adicional) acesso filtro de falha
RET_VAL
OUTPUT
INT
I, Q, M, D, L
PRGFLT_MASKED
ACCFLT_MASKED
OUTPUT
OUTPUT
DWORD
DWORD
I, Q, M, D, L
I, Q, M, D, L
SIMATIC S7
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.9
Retorna o valor do SFC,
W#16#0001: o novo filtro fica com
área em comum com o filtro existente
Programação completa filtro de falhas
Acesso completo filtro de falhas
Conhecimento em Automação
Training Center
10. Estrutura de programação de Filtro de Falhas
31
30
29
28
27 26
25
24
23
22
DB não carregado
FC não carregado
21
20 19
18
17
16 15
14
13
12
11 10
8
7
6
5
4
3
2
1
0
Erro de conversão BCD
Erro tamanho faixa, leitura
Erro escrita no DB
Erro escrita no DB instance
Erro de número de bloco DB
FB não carregado
9
Erro de número de bloco DI
Erro de número de bloco FC
Erro de número de bloco FB
sem significado
Erro tamanho faixa, escrita
Erro de faixa, leitura
Erro de faixa, escrita
Erro do número do temporizador
Erro do número do contador
Erro de alinhamento, leitura
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
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.10
Conhecimento em Automação
Training Center
11. 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
Somente S7-400:
Erro de acesso a I/O em leitura de módulo
não existente ou com acesso repetido
sem significado
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
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.11
Conhecimento em Automação
Training Center
12. 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
Programação filtro de falhas para resetar
Acesso ao filtro de falhas para resetar
Retorna valor do SFC,
W#16#0001: o novo filtro contém bits que
não são setados no filtro armazenado
Mantém mascarados erros programação
Mantém mascarados erros de acesso
PRGFLT_RESET_MASK INPUT
ACCFLT_RESET_MASK INPUT
RET_VAL
OUTPUT
DWORD
BYTE
INT
I, Q, M, D, L, Const.
I, Q, M, D, L, Const.
I, Q, M, D, L
PRGFLT_MASKED
ACCFLT_MASKED
DWORD
DWORD
I, Q, M, D, L
I, Q, M, D, L
SIMATIC S7
Siemens AG 1999. All rights reserved.
OUTPUT
OUTPUT
Date:
File:
09.03.2014
PRO2_08P.12
Conhecimento em Automação
Training Center
13. 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
ACCFLT_QUERRY
RET_VAL
INPUT
INPUT
OUTPUT
DWORD
BYTE
INT
I, Q, M, D, L, Const.
I, Q, M, D, L, Const.
I, Q, M, D, L
PRGFLT_CLR
OUTPUT
DWORD
I, Q, M, D, L
ACCFLT_CLR
OUTPUT
DWORD
I, Q, M, D, L
SIMATIC S7
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.13
Programação filtro de falhas para checagem
Acesso filtro de falhas para checagem
Retorna valor do SFC,
W#16#0001: o filtro de verificação contém
bits que não são setados (no filtro armazenado)
Programação filtro de falhas com mensagens
de erro
Acesso filtro de falhas com mensagens de erro
Conhecimento em Automação
Training Center
14. Exemplo: Testando Bloco de Dados
Network 1: Mascaramento, Teste, Desmascaramento
// Mascara "DB não existe"
Call SFC
36(
PRGFLT_SET_MASK
:= DW#16#4000000,
ACCFLT_SET_MASK
:= DW#16#0,
RET_VAL
:= #SFC36Error,
PRGFLT_MASKED
:= #Prog36Mask,
ACCFLT_MASKED
:= #Acc36Mask);
// Identificador: DB não existe
// na máscara para erros de acesso
// Testa chamada
OPN DB[DB_NO];
// Checa programação de erro
Call SFC
38(
PRGFLT_QUERRY
ACCFLT_QUERRY
RET_VAL
PRGFLT_MASKED
ACCFLT_MASKED
:=
:=
:=
:=
:=
DW#16#4000000,
DW#16#0,
#SFC38Error,
#Prog38Mask,
#Acc38Mask);
// Avalia resultado
L
#Prog38Mask
L
DW#16#4000000
==D
=
#DB_NOT_THERE
// Desmascara "DB não existe"
Call SFC
37(
PRGFLT_RESET_MASK
ACCFLT_RESET_MASK
RET_VAL
PRGFLT_MASKED
ACCFLT_MASKED
SIMATIC S7
Siemens AG 1999. All rights reserved.
// Identificador: DB não existe
// na máscara para erros de acesso
// Seta variável auxiliar “DB não existe“
:=
:=
:=
:=
:=
DW#16#4000000,
DW#16#0,
#SFC37Error,
#Prog37Mask,
#Acc37Mask);
Date:
File:
// Identificador: DB não existe
// na máscara para erros de acesso
09.03.2014
PRO2_08P.14
Conhecimento em Automação
Training Center
15. Exercício 8.1: Manipulação de Erro no FC81
Decl.
in
out
out
out
EN
Nome
Meas_values
RET_VAL
Sum
Mean_value
Tipo
ANY
INT
REAL
REAL
FC 81
Meas_values
ENO
Causa
Tudo O. K.
Tipo dado <>REAL
DB não existe
Erro compr. faixa
Código erro
0
-1
-2
-4
RET_VAL
Código de erro
Sum
Mean_value
SIMATIC S7
Siemens AG 1999. All rights reserved.
Date:
File:
09.03.2014
PRO2_08P.15
Conhecimento em Automação
Training Center