Материал: m012800p

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

5.3.1.8 Fetch Comm Event Counter (Código de função 0x0B):

Esta função devolve uma palavra de status e um contador de eventos a partir do contador de eventos de comunicação do slave. O master consegue verificar com este contador se o slave processou corretamente as mensagens.

O valor de contagem é atualizado após cada processamento de mensagem bem sucedido. Esta contagem não é efetuada nas respostas de exceção, comandos de poll ou consultas do contador.

É possível reinicializar o contador de eventos através da função de diagnóstico (código 0x08), através da subfunção Restart Communications Option (código 0x01) ou de Clear Counters e do registro de diagnóstico (código 0x0A).

Consulta:

Neste exemplo é efetuada a leitura do contador de comunicação do slave 11:

Nome do campo

Exemplo

RTU

ASCII

 

Start of frame

-

t1-t2-t3

”:”

0x3a

Slave address

0x0B

0x0B

”0B”

0x30, 0x42

Function code

0x0B

0x0B

”0B”

0x30, 0x42

Error Check (LRC / CRC)

-

0x47

”EA”

0x45, 0x41

 

 

0x47

 

 

End of frame

 

t1-t2-t3

-

0xD, 0xA

Tabela 5.42: Exemplo consulta, Fetch Comm Event Counter

Resposta:

A resposta contém uma palavra de status de 2 bytes e um contador de eventos de 2 bytes. A palavra de status contém apenas zeros.

Na tabela que se segue está apresentado um exemplo para uma resposta:

Nome de campo

Exemplo

RTU

ASCII

 

Start of frame

-

t1-t2-t3

”:”

0x3a

Slave address

0x0B

0x0B

”0B”

0x30, 0x42

Function code

0x0B

0x0B

”0B”

0x30, 0x42

Status high

0x00

0x00

”00”

0x30, 0x30

Status low

0x00

0x00

”00”

0x31, 0x33

Event count high

0x00

0x00

”00”

0x30, 0x30

Event count low

0x03

0x03

”03”

0x30, 0x33

Error Check (LRC / CRC)

-

0xE4

”E7”

0x45, 0x37

 

 

0xA0

 

 

End of frame

 

t1-t2-t3

-

0xD, 0xA

Tabela 5.43: Exemplo resposta, Fetch Comm Event Counter

O contador de eventos mostra que foram contados 3 (0x03) eventos.

MODBUS / Configuração

63

01-03-16

 

 

5.3.1.9 Force Multiple Coils (Código de função 0x0F):

Através desta função são definidas uma série de bits de saída para 1 ou 0. Em um envio por difusão os mesmos bits são definidos em todos os slaves ativados. O número máximo é de 256 bits.

Função!

Consulta:

O primeiro ponto é endereçado com 0. Em Modicon o endereçamento começa com 1 (0x01).

A mensagem de consulta especifica os bits que devem ser definidos. Os estados solicitados de 1 ou 0 são determinados pelos conteúdos do campo de dados de consulta. Em este exemplo são definidos 16 bits com o endereço 0 no slave 11. A consulta contém 2 bytes com o valor 0xA5F0, ou seja, 1010 0101 1111 0000 em binário.

Bit:

1

0

1

0

0

1

0

1

1

1

1

1

0

0

0

0

Coil:

7

6

5

4

3

2

1

0

15

14

13

12

11

10

9

8

O primeiro byte transmite os 0xA5 para o endereço 7 a 0, sendo 0 o bit com o valor mais baixo. O byte seguinte transmite 0xF0 para o endereço 15 a 8, sendo o bit mais baixo de 8 bits.

Nome do campo

Exemplo

RTU

ASCII

 

Start of frame

-

t1-t2-t3

”:”

0x3a

Slave address

0x0B

0x0B

”0B”

0x30, 0x42

Function code

0x0F

0x0F

”0F”

0x30, 0x46

Coil address high

0x00

0x00

”00”

0x30, 0x30

Coil address low

0x00

0x00

