Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 19 de Julho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
64 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Postos de Combustível: Automação das Bombas
Publicado por ActiveDelphi : Quinta, Janeiro 24, 2008 - 12:47 GMT-3 (3741 leituras)
Comentários 2 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Victory Fernandes O processo de automação de postos de combustível envolve diversas etapas, tais como automação da loja de conveniências, automação da pista, automação da retaguarda, controle de tanques de armazenamento e bombas de combustível.

Neste artigo são apresentadas informações relevantes a respeito do desenvolvimento de um sistema de automação de bombas de combustível. Através do qual é possível monitorar toda a atividade das bombas, bem como intervir remotamente nas mesmas em tempo real, efetuando presets de abastecimento em dinheiro e/ou volume, bloqueando e/ou liberando abastecimentos, alterando preços dos produtos, dentre outras funcionalidades.
O sistema apresentado será baseado no usa da tecnologia de equipamentos da Gilbarco do Brasil ( www.gbr.com.br ), utilizada em toda a rede de postos BR e é de fundamental importância para gestão de postos de combustíveis.
 

Componentes do Sistema
Tipicamente, um sistema de bombas de combustível automatizado segue um esquema semelhante ao apresentado na Figura 01.
Nele, vemos que as bombas de combustível são ligadas ao Concentrador Universal de Bombas – CUB. O CUB é o equipamento responsável por centralizar as informações e dados enviados pelas bombas e gerenciar a comunicação entre o servidor da aplicação e a pista. Neste exemplo, apresentamos as funcionalidades do CUB do fabricante Gilbarco.
O CUB é peça central no desenvolvimento de sistemas de automação de bombas de combustível e por vezes constitui fator restritivo ao maior número de postos automatizados, principalmente devido ao seu relativo alto preço que, quando associado aos custos de compra e manutenção dos sistemas de software necessários, podem invialibilizar este tipo de aplicação em postos de menor porte.
O CUB é ligado, via RS232, a um servidor de aplicação, de preferência dedicado somente a esta função, onde rodam o software de configuração do CUB distribuído pelo fabricante e o software de monitoria de bombas desenvolvido pela software house.
Alguns cuidados devem ser tomados ao realizar este tipo de automação sob pena de prejuízos e/ou problemas sérios no correto andamento das atividades na pista, como é o caso, por exemplo, da importância de se ter um servidor de aplicação dedicado. Uma vez configuradas as bombas para trabalhar sob supervisão do CUB, caso o servidor de aplicação trave e/ou caia por algum motivo, todas as operações da pista são interrompidas até que o sistema seja regularizado ou que as bombas sejam re-configuradas para operar de forma não supervisionada.
O sistema pode também ter acesso via Internet, caso a software house disponibilize algum tipo de acesso remoto às informações gerencias do posto. Tipicamente se faz necessário desenvolver alguma interface deste tipo, pois a maioria dos proprietários de postos de combustível os administra remotamente, principalmente no caso específico de postos de estrada e cidades do interior.
 

Figura 01: Esquema típico de sistema de automação de bombas de combustível

 

Ambiente de Desenvolvimento
Para iniciar o desenvolvimento de uma aplicação de automação de bombas de combustível, deve-se fazer o download do Software Development Kit - SDK do fabricante. No caso da Gilbarco, o SDK é composto por um simulador de bombas de combustível, uma ferramenta de configuração do CUB e um simulador do CUB.
Para iniciar o desenvolvimento, é necessário instalar, configurar e executar o simulador de bombas de combustível (PumpSim.exe), mostrado na Figura 02, em um computador que deve ser ligado, via RS232, ou computador de desenvolvimento. O simulador será responsável por enviar informações ao computador de desenvolvimento, permitindo que o programador simule todas as operações que podem ser executadas pelo frentista em uma bomba de combustível real.
 

Figura 02: Simulador de Bombas de Combustível da Gilbarco (PumpSim.exe)

 

Após executar o simulador no computador auxiliar, deve-se executar a ferramenta de configuração do CUB (CUBConfig.exe) no computador de desenvolvimento, conforme mostrado na Figura 03. Esta ferramenta permite configurar um CUB real ou um CUB Simulado, indicando dentre outras coisas, quantas bombas de combustível estão ligadas ao mesmo.

 

Figura 03: Ferramenta de configuração do CUB da Gilbarco (CUBConfig.exe)

 

Uma vez configurado para o modo CUB Simulado, deve-se executar o software Simulador de CUB (CubDemo.exe) na máquina de desenvolvimento. Surgirá então uma tela tipo MS-DOS conforme mostrado na Figura 04, iniciando assim a comunicação entre o servidor simulado de bombas de combustível (PumpSim.exe) e o simulador de CUB (CubDemo.exe).

 

