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

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
32 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]  Balanças de Pesagem - Abordagem prática para balanças ALFA
Publicado por ActiveDelphi : Terça, Março 25, 2008 - 08:16 GMT-3 (1540 leituras)
Comentários comentar   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Victory Fernandes A automação atinge hoje indústrias, laboratórios, restaurantes e frigoríficos, que utilizam balanças de pesagem destinadas às mais diversas aplicações, integradas aos mais diversos tipos de equipamentos. Tais balanças são aplicadas em inúmeros processos produtivos, desde balanças de alta precisão até balanças de pesagem de carga que suportam dezenas de toneladas.

Alguns dos principais problemas dos desenvolvedores são:
    - Como integrar as balanças de pesagem ao sistema gerencial automatizando o processo produtivo?
    - Como fazer isso de forma transparente sem precisar conhecer a fundo a comunicação de baixo nível com o hardware?
    - Onde obter as informações para comunicação, suporte e meios para efetuar testes de comunicação sem possuir o hardware necessário no laboratório de desenvolvimento?
Tendo em vista estas e outras dificuldades, apresentamos este artigo descrevendo todo o processo de configuração, implementação e testes de comunicação com balanças de pesagem ALFA ( www.alfainstrumentos.com.br ), muito encontradas nos ambientes industriais integradas a diversas máquinas e equipamentos..
Abordaremos desde a configuração dos registradores internos da balança, passando pela comunicação inicial e testes com o HyperTerminal, aplicativo demo de comunicação em Delphi, simulador da balança para testes em laboratório sem a necessidade do equipamento, até a análise de baixo nível do protocolo de comunicação utilizado pelo fabricante.
Apesar do protocolo de comunicação do fabricante dispor de inúmeras funcionalidades de comunicação e programação do equipamento, este artigo mantém seu foco principal na leitura de informações acerca do peso dos objetos colocados sob a balança. Os resultados apresentados aqui foram obtidos em testes com balança ALFA Mod.3102 acoplada a uma máquina recuperadora de plástico da Carnevale numa empresa produtora do pólo plásticos de Camaçari-Ba.
 

A Balança ALFA e o indicador Mod.3102
Estão disponíveis portas de comunicação do tipo serial RS232, RS422 (selecionáveis através de jumper interno) e Paralela padrão Centronics, todas acessadas através de prensa-cabo com a fiação conectada diretamente na placa do equipamento.
Optamos por trabalhar com a comunicação serial RS232, devido a sua simplicidade e facilidade de integrar com computadores e outros dispositivos que já trazem tal porta de comunicação integrada.
O primeiro passo para leitura das informações da balança a partir do sistema, é fazer a correta configuração dos jumpers internos para o padrão de comunicação escolhido e a ligação correta do cabo de dados. Para isso é necessário abrir os parafusos laterais do indicador, conforme mostrado na Figura 01 a seguir, de forma que teremos acesso à placa do equipamento.


 

Figura 01: Indicador digital ALFA Mod.3102. Remoção de parafusos laterais para acesso à placa

 

Uma vez removida a tampa frontal, temos acesso à placa do equipamento onde deve ser configurado o jumper para comunicação RS232, conforme ponto circulado em vermelho mostrado na Figura 02 a seguir. Além disso, devemos conectar os fios do nosso cabo serial, conforme mostrado nas setas coloridas da Figura02, TxD (vermelho), RxD (verde) e GND (azul) respectivamente.

 

Figura 02: Placa do equipamento ALFA Mod.3102. Configuração e conexão RS232

 

O cabo serial de comunicação com o equipamento deve ser confeccionado e conectado ao equipamento, conforme mostrado na Figura 03 a seguir.

 

Figura 03: Cabo de comunicação seria RS232 conector DB9 e conexão na placa do equipamento.

 

A interface serial não possui nenhum sinal de controle, e permite apenas a ligação ponto a ponto. A cada 250 milisegundos, é enviado um pacote de informações a uma taxa de 9600 bauds, 8 bits de dados, 1 stop-bit e sem paridade, contendo, dentre outros parâmetros, informações do peso do objeto colocado sobre a balança.
O formato do pacote da mensagem enviada é, conforme apresentado na Figura 04 a seguir, onde os bits estarão indicando sua função ativada quando apresentarem nível lógico 1.
 

 

Figura 04: Formato do pacote de dados enviado pelo equipamento.

 

 

Byte

Definição

STX

Início do pacote de comunicação (02 h);