”00”

0x30, 0x30

Quantity of coils high

0x00

0x00

”00”

0x30, 0x30

Quantity of coils low

0x10

0x10

”10”

0x31, 0x30

Byte Counter

0x02

0x02

”02”

0x30, 0x32

Force data high (coils 7 ... 0)

0xA5

0xA5

”A5”

0x41, 0x35

Force data low (coils 15 ... 8)

0xF0

0xF0

”F0”

0x46, 0x30

Error Check (LRC / CRC)

-

0xE7

”3F”

0x33, 0x46

 

 

0x94

 

 

End of frame

 

t1-t2-t3

-

0xD, 0xA

Tabela 5.44: Exemplo consulta, Force Multiple Coils

Resposta:

A resposta é o endereço do slave, do código de função, o endereço de partida e o número dos bits definidos.

Nome do campo

Exemplo

RTU

ASCII

 

Start of frame

-

t1-t2-t3

”:”

0x3a

Slave address

0x0B

0x0B

”0B”

0x30, 0x42

Function code

0x0F

0x0F

”0F”

0x30, 0x46

Coil address high

0x00

0x00

”00”

0x30, 0x30

Coil address low

0x00

0x00

”00”

0x30, 0x30

Quantity of coils high

0x00

0x00

”00”

0x30, 0x30

Quantity of coils low

0x10

0x10

”10”

0x31, 0x30

Error Check (LRC / CRC)

-

0x54

”D6”

0x44, 0x36

 

 

0xAD

 

 

End of frame

 

t1-t2-t3

-

0xD, 0xA

Tabela 5.45: Exemplo resposta, Force Multiple Coils

64

MODBUS / Configuração

 

01-03-16

 

5.3.1.10 Registros Preset Multiple (código de função 0x10):

Esta função registra valores em uma série de palavras de saída (também designado por ”Registro de saída”). Em um envio por difusão os valores são registrados em todos os slaves. O número máximo de registros por frame é de 128.

 

 

Consulta:

 

 

 

 

 

Função!

 

 

 

 

 

 

O primeiro ponto é endereçado com 0. Em Modicon o endereçamento começa com 1

 

 

 

 

(0x01).

 

 

 

 

 

 

 

 

A mensagem de consulta determina os registros que devem ser definidos. Os dados são

 

 

enviados como 2 bytes por registro.

 

 

 

 

 

No exemplo é indicado a forma como são definidos os dados nos dois registros 0 e 1 no

 

 

slave 11:

 

 

 

 

 

 

 

 

Nome do campo

Exemplo

RTU

ASCII

 

 

 

 

Start of frame

-

t1-t2-t3

”:”

0x3a

 

 

 

Slave address

0x0B

0x0B

”0B”

0x30, 0x42

 

 

 

Function code

0x10

0x10

”10”

0x31, 0x30

 

 

 

Starting address high

0x00

0x00

”00”

0x30, 0x30

 

 

 

Starting address low

0x00

0x00

”00”

0x30, 0x30

 

 

 

Number of register high

0x00

0x00

”00”

0x30, 0x30

 

 

 

Number of register low

0x02

0x02

”02”

0x30, 0x32

 

 

 

Byte Counter

0x04

0x04

”04”

0x30, 0x34

 

 

 

Data high

(register 0)

0x12

0x12

”12”

0x31, 0x32

 

 

 

Data low

(register 0)

0x34

0x34

”34”

0x33, 0x34

 

 

 

Data high

(register 1)

0x56

0x56

”56”

0x35, 0x36

 

 

 

Data low

(register 1)

0x78

0x78

”78”

0x37, 0x38

 

 

 

Error Check (LRC / CRC)

-

0xA9

”CB”

0x43, 0x42

 

 

 

 

 

 

0x43

 

 

 

 

 

End of frame

 

t1-t2-t3

-

0xD, 0xA

 

Tabela 5.46: Exemplo consulta, registro Preset Multiple

Resposta:

