Comunicação do zelio da Scheneider com o elipse e3

Bom dia!

Preciso de ajuda para fazer a comunicação do zelio da Schneider e o elipse e3, qual protocolo usar ( deve ser modbus, mas qual? ), e como endereçar as entradas e saidas digitais, as entradas e saidas analogicas.
Peço ajuda urgente, pois essa é uma nova aplicação que vamos utilizar em meu serviço, se possivel podem me enviar exemplos de aplicação ?

@atanazio_santos, bom dia.

Para comunicar com os CLPs Zelio é preciso utilizar o driver Modicon Modbus Master (ASC/RTU/TCP) disponível no site da Elipse.

Quanto ao endereçamento, vai depender de como for configurar o equipamento, mas o driver deve ser configurado na "parte de conexão com o PLC (janela de Configuração IOKit) e depois a parametrização dos tags (parâmetros N’s).

No manual que é baixado junto com o driver são detalhadas todas as configuração que devem ser feitas.
Porém no caso da sua pergunta especificamente temos:

N1/B1: Endereço do equipamento escravo (CLP) na rede (Slave Id).
N2/B2: Código da operação. Referencia uma operação adicionada na janela de configurações do Driver.
N3/B3: Parâmetro adicional. Este parâmetro em geral não é usado e pode ser deixado em 0 (zero)
N4/B4: Endereço do registrador, variável ou bit no equipamento ou dispositivo escravo (CLP) em que se deseja ler ou escrever, conforme o mapa de registradores do equipamento (verifique o manual do equipamento)." - retirado deste tópico.

Abraço.

Bom dia fernando!

Obrigado por ter me respondido, mas…

Ainda sobre a comunicação do zelio com o elipse

  • Eu vou comunicar TCP/IP, qual porta devo utilizar? Onde vejo qual porta?
  • Como é o endereçameno do zelio com o elipse ( se possivel me de exemplos de digita leitura e escrita, analogico leitura e escrita )
  • Configuração do driver
  • Como ativar , fazer essa comunicação entre o elipse e o zelio
    Tem algum exemplo para me indicar?

Abraço

@atanazio_santos, bom dia.

Vamos lá:

A porta padrão de comunicação do protocolo é a 502. Mas isto pode variar dependendo da liberação que quiser dar.

Pode ser visto no IOKit (Configuração do Driver) aba Ethernet.

Isto vai depender de como o CLP está sendo programado.

Para um exemplo, precisaria do mapa de memória do equipamento.

Para a configuração do driver, pode-se verificar estes KBs ou este e este video.

Também a configuração dos tags conforme explicado anteriormente

Para ativar a comunicação, pode configurar o driver por Studio e acionar pelo ícone de play (Ativar Comunicação). Sugiro fortemente que verifique o Tutorial do E3 para Desenvolvedores, capítulo Comunicação, disponível aqui.

Caso precise de algum auxílio na configuração de uma variável do CLP no driver, não esqueça de disponibilizar um mapa com os endereços e tipos das variáveis conforme desenvolvido no seu equipamento.

Abraço.

O zelio tem 4 palavras de entrada e 4 palavras de saida

Primeira palavra de entrada ( ex.400016 )
Segunda é 17 ( ex.400017)
Terceira é 18 ( ex.400018 )
Quarta é 19 ( ex.400019 )

Primeira palavra de saida a 20 ( ex. 400020 )
Segunda é 21 ( ex.400021)
Terceira é 22 ( ex.400022 )
Quarta é 23 ( ex.400023 )

Exemplo: eu quero ler bit a bit, eu quero enviar bit a bit, e quero ler analogicos e enviar analogico

Então, como configura, como endereçar

@atanazio_santos,

Sendo assim, todos os endereços são do tipo Holding Register (4x).

Desta forma, caso não tenha modificado às operações padrão que vem no driver, configure os tags da seguinte forma, todos terão os mesmos N1,N2 e N3. O que irá mudar é apenas o N4 (endereço):

Padrão:
N1 = ID Slave
N2 = 1
N3 = 0

N4 = 16

N4 = 17

N4 = 18

