From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Certification

cancel
Showing results for 
Search instead for 
Did you mean: 

Sample Exam Solutions for Review

Overall nicely done as a simple state mahine however, with the requirement to respond to user input within 100msec you either need to use a PC Events structure or... use set busy to let the user know the FP is not going to respond while long operations are taking place. Another option is to hide controls that can't do anything yet.  (You have a "Mouse banger" vi there... how would the user know that pounding on those bittons is not going to do anything but queue up events?) 

 

Tip strips- well you do have them but, I'd still score that as a miss! Talk to the user... This is your only chance to inform them! (They won't read the instructions)  e.g. "Fan" gives me no new information.  "Observe the status of the Forced Draft Fan" tells me that object is input to me, not something I can click, and what Fan it refers to (I can look up "Forced Air Fan" in the manual)

 

You also missed just a bit on the logging.  Did you really want 100 Start Pre-Purge log entries?

 

Good luck next week!  The real exam will have similar types of requirements (Timing, File I/O, UI, and state flow)   You demoed some understanding of each.  Tweak your perspective a bit to helping the user and you should earn yourself a nice shirt.


"Should be" isn't "Is" -Jay
0 Kudos
Message 151 of 623
(4,305 Views)

Some other general bits of feedback:

 

- Whitespace ahoy! The block diagram has been designed for a 1920x1080 resolution monitor. Just because all that space is available, doesn't mean you should expand your BD to fit it. Greater use of sub VIs might help with this.

 

- Repeated code should go into sub VIs. For instance, you have your event file logging as a sub VI, but you always bundle stuff before passing it to this VI. You could move the Get Date/Time in Seconds into the subVI and just pass in the strings, as a simple change.

 

- Shift registers and clusters are fine, but when you start using several of them, it might be time to start thinking about using functional globals for them. You might find neatly wiring the wires past each other becomes... fun!

 

- Avoid default if unwired on case structures if you can. I can see an error wire unwired in your event structure, plus one of your clusters in the state machine.

---
CLA
Message 152 of 623
(4,300 Views)

Hi Jeff and thoult.

 

 

Thank you for your feedback! I have a couple of questions to you:

 

"Overall nicely done as a simple state mahine however, with the requirement to respond to user input within 100msec you either need to use a PC Events structure or... use set busy to let the user know the FP is not going to respond while long operations are taking place. Another option is to hide controls that can't do anything yet.  (You have a "Mouse banger" vi there... how would the user know that pounding on those bittons is not going to do anything but queue up events?)"
==> The requirements doesn't specify, that I should disable buttons when not in use. But should I do that anyway??

It also leads me to another question: Will it ever make sence to use two loops to the exam, or should I always try to make it a simple one loop application?

 

 

"Tip strips- well you do have them but, I'd still score that as a miss! Talk to the user... This is your only chance to inform them! (They won't read the instructions)  e.g. "Fan" gives me no new information.  "Observe the status of the Forced Draft Fan" tells me that object is input to me, not something I can click, and what Fan it refers to (I can look up "Forced Air Fan" in the manual)"

==> Point taken.

 

 

"You also missed just a bit on the logging.  Did you really want 100 Start Pre-Purge log entries?"

==> I was in doubt of this one. As I read the requirements they want all those log entries. But maybe that is not the case?

 

 

"Whitespace ahoy! The block diagram has been designed for a 1920x1080 resolution monitor. Just because all that space is available, doesn't mean you should expand your BD to fit it. Greater use of sub VIs might help with this.

Repeated code should go into sub VIs. For instance, you have your event file logging as a sub VI, but you always bundle stuff before passing it to this VI. You could move the Get Date/Time in Seconds into the subVI and just pass in the strings, as a simple change."

==> Yes, that was also one of my main concers. So I should definetly use more subVIs?? You give me one good example, but I have a question for you: In all my different cases, should I really wrap all that code into a subVI - so that when you enter a state, all you see is a subVI?

 

 

"Shift registers and clusters are fine, but when you start using several of them, it might be time to start thinking about using functional globals for them. You might find neatly wiring the wires past each other becomes... fun!"