A resposta devolve o endereço do slave, o código de função, o endereço de partida e o número dos registros definidos.

Nome do campo

Exemplo

RTU

ASCII

 

Start of frame

-

t1-t2-t3

”:”

0x3a

Slave address

0x0B

0x0B

”0B”

0x30, 0x42

Function code

0x10

0x10

”10”

0x31, 0x30

Starting address high

0x00

0x00

”00”

0x30, 0x30

Starting address low

0x00

0x00

”00”

0x30, 0x30

Number of register high

0x00

0x00

”00”

0x30, 0x30

Number of register low

0x02

0x02

”02”

0x30, 0x32

Error Check (LRC / CRC)

-

0x41

”E3”

0x45, 0x33

 

 

0x62

 

 

End of frame

 

t1-t2-t3

-

0xD, 0xA

Tabela 5.47: Exemplo resposta, registro Preset Multiple

MODBUS / Configuração

65

01-03-16

 

 

5.3.2Watchdog (comportamento em caso de falha do bus de campo)

Função! O Watchdog serve para a vigilância da transmissão de dados entre o comando superior e o acoplador/controlador. Para tal, o comando superior aciona ciclicamente uma função de tempo (Time-out) no acoplador/controlador. No caso de uma comunicação isenta de erros, não é possível este tempo alcançar o seu valor final, porque a comunicação é anteriormente iniciada de forma contínua. Se este tempo tiver decorrido existe uma falha do bus de campo.

O Watchdog tem de estar ligado para que possa ser ativado (ver ‘acoplador/ajustes’ ou ‘controlador/ajustes’).

No acoplador/controlador existem registros especiais para a excitação e para a consulta de status do Watchdog devido ao comando superior (endereços de registro 0x1000 a 0x1008).

Depois de ligar a tensão de alimentação o Watchdog não está ainda ativado. Primeiro deve determinar-se o valor de Time-out (registro 0x1000). O Watchdog pode ser ativado pelo fato de no registro de máscaras (0x1001) ser registrado um código de função que não seja igual a 0. Existe uma segunda possibilidade de ativação registrando um valor diferente de 0 no registro de comutação (0x1003).

Ao ler o tempo de acionamento mínimo (registro 0x1004) é determinado se a reação de erro do Watchdog foi ativada. Se este valor de tempo for 0 pressupõe-se que se trata de uma falha do bus de campo. O Watchdog pode ser iniciado de acordo com as duas possibilidades anteriormente referidas ou por meio do registro 0x1007.

Uma vez iniciado, o usuário só pode parar o Watchdog, por motivos de segurança, através de uma determinada via (registro 0x1005 ou 0x1008).

66

MODBUS / Configuração

 

01-03-16

 

Registros Watchdog:

Pode ser utilizada a comunicação com os registros Watchdog!

Ender.

Denominação

Acesso

Compr.

Valor

de

Descrição

 

registro

 

 

 

 

(palavra)

referência

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 x 1000

Tempo excedido

Leitura /

1

pu/co

 

Este registro memoriza o valor para o tempo

 

(Time-out),

registro

 

0x0000

 

excedido (Time-out). Para que o Watchdog

 

WD_TIME

 

 

 

 

possa ser iniciado, o valor de referência tem de

 

 

 

 

 

 

 

ser alterado para um valor que não seja igual a

 

 

 

 

 

 

 

zero. O tempo é definido em múltiplos de 100

 

 

 

 

 

 

 

ms, por conseguinte, 0x0009 significa um

 

 

 

 

 

 

 

tempo de Time-out de 0.9 s. Este valor não

 

 

 

 

 

 

 

pode ser alterado no Watchdog em curso. Não

 

 

 

 

 

 

 

existe nenhum código através do qual o valor

 

 

 

 

 

 

 

de dados atual possa ser novamente registrado

 

 

 

 

 

 

 

enquanto o Watchdog estiver ativo.

 

 

 

 

 

 

 

 

0 x 1001

Função Watchdog

Leitura /

1

