Jump to content

LewisG

Members
  • Posts

    8
  • Joined

  • Last visited

Posts posted by LewisG

  1. Thanks for the reply!

     

    If I was to have a wait for pressure to build, I would keep en-queuing the "Wait for pressure" message from within the message until it was up to pressure and then enqueue the next state.  I wouldn't have a blocking message.

     

    I don't like the idea of parallel helper loops because you are basically re-creating the AF.  Why not just create a nested actor? I could create a state machine nested actor.  In the nested actor, when it is time to do PID, enqueue the PID message and the PID message can keep enqueueing itself until it is finsihed.  I don't really like this solution (hence my initial post) because it gets difficult if PID as enqueued a message to itself but the caller has sent a message to go idle.  The nested actor goes idle but there is still a PID message in the Queue.

  2. I have to develop an application and I would like some help designing the architecture.

     

    The system controls a number of pumps and valves to create flow around a network of pipes.  There are flow meters in the network which are used as feedback for PID to maintain a flow.  The network of pipes is gradually opened up to get flow and then PID kicks in to maintain a flow.  The test sequence is pretty much a big state machine.  For example:

    1.       Open valve 1

    2.       Wait for pressure to build

    3.       Ensure temperature is not over limit

    4.       Etc

     

    I will have a number of different screens which I want to load into a main sub-panel:

    ·         Main SCADA screen (show state of all valves pumps etc)

    ·         Test setup screen (configure tests)

    ·         I/O screen

    ·         Alarm screen

    I will also have a number of I/O processes:

    Inputs

    ·         Digital (valve sates)

    ·         Analogue (flow meters, temperature etc)

    ·         Modbus and serial devices (flow meters)

    Outputs

    ·         Digital Output – Valves etc

    ·         Analogue  - Proportional valves

     

    I want to use the Actor Framework because I’ve used it 3 times now and it is easy to spawn processes, make popups, inter-process messaging, error handling etc.  I can have all my processes separate (high cohesion) with separate user interfaces (if they have a UI) .

     

    My problem is that AF and State machines don’t really go that well together (correct me if I’m wrong).

    What happens when I want to do PID or loop in the same state?

    Time delayed message?

    A a VI for each state and enqueue the next or same state from within that VI?

     

    Does anybody know a good way to incorporate a state machine into AF or should I chose a different way of doing things?

     

    Any thoughts will be appreciated.

    Cheer

    Lewis

  3. Hi all,

     

    I'd appreciate some advise or pointing in the right direction regarding building an EXE with class dependencies.  I have a project built with actor framework and when I build it to exe, I get lots of dependencies which I think should be included in the EXE as seen below:

     

     Build%20Folder%20Capture.PNG

     

    On my Source files build properties page I currently have nothing under Always Included.  I did try including all of the lvlibs and including them in the EXE but it didn't make a difference.

     

    In summary, I think the way my EXEs are building is not right.  It is easy to see what VIs I'm using (although you can't open them) and it doesn't look very professional.  What are the best practices for building dependencies into EXE?

     

    Thanks

     

     

  4. Congratulations Neil & James!  I unfortunately failed with 63.25% and scored low for functionality and design.

     

    In the exam, both my RT, FPGA and HOST were not finished.  When I started running out of time I went into CLA exam mode and putting in the framework for things.  I should have probably concentrated on getting half of it working instead of getting all of it nearly working.

     

    More practice and code quicker and I might get it next time  :(

     

    Did you start from a sample template James?

  5. I took the exam today and it didn't go too well.  There was simply to much to do in 4 hours.

     

    I'm also very surprised you strongly recommend not using the sample exams.  I did decide to use the sample project as a framework and I think this was a good decision.

     

    What are the expectations for these are exams?  Are we expected to finish them?  

     

    The sample exam is a similar size/type of application as the shipping example called LabVIEW FPGA Waveform Acquisition and Logging on CompactRIO.  We are expected to code it in 4 hours but I wonder how many hours the example took to code

  6. I have my CLED practical exam next Tuesday and I'm not sure if I should try to use one of the cRIO example projects that ship with LabVIEW.

     

    I have been looking over the sample projects and I can see an awful amount of local and global variables.  I want to use an example to save time because I think the exam will be similar to the sample projects but I'm worried I would get penalized for using to many local/global variables.

     

    Has anybody had a look at the shipping examples for cRIO like the LabVIEW FPGA Waveform Acquisition and Logging on CompactRIO?  What are your thoughts on them?

     

    Thanks.

    Lewis

  7. Hey,

    Thanks JG.

    I can understand the benefit of global variables here. I have never really used them before which is why I didn't know why the Block Diagram was missing.

    I have always been taught to avoid them although I understand they have their use case.

    "You could call the Preference Pages in your own subpanel (they are just VIs) - but you would have to handle the synchronization built into the Engine/Page VIs tho"

    At the moment, I don't want to call each individual page in a sub panel (if that is what you meant). I would like to load resource\dialog\PreferencesDialog\PreferenceDialog.vi into a subpanel. For example, on my top level VI, I could have a Tab with a sub panel to handle all of the configuration. How could I implement this? At the moment I can see you call PreferenceDialog.vi by reference in the Preferences Dialog - Dynamic__jgcode_lib_preferences_dialog.vi

    Some guidance would be appreciated :)

  8. Hi all,

    I'm looking to use this Preferences Dialog Library and wanted to ask some questions about it.

    Is it possible to run the preferences popup in a sub panel instead? My guess is that you can't because it is called within "the engine" ?

    I don't understand what all of the global variables are for? Where do you write to them and what is the need for them?

    For example, in the readFromDisk.vi, we specify the sections we would like to read, where can I add a global variable like the example has?

    Why can’t you view the block diagram for appVars.vi?

    Apologies for my blunt questions, I’m just getting straight to the point :D

    Thanks for the code JG :worshippy:

    Lewis

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.