N4 = 19

N4 = 20

N4 = 21

N4 = 22

N4 = 23

Ou ainda pode escrever em um bloco de comunicação. Mais detalhes aqui.

Para ler/escrever bit a bit, primeiro deve configurar a Word, conforme explicado acima; habilitar a propriedade UseBitFields do Tag; Acessar o bit no display através da propriedade BITXY (BIT00,01,02 … 15). Ver este KB.

Para mais informações, é essencial que leia o manual do Driver.

Fernando, já fizemos como voce pediu, porém não comunica, dá qualidade de sinal 24

não da pra voce me enviar um arquivo do elipse já configurado

@atanazio_santos,

Façamos o seguinte, me envia o que fez assim como o log do driver. Vou verificar o que pode estar incorreto e lhe retorno.

Obs.: Chegou a verificar os links disponibilizados?

Verificamos os links, mas não conseguimos

Segue o arquivo de log, e as imagens das configuraçoes

02/05/2016 16:05:13.884 (112C) DRIVER Driver name: Driver Modicon Modbus v3.1.29 (IOKitLib v2.0.54)
02/05/2016 16:05:13.885 (112C) DRIVER IOKitLib version 2.0.54 of Feb 22 2016 10:47:34
02/05/2016 16:05:13.885 (112C) DEBUG CModbusHost CREATED
02/05/2016 16:05:13.886 (112C) DRIVER Selected ModbusTCP protocol!
02/05/2016 16:05:13.890 (112C) DRIVER User Types file compiled successfully!
02/05/2016 16:05:13.890 (112C) DRIVER drvStartComm(0,0,0,40016)
02/05/2016 16:05:13.890 (112C) DRIVER Current configuration (76 parameters):
02/05/2016 16:05:13.891 (112C) DRIVER - IO.Ethernet.BackupIP = ‘’
02/05/2016 16:05:13.891 (112C) DRIVER - IO.Ethernet.BackupIP2 = ‘’
02/05/2016 16:05:13.891 (112C) DRIVER - IO.Ethernet.BackupIP3 = ‘’
02/05/2016 16:05:13.891 (112C) DRIVER - IO.Ethernet.ListenIP = ‘’
02/05/2016 16:05:13.891 (112C) DRIVER - IO.Ethernet.MainIP = ‘10.89.72.22’
02/05/2016 16:05:13.891 (112C) DRIVER - IO.Ethernet.MainPort = 502
02/05/2016 16:05:13.892 (112C) DRIVER - IO.Ethernet.PingTimeoutMs = 4000
02/05/2016 16:05:13.892 (112C) DRIVER - IO.Ethernet.PingTries = 1
02/05/2016 16:05:13.892 (112C) DRIVER - IO.Ethernet.Transport = ‘TCP’
02/05/2016 16:05:13.892 (112C) DRIVER - IO.GiveUpTries = 1
02/05/2016 16:05:13.892 (112C) DRIVER - IO.Log.Enable = 1
02/05/2016 16:05:13.892 (112C) DRIVER - IO.Log.Filename = ‘C:\eeLogs\Modbus_%DATE%.log’
02/05/2016 16:05:13.892 (112C) DRIVER - IO.RAS.ATCommand = ‘’
02/05/2016 16:05:13.892 (112C) DRIVER - IO.RecoverEnable = 1
02/05/2016 16:05:13.892 (112C) DRIVER - IO.RecoverPeriodSec = 20
02/05/2016 16:05:13.892 (112C) DRIVER - IO.Serial.Baudrate = 9600
02/05/2016 16:05:13.892 (112C) DRIVER - IO.Serial.DataBits = 8
02/05/2016 16:05:13.893 (112C) DRIVER - IO.Serial.Port = 1
02/05/2016 16:05:13.893 (112C) DRIVER - IO.TAPI.ModemID = 4294967295
02/05/2016 16:05:13.893 (112C) DRIVER - IO.TAPI.PhoneNumber = ‘’
02/05/2016 16:05:13.893 (112C) DRIVER - IO.TimeoutMs = 1000
02/05/2016 16:05:13.893 (112C) DRIVER - IO.Type = ‘Ethernet’
02/05/2016 16:05:13.893 (112C) DRIVER - ModiconModbus.ConfigFile = '[Functions]
Function: 1
Read: 3
Write: 16
Type: word
Size: 2
FrameOrder: 0
ByteOrder: 0
WordOrder: 0
DWordOrder: 0
Function: 2
Read: 3
Write: 16
Type: dword
Size: 4
FrameOrder: 0
ByteOrder: 0
WordOrder: 0
DWordOrder: 0
Function: 3
Read: 3
Write: 16
Type: int16
Size: 2
FrameOrder: 0
ByteOrder: 0
WordOrder: 0
DWordOrder: 0
Function: 4
Read: 3
Write: 16
Type: int32
Size: 4
FrameOrder: 0
ByteOrder: 0
WordOrder: 0
DWordOrder: 0
Function: 5
Read: 3
Write: 16
Type: float
Size: 4
FrameOrder: 0
ByteOrder: 0
WordOrder: 0
DWordOrder: 0
Function: 6
Read: 1
Write: 15
Type: bit
Size: 0
FrameOrder: 0
ByteOrder: 0
WordOrder: 0
DWordOrder: 0
Function: 7
Read: 2
Write: 0
Type: bit
Size: 0
FrameOrder: 0
ByteOrder: 0
WordOrder: 0
DWordOrder: 0
[End]