STATUS 1

bit 7 = 1
bit 6 - Alarme de sobrecarga
bit 5 - Alarme de saturação
bit 4 - Detecção de movimento de peso
bit 3 - Peso negativo (relativo a P4 até P0)
bit 2, 1 e 0 - Posição do ponto decimal em binário

STATUS 2

bit 7 = 1
bit 6 = TR3
bit 5 = TR2
bit 4 = TR1
bit 3 = Set-point 3
bit 2 = Set-point 2
bit 1 = Set-point 1
Bit 0 = (livre);

PESO+TARA

P4 até P0: Peso apresentado no visor do indicador (em ASCII);
T4 até T0: Peso relativo à tara (em ASCII);

ETX

Final do pacote de comunicação (03 h);

BCC

Checksum dos dados enviados. Cálculo de OU
EXCLUSIVO de STX A ETX inclusive;

 

Os campos relativos aos set-points dizem respeito a 3 saídas em coletor aberto, opto-isoladas, com capacidade de 300 miliamperes / 30 volts entre VI+ e VI- (alimentação externa). Estas saídas são controladas por valores de set-points anteriormente programados, podendo ser usadas para controles de dispositivos diversos do equipamento, como abertura e fechamento de válvulas bem como ter seus valores lidos pelo computador.
Os campos TR1, TR2 e TR3 dizem respeito ao tipo de acionamento das travas. A opção 0 (zero) configura a saída como acionamento sem trava, ou seja, ativa a saída quando o peso líquido passa pelo ponto programado e desativa quando o peso for menor que o programado, descontado a histerese.
Para maiores informações sobre set-points e travas deve-se consultar o manual do fabricante.
 
Uma vez configurado o equipamento, feitas as devidas conexões, e conhecendo o formato de dados dos pacotes transmitidos, passamos agora para a comunicação com o computador e tratamento das informações lidas.

 


Comunicação via HyperTerminal
Após configuração dos parâmetros da balança, é preciso verificar se a mesma está comunicando corretamente com o software padrão de comunicação do Windows, o HyperTerminal. Para tanto, abra o HyperTerminal no Windows, seguindo em Iniciar> Programas> Acessórios> Comunicação> HyperTerminal, e crie uma nova conexão configurada como segue:
 

Porta Serial: Selecione a porta serial onde o equipamento estiver conectado
Bits por segundo: 9600
Bits de Dados: 8
Paridade: Nenhum
Bits de Parada: 1
Controle de Fluxo: Nenhum
 

Utilize sempre o HyperTerminal como o primeiro teste para garantir a efetividade da comunicação pois o mesmo é um programa oficial da Microsoft que acompanha o Windows e, somente se os dados estiverem chegando corretamente, passamos para a próxima etapa: integrar a comunicação ao nosso aplicativo.
Uma vez concluída a conexão, após o pressionamento do botão de transmissão das informações no indicador digital da balança, o HyperTerminal efetua a leitura da string na porta serial e o resultado final será semelhante ao mostrado na Figura 05:
 

Figura 05: Comunicação com a balança via HyperTerminal e string lida da porta serial.

 

A string lida no HyperTerminal aparece segundo a interpretação em ASCII dos bytes enviados pela balança, de acordo com o protocolo de comunicação. Portanto, não se espante se os dados aparecerem truncados ou cheios de símbolos ilegíveis; esse é realmente o resultado esperado, e a tradução e interpretação desta string ilegível para um formato amigável é justamente o trabalho das funções que você terá que implementar para tratar o protocolo. Outra forma de poupar todo o tempo de implementação destas funções é usar a ALFA_Unit, que será apresentada nos tópicos seguintes e já implementa tal tratamento.
 
A leitura das informações da balança por parte do HyperTerminal garante que o hardware, as configurações de drivers e o software estão corretos, e que podemos prosseguir com os testes do aplicativo demo. Caso contrário, se faz necessário a verificação dos itens que estejam apresentando problemas antes de prosseguir. Alguns dos problemas mais comuns encontrados até essa etapa são:
 
- A configuração dos parâmetros na balança está incorreta.
- A configuração dos parâmetros no HyperTerminal está incorreta.
- A placa de comunicação serial da balança está com problemas.
- A porta serial do computador está com problemas físicos ou de configuração de driver no sistema operacional.
- A configuração sugerida dos parâmetros do HyperTerminal é a default e não apresentou problemas nos modelos testados. Caso todos os itens anteriores aparentem estar operando corretamente e ,mesmo assim, a comunicação não funcione corretamente, entre em contato com o fabricante para maiores informações.
 

