../../_images/tutorial.png

Tutorial sobre Mensagens Personalizadas

O exemplo apresentado ilustra a utilização das mensagens personalizadas pelo usuário, e podem ser reproduzidos pelo usuário com a utilização do modo ANAC.

Utilização do bloco ALERTA

Inicialmente, podemos definir um controlador de CDU que utiliza o Bloco ALERTA, como o trecho a seguir:

Listagem 124 Exemplo de utilização de um CDU com blocos ALERTA
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
DCDU
(----------------------------------------------------------------------
(ncdu) ( nome cdu )
    1 Bloco_Alerta
(----------------------------------------------------------------------
(EFPAR (npar) (     valpar     )
DEFPAR #LMAX                 0.5
DEFPAR #LMIN                -0.5
DEFPAR #T                    1.0
(----------------------------------------------------------------------
(nb)i(tipo) (stip)s(vent) (vsai) ( p1 )( p2 )( p3 )( p4 ) (vmin) (vmax)
0001 ENTRAD               V
0002 LDLAG2        V      Y4        1.0  0.05   1.0#T     LMIN   LMAX
0003 SAIDA         Y4
0010 ENTRAD                MAX
0011 COMPAR  .EQ.   MAX    Y4MAX
                    Y4     Y4MAX
0012 ALERTA        Y4max              1     2
0013 ALERTA        Y4max              0     0
0020 ENTRAD                MIN
0021 COMPAR  .EQ.   MIN    Y4MIN
                    Y4     Y4MIN
0022 ALERTA        Y4min             11    12
0023 ALERTA        Y4min              0     0

0032 ALERTA        Y4max              1
0033 ALERTA        Y4max                    2
(----------------------------------------------------------------------
(DEFVA (stip) (vdef) ( d1 )
DEFVAL        V         0.0
DEFVAL        MAX    #LMAX
DEFVAL        MIN    #LMIN
DEFVAL        LMAX   #LMAX
DEFVAL        LMIN   #LMIN
(
FIMCDU
999999

Note que nesse exemplo há a definição de 6 blocos alerta, onde estão demonstrados o uso de mensagens personalizadas (P1 ou P2 maiores que 0), o uso de mensagem default (P1 ou P2 iguais a 0) e a desabilitação da detecção (P1 ou P2 não preenchidos):

(nb)i(tipo) (stip)s(vent) (vsai) ( p1 )( p2 )( p3 )( p4 ) (vmin) (vmax)
0012 ALERTA        Y4max              1     2
0013 ALERTA        Y4max              0     0
0022 ALERTA        Y4min             11    12
0023 ALERTA        Y4min              0     0
0032 ALERTA        Y4max              1
0033 ALERTA        Y4max                    2

Esses blocos requerem que as mensagens 1, 2, 11 e 12 sejam definidas em código DMSG. Contudo, não é necessário que essas mensagens tenham sido definidas antes da declaração no DCDU.

Os blocos 12 e 22 monitorarão os sinas Y4MAX e Y4MIN e utilizarão as mensagens definidas pelo usuário. Os blocos 13 e 23 farão função semelhante, mas utilizando a mensagem padrão.

Os blocos 32 e 33 monitorarão a variável Y4MAX, mas terão cada um uma lógica desabilitada individualmente. Juntos, esses dois blocos possuem a mesma função do bloco 12.

Definição de Mensagens Personalizadas

A definição das mensagens é feita pelo código DMSG, onde são definidas a mensagem propriamente dita e o identificador desta mensagem. É permitido ainda o uso de Expressões Coringas, para substituir trechos da mensagem por informações pertinentes à localização do bloco.

Listagem 125 Exemplo de definição de mensagens personalizadas
1
2
3
4
5
6
7
DMSG
(Lc)   ( Numero da mensagem                                                                   )
0001   Variável %vent% atingiu o limite superior (bloco: %nb%, CDU: %nome_do_cdu% /nº: %ncdu% )
0002   Variável %vent% deixou de atingir o limite superior
0011   Variável %vent% atingiu o limite inferior (bloco: %nb%, CDU: %nome_do_cdu% /nº: %ncdu% )
0012   Variável %vent% deixou de atingir o limite inferior
999999

Os blocos 13 e 23 utilizarão a mensagem padrão, por terem seus parâmetros P1 e P2 iguais a 0. Nesse caso, a seguinte mensagem será utilizada:

ALERTA: Detectada transição %trns% em %vent% no bloco %nb% do CDU %nome_do_cdu% de número %ncdu%.

Simulação

Para avaliar o CDU de número 1, serão utilizados alguns eventos para mudança de referência na entrada (bloco 1), e então será observada a saída do bloco 2. Esse valor é comparado com os limites mínimo (YMIN) e máximo (YMAX).

O seguinte trecho ilustra os eventos a serem aplicados ao controle:

1
2
3
4
5
6
DEVT IMPR
(Tp) ( Tempo)( El )( Pa)Nc( Ex) ( % ) (ABS ) Gr Und         (Bl)P ( Rc ) ( Xc ) ( Bc ) (Defas)
TCDU      1.0     1                      1.0                   1
TCDU      5.0     1                     -2.0                   1
TCDU      9.0     1                      1.0                   1
999999

A seguinte resposta do bloco 2 pode ser observada:

../../_images/exemplo_default.png

A partir da resposta dinâmica da figura anterior, diversas mensagens são emitidas. Vamos analisá-las por partes.

T=  1.0000s TCDU - Variação de  0.00% + absoluta de  1.000 na
                    variável V      - CDU      1 Bloco_Alerta

Neste primeiro treco, temos a mensagem relativa a aplicação do primeiro evento.

T=  1.6500s Variável Y4MAX atingiu o limite superior (bloco:   12, CDU: Bloco_Alerta /nº:      1 )

T=  1.6500s ALERTA: Detectada transição 0 -> 1 em Y4MAX no bloco   13 do CDU Bloco_Alerta de número      1.

T=  1.6500s Variável Y4MAX atingiu o limite superior (bloco:   32, CDU: Bloco_Alerta /nº:      1 )

Neste segundo trecho, temos a mensagem de três blocos (12, 13 e 32) relativas à variável Y4 ter alcançado o limite superior. Para o bloco 12 e 32, as mensagens emitidas seguem o definido na mensagem de número 1. Para o bloco 13, a mensagem segue a mensagem padrão do programa.

Dica

Utilize as expressões coringas para a correta identificação do bloco que emitirá a mensagem. Isso ajudará no entendimento do caso.

T=  5.0000s TCDU - Variação de  0.00% + absoluta de -2.000 na
                    variável V      - CDU      1 Bloco_Alerta

T=  5.0100s Variável Y4MAX deixou de atingir o limite superior

T=  5.0100s ALERTA: Detectada transição 1 -> 0 em Y4MAX no bloco   13 do CDU Bloco_Alerta de número      1.

T=  5.0100s Variável Y4MAX deixou de atingir o limite superior

Neste terceiro trecho, existe a aplicação do segundo evento e então a atuação do parâmetro P2 de três blocos: (12, 22 e 33). Note que, em função da mensagem personalizada não ter utilizado mais expressões de identificação, não é possível identificar os blocos que emitiram duas das mensagens. Essa mensagens iguais são referentes aos blocos 12 e 33. Note ainda que em função do parâmetro P2 do bloco 32 estar em branco, não houve emissão de mensagem por este bloco.

T=  6.0500s Variável Y4MIN atingiu o limite inferior (bloco:   22, CDU: Bloco_Alerta /nº:      1 )

T=  6.0500s ALERTA: Detectada transição 0 -> 1 em Y4MIN no bloco   23 do CDU Bloco_Alerta de número      1.

Neste quarto trecho, apenas dois blocos estão monitorando o valor Y4MIN (bloco 22 e 23). O primeiro emite uma mensagem personalizada enquanto que o segundo emite uma mensagem padrão.

T=  9.0000s TCDU - Variação de  0.00% + absoluta de  1.000 na
                    variável V      - CDU      1 Bloco_Alerta

T=  9.0100s Variável Y4MIN deixou de atingir o limite inferior

T=  9.0100s ALERTA: Detectada transição 1 -> 0 em Y4MIN no bloco   23 do CDU Bloco_Alerta de número      1.

Neste último trecho, existe a aplicação do terceiro evento e da ativação da mensagem definida no parâmetro P2 dos blocos 22 e 23.