==> Ahh... I will try that. But when does it become bad practise to use FGVs? I know they more or less expect me to use it for the timer. I mean, normally it is better to use dataflow (i.e. shift registers) than variables...

 

 

"Avoid default if unwired on case structures if you can. I can see an error wire unwired in your event structure, plus one of your clusters in the state machine."

==> Hmm, I used them in the designing phase so that the code could run. Then I forgot to disable them. I will use another method next time. Good catch!

 

 

Again, thanks a lot!!

 

Best Regards

Alex E. Munkhaus
Certified LabVIEW Developer (CLD)
System Engineer
0 Kudos
Message 153 of 623
(4,293 Views)

Will it ever make sence to use two loops to the exam, or should I always try to make it a simple one loop application?

It only makes sense if you're comfortable with it. If you only ever use single loop architectures in your day-to-day work, stick with that.

 


"You also missed just a bit on the logging.  Did you really want 100 Start Pre-Purge log entries?"

==> I was in doubt of this one. As I read the requirements they want all those log entries. But maybe that is not the case?


 

If in doubt, comment your code. "Specification unclear, so I've decided to do this..."

 

 


==> Yes, that was also one of my main concers. So I should definetly use more subVIs?? You give me one good example, but I have a question for you: In all my different cases, should I really wrap all that code into a subVI - so that when you enter a state, all you see is a subVI?


 

Sub VIs serve two purposes in your CLD - for block diagram tidiness and for repeat code. You will definitely lose out if you have repeat code in a VI which could be made into a sub VI. Keeping your block diagram tidy, well that's a question of style. There's nothing wrong with a single sub VI for a state, but it may be unnecessary to go that far.

 

 


"Shift registers and clusters are fine, but when you start using several of them, it might be time to start thinking about using functional globals for them. You might find neatly wiring the wires past each other becomes... fun!"

==> Ahh... I will try that. But when does it become bad practise to use FGVs? I know they more or less expect me to use it for the timer. I mean, normally it is better to use dataflow (i.e. shift registers) than variables...


 

When your wiring starts looking like a plate of spaghetti is probably a good time. Also, if you're using a producer/consumer architecture, as you may need to transfer the data from one loop to another.

 

There are some places where it's not ideal to use FGVs - say you've got a write/read FGV in parallel loops; you can't guarantee which runs first, so you might read this iteration's data or the last iteration's data. I'd switch to a notifier at that point. But for the purposes of the CLD, you'll be fine with your FGVs!

---
CLA
0 Kudos
Message 154 of 623
(4,289 Views)

"You also missed just a bit on the logging.  Did you really want 100 Start Pre-Purge log entries?"

==> I was in doubt of this one. As I read the requirements they want all those log entries. But maybe that is not the case?

 


 

If you find an unclear requirement on the exam (The tests have reportedly been improved) or if you are in any doubt- take a minute to ask the proctor and A BD COMMENT IS REQUIRED! stating your interpretation.  With that comment the reviewers can see that you coded your intended functionality.  Had you added the comment I would have praised the comment and not dinged you on the functionalitySmiley Wink

 

Also, that is a great way to help improvement efforts.  if a high percentage of associate developers find a requirement unclear the developer wrote the req poorly.


"Should be" isn't "Is" -Jay
Message 155 of 623
(4,278 Views)

Hi again Jeff, thoult, and any one else with interest.

 

 

I did yet another sample exam today; The Sprinkler Controller.

Again, I spend too much time - maybe 30 min too much.

 

I tried to implement some of the things you recommended me, and think I got a more clean design, and that I overall would get a better score with this one. What do you think?

 

When I run the VI Analyzer, I get a warning for some of my subVIs:
* Controls Enable and Disable
* File Read CSV
* Zone Setup Array Update
Error:
The controls on this VI's front panel are not arranged in a manner similar to their locations on the connector pane (right).  A VI is more self-documenting when its front panel arrangement matches that of its connector pane.

I understand the error message, but don't agree. Can you tell me how to fix it?

 

 

Framework

I used a Single Loop design again, just as I did with the Boiler (uploaded a couple of days ago) and the first sample exam I made, the ATM (not uploaded). I think it works pretty well, but I'm a little nervous if I should start practicing some multi loop - if the final exam expects me to use multi loop, I don't think I will be able to achieve that within the 4 hours, even though I'm used at programming with multiple loops. Any thoughts?

 