Aplicativo Demo
O aplicativo demo é um programa que faz a leitura da string enviada pela balança e os entrega sob a forma de variáveis do Delphi, ao programador. Esta leitura e tradução são implementadas utilizando as funções da ALFA_Unit. Esta unit implementa internamente o tratamento completo das informações do protocolo padrão de comunicação das balanças ALFA (conforme documento Protocolo de Comunicação Serial Alfa Instrumentos versão 2.0), o que torna o processo como um todo muito mais simples.
 

Figura 06: Demo de comunicação com balança de pesagem ALFA utilizando a ALFA_Unit

 

O demo já vem previamente configurado para os parâmetros descritos na Comunicação via HyperTerminal. Sendo assim, basta clicar no botão Conectar para que ele passe a receber, assim como o HyperTerminal, a string enviada via porta serial pela balança no campo Texto Recebido.
A principal diferença no entanto, é que o demo apresenta separadamente no campo Texto Tratado, as informações enviadas pela balança de uma forma legível e de fácil interpretação.
 
Caso deseje recompilar o programa demo para alterar seus valores ou implementar outras funcionalidades, é necessário copiar o arquivo ALFA_Unit.dcu para o diretório Lib de instalação do Delphi, no caso do Delphi 6 por exemplo, C:\Arquivos de programas\Borland\Delphi6\Lib
 
Agora vamos prosseguir, e saber como a comunicação, leitura e tradução da string lida é implementada pelo demo.
 

Comunicação do Demo com a porta serial
A comunicação com a porta serial para a leitura da string enviada pela balança pode ser feita utilizando qualquer componente disponível para este fim. Existem diversos componentes gratuitos para porta serial, disponíveis para download na Internet, e você pode utilizar aquele que achar melhor, ou até mesmo desenvolver seu próprio componente de comunicação.
No demo, utilizamos o componente gratuito TcommPortDriver para efetuar a comunicação, por já estarmos familiarizados com o mesmo. O TCommPortDriver é um componente gratuito para Delphi que reúne todo o código de baixo nível necessário para o controle de portas seriais. Suas propriedades e métodos de conexão e transmissão de dados possibilitam utilizar as portas seriais facilmente.
 
Para instalar o componente TCommPortDriver, descompacte o arquivo CommPortDriver.zip, que acompanha o demo em questão, na pasta desejada. No Delphi, abra o arquivo ComDrv32.dpk na pasta de instalação do componente e clique no botão Compile e depois em Install, para concluir a instalação.
Depois de configurados os parâmetros de comunicação descritos na Comunicação via HyperTerminal, o demo implementa o evento OnReceiveData do componente TCommPortDriver para fazer as chamadas das funções de tradução da ALFA_Unit, toda vez que o componente receber dados pela porta serial, como mostrado a seguir:
 

 

 

ALFA_Unit –Tratamento do protocolo de comunicação da balança
No evento de OnReceiveData, descrito no código anterior, após fazer a leitura, a string lida da porta serial é armazenada na variável Buffer. São feitas então 4(quatro) chamadas às funções de tratamento do protocolo presentes na ALFA_Unit. São elas:

 

procedure Trata_Buffer(Buffer: String; var STATUS1, STATUS2, Peso, Tara, CK_SUM: String);
procedure Trata_STATUS1(STATUS1: string; var display : string; var peso_negativo, sensor_movimento, saturacao, sobrecarga: boolean);
procedure Trata_STATUS2(STATUS2: string; var TR1, TR2, TR3, SP1, SP2, SP3: boolean);

 

Como veremos no tópico Protocolo de Comunicação – ALFA, a string lida se divide em 4 bytes de dados principais que contêm as informações enviadas pela balança: STATUS1, STATUS2, Peso+Tara e CheckSum.
Então, a primeira chamada feita à função Trata_Buffer passa a string lida como parâmetro, e serve para “quebrar” a string nessas 4(três) partes principais, retornando as mesmas em 5 variáveis, STATUS1, STATUS2, Peso, Tara, CK_SUM respectivamente.
Como também veremos a seguir no tópico Protocolo de Comunicação – ALFA, as partes denominadas STATUS1 e STATUS2 devem então ser subdivididas, para que se possa retirar delas as outras informações que elas contêm. Para isso são feitas as chamadas às funções Trata_STATUS1 e Trata_STATUS2 passando como parâmetros as partes respectivas, e recebendo como retorno as variáveis relativas aos dados contidos dentro de cada uma dessas partes.
 