02/05/2016 16:05:13.893 (112C) DRIVER - ModiconModbus.DefaultSlaveAddress = 1
02/05/2016 16:05:13.893 (112C) DRIVER - ModiconModbus.EnableGenSOERegGrouping = 1
02/05/2016 16:05:13.893 (112C) DRIVER - ModiconModbus.MaxPDUSize = 253
02/05/2016 16:05:13.893 (112C) DRIVER - ModiconModbus.ModbusMode = 2
02/05/2016 16:05:13.893 (112C) DRIVER - ModiconModbus.Olderaddr = 1
02/05/2016 16:05:13.894 (112C) DRIVER - ModiconModbus.UserTypesConfigFile = '// USER DEFINED TYPES SAMPLE CONFIG FILE

// The samples below illustrate how to create user defined structs, using the driver built-in types (note the built-in
// types must be entered with the same keywords used in the Data combobox of the operations).
// The new user types can afterwards be used in the same way as the other built-in types in the Data combobox.

/* Sample types entirely commented by default

struct TYPE1 // TYPE 1 - declares struct with elements with no name, and no timestamp
{
int16;
word;
dword;
int32;
}

// TYPE2 declares named elements, and includes a timestamp of GenTime type. The named elements can then be
// loaded to the user application using E3 Tag Browser.

// NOTE: the timestamp value will not be returned on a block element, but rather returned on the timestamp property
// of the block type tag. The order in which the timestamp appears within the structure is related to the order
// in which this field appears within the data area of the received protocol frame (usually the first field).

struct TYPE2
{
timestamp = GenTime; // this time field will be returned in the block’s timestamp field
GenTime timeField; // this time field will be returned in the block’s first element
dword dwordField;
}

struct TYPE3 // this type has a timestamp of type UTC32 and some named elements
{
DefaultAddress = 0x101;
timestamp = UTC32;
float Va;
float Vb;
float Vc;
float Ia;
float Ib;
float Ic;
}

*/’
02/05/2016 16:05:13.894 (112C) DRIVER - ModiconModbus.WaitSilenceOnError = 1
02/05/2016 16:05:13.894 (112C) DRIVER - 46 parameters with value = 0 were omitted
02/05/2016 16:05:13.897 (10A8) IOKIT INITIALIZING…
02/05/2016 16:05:13.898 (10A8) SOCKET Winsock initialized: version=2.2, highVersion=2.2
02/05/2016 16:05:13.898 (10A8) IOKIT INITIALIZED!
02/05/2016 16:05:13.898 (1390) TAG Tag(1.1.0.0[16]).Validate = SUCCESS (type=10;flags=9)
02/05/2016 16:05:13.899 (1390) SUPERBLOCK Tag(1.1.0.0[16]).Normalize = ERROR (80070057)
02/05/2016 16:05:13.900 (112C) SUPERBLOCK Tag(1.1.0.0[16]).Normalize = ERROR (80070057)
02/05/2016 16:05:13.900 (10A8) IOKIT Request handler enabled
02/05/2016 16:05:13.900 (10A8) IOKIT CONNECTING…
02/05/2016 16:05:13.900 (10A8) SOCKET connecting socket to ‘10.89.72.22’ on port 502…
02/05/2016 16:05:13.926 (10A8) SOCKET socket connected to ‘10.89.72.22’ on port 502 (local port 49388)!
02/05/2016 16:05:13.926 (10A8) IOKIT CONNECTED!
02/05/2016 16:05:13.927 (112C) DRIVER ERROR: invalid register address = 0 (address cannot be zero when using ‘elements addressed from 1’)!
02/05/2016 16:05:13.927 (112C) TAG <== (0.027) Tag(1.1.0.0[16]).ReadBlock = ERROR (hr=80070057)
02/05/2016 16:05:14.927 (112C) SUPERBLOCK Tag(1.1.0.0[16]).Normalize = ERROR (80070057)
02/05/2016 16:05:14.927 (112C) DRIVER ERROR: invalid register address = 0 (address cannot be zero when using ‘elements addressed from 1’)!
02/05/2016 16:05:14.927 (112C) TAG <== (0.000) Tag(1.1.0.0[16]).ReadBlock = ERROR (hr=80070057)
02/05/2016 16:05:15.928 (112C) SUPERBLOCK Tag(1.1.0.0[16]).Normalize = ERROR (80070057)
02/05/2016 16:05:15.928 (112C) DRIVER ERROR: invalid register address = 0 (address cannot be zero when using ‘elements addressed from 1’)!
02/05/2016 16:05:15.928 (112C) TAG <== (0.000) Tag(1.1.0.0[16]).ReadBlock = ERROR (hr=80070057)
02/05/2016 16:05:16.928 (112C) SUPERBLOCK Tag(1.1.0.0[16]).Normalize = ERROR (80070057)
02/05/2016 16:05:16.928 (112C) DRIVER ERROR: invalid register address = 0 (address cannot be zero when using ‘elements addressed from 1’)!
02/05/2016 16:05:16.928 (112C) TAG <== (0.000) Tag(1.1.0.0[16]).ReadBlock = ERROR (hr=80070057)
02/05/2016 16:05:17.928 (112C) SUPERBLOCK Tag(1.1.0.0[16]).Normalize = ERROR (80070057)
02/05/2016 16:05:17.928 (112C) DRIVER ERROR: invalid register address = 0 (address cannot be zero when using ‘elements addressed from 1’)!
02/05/2016 16:05:17.928 (112C) TAG <== (0.000) Tag(1.1.0.0[16]).ReadBlock = ERROR (hr=80070057)
02/05/2016 16:05:18.928 (112C) SUPERBLOCK Tag(1.1.0.0[16]).Normalize = ERROR (80070057)
02/05/2016 16:05:18.928 (112C) DRIVER ERROR: invalid register address = 0 (address cannot be zero when using ‘elements addressed from 1’)!
02/05/2016 16:05:18.928 (112C) TAG <== (0.000) Tag(1.1.0.0[16]).ReadBlock = ERROR (hr=80070057)
02/05/2016 16:05:19.931 (112C) SUPERBLOCK Tag(1.1.0.0[16]).Normalize = ERROR (80070057)
02/05/2016 16:05:19.931 (112C) DRIVER ERROR: invalid register address = 0 (address cannot be zero when using ‘elements addressed from 1’)!
02/05/2016 16:05:19.931 (112C) TAG <== (0.000) Tag(1.1.0.0[16]).ReadBlock = ERROR (hr=80070057)
02/05/2016 16:05:20.931 (112C) SUPERBLOCK Tag(1.1.0.0[16]).Normalize = ERROR (80070057)
02/05/2016 16:05:20.931 (112C) DRIVER ERROR: invalid register address = 0 (address cannot be zero when using ‘elements addressed from 1’)!
02/05/2016 16:05:20.931 (112C) TAG <== (0.000) Tag(1.1.0.0[16]).ReadBlock = ERROR (hr=80070057)
02/05/2016 16:05:21.886 (112C) DRIVER drvStopComm(0,0,0,40016)
02/05/2016 16:05:21.886 (112C) IOKIT Stopping physical layer thread…
02/05/2016 16:05:21.887 (10A8) SOCKET socket closed
02/05/2016 16:05:21.887 (10A8) IOKIT TERMINATING…
02/05/2016 16:05:21.888 (10A8) IOKIT TERMINATED! (0 bytes sent, 0 bytes received)
02/05/2016 16:05:21.888 (10A8) IOKIT Request handler disabled
02/05/2016 16:05:21.888 (112C) IOKIT Waiting for termination of physical layer thread…
02/05/2016 16:05:21.888 (112C) IOKIT Physical layer thread stopped!
02/05/2016 16:05:21.888 (112C) DEBUG CModbusHost DELETED



