Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

Esta funcionalidade tem por objetivo, a definição de manobras, isto é, de conjuntos sequenciais de telecomandos que, normalmente, são utilizados na operação de sistemas elétricos.
Foi implementada uma janela na qual se pode definir uma nova manobra, alterar uma já definida, excluir manobras e mostrar uma manobra já cadastrada. Finalmente a janela também permite o envio de uma solicitação de execução de uma manobra já existente.

Anchor
Informação_geral
Informação_geral
Anchor
_bookmark466
_bookmark466
Informação geral


Anchor
Pré-Requisitos
Pré-Requisitos
Anchor
_bookmark467
_bookmark467
Pré‐Requisitos

Utilização de Nível(Assets) em tags

Todas as tags que forem utilizados nas funcionalidades de Manobras devem, obrigatoriamente, ter um nível (Asset) associado a elas. Para maiores informações sobre cadastro de Levels, favor referenciar "Criando Níveis (Assets)" na página 101.

Anchor
Modo_de_implementação
Modo_de_implementação
Anchor
_bookmark468
_bookmark468
Modo de implementação

A funcionalidade é implementada através de uma tela (Display) do tipo Popup com o nome
@Display.AN_CmdManobra.
Todo o controle e visualização é feito através de um template de nome AN_Manobras. É instanciado um objeto único @zz_system.Maneuver com este tipo.
Para a escolha de tags para as Manobras foi criada uma janela @Display. AN_ChooseaTag, do tipo Dialog
O controle nesta janela é feito através de um template de nome AN_ChooseTag instanciado como @tag.zz_system.ChooseTag.
Todo o código de Scripts está definido na forma de CodeBehind nos dois displays acima mencionados.
Todos estes objetos foram incluídos no DefaultNewProject.
Os dados das manobras são gravados em uma tabela de nome Manobras, residente na base de dados que tem o mesmo nome do projeto e extensão .db3 (SQlLite), e está alocada no subdiretório de projetos, A conexão tem o nome ProjectInternal. A janela utiliza a Table Maneuver, e a query QueryManeuver.

Anchor
Utilização_da_Janela_de_Manobras
Utilização_da_Janela_de_Manobras
Anchor
_bookmark469
_bookmark469
Utilização da Janela de Manobras


Anchor
Chamada_da_Janela
Chamada_da_Janela
Anchor
_bookmark470
_bookmark470
Chamada da Janela

A chamada da janela de Manobras pode ser feita através de
@Display.AN_cmdManobra.Open() e tem como resultado a apresentação da janela vazia.
Alternativamente pode-se fazer a chamada:
@Display.AN_CMDMANOBRA.NewPopup("manobra = 'NOMEMANOBRA'")
O que causa a visualização da janela de manobra e o preenchimento com os dados da manobra, se existente, de nome "NOMEMANOBRA";
Também se pode solicitar a visualização e também a execução da manobra em seguida usando:
@Display.AN_CMDMANOBRA.NewPopup("manobra = 'RESETCHAVES'; action='execute'")

Anchor
Apresentação_da_Tela_de_Manobras
Apresentação_da_Tela_de_Manobras
Anchor
_bookmark471
_bookmark471
Apresentação da Tela de Manobras

A Janela de Manobras é apresentada na figura abaixo, mostrando uma Manobra já existente:
Na parte superior esquerda há uma Caixa com a lista de todas as manobras cadastradas neste projeto. O nome que aparece na caixa é o nome da manobra atualmente sendo mostrada na grade de dados, existente na parte principal da janela.
Neste modo de utilização de apenas "Mostrar" os dados de manobras, todos os campos da grade com os dados são do tipo somente leitura. Não podem ser alterados.
Image Modified
Clicando-se na Caixa é mostrada a lista com as manobras. Se for escolhido um item da lista, clicando-se com o mouse, esta manobra terá seus dados mostrados no lugar dos dados da anterior:
Image Modified
Veja que foi escolhida outra Manobra e a seguir veja os dados desta outra sendo mostrados:
Image Modified
Na grade de manobras, cada linha corresponde a um comando a ser executado, quando a manobra é executada. Nas colunas, para cada linha, existem dados que definem como deve ser feito o comando. Estes dados são descritos a seguir

  • Ordem – É o número de ordem sequencial dos comandos. A grade é classificada por esta coluna. Se for alterado este número as linhas se invertem para manter a ordem sequencial crescente de cima para baixo. Os números devem ser mantidos sequenciais.