Any feedback is much appreciated.

 

Best Regards

Alex E. Munkhaus
Certified LabVIEW Developer (CLD)
System Engineer
Download All
0 Kudos
Message 156 of 623
(4,263 Views)

"

Note:
The application should be scalable to handle
additional elements of
the
Zone
Setup

array without any modification of the program"

 

Formatting curtosy of cut paste operation

 

.

 

So, how would you fix that miss?  (No coaching from the cheap seats - let him work it out or, work it out and PM it to me until he responds)

 

Better than the first one!  nice comments( though, The FP is for users- comment to developers on the BD) good documentation (10 for 10 ).  Still way too much white space. on your BD but good style otherwise. 


"Should be" isn't "Is" -Jay
0 Kudos
Message 157 of 623
(4,253 Views)

For this exercise, it's okay to use text for your icons.  I'd spend less time on icons and more time on BD cleanup.

 

Also, what I found helpful was designing a template vi that contained all the clusters I needed.  I grouped a lot of my stuff into typdef'd clusters that, since all my subVIs were based on the template, it was simple to keep the controls updated.  In fact, it was beyond simple.  I didn't have to worry about it.  Also, the template allowed me to plop down a subVI on the BD and code inside of it so I didn't have to open up a space in the BD to do my coding just to select some stuff and turn them into subVIs.  If your clustering is good enough, your subVI will always have everything you need to start coding inside of it.  Of course, your clusters shouldn't be a mish-mash of everything you ever used, either.

 

I was much better at style than functionality on my exam, so I'm not even going to coach you on that part.

Bill
CLD
(Mid-Level minion.)
My support system ensures that I don't look totally incompetent.
Proud to say that I've progressed beyond knowing just enough to be dangerous. I now know enough to know that I have no clue about anything at all.
Humble author of the CLAD Nugget.
0 Kudos
Message 158 of 623
(4,246 Views)

Again, thanks for your comments.

 

Jeff:

Hmm, as I see it, my application already handles it.... If you click on the setup button, you can type 1 in the index, and you are able to add one more. The program cycles through that as well.

Hmm...: While typing. Maybe I just realized that I misunderstood that. So, they want to add another Zone, like North-West?? That will require a new item in the drop-down list as well as new Zone Indicators. Is that what they really want??

 

Yeah, I know I use much space. Maybe I will try not to, when I make the last sample exam 🙂 Do you think I will get a hit in the score due to that?

 

 

billko

I like your idea. But isn't it what I have already tried to do in this (Sprinkler) sample exam?

 

 

Best Regards

Alex E. Munkhaus
Certified LabVIEW Developer (CLD)
System Engineer
0 Kudos
Message 159 of 623
(4,241 Views)

@A.E.P wrote:

Again, thanks for your comments.

 

Jeff:

Hmm, as I see it, my application already handles it.... If you click on the setup button, you can type 1 in the index, and you are able to add one more. The program cycles through that as well.

Hmm...: While typing. Maybe I just realized that I misunderstood that. So, they want to add another Zone, like North-West?? That will require a new item in the drop-down list as well as new Zone Indicators. Is that what they really want??

 

Yeah, I know I use much space. Maybe I will try not to, when I make the last sample exam 🙂 Do you think I will get a hit in the score due to that?

 

 

billko

I like your idea. But isn't it what I have already tried to do in this (Sprinkler) sample exam?

 

 


I'm not sure what you mean.  The sprinkler exam that I looked at (the 2013 version) looked like it had tremendous "BD bloat" that, combined with how the wires were routed, suggested to me that there were a lot of ctrl + mouse drag to open new space for coding, then converted to subVIs that took up a lot less space.  I saw one custom control made.  That doesn't sound like a lot of typedef'ing to me.

 

So I'm not sure how you are already doing what I suggested?

Bill
CLD
(Mid-Level minion.)
My support system ensures that I don't look totally incompetent.
Proud to say that I've progressed beyond knowing just enough to be dangerous. I now know enough to know that I have no clue about anything at all.
Humble author of the CLAD Nugget.
0 Kudos
Message 160 of 623
(4,208 Views)