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

  • Ajuda com logica de sensores

    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 KB

    Rafael,
    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

  • Controller different Input in the same time in a real Scenario...(SIMULATION IN 2 TANKS CONTROLLER BY PCB BOARD)

    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.
    Elena

    Buenos 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.

  • Problemas con subVI

    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 KB

    sí, 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

  • Dudas con un menú interactivo

    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

  • Error 5 LabView

    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!

  • Menu principal

    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 KB

    Hola 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/0615A662C85​25AED862579820056CEF3
    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/e​xamples
    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