Endereço de objeto

É possível endereçar um objeto com mais de um endereço de memoria .
Att

@Paulo_Oliveira, bom dia.

Se estiver se tratando de tag de comunicação, não. Cada tag representa apenas um endereço.

É possível modificar o endereço em Runtime, mas cada novo endereço configurado representará um novo tag e não o mesmo.

Sds.

Obrigado

Att…

Bom dia

Então eu quero que um botão tenha 5 endereços nele para acionar 5 dispositivos diferente é possível ?

Att

@Paulo_Oliveira, bom dia.

Sim, é possível.

Sds.

Como eu faço ?

Att;…

@Paulo_Oliveira,

Supondo:

  • 1 driver para cada equipamento;
  • 1 tag de comunicação digital para cada driver.

Pode fazer este comando utilizando um CommandButton:

Sub CommandButton1_Click()
Application.GetObject("Driver1.Tag1").WriteEx 1
Application.GetObject("Driver2.Tag1").WriteEx 1
Application.GetObject("Driver3.Tag1").WriteEx 1
Application.GetObject("Driver4.Tag1").WriteEx 1
Application.GetObject("Driver5.Tag1").WriteEx 1

' Ou
' For i=1 to 5
'	 Application.GetObject("Driver"&i&".Tag1").WriteEx 1
' Next
End Sub

Sds.

Obs.: Sempre que possível, passa mais detalhes como nome dos tags, nome dos drivers, tipo, etc.

Então eu tenho que fazer um teste em 10 dispositivos acionando um botão , vou fazer comunicação modbus rtu onde configuro a porta COM na tela de Viewer a chances de dar problema ??

@Paulo_Oliveira,

Sugiro assistir a estes dois vídeos:

Sds.

Agradeço pelos videos e informação .

Att

Boa tarde segue exemplo

Então fiz o código que você mandou só que ele só faz o acionamento como faço pra desacionar .

Att

@Paulo_Oliveira, boa tarde.

Semelhante ao anterior, mas trocando o 1 por 0.

Pode fazer este comando utilizando um CommandButton:

Sub CommandButton1_Click()
Application.GetObject("Driver1.Tag1").WriteEx 0
Application.GetObject("Driver2.Tag1").WriteEx 0
Application.GetObject("Driver3.Tag1").WriteEx 0
Application.GetObject("Driver4.Tag1").WriteEx 0
Application.GetObject("Driver5.Tag1").WriteEx 0

' Ou
' For i=1 to 5
'	 Application.GetObject("Driver"&i&".Tag1").WriteEx 0
' Next
End Sub

Sds.


Então neste exemplo quando aperta o botão é pra fica visível ,só que não está funcionando.

@Paulo_Oliveira,

Faz da seguinte forma:

  1. Cria dois botões sendo um para ligar (visível) e outro para desligar (invisível);
  2. Desmembra o script entre esses botões;
  3. Na associação do objeto retângulo, ao invés de conexão bidirecional, utiliza conexão simples.

Sds.

Desculpe incomodar novamente mas é possível fazer só com um botão?
Se não agradeço enormemente pela ajudar .

Att

Sim, é possível. Mas se quer manter o retângulo visível, precisa inverter a ordem: primeiro passa o zero e depois o 1.

Ou, na associação, utiliza o NOT para inverter o valor recebido pela tag, posto que o último comando está sendo False (0) e para ficar visível precisa receber True (1).

Exemplo: NOT(CBool(Dados.saida2.Value))

Mais informações:

Sds.

Agradeço pela Atenção .

Attt

essa citação abaixo se o 1 estiver entre parenteses tem diferença?

Application.GetObject(“Driver1.Tag1”).WriteEx (1) Desse jeito

@Raphael_pecontrol, boa tarde.

Fiz alguns testes e, neste caso, não deu erro, mas sugiro sem os parênteses.

Sds.

1 Like