Upload
phamquynh
View
218
Download
0
Embed Size (px)
Citation preview
Mekatronik
Configurações para integração entre
iFix e bancos de dados relacionais
Carolina Fardo Giacomelli
Configurações para integração entre
iFix e bancos de dados relacionais
Carolina Fardo Giacomelli
Configurações para integração entre
iFix e bancos de dados relacionais
Carolina Fardo Giacomelli junho 2010
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 1. Criar o banco de dados
� Passo 2. Configurar o DSN
� 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
� Passo 4. Criar consultas
� Passo 5. Configurar o SCU
� Passo 6. Criar os blocos SQL
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.
SQT Comandos que não exigem transferência de dados, como o de
remoção, por exemplo.
SQT � SQD Comandos com transferência de até 20 tags
SQT � SQD � ... � SQD Comandos com transferência de mais de 20 tags.
Carolina Fardo Giacomelli 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.
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.
OU
Tag digital que vai para
1 com a transferência
para o BDR
Tag que disparará o
gatilho. Pode ser
digital ou analógico
Bloco de dados
correspondente
Gatilho por
tempo
Gatilho por
evento
Nome do comando
configurado na
tabela SQLLIB
Nome da conta
configurada no SCU
Carolina Fardo Giacomelli junho 2010
14
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.
Figura 23. Detalhe do comando SQL na tabela SQLLIB
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
Ordem dos tags
Carolina Fardo Giacomelli junho 2010
15
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.
Tipo esperado
dos tags
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.
Figura 27. Mission Control
Iniciar/parar
processo
Verificar conexão
Verificar conta
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
Figura 28. Fluxo na leitura
Comandos de escrita – INSERT e UPDATE
Figura 29. Fluxo na escrita
Comando de remoção – DELETE
Figura 30. Fluxo na remoção
Base de Dados iFix
Banco de Dados Relac. MySQL
1 2
6 4
Gatilho SQL
Dados SQL
Dados
SQLLIB
Tarefa SQL de tempo
real
3
5
Base de Dados iFix
Banco de Dados Relac. MySQL
1 2
5
Gatilho SQL
Dados SQL
Dados
SQLLIB
Tarefa SQL de tempo
real
3
4
Base de Dados iFix
Banco de Dados Relac. MySQL
1 2
4
Gatilho SQL
Dados
SQLLIB
Tarefa SQL de tempo
real
3