Figura 04: Simulador de CUB da Gilbarco (CubDemo.exe).

 

Quando o simulador de CUB é executado, surge no canto inferior direito da tela, um ícone para cada bomba, conforme configuração feita na ferramenta de configuração de CUB (CUBConfig.exe). Inicialmente, todas as bombas aparecem marcadas com um “X”, e apresentadas no estado “Fora do Ar”. À medida que vai sendo estabelecida a comunicação entre o servidor simulado de bombas de combustível (PumpSim.exe) e o simulador de CUB (CubDemo.exe), as bombas mudam de estado, conforme mostrado na Figura 05.

 

Figura 05: Ícones das bombas criados pelo Simulador de CUB da Gilbarco (CubDemo.exe).

 

Os estados das bombas podem ser vistos passando o mouse sobre cada um dos respectivos ícones da barra do Windows. Internamente na aplicação de automação os estados constituem constantes retornadas pelo CUB, e devem ser declaradas conforme segue:

 

//--- Declaração de Constantes Globais de Estado das Bombas ---
 const SFORADOAR = '0';
 const SDISPONIVEL = '1';
 const SABASTECENDO = '2';
 const sFIMDEVENDA = '3';
 const SBICOFORA = '5';
 const SBOMBAFECHADA = '6';
 const SPAUSA = '8';
 const SDESCONHECIDO = '7';
 const SAUTORIZADA = '9';

 

Faz-se necessário que o desenvolvedor crie uma representação icônica para cada um dos estados que podem ser assumidos pela bomba dentro da aplicação, de forma a facilitar a representação dos mesmos para o usuário final. Na Figura 06 apresentamos uma legenda completa dos estados, o momento em que os mesmos ocorrem, bem como uma representação icônica proposta.

 

Figura 06: Legendas de estados assumidos pelas bombas.

 

Comunicação com o CUB
A comunicação entre o CUB e aplicação de automação desenvolvida é feita através das funções disponibilizadas pelo fabricante, presentes na CUB32.dll. Segue a lista das funções e suas respectivas declarações:
 

//--- Declaração de Funções disponíveis em CUB32.dll ---
function CUBAbrirBomba(NroBomba: LongInt): LongInt; stdcall; external 'CUB32.dll';
function CUBLerEstado(NroBomba: LongInt; Estado: Pointer): LongInt; stdcall; external 'CUB32.dll';
function CUBAutorizarBomba(NroBomba: LongInt): LongInt; stdcall; external 'CUB32.dll';
function CUBDesautorizarBomba(NroBomba: LongInt): LongInt; stdcall; external 'CUB32.dll';
function CUBFecharBomba(NroBomba: LongInt): LongInt; stdcall; external 'CUB32.dll';
function CUBContinuarAbastecimento(NroBomba: LongInt): LongInt; stdcall; external 'CUB32.dll';
function CUBSetarNivelDePreco(NroBomba: LongInt; NivelDePreco: LongInt): LongInt; stdcall; external
'CUB32.dll';
function CUBLerRTM(NroBomba: LongInt; var RealTimeMoney: LongInt): LongInt; stdcall; external
'CUB32.dll';
function CUBConfirmarLeituraVenda(NroBomba: LongInt): LongInt; stdcall; external 'CUB32.dll';
function CUBDescarregarDll: LongInt; stdcall; external 'CUB32.dll';
function CUBProgramarPreco(NroProduto: LongInt; NivelDePreco: LongInt;
NovoPreco: LongInt): LongInt; stdcall; external 'CUB32.dll';
function CUBMapearProduto(NroBomba: LongInt; NroBico: LongInt; NroProduto: LongInt ) : LongInt;
stdcall; external 'CUB32.dll';
function CUBAutorizarBico(NroBomba: LongInt; NivelDePreco: LongInt; NroBico: LongInt ): LongInt;
stdcall; external 'CUB32.dll';
function CUBLerTotais(NroBomba: LongInt; NroProduto: LongInt; NivelDePreco: LongInt;
EncerranteLitros: Pointer; EncerranteDinheiro: Pointer; var Preco: LongInt): LongInt;
stdcall; external 'CUB32.dll';
function CUBLerVenda(NroBomba: LongInt; var NroProduto: LongInt; var NivelDePreco: LongInt; var
Mililitros: LongInt; var Dinheiro: LongInt; var Preco: LongInt ): LongInt; stdcall; external
'CUB32.dll';
function CUBPresetLitros(NroBomba: LongInt; NivelDePreco: LongInt; NroBico: LongInt;
CentiLitrosMaximo: LongInt ): LongInt; stdcall; external 'CUB32.dll';
function CUBPresetDinheiro(NroBomba: LongInt; NivelDePreco: LongInt; ValorMaximo: LongInt ):
LongInt; stdcall; external 'CUB32.dll';
function CUBLerPaginaTag( NroTag : LongInt; NroPagina: LongInt; DataBuffer: Pointer) : LongInt;
stdcall; external 'CUB32.dll';
 

 

