Função artmetica dependente de uma função lógica

@piter, bom dia.

Verificar este e este KB.

Se está usando o E3Chart com penas de tempo real, então não há como armazenar dados já que não há uma fonte de dados conectada. De qualquer forma, tem como evitar que o domínio seja parado utilizando o cadastro de usuários. Veja:

Buen día Fernando,
Gracias por el aporte, actualmente solo tengo un problema y es que al parecer no me esta boqueando la opción de Remover Dominio, pensé que me pediría alguna contraseña pero sin querer borre una “substation”, solo e creado una protección de edición ( aun no creo la protección de ejecución) ¿De que forma puedo bloquear la opción “remover dominio”?

Si a única forma de bloquear “remover dominio” es creando una protección de ejecución ¿Como puedo hacer para grabar la contraseña de ejecución en el hardkey?

Saludos atentos.
Gracias.

@piter, bom dia.

Desabilitar esta opção é realmente necessária? Provavelmente o cliente final estará utilizando uma licença Runtime, então não poderá remover o projeto.

Pode-se proteger a execução do Domínio também realizando configurações na Permissão do Usuário. Lá ele poderá ser bloqueado de executar ou parar o domínio. Verifica se isto já lhe ajuda.

Caso queira criar uma senha na tua Hardkey para os projetos, entra em contato com o nosso comercial através deste email ou através do site.

Hola Fernando, buen día.
Con la ejecución y parada del dominio no tengo problemas, en la imagen que te mande te muestro que ya logre proteger mi proyecto pero el problema es que: no esta protegido contra la opción Remover Dominio.
Si bien es cierto con la protección que me indicaste nadie podrá hacer ediciones a no ser que ingresen una contraseña, pero si pueden eliminar el archivo “.prj” (imagen de el día de ayer) y eso es lo que deseo evitar que por error eliminen el proyecto mediante a opción Remover Dominio¿Cómo puedo des-habilitar o bloquear la opción Remover Dominio?
Gracias por tu respuesta,
Saludos Cordiales.

@piter,

Não há a possibilidade de “desabilitar” a opção “Remover do Domínio”. Entretanto, caso você cadastre usuários no seu domínio que não possam editá-lo, já faz que esta opção não funcione. Veja:

Quando clicarem na opção “Remover do Domínio” aparecerá a seguinte mensagem:

Realizei o login com um usuário sem permissão:

É o que precisava?

Hola Fernando, buenos días.
Para el caso de usuarios que pueden editar el dominio y contraseñas para proteger los proyectos “.prj”,
estos eventos realizados en el Studio no aparecen en el histórico (E3Browser).¿como puedo obtener un histórico de esos eventos que se realizan en el Studio (para saber la hora y el usuario que realiza alguna edición en el Studio)?

@piter,

Deve-se configurar o Registro de Eventos. Esta configuração fica em: Botão direito no E3Admin > Domínio > Opções…

Ao abrir a tela de Configurações do Domínio, ir na aba Registro de Eventos e escolher quais eventos quer cadastrar:

Hola Fernando. Buen día,
Estoy buscando los parametros “ClientConnection” y “ServerConnection” para saber el estado de comunicacion de ICCP pero no los encuentro.¿Donde esos parametros?¿debo añadir un tag y setear los valores N1, N2, N3, Y N4. para que se comporten como “ClientConnection” y “ServerConnection”?¿QUE IOKIT USO?
¿Este?

Una consulta mas: las tendencias históricas en el E3Chart no se mantiene fija (se mueve hacia la izquierda) ¿Como hago para que se mantenga fija a no ser que el propio operador lo mueva ya sea en vertical u Horizontal?

Saludos.

@piter, boa tarde.

  • Sobre a primeira pergunta, para saber o status de conexão do Client e do Server, deve-se atentar à Tabela 1 do manual a partir da versão 1.0.0.7. Veja:

Munido destas informações, podemos configurar os tags da seguinte forma:

Para o Link do Servidor:

Parâmetro Item = “ServerConnection” e N1 = 0.

Monitorar o Link do Cliente:

Parâmetro Item = “ClientConnection” e N1 = 1.

O valor do tag indica o status da conexão TCP/IP do IOKIT (valores 0, 1 e 2 = conectado).

  • Para o segundo item, provavelmente está com uma pena Histórica e Real configurada, mas o Eixo Horizontal está configurado como Tempo Real. Sendo assim, configura o Eixo Horizontal como Histórico. Ou, caso queira fazer em Runtime, pode fazer conforme explicado aqui.

Sds.

Hola Fernando, buenas tardes.
Tenemos un problema con las “alarmas discretas” . por ejemplo: las posiciones de algunos interruptores serán eventos, razón por la cual en las alarmas discretas le dimos tipo:evento, el problema es que en los eventos(E3Browser), asked aparece como reconocido (¿asked=1?) ¿porque al ser tipo evento aparece directo como reconocido?
¿Que podemos hacer para que aparezca como no-reconocido (asked=0)?

  • ¿cual seria el script para bloquear la busqueda del filtro por fecha si: fecha inicial > a fecha final?

    Atento a tu respuesta,
    Saludos.

