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