- Empezar
- Crear proyectos
- OPC UA
- Objetos gráficos
- Objetos gráficos predefinidos
- Sesiones y configuraciones regionales
- Referencias de objetos y variables
- Extensión de proyectos
- NetLogic
- Referencia de API de C#
- Tutoriales
- Tutorial de alarmas
- Tutorial de vínculos dinámicos
- Tutorial sobe objetos gráficos
- Tutorial del registrador
- Tutorial de NetLogic
- Tutorial de OPC UA
RemoteVariableSynchronizer() constructor
IMPORTANTE:
El RemoteVariableSynchronizer permite forzar la sincronización constante de etiquetas con un controlador. La sincronización constante consume muchos recursos y puede afectar de forma significativa al rendimiento de un
Aplicación FactoryTalk Optix
y un controlador.Rockwell Automation
le recomienda:- Limitar el uso de RemoteVariableSynchronizer a un pequeño conjunto de etiquetas. Si necesita forzar la lectura o escritura de una etiqueta en un NetLogic, use IUAVariable.RemoteRead(timeoutMilliseconds) o IUAVariable.RemoteWrite(value, timeoutMilliseconds) en su lugar.
- Agregar timespan como un argumento del constructor para reducir la carga de comunicación. Si no especifica la duración, la sincronización de etiquetas se ejecuta en un bucle continuo. En cuanto se reciban los últimos valores de etiqueta, comenzará un nuevo ciclo de sincronización sin tiempo de espera.
Use RemoteVariableSynchronizer para mantener sincronizado un conjunto específico de etiquetas con un controlador en NetLogic. Por ejemplo, use RemoteVariableSynchronizer para suscribirse a un evento VariableChange. Consulte Crear una suscripción.
Las etiquetas se sincronizan automáticamente, por lo que no es necesario utilizar RemoteVariableSynchronizerTags cuando:
- Las etiquetas se utilizan en la interfaz mostrada actualmente
- Las etiquetas se usan en un registrador de datos
- Una etiqueta es una variable de entrada de una alarma
- Una etiqueta tiene un evento ValueChange
Cree un objeto
RemoteVariableSynchronizer
que pueda contener una lista de variables de proyecto que se conservarán sincronizadas con las variables de campo relacionadas.public RemoteVariableSynchronizer()
IMPORTANTE:
El objeto
RemoteVariableSynchronizer
se debe declarar como miembro de clase dentro de NetLogic.Constructor con tiempo de sondeo predeterminado
En el siguiente ejemplo, se crea un objeto
variableSynchronizer
para mantener el valor de una variable de proyecto Speed
sincronizada con el valor de una variable de campo que identifica la velocidad de un motor. La variable de proyecto, representada por el objeto motorSpeed
, se agrega al objeto variableSynchronizer
a través del método Add()
.Cuando la variable de campo cambia su valor, se ejecuta el método
motorSpeed_VariableChange
. Si el valor de motorSpeed
(de la variable de campo) es superior a 200, se genera un mensaje de advertencia. El tiempo de sondeo predeterminado está establecido a la velocidad máxima.private void Start() { motorSpeed = LogicObject.Owner.GetVariable("Speed");variableSynchronizer = new RemoteVariableSynchronizer();variableSynchronizer.Add(motorSpeed); motorSpeed.VariableChange += MotorSpeed_VariableChange; } private void MotorSpeed_VariableChange(object sender, VariableChangeEventArgs e) { if (motorSpeed.Value > 200) { Log.Warning("Speed limit reached!"); } } private IUAVariable motorSpeed; private RemoteVariableSynchronizer variableSynchronizer;
En el método
Stop()
, la terminación de la sincronización cuando se quita el nodo primario de NetLogic se aplica invocando al método Dispose()
.Constructor con tiempo de sondeo personalizado
En el siguiente ejemplo, el tiempo de sondeo para
RemoteVariableSynchronizer
está establecido en 5000
milisegundos.public override void Start() { var variable1 = Project.Current.Get<IUAVariable>("Model/Variable1"); variable1.VariableChange += Variable1_VariableChange;synchronizer = new RemoteVariableSynchronizer(TimeSpan.FromMilliseconds(5000));synchronizer.Add(variable1); } private void Variable1_VariableChange(object sender, VariableChangeEventArgs e) { Log.Info($"Variable1 {e.NewValue}"); } public override void Stop() { synchronizer.Dispose(); var variable1 = Project.Current.Get<IUAVariable>("Model/Variable1"); variable1.VariableChange -= Variable1_VariableChange; } RemoteVariableSynchronizer synchronizer;
Entregue su opinión