•Equipamento – É o nome do tag do ponto de sinalização do estado aberto / fechado do equipamento sendo comandado. Será utilizado para verificar o sucesso de uma operação de comando (veja abaixo como escolher este tag).
•Comando – É o nome do tag do ponto de comando, isto é, de ação de execução de um comando. Este será o tag que será modificado para gerar o envio de um comando pelo protocolo/canal em que estiver cadastrado.
•Ação – Mostra o texto cadastrado no tag para ser mostrado como sendo o atributo ValueAsString do ponto em tempo real (no caso de tags de comandos que são utilizados em qualquer estado como com a mesma ação, o parâmetro enumerator deve ter ambos os textos iguais).
•Se falhar - Esta coluna contém uma lista com as palavras Seguir e Cancelar. No momento de cadastrar a manobra, deve ser especificado que ação o aplicativo deve tomar em caso de um comando enviado não ter sucesso. Isto é, se após certo tempo não chegar a sinalização esperada. Cancelar deve ser utilizada se o usuário deseja cancelar a manobra em caso de falha no comando daquela linha. Seguir indicará que apesar da falha do comando da mesma linha, o aplicativo deve seguir enviando os comandos das linhas seguintes.
•Retardo – Serve para definir um retardo, em segundos, antes da execução da linha em que é especificado. No caso desta última figura não está sendo usado retardo algum, pois está zero. Na primeira figura, na primeira linha está definido que somente após 10 segundos do início da execução da manobra deve ser enviado o comando da primeira linha. O comando da segunda linha somente deve ser enviado 10 s depois da sinalização com sucesso do comando da primeira linha.
•Mensagem – Neste campo pode-se definir uma mensagem de texto que será adicionada atrás da mensagem de "sumário de operação" enviada pela janela informando que foi enviado um comando por esta Manobra.

Anchor
Menu_de_Comandos
Menu_de_Comandos
Anchor
_bookmark472
_bookmark472
Menu de Comandos

Na parte superior direita da janela de Manobras há botões para a execução de tarefas de cadastramento e execução de manobras. Os itens seguintes descrevem as operações executadas na utilização de cada botão.

Anchor
Nova
Nova
Anchor
_bookmark473
_bookmark473
Nova

O botão serve para entrar no Modo de Inclusão de uma nova manobra.
Ao ser pressionado, os dados da manobra atualmente sendo mostrada são apagados da grade;

    • O nome da manobra na caixa com a lista desaparece;
    • Aparece uma nova caixa de texto para o preenchimento do nome da nova manobra.
    • Aparecem, botões para incluir linhas ( + ) e para excluir linhas ( - );
    • Aparece o botão Salvar para ser utilizado ao final da entrada dos dados da manobra.
    • Na grade aparece uma primeira linha de manobra, vazia, mas já com o número de ordem 1.

A figura a seguir mostra a grade no início do Modo de Inclusão.
Image Modified

Para entrar os dados da janela e de cada comando deve-se:

    • Na caixa de texto deve-se entrar com o nome da manobra sendo criada. No exemplo, RESETCHAVES
    • Fazer um duplo clique com botão esquerdo do mouse na linha vazia, na coluna Equipamento: Será mostrada a Janelas de Escolha de Tags, com tags que são do tipo de sinalização de estados de equipamentos.
    • Escolhe-se o tag que se pretende usar clicando sobre a sua linha, e a seguir pressionando o botão Ok na parte inferior da janela.


Image Modified

    • O texto com o nome do tag será transferido para a linha antes vazia:

Image Modified

    • Repetir para a coluna Comando, clicando na célula vazia, e escolhendo na Janela de Escolha de Tags o tag do comando que se deseja utilizar. Ao fechar a janela de escolha o tag de comando é transferido e a ação definida como parâmetro enumerador do tag é também transferida para a célula ação.


Image Modified

    • A seguir escolha a operação para a coluna "Se falhar", e defina um retardo em segundos se necessário
    • Se desejar digite o texto de uma mensagem a ser incluída junto ao registro da geração da operação de comando, que é feita pela própria janela, com a identificação do tag de comando e da Manobra.
    • Se precisar definir mais um comando, após a conclusão da primeira linha, pressione o botão (plus), para que seja criada uma segunda linha vazia.

Image Modified

    • Preencha os dados do novo comando como feito na primeira linha e continue incluindo linhas e preenchendo-as até completar os passos da manobra.
    • Ao final pressione o botão Salvar, para encerrar o Modo de inclusão e gravar definitivamente a manobra. Será mostrada a Manobra e desaparecem os botões utilizados na edição. Todos os campos da Grade voltam a ficar somente leitura não podendo mais ser alterados.
    • Como mostrado na figura seguinte.

