HMI Alta Performance

Prezados,

Achei bastante interessante o KB sobre HMI Alta Performance
Estou analisando algumas referências citadas no artigo para adaptar os centros de controle onde trabalho.

Links:
Rockwell
ISA

Enfim, comecei utilizando as bibliotecas e projetos desenvolvidos pela Elipse e adaptei alguns detalhes para melhor compatibilidade com nosso projeto e com o que desejaríamos monitorar. Segue abaixo algumas mudanças feitas:

  • Biblioteca HPDISPLAYMEDIA:

    • hpControlsChart:
      • Retirei os scripts para ajuste do máximo e mínimo da escala do grafico baseado nas mudanças de valor das propriedades VerticalMaximum/VerticalMinimum. Como o máx e mín não iriam se alterar coloque no script de inicialização e ajustei as propriedade no objeto mesmo. Menos associações.
      • Como o gráfico é para uma idéia de projeção não achei ideal a pena do grafico ser do tipo “Tempo Real”, pois se o usuário mudar de tela a informação se perde. Criei a propriedade PenType e no script associei o tipo da pena que é criada dinamicamente com essa propriedade e assim posso ajustar para o modo “historico e tempo real” se quiser.
      • Como o modifique para dados historico + tempo real o grafico pode demorar um pouco para fazer a consulta dos dados para exibir a pena. Acrescentei então variaveis de “datainicial” e “datafinal” na consulta do grafico, onde a datainicial = DateAdd(“s”, -hpControlsChart.TimePeriod, Now) e datafinal = Now assim fica bem mais rápido a consulta aos dados.
  • hpBarGraphAlarmLimVertical:

    • Modifiquei o tamanho das fontes e display do Label e Unidade, estavam grande em comparação com a Barra em si.
    • Dupliquei o marcador de Setpoint e as propriedades relativas para se ajustar às nossas necessidades. (Melhoria: Criar e ajustar dinamicamente a quantidade de Setpoints)
    • Associar um BarGraphAlarmLim com um hpControlsChart em telas com zoom que se ajustam automaticamente, distorce completamente o posicionamento do objetos e consequentemente a relação entre eles (limites de alarme com a escala do gráfico). Melhoria: Criar uma função de ajuste do tamanho da tela com o tamanho dos objetos.

Ao analisar as bibliotecas com o STUDIO o mesmo encontrou alguns erros de associações. Basicamente apenas alguns links apontando para elementos com nome diferente. Dá para analisar e ver qual seria a associação correta e corrigir tranquilamente. Depois atualizo o post com as correções que fiz e outros componentes que tenho experimentado.

Enfim, gostaria de agradecer o empenho de toda equipe da Elipse, pois analisando as bibliotecas disponibilizadas observa-se o grande esforço que foi necessário para construir-la. Dificilmente com nossas atividades rotineiras teríamos tempo e mesmo engenhosidade para dedicar na construção destes componentes os quais após ler mais sobre o assunto nas referências bibliográficas, consegui enxergar o quanto ainda podemos melhorar no desenvolvimento dos nossos sistemas supervisórios, e o quanto os usuários destes sistemas têm a ganhar com o uso desta metodologia. Ainda espero criar algumas métricas para análise da operação antes de migrar nosso sistema, para assim poder medir se houve e de quanto foi o ganho na resposta à alarmes e condições anormais pela operação.

Mais uma vez, parabéns e continuem com o ótimo trabalho no KB e agora no fórum.

ps: Atualizarei ainda este post depois… se foi muito longo, me desculpem, mais espero que outros contribuam com suas experiências.

Olá Marcel!
Obrigado pelos comentários e sugestões! Eles enriquecem muito o resultado final do produto e serão analisados para futuras atualizações do HighPerformance. Aliás, em breve será disponibilizado um novo release que trará novos recursos, além de várias correções, incluindo as correções dos erros de associações que você apontou aqui.

Sugestão:
Adicionar XControl que represente um sumário dos Alarmes exibidos na tela. Como no exemplo a seguir:

Mas para isso seria interessante poder utilizar a ferramenta AlarmServer, pois a mesma já contabiliza quais alarmes estão ativos, com/sem ACK, organizado por severidades. Seria o ideal, porém o sistema já tem um AlarmServer configurado, e pelo que entendi ele “enxerga” todos os alarmes ativos do projeto, não apenas os que estão inseridos nele (já que há a possibilidade de inserir alarmes nele, como em um servidor de dados, seria interessante que ele monitorasse somente os que estão internos a ele).

Então enquanto não é possível, crie um objeto AlarmConfig, que é simplesmente uma pasta de dados, fiz um For Each dentro dela e contabilizei em tags o numero de alarmes por severidade. Criei um display e associei com as tags Ficou assim:

