Máquina de Estado
Bom dia pessoal,
estou com dúvidas na implementação em uma máquina de estado(ME).
Estou fazendo uma aplicação que busca adquirir dados, startando com um trigger, analisar estes dados e mostra-los o resultado gráfico da análise. Bem, para complementar tenho ainda que salvar os dados e gerar um mini relatório em HTML. Todas estes blocos de código estão prontos, porém nõ consigo implementa-lo em uma máquina de estado.
Esta aplicação busca construir uma waterfall, orbita e BODE da partida de um motor.
Abaixo segue como visualizei a ME pela primeira vez:
Uma máquina de estado contendo:
Case 1: Parte de aquisição - Daqmx express adquirindo de 4 canais com trigger no primeiro canal. Constante direcionando para Case 2
Case 2: Parte da análise - FFT e FRF para cálculos e análise dos dados, preparando-os para apresentação. Constante direcionando para Case 3
Case 3: Parte da Apresentação - montagem dos arrays de dados e apresentação dos mesmos nos componentes gráficos. Constante direcionando para Case 1
Loop em paralelo à ME para salvar os dados e construir o relatório.
Dúvida: O fato é que se estivermos no Case de aquisição, o programa estará "preso" na espera da ocorrência de uma trigger, o que impossibilita de manipula-lo caso o motor não gere a mesma. Ex. o motor estiver parado.
Possível solução: baixar o timeout.
Contra: Gerará dados vazios que não sei como manipula-los para evitar que sejam inseridos na análise.
Dúvida: Como posso a qualquer momento executar uma rotina para construção de waterfall?
Possível solução: Utilizar a rotina no loop em paralelo para isto com os dados de uma variável local.
Dúvida: Como posso mudar a seleção de um próximo case, visto que o arranjo feito inicialmente é ciclico:aquisição=>analise=>apresentação=>aquisição=>....?
Possível solução: Criar um case default "em branco" que espera um novo destino.
Contra: Como fazer isto se preciso que ele fique no ciclo somente até eu decidir que é para sair do mesmo.
Dúvida: Como fazer com que possa parar este processo e fazer com que o programa continue rodando para startar outro ciclo de aquisições?
Possível solução: Inserir um loop externo à ME, parando o loop interno à ME, estria retornando ao loop externo e esperando a nova inicialização.
Dúvida: como relacionar uma estrutura de eventos com uma máquina de estados?
Se alguém estiver disposto a enviar um código exemplo para exemplificar a resolução destes problemas(os códigos do labview são muito básicos), a NI poderia lançar mão de exempos de aplicativos mais complexos para exemplificar a interação e resolução de problemas como este.... agradeço....ou se tiver um e-mail de suporte para enviar o código e discutirmos o mesmo...também é possível. Infelizmente não posso postar o código no site.
Agradeço de antemão a alma caridosa que estiver disposta a encarar esta bomba.
Um abraço.
Leonardo de S. Cavadas
Maintenance Engineer and Inspection - Bureau Veritas do Brasil
Engineer Metallurgist with emphasis in Advanced Materials
Technologist in Computer Science
Dúvida: O fato é que se
estivermos no Case de aquisição, o programa estará "preso" na espera da
ocorrência de uma trigger, o que impossibilita de manipula-lo caso o
motor não gere a mesma. Ex. o motor estiver parado.
Possível solução: baixar o timeout.
Contra: Gerará dados vazios que não sei como manipula-los para evitar que sejam inseridos na análise.
Você poderia usar uma estrura Produtor/cosumidor de mensagens (tem um template do LV de exemplo). Desta forma, soh trataria os dados se alguma informação fossa adicionada à fila de mensagens.
Esta estrutura de Produtor/Consumidor de mensagens te permitiria também de separar as funções de tratamento de eventos com as funções de anàlise e interação com o processo.
Dúvida: como relacionar uma estrutura de eventos com uma máquina de estados?
A estrutura de eventos deve ficar dentro de um case da màquina de estados que trata ações do usuàrio. Uma espécie de idle.
Dúvida: Como fazer com que
possa parar este processo e fazer com que o programa continue rodando
para startar outro ciclo de aquisições?
Possível solução: Inserir um loop externo à ME, parando o loop interno à ME, estria retornando ao loop externo e esperando a nova inicialização.
Você poderia colocar o processo dentro de um While e verificar a cada iteração se deve continuar ou não.
Eh complicado dar sugestões sem ver o codigo ou um sinoptico do processo. Espero que tenho ajudado um pouco.
Dica: se você postar em inglês, muito mais pessoas poderão te ajudar. Acredito que os membros mais ativos e experientes deste forum não falam português, com sorte espanhol... Pode demorar um pouco mais para se redigir a mensagem, mas vale a pena.
Salut,
Rasputin
LV7.1 <> W2K
Similar Messages
-
Boa tarde,
Sou leigo em Labview, estou precisando fazer um projeto onde tenho 2 sensores, quan o 1 for atuado comecar a contar o tempo e so parar qnd o 2 atuar, ai com o tempo eu calcular a velocidade e aceleração.
ate agora eu ja montei o circuito dos sensores, fiz uma logica no labview tb, nao como eu queria... a minha funciona da seguinte maneira, qnd eu aciono o sensor ele começa a contar o tempo, mais qnd desaciona ele para a contagem... ele so deveria parar qnd o sensor 2 fosse acionado.
Em anexo segue o que fiz, espero que alguem posso me ajudar, estou bem perdido com o Labview.
Estou usando um arduino UNO e o toolkit para fazer o programa.
qq coisa meu e-mail: [email protected]
Att.
Rafael
Anexos:
2 sensor 26-4-13.vi 17 KBRafael,
Você enviou apenas a VI principal. Ficaram faltando algumas sub-VIs. Mesmo assim, pelo que pude entender o acionamento do sensor 1 é sempre antes do sensor 2. Assim, aconselho a fazer uma máquina de estado sequencial simples com as seguintes etapas:
Inicialização: valores, comunicação serial, etc.
Espera acionamento do sensor 1
Guarda momento do acionamento do sensor 1
Espera acionamento do sensor 2
Guarda momento do acionamento do sensor 2
Calcula e apresenta tempo decorrido
Encerramento: fechar comunicação serial, etc.
Se você não sabe como montar uma máquina de estado simples pode simplificar mais ainda colocando cada passo em um quadro (frame) de um Flat Sequence.
André Manzolli
Engenheiro Mecânico
Certified LabVIEW Developer - CLD
LabVIEW Champion -
Hi! I really need help....
I´m doing a simulation where I can controller the input and output with one external PCB, all is working properly (the communication) but my problem is, I can´t open where ever I want the different valves...I mean, I must wait until the process is finish...
The program is working with diferents process like this:
§Process 0:
Programinitialization. Tanks and pipes in zero state. Control for this state with “pump on” button.
§Process 1:
§State:
“ Pump on ” button istrue: Pump 1 isrunning, andTank 1 starts to be filled with water.
“ Pump on ” button is false: nothing happen, go to the next process
§Process 2:
This process is controlled from the “Control 1”button with is who control “Valve 1” for the discharge of water from tank 1 to tank 2.
§Process 3:
This processiscontrolledfromthe “Control 2 ”button with is who control “Valve 2” for the discharge of water from tank 1 to tank 2 if “Control 3 ” button is close or if “Control 3 ”button is open the water go out from the loop.
§Process 4:
This processgiveyoutheoptiontocome back totheprocess 1 ortotheprocess 2 dependingofthestate in process 3.
So my problem is I want run different processes in the same time, without having to wait out the current process is running....
this look like this:
and with the differents states...so I was trying to use a Statechart for try to improve the simulation....
like this:
But when I was tried to implement in labview with the statechart module i can't find the way to interconexión with this new module...
Because i need two differents regions...but i can't use the connexion between them....
Some new idea, help....all is welcome!!!
Thanks in advance.
ElenaBuenos días Alvaro,
Si, mejor en español
Si, me has entendido bien, exactamente es lo que me gustaria.
Empece por mi cuenta con labview y hay muchas cosas que se me escapan... Voy a implementar la máquina de estados a ver si asi soluciono el problema.
Muchas gracias!
Un saludo! -
COMO PUEDO HACER COMPATIBLE EL NAVEGADOR CON EXPLORER
Estimados amigos, cual sera la forma de hacer que mi navegador sea COMPATIBLE con algunas paginas de Explorer, como las paginas del IMSS(Remates y Subastas) y el SAT(Subastasat) ya que las abre pero NO puedo acceder mas alla. En Explorer existe un BOTON en la pestaña de direccion que es para COMPATIBILIDAD y hasta que lo uso funciona la pagina. Espero que haya algo para esto. Saludos
Que tal Monik,
Me da gusto saber que fue de ayuda.
Para lo que quieres hacer debes de tener manera de sensar o medir la posición actual del motor cada vez que empiezas el programa. Supongo que eso lo puedes haccer con un encoder incremental. O si nadie va mover el motor manualmente podrías guardar la posición actual en un archivo de texto y que tome ese valor y con algún tipo de bandera decirle si es para un lado o para el otro.
Ahora, para poder tener esto iniciando, lo más recomendable es en la máquina de estados tener un estado de inicio donde valorará la posición actual, ya sea mediante la lectura de un archivo o con un sensor (encoder Incremental) y si esta es distitna de 0 (posición Inicial) ir a un estado donde revisará hacia que lado debe de moverse y hará el recorrido correspondiente (mismo código que el que ya teníamos) de hecho puedes reutilizar ese estado!!
Otra cosa que quería comentarte, preguntas otras cosas sobre el mismo foro esta notificación me llegará solo a mi, y si me encuentro fuera de la oficina por algún motivo será un poco más lento el servicio. Sin embargo, si tu haces un nuevo foro, automáticamente nos notifica a todos los ingenieros y sale como un foro sin respuesta que tambíen llama la atención de otras personas que estan revisandolos.
Otra cosa importante son los Kudos, cuando una respuesta funcione, puedes dar Kudos si esta te parece buena y eso nos ayuda a llevar un control de las respuetas buenas que damos o en cuales requerimos mejorar.
Estoy a tus ordenes, lo que pueda ayudarte!!! Revisa estos tips que te di y me dices si hay alguna duda!!!
Saludos, que tengas una excelente tarde!!
Luis Fernando
National Instruments Cono Sur
Ingeniería de Campo y Consultoría
http://chile.ni.com/ -
Decidindo qual o melhor padrão de programação para meu projeto
Boa noite.
Estou trabalhando num sistema para química analítica que inicialmente operava por máquina de estados, porém, houve a necessidade de iniciar vários processos simultâneos e daí surgiu a necessidade de modificar o programa
Meu sistema constitui, basicamente, em dois processos, um de preparo de amostra (processo 1) e outro de condicionamento/eluição (processo 2). OBS.: O sistema real constitui em seis etapas, mas para efeito de simplificação, considerei apenas duas etapas cruciais para eu poder conseguir enxergar qual o melhor caminho.
No processo 1, as válvulas V1, V2, V3 e V4 estão acionadas; no processo 2, as válvulas V5, V6, V7 e V8 estão acionadas.
O conjunto global constitui numa máquina de estados na seguinte ordem: AcionamentoV1,2,3,4 > Processo 1 > Acionamento V5,6,7,8 > Processo 2
A minha ideia é a seguinte:
Depois que eu terminar o processo 1 (leia-se aqui 'processo 1A'), eu começo um processo 2 (leia-se aqui 'processo 2A') utilizando a amostra do processo 1A, e começo um outro processo 1B.
No caso, o processo 1B só passa para a proxima etapa (processo 2B) se o processo 2A estiver finalizado; e o processo 2A só recomeça no processo 1A se o processo 1B estiver finalizado.
Inicialmente, pensei em utilizar um padrão de produtor/consumidor, onde o produtor daria os comandos para iniciar cada etapa e acionamento, e os consumidores seriam os processos e o acionamento, totalizando quatro loops diferentes. Porém, a dificuldade encontrada nesse tipo de padrão é o fato de que os consumidores teriam que produzir dados para que o produtor desse as instruções seguintes.
Qual padrão eu poderia utilizar nesse caso ?
Agradeço desde já.
Rodrigo M.Boa Tarde Rodrigo,
Eu gostaria de saber se você tentou usar shift registers para a realimentação de informações, eu fiz um exemplo do seu projeto usando geração de números aleatórios nos processos 1A e 1B e o armazenamento de informações nos processos 2A e 2B. Para uma melhor visualização do seu funcionamento use o modo highlight no diagrama de blocos. -
Hello............
Espero me puedan colaborar tengo una pregunta.............
Estoy obteniendo dos señales mediante una My DAQ estas señales son graficadas en un indicador y ademas se realizan algunas operaciones matematicas con estas señales , todo este programa esta como un SubVI, esta SubVi funciona correctamente pero cuando le llamo al Vi principal este VI se vulve muy lento......cual seria la mejor opcion para solucionar este problema? este es mi SUBVI
Attachments:
graph22 (SubVI).vi 219 KBsí, lo puedo.
Por lo que entendí quieres hacer un VI que tenga la siguiente secuéncia:
Adquisición de un fijo número de datos -------> Cálculos -------> Presentación de los datos en un gráfico XY
Bueno, para esto usted podria utilizar el patrón de proyecto de máquinas de estados contiendo cuatro estados:
-ocioso
-adquisición
-cálculos
-presentación de los datos
En el estado "ocioso" usted podría dos botones para basicamente dos funcionalidades:
-Iniciar la aquisición>>cálculos>> presentación.
-Parar el VI
Solamente haciendo esto usted tiene ya una programación mas limpia y de fácil comprensión.
Utilice este tutorial como ayuda para hacer una máquina de estados. Cuando la tener hecha, enviame para que yo te ayude con lo resto.
¡Saludos desde Brasil!
Felipe Flores
Engenharia de Aplicações
National Instruments Brasil -
Hola Comunidad NI espero me puedan ayudar con mi problema.
Bueno, el problema consta de un menu de 64 opciones (case structure) pero solo 14 casos son los principales, pero los restantes tambien son utiles para el movimiento de 6 motores, el problema radica en que quiero saber si es posible redireccionar un caso a otro, por ejemplo si tengo el caso 50 pero quiero que este haga lo que hace el caso 10 sin tener que copiar el contenido del caso.
Espero me puedan ayudar.
Saludos
¡Resuelto!
Ir a solución.Podrías hacerlo utilizando una estructura de máquina de estados.
En las plantillas de LabVIEW tienes una para esta estructura. Aquí tienes otro ejemplo: https://decibel.ni.com/content/docs/DOC-20927, aquí está más explicado: http://books.google.ie/books?id=NnkwnsnG0UUC&pg=PT387&lpg=PT387&dq=labview+m%C3%A1quina+estados&sour...
Adjunto una imagen de una máquina de estados con colas que creo que se adapta bastante bien a lo que pides. La explicación en https://decibel.ni.com/content/docs/DOC-25956.
Por otro lado, si los estados no principales son triviales, es decir, sin absolútamente ningún código, puedes darle varios valores al principal, como explican en http://digital.ni.com/public.nsf/allkb/A5D77ADCA661670386256A480062A340
Adjuntos:
qfsm.png 28 KB -
Hola buen dia!
Actualmente estoy corriendo una prueba la cual recopila diversos datos de presion y tempertura con este equipo:
cDAQ-9178
NI 9205
NI 9435
NI 9425
NI 9476
NI 9264 y otros
El problema que he estado teniendo es que a cierto tiempo me aparece este error:
Agredeceria mucho su apoyo para poder darle solucion a este error
Saludos y muchas gracias!Que tal deyvid01 Buenos Días:
Estuvimos analizando todo el código y quería comentarte varios puntos que te recomendaría cambiar ya que tiene muchas secciones que te pueden causar problemas.
Estás utilizando muchas Variables Locales lo que está causando condiciones de carrera que causan que tengas datos repetidos o pérdida de datos a través de tu programa ya que no está controlado cuando lees esas variables locales y cuando se escriben. Te recomiendo siempre utilizar Cables y agrupar los datos en Clusters para reducir el tamaño del código.
Existen muchas estructuras "Stack Sequences" que no son lo más recomendable para tu aplicación ya que una vez que entras a las Stack Sequences no puedes modificar el orden de los casos y no te puedes salir de ellos en caso de un error o que tengas que detener el programa. Te recomiendo revisar la arquitectura de Máquinas de Estados. Estas estructuras también van a causar que en algunas ocaciones parezca que el programa no responde, está lento o se traba la interfaz de usuario.
No existe manejo de errores en el código por lo que es muy complicado encontrar el error si no tenemos el setup completo para probarlo ya que la arquitectura no nos permite seccionar el programa para probarlo.
Como te comentaba en los primeros posts y como menciona también Guillermo en la última publicación en la sección de escritura al archivo estás utilizando varios Write to Spreadsheet en tus estructuras y esto se encuentra dentro de un ciclo While. El VI de Write to spreadsheet es un VI de Alto nivel que internamente abre la referencia al archivo escribe o lee y después lo cierra. Esto lo hace cada vez que lo mandas llamar en el ciclo While, esto no es nada eficiente para el programa y puede causar los errores que te están apareciendo de manera aleatoria en lo que corre el programa.
Para un programa que tiene tantas cosas diferentes en cuanto a funcionalidad yo recomendaría que se tomaran los cursos que ofrecemos en los que se cubren diferentes arquitecturas para resolver aplicaciones como la que tu tienes. Estas arquitecturas te darán las herramientas necesarias para resolver los puntos que te menciono anteriormente. (Core 1, 2 & 3).
Lo que podemos hacer actualmente es tratar de reparar la parte que esté fallando pero la aplicación no será escalable, mantenible o legible si se quieren realizar cambios en un futuro.
Para acotar la fuente del error te pido que realices lo siguiente:
Correr el programa pero dejar deshabilitado el botón "Enable" que tienes en la sección de escritura D.5 esto para que no se ejecute la sección dentro del Case Structure. Dejar correr el programa para revisar si aparece el error.
En caso de que no aparezca habilitar el enable y utilizar la estructura "Disable Structure para deshabilitar toda la sección que viene después del primer SubVI llamado Write Characters to File.vi (solo que se encuentra dentro del case structure) en la sección D.5, segundo frame, dentro de la estructura de casos. Dejar correr el programa y revisar si aparece el error.
Realizar la misma operación que el paso 2 pero ahora deshabilitar el código que sigue después del SubVI llamado Write to Spreadsheet File.vi.
Realizar la misma operación habilitando ahora el SubVI, Read From Spreadsheet.vi.
Reportar cuando apareció el error.
Saludos
Juan Arguello
National Instruments México y Latinoamérica
Applications Engineer -
Recomendación de herramienta de análisis y monitoreo.
Hola,
Necesito que me puedan recomendar una solución que sea similar al smartreporter de mcafee, que sea capaz de detectar y reportar, a través de capturas de paquetes (sniffer), a usuarios que establezcan conexiones identificando el tipo de protocolo utilizado, destino, etc. Se requiere que sea una herramienta distinta al portafolio de productos NAM “Network Analysis Module” y que tenga más profundidad e inteligencia que netflow.
Les agradezco de antemano la ayuda que me puedan brindar.Buen día dgutierrez211.
Gracias por utilizar los foros de National Instruments. LabVIEW tiene la capacidad de trabajar con los 3 protocolos que mencionas a través de VISA (www.ni.com/visa/). Mi recomendación es que utilices los VIs de VISA y hagas una pequeña máquina de estados con eventos (http://www.ni.com/white-paper/3024/en/) como ***** muestra en la Fig. 1 de la liga que te envié en la cual tu código lance el control de la maquina dependiendo de cuál quieras comandar.
Espero que esta información te sea de utilidad para el comienzo de tu aplicación.
Saludos! -
Hola buenas, estoy creando varios módulos en Labview y necesito crear un menú principal que contenga estos módulos, de manera que el menú principal tenga botones y estos botones llamen a los distitos módulos. Quisiera saber si alguien me puede orientar a cómo realizar este menú principal.
Gracias. Saludos.Hola Enblanco,
tal vez este link te pueda dar una mejor idea de una forma en la cual puede llamar los VI's.
Yo le recomiendo usar la estructura de máquina de estados (link), donde puede controlar muy bien las transiciones que desea tener en su menú principal, especialmente si utiliza una estructura de eventos en el estado de "espera", analizando cual botón fue seleccionado. Tener mucho cuidado con cual evento se encuentra activando el cambio, ya que puede generar comportamientos indeseados. Lo anterior debe de complementarlo con las acciones mecánicas de los botones correctas para que funcione a la perfección.
Este tipo de diseño le dará escalabilidad a tu proyecto y será más fácil realizar cambios en un futuro, hasta será más fácil revisar cualquier problema en el comportamiento.
Otra forma en la que puede abrir un VI es ingresando a "VI Properties -> Window Appearance" y seleccionando "Dialog" o "Custom". Con esto realizado, puede seleccionar desde el "Project Explorer" el vi que desea abrir y jalarlo al diagrama de bloques del menú para que en el momento en que se ingrese a el estado indicado, el VI se abra y empiece su ejecución.
Espero haberme podido explicar bien, cualquier consulta con mucho gusto.
Saludos! -
Como correr un programa para que lea una tarjeta sim
hola que tal necesito saber como correr un programa para que mi iphone detecte una tarjeta sim?
Que tal Monik,
Me da gusto saber que fue de ayuda.
Para lo que quieres hacer debes de tener manera de sensar o medir la posición actual del motor cada vez que empiezas el programa. Supongo que eso lo puedes haccer con un encoder incremental. O si nadie va mover el motor manualmente podrías guardar la posición actual en un archivo de texto y que tome ese valor y con algún tipo de bandera decirle si es para un lado o para el otro.
Ahora, para poder tener esto iniciando, lo más recomendable es en la máquina de estados tener un estado de inicio donde valorará la posición actual, ya sea mediante la lectura de un archivo o con un sensor (encoder Incremental) y si esta es distitna de 0 (posición Inicial) ir a un estado donde revisará hacia que lado debe de moverse y hará el recorrido correspondiente (mismo código que el que ya teníamos) de hecho puedes reutilizar ese estado!!
Otra cosa que quería comentarte, preguntas otras cosas sobre el mismo foro esta notificación me llegará solo a mi, y si me encuentro fuera de la oficina por algún motivo será un poco más lento el servicio. Sin embargo, si tu haces un nuevo foro, automáticamente nos notifica a todos los ingenieros y sale como un foro sin respuesta que tambíen llama la atención de otras personas que estan revisandolos.
Otra cosa importante son los Kudos, cuando una respuesta funcione, puedes dar Kudos si esta te parece buena y eso nos ayuda a llevar un control de las respuetas buenas que damos o en cuales requerimos mejorar.
Estoy a tus ordenes, lo que pueda ayudarte!!! Revisa estos tips que te di y me dices si hay alguna duda!!!
Saludos, que tengas una excelente tarde!!
Luis Fernando
National Instruments Cono Sur
Ingeniería de Campo y Consultoría
http://chile.ni.com/ -
Cambiar menu desplegable a botones
tengo un menu desplegable con 3 opciones...en una estructura de casos....quiero controlar estas opciones con botones
Attachments:
imagen pro labview.jpg 46 KBHola Martin,
Hay varios métodos para esto. Te sugiero que utilices un "cluster" de botones y que haga tu programa con una padrón de proyecto de máquina de estados.
Aquí un link acerca de máquina de estdos: http://zone.ni.com/devzone/cda/tut/p/id/3024
adjunto un ejemplo que creo irá ayudarlo.
Saludos!
Felipe Flores
Engenharia de Aplicações
National Instruments Brasil
Attachments:
menu VI.zip 15 KB -
He activado un filtro con un widget y quiero desactivarlo
he activado un filtro a un widget de mi wordpress y quiero desactivarlo.
Hola M.Ennio,
Entiendo que haces una aplicación con flat sequences para un semaforo, como recomendación puedes investigar un poco sobre maquinas de estado en LabVIEW, estas permiten realizar un proyecto de forma modular y permite trabajar de una forma más sencilla proyectos como semáforos y similar.
Ahora, en el código se observa que existen condiciones de carrera o "race conditions", . Esto sucede cuando se intenta escribir y leer a una variable local o global casi al mismo tiempo, por ejemplo en el primer cuadro de la secuencia estas escribiendo a "verde" el valor de falso y al mismo tiempo se esta leyendo de "verde" para escribir al Linx subVI, como esto se encuentra en paralelo no se puede determinar cual de estas dos accionas sucede primero. En este link en Inglesy otro en español se puede aprender un poco más sobre condiciones de carrera.
http://zone.ni.com/reference/en-XX/help/371361H-01/lvconcepts/using_local_and_global/
http://digital.ni.com/public.nsf/allkb/0615A662C8525AED862579820056CEF3
Te recomiendo establecer un mejor orden para actualizar las variables y de verdad buscar realizar este proyecto con una máquina de estados, puedes encontrar un gran ejemplo en el "Example finder" que se denomina "State Machine Fundamentals". Lo puedes enconetrar de la siguiente manera:
http://www.ni.com/getting-started/labview-basics/examples
No tengo experiencia utilizando Linx, pero voy a investigar un poco más sobre utilizar Linx con arduino y te hablo al respecto.
Saludos,
David M
National Instruments -
Sugerencias para programar secuencialmente
Bueno, soy relativamente nuevo programando en LabView, pero por lo poco que usado, me di cuenta que los códigos se ejecutan en forma combinacional o en paralelo. Pero aun no se como programar en forma secuencial o en serie. Estoy muy acostumbrado a C, donde primero se ejecuta una instrucción y luego otra y asi sucesivamente. Pero aqui en LabView por decirlo asi, todo se ejecuta al mismo tiempo. Como puedo hacer para que primero se ejecute un proceso u evento, cuando acabe ese, se ejecute otro; por asi decirlo, para que sea algo asi como ejecutar lìnea por línea en C. Estuve pensando en usar banderas, pero no se si exista algún método mejor. Podrían darme alguna sugerencia?
Hola Fercho 8:
Gracias por utilizar los foros de National Instruments.
Puedes programar secuencias mediante las estructuras Flat Sequence Structure o Stacked Sequence Structure. Dichas estructuras obligan a que el código se ejecute en forma de secuencia una parte después de la otra y no al mismo tiempo. Otra forma de llevar un orden en la programación es utilizar la estructura de la máquina de estados la cual es secuencial, pero al mismo tiempo permite el regresar a otros estados mediante decisiones booleanas. Te anexo algunos ejemplos que espero te sean de ayuda, de igual manera puedes buscar ejemplos en el Example Finder de la ayuda de LabVIEW.
Que tengas un excelente día y estamos en contacto.
Carlos Pazos
AE
NI México
Carlos Pazos
Applications Engineer
National Instruments Mexico
Adjuntos:
LEDSEQ3.vi 20 KB
LEDSEQ1.vi 15 KB
LEDSEQ2.vi 15 KB -
Como puedo hacer q mi browser cargue más rápido mi web?
tengo una web con drupal y no me va todo lo rápida que quisiera...he corregido enlaces, errores html...pero todavia me sigue sin convencer la velocidad...como podria mejorar esto?
La mejor manera de hacerlo es poner en práctica una máquina de estado para configurar la adquisición de imágenes, encontrar el patrón, análisis de la imagen, y reiniciar la adquisición de imágenes como un ciclo.
Voy a agregar algunos enlaces a artículos sobre la máquina del estado en LabVIEW.
The better way to you do it is implement a state machine to configure image acquisition, find the pattern, analyze the picture, and restart image acquisition as a cycle.
I am adding some links to papers about state machine on LabVIEW.
http://zone.ni.com/devzone/cda/tut/p/id/7532
http://zone.ni.com/devzone/cda/tut/p/id/2926
https://decibel.ni.com/content/groups/northeast-oh-labview-users/blog/2009/09/08/state-machines
Saludos,
Abel Souza
National Instruments
Applications Engineering
www.ni.com/suporte
Abel Souza
Engenheiro de Aplicações
National Instruments Brasil
Maybe you are looking for
-
I'm very tempted by a refurb HP Smartbuy ZR2740w 27" WQHD display, but it doesn't have a HDMI port. It does have DisplayPort. Since the mid-2011 Mac Mini I have has either HDMI or Thunderbolt to choose from, plus I've just bought an external TB stora
-
Multi Mapping 1 to n. SP15
Hi All, I have a plan to do a demo scenario 1 to n mapping without BPM. I tried FAQS solution bit confused , so i tried designing following way. I'm confusing in creating target messages ( i need to create 2 messages from 1)for message mapping. can
-
Have added 3 range expanders to my home network now i find airport express will stream to my hifi but it stops every now and then as though it is buffering, any suggestions?
-
AIP-50547 - TPA Not Found - Not Picking up Sender ID (re: "test")
I am getting closer and closer here. I have created an 850 with ACME as the sender, and the host being GlobalChips, but now the system thinks that a sender called "test" is in the edi packet. Does anyone have any ideas here ? I also made sure that my
-
hi all first this is not an problem i am reporting, rather an doubt i have as i am experimenting dataguard in oracle 10g. I have setup and primary and standby database and configured dataguard, switchover and failovers are working fine. if my primary