Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2135 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Estou precisando fazer comunicação com balança Micheletti Mic300.

Fiz o programa, usei o emulador de balança para testar (usei um emulador de porta serial) e funcionou perfeito do jeito que preciso.

Porém, chegando no meu cliente, instalei a porta serial da balança e não consegui fazer a comunicação com a balança.

Existe algum segredo? 

Me retorna o erro:  communication error 9997 timeout during operation.

Postado

Tentei todas as velocidades e não deu certo no meu software.

Na balança, mudei a velocidade a velocidade para 4800 e não deu.

Instalei em outra maquina achando que era problema e não deu também.

--------------------------------------------------------------------------------
ATIVAR - 16/11/18 08:41:39:154 - Modelo: Micheletti - Porta: COM3        

Device: BAUD=9600 DATA=8 PARITY=N STOP=1 HANDSHAKE= MAXBANDWIDTH=0 SENDBYTESCOUNT=0 SENDBYTESINTERVAL=0
--------------------------------------------------------------------------------

 - 08:42:01:666 TX -> [ENQ]
              UltimoPesoLido: -9 - Resposta: 

 

Att,

 

  • Consultores
Postado
Em 15/11/2018 at 22:09, digitosistemas disse:

communication error 9997 timeout during operation

pode ser necessário aumentar o timeout.

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Minha balança esta conectada com adpatador Serial/USB na porta COM3, Velocidade 9600, bits de dados 8, paridade nenhuma, bits de parada 1, timeout 2000.

 

Quando ativo a balança:

--------------------------------------------------------------------------------

ATIVAR - 16/11/18 08:17:29:842 - Modelo: Micheletti - Porta: COM3        Device: BAUD=9600 DATA=8 PARITY=N STOP=1 HANDSHAKE= MAXBANDWIDTH=0 SENDBYTESCOUNT=0 SENDBYTESINTERVAL=0

--------------------------------------------------------------------------------

Dá mensagem:  9997- não há comunicação com a balança.

 
Fiz a configuração na balança conforme descrito abaixo: 

- Entrar no módulo de configuração serial, apertar as teclas ZERA e IMPRIME ao mesmo tempo durante 4 segundos, irá aparecer à mensagem CONFP no display, apertar IMPRIME uma vez irá aparecer SERIAL, apertar TARA, irá aparecer Pr   tCA, não estando assim apertar IMPRIME começa a piscar e com tecla ZERA vai até chegar ao parâmetro desejado, aperta IMPRIME para de piscar e com a tecla TARA tecle até o próximo parâmetro End   01, se assim não estiver repetir o procedimento acima.

- Quando chegar ao parâmetro BR, mudar também para 9600br, no display fica br  9.6, para mudar é mesmo procedimento acima, depois de alterado apertar a tecla TARA até zerar.  

 

Ao finalizar na opção de "tSt r5" me deu mensagem de erro: rs Err.

Teste em outra balança, onde não deu erro na configuração da balança, mas não comunicou com o computador.

 

 

 

  • 3 semanas depois ...
Postado

Pessoal Obrigado pelo retorno.

Consegui resolver,  o problema era no cabo de comunicação. O cabo a ser usado é RS-485.

Agora estou com outro probleminha (problemão). 

Como faço para o programa ler somente uma vez o peso da balança?

Ex. No programa teste, eu deixo marcado a opção monitorar balança, com timeout de 2000.

Balança sem peso. ok
Colocou um peso na balança 3kg, a balança leu - ok.
O usuário deixou o peso na balança e foi conversar - a balança continua informando o peso, a cada 2000,
 

Como resolver isto?

Help!!!!!

 

  • Curtir 1
  • Consultores
Postado
5 horas atrás, digitosistemas disse:

Como faço para o programa ler somente uma vez o peso da balança? 

Ex. No programa teste, eu deixo marcado a opção monitorar balança, com timeout de 2000. 

Balança sem peso. ok
Colocou um peso na balança 3kg, a balança leu - ok.
O usuário deixou o peso na balança e foi conversar - a balança continua informando o peso, a cada 2000,
 

Como resolver isto?

Desliga o monitorar balança quando não for mais necessário.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 2 semanas depois ...
  • Consultores
