Mekatronik
Configurações para integração entre
iFix e bancos de dados relacionais
Carolina Fardo GiacomelliConfigurações para integração entre
iFix e bancos de dados relacionais
Carolina Fardo GiacomelliConfigurações para integração entre
iFix e bancos de dados relacionais
Carolina Fardo Giacomelli junho 2010 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
Carolina Fardo Giacomelli junho 2010 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 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.
Carolina Fardo Giacomelli junho 2010 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 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)
Carolina Fardo Giacomelli junho 2010 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 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 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.
Carolina Fardo Giacomelli junho 2010 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.
Carolina Fardo Giacomelli junho 2010 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 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 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 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 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 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
Carolina Fardo Giacomelli junho 2010 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 Figura 25. Tags digital “COMANDO_TESTE” e analógico “VALOR_TESTE”
Carolina Fardo Giacomelli junho 2010 Figura 27. Mission Control
Iniciar/parar processo
Verificar conexão
Carolina Fardo Giacomelli junho 2010 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