Image Modified

Anchor
Editar
Editar
Anchor
_bookmark474
_bookmark474
Editar

O botão serve para entrar no Modo de Edição de uma manobra já existente.
Neste modo pode-se alterar quaisquer campos de qualquer dos passos da manobra, incluindo a criação de novos comandos ou exclusão de comandos existentes.
O único campo que não pode ser alterado é o nome da manobra.
Ao ser pressionado o botão Editar, os dados da manobra atualmente sendo mostrada continuam na grade:

    • O nome da manobra permanece na caixa com a lista, na parte superior esquerda;
    • Aparecem, botões para incluir linhas ( + ) e para excluir linhas ( - );
    • Aparece o botão Salvar para ser utilizado ao final das alterações de dados da manobra.
    • Todos os campos da grade se tornam editáveis.
    • Para alterar conteúdos basta clicar na célula e muda-los.
    • Nos campos de Equipamento e Comando, se se desejar alteração deve-se clicar para o aparecimento da Janela de Escolha de Tags, e escolher tags.

A figura a seguir mostra a grade no início do Modo de Edição:
.
Image Modified

    • As ações de alteração serão idênticas ao já descrito no modo de inclusão.
    • Pode-se também adicionar novas linhas com o botão (plus), e após preenche-las;
    • Pode-se excluir linhas existentes selecionando a linha e pressionando o botão (minus);
    • Ao final para o salvamento das alterações na base de dados deve-se pressionar o botão Salvar.
    • Será mostrada a Manobra e desaparecem os botões utilizados na edição. Todos os campos da Grade voltam a ficar somente leitura não podendo mais ser alterados.


Anchor
Excluir
Excluir
Anchor
_bookmark475
_bookmark475
Excluir

O botão serve para entrar no Modo de Exclusão de uma manobra já existente.
Deve-se utilizar este botão para a exclusão completa de uma manobra já existente. Primeiro deve-se escolher a manobra na Caixa Lista, na parte superior esquerda da janela.
Uma vez sendo mostrada a manobra na grade pode-se solicitar sua exclusão, pressionando este botão Excluir.

    • Aparece então uma mensagem, pedindo confirmação da exclusão.
    • Pressionando-se o botão Sim, a manobra será excluída, e os dados mostrados da manobra serão apagados.
    • Pressionando-se o botão Não, será cancelada a exclusão.

Image Modified

Anchor
Executar
Executar
Anchor
_bookmark476
_bookmark476
Executar

O botão serve para entrar no Modo de Execução de uma manobra já existente. Deve-se utilizar este botão para disparar a Execução de uma manobra existente.
Primeiro deve-se escolher a manobra na Caixa Lista, na parte superior esquerda da janela. A manobra a ser executada é a que aparece na grade.
Image Modified

    • Ao pressionar o botão Executar a execução da manobra é iniciada, a partir da primeira linha.
    • Inicialmente é respeitado o Retardo, em segundos, definido na linha;
    • Em seguida é verificado se há algum bloqueio para este comando. Se houver bloqueio o comando não será executado e o definido em Se Falhar será realizado: Seguir ou Cancelar a Manobra;
    • Se o comando pode ser executado, é feita a alteração no estado do tag definido na coluna Comando da mesma linha, e a cor de fundo da linha é alterada para amarelo claro.
    • A janela aguarda a sinalização decorrente do comando. Se vier corretamente, a cor de fundo da linha é alterada para verde claro.
    • Se a sinalização não vier dentro de um tempo de Timeout (por default 20s), a cor de fundo é passada para vermelho, para indicar falha. Um log de operação será enviado para eventos com o ocorrido.
    • Se houver falha de comando, o definido em Se Falhar será realizado: Seguir ou Cancelar;
    • A execução passa para a segunda linha, sendo repetidos os passos acima citados.
    • E a execução continua até a última linha.



Anchor
Critérios_para_verificações_de_sinalizaç
Critérios_para_verificações_de_sinalizaç
Anchor
_bookmark477
_bookmark477
Critérios para verificações de sinalizações e bloqueios


Anchor
Verificação_de_Sinalização
Verificação_de_Sinalização
Anchor
_bookmark478
_bookmark478
Verificação de Sinalização