@atanazio_santos, obrigado pelo envio.

Conforme explicado acima, o N4 do tag deve ser configurado a partir de 16. Veja:

Para não se confundir, apague o Bloco de Comunicação e configure cada variável com um Tag de Comunicação.

O N4 com o valor 40016 pode ser zerado. O parâmetro que deve ser configurado é o N4 do TAG, ok?

Por favor, verificar.

Bom dia Fernando, eu entendi como voce colocou a explicação, porem como faço para ler apenas um bit de uma palavra, por exemplo, status de uma bomba, como fica no tag,

Ou então como enviar um bit para partir uma bomba
Como ler apenas um byte como analogica de leitura de pressão
Ou então, como enviar um byte para set point de pressão, como configur nos tags

Desculpe-me pelas perguntas, porém sou novato com o elipse, e é a primeira vez que utilizamos o zelio

Ps. isso tudo da pra fazer no modo demo, sem chave, OK? ou não?

@atanazio_santos, bom dia.

Sobre estas últimas, sugiro que verifique o Tutorial do E3 para Desenvolvedores no capítulo Comunicação (novamente). Pelo que entendi, você não está sabendo como enxergar os dados em Runtime, certo?

Sobre o PS, as limitações do software na versão DEMO estão explicitadas aqui.

Sugiro que verifique, sempre que possível, o canal kb.elipse.com.br, pois a maioria das dúvidas já estão explicadas lá, posto que o KB é formulado a partir das dúvidas de clientes.

