CLD Practice Review - Car Wash

Hey, so I've done all 4 available CLD Prep Exams.  I was curious if I could get some feedback on the Car Wash.  This, imo, was the easiest of them all and so I was wondering what kind of marks I would end up getting with the attached as the end result.  Like, just how many "unnecessary bends" are present in my code?  What does it need?  The code is in 2011 SP1.  Thank you.
Remember, code does exactly what you tell it.
Attachments:
Car Wash.zip ‏89 KB

Well while we wait for the thread to be moved here are some comments:
Your main has uninitialized shift registers for no reason.  They should be initialized with constants.
All of your VIs are missing VI Icons
All of your VIs are missing VI Descriptions
Saved controls are also missing icon and description
Your front panel controls don't have tip strips, or descriptions
Wires are routed behind structures in a couple VIs
There are far too few comments.  All cases in the state machine needs comments explaining what the state is for.
I also don't remember all the requirements so there is likly funcitonal things I don't remember.  Like aren't controls supposed to be disabled when a car is going through the wash?
Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

Similar Messages

  • Cant figure out what error in my car wash tunnels

    I made a vi to practice the car wash CLD sample question. And labview says there is missing assignment in every one of my 10 tunnels. But I checked, there is an enum array going into every one of 10 the tunnels. Where did the error come from? 
    I cant figure it out!   My tunnels look exactly like the one in the CLD sample answer attached.
    Solved!
    Go to Solution.
    Attachments:
    Car Wash LV86.zip ‏73 KB
    sunflower car wash 100.zip ‏44 KB

    Hi,
    Just move that Enum tunnel upward which you are indicating in RED arrow. You can find a unwired tunnel.Just delete that. Since it has been overlapped you are not able to see.
    Thats it.All your error will vanish.

  • Sample CLD (Car Wash) Solution for Review

    Hi,
    This is my first time posting. I am studying to take the CLD and I have attached my solution to the Car Wash sample exam (LV2011) using a PC-Events architecture. I ignored the time constraints for now to see where I stand as far as functionality and style. I tried to be thorough (not creative) with documentation as well. Any feedback would be greatly appreciated.
    Thanks!
    Steve T., Engineer
    NSTec
    Steve T., Engineer, CLAD
    Albuquerque, NM
    Attachments:
    Car Wash.zip ‏128 KB

    Steve Tomany wrote:
    Great, thanks for the feedback. Any chance you can show me how you use the queue naming and the sub vi in this way? I've played with it but my attempts do nothing to improve the BD.
    Thanks
    Sure,  Here is a copy of my PC loop (events) template with the consumer loop as a sub-vi (Type Defs disconnected)
    (NOTE: my template contains vi documentation template as well)  This won't save you on the CLD exam since the shipping templates are all you can use.  But having your own for "Real Life" sure speeds up programming time.
    Jeff
    Attachments:
    ProducerConsumerEventsSilver.vi ‏35 KB
    Consumer.vi ‏22 KB

  • Car Wash Review

    Hi All - 
    I'm planning on taking the CLD in a week and a half or so. Would any of you mind reviewing my car wash practice exam? I posted some other practice exams in June, but I have changed my approach and would appreciate another review. 
    Thanks!
    Attachments:
    Car Wash - 11-21-2012.zip ‏239 KB

    Overall Very nicely designed I think you pretty much understand what you did right.  So accept my appologies in advance for nitpicking on the areas you can improve in the next week.
    BD Size.  Get them more compact! most are saved with way too much whitespace.  The difference is night and day about how much actual information the developer can fit on one screen white space just hides another pane that could present information
    Lets look at that same AE Again. a couple more edits are desirable.  See notes in snippet.
    Again nice work
    Jeff

  • My Car Wash CLD Example

    Hello,
    I just completed the Car Wash CLD example using a modified producer/consumer with events pattern. I would like any feedback regarding the implementation.
    Thanks!
    Attachments:
    CarWash.zip ‏163 KB

    Hopefully this is still helpful. I would've reviewed last week but I just finished this example myself.
    I think you'd earn solid marks for coding style. Your code is clean, organized, and well-commented/documented.
    Unfortunately, I can't seem to get many of the functions to work as expected... the architecture is also pretty complicated. I noticed a few instances of elements being self-enqueued into the same state machine. This is a bit challenging to follow and (possibly?) debug.
    http://linkd.in/mikele

  • Please review my CLD practice exam

    Hi all,
    I'm working my nerve up to take the CLD.  If anyone has the time, I'd appreciate some advice on style, test rules, etc. based on my solution to the Traffic Light sample exam.
    Seemed a lot easier than the car wash exam.  Is this an older exam? How do the real tests compare to the practice exams? Any advice is much appreciated.
    -Barrett
    -Barrett
    CLD
    Attachments:
    Stop Light Controller.zip ‏53 KB

    blawson wrote:  would a simple error dialog be all I'd need for error handling?
    -Barrett
    Message Edited by blawson on 11-16-2009 10:12 AM
    Generally speaking, I think that the error dialog should suffice. I don't think I'm violating the NDA in saying this...  (My sincere apologies to NI training & certification if I am - please delete my post if that's true)  On exams I usually do something a bit more complex, but it's probably overkill.  I usually run a separate loop in parallel and send my errors over there via a queue.  That way errors don't hang up the application.  Still, I use the stock error dialog (one of the two) in my error handler loop.  I don't think I've ever lost points for that, to my recollection.
    Also, regarding typedefs:  To avoid orphaned enums that should be typedefs, I wrote something backwards on my forehead with a marker. (OK, not really.)     "If it's a cluster or an enum, make it a typedef."  Following this rule, I always start out with a typedef to begin with and thereby avoid the problem.  My experience is that this almost always saves you trouble later on.
    Free advice, for what it's worth.
    Jim

  • Car Wash CLD Sample Exam Solution

    Attached is my solution to the CLD Car Wash Sample Exam.  Comments will be appreciated.  The main VI is Main_6.15.10.
    Thanks in advance.
    Attachments:
    CarWash_6.15.10.7z ‏60 KB

    Here are my thoughts....
    Your solution is functional, so there are points for that right away.  Where I think there could be some more work is the architecture.  The exam requirements state that the design must be "easily scalable".  To me that means new states or cycles can be added without much messing about on the block diagram.  If you notice, there are only certain... lets call them Properties of each cycle type.  You could have an array of cycle properties such as cycle time, cycle position switches, cycle name, and flags for standard or deluxe.  Then you could reduce your cycle handling to a single state that just indexes through the cycle array and executed the next appropriately flagged cycle.
    I noticed a Select node in each of your cycle states with constant True and False wired to it.  That is a total of three elements plus two wires that should have just been a Not right off of the Boolean palette.
    You stop the program with a Stop button, yet you allow the user to close the window.  You should consider a Panel Close? event in your event structure to handle a use trying to close the window so that you can execute a graceful stop.
    There is no VI Description filled out for your main VI.  You should also have an icon for the main VI.  The suggested front panel shown in the exam has an icon.
    When your VI is running, you have the scrollbars, toolbar, and menu bar shown.  None of those serves any function for the application, so they should not be shown at runtime.
    The Stop button that is used to stop your application is reset with a Property Node.  Not that there is a performance issue here, but it is generally not good practice to do that unless you are forced to.  Consider just using a Mechanical Action of Latch When Released instead of Switch When Released.  That way you do not need to force the reset to the False state.  Of course, I would rather see something like a Stop state writing to the While Loop conditional terminal.  Also, you could have used a Local Variable to write the initial state of the Sim Switches instead of the Property Node.
    The graders like to see code comments describing your algorithms.  I would say that you need more of those.
    A 10 msec timeout on the event structure is a bit hyper.  Nothing in the system runs that fast, and the only thing you are waiting for is the user.  You could actually have a -1 wired there if you add an event case for the Stop button and Panel Close.  It will greatly reduce the CPU cycles (again not that there is a huge performance issue here).
    Come to think of it, the 20 msec wait for next multiple timer is a bit hyper too.  Your timing requirements are on the order of seconds.  You do not need to loop that fast.
    In general I prefer to have the Event Structure outside the State Machine.  Either that, or I use the Event Structure as the State Machine (in place of the Case Structure).  That way, if you need to respond to the user interface, you can do so without waiting to cycle back to the Idle state.
    This one was not listed in the requirements, but it would be very helpful to see the clock.  A cycle countdown timer or elapsed time indicator is so helpful to the user and the grader.  It confirms that things are working properly and the the application has not sieved up.  Users like to see something "alive" on the screen.
    To end on a positive... good job remembering to Disable the Purchase Selection buttons once the user clicks one.  I got ding'd for forgetting about that back when I took the CLD in 2003.

  • CLD Solution - Car Wash System

    Hi all,
    I have one lLVOOP solution for the car wash example for the CLD.
    Would like to have comments on this from you all
    Also, you can rate me between score of 0-40
    Thanks!
    -Parag D
    -FraggerFox!
    Certified LabVIEW Architect, Certified TestStand Developer
    "What you think today is what you live tomorrow"
    Attachments:
    Wash System.zip ‏130 KB

    Did you complete it in 4 hours?
    The code and project structure look very good in my opinion.
    After selecting Economy or Deluxe, you should provide an indicator as to what was selected. Such as "Deluxe Carwash In Progress" above the LED's. You should always give the user confirmation.
    Hide the toolbar while running. 
    Richard

  • Please review this Car Wash Solution with Queue LV 2014

    Any advice would be greatly appreciated...honest
    Attachments:
    CarWash with queue LV 2014.zip ‏183 KB

    Hi again Matt.
    I came up with 2 solutions for dealing with errors.
    1)Generate an error message containing words that let the user know the program must be manually exited due to an error
    2)Generate a user event in the consumer loop that lets the producer loop know it must quit the program due to error and show a dialog on the way out
    To test this I added a Button named error that enqueues a command that  causes the consumer loop to generates an error
    Also quiting the producer loop and releasing the queue was generating an error in the consumer loop which caused it to stop
     from the error case.
    That works but badly so a better way was to enqueue a quit command to the consumer loop. Done in both updates.
    If I were doing the exam I would use the first in the interests of time. Crude but lets the user know.
    I attached both versions in case others were interested.
    Attachments:
    Car Wash simple error.vi ‏79 KB
    Car Wash reg events.vi ‏82 KB

  • Finished taking Sprinkler CLD Practice Exam

    I am planning on taking my CLD this coming week, and just finished taking this practice exam. Since I studied the car wash and ATM solutions I decided to go for the Sprinkler practie exam. The "Sprinkler CLD.zip" file is the results of 4 dedicated hours of my Saturday.
    I ran the VI analyzer on all VIs and CTLs and I'm not impressed with myself. Could somebody tell me how they think I would score?
    I looked at the solution for the Sprinkler.vi and it's clear that my approach is nothing like the solution from NI. This could be a good or a very bad thing. 
    It appears quick comments could mean alot if the graders depend heavily on the VI Analyzer.  It appears that I should have at least two comments in each VI, and not only have the documentation section filled in the VI but the same for controls.
    It's clear that I missed some wires when I resized my case select boxes.
    After finishing the exam and then looking back i see there is a possible lock out condition on initialization that would prevent the VI from reading the CSV file. I shouldn't have created a  "READ CSV" State. If i would have placed the "READ CSV FILE" inside the "Power Up Configuration" state there would be no issues. I should have restarted labview in my last hour.  If the VI starts up with the Water Pressure above 50% and No Rain then the CSV file is read and there is no problem. This would have been an obvious mistake had I restarted labview.
    I realize that I missed some of the specifications. For example if it starts raining during a sequence it is suppose to restart the sequence, not pause it.
    There are few comments in the code. I usually add many comments to my code, but this is my first time using a simple state engine.
    At work I have a large infrastructure already in place complete with error handling and task management.  I am also use to working on multiple monitors. During the test I only used one. Even if I didn’t pass this practice exam at least having a dry run outside my normal work condition was very good practice.
    I spent time practicing earlier and can build the Timer.VI in about 8 minutes. A functional global timer seems to be a common theme in the practice exams.
    Does anybody have any ideas or suggestions?
    Do you think I would have passed the CLD exam with this test?
    Comments?
    Regards,
    Attachments:
    VI Analyzer Results.zip ‏4 KB
    Sprinkler CLD.zip ‏377 KB

    There are a lot of good things in your code, you are nearly there. I haven't run your code, so this is more style and documentation comments.
    If I were you, I would concentrate on the following:
    Wire Error through all your subVI's put your subvi code in an error/no error case structure. If you had done that, you didn't need the flat sequence structure in your code.
    You haven't even wired error to the subvi's with error terminals, this will cost you points.
    Label any constants on the block diagram.
    Brief description of Algorithm on each VI block diagram.
    You could have avoided using local variables, for example Run Selector as this control is available in the cluster. So just a unbundle by name would have given you the value of that control. If you do use them, then make sure you state why (for example efficiency etc.) in a block diagram comment.
    Some subVis are missing VI documentation, this wont be taken lightly.
    Using default value when unwired (for your while loop stop) is not recommended. This was specifically discussed during a CLD preparation class I attended not so long ago.
    While icons are pretty, I wouldn't waste time trying to find glyphs for your subvi's just consistent text based icon scheme is perfectly acceptable. You can do this if you do have extra time, it wont fetch your extra points though.
    LabVIEW 2012 has sub diagram labels, you can enable this by default in Tools>>Options, adding comments in each of the cases is recommended.
    The main thing is time management and make sure you read other posts/blogs on CLD. I would also recommend quick drop, if you haven't started using this it may not be a good idea to do so now for your exam next week. But in general it is very useful and saves time.
    Hope this helps.
    Beginner? Try LabVIEW Basics
    Sharing bits of code? Try Snippets or LAVA Code Capture Tool
    Have you tried Quick Drop?, Visit QD Community.

  • CLD Practice exam

    Could anyone offer up suggestions to better the code? I probably spent too much time getting it to work because when I stopped at four hours I realized I hadn't done half the commenting I wanted too.
    Thanks in advance for any help or suggestions.
    -Ian
    Attachments:
    CLD Exam - Car Wash.zip ‏97 KB

    -Put a description of your top-level VI under VI Properties/Documentation.  An over-all description of what the program does.
    -Use wire labels where appropriate (such as your shift registers).
    -I would use some sort of error handling and make sure all your property nodes are wired through with the error clusters.  This will also help with flow control since most of your property nodes are not wired to anything.
    -Mark is correct in using the Use Default if Unwired on the tunnels.  Although this is programmatically correct, I avoid using this just for the sake of clarity on what the default value is.  Wire a default constant to these.  The reason you may get dinged is it's not self-documenting.
    -Your shift registers are uninitialized in your main loop.  Was this your intention?
    -In SetAllIndicatorsOff.VI there is no need for the Array Size function.  You can use auto-indexing on your For loop.  Or you can input your cluster and cycle through your cluster elements inside the For loop which will eliminate the need for the cluster to array function.
    -In StationStepper.VI, your inner case structure does nothing.
    -In DefaultWash.VI, the operation does not seem to agree with the documentation.  The High Pressure Wash is enabled regardless of which wash setting is selected.
    -In NeedStationOne.VI, like the unwired default for tunnels, wire constants to the index array function.  Necessary?  No, but it's easier to see what the default settings are for the function, in this case 0 and 1; although your description of the VI mentions nothing about these selections (Under Body Wash and Bug Remover).
    -In TimeElapsed.VI, position your controls and indicators on the FP in the order they appear on the connector pane.  This makes it easier to follow with the context help. Unless you're opening this VI during run, you don't have to worry about the look and feel of the FP.  You could make this VI simpler by using an FGV.
    -Editne last thought, make sure you create a project from the start.
    All together your programming style is clean and well documented.  I would definetly concentrate more on getting the documentation down right than proper operation, and as Mark stated, check your spelling.  It makes it harder to understand what your intentions are.
    Reese, (former CLAD, future CLD)
    Some people call me the Space Cowboy!
    Some call me the gangster of love.
    Some people call me MoReese!
    ...I'm right here baby, right here, right here, right here at home

  • Car washing machine

    Hello guys , 
    first i'm sorry for my bad english .. 
    second I'm very new in labview and i'm supposed to build a model for a car washing machine ,, i.e . a building where the car has to enter dirty and leave it clean ..
    i didn't start the project yet but i will be happy to hear ur ideas about what to include in my project .. 
    keep in mind that the project won't be that big , it is a model only .. 
    waiting patiently to hear ur ideas .. 
    and thx for your time

    Hi,
    This sounds like on of the examples of CLD exam.
    You can find more details about this on the following link https://lumen.ni.com/nicif/us/ekitcldexmprp/content.xhtml
    There is CLD Exam Sampels, and one of them is the Car Washing Software.
    Best regards,
    IR

  • Car Wash Solution discussed in the webcast

    The Car wash solution on the sample exam page does not match with the solution discussed in the webcast. A few people have requested the solution discussed in the webcast to be posted. Please see attached.
    Thanks
    Zaki Chasmawala | Certification Development Group Manager | Training & Certification | National Instruments | [email protected]
    Attachments:
    Car Wash Solution.zip ‏111 KB

    Don't look too closely at the solution.  It was meant purely to show architectures and general concepts.  Furthermore, it was not a PERFECT solution.  It was a PASSING solution.  That example was actually somebody's submission for a CLD and they passed.  If there was a functionality missing, that would not be surprising.  A few points marked off, but still passing.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions

  • CLD example review

    Hi everyone,
    I have started preparing for CLD. This is my first try with Car wash example.
    Please spare your some time for my example and tell me few tips, corrections.
    I know there will be many points, may be bugs in my program. Also let me know how I can avoid using local variables and still update "Wash Options" control.
    I have two local variables. How bad effect it will have on scoring ?
    Also let me know if you will give me passing score or not out of 40.
    I hope there are less bugs.
    Gaurav k
    CLD Certified !!!!!
    Do not forget to Mark solution and to give Kudo if problem is solved.
    Attachments:
    100929-01.pdf ‏185 KB
    CLD Car wash.zip ‏110 KB

    Gaurav-
    You did several things right!
    Code looks like it hits all functionality
    Good use of comments in code
    VI documentation and icons are present
    A couple of things you did not do right
    Keep Front panels compact and neatly alligned (saving "Maximized" is a pet peeve of mine.  You just can't see enough panels to compare sections of code.
    missing control and indicator descriptions and tips. (Hint: when creating a control just open the property panel and enter all the data.  TIP STRIPS should always be available for every object the user can get at and would contain a lot of the FP comments that clutter the FP with data that can be popped-up when the user hovers over the element)
    use captions to show default control values.  e.g. on Timer.vi control "Option" is an ok label hide it and show caption "Option (Count)".  see how this effects the readability of the help window for Timer.vi?
    your AEs hide terminals.  Whenever possible (allways) keep  terminals outside the loop.  see the snippet revision of Read File.vi- has a few advantages over the original doesn't it?
    Personally I would have used an event loop to enqueue and pass user generated commands to a state machine (more scalable IMHO) but overall the structure you have is satisfactory.
    Nice work.
    Jeff

  • Timing CLD practice exams

    Hi,
    I wanted to bring up this topic for those who are preparing for taking the CLD. 
    As you know there is a four hour limit for taking the exam.  While preparing for the exam, using all the materials, webcast, and the certification discussion board, it is important ... , no critical, to clear your schedule and time yourself for a four hour exam.  Twice.
    Many developers get caught in the time crunch, both in their daily activities and in the test.  Putting yourself in the position of having to face a hard deadline for completing the exam is a great wake up call.  You don't want that call to be during the actual exam. 
    Timing your practice exams is a great way to experience the psychological pressures you will face during the four hours. 
    There is a wide spectrum of programmers that take the CLD, experienced pros, those who use it once or twice a week at work, advanced beginners, and all other experience levels.  Preparing with a strict time limit gives all the broad spectrum of candidates the opportunity to see where their personal methods support or hinder the effort to complete in four hours.
    In general, take no more than thirty minutes to read the specification, understand the specification, and plan your design. 
    Again, generally speaking, the last thirty minutes should not be used as a "last ditch" effort to start a new piece of functionality or race to a last minute addition.  If a bug is introduced in this last half hour, the damage done to overall functionality could be much worse than the potential gain.  One good use of the last thirty minutes is to continue testing integrated modules/SubVI's, to fix small discrepancies , to make one more verification that what you have already programmed is working correctly.  One of my clients used to tell me "test, test, Test !" 
    Of course, it is impossible to give directions that will meet all individual methods.  This is why taking a practice exam under strict time limits is a HUGE suggested best practice.  You get to see first hand how your strategies and test taking methods fit the four hour time limit.   You can plan and prepare your solution and methods, but until you time it firsthand, you are only measuring your knowledge of the methods.  In most cases, nothing teaches faster than timing your sample exam and learning from your own mistakes.
    If you are struggling with both implementation and timing, complete one practice exam without time, then take it again , timed, with just three and a half hours limit as you already know the specification.
    One time saver is to document and label as you program.  While you are in a section of code, document what that case, SubVI, or algorithm is doing.  Right at the point of conception it is easy to jot down a one line description.   Waiting until the end and then documenting all the work you have done is not as efficient as documenting "in the moment".  You might be testing in the last thirty minutes and run out of time to document the complete application.  Also, when you are working with already documented code, you are giving yourself a road map as you integrate modules or add functionality to the application.  Try this while you are taking the practice exam.
    I hope you find this advice helpful and something to think about, but more importantly I hope I have convinced you to take some practice exams with strict time limits.  Although I have touched on a few topics, the focus here is to promote the timing your CLD practice exams in preparing for the CLD.
    Mark Ramsdale
    Project Manager and CLD
    Customer Certification and Training at National Instruments

    Jeff·Þ·Bohrer wrote:
    RDarn the mobile interface.
    Tim, I hear you. What do you consider to be a "normal project"?
    PS My CLD-R is at 8:00am tomorrow.
    "Normal" = project for actual work
    Good luck starting in about 13 minutes!
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

Maybe you are looking for

  • One page not loading correctly

    I am using the latest Muse CC. It seems the problem began when I downloaded the new version of Muse CC. My ads page under portfolio on www.tallguygraphics.com is not uploading correctly to the server since I added new items to the page. I have tried

  • Skype on Nokia 630 - typed wrong name

    Just got a Nokia 630. Already have Skype on laptop with established Skype name and contacts, etc. Went to set up Skype on N 630 but mis typed my name and registered without checking. Now have new account that I do not want which is not synched to my

  • Need help getting scrollbar from design to code

    First off id like to say I'm VERY NEW to coding I know the basics of CSS and I even less of flash. But im willing to learn anything iv only been doing this for 3 months. i have CS5 master colection ok Here is my design for the cliant's site the part

  • Nokia Mobile With These Features

    Hello, I am looking for mobile which will give long duration battery about 25 hours talk time which will have no camera and no multimedia feature but it should have unlimited phonebook capacity like symbian phone and unlimited messages storing capaci

  • Smartform Issues

    Dear ABAPers: I am facing an issue while activating my SmartForm, the error which i am getting is "Text  ID Y001 language EN not found" Kindly note that in my Smarform i am using the FM "READ_TEXT'. Regards, Shegar ABAP Consultant Moderator message -