Leitura Tag Driver de Comunicação

Olá boa noite estou tentando realizar a leitura de uma tag de comunicação, onde passo o pathName da mesma, realizo um Select Case para identificar qual valores vou atribuir, abaixo uma parte dó código, porém não está realizando a leitura.
Estou realizando no evento OnPreShow da tela.

Dim Tela, Cam, AREC, AQC, ATA, ATIEC, ATIAC, BREC, BQC, BTA, BTIEC, BTIAC

Tela = Application.GetObject(“Dados.IndexTela”).Value
’ ===============================
’ Define o sufixo da câmara
’ ===============================
Select Case Tela
Case 1
Cam = “Cam5A”
Case 2
Cam = “Cam5B”
Case 3
Cam = “Cam5C”
Case 4
Cam = “Cam5D”
Case else
End Select

'BREC = Application.GetObject("Driver1.Ambientes." & Cam & ".Receita.Envia.B.Atual")
'BQC = Application.GetObject("Driver1.Ambientes." & Cam & ".Receita.Envia.B.QC")
'BTA = Application.GetObject("Driver1.Ambientes." & Cam & ".Receita.Envia.B.TA")
'BTIEC = Application.GetObject("Driver1.Ambientes." & Cam & ".Receita.Envia.B.TIEC")
'BTIAC = Application.GetObject("Driver1.Ambientes." & Cam & ".Receita.Envia.B.TIAC")

Bom dia, suponho que esteja se referindo a parte comentada do código apresentado, nesse caso como vc está tentando referenciar o IOTag em si será necessário utilizar o ação de referência Set, caso contrario se necessita apenas do valor do IOTag acrescente o .Value no final

Referenciar o IOTag em uma variável:
Set BREC = Application.GetObject("Driver1.Ambientes." & Cam & ".Receita.Envia.B.Atual")

Armazenar o valor do IOTag em uma variável:
BREC = Application.GetObject("Driver1.Ambientes." & Cam & ".Receita.Envia.B.Atual").Value

BREC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.B.Atual”)
'BQC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.B.QC”)
'BTA = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.B.TA”)
'BTIEC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.B.TIEC”)
'BTIAC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.B.TIAC”)

Na verdade aqui faço a leitura no Tag de comunicação e armazena em tags da tela. A ideia é somente ler os valores da receita que está setado no CLP e passar para a tela.

Use o .Value para ler o valor atual do IOTag

Realizado os testes, porém mesmo com o comando SET não há leitura o mais interessante é que o nome da receita

Set BREC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.B.Atual”)

Ele consegue fazer a leitura, já o restante retorna como NULL.
Outra observação é que o comando SET não aceita “.Valeu”

A sugestão do @AfonsoCalado é:

Dim breac
Set breac = Application.GetObject( _
        "Driver1.Ambientes." & Cam & ".Receita.Envia.B.Atual")
    
Dim breacValue
breacValue = breac.Value

Ou apenas:

Dim breacValue
breacValue = Application.GetObject( _
        "Driver1.Ambientes." & Cam & ".Receita.Envia.B.Atual").Value

Só não fiz a quebra de linha, mas tentei das duas maneiras e para os valores de tags inteiras o retorno é NULL,
tentei trocar o evento de OnPreShow para O show, mas também aparece, como NULL.
Imaginei que o valor da TAG talvez realmente pudesse ser NULL, mas ao ativar a comunicação do driver é encontrado os valores.

Poderia mandar o print ou o exato código que está no evento pfv?

Sub PopupConf_OnPreShow(Arg)
Dim Tela, Cam, AREC, AQC, ATA, ATIEC, ATIAC, BREC, BQC, BTA, BTIEC, BTIAC
Tela = Application.GetObject(“Dados.IndexTela”).Value
’ ===============================
’ Define o sufixo da câmara
’ ===============================
Select Case Tela
Case 1
Cam = “Camara5A”
Case 2
Cam = “Camara5B”
Case 3
Cam = “Camara5C”
Case 4
Cam = “Camara5D”
Case 5
Cam = “Camara10”
Case 6
Cam = “Camara11”
Case 7
Cam = “Camara12”
Case 8
Cam = “Camara13”
Case 9
Cam = “Camara14”
Case 10
Cam = “Camara15”
Case 11
Cam = “Camara16”
Case 12
Cam = “Camara17”
Case 13
Cam = “Camara18”
Case 14
Cam = “Camara30”
Case 15
Cam = “Camara31”
Case 16
Cam = “Camara32”
Case 17
Cam = “Camara33”
Case 18
Cam = “Camara34”
Case Else
End Select

'Recebe valores da receita para o CLP Zona A	

SET AREC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.A.Atual”)
SET AQC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.A.QC”)
SET ATA = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.A.TA”)
SET ATIEC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.A.TIEC”)
SET ATIAC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.A.TIAC”)

'Envia valores para a tela corrente	
Screen.Item("Texto17").Value = AQC.Value
Screen.Item("Texto19").Value = ATA.Value
Screen.Item("Texto15").Value = ATIEC.Value
Screen.Item("Texto21").Value = ATIAC.Value
Screen.Item("CodReceitaA2").Value = AREC.Value
Screen.Item("NomeRecA").Value = AREC.Value

'Recebe valores da receita para o CLP Zona B	

SET BREC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.B.Atual”)
SET BQC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.B.QC”)
SET BTA = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.B.TA”)
SET BTIEC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.B.TIEC”)
SET BTIAC = Application.GetObject(“Driver1.Ambientes.” & Cam & “.Receita.Envia.B.TIAC”)

'Envia valores para a tela corrente Zona B
Screen.Item("Texto6").Value = BQC.Value
Screen.Item("Texto7").Value = BTA.Value
Screen.Item("Texto13").Value = BTIEC.Value
Screen.Item("Texto12").Value = BTIAC.Value
Screen.Item("NomeRecB").Value = BREC.Value	

End Sub

Seria interessante verificar se o caminho dos IOTags estão corretos pois erros de script poderão interromper a execução completa do script.

Como está analisando os valores capturados?, vejo que está poderia fazer o teste de associar o IOTag direto em um display em tela?

Altere o envio do valor corrente do IOTag por uma associação dinâmica:

' # Troque isto:
Screen.Item("Texto17").Value = AQC.Value
' # Por isto: 
Screen.Item("Texto17").Links.CreateLink "Value", AQC.PathName & ".Value"

Desta forma;

Screen.Item(“Texto17”).Links.CreateLink “Value”, AQC.PathName & “.Value”

Funcionou e descobri o que poderia estar acontecendo também.
Coloquei o endereço em um display direto e quando abri a tela, ela inicia em ???
Após alguns segundos os valores são atualizados.
Acredito que há um delay da comunicação, assim no evento OnPreShow ele puxa os dados de ??? , até a comunicação ser ativada e realizado a leitura