Ainda sobre suas dúvidas, veja:

Artigo: KB-30656: Lendo variável Modbus 40100. - Pode ser um bom exemplo para os seus endereços

Artigo: Trabalhando com bits de um Tag de Comunicação. - Para trabalhar com bits de palavras

Documento: Tutorial do E3 para Desenvolvedores - Capítulos 7 (Associações) e 8 (Comunicação)

Vídeo: Escrevendo em um tag de comunicação - Exemplo excelente para o que precisa fazer.

Por último, tenta entender primeiro como o CLP funciona, ou seja, como as tags são endereçadas, quais os tipos, o offset, etc. Depois tenta configurar o driver. Com esses dados em mãos fica mais fácil configurar o driver. Também é importante que verifique os links passados. Vai melhorar sua base em relação à configuração do driver, ok?

Abraço.

Boa tarde Fernando!

Nós conseguimos comunicar e ler as tags com a sua ajuda, obrigado!

Ps. Voce tem algum telefone onde podemos contacta-lo diretamente ?

Se for o caso, pode me mandar em meu email

Boa tarde!

Obrigado pelo retorno!

Meu email é: fernando@elipse.com.br

Abraço.

Por favor, dá pra abrir as tags do elipse em uma planilha excel?
Pois exportamos como csv, mas ficou toda bagunçada

Como csv abre corretamente, estranho aparecer “bagunçado”…

O que gostaria de mostrar no Excel? Tenta copiar no csv o que precisa e depois cola no Excel. Já ajudaria?