@piter, bom dia.

  • Esta é uma condição padrão dos eventos, pois, teoricamente, um evento não é algo que requer muita atenção. Caso precise que o usuário reconheça, utilize alarme.

  • Há muitas formas de fazer isto. Veja dois exemplos:

Exemplo 1 - No evento Click do CommandButton:

   Sub CommandButton1_Click()
'Referencia os SetPoints
DataIni = Screen.Item("spDataInicial").Value
DataFim = Screen.Item("spDataFinal").Value

If CDbl(DataIni) = 0 Then
	MsgBox "Data Inicial não selecionada"
Else
	If DataIni > DataFim Then
		MsgBox "Data Inicial deve ser menor que a Final!"
		Exit Sub
	Else

	Set consulta = Screen.Item("E3Browser1").Item("Consulta1")
'Configura as variáveis da Consulta
	consulta.SetVariableValue "DataInicial", DataIni
	consulta.SetVariableValue "DataFinal", DataFim	
	End If
End If

End Sub

Exemplo 2 - No evento Click (caso esteja usando o DatePicker) ou Validate (Caso esteja digitando o valor) do Setpoint “DataFinal”:

.1

    Sub spDataFinal_Click()
    'Executa a função Calendário
    If Application.ShowDatePicker(DataHora, 0, 0) Then
    'Passa a data escolhida para o SetPoint
    Value = DataHora

    'Compara os valores dos Setpoints
    	If Value < Screen.Item("spDataInicial").Value Then
    		MsgBox "Data Final deve ser maior que Inicial!"
    		Value = 0
    	End If

    End If
    End Sub

.2

Sub spDataFinal_Validate(Cancel, NewValue)
If NewValue < Screen.Item("spDataInicial").Value Then
	MsgBox "Data Final deve ser maior que Inicial!"
	Cancel = True
End If

End Sub

Abraço.

Hola Fernando, buen día.
Gracias por lo anterior.
Hay una observación en el E3Alarm al hacer click derecho me aparece la opción de reconocer alarmas.

Nosotros creamos un commanbutton para reconocer alarmas solo cuando hay usuario registrado, pero en la imagen que te muestro:¿porque aparecen esas opciones al dar click derecho sobre E3Alarn?¿Como lo puedo desabilitar?

Saludos

@piter, bom dia.

Pode-se desabilitar a propriedade PopUpMenu.

Sds.

Hola Fernando, buen día.
¿De que forma puedo lograr el parpadeo de un Switch para un determinado estado?
Hasta el momento estoy probando 2 formas en la biblioteca de Elipse: Conexión digital y conexión por tabla.

  • Para Conexión digital:hago cambios en OverWriteFillColor pero el switch parpadea para todos los estados(0,1,2,3)
  • Para conexión por tabla: coloque el parpadeo para el estado 3 pero cuando ejecuto el viewer no cambia de color.

    Noto que los cambios de colores son tal cual están en el parametro Conmutadores/Disyuntores de ConfiguraciónPower y el problema es que desde ahí no hay la opción de parpadeo.¿como lo logro?.
    Saludos.

@piter, boa tarde.

Para fazer esta conversão, deve-se primeiro verificar esta tabela que fica na Configuração do Power > aba Chaves/Disjuntores, devido ao vínculo da fonte de dados PowerSwitch à propriedade StateColor. Nela há os valores de cada estado da chave. Por exemplo, segundo a tabela, se uma chave (Switch) estiver fechada, a cor deverá ser vermelha. Veja:

Então, para fazer modificações na biblioteca que compõe a chave (Switch), deve-se pegar o valor absoluto desta cor (exemplo: Verde que tem RGB (0,255,0) fica 65280 em absoluto). Munido destes valores, pode-se, configurar a conexão por tabela da forma que achar conveniente. Veja:

Sds.

Obs.: Para saber o valor absoluto da cor, pode-se vincular um display à propriedade StateColor e verificar o valor recebido nele. Outra forma também é utilizando este site. Nele você terá o valor em Hexa. Basta convertê-lo posteriormente para Decimal.

Obs.2: Não esquecer de colocar também as cores de “qualidade ruim”.

Gracias Fernando,
hice lo siguiente:

Pero observo un problema: el parpadeo es correcto excepto para el estado cerrado (no parpadea)

en el estado cerrado el color debe ser rojo pero en lugar de eso el color varia dependiendo del color del estado anterior antes que pase a cerrado. Ejm: si pasa de abierto a cerrado : cerrado = verde, Si pasa de intermedio a cerrado: cerrado = naranja, si pasa de no valido a cerrado : cerrado = blanco ¿porque?¿como puedo solucionarlo?
Espero puedas ayudarme.
Saludos atentos.

@piter, bom dia.

Coloca 255 no Mín. e Máx. do Vermelho:

Sds