Duas portas seriais (RS232 e RS422) conflitantes entre si. / dev / ttyUSB crash

1

Problema : Meu sistema operacional Ubuntu não suporta duas portas seriais quando os dispositivos seriais conectados às portas seriais estão ligados. como superar esse problema e impedir que minha porta falhe? Como posso resolver o problema?

Sinopse dos sintomas : Quando os dois conversores serial para USB estão conectados ao PC (sem nenhum dispositivo serial conectado a eles), tudo está bem; eles aparecem como ttyUSB0 e ttyUSB1. No entanto, assim que eu conecto dispositivos seriais a eles e ative os dispositivos seriais, uma das portas seriais falha (desaparece do diretório / dev). Este não é um problema de hardware ou fiação. Algo está acontecendo no sistema operacional que está adicionando cabelos grisalhos na minha cabeça .... Poderia, por favor, ajudar? Por favor, leia para mais detalhes.

Estou executando o Ubuntu 14.04.3 em um laptop Lenovo.

Estou em um ponto em que posso recriar o erro com o menor número de peças de hardware e software. Os passos abaixo recriam o problema:

  1. Eu inicio o PC.
  2. Quando o PC é ativado, executo dmesg e salvo a saída em um arquivo. Veja link
  3. Eu conecto um dispositivo USB 2.0 chamado "Labjack U3". Este é um fato que eu não acredito ser muito relevante para este assunto, mas deve ser notado.
  4. Eu conecto o RS422 ao dispositivo USB sem nada conectado a ele. Eu corro lsusb . É o dispositivo Bus 003 Device 003: ID 0856:ac11 B&B Electronics . A saída é:

    Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 004: ID 04f2:b44d Chicony Electronics Co., Ltd Bus 001 Device 003: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad] Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 003: ID 0856:ac11 B&B Electronics Bus 003 Device 002: ID 0cd5:0003 LabJack Corporation U3 Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

  5. Eu corri dmesg novamente. A saída está aqui: link

  6. Eu vou para /dev e executo ls -l | grep USB . A porta serial aparece: constructor@constructor-pc:~$ cd /dev constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0

  7. Ligue o dispositivo conectado à porta RS422. Não há alteração na saída de /dev ou ls -l | grep USB e lsusb

  8. Eu conecto o conversor RS232 ao USB. O dispositivo serial ainda não está conectado ao conversor. Eu corri lsusb . É o dispositivo Bus 001 Device 018: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port . A saída é:

constructor@constructor-pc:/dev$ lsusb Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 004: ID 04f2:b44d Chicony Electronics Co., Ltd Bus 001 Device 003: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad]

Bus 001 Device 018: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 003: ID 0856:ac11 B&B Electronics Bus 003 Device 002: ID 0cd5:0003 LabJack Corporation U3 Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

  1. em seguida, executo o comando ls -l | grep USB no diretório /dev . Aqui está a saída:

constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 crw-rw---- 1 root dialout 188, 1 Nov 21 18:47 ttyUSB1

  1. Até esse ponto, tudo está OK. Eu corro o comando dmesg para capturar tudo para solução de problemas. Veja: link

  2. Neste ponto, é onde o problema aparece. Eu conecto um dispositivo serial ao conversor RS232 para USB. Até agora tudo ainda está OK. Eu ligo a energia para o dispositivo serial (normalmente este é o ponto onde o software que controla o meu protótipo falha). Eu imediatamente executo o comando ls -l | grep USB muitas vezes. Aqui está a saída:

constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0 constructor@constructor-pc:/dev$ ls -l | grep USB crw-rw-rw- 1 root dialout 188, 0 Nov 21 16:36 ttyUSB0

Você pode ver que eu perdi uma das minhas portas seriais!

  1. Agora corro dmesg para uma pessoa mais experiente usar para o diagnóstico. Por favor, veja: link

Conclusões testadas a que cheguei nos últimos 5 dias:

  • Os dispositivos seriais conectados ao RS232 e ao RS422 funcionam exatamente como o fabricante descreve nos manuais quando apenas um dos dispositivos é conectado de cada vez. Os dispositivos seriais não estão funcionando mal ou quebrados de alguma forma. Se apenas um dispositivo estiver conectado por vez, posso me comunicar com ele e controlá-lo, e ele se comportará corretamente.
  • A fiação para todos os dispositivos é boa (dupla e tripla verificada usando desenhos e medidor)
  • Eu removi o hub USB que estava usando e demorei para descobrir que não era culpa do hub.
  • Excluí os vários pacotes de software que estou usando para ler os dados seriais (sinto que as etapas descritas nesta postagem provam isso).
  • É interessante comentar que esse problema ocorre sem que eu mesmo envie ou receba comandos para os dispositivos seriais! Quando eu ligar o dispositivo conectado ao conversor RS232 para USB, o dispositivo serial ainda não está enviando mensagens (ou pelo menos eu não acredito que seja), mas a porta serial é imediatamente descartada pelo sistema operacional.

Informações Adicionais: Na última semana desde que fiz esta pergunta, obtive mais portas serial para USB, caso uma delas esteja com defeito, e o comportamento não tenha mudado. Eu também substituí o componente serial que faz com que a porta falhe quando ligada com uma unidade sobressalente, e o comportamento não mudou. Eu também tentei um PC diferente, e o comportamento não mudou.

Você pode fornecer uma resposta com uma correção para esse problema? Ou como solucionar esse problema?

Além disso, se eu puder fornecer qualquer informação ou executar algum comando, não hesite em me avisar!

Obrigado antecipadamente ...

Mike

    
por Mike 22.11.2017 / 03:39

1 resposta

1

Este foi um problema elétrico e não um problema de O / S. Liguei a porta serial do dispositivo ao lado serial do conversor USB para RS485 de acordo com o documento do fabricante, da seguinte maneira:

Tx- to Rx- Tx+ to Rx+ Rx- to Tx- Rx+ to Tx+ gnd to gnd

O que acabou resolvendo esse problema foi desconectar o gnd para a gnd connection. Deve ter havido um loop de terra.

    
por Mike 01.12.2017 / 23:15