09-09-2011 07:48 AM
Hi,
I have a silly doubt about sequence structure that I used sequence structure to give some delay between my modules. I need pass all the wires through Seq Stru, So, I doped a Seq Stru on all wires But all wires are still in the background(not through Seq stru). I can make them by selecting each one but is there any option available that can just pass all existed wires through it.
09-09-2011 08:00 AM
There is no shortcut to do this. If you have error clusters you should consider using the Time Delay Express VI to accomplish the same thing by using the error cluster wires, without having to use sequence structures.
09-09-2011 08:00 AM
No.
If you choose to use a seq structure then you have to wire them through explicitly. The only thing that could make it easier is if you created a type def'd cluster and wired the cluster through and then use "Unbundle by Name" and "Bundle By name" in each frame as required.
Ben
09-09-2011 08:03 AM - edited 09-09-2011 08:04 AM
Assuming you're using a Flat Sequence....
Tack the wire to the sequence structure edge, which will create a tunnel. From that tunnel, wire through to the next frame, etc.
Better yet, don't use the sequence structure. Use error in / error out wiring to force dataflow from your modules to a delay timer VI that has error in/our terminals, such as the one from Open G, or make your own.
edit: two good responses while I was typing!
09-09-2011 08:13 AM
Thank you all.
I have one more doubt that I am using ENUM state machine which has three states. I want pass one value from one state to another state. I know shift register can do this but couldn't able to figure out. I want to do as, In one case if the amplitude is more than V it should take value 20 to next state and if the value is less than V should pass 5 to next state. Can I get some suggestions. I am new to labview.
09-09-2011 08:21 AM
I would suggest you read this article: Application Design Patterns: State Machines
09-09-2011 08:45 AM
I can make it with shift register but how can wire value to shift register as I said about conditions(More than 2v and more than 1v). I have no idea. I am using Greater comparison option but it returning true or false rather than like to output a number as I said 20 or 5. Is there any other option available.
09-09-2011 08:53 AM - edited 09-09-2011 08:55 AM
So you want to pass data from one state into the next? Well, there's a variety of ways to do this. You can make your state machine a string-based state machine and use a format such as stateName::stateData. On the left side of the loop you just split the string in the shift register to get the state name, and then pass in the state data, if any. A string-based state machine that I designed WAY long ago works kind of like this. Also, JKI's state machine works in this sort of way (though they don't use that specific format that I mentioned).
09-09-2011 09:03 AM
Hi,
There is no problem at all for me to pass data between two states. I am just did not find any way to make this logic. I did not explain well it before but here is that. I Just want a logic that generates 20, 5 values(I am using Amplitude and levels Vi. It will give amplitude as output. I need to check this amplitude,, if it is more than 2v I would like to pass 20 to next state and if it is 1v send 5 to next state). I am already using one ENUM for indicating states and using second Shift register especially for this purpose. Excuse me for bad explanation in previous posts.
09-09-2011 11:48 AM
Just wire the output of the comparison to a Select function. You can cascade these if you need to. For instance, if you want to send one value if the input is greater than 2V, another value if it's between 1 and 2, and a different one if it's less than 1.