Dentre as funções da CUB32.dll destacam-se:
 
Ler Estado da Bomba (CUBLerEstado):
Esta função retorna o estado atual de todas as bombas ou de uma bomba específica.
 

function CUBLerEstado(NroBomba: LongInt; Estado: Pointer): LongInt; stdcall; external 'CUB32.dll';
 

Parâmetros:
· long NroBomba {recebe valor de de 0 a 99}
· char *Estado {Buffer alocado pelo PDV onde será informado o estado solicitado}
 
Retorno:
· 0 = O CUB Server recebeu a ordem corretamente.
· 1 = Erro nos parâmetros. O número de bomba é incorreto.
· 2 = Erro de comunicação entre a dll e o servidor.
· Outro = Código de erro retornado pelo Windows. Ver winsock2.h ou winerror.h.
 
Nota:
· Se NroBomba = 0, será informado o estado de todas as bombas, sendo cada byte o estado de uma delas.
· Se NroBomba <> 0, só será informado o estado da bomba solicitada.
 

Leitura de Venda das Bombas (CUBLerVenda):
Esta função deve ser utilizada quando a bomba está em estado de “FIMDEVENDA” (após o fim de um abastecimento na pista). Após ter chamado esta função e gravados os dados na base de dados do software de automação de bombas, deve ser chamada a função CUBConfirmarLeituraVenda para que a bomba fique livre para um novo abastecimento.
 

function CUBLerVenda(NroBomba: LongInt; var NroProduto: LongInt; var NivelDePreco: LongInt; var
Mililitros: LongInt; var Dinheiro: LongInt; var Preco: LongInt ): LongInt;
stdcall; external 'CUB32.dll';

 

Parâmetros:
· long NroBomba {recebe valor de de 1 a 99}
· long *NroProduto {pointer onde será informado o código de produto}
· long *NivelPreco {pointer onde será informado o nível de preço}
· long *Mililitros {pointer onde será informada o volume do abastecimento}
· long *Dinheiro {pointer onde será informado o valor do abastecimento}
· long *Preço {pointer onde será informado o preço unitário do produto}
 
Retorno:
· 0 = CUB Server recebeu a ordem corretamente.
· 1 = Nº de bomba incorreto ou bomba não está em estado FIMDEVENDA.
· 2 = Erro de comunicação entre a dll e o servidor.
· Outro = Código de erro retornado pelo Windows. Ver winsock2.h ou winerror.h.
 

Leitura da Venda em Tempo Real
Esta função permite que o usuário veja na tela do computador os valores do abastecimento que esteja acontecendo na pista. O valor retornado não é totalmente real-time. Existem vários atrasos envolvidos no processo de comunicação que fazem com que o valor não seja totalmente preciso, mas a aproximação é muito boa.
 

function CUBLerRTM(NroBomba: LongInt; var RealTimeMoney: LongInt): LongInt; stdcall; external 'CUB32.dll';

Parâmetros:
· long NroBomba {recebe valor de de 1 a 99}
· long *RTM {pointer onde será devolvido o ultimo valor lido da bomba}
 
Retorno:
· 0 = CUB Server recebeu a ordem corretamente.
· 1 = Erro nos parâmetros. Número de bomba errado ou bomba não configurada.
· 2 = Erro de comunicação entre a dll e o servidor.
· Outro = Código de erro retornado pelo Windows. Ver winsock2.h ou winerror.h.
 

Tipicamente, para implementar o tratamento mínimo da comunicação com o CUB e fazer a automação das bombas, é necessário iniciar um novo projeto, adicionar um componente TTimer e implementar o seguinte algoritmo:
 
1. Lê o estado de todas as bombas juntas (CUBLerEstado)
2. Faz um loop para processar o estado lido de cada uma das bombas
3. Caso o estado da bomba tenha mudado em relação ao estado anterior
    3.1. Atribui o novo estado à bomba atualizando as representações visuais
    3.2. Caso o novo estado = FIMDEVENDA
        3.2.1. Faz a leitura das informações da venda (CUBLerVenda)
        3.2.2. Confirma a leitura da venda para o CUB (CUBConfirmarLeituraVenda)
        3.2.3. Lê os encerrantes de dinheiro e litros da bomba (CUBLerTotais)
        3.2.4. Atualiza a tela e/ou a base de dados do sistema
 
