Como reconhecer um alarme específico dentro do E3Alarm via scripts?
A partir da versão 3.2, é possível reconhecer alarmes via scripts. Para isto, foram criados três novos métodos para o objeto E3Alarm:
AckSelected: reconhece o alarme que estiver selecionado.
AckCurrentFilter: reconhece todos os alarmes do filtro atual.
AckAll: reconhece todos os alarmes.
Um exemplo de script para reconhecimento de um alarme específico dentro do E3Alarm é este (executado no evento DblClick do E3Alarm):
Sub E3Alarm1_DblClick()
Set alarme = GetFocusedEvent() ' pega os dados do alarme selecionado no E3Alarm e salva no objeto alarme
If TypeName(alarme)="IEventStatus" then ' teste o tipo do objeto alarme
Application.GetObject(alarme.FullAlarmSourceName).Ack(Application.User) ' realiza o reconhecimento baseado nas informações do objeto alarme
End if
End Sub
Obs.: Anexo a este artigo está uma aplicação exemplo desenvolvida com o E3 versão 3.2 Build 229.
como posso colocar varios alarmes com severidade em um único objeto do high performance ?
Nativamente não, porque o objeto hpAlarmIndicatorAnalog permite que você adicione somente uma fonte de alarme.
Mas você poderia alterar a classe e ao invés de realizar o filtro pelo Source, criar uma área e inserir esses dois alarmes (temperatura e pressão), e então editar o CustomFilter da associação:
“Area = ” & chr(34) & “AreaName” & chr(34)
Para funcionar, os alarmes precisarão ter somente a severidade alta ativa, e sugiro que você faça uma cópia da classe (hpAlarmIndicatorAnalog) para não influenciar na nativa.
Desta forma quando qualquer um dos dois alarmes entrar em nível alto, o elemento seria ativado em tela.
Sub E3Alarm1_DblClick()
AckSelected([User])
End Sub
Simples assim, reconhecimento de alarme com duplo click
Basta colocar esse script no E3Alarm