Driver Siemens M-PROT

Elipse Software

Nome do Arquivo | MPROT.DLL
Fabricante | Siemens, Vipa
Equipamentos | Modelos de PLCs S7-200, S7-300, S7-400 e S7-1200 da Siemens; Speed7 da Vipa e demais equipamentos compatíveis com algum protocolo do Driver
Protocolo | PPI e MPI (Serial); MPI encapsulado em Ethernet e ISO sobre TCP (RFC1006 ou S7-TCP/IP em interface Ethernet)
Versão | 3.1.2
Última Atualização | 12/05/2015
Plataforma | Win32
Dependências | IOKit v2.00
Leitura com Superblocos | Sim
Nível | 0

Introdução

O Driver Siemens multiprotocolo (M-Prot) comunica com os PLCs S7-200, S7-300, S7-400 e S7-1200 da Siemens e Speed7 da VIPA usando os protocolos Siemens PPI, MPI, ISOTCP e MPI encapsulados em Ethernet (IBHLink).

O protocolo PPI deve ser usado somente para a linha S7-200 usando o cabo conversor RS232-PPI/MPI fornecido pela Siemens.

O protocolo MPI pode ser usado para as linhas S7-300 e S7-400 através de cabo conversor RS232-PPI/MPI fornecido pela Siemens, ou também para a linha Speed7 da VIPA na porta MPI usando um cabo RS232 comum.

O protocolo ISOTCP (que também pode ser chamado como ISO sobre TCP, RFC1006 ou S7-TCP/IP em diversos materiais dos fabricantes de hardware) pode ser usado para os modelos S7-300 ou S7-400 da Siemens através do uso de um cartão Ethernet CP-3XX, CP-433 ou CP-443; para o modelo S7-1200, e também para a linha Speed7 da VIPA, diretamente na porta Ethernet da CPU. Para o modelo S7-200, há uma variação especial do protocolo ISOTCP para ser usado em conjunto com a interface CP-243. Este protocolo é denominado ISOTCP243.

Para os PLCs que não possuem porta Ethernet, uma alternativa pode ser o uso de um conversor Ethernet/MPI IBHLink, fornecido pelas empresas IBH Softec ou Hilscher, que atua no nível FDL. A vantagem deste conversor é que a velocidade nominal é mais alta, chegando a 187 kbps na rede MPI, ao passo que pelo conversor serial é de 38,4 kbps. O uso deste conversor é uma alternativa ao uso das placas CP5611 ou similares.

Outra alternativa semelhante é o cabo conversor NETLink PRO Eth da Softing, que converte de ISOTCP para MPI.

Este Driver não suporta o uso de adaptadores Siemens PPI/MPI por interface USB.

Este Driver não suporta o uso de interfaces CP5611 ou similares para o acesso à rede MPI. Para comunicar com estas placas deve ser usado o driver S7Functions ou ainda o SIMATIC.NET da Siemens, através do servidor OPC já incluso.

NOTA: M-Prot é um nome criado pela Elipse Software com a finalidade de especificar um Driver que suporta múltiplos protocolos. Não existe relação alguma com nomes de equipamentos, protocolos ou padrões definidos pelos fabricantes supracitados.
Esta seção da documentação ajudou você a configurar o Driver?
Sim Não
Comentários (opcional):
Restam 150 caracteres.
Contato (opcional):


Parâmetros de Configuração do Driver

 Topo Anterior Próximo

Os parâmetros [P] de configuração do Driver não são utilizados. Todas as configurações são executadas na janela de configurações do Driver, mostrada na figura a seguir.

Aba MProt

As opções disponíveis para o grupo General estão descritas na tabela a seguir.

Opções disponíveis no grupo General

Opção | Descrição
Default Slave Address | Pode ser utilizado como o endereço padrão para qualquer Tag, basta deixar o parâmetro N1 em 0 (zero) para que seja substituído pelo endereço padrão.
Network | Seleção do protocolo: PPI, MPI, ISOTCP, ISOTCP para CPU 243 ou MPI para conversor IBHLink. Os grupos PPI, MPI ou ISOTCP/ISOTCP243 nesta aba são habilitados ou desabilitados conforme a seleção do protocolo.
Local Address | Endereço do Driver na rede. Pode ser selecionado arbitrariamente.

As opções disponíveis para o grupo PPI estão descritas na tabela a seguir.

Grupo PPI

Opções disponíveis no grupo PPI