Pronto! Está feita, de forma simples e muito rápida, a comunicação e interpretação dos valores transmitidos pela balança ALFA, através da chamada de apenas 3(três) funções de tratamento, sem que fosse necessário conhecer o tratamento de baixo nível do protocolo em questão. Logo podemos ressaltar como vantagens na utilização a ALFA_Unit:
 
- Tratamento completo do protocolo ALFA com abstração total da camada de baixo nível.
- Velocidade na implementação da comunicação com a balança.
- Facilidade na obtenção das informações transmitidas.
- Demo de comunicação com a balança.
- Fontes em Delphi totalmente comentados.
- FAQ de implementação e uso.
 
A ALFA possui no mercado uma infinidade de modelos de balanças, e muitas pessoas se questionam sobre a compatibilidade da ALFA_Unit com esse ou aquele modelo. É importante lembrar que a compatibilidade da ALFA_Unit não é função, necessariamente do modelo, e sim do formato do pacote de dados transmitido durante a comunicação e utilizado pelo modelo da balança que o desenvolvedor tiver em mãos. Sendo assim, consulte o manual da sua balança e verifique o formato de dados. Caso seja o mesmo apresentado aqui o produto será 100% compatível!

 

Simulador de Balanças ALFA
Agora que já vimos como fazer a comunicação utilizando a balança, apresentamos uma solução para uma das maiores dificuldades encontradas por implementadores nesta área: a necessidade de ter uma balança disponível no laboratório de desenvolvimento para fazer testes.
O simulador, mostrado na Figura 07, possibilita realizar os testes de implementação do seu software para comunicação com balanças ALFA, sem que, para isso, seja necessário ter a balança, bastando que este esteja sendo executado em um outro computador conectado pela porta serial.
 

Figura 07: Simulador de Balanças ALFA – Envio de informações

 

Na aba Configuração, podem-se configurar todas as opções de valores transmitidos e, após clicar em Conectar, o simulador, além de transmitir as informações pela porta serial, exibe no campo String Tratada todos os parâmetros enviados e seus valores atribuídos, tais como Peso, Tara e etc. Isso facilita as atividades de batimento entre informações enviadas e recebidas pelo implementador, que tem todas as informações exibidas em tela, ao contrário da própria balança que somente informa o peso no display.

 

Figura 08: Simulador de balanças TOLEDO – Configurações do simulador

 

É importante ressaltar que algumas funcionalidades como modo de transmissão contínua e sensor de movimento, não estão implementadas nesta versão. Desta forma o simulador não envia dados continuamente com intervalos de 250 milisegundos entre cada envio, como é feito pela balança, sendo necessário efetuar o clique no botão de enviar para que as informações sejam enviadas.
 
O cabo de comunicação para uso do simulador deve ser confeccionado conforme a Figura 09 a seguir retirada do site http://www.rogercom.com/PortaSerial/PortaSerial.htm  (FONTE)
 

Figura 09: Cabo serial para uso com o Simulador de Balanças ALFA conexão PC-PC

 

Protocolo de Comunicação – ALFA
Agora que já vimos como fazer a implementação da comunicação com a balança, vamos aprofundar um pouco mais o nosso estudo, e entender a forma como as informações são enviadas ao computador.
 
A balança transmite as informações para o computador obedecendo a um protocolo de comunicação do fabricante definido no documento Protocolo de Comunicação Serial Alfa Instrumentos versão 2.0. Este protocolo define as posições das variáveis na seqüência binária transmitida, bem como os valores assumidos pelas mesmas.
O formato básico da seqüência binária transmitida que será recebida pelo computador é mostrado abaixo:
 
STX,STATUS1,STATUS2,P4,P3,P2,P1,P0,T4,T3,T2,T1,T0,ETX,BCC
 
Na seqüência binária mostrada, os bits, ou grupo de bits indicam configurações ou estados da balança. Vamos agora analisar cada parte da seqüência e o seu significado na comunicação.
 
STX – Start of Text
Assume o valor 02 em hexadecimal e é apenas um byte de sincronia da comunicação, indicando o início de uma nova mensagem
 
STATUS1
Os bits 2, 1, 0 indicam a posição do ponto decimal em binário e podem assumir os valores:
0 : Append(' Display = 1');
1 : Append(' Display = 0.1');
2 : Append(' Display = 0.01');
 