O critério utilizado é verificar se as duas primeiras letras do ValueAsString da tag de comando, após alterada pela ação de comando, é igual as duas primeiras letras do ValueAsString da tag de sinalização.
Portanto ao se configurar a base de dados deve-se levar em consideração este critério para a utilização da Janela de Manobras default.
Exemplo:

    • Seja o tag de sinalização: Chave_8.STA.POS definida com os estados 0=Aberta; 1 = Fechada
    • Seja o tag de comando: Chave_8.CMD.CMA com os estados 0=Abrir; 1=Abrir;

Após enviado o comando "Abrir", pela alteração do tag de comando, a sinalização estará correta quando o tag Chabe_8.STA.POS tiver seu estado com ValueAsString = Aberta;
Somente as duas primeiras letras são testadas.

Anchor
Verificação_de_Bloqueios
Verificação_de_Bloqueios
Anchor
_bookmark479
_bookmark479
Verificação de Bloqueios

Para que seja feita a verificação de bloqueios de intertravamento, deve-se configurar na tag @Tag.zz_system.Maneuver.tagForCmdBlocking, em seu atributo StartValue o texto da parte final do nome da tag que contém, a informação de bloqueio.
Para a verificação de bloqueio será procurada uma tag, com a mesma parte inicial do nome, isto é, do mesmo template em que está a tag de sinalização, e com a parte final igual ao definido nesta configuração. Será considerado bloqueio se o Value desta tag for 1;

Anchor
Mensagens_de_Eventos_de_Execução
Mensagens_de_Eventos_de_Execução
Anchor
_bookmark480
_bookmark480
Mensagens de Eventos de Execução

Como resultado da funcionalidade de Janela de Manobras são enviadas mensagens de operação para a lista de eventos.
Image Modified Na figura a seguir todos os comandos foram sinalizados corretamente.
No caso de verificação de que um determinado Comando está bloqueado para execução, por exemplo por um impedimento, é enviada mensagem com os dizeres:
COMANDO NÂO EXECUTADO - BLOQUEIO
Caso haja falha de sinalização a mensagem enviada incluirá:
CANCELADA - Falhou Sinalização de comando (em caso de Se Falhar é Cancelar)
CONTINUA - Falhou Sinalização de comando (em caso de Se Falhar é Seguir)

Anchor
Configurações
Configurações
Anchor
_bookmark481
_bookmark481
Configurações

As seguintes configurações devem ser feitas para o correto funcionamento da janela de manobras.

Anchor
Time-out_de_Sinalização_de_Comando
Time-out_de_Sinalização_de_Comando
Anchor
_bookmark482
_bookmark482
Time‐out de Sinalização de Comando

Tempo máximo em segundos de espera por uma sinalização, após enviado um comando. Se a sinalização correta não chegar o comando é considerado com falha. Por default 20s.
Configurar em
@Tag.zz_system.Maneuver.timeout.StartValue

Anchor
Tag_para_Verificação_de_bloqueios
Tag_para_Verificação_de_bloqueios
Anchor
_bookmark483
_bookmark483
Tag para Verificação de bloqueios

Deve ser configurada o texto da parte final do nome da tag de bloqueio (intertravamento ou impedimento) na tag:
@Tag.zz_system.Maneuver.tagForCmdBlocking.StartValue
Para a verificação de bloqueio será procurada uma tag, com a mesma parte inicial do nome que a tag de sinalização, e com a parte final igual ao definido nesta configuração.
Ex: tag de comando @tag.Chave_13.CMD.CMA Texto do tagForCmdBlocking: .STA.BLF Será testado o valor de uma tag com o nome:
@tag.Chave_13.STA.BLF

Anchor
Definições_de_finais_de_nomes_para_Janel
Definições_de_finais_de_nomes_para_Janel
Anchor
_bookmark484
_bookmark484
Definições de finais de nomes para Janela de Escolha de Tags

Para que a Janela de Escolha de Tags não fique muito cheia quando é aberta e com tags de pontos que não são do tipo procurado, o chamador passa a informação se deve mostrar tags de comando ou tags de sinalização.
Conforme este parâmetro a lista mostrada janela será carregada com tags cuja parte final do nome seja igual a uma das descritas nos tags de configuração a seguir mostrados.

Finais para Tags de Comandos

Devem ser configurados até 6 partes finais de tags de comando, separados por ponto e virgulas ( ; ) na tag:
@Tag.zz_system.ChooseTag.txtSuffixCmdNames.StartValues
Exemplo:
CMA;CMF;_L;_D

Finais para Tags de Sinalização

Devem ser configurados até 6 partes finais de tags de sinalização, separados por ponto e virgulas ( ; ) na tag:
@Tag.zz_system.ChooseTag.txtSuffixEquipNames.StartValues
Exemplo:
.POS;R79