Opção | Descrição
PPI Multi Master | Informa ao Driver que existem outros Mestres na rede.
Application Timeout (ms) | Tempo máximo de comunicação para cada Tag, em milissegundos. Disponível apenas quando é multimestre.
Operation delay (ms) | Tempo de parada para o intervalo entre operações de comunicação, em milissegundos. Selecione a opção only for write para indicar a aplicação do intervalo apenas para operações de escrita (veja a nota a seguir).

NOTA: A opção Operation delay adiciona um tempo mínimo de espera que deve haver entre o fim de uma operação de leitura ou escrita e o início de outra operação. Utilize algum valor diferente de 0 (zero) nesta configuração apenas se estiver enfrentando falhas de comunicação ocasionadas pela inércia de processamento do PLC. As operações de escrita são as mais prejudicadas, pois normalmente são aleatórias. Por isto existe a opção only for write. Se ela não estiver selecionada, a espera se aplica à operações de leitura e de escrita. Se estiver selecionada, se aplica apenas às operações de escrita (recomendado). Note que o acréscimo de um tempo de espera pode diminuir o desempenho da aplicação.

As opções disponíveis para o grupo MPI estão descritas na tabela a seguir.

Grupo MPI

Opções disponíveis no grupo MPI

Opção | Descrição
Highest Station Address | Indica o maior endereço disponível na rede, para que nos modos PPI e MPI o Driver encontre outros possíveis Mestres na rede. Devem ser inseridas apenas as opções 15, 31 ou 63.
Profibus Speed | Velocidade nominal da rede Profibus.

As opções disponíveis para o grupo ISOTCP / ISOTCP243 estão descritas na tabela a seguir.

Grupo ISOTCP / ISOTCP243

Grupo ISOTCP / ISOTCP243

Opções disponíveis no grupo ISOTCP / ISOTCP243

Opção | Descrição
Extra Connections | Número de conexões TCP adicionais que podem ser criadas para melhorar o desempenho da comunicação.
Source Ref. (hex) | Número formado por um Word em hexadecimal que identifica a referência local (source reference) no protocolo. Somente é liberada quando a opção Use default Source Ref estiver desmarcada.
Source TSAP (hex) | Número formado por um Word em hexadecimal que identifica o TSAP local no protocolo. Somente é liberada quando a opção Use default TSAPs estiver desmarcada.
Connection type | Tipo da conexão: PG, OP ou PC. Deve ser selecionada de acordo com o que foi configurado na CPU.
Rack | Número do rack da CPU de destino.
Slot | Número do slot da CPU de destino.
Enable CPU backup | Habilita a entrada de valores de rack e slot da CPU de backup, para uso em sistemas com redundância que sejam de valores diferentes da CPU principal.

Para que a comunicação deste Driver funcione com o modelo de PLC Siemens S7-1200, é necessário selecionar a opção ISOTCP, desmarcar a opção Use default TSAPs, configurar a propriedade Source TSAP (hex) para o valor "0100" e definir a opção Connection type como "PG", Rack com o valor 0 (zero) e Slot com o valor 1 (um).

NOTAS:

· Ao selecionar os protocolos ISOTCP ou ISOTCP243, todos os Tags que estiverem no objeto Driver devem ter o parâmetro N1 (ou B1) em 0 (zero) e o parâmetro Default Slave Address também em 0 (zero).
· Os parâmetros Source Ref e Source TSAP devem ser considerados apenas em casos muito particulares. Devido à execuções bem sucedidas em uma enorme gama de topologias, recomenda-se que se mantenha a opção Use default Source Ref sempre selecionada e o valor de Source TSAP sempre em "0100".
· Quando a opção Use Default TSAPs está selecionada em conjunto com o protocolo ISOTCP, o valor de Source TSAP é "0100" e o valor de Destination TSAP utilizado é "0202".
· TSAP vem do inglês Transport Service Access Point, e é uma terminologia utilizada no protocolo ISO.
· Quando se utiliza adaptadores seriais PC - PPI/MPI, tem sido bastante usual a necessidade de configurar o handshaking na aba Serial da janela de configurações do Driver. Apenas o controle de RTS deve ser configurado em ON. Havendo insucesso de comunicação nos testes iniciais com este Driver, convém experimentar esta mudança (RTS Control configurado como ON) e refazer o teste.


Parâmetros de Configuração de Strings

Esta aba é util caso haja necessidade de declarar Strings com tamanho máximo definido, individualmente ou genericamente.

Aba S7 Strings

Aba S7 Strings

As opções disponíveis na aba S7 Strings estão descritas na tabela a seguir.

