Construtor RemoteVariableSynchronizer()
IMPORTANTE:
O RemoteVariableSynchronizer permite forçar tags para sincronizar constantemente com um controlador. A sincronização constante exige muitos recursos e pode afetar significativamente o desempenho de um
Aplicativo FactoryTalk Optix
e um controlador.A
Rockwell Automation
recomenda que você:- Limite o uso de RemoteVariableSynchronizer a um pequeno conjunto de tags. Se você precisar forçar a leitura ou a gravação de uma tag em um NetLogic, use IUAVariable.RemoteRead(timeoutMilliseconds) ou IUAVariable.RemoteWrite(value, timeoutMilliseconds) no lugar.
- Adicione período como um argumento do construtor para reduzir a carga de comunicação. Se você não especificar o período, a sincronização de tags será executada em um loop contínuo. Assim que os últimos valores de tag forem recebidos, um novo ciclo de sincronização se inicia sem tempo de espera.
Use o RemoteVariableSynchronizer para manter um conjunto específico de tags sincronizado com um controlador em um NetLogic. Por exemplo, use o RemoteVariableSynchronizer para se inscrever em um evento VariableChange. Consulte Criar assinatura.
As tags são sincronizadas automaticamente, portanto, você não precisa usar o RemoteVariableSynchronizerTags quando:
- As tags são usadas na interface exibida no momento
- As tags são usadas em um registrador de dados
- Uma tag é uma variável de entrada para um alarme
- Uma tag tem um evento ValueChange
Crie um objeto
RemoteVariableSynchronizer
que possa conter uma lista de variáveis do projeto a ser mantido sincronizado com as variáveis de campo relacionadas.public RemoteVariableSynchronizer()
IMPORTANTE:
O objeto
RemoteVariableSynchronizer
deve ser declarado como um membro da classe dentro do NetLogic.Construtor com o tempo de sondagem padrão
No exemplo a seguir, um objeto
variableSynchronizer
é criado para manter o valor de uma variável Speed
do projeto sincronizado com o valor de uma variável de campo que identifica a velocidade de um motor. A variável do projeto, representada pelo objeto motorSpeed
, é adicionada ao objeto variableSynchronizer
por meio do método Add()
.Quando a variável de campo muda seu valor, o método
motorSpeed_VariableChange
é executado. Quando o valor de motorSpeed
(da variável de campo) for maior que 200, uma mensagem de aviso será gerada. O tempo de sondagem padrão é definido para velocidade total.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;
No método
Stop()
, o fim da sincronização quando o nó pai do NetLogic é removido é causado pela invocação do método Dispose()
.Construtor com um tempo de sondagem personalizado
No exemplo a seguir, o tempo de sondagem para
RemoteVariableSynchronizer
é definido como 5000
milissegundos.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;
Dê sua opinião