pu/co

 

Por meio desta máscara é possível ajustar os

 

Máscara de

registro

 

0x0000

 

códigos de função, para acionar a função do

 

codificação,

 

 

 

 

Watchdog. Através do 1 pode ser selecionado

 

Código de função

 

 

 

 

(Código de função-1)

+

 

1...16,

 

 

 

 

 

o código de função ( = 2

 

 

 

 

 

 

....)

 

 

WDFCM_1_16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D1001.0 corresponde ao código de função 1,

 

 

 

 

 

 

 

 

D1001.1 corresponde ao código de função 2...

 

 

 

 

 

 

 

 

Se existir aqui um valor que não seja igual a

 

 

 

 

 

 

 

zero, é iniciada a função de Watchdog. Se na

 

 

 

 

 

 

 

máscara apenas forem registrados códigos de

 

 

 

 

 

 

 

funções não suportadas, o Watchdog não é

 

 

 

 

 

 

 

iniciado. Um erro existente é reinicializado,

 

 

 

 

 

 

 

sendo possível descrever novamente a figura

 

 

 

 

 

 

 

do processo. Se o Watchdog estiver ativo

 

 

 

 

 

 

 

também não é possível efetuar quaisquer

 

 

 

 

 

 

 

alterações. Não existe nenhum código através

 

 

 

 

 

 

 

do qual o valor de dados atual possa ser

 

 

 

 

 

 

 

novamente registrado enquanto o Watchdog

 

 

 

 

 

 

 

estiver ativo.

 

 

 

 

 

 

 

 

 

0 x 1002

Função

Watchdog

Leitura /

1

pu/co

 

A mesma função da anterior, embora com os

 

Máscara

de

registro

 

0x0000

 

códigos de função 17 a 32. Estes códigos não

 

codificação,

 

 

 

 

são suportados, pelo que este registro deve

 

Código

de função

 

 

 

 

permanecer no valor de referência. Não existe

 

17...32,

 

 

 

 

 

nenhum código de exceção pelo qual o valor

 

WD_FCM_17_32

 

 

 

 

de dados atual possa ser novamente registrado

 

 

 

 

 

 

 

enquanto o Watchdog estiver ativo.

 

 

 

 

 

 

 

 

 

0 x 1003

Watchdog-Trigger,

Leitura /

1

pu/co

 

Este registro é utilizado para um método de

WD_TRIGGER

 

 

 

 

registro

 

0x0000

 

Trigger alternativo. Ao registrar valores

 

 

 

 

 

 

 

distintos em este registro, é acionado o

 

 

 

 

 

 

 

Watchdog. Os valores subsequentes têm de

 

 

 

 

 

 

 

ter tamanhos diferentes. O registro de um valor

 

 

 

 

 

 

 

que não seja igual a zero inicia o Watchdog.

 

 

 

 

 

 

 

Um erro de Watchdog é reinicializado, sendo

 

 

 

 

 

 

 

novamente possível o registro dos dados do

 

 

 

 

 

 

 

processo.

 

 

 

 

 

 

 

 

 

 

0 x 1004

Tempo

de

Leitura /

1

pu/co

 

Através deste valor é possível efetuar a leitura

acionamento

 

 

mínimo

atual,

registro

 

0xFFFF

 

do status do Watchdog atual. Se o Watchdog

 

WD_AC_TRG_TIME

 

 

 

 

for acionado, o valor memorizado é comparado

 

 

 

 

 

com o valor atual. Se o valor atual for inferior

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ao valor memorizado, este é substituído pelo

 

 

 

 

 

 

 

valor atual. A unidade é 100 ms/Digit. Ao

 

 

 

 

 

 

 

registrar valores novos é alterado o valor

 

 

 

 

 

 

 

memorizado, não tendo qualquer efeito sobre o

 

 

 

 

 

 

 

Watchdog. 0x000 não é permitido.

 

 

 

 

 

 

 

 

 

 

MODBUS / Configuração

67

01-03-16