Opções disponíveis na aba S7 Strings

Opção

Descrição

Keep support for legacy strings

Mantém o suporte para Strings antigas, anteriores à versão 2.10. A opção selecionada mantém o formato antigo de String implementado em versões anteriores, evitando transtornos em uma migração de versão do Driver.

Recomenda-se selecionar esta opção apenas em caso de migração de um projeto cuja versão do Driver seja 2.09 ou anterior. Caso o projeto utilize Strings após uma migração de versão ter ocorrido, os Tags de tipo String retornam erros de leitura do PLC.

O formato de Strings legado possui uma reserva de 32 bytes de espaço a partir do offset configurado.

Caso esteja trabalhando com um projeto novo, deixe esta opção desmarcada.

Standard maximum string length

Tamanho máximo padrão das Strings. Preencha um valor padrão configurado na memória do PLC para Strings sem tamanho máximo declarado. Por exemplo, nos PLCs S7-200 este valor é igual a "254". Isto significa que os pedidos por Strings com tamanhos não declarados contêm e indicam uma extensão fixa de 254 caracteres.

Listagem de tamanhos máximos de Strings

Esta aba também mostra uma lista selecionável com Strings declaradas com tamanhos já determinados. A lista aparece em branco caso não existam Strings configuradas. As Strings podem ser declaradas na memória do PLC de duas formas:

· Sem especificar o tamanho máximo na declaração. Exemplo:

STRING var;

A String é alocada automaticamente com a extensão máxima padrão do PLC.

· Especificando o tamanho máximo na declaração. Exemplo:

STRING var[50];

No exemplo anterior, a String é alocada com tamanho máximo "50". Devido a esta segunda forma é que a listagem de tamanho de Strings se mostra importante.

Para determinar o tamanho de uma nova String declarada, é preciso preencher corretamente todos os campos, conforme descrito na tabela a seguir.

Opções disponíveis para a configuração do tamanho máximo de Strings

Opção | descrição
Device | Endereço do PLC. Preencha com o mesmo valor do parâmetro N1/B1 do Tag (veja o tópico Endereçamento Padrão).
DB Number | Informe o valor do número do DB onde a String está localizada.
Offset | Informe o valor do offset no DB onde a String está localizada.
Length | Preencha com o valor máximo de tamanho da String, conforme declarado na programação do PLC.

Caso já exista alguma String declarada na lista com mesmo valor de Device, DB Number e Offset, esta é automaticamente apontada na tabela e seus valores são carregados em todos os campos de edição.

Três opções destinam-se à manipulação dos dados das Strings da lista:

· Add: Adiciona novos parâmetros
· Update: Altera parâmetros já listados
· Remove: Remove totalmente uma linha de parâmetros

Clique em OK para confirmar todas as configurações listadas e fechar a janela. Clique em Remove All para remover todos os dados da lista.

NOTA: Se for escolhido declarar Tags com parâmetros de Endereçamento Simbólico, não há necessidade de preencher a lista com declarações de Strings. O tamanho pode ser especificado no próprio parâmetro de símbolo disponível no Tag.


Referência de Tags

Esta seção contém informações de configuração de Tags por Endereçamento Simbólico e por Endereçamento Padrão (parâmetros N/B). Também contém referências aos Tags da Interface em Conexões ISOTCP Extras.


Configuração por Parâmetros Sintáticos

Utilize a sintaxe a seguir para cada campo presente no E3 ou Elipse Power:

· Dispositivo: Insira o endereço do equipamento na rede. Se for igual a 0 (zero) e protocolo diferente de ISOTCP ou ISOTCP243, é substituído pelo Default Slave Address. Se o protocolo for ISOTCP ou ISOTCP243, este valor deve ser deixado em 0 (zero). O campo Dispositivo também pode ficar vazio, desde que seja inserido no campo Item antes do símbolo de dois pontos.
· Item: Este campo deve obedecer alguma das sintaxes a seguir.

Use a sintaxe geral a seguir, se a área não for igual a DB. Valores entre colchetes são opcionais:

<[Dispositivo:]><Área><[Tipo]><Endereço>[.Bit]

Onde:

· Dispositivo: Endereço do PLC conforme exposto no item Dispositivo, caso não tenha sido informado naquele campo.
· Área: Área de dados dentro do PLC. As seguintes opções podem ser utilizadas:
· S
· SM
· AI (Analog Input)
· AQ (Analog Output)
· C (Counter)
· T (Timer)
· I (Digital Input)
· Q (Digital Output)
· M (Memory)
· HC (High Speed Counter)
· Tipo: Tipo de dado a ser lido. A tabela a seguir mostra os possíveis símbolos para os tipos.