000 = x 1
011 = x 0.1
010 = x 0.01
 
O bit 3 indica peso negativo e pode assumir os valores:
 
0 = Peso Positivo
1 = Peso Negativo
 
O bit 4 indica deteção de movimento de peso e pode assumir os valores:
 
0 = Não há detecção de movimento de peso
1 = Há detecção de movimento de peso
 
O bit 5 indica alarme de saturação e pode assumir os valores:
 
0 = Não há alarme de saturação
1 = Háá alarme de saturação
 
O bit 6 indica alarme de sobrecarga e pode assumir os valores:
 
0 = Não há alarme de sobrecarga
1 = Háá alarme de sobrecarga
 
O bit 7 assume sempre valor 1 e deve ser desconsiderado
 
STATUS2
O bit 0 é livre e deve ser desconsiderado.
 
Os bits 3, 2, 1 indicam o estado do set-point e podem assumir os valores:
 
0 = Set-point desativado
1 = Set-point ativado
 
Os bits 3, 2, 1 indicam o estado das travas e podem assumir os valores onde em TRx, a letra “x” indica a trava respectiva:
 
0 = Trava ao atingir o set-point TRx desligada
1 = Trava ao atingir o set-point TRx ligada
 
O bit 7 assume sempre valor 1 e deve ser desconsiderado
 
Px – Peso Líquido ou Bruto.
Os bits de P4 a P0 informam o exato peso apresentado no display do equipamento, onde em Px, a letra “x” indica a posição do bit no nibble.
 
Tx – Tara.
Os bits de T4 a T0 informam a tara configurada na balança, onde em Tx, a letra “x” indica a posição do bit no nibble.
.
ETX – End of Text
Assume o valor 03 em hexadecimal e é apenas um byte de sincronia da comunicação indicando o fim de uma mensagem.
 
BCC – CheckSum
O checksum dos dados transmitidos é enviado pela balança, e com ele podemos garantir a consistência dos dados recebidos. O byte de checksum é formado pelo complemento de 2 da soma de todos os bytes recebidos, exceto o próprio BCC, conforme mostrado na Figura 04.
 
Percebe-se então que a string lida se divide em:
- 1 Byte de sincronia STX que pode ser usado para subdividir a string recebida, caso o envio ou recebimento seja concatenado.
- 4 partes principais que contêm as informações enviadas pela balança, STATUS1, STATUS2, Peso, Tara que devem ser tratadas separadamente para a obtenção das informações transmitidas.
- 1 Byte de CheckSum, que pode ser usado para identificar erros na string lida através da comparação dos valores.
 
O que é a ALFA_Unit?
A ALFA_Unit é um produto criado com base na experiência da TKS Software ( www.igara.com.br ) no desenvolvimento de aplicativos, para integração com equipamentos de hardware de terceiros, seguindo a linha de produtos já consagrados como, por exemplo, de integração com balanças de pesagem TOLEDO.
O produto constitui uma solução que visa facilitar e agilizar o processo de integração com balanças ALFA, com base na documentação fornecida pelo fabricante, possibilitando que o desenvolvedor abstraia quase que completamente a camada de comunicação com o equipamento, uma vez que, ao adquirir o produto, o mesmo é fornecido com código fonte e todas as funcionalidades prontas para serem utilizadas e importadas para o aplicativo final desejado.
Maiores informações sobre a ALFA_Unit em: http://www.igara.com.br/produto.php?cod_produto=110
 
Maiores informações sobre o simulador de balanças ALFA em: http://www.igara.com.br/produto.php?cod_produto=111
 

Considerações Finais
Esperamos com este artigo exemplificar o processo, esclarecer dúvidas e abrir novas possibilidades aos leitores, facilitando a implementação de sistemas para operação em conjunto com os diversos modelos de balança ALFA, bem como facilitando a implementação para modelos de outros fabricantes, uma vez que o paradigma apresentado é, em muito, semelhante aos demais utilizados no mercado.
 

Victory Fernandes é Engenheiro Mestrando em Redes de Computadores, Professor do Departamento de Engenharia da UNIFACS – Universidade Salvador, 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  – www.igara.com.br/victory
 
Murilo Plínio é Engenheiro Mestrando em Mecatrônica, Técnico em Informática e desenvolvedor da TKS Software - Soluções de Automação e Softwares Dedicados.
Pode ser contactado em muriloplinio@yahoo.com



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

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

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