Uma vez implementado o algoritmo, podemos caprichar na interface visual do sistema, de forma a obter um resultado semelhante ao mostrado na Figura 07, onde o usuário é capaz de visualizar o estado de todas as bombas e executar todas as funções disponibilizadas pela SDK de forma muito fácil e intuitiva.
 

Figura 07: Aplicação completa de automação de bombas de combustível da TKS Software.

 

Aplicações como a mostrada na Figura 07 permitem o controle completo da pista a partir de uma central, que pode estar localizada, por exemplo, na loja de conveniências do posto.
 

O sistema Tk-Posto
O aplicativo Tk-Posto, desenvolvido pela empresas TKS Software ( www.igara.com.br ) mostrado na Figura 07 implementa grande parte dos conceitos apresentados neste artigo em uma solução comercial de automação de postos de combustíveis que pode ser adquirida com seu código fonte completo através do site http://www.igara.com.br/produto.php?cod_produto=2
 
O sistema implementa as seguintes funcionalidades:
    · Monitoria e controle completo do bico de bomba
    · Monitoria em tempo real das vendas da pista
    · Preset da quantidade de litros a ser vendida ao cliente
    · Preset do valor em dinheiro a ser vendido ao cliente
 
Algumas de suas principais telas são:
    · Cadastro de Produtos
    · Cadastro de Usuários
    · Cadastro de Clientes
    · Supervisão de Pista
    · Preset do valor em dinheiro a ser vendido ao cliente
    · Preset do valor em litros a ser vendido ao cliente
    · Acompanhamento em tempo real da venda da bomba
    · Listagem de Encerrantes
 
É possível ainda se ter acesso a vídeos que demonstram a operação do sistema, documento de apresentação detalhada do produto, e estudo de caso do aplicação do sistema em posto de combustíveis localizado na cidade de Camaçari – Bahia.
Maiores informações através do site: http://www.igara.com.br/produto.php?cod_produto=2


Questões políticas envolvendo a automação de postos no Brasil
Através de funções de preset em valor e volume, há muito é possível tecnicamente que os postos sejam operados com número mínimo de frentistas ou até mesmo sem eles, como ocorre na grande maioria dos países desenvolvidos.
No entanto, por motivos populistas, protecionistas ou até mesmo eleitoreiros, o Brasil insiste em resistir ao progresso, impedindo por lei que os postos de combustíveis adotem tal tipo de tecnologia de forma a se modernizar, reduzindo seus custos operacionais e entrando em sintonia com as tendências mundiais.
Este tipo de tecnologia deve ser usado somente para fins de automação, supervisão e controle da pista e seus abastecimentos, não podendo ser usado para mudança do conceito de atendimento dos postos.
Posturas intervencionistas como estas dificultam a popularização das tecnologias e conseqüentemente o crescimento de todos os setores da economia ligados a ela. Sob a pretensa justificativa de proteção à classe frentista, o estado:
    · Onera os proprietários de postos e conseqüentemente os consumidores finais, que no final das contas pagam pelos altos custos operacionais dos postos.
    · Dificulta diretamente o crescimento de toda uma cadeia de pesquisa e desenvolvimento de alta tecnologia em hardware e software que, importante ressaltar, também gera emprego e renda e é base sólida para o crescimento e desenvolvimento de um país.
Questões como estas devem ser resolvidas através de políticas de educação, qualificação e recolocação de mão-de-obra. Pois a nossa diferença, quando comparados aos demais países, não está na nossa capacidade técnica de desenvolvimento e aplicação da tecnologia, mas sim no fato de que os países desenvolvidos, antes mesmo de automatizar seus postos, descobriram através da educação, que o crescimento e desenvolvimento de um país em uma economia de mercado globalizada, se dá com o mínimo possível de intervenção do estado.
 