Opções disponíveis para tipos

Tipo | Significado
X | Usado para extrair um bit de um byte
B | Byte
W | Word
D | DWord
F | Float
S | String
S5T | S5Time

· Endereço: Endereço numérico a ser lido.
· Bit: Opcional que informa o bit de uma palavra a ser lido ou escrito (entre 0 e 31).

Exemplo:

(PLC 4, bit 1 da memória do endereço 10)
Device: Vazio - Item 4:M10.1

Se a área for igual a DB (também conhecida como V), use a sintaxe a seguir. Valores entre colchetes são opcionais:

<[Dispositivo:]>DB<NumeroDB>:<Tipo><Endereço><[.Bit]>

· Dispositivo: Refere-se ao mesmo item opcional da sintaxe geral.
· NumeroDB: Coloque o número do DB. Caso a memória contenha um bloco DB único ou não especificado, preencha com o valor 1 (um).
· Endereço: Endereço numérico (offset) a ser lido.
· Bit: Valor opcional que informa o bit do tipo a ser lido ou escrito (entre 0 e 31).

Opções disponíveis para tipos Área DB

Tipo | Significado
DBX | Usado para extrair um bit de um byte em um DB
DBB | Usado para ler ou escrever um byte em um DB
DBW ou DW | Usado para ler ou escrever um Word em um DB
DBD ou DD | Usado para ler ou escrever um Double Word em um DB
DBF ou DF | Usado para ler ou escrever um Floating Point (real de 32 bits) em um DB
DBS ou DS | Usado para acessar uma String em um DB
DBS5T | Usado para acessar um timer do tipo S5Time em um DB

Exemplos:

(PLC 2, Word começando no endereço 20 do DB1)
Device: 2 - Item: DB1:DW20
(Mesmo do anterior, porém DMuevice foi informado no campo Item)
Device: Vazio - Item: 2:DB1:DW20
(PLC 7, DB 5, bit 2 do byte 7)
Device: Vazio - Item: 7:DB5:DBX7.2

A sintaxe para tipos String em área DB é a seguinte:

<[Dispositivo:]>DB<NumeroDB>:DBS<Endereço><[Tamanho máximo]>

Onde:

· Device, NumeroDB e Endereço: Referem-se aos mesmos itens da sintaxe geral.
· Tamanho máximo: Opcional que informa o tamanho máximo declarado na String. Se não é informado, é considerado o tamanho máximo padrão da String como foi preenchido na janela de configuração de Strings.

Exemplos de sintaxe para Strings:

(PLC 2, String começando no endereço 16 do DB17,
usando o tamanho padrão máximo do PLC)
Device: 2 - Item: DB17:DBS16
(mesmo do anterior, porém Device foi informado no campo Item
e com tamanho máximo alocado de 25 caracteres)
Device: Vazio - Item: 2:DB17:DBS16[25]
(PLC 4, String começando no endereço 100 do DB10,
com tamanho máximo alocado de 50 caracteres)
Device: Vazio - Item 4:DB10:DS100[50]


Configuração por Parâmetros Numéricos (N/B)

Use a sintaxe padrão descrita na tabela a seguir para todos os Tags e Blocos.

Sintaxe padrão para Tags e Blocos

Parâmetro | Descrição
N1/B1 | Endereço do PLC. Se for igual a 0 (zero) e protocolo diferente de ISOTCP ou ISOTCP243, é substituído pelo Default Slave Address. Se for protocolo ISOTCP ou ISOTCP243, este valor deve ser deixado em 0 (zero).
N2/B2 | Tipo de dado e Área (veja as tabelas a seguir). O valor deve ser composto pelo tipo de dado multiplicado por 100 mais a área (a fórmula é N2/B2 = TipoData × 100 + Área).
N3/B3 | Se a área selecionada for V (DB), preencha com o número do bloco DB. Caso contrário, deixe em 0 (zero). Caso a memória contenha um bloco DB único ou não especificado, preencha com o valor 1 (um).
N4/B4 | Endereço na área ou offset do bloco DB. Para usar tipos de dados que ocupam mais de um byte, devem ser colocados endereços múltiplos de dois para tipos de dois bytes (16 bits com e sem sinal) e múltiplos de quatro para tipos de quatro bytes (32 bits com e sem sinal e ponto flutuante de 32 bits).

Opções disponíveis para Tipos de dados

