Descrição:
É possível escrever múltiplos valores em um bloco de uma só vez, ao invés de escrevê-los no elemento?
Solução:
Sim. Para isto, desabilite a propriedade AllowWrite (False) do bloco de comunicação para definir que este não efetue escritas automáticas.
A escrita em um bloco pode ser feita de duas maneiras:
1. Utilizando o método WriteEx:
- Crie um Array com o mesmo tamanho (número de elementos) de seu bloco de comunicação;
- Passe o valor a ser escrito no elemento do bloco para cada um dos elementos do Array;
- Após carregar o Array com os valores, utilize o método WriteEx para escrever os valores.
Exemplo do script:
'Declarando tamanho do Array Dim ArrayValor(4) 'Carrega elementos do Array ArrayValor(0) = 10 ArrayValor(1) = 20 ArrayValor(2) = 30 ArrayValor(3) = 40 ArrayValor(4) = 50 'Escreve no bloco Application.GetObject("Driver1.Bloco").WriteEx ArrayValor
2. Utilizando o método Write:
- Desabilite a propriedade AllowRead (leitura automática) do bloco de comunicação no qual deseja realizar a escrita;
- Carregue os elementos do bloco com os valores desejados;
- Após os valores terem sido carregados, utilize o método Write para realizar a escrita dos valores dos elementos carregados anteriormente;
- Após realizar a escrita, habilite novamente a propriedade AllowRead do bloco (True).
Exemplo de script:
'Desabilita a leitura
Application.GetObject("Driver1.Bloco").AllowRead = False
'Carrega valores nos elementos
Application.GetObject("Driver1.Bloco.Elemento1").Value = 10
Application.GetObject("Driver1.Bloco.Elemento2").Value = 20
Application.GetObject("Driver1.Bloco.Elemento3").Value = 30
Application.GetObject("Driver1.Bloco.Elemento4").Value = 40
Application.GetObject("Driver1.Bloco.Elemento5").Value = 50
'Escreve no bloco
Application.GetObject("Driver1.Bloco").Write()
'Habilita a leitura
Application.GetObject("Driver1.Bloco").AllowRead = True
Anexo a este artigo está uma aplicação exemplo que ilustra os procedimentos descritos acima.