How to configure the Elipse as an Modbus Server

It’s possible to configure the Elipse as an Modbus Server?

I was asked to build an application that will read through modbus the data send by the Elipse server.

To test I downloaded the demo version and the modbus simulator, I managed in the E3 server to read the data from the simulator, but I didn’t see any option to connect to the E3 server through modbus.

The only server I can see is an OPC server,
Can someone help me?

Yes, @rgomes , it’s possible. This communication is established through an I/O Driver, which is a DLL file provided by Elipse. Please refer to the E3 User’s Manual for further details.

You can download the I/O Drivers on our website: http://www.elipse.com.br/eng/download_drivers.aspx

@pgustavo can you be a little more explicit in the section of the manual is the part of how to configure Elipse as a modbus server?

Thanks

In the Chapter 4 (Drivers), Subchapter 4.1 (I/O Driver), you can find details about how to insert an I/O Driver in your application.

Regarding specifically to the Modbus Driver settings, please refer to the Modbus Driver’s Manual that you can find along with the Driver’s ZIP file.

@pgustavo ok, I’m able to read data from a Modbus device simulator.

How do I read these values from E3 with modbus now?

I did not understand your question. What exactly are you trying to do now?

@pgustavo vou passar para portugues :stuck_out_tongue:

O que eu necessito é colocar o Elipse E3 a ler valores de um dispositivo neste caso o simulador modbus da Elipse e consegui, não sei configurar alarmes mas ainda não pesquisei (ou seja se o valor do registo 1000 passar os 100 lançar um alarme)

Depois o que necessito de saber é:

é possivel ir ler esses valores por uma aplicação externa ao Elipse E3 neste caso por modbus, por OPC eu consigo.

Se for possivel como configuro(licenças, configurar) o servidor Modbus?

Pelo o que eu entendi, você quer ler os tags do E3 por outro software que é Mestre Modbus e não é Cliente OPC. Me corrija se eu estiver enganado.

Nesse caso você pode utilizar o Driver Modbus Slave.

@pgustavo o mestre modbus será sempre o E3, mas sim quero ler as tags através de modbus e não OPC

O que eu quero dizer é que o E3 será Mestre e Escravo. Mestre para ler as variáveis de campo e Escravo para servir as variáveis para o outro Mestre.

@pgustavo ok entendi.

É possivel indicar-me onde posso ler documentação para configurar o seguinte cenário:

O E3 está a ler um registo modbus que representa um nível de um dispositivo e varia entre 0 e 100.
queria que o E3 le-se o registo e colocasse outro registo (uma coil) que está aser lido a 1 caso o nivel fosse > 50

Você pode fazer isso de várias maneiras. A mais simples é criar uma associação do tipo digital na propriedade ‘Value’ do tag que você quer escrever, usando como fonte uma expressão que compare o valor do tag que você está lendo com o valor 50, por exemplo:

Assim, quando o valor do Tag1 for maior que 50, será escrito o valor 1 no Tag2.

Consulte o Manual do Usuário do E3 para maiores informações sobre Associações.

@pgustavo fiz o que voce disse, mas não estou conseguindo por a funcionar,
é preciso activar mais algum parametro ou activar alguma configuração?

Obrigado

Você está usando tags de comunicação? A comunicação com os tags está funcionando?

@pgustavo

ok então o que eu fiz foi o seguinte.
1º) No Organizer Drivers e OPC coloquei a dll do modbus para ler dados do Elipse Modbus Simulador 1.00.013
coloquei o simulador a correr em 127.0.0.1 no porto 503 e configurei o driver com modbus RTU e a ethernet para localhost porto 503.

2º) criei uma tag de comunicação (tag4Sim) para ler um registo com a seguinte configuração (P1=1, P2=1 e P4 =1)
alterei os valores no simulador e consigo ler o valor a alterar.

3º) Inseri outro driver de comunicação desta vez o modbus slave, e criei uma tag de comunicação(tag2read) com a seguinte configuração (P1=1, P2=1 e P4 =1) com um software externo o modbuspoll configurei-o com o slave id 1 para ler os 10 primeiros registos do coils funcionou tudo corretamente (fui alterando os valores no E3).

4º) Na tag2read fui a propriedades a aba de associações e na conexão coloquei conexão digital e em fonte Driver1.tag4Sim.Value > 50 com valor 1 ligado e 0 desligado, altero os valores no simulador e não funciona (pelo menos no E3 não vejo o registo alterar o valor)

Tem razão @rgomes,

O problema é que os valores configurados na associação digital são enviados como texto (“0” e “1”) para o driver. Nesse caso a escrita não irá funcionar mesmo, a não ser que o tag do driver suporte escrita de strings ou conversão de texto para número, que não é o caso.

Uma alternativa seria fazer a associação em um Tag Interno e depois passar para o Tag de Comunicação usando alguma função de conversão, por exemplo:

Ou então fazer por script. Por exemplo:

Sub Tag1_OnRead()
   if Value > 50 then
       Application.GetObject("Driver2.Tag2").Value = 1
   else
       Application.GetObject("Driver2.Tag2").Value = 0
   end if
End Sub

@pgustavo
o script funcionou, muito obrigado pela ajuda e pela paciência :slight_smile:

1 Like