Tipo | Significado
0 | Padrão da Área
1 | BOOL (Booleano)
2 | BYTE (oito bits sem sinal)
3 | WORD (16 bits sem sinal)
4 | INT (16 bits com sinal)
5 | DWORD (32 bits com sinal)
6 | DINT (32 bits com sinal)
7 | REAL (32 bits de ponto flutuante - IEEE 754)
8 | STRING (ver nota a seguir)
12 | S5TIME (tempo em segundos, 32 bits de ponto flutuante - IEEE 754, ver nota a seguir)

Opções disponíveis para Áreas

Área | Significado
0 | S
1 | SM
2 | AI (Analog Input)
3 | AQ (Analog Output)
4 | C (Counter)
5 | T (Timer)
6 | I (Digital Input)
7 | Q (Digital Output)
8 | M (Memory)
9 | V (DB)
10 | HC (High Speed Counter)

NOTAS:

· Para dados de tipo S5Time, o valor a ser preenchido é sempre em segundos, com ponto flutuante de 32 bits. A gama de valores diferentes de zero está entre 0,01 e 9990,0 segundos. A base de tempo é preenchida ou interpretada automaticamente.
· No protocolo PPI há uma limitação no Bloco de Comunicação para dados em bytes. Para leitura, o máximo permitido são 224 bytes, e para escrita são 218 bytes. Isto significa, respectivamente, que para dados de tipo Word (16 bits), o Bloco não pode ultrapassar 112 e 109 Elementos. Para dados de tipo DWord (32 bits), o Bloco não pode ultrapassar 56 e 54 Elementos, e assim por diante.
· Caso desconheça a definição de Rack e Slot para endereçamento dos Tags em protocolo ISOTCP, consulte o artigo KB-39019: Configurações de Rack e Slot no Elipse Knowledgebase.


Tags da Interface em Conexões ISOTCP Extras

Havendo optado pelo uso de conexões ISOTCP extras com o parâmetro Extra Connections na janela de configurações do Driver, estas conexões podem ser controladas e monitoradas por três Tags específicos de Interface: Physical Layer Status, IPSelect e IPSwitch.

NOTA: Estes Tags não podem ser utilizados quando o parâmetro Extra Connections for igual a 0 (zero). Neste caso, utiliza-se os Tags do IOKit correspondentes, de mesmo nome, cujo uso pode ser consultado no Manual do Usuário do IOKit.


Physical Layer Status (MProt)

Somente Leitura

Configuração por parâmetros numéricos

Parâmetro | Valor
N1 | -2
N2 | 0 (zero)
N3 | 0 (zero)
N4 | 2

Configuração por parâmetros sintáticos

Parâmetro | Valor
Item | MProt.IO.PhysicalLayerStatus

Este Tag indica o estado da conexão na camada física. Seus possíveis valores são os seguintes:

· 0: Camada física desconectada
· 1: Camada física conectada


IPSelect (MProt)

Leitura e Escrita

Configuração por parâmetros numéricos

Parâmetro | Valor
N1 | -2
N2 | 0 (zero)
N3 | 4
N4 | 0

Configuração por parâmetros sintáticos

Parâmetro | Valor
Item | MProt.IO.Ethernet.IPSelect

Indica o IP ativo. Seus possíveis valores são os seguintes:

· 0: O IP principal está selecionado (ativo)
· 1: O IP alternativo (backup) está selecionado (ativo)

Se a interface Ethernet estiver conectada, o Tag indica qual dos dois IPs configurados está sendo usado. Se a interface for desconectada, o Tag indica qual IP é usado primeiro na próxima tentativa de conexão.

Durante o processo de conexão, se o IP ativo não estiver disponível, o IOKit tenta conectar com o outro IP. Se a conexão com o IP alternativo funcionar, este é configurado como o IP ativo (switchover automático).

Para forçar um switchover manual, escreva 1 (um) ou 0 (zero) neste Tag. Isto força a reconexão com o IP especificado (0: IP principal e 1: IP de backup) se o Driver estiver atualmente conectado. Se o Driver estiver desconectado, isto configura o IP ativo para a próxima tentativa de conexão.


IPSwitch (MProt)

Somente Escrita

Configuração por parâmetros numéricos

Parâmetro | Valor
N1 | -2
N2 | 0 (zero)
N3 | 4
N4 | 1

Configuração por parâmetros sintáticos

Parâmetro | Valor
Item | MProt.IO.Ethernet.IPSwitch

