DATA_COMM_SCAN

A função deste bloco é obter um conjunto de pacotes de dados de equipamentos remotos através de um canal comunicação. Cada pacote de dados consiste de uma ou mais variáveis sequenciais de um tipo único obtidas de um equipamento com endereço distinto.

Inicialmente a aplicação define um vetor da estrutura do tipo DATA_PACK_SPEC para especificar cada bloco de variáveis a ser obtido. Esta informação é passada para o bloco juntamente com uma estrutura de dados que irá receber as variáveis obtidas remotamente.

O bloco quando ativado, é responsável por, ciclicamente obter as variáveis especificados e atualizar os valores na estrutura de dados fornecida.

Nota

Esta função foi classificada como obsoleta e é mantida na biblioteca apenas para compatibilidade com aplicações legadas.

Para novos projetos utilize o recurso de Recurso de mapeamento de dados.

Bloco

            DATA_COMM_SCAN
         +------------------+
BOOL ----|EN             ENO|---- BOOL
         |                  |
BOOL ----|START          EOT|---- BOOL
         |                  |
UINT ----|COMM_SRC       EOC|---- BOOL
         |                  |
TIME ----|IPOLL_TME    BLOCK|---- INT
         |                  |
TIME ----|IPACK_TME   RESULT|---- INT
         |                  |
     ----|SPEC ------------ |----
         |                  |
     ----|DATA ------------ |----
         +------------------+

Parâmetros

Nome

Parâmetro

Tipo Dado

V. Ini.

Descrição

EN

Entrada

BOOL

TRUE

Habilitação de entrada

START

Entrada

BOOL

FALSE

Ativa ciclo de comunicação

COMM_SRC

Entrada

UINT

0

Canal de comunicação utilizado

IPOLL_TME

Entrada

TIME

T#10ms

Tempo entre um ciclo de comunicação

IPACK_TME

Entrada

TIME

T#100ms

Tempo entre pacotes de comunicação

SPEC

Entrada/Saída

ANY

Estrutra de especificação dos dados a serem adquiridos (vetor de DATA_PACK_SPEC)

DATA

Entrada/Saída

ANY

Estrutura com os dados a serem atualizados

ENO

Saída

BOOL

FALSE

Saída de habilitação

EOT

Saída

BOOL

FALSE

Gera um pulso ao final da transação de cada bloco de dados

EOC

Saída

BOOL

FALSE

Gera um pulso ao final da varredura de todos os blocos especificados

BLOCK

Saída

INT

0

Nro. do bloco de dados obtido (ou falha) quando o sinal EOT estiver ativado. (Inicia em zero)

RESULT

Saída

INT

0

Código de retorno da transação associada ao bloco de dado BLOCK quando o sinal EOT estiver ativado

RESULT

Tipo Dado

Descrição

INT

Código de retorno na execução da função, do tipo RET_CODE, onde:

  • Se for igual a 0: Função executada com sucesso - código HILS.SUCCESS

  • Se for diferente de 0: Falha na execução da função indica o respectivo código de erro. [2]

COMM_SRC

O canal de comunicação utilizado é especificado por um tipo enumerado denominado COMM_CHAN_ID. Este tipo define os seguintes identificadores:

Nome

Ident.

Descrição

HILS.COM1_PORT_ID

0

Canal serial COM1

HILS.COM2_PORT_ID

1

Canal serial COM2

HILS.COM3_PORT_ID

2

Canal serial COM3

HILS.COM4_PORT_ID

3

Canal serial COM4

HILS.COM5_PORT_ID

4

Canal serial COM5

HILS.COM6_PORT_ID

5

Canal serial COM6

HILS.COM7_PORT_ID

6

Canal serial COM7

HILS.COM8_PORT_ID

7

Canal serial COM8

HILS.SOCK0_PORT_ID

8

Controlador Ethernet 1: Socket 0

HILS.SOCK1_PORT_ID

9

Controlador Ethernet 1: Socket 1

HILS.SOCK2_PORT_ID

10

Controlador Ethernet 1: Socket 2

HILS.SOCK3_PORT_ID

11

Controlador Ethernet 1: Socket 3

HILS.SOCK4_PORT_ID

12

Controlador Ethernet 1: Socket 4

HILS.SOCK5_PORT_ID

13

Controlador Ethernet 1: Socket 5

HILS.SOCK6_PORT_ID

14

Controlador Ethernet 1: Socket 6

HILS.SOCK7_PORT_ID

15

Controlador Ethernet 1: Socket 7

HILS.ETH2_SOCK0_PORT_ID

16

Controlador Ethernet 2: Socket 0

HILS.ETH2_SOCK1_PORT_ID

17

Controlador Ethernet 2: Socket 1

