Discussão sobre Produtos NI

cancelar
Mostrando resultados para 
Pesquisar então 
Você quer dizer: 

Adquirir sinal PXI com 4 5105 com 4 timed loops

Buenas,

 

Estou tentando, sem sucesso, utilizar um sistema PXI com 4 placas de aquisição 5105 para adquirir sinais simultaneamente. O problema é que o sistema precisa de alto desempenho, caso contrário utilizaria os blocos NI-TCLK para sincronia e um loop geral para aquisição. Esse modelo acaba sobrecarregando somente um núcleo, fazendo o sistema todo ficar limitado.

Decidi, então, utilizar timed loops, colocando uma 5105 e designando um processador para cada timed loop. Infelizmente, não consigo sincronizar as aquisições, o que é crucial para a aplicação.

Como posso sincronizar a aquisição de cada placa com cada timed loop?

 

Postei essa dúvida no forum em inglês, caso alguém precise de mais detalhes.

 

http://forums.ni.com/t5/PXI/Synchronize-several-5105-and-acquire-with-timed-loop/m-p/2268104/highlig...

 

 

0 Kudos
Mensagem 1 de 13
40.289Exibições

Bom dia, Giovanno. Tudo bem?

 

Então como comentei no fórum anterior e verificamos o teu código. O problema está na variáveis locais que você está executando se você passar todos os fios sem essas variáveis, ou seja com os fios direto nas funções e nesse caso não precisará da estrutura de sequência, pois o código já irá fazer isso.

 

O modo que você estruturou está correto, o único problema são essas variáveis locais mesmo. E outra observação é o gerenciamento de erro do seu código. Para que futuramente, se o código for aumentado.

 

Atenciosamente

 

 

 

 

 

 

Erick Yamamoto
Application Engineer
National Instruments Brazil

Visite a nossa comunidade em PORTUGUÊS!!!

Certified-LabVIEW-Associate-Dev Smiley face
0 Kudos
Mensagem 2 de 13
40.283Exibições

Boa tarde, Erick,

 

Não sei se entendi bem a tua dica de remover as variáveis e substituí-las por fios. Há a possibilidade de tu fazer isso no meu código e postar aqui, depois?

 

Quanto ao gerenciamento de erros, vou deixar para mais adiante do código, depois que resolver esse problema de sincronia. Agradeço a preocupação.

 

Obrigado!

0 Kudos
Mensagem 3 de 13
40.272Exibições

IMG_Giovanno.png

 

Outra coisa que queria saber, os dois controles de stop é necessário? Não entendi, pois um é true e outro é false. Você já fez cursos com a National?

 

Atenciosamente.

Erick Yamamoto
Application Engineer
National Instruments Brazil

Visite a nossa comunidade em PORTUGUÊS!!!

Certified-LabVIEW-Associate-Dev Smiley face
0 Kudos
Mensagem 4 de 13
40.261Exibições

Bom dia, Erick,

 

Obrigado pela resposta. Entretanto, ela não ajuda a resolver meu problema. Não sei se fui claro o suficiente com a minha dúvida.

Tem algum meio de fazer as placas adquirirem continuamente, a partir de um único comando de "start", sincronizadamente? Eu precisaria da função de sincronia com algumas características do bloco "niScope Initiate Acquisition". Os blocos de sincronização exigem que o "niTCLK Initiate" seja rodado todo loop, e o ideal seria que ele iniciasse a aquisição e só parasse mediante comando.

 

Isso é possível?

 

Att,

 

Giovanno

0 Kudos
Mensagem 5 de 13
40.258Exibições

Bom dia. Giovanno. Tudo bem?

 

Eu verifiquei toda a estrutura. E tem funções que não seria necessário como o Timed Loop, essa estrutura é utilizada em Real-Time. Eu encontrei um guia que você pode estar seguindo para estruturar a sua programação. E é possível adquirir continuamente os seus sinais e outro detalhe é a utilização do Loop For. Você programa com outra linguagem? A estrutura de programação lembra muito C. Segue abaixo o guia.

 

Getting Started with NI-SCOPE

http://www.ni.com/white-paper/3382/en

 

Att.

 

Erick Yamamoto
Application Engineer
National Instruments Brazil

Visite a nossa comunidade em PORTUGUÊS!!!

Certified-LabVIEW-Associate-Dev Smiley face
0 Kudos
Mensagem 6 de 13
40.255Exibições

Boa tarde, Erick,

 

Eu programo em LabVIEW há quatro anos já, mas não fiz nenhum curso da NI. O timed loop não seria necessário caso a taxa de aquisição não fosse tão alta. Se eu utilizar um while só para adquirir todos os sinais de todas as placas, o software acaba sobrecarregando somente um núcleo do meu i7. Então, recorri a timed loops para atribuir cada placa a um núcleo. A melhora no desempenho foi gritante. 

 

Eu consegui rodar o código com os timed loops e o acionamento individual de cada placa sem sincronia, na velocidade necessária, mas as aquisições obviamente também são sincronizadas, o que não me serve.

 

Há algum meio de fazer as 4 5105 adquirir ininterruptamente em sincronia, sem precisar de um start a cada loop?

 

aguardo resposta,

0 Kudos
Mensagem 7 de 13
40.251Exibições

IMG2_Giovanno.png

Bom, Giovanno. Para fazer a sincronização de vários canais do jeito que você deseja é assim como o exemplo acima.

 

Atenciosamente.

Erick Yamamoto
Application Engineer
National Instruments Brazil

Visite a nossa comunidade em PORTUGUÊS!!!

Certified-LabVIEW-Associate-Dev Smiley face
Mensagem 8 de 13
40.245Exibições

Segue em anexo o VI.

Erick Yamamoto
Application Engineer
National Instruments Brazil

Visite a nossa comunidade em PORTUGUÊS!!!

Certified-LabVIEW-Associate-Dev Smiley face
0 Kudos
Mensagem 9 de 13
40.243Exibições

Bom Dia Giovanno,

 

             Tente implementar o exemplo da figura abaixo. É o mesmo que o Érick te passou, mas com um loop while temporizado sobre o VI de leitura.

 

             sync example.png

 

Execute esse VI e monitore o processamento pelo Gerenciador de Tarefas do Windows. Me diga se processamento ainda permanece alto.

 

 

 

Felipe Flores
Technical Support Engineer
National Instruments
Mensagem 10 de 13
40.197Exibições