Postado
Em 08/12/2018 at 00:11, digitosistemas disse:

É uma linha de produção.

Então o peso deve ser lido automaticamente, uma caixa após outra.

O monitorar balança verifica a balança a todo o momento, de acordo com o timeout e informa o peso encontrado.

Se você quer que monitore a balança é isso que ele vai fazer. Se você precisa que pare de monitorar a balança porque o usuário saiu, ponha uma opção para desligar a monitoração de balança.

Ou talvez não tenha entendido exatamente seu problema. Se for esse caso, poderia explicar melhor?

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Bom dia,

Estou quase conseguindo, deixa eu explicar novamente,

A Balança esta locada na linha de produção de uma indústria.

No inicio da produção, o encarregado pela produção, vai informar o número da "OP". Meu software vai buscar a Ordem de Produção (OP) como lote, data vencimento, peso mínimo e máximo aceito por caixa de embarque. Neste instante, a balança é ativada e fica sendo monitorada, aguardando algum peso.

O operador, coloca os produtos dentro da caixa de embarque, faz o lacre e coloca a caixa em cima da balança. A balança, vai receber o peso, estabilizar o peso e comunicar com o meu software. Será verificado se o peso esta dentro do padrão (mínimo e máximo). Caso esteja na conformidade, será impresso a etiqueta com as informações do produto, peso/lote/data fabricação, etc., caso contrário é informado na tela do computador que existe alguma divergência.

Observe que o encarregado da produção, não vai apertar nenhum botão para adquirir o peso e imprimir, o software recebe as informações que estão sendo monitoradas, analisa, grava e imprimi uma etiqueta.

Meus problemas:

Como a balança joga informações de 250ms para o pc, preciso que o meu software leia o peso estabilizado, pare de monitorar, faça o processo de gravação e impressão da etiqueta. E vai voltar a ser monitorado quando o peso for retirado da balança, lembrando que sem a intervenção humana.

 Coloquei um timer com alguns segundos entre uma pesagem e outra, mas as vezes o tempo é furado, gravando assim uma mesma caixa duas ou mais vezes.

  • Consultores
Postado

Agora ficou um pouco mais claro.

Talvez você precise verificar se o peso mudou depois que a impressão da etiqueta foi confirmada.

Não sei se está fazendo isso, mas uma outra sugestão é limitar o número de pesagens para o mesmo número de caixas.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 1 mês depois ...
Postado

Ainda não consegui resolver:

Fiz assim:

rocedure TFormPrincipal.ACBrBAL1LePeso(Peso: Double; Resposta: AnsiString);
var R, F, valid : integer;
    cPadrao, TPesagem : String;
begin
   sttPeso.Caption   := formatFloat('##0.000', Peso );
   sttResposta.Caption := Converte( Resposta ) ;
   if (Peso >= 0) then
   Begin
      //se a balança esta zerada ou até 100grs
      if Peso <= 0.10 then
      Begin
         Zerou := True;
         Exit;
      End;
      //Se não foi uma pesagem forçada 
      if Not Forcado then
         EstabilizadoTimer(nil);

      PesoLido := Peso;
   End;
   SLido.Caption     := formatFloat('##0.000', Peso );
   if (Zerou and Estavel and (Etapa = 1)) or Forcado then
   Begin
     //Memo1.Brush.Color := clWhite;
     if (Peso > 0) and (Estavel and (PesoGravado <> PesoLido) or Forcado) then
     Begin
        PesoGravado := PesoLido;
        Etapa := 2;
        if Not UltimaPesagem and (rgtipoPesagem.ItemIndex = 0) and ((Peso < PesoMinV) or
         (Peso > PesoMaxV)) then
        Begin
           Estavel := False;
           Exit;
        End;
        Zerou := False;
        Forcado := False;
        //Se tipo de pesagem for forçada e o peso estiver entre minimo e o maximo 
        if (rgtipoPesagem.ItemIndex = 0) and ((Peso < StrToFloatDef(SPesoMin.Caption,0)) or
         (Peso > StrToFloatDef(sPesoMax.Caption,0))) then
        Begin
           Memo1.Lines.Text:='Peso fora do padrão';
           Memo1.Brush.Color := clRed;
           Timer1.Enabled := True;
           cPadrao := 'S';
        End
        Else
        Begin
           Timer1.Enabled := False;
           Memo1.Lines.Text := 'Leitura realizada com sucesso!';
           Memo1.Brush.Color := clGreen;
           Memo1.Font.Color := clBlack;
           cPadrao := 'N';
        end;
        //Gravar no banco de dados
        Gravar_Banco()
        //Imprimir etiqueta
        Imprime_Termica(cPadrao);        
     End
     else
     begin
        valid := Trunc(ACBrBAL1.UltimoPesoLido);
        case valid of
           0 : Begin
                    Memo1.Lines.Text := 'TimeOut !'+sLineBreak+
                                   'Coloque o produto sobre a Balança!' ;
                    Memo1.Brush.Color := clWhite;
               End;
          -1 : Begin
                   Memo1.Lines.Text := 'Peso Instável ! ' +sLineBreak+
                                   'Tente Nova Leitura' ;
                   Memo1.Brush.Color := clYellow;
               End;
          -2 : Begin
                  Memo1.Lines.Text := 'Peso Negativo !' ;
                  Memo1.Brush.Color := clOlive;
               End;
         -10 : Begin
                   Memo1.Lines.Text := 'Sobrepeso !' ;
                   Memo1.Brush.Color := clBlue;
               End;
           //Else
           //   Memo1.Brush.Color := clWhite;
        end;
     end;
   End;