Qualquer valor escrito neste Tag força o switchover manual. Se o IP principal estiver ativo, então o IP de backup é ativado, e vice-versa. Isto força a reconexão com o IP especificado se o Driver estiver atualmente conectado. Se o Driver estiver desconectado, isto configura o IP ativo para a próxima tentativa de conexão.


Coleta SOE

Esta seção contém informações específicas para Coleta SOE de eventos.


Preparando a Coleta SOE

Antes de utilizar os Tags de Coleta SOE, é preciso preparar o CLP com a construção de uma Tabela DB (área V) e o desenvolvimento de uma lógica programável compatível com os procedimentos de coleta SOE desenvolvida para este Driver.

Tabela de Eventos do SOE

Esta tabela tem como objetivo dimensionar o tamanho do buffer de eventos e gerenciar a entrada e a saída destes em uma rotina de buffer circular. Esta tabela é constantemente atualizada, tanto pelo CLP quanto pelo Driver Siemens MProt.

A Tabela de Eventos SOE deve conter registros de controle e de armazenamento dos eventos, com base na estrutura de dados descrita na tabela a seguir.

Estrutura de dados

Endereço | descrição | Tipo de dado
0.0 |  | STRUCT
+0.0 | Status da Tabela | WORD (16 bits sem sinal)
+2.0 | Ponteiro de Gravação | WORD (16 bits sem sinal)
+4.0 | Status da Aquisição | WORD (16 bits sem sinal)
+6.0 | Limite Máximo de Itens do Buffer Circular | WORD (16 bits sem sinal)
+8.0 | Buffer Circular | ARRAY[1..n] (limite de itens definido pelo usuário)
+0.0 |  | STRUCT
+0.0 | TIMESTAMP_LOLO (Ano) | WORD (16 bits sem sinal)
+2.0 | TIMESTAMP_LOHI (Dia e Mês) | WORD (16 bits sem sinal)
+4.0 | TIMESTAMP_HILO (Hora e Minuto) | WORD (16 bits sem sinal)
+6.0 | TIMESTAMP_HIHI (Segundo e Milissegundo) | WORD (16 bits sem sinal)
+8.0 | Valor do Tipo de Evento 1 | Tipo de dado do evento (definido pelo usuário)
+n.0 | Valor do Tipo de Evento 2 | Repete o mesmo tipo de dado
+n.0 | Valor do Tipo de Evento 3 | Repete o mesmo tipo de dado
+n.0 | Valor do Tipo de Evento n | Repete o mesmo tipo de dado
=n.0 |  | END_STRUCT
=n.0 |  | END_STRUCT

Descrição dos registros de controle dos eventos

· Status da Tabela: Deve ser mantido exclusivamente pelo CLP, indicando o número de eventos disponíveis para a leitura no buffer circular. Deve ser atualizado pelo CLP sempre que novos eventos forem adicionados ao buffer circular, ou após a conclusão da coleta de eventos pelo supervisório, o que pode ser detectado pela mudança no Status da Aquisição.
· Ponteiro de Gravação: Deve ser mantido exclusivamente pelo CLP, indicando o índice, começando em zero, da posição onde deve ser inserido o próximo evento. O índice deve ser incrementado pelo CLP a cada nova inserção de eventos no buffer circular, voltando ao índice zero após alcançar o limite máximo do buffer circular.
· Status da Aquisição: Deve ser mantido pelo CLP em conjunto com o Driver MProt, indicando o número de registros já lidos a cada transação. Após cada coleta, o Driver MProt escreve neste registro o número de eventos que conseguiu ler. Ao detectar esta modificação, o CLP deve imediatamente descontar este valor escrito pelo Driver MProt do Status da Tabela, e então zerar o Status da Aquisição.
· Limite Máximo de Itens do Buffer Circular: Valor constante que especifica o limite máximo de eventos a serem armazenados no buffer circular antes do ponteiro voltar para o índice 0 (zero). Deve conter exatamente o valor limite do Array dimensionado para os eventos do buffer circular.

Descrição dos registros de armazenagem dos eventos

· TIMESTAMP: Horário da ocorrência do evento.
· Valor do Evento: Valor do evento ocorrido, que pode ser composto por um ou n valores (todos com o mesmo tipo de dado), no qual são agrupados para o mesmo TIMESTAMP gerado na ocorrência de um evento.

Formato do TIMESTAMP

O TIMESTAMP é representado por quatro Words, conforme a estrutura de dados descrita na tabela a seguir.

Estrutura de dados