HILS.ETH2_SOCK2_PORT_ID

18

Controlador Ethernet 2: Socket 2

HILS.ETH2_SOCK3_PORT_ID

19

Controlador Ethernet 2: Socket 3

HILS.ETH2_SOCK4_PORT_ID

20

Controlador Ethernet 2: Socket 4

HILS.ETH2_SOCK5_PORT_ID

21

Controlador Ethernet 2: Socket 5

HILS.ETH2_SOCK6_PORT_ID

22

Controlador Ethernet 2: Socket 6

HILS.ETH2_SOCK7_PORT_ID

23

Controlador Ethernet 2: Socket 7

Este texto pode ser utilizado como parâmetro pois esta definido no tipo COMM_CHAN_ID disponível na biblioteca HI_STD.

Cada equipamento possui um sub-conjunto dos recursos de comunicação indicados na tabela acima. Para identificar quais recursos estão disponíveis em um dado equipamento, consulte o manual do mesmo.

SPEC

Vetor do tipo DATA_PACK_SPEC utilizado para especificar os blocos de dados a serem obtidos dos equipamentos remotos.

Este tipo é uma estutra de dados com os seguintes campos:

Nome do campo

Tipo Dado

Dimensão

V. Ini.

Descrição

DEV_ADDR

UINT

Endereço de comunicação do equipamento remoto a ser acessado.

DATA_TYPE

UINT

Tipo de dado associado a variavel a ser obtida (vide enumerado TYPE_LEN_ID).

DATA_SIZE

UINT

Quantidade de variáveis a ser obtida no bloco solicitado.

REM_VAR

UINT

Nro. da variável inicial do tipo especificado a ser obtida no equipamento remoto.

Importante

O tamanho do bloco de dados especificado deve poder ser obtido pelo driver de comunicaçao em um único pacote de comunicação. Se necessário separe o bloco em blocos menores para que possam ser obtidos.

Exemplo

Este programa utilzando o canal de comunicação COM1 obtem 2 blocos de dados conforme indicado na tabela seguinte.

Nro do Bloco

End. do equipamento

Tipo do dado

Variável inicial

Quantidade

0

1

3 (DTL_WORD_ID)

5

10

1

1

1 (DTL_BIT_ID)

20

6

Declaração de Tipos de Dados

Tipo de dado structured USER_DATA. Este tipo foi criado para receber 10 valores inteiros do bloco de dados 0 e, 6 valores boleanos para receber os dados do bloco 1.

Nome do campo

Tipo Dado

Dimensão

V. Ini.

Descrição

HOLDING_REG_20_29

UINT

[0..9]

Base de dados para armazenar os Holding registers de 20 a 29

COIL_10_15

BOOL

[0..5]

Base de dados para armazenar os Coils de 10 a 15

Declaração de Variáveis

Nome

Classe

Tipo

Valor Inicial

Descrição

ST_SCAN

Local

BOOL

FALSE

Ativa scan de dados remotos

C_SRC

Local

UINT

0

Especificação do canal de comunicação (0 = COM1)

BK_SPEC

Local

HILS.DATA_PACK_SPEC

[[1,3,10,5],[1,1,6,20]]

Definição dos blocos de dados a serem adquiridos

BK_DATA

Local

USER_DATA

Base de dados a receber os valores adquiridos

SCAN

Local

HILS.DATA_COMM_SCAN

Bloco de função para varredura de dados remotos

OK_CNT

Local

ULINT

0

Nro. de ciclos de comunicação OK

NOK_CNT

Local

ULINT

0

Nro. de ciclos de comunicação com falha

FIRST_CYC

Local

BOOL

TRUE

Flag de primeiro ciclo

Clique aqui para baixar a tabela de variáveis

Código ST

// Controla o scan dos dados a serem obtidos
SCAN(
  // EN        := TRUE, <- já inicializa com TRUE
  START     := ST_SCAN,
  COMM_SRC  := C_SRC,
  // IPOLL_TME :=  <- mantem o valor default (10 ms)
  // IPACK_TME :=  <- mantem o valor default (100 ms)
  SPEC      := BK_SPEC,
  DATA      := BK_DATA
  );

// Contabiliza o nro de pacotes com sucesso e com falha
IF SCAN.EOT AND (SCAN.BLOCK = 1) THEN
  // Término de um ciclo de aquisição dos pacotes
  IF ( SCAN.RESULT = 0) THEN
    OK_CNT := OK_CNT + 1;   // contabiliza pacotes recebidos com sucesso
  ELSE
    NOK_CNT := NOK_CNT + 1; // contabiliza transações com falha
  END_IF;

  // ... executar aqui outras ações associadas ao termino de um ciclo de aquisição
END_IF;
// ...