end;
procedure TFormPrincipal.EstabilizadoTimer(Sender: TObject);
begin
   //Se peso lido for diferente do ultimo peso lido
   //Começa o processo para identificar que a balança esta com o peso estabilizado
   if PesoLido <> UltPesoLido  then
   Begin
      UltPesoLido := PesoLido;
      TempoParado := Time();
      Estavel := False;
      Etapa := 1;
   End
   else if Not Estavel then
   Begin
      //Se ficar parado 10segundos na balança
      if (IncSecond(TempoParado,1) < Time()) and (PesoGravado<>0) then
      Begin
         PesoGravado := 0;
         TempoParado := Time();
      End
      //Garante que a balanca esta com o peso estavel
      Else if (IncSecond(TempoParado,1) < Time()) then
      Begin
         Estavel := True;
      End;
   End;
end;

Usando o Emulador da balança funcionou.

Mas na balança real, existe um problema pois ela, transmite vários valores , inclusive o "0"  (Zero), até estabilizar.

Então precisaria identificar que ela esta com peso estabilizado.

 

  • Consultores
Postado
5 horas atrás, digitosistemas disse:

Mas na balança real, existe um problema pois ela, transmite vários valores , inclusive o "0"  (Zero), até estabilizar.

Então precisaria identificar que ela esta com peso estabilizado

Não sei se compreendi corretamente o primeiro ponto. Talvez você pudesse ignorar um certo número de vezes que a balança tiver lido zero.

Teoricamente estar estabilizado deveria ser o retorno da balança. Teria que verificar se no manual de comunicação existe esse retorno e se o componente está tratando adequadamente.

5 horas atrás, digitosistemas disse:

Fiz assim:

Confesso que tive um pouco de dificuldade de ler o código. Há muitas variáveis semelhantes que se confundem com propriedades do componente (PesoGravado, PesoLido, UltPesoLido, ACBrBAL1.UltimoPesoLido).

Baseado no que tinha dito antes eu pensei no seguinte:

INICIO
|
|- Balança OFF (não monitorando)
|
|- Recebe OP
   |
   |Loop de caixas...
      |- PróximaCaixa
      |
      |Pegar peso estável 
      |   |- Blança ON
      |   |
      |   |- (quando peso for estável)
      |     |
      |     |- Balança OFF
      |     |- Faz validações valor peso
      |        |- Se OK
      |           |- Imprime etiqueta
      |           |- Continua (Loop de caixas)
      |        |- Se não OK
      |           |- Mensagem na tela
      |           |- Volta (Pegar peso estável)
      |
      |- Se Ultima Caixa ---> FIM
         

E parece que o problema maior é a detecção do peso estável.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Este tópico foi criado há 2135 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.