WORD | Conteúdo | Intervalo
0 | Ano | Entre 0 e 65535
1 | Dia e Mês | ddddddddmmmmmmmm
2 | Hora e Minuto | hhhhhhhhmmmmmmmm
3 | Segundos e Milissegundos | ssssssmmmmmmmmmm

· O primeiro Word contém um valor inteiro referente ao ano.
· O segundo Word está dividido em parte alta para representar o dia e em parte baixa para representar o mês.
· O terceiro Word está dividido em parte alta para representar as horas e em parte baixa para representar os minutos.
· O quarto Word usa os seis bits mais altos para representar os segundos e os 10 bits mais baixos para representar os milissegundos.

Procedimento de Aquisição

O CLP deve iniciar a inserção dos eventos no sentido crescente, a partir do endereço base da tabela, referente ao início do buffer circular. A cada novo evento inserido, o ponteiro de gravação deve ser incrementado, passando a apontar para o próximo endereço disponível do buffer.

O Driver executa a leitura do evento mais antigo para o mais recente. O endereço do início da leitura é calculado pelo Driver através do valor do Ponteiro de Gravação e do Status da Tabela.

Se o número de eventos disponíveis for maior que o máximo permitido em um único frame de comunicação do protocolo, o Driver executa múltiplas leituras em bloco, atualizando o valor do Status da Aquisição no final do processo com o número total de eventos lidos.

Ao detectar que o Driver escreveu um valor maior que 0 (zero) no Status da Aquisição, o CLP deve imediatamente subtrair o valor do Status da Aquisição do valor do Status da Tabela e zerar o Status da Aquisição.

O CLP pode inserir novos eventos na tabela durante o processo de aquisição pelo CLP, desde que não ocorra overflow do buffer circular, incrementando o Status da Tabela.

A figura a seguir apresenta um pequeno fluxograma, em formato de Diagrama de Atividade UML, com uma sugestão de implementação para a lógica do CLP.

Fluxograma SOE


Tags de Coleta SOE

A coleta SOE de eventos é executada com a utilização dos Tags descritos a seguir, por meio de uma comunicação ISOTCP com o CLP.

Tag Bloco de Registro de Controle (Somente leitura)

· B1: 0 (zero)
· B2: 309 (Tipo de Dado = 3 e Área = 9)
· B3: Número do bloco DB. Caso a memória contenha um bloco DB único ou não especificado, preencha com o valor 1 (um)
· B4: Não utilizado

O Tag Bloco de consulta dos Registros de Controle deve conter quatro Elementos para retornar os seguintes valores:

· Elemento 1: Status da Tabela
· Elemento 2: Ponteiro de Gravação
· Elemento 3: Status da Aquisição
· Elemento 4: Limite Máximo de Itens do Buffer Circular

Para uma descrição de cada um destes Registros de Controle, consulte o tópico Preparando a Coleta SOE.

Tag Bloco de Coleta de Dados (Somente leitura)

· B1: 0 (zero)
· B2: Tipo de Dado e Área = 90
· B3: Número do bloco DB. Caso a memória contenha um bloco DB único ou não especificado, preencha com o valor 1 (um)
· B4: Não utilizado

O Tag Bloco de Coleta de Dados deve conter um número de Elementos correspondente ao número de valores de tipo de evento n que compõem um único evento. Se o evento for composto por um único valor, basta dimensionar o Tag Bloco de Coleta de Dados com apenas um Elemento. Caso o evento seja composto por dois valores, o Tag Bloco deve ser dimensionado para dois Elementos, e assim por diante. Utilize o parâmetro B2 do Tag Bloco para indicar o tipo de dado associado aos valores do evento.

NOTA: Todos os valores que compõem um evento devem ser do mesmo tipo de dado, assim como cada tabela DB do CLP deve ser preenchida por um mesmo tipo de evento.


Histórico de Revisões do Driver

 Topo Anterior

Versão

Data

Autor

Comentários

3.1.2

12/05/2015

M. Ludwig
· Corrigida a negação de funcionamento da opção de seleção do protocolo ISOTCP243 (Case 18675).

3.1.1

19/09/2014

M. Ludwig
· Implementada a redundância de CPU (seleção automática de CPU backup, Rack/Slot alternativos, com a conexão ao IP backup, Case 15782).
· Implementada configuração de Rack, Slot e tipo de conexão na janela de propriedades do Driver (Case 15911).
· Adicionados Tags de interface específicos para opção de conexões extras (Case 17221).

3.00

20/12/2013

M. Salvador

M. Ludwig
· Implementação de Superblocos internos em conexões TCP extras (Case 14025).
· Driver portado para o IOKit 2.00 (Case 14019).