Implantação do sistema
O processo de implantação do sistema no posto de combustível em questão não depende apenas da implementação e instalação do software desenvolvido, mas também de um processo de consultoria onde devem ser verificados alguns dos seguintes pontos:
    · Verificação de Compatibilidade dos modelos instalados: Infelizmente nem todas as marcas e modelos de bombas podem ser utilizadas com os CUBs especificados, sendo assim faz-se necessário um levantamento das marcas e modelos instalados no posto de combustível em questão, que deve ser encaminhado ao fabricante do CUB para avaliação de compatibilidade.
    · Instalação das placas de comunicação: Eventualmente bombas compatíveis com o sistema de automação podem, no entanto estar desprovidas de placas de comunicação, sendo assim necessária a aquisição e instalação das mesmas. O processo de instalação das mesmas depende de marca e modelo e deve ser verificado junto ao fabricante.
    · Configuração das Bombas: As bombas normalmente não estão por padrão configuradas para operar em modo supervisionado, mesmo quando já estejam com suas placas de comunicação instaladas faz-se necessário configurar seus softwares aplicativos para reconhecer e enviar dados para o CUB em questão. O processo de configuração das mesmas depende de marca e modelo e deve ser verificado junto ao fabricante.
    · Instalação de Tubos Flexíveis e Unidades Seladoras: As normas de segurança para postos de combustíveis impõem inúmeras restrições relativas ao uso de recursos elétricos e eletrônicos na região das bombas, sendo assim a instalação dos cabos de dados deve ser feita dentro dos padrões normativos utilizando tubos e unidades seladoras apropriadas. Estes equipamentos são indispensáveis à segurança do processo e devem compor a proposta de preço da instalação de harware do sistema.
    · Passagem de Passagem de Cabos de Dados e Dutos Subterrâneos e Aéreos: Ao se automatizar postos de combustíveis é comum que a pista não esteja devidamente preparada para receber o cabeamento necessário ao processo de automação das bombas, sendo por vezes necessária a passagem de dutos subterrâneos e aéreos para o cabeamento. Estes itens também devem compor a proposta de preço da instalação de harware do sistema.
    · Energia estabilizada: Um dos grandes problemas encontrados na instalação de sistemas em postos de combustível, principalmente os de beira de estrada, é a má qualidade do fornecimento de energia elétrica, que afeta diretamente a correta operação dos sistemas computacionais, tais como os bancos de dados, que podem ser facilmente corrompidos em caso de queda de energia. Sugerimos, portanto o uso indiscriminado de no-breaks e estabilizadores que devem ser incluídos ao compor a proposta de preço da instalação de harware do sistema.
    · Treinamento: É de fundamental importância o devido treinamento do pessoal envolvido na operação do sistema no posto, principalmente no que diz respeito aos frentistas que na maioria dos casos não possuem conhecimento aprofundado de informática e precisam de maior acompanhamento para correta operação do mesmo.
    · Manutenção: É de fundamental importância a devida manutenção do sistema, uma vez que a maioria das bombas ao ser configurada para o modo de supervisão com CUB, não funcionam caso o mesmo não esteja funcionando corretamente, sendo necessário re-configurar toda a pista para o modo não supervisionado pelo CUB caso haja algum problema com o equipamento (por exemplo falta de energia). Este é o tipo de procedimento que causa bastante transtorno e deve ser evitado ao máximo.
 

Conclusão

Este artigo serve como uma rápida introdução ao processo de automação de bombas de combustível, cobrindo de forma geral os principais conceitos e ferramentas envolvidas no processo de implementação deste tipo de solução.  
A aplicação dos conceitos apresentados permite o desenvolvimento de soluções completas com diversos recursos avançados, criados sob medida para as necessidades deste nicho de mercado. No entanto o desenvolvedor deve estar pronto para encarar um mercado altamente fechado que dificulta e muito, a entrada de novas soluções. Principalmente no que diz respeito às bandeiras, estas procuram evitar que seus filiados utilizem softwares de terceiros que não aqueles já previamente acordados com a bandeira em questão.
Sistemas como estes envolvem o correto funcionamento e operação de diversos dispositivos e por conseqüência devem estar associados a contratos de manutenção, pois os postos normalmente não dispõem de mão-de-obra especializada para tanto. No entanto um problema muito importante a ser contornado pelo desenvolvedor, e que dificulta bastante a entrada neste mercado, são as distâncias físicas, principalmente quando se trata de postos de estrada ou cidades do interior.
É importante ressaltar, no entanto, que o desenvolvimento e conseqüente implantação do sistema em um cliente final requer, dentre outras coisas, conhecimentos a respeito da legislação normativa específica de postos de combustível, bem como conhecimentos técnicos sobre a interface e configuração as bombas, tópicos estes não abordados neste artigo. Maiores informações podem ser obtidas junto ao fabricante no site www.gbr.com.br
 
Victory Fernandes é Engenheiro Mestrando em Redes de Computadores, e desenvolvedor sócio da TKS Software - Soluções de Automação e Softwares Dedicados. Pode ser contatado em victory@igara.com.br , ou através dos sites www.igara.com.br.
 



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: rogeriojim (rogeriojim@hotmail.com) : Jan 24, 2008 - 09:52
(Informações sobre o membro | Enviar uma mensagem) http://http://
Artigo bem interessante esta de parabens.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados