Erro IOTag Utilizando tag de comunicação

Boa tarde,

Estou com dificuldade de entender o motivo do erro no link da propriedade IOTag.

Criei o Xobjcts e nele inseri 4 variáveis (Prioridade) do tipo IOTag
erro4

Nas prioridade estou inserindo a tag do driver de comunicação com o .bit
erro3

Porém ao executar o projeto está apresenta o seguinte erro (Onde não diz nada )
erro1

linha do código correspondente ao erro

Enquanto estava utilizando tags interna a lógica funcionava perfeitamente, mas quando passo a utilizar tag de comunicação com o Bit não funciona.

Olá,

Bit00 é do tipo boolean e não IOTag, logo não possui a propriedade Value.

Se fosse um booleano, bastaria apenas:

If ( weg_PopupEtiqueta.Popup_Etiqueta.Prioridade1 ) Then
    ' se verdadeiro...
End If

O correto seria associar Propriedade1 a WEG_Drivers.Etiquetas.G1_EQT_Red apenas, e o script seria:

If ( weg_PopupEtiqueta.Popup_Etiqueta.Prioridade1.Bit00 ) Then
    ' se verdadeiro...
End If
1 Like

Bom dia Leandro,

Mudei a tag para inteira e mesmo assim eu não consigo escrever um valor nela.

O Prioridade1 deve ser um IOTag, (não Integer), e com UserBitFields em true, você pode inclusive garantir isso pelo script:

Set oPrio1 = weg_PopupEtiqueta.Popup_Etiqueta.Prioridade1

If ( oPrio1.UserBitFields ) Then    ' se UserBitFields habilitado
    If ( oPrio1.Bit00 ) Then
        ' se Bit00 verdadeiro...
    End If
End If
1 Like

A Prioridade é do tipo IOTag

image

O .Bit00 não pode ser fixo no script pq nem sempre será o Bit00.

Então, Prioridade1 deve ser um Variant e você trata no script com a função TypeName ou VarType.

Ou, se vc sempre for associar um Bitxx ao PrioridadeX, esta pode ser um Boolean e você pode fazer conforme o primeiro script da minha primeira resposta.

Na linha 37
coloca um Msgbox weg_PopupEtiqueta.Popup_Etiqueta.Prioridade1.Value, para ver o que está recebendo do plc, assim vai facilitar a sua logica, e ver se realmente está pegando algo do plc.

1 Like