Acho que vocês poderiam incluir outro nível de alarme também, para mostrar que os alarmes desativados

Primeiro, desculpem upar um tópico antigo. Mas gostaria de saber se a Elipse continua desenvolvendo bibliotecas com esta ideologia.

Estou migrando aos poucos os sistemas supervisórios da empresa (3 na verdade), e tenho utilizado com frequência os objetos desenvolvidos e a metodologia aplicada nos próprios objetos e telas que desenvolvo.

Aprecio bastante o trabalho realizado e considero altamente relevante, embora a adoção/migração em um sistema existente e já fundamentado na cabeça dos operadores possa ser trabalhosa. Gostaria de ver novas ferramentas com a mesma metodologia.

Obrigado.
Tela de comunicação antes:

Tela de comunicação depois (rede de repetidores):

Tela de comunicação depois (rede de Adutoras):

Tela de reservatórios Antes:

Tela de reservatórios Depois:

Temperatura de Conjunto Motor-Bomba:
Antes:

Depois

OBS: Para efeitos de segurança e exibição apenas, os dados exibidos nas imagens de comunicação e nível dos reservatórios são fictícios.

2 Likes

Oi @Marcel_Ribeiro, cheguei atrasado aqui neste post mas quero dizer que achei excelente as contribuições e gostei bastante dos seus exemplos de tela. Compartilho aqui um eBook que nós criamos na scadaHUB, gratuito, ainda sobre o tema.

1 Like

Já vi seu post sobre a vaga (um pena ser do outro lado do Brasil, Fortaleza aqui) e inclusive já fucei o site e achei o ebook… Muito bom por sinal. Vou tentar aplicar o conceito e ler um pouco mais sobre o Flat Design.

Parabéns pela iniciativa de distribuir o ebook.

1 Like

Ola @Marcel_Ribeiro, muito bom, podemos divulgar isso em nossas redes?

1 Like

Fiquem à vontade, os dados utilizados são de exemplo mesmo por segurança da informação da empresa.

Gostaria de saber se a Elipse continua desenvolvendo bibliotecas com a metodologia de High Performance.
Como disse estou migrando todos os sistemas para esse formato, embora demore um pouco.

Vou adicionar mais uma tela modificada, embora ainda esteja criando os xcontrols e faceplates para comando das bombas.
Tela estação antes:

Tela estação depois:

Obs: Tive que adicionar a informação redundante do estado da bomba (Lig/Desl), pois os operadores reclamaram da cores já que estão muito acostumados com o esquema anterior. Novamente, dados fictícios apenas para visualização da tela.

Ola @Marcel_Ribeiro, as bibliotecas HighPerformance continuam sendo desenvolvidas, inclusive estamos prevendo o lançamento de uma versão definitiva para o primeiro trimestre de 2017, uma vez que as versões disponibilizadas no KB ainda são versões preliminares. Esta versão definitiva trará melhorias no desempenho, maior estabilidade, melhorias diversas em vários objetos já existentes e algumas novidades.

2 Likes

Obrigado pela informação.
Aguardando as novidades.Estou remodelando os menus então estou vendo como utilizar os Tabs e TreeView que já foram disponibilizados.

Entre as novidades: um novo objeto TreeView com desempenho melhorado, função de busca e interface compatível com o objeto antigo, porém mais poderosa. Outro novo objeto: Menus de 2 níveis que já vem pronto, bastando ser configurado. A tratativa de alarmes também receberá algumas melhorias, como reconhecimento a um clique, maior abrangência de tipos de alarmes e indicação de alarme ativo/inativo. Isto só para falar algumas delas.

1 Like

Acho que vou esperar pela atualização para remodelar o menus então, vem diretamente de encontro com algumas funcionalidades que busco. Valeu pela info.

EDIT:
Aproveitando para listar um bug no hpControlChart. Quando o servidor é reiniciado ainda não tem valores para preencher o array do Chart, então fica aparecendo erro de script no método addPoint do E3Chart. Logo, basta verificar se o valor é Nulo ou não antes de desenhar:

linha 19 do script OnStarRunning do obj E3Chart do hpControlChart:

dataList = hpControlsChart.VerticalLinkObj.ArrayList
for i = 1 to samples
'hpControlsChart.VerticalLinkObj.PrintLog = CStr(CDate(timeoffset)) & " | " & CStr(dataList(i))
If NOT(IsNull(dataList(i))) Then
pen.AddPoint timeoffset, dataList(i), 192
End If
timeoffset = timeoffset + (1/resolution)
Next

bom dia pessoal.
helcker tem alguma previsão de data pro lançamento da versão definitiva das
bibliotecas HighPerformance? visto que ja estamos no final do 1° trimestre de 2017.

obrigado!

Bom dia!
Será lançado em breve, estamos na fase final de desenvolvimento e testes.