Configurações para iFix e bancos de dad Configurações para

Propaganda
Mekatronik
Configurações para integração entre
iFix e bancos de dados relacionais
Carolina Fardo Giacomelli
1
Este tutorial visa mostrar de maneira simples, em 6 passos, como configurar o iFix e o
MySQL para transferências de dados do supervisório para um banco de dados relacional, e vice
versa.
Passo 4. Criar consultas
Passo 1. Criar o banco de dados
Passo 5. Configurar o SCU
Passo 2. Configurar o DSN
Passo 6. Criar os blocos SQL
Passo 3. Criar tabelas
Primeiramente deve-se frisar que na instalação do MySQL devem ser instalados três
componentes:
O Servidor do Banco de Dados
O Administrados
O Conector ODBC
Passo 1. Criar o banco de dados
Primeiramente é preciso criar o banco de dados. Esta etapa depende muito do banco
de dados que será usado. Aqui será um banco de dados do MySQL. Esta criação é simples e
pode ser vista nas figuras abaixo.
Figura 1. Ambiente MySQL
Carolina Fardo Giacomelli
junho 2010
2
Figura 2. Detalhe da criação do BDR
Passo 2. Configurar o DSN
Agora é preciso configurar o DSN. Um DSN, ou Data Source Name é utilizado para
definir dois componentes essenciais à comunicação:
1. O driver ODBC
2. A localização do servidor do banco de dados e suas tabelas.
No “Painel de Controle”, na pasta “Ferramentas Administrativas”, está o ícone de
“Fontes de Dados (ODBC)”
Aqui se criará uma nova conexão ODBC com o banco de dados criado.
Figura 3. Fontes de Dados (ODBC)
Clique em adicionar, procure o driver adequado...
Carolina Fardo Giacomelli
junho 2010
3
Figura 4. Localização do driver adequado ao programa utilizado para gerenciar o BDR
...e preencha corretamente a aba a seguir.
Figura 5. Configuração da conexão ODBC
Se há alguma dúvida quanto a esses dados, o “MySQL Administrator” os fornece.
Figura 6. MySQL Administrator
Carolina Fardo Giacomelli
junho 2010
4
Figura 7. Teste de conexão com o banco
Pronto! Esta etapa está terminada.
Figura 8. Conexão ODBC recém criada
Passo 3. Criar tabelas
Ao menos 3 tabelas serão criadas.
Tabela de dados - armazena os dados desejados
Tabela SQLLIB - armazena as instruções para as transferências do/para o banco
Tabela SQLERR - registra erros durante o processo
As duas últimas são tabelas padrão do iFix e devem ser criadas segundo as seguintes
especificações:
Carolina Fardo Giacomelli
junho 2010
5
Figura 9. Tabela SQLERR
Observar os tipos de dados e tamanhos dos campos na tabela.
Nome do Campo
Tipo de dado (tamanho)
td
Data/Hora
node
Texto (8)
tag
Texto (10 a 30)
sqlname
Texto (8)
fix_err
Texto (100)
sql_err
Texto (250)
prog_err
Texto (100)
Tabela 1. Campos da tabela “SQLERR”
Carolina Fardo Giacomelli
junho 2010
6
Figura 10. Tabela SQLLIB
Nome do Campo
Tipo de dado (tamanho)
sqlname
Texto (8)
sqlcmd
Texto (100 a 255)
Tabela 2. Campos da tabela “SQLLIB”
Carolina Fardo Giacomelli
junho 2010
7
Figura 11. Exemplo de tabela de dados
Este é um exemplo de tabela de dados. Mais adiante será feito um exemplo utilizando
blocos do iFix transferindo dados para ela.
Com esta tabela criada, encerramos esta etapa.
Passo 4. Criar consultas
Na tabela SQLLIB deverão ser inseridas as instruções para transferência de dados do e
para o banco de dados relacional. Os comandos são escritos em SQL (Structure Query
Language) cuja estrutura não será abordada aqui.
Importante: Deve-se certificar-se que a ordem dos tags no bloco SQD é a mesma
ordem dos itens da sua consulta.
Carolina Fardo Giacomelli
junho 2010
8
Figura 12. Inserindo o comando na tabela SQLLIB
Com o comando “Edit” acionado, é possível editar os campos da tabela. Esta é uma das
formas de inserir o nome e o conteúdo do comando na tabela SQLLIB.
As interrogações no lugar dos valores indicam que este dado virá de uma conexão
ODBC. Aqui, esses dados serão tags do iFix que ficaram explícitos no bloco SQD que será visto
mais adiante. É importante reparar que a ordem desses dados é importante, como já foi dito
mais acima, pois deverá ser igual à ordem dos tags no bloco SQD.
Passo 5. Configurar o “System Configuration Utility” (SCU)
Agora a tarefa SQL será adicionada e configurada. Será criada uma conta que permitirá
uma conexão com o banco por meio do DSN previamente configurado.
No SCU, clique no ícone do “SQL Accounts”:
Carolina Fardo Giacomelli
junho 2010
9
Figura 13. SCU
Figura 14. SQL Accounts
Clicando em “adicionar”, aparecerá a janela para configuração da conta. No campo
“Database Type” seria colocado MySQL Server se houvesse esta opção. Como não, coloca-se
“outros”. E no campo “Database Identifier” coloca-se a conexão ODBC criada no Passo 2.
Figura 15. Configuração da conta
Carolina Fardo Giacomelli
junho 2010
10
Finalizado isto, deve-se configurar a tarefa SQL como se segue:
Figura 16. Configuração da tarefa SQL
Por último, no SCU, devemos verificar se uma tarefa foi adicionada na lista. O
WSQLODC. Geralmente, ela é adicionada automaticamente junto a essas configurações. Mas,
se ela não estiver lá, é preciso colocá-la.
Carolina Fardo Giacomelli
junho 2010
11
Figura 17. SCU - detalhe da localização da lista de tarefas
Figura 18. Lista de tarefas do iFix
Para adicionar a tarefa, no caso dela não estar lá, basta seguir o procedimento simples a
seguir:
Carolina Fardo Giacomelli
junho 2010
12
Figura 19. Adicionando tarefas no SCU (I)
Figura 20. Adicionando tarefas no SCU (II)
Passo 6. Configurar os blocos SQL na base de dados do iFix – SQT e SQD
O iFix possui dois blocos que lidam com conexões com banco de dados relacionais. O
SQL Trigger (SQT) e o SQL Data (SQD) e eles funcionam em cadeias.
Comandos que não exigem transferência de dados, como o de
SQT
remoção, por exemplo.
SQT SQD
SQT SQD ... SQD
Carolina Fardo Giacomelli
Comandos com transferência de até 20 tags
Comandos com transferência de mais de 20 tags.
junho 2010
13
SQT – Esse é o gatilho do transporte de dados. Deverão ser fornecidos o nome do comando
configurado na tabela SQLLIB, a conta configurada no SCU, o tipo de gatilho, por tempo ou por
evento, e o bloco de dados correspondente àquele gatilho.
Bloco de dados
correspondente
Nome do comando
configurado na
tabela SQLLIB
Nome da conta
configurada no SCU
Gatilho por
tempo
OU
Tag que disparará o
gatilho. Pode ser
digital ou analógico
Gatilho por
evento
Tag digital que vai para
1 com a transferência
para o BDR
Figura 21. Bloco SQT
OBS!: O “Confirm Tag” avisa que o comando de transferência foi executado, mas não garante
que os dados foram transferidos corretamente.
SQD – esse bloco é o secundário numa cadeia com o SQT. Ele contém os dados que serão
transportados e a direção do transporte, se para o banco ou do banco. Deve-se tomar muito
cuidado com a ordem e o tipo de dados inseridos nesse bloco. Eles devem estar na mesma
ordem que o comando na tabela SQLLIB e não deve haver inconsistência no tipo desses dados.
No bloco há espaço para 20 tags. Se não for suficiente, outro bloco SQD pode ser posto em
cadeia no campo “Next” do SQD.
Carolina Fardo Giacomelli
junho 2010
14
Bloco gatilho
correspondente
Tags a serem
gravados no DBR
Direção da transferência:
OUT – do iFix para o banco
IN – do banco para o iFix
Se forem necessários
mais tags, coloca-se
outro SQD em cadeia
Figura 22. Bloco SQD
Note que a direção de transferência OUT é usada para inserir valores no BDR utilizando
os comandos INSERT ou UPDATE. Já a direção IN é usada para consultar dados já armazenados
no BDR trazendo-os para o iFix utilizando o comando SELECT.
Assim, quando é preciso armazenar algumas informações importantes de forma
segura, como o iFix não possui tags de caráter retentivo, pode-se usar como alternativa o
recurso de consultas a banco de dados relacionais.
Esse caminho do fluxo de dados é detalhado no final.
Mais uma vez, vale à pena enfatizar: A ordem dos tags devem estar de acordo com a
ordem no comando SQL (e não necessariamente igual à ordem dos campos declarados na
tabela) e o campo deve estar de acordo com o tipo de variável pedida pela tabela.
Ordem dos tags
Figura 23. Detalhe do comando SQL na tabela SQLLIB
Carolina Fardo Giacomelli
junho 2010
15
Tipo esperado
dos tags
Figura 24. Detalhe da tabela tab_teste
Note que, no dado “data_hora” pedido, foi colocado no bloco SQD a palavra chave
TMDT. Existem outras que podem ser usadas:
NODENAME
Nome do nó SCADA local
SQTBLK
Nome do bloco SQT
TMDT
A hora e a data atuais
TIME
A hora atual
DATE
A data atual
Tabela 3. Palavras chaves que podem ser usadas nos campos do bloco SQD
Para exemplificar será feito o seguinte teste: O tag digital “COMANDO_TESTE” será
usado, como já foi visto na descrição do tag SQT “SQT_TESTE”, como disparo quando seu valor
for de nível baixo para nível alto. O disparo irá gerar a gravação do valor do tag analógico
“VALOR_TESTE”, da data e hora e do tag que gerou o disparo na tabela correspondente no
BDR.
Carolina Fardo Giacomelli
junho 2010
16
Figura 25. Tags digital “COMANDO_TESTE” e analógico “VALOR_TESTE”
Figura 26. Visualização da tabela “tab_teste” no MySQL
Carolina Fardo Giacomelli
junho 2010
17
IMPORTANTE: O “Mission Control” possui uma aba chamada “SQL” onde é possível monitorar
este processo. É muito importante na identificação de possíveis erros.
Verificar conta
Iniciar/parar
processo
Verificar conexão
Figura 27. Mission Control
Carolina Fardo Giacomelli
junho 2010
18
Detalhamento do fluxo de dados
As figuras seguintes são adaptadas da apostila do curso “iFix Avançado” desenvolvida
pela GE Fanuc Automation.
Comando de leitura – SELECT
2
Base de Dados
iFix
Gatilho
SQL
1
Dados
SQL
6
Tarefa SQL
de tempo
real
SQLLIB
3
4
Dados
Banco de Dados Relac.
MySQL
5
Figura 28. Fluxo na leitura
Comandos de escrita – INSERT e UPDATE
2
Base de Dados
iFix
Gatilho
SQL
1
Dados
SQL
4
Tarefa SQL
de tempo
real
SQLLIB
3
5
Dados
Banco de Dados Relac.
MySQL
Figura 29. Fluxo na escrita
Comando de remoção – DELETE
2
Gatilho
SQL
Base de Dados
iFix
1
Tarefa SQL
de tempo
real
SQLLIB
3
4
Dados
Banco de Dados Relac.
MySQL
Figura 30. Fluxo na remoção
Carolina Fardo Giacomelli
junho 2010
Download