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:
|
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 |
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;
// ...