2.13

21/08/2012

M. Ludwig
· Implementada funcionalidade do campo PDU REF em protocolo ISOTCP (Case 13299).

2.12

30/05/2012

C. Mello
· Adicionado suporte para Coleta SOE de eventos em tabelas DB (Case 12483).

2.11

04/08/2011

M. Ludwig
· Inclusão de consistência prevista em protocolo MPI e melhorias de codificação (Case 12392).
· Adicionadas informações sobre suporte a PLC Siemens modelo S7-1200 (Case 12292).

2.10

25/03/2011

M. Ludwig
· Implementação do formato S7 String e de nova janela de propriedades para configuração de Strings (Case 12005).

2.09

25/08/2009

M. Ludwig
· Correção de falha lendo variáveis de tipo Contador (Case 10701).
· Implementação de configurações avançadas para ISOTCP/ISOTCP243 (Case 10717).

2.08

19/06/2009

M. Ludwig
· Correção de falha em desconexão endereçando múltiplos escravos no protocolo MPI (Case 10595).

2.07

03/06/2009

M. Ludwig
· Implementação do tipo S5Time (Case 10413).

2.06

07/01/2009

M. Ludwig
· Correção de falha em conexão sob protocolo ISOTCP (Case 10138).

2.05

04/11/2008

M. Ludwig
· Melhorias na apresentação da janela de propriedades (Case 9994).
· Implementação do delay de operação em PPI (Case 9968).

2.04

01/04/2008

M. Ludwig
· Corrigido problema que ocorria ao endereçar entradas e saídas analógicas combinadas com a propriedade EnableReadGrouping em Verdadeiro (Case 8927).
· Melhoria e consistência para evitar problema de desconexões do PLC, relatado no case 8968 (recebimento de valores aleatórios em variáveis de alarme em ISOTCP).
· Corrigida a falta de tratamento de erro em recebimento de caracteres NAK em protocolo MPI, que ocasionava travamento em recepção de dados (Case 8981).
· Melhoria de consistência em recepções do protocolo MPI (Case 8981).
· Retirado byte desnecessário no frame, que ocasionava problemas em escritas de byte e bit sob protocolo ISOTCP e PLC S7-400 (Case 9021).
· Corrigida falha de reconexão automática em desconexão física no ISOTCP (Case 9030).
· Corrigida a implementação de recepção de um frame longo de ACK em PPI (Case 9118).
· Implementada a condição de dados indisponíveis em PPI. Quando a condição é encontrada, retorna uma lista vazia e OK ao invés de falha (Case 9232).
· Corrigida atribuição errada de Service Access Point em protocolo MPI, que ocasionava falhas de comunicação com adaptadores Tecnatron (Case 9238).

2.03

13/09/2007

M. Ludwig
· Corrigido problema de reconexão com adaptador serial quando há desligamento de PLC (Case 8069).
· Implementado endereçamento a múltiplos escravos no protocolo MPI (Case 8625).
· Porta Ethernet livremente configurável (Case 8683).
· Driver compilado no IOKitLib v1.14, de forma a corrigir erros de leitura e escrita antes da primeira conexão (Case 7614).
· Documentação atualizada com informações sobre tamanho de Strings, protocolos e equipamentos compatíveis (Case 8206).

2.02

28/03/2007

M. Ludwig
· Corrigida a falta de criação de blob que ocasionava erros em tempo de execução (Case 8015).
· Corrigido problema de troca de números IP em tempo de execução (Case 8026).
· Desenvolvido suporte a Windows CE (Case 7504).
· Adicionado suporte a conversores IBHLink (Case 7994).
· Corrigido problema de escrita de Strings (Case 7967).

2.01

10/07/2006

M. Ludwig
· Correção em parsing de variáveis DB (Case 7172).

2.00

13/04/2006

M. Salvador

M. Ludwig
· Corrigida falha do protocolo PPI Error: Single DLE in data field (Case 6644).
· Retirada a verificação de endereços. Não importa o tipo de dado, é permitida a entrada de qualquer valor para N4 (Case 6644).
· Corrigido bug de interface de configuração, onde se misturavam configurações do IBHLink com ISOTCP (porta 1099 era forçada ao invés da porta 102, Case 6644).
· Inserido suporte a Superblocos e endereçamento simbólico (Case 6644).

1.01

03/11/2005

M. Ludwig
· Otimização, padronização e revisão do código fonte.

1.00

01/05/2005

M. Salvador
· Versão original do Driver.