I am using LabVIEW's Statechart Module to build a synchronus statechart that is called within a Timed Loop from another VI. Within the statechart, each transition is configured to occur on the NULL trigger, but can only take place if its guard evaluates to true. I have a state that has 2 transitions out of it, where each transition has a different guard. Since my Timed Loop executes relatively slowly (once every few seconds), it is likely that both guards could become true between subsequent calls to the statechart.
If this happens, which transition will occur? Does LabVIEW have some kind of priority that I can assign to transitions to ensure that if multiple transitions are possible, a particular transition will execute rather than another?
I have attached a simple example that should illustrate my point. In this example, if the statechart is in State 1, and both Input A and Input B change from false to true within the same 3000ms period, will Transition A or Transition B take place? More importantly, how can I force a particular transitions to occur in these circumstances?
NOTE: The Run Statechart function in Example Caller VI.vi may need to be re-linked to Example Statechart.lvsc by right-clicking and selecting "Link to Statechart...".
I would greatly appreciate it if someone could shed some light on this subject. I have found nothing about this on the web, but maybe I'm just not looking in the right place?