Gateway para IEC 104

Boa tarde,

Na minha aplicação possuo 5 drivers Modbus master e 5 drivers DNP3 master. Preciso replicar todos esses drivers para um gateway IEC104.

Existe uma forma fácil de fazer? Vi que da para fazer um script no master para passar os valores para o slave, mas dessa forma será compatível com o IEC104?

Boa tarde @Eng_Gabriel

Realmente, criar no Slave 104 os respectivos pontos dos Masters ModBus é consideravelmente trabalhoso.
Uma alternativa seria criar um script de varredura, utilizando função recursiva para encontrar cada tag declarado nos drivers Master, e criar no driver Slave o seu respectivo tag, associando o Value de ambos. É complexa, todavia, uma vez que o script fora devolvido, pode ser reaproveitado em outras aplicações semelhantes.

A outra alternativa é a manual, adicionando a quantidade de tags que desejasse enviar pelo Slave 104, acessar cada uma delas e associar o Value da tag no Slave com sua respectiva fonte do Master. É fácil, porém bastante trabalhosa.

Caso necessite de um exemplo, pode me enviar um email(manara@elipse.com.br) solicitando-o.

KB relacionado: https://kb.elipse.com.br/elipse-gateway/

Att,
Manara.

Boa tarde,

Acabei fazendo através de script mesmo, utilizando a mesma estrutura e nomes de tags no slave. Assim consigo ler e escrever do slave/master as tags.
Para que a tag seja lida pelo evento OnTagRead, a propriedade EnableDriverEvent da tag deve estar em TRUE. Se caso não queira ler alguma tag, basta deixar a propriedade EnableDriverEvent da tag em FALSE.
Segue exemplo do script:

Sub CLP01_OnTagRead(Tag)

'Variáveis internas
Dim TagName
'Caminho do tag no slave, pega o caminho do mestre e troca para o caminho do slave
TagName = Replace(Tag.PathName,“CLP01”,“IEC104.CLP01”)
'Pega a referência do tag slave
Set TagSlave = Application.GetObject(TagName)
'Escreve o valor da tag na tag slave
TagSlave.WriteEx Tag.Value

End Sub

No meu caso eram mais de um driver master mandando para o driver slave, então dentro do slave eu criei uma pasta para cada driver master, com o nome igual ao do driver do respectivo master:

image

O mesmo pode ser usado para receber valores do driver Slave, neste caso habilita o EnableDriverEvent apenas nas tags de interesse. Exemplo do script do slave:

Sub IEC104_OnTagRead(Tag)

'Variáveis internas
Dim TagName
'Caminho do tag no mestre, pega o caminho do slave e troca para o caminho do mestre
TagName = Replace(Tag.PathName,“IEC104.”,"")
'Pega a referência do tag mestre
Set TagMestre = Application.GetObject(TagName)
'Escreve o valor da tag na tag mestre
TagMestre.WriteEx Tag.Value

End Sub