TestStand CTD Prep

I'm sitting the CTD exam online at the end of this week. I didn't want to inadvertently give away any info about the exam, so I thought I'd do my post about it now. 

Of course, this means that if I fail, I cannot claim that I never sat the exam. Shh. 

My Prep

I was very aware that there's only 1 past paper, so I would have to use it wisely. 

After reading the exam guidance on the topics, I spent a bit of time flicking back through my retro Developing Test Programs Using TestStand manual, then flicking through the TestStand help files that one can access during the exam. I also opened up some of the TestStand examples to remind me on how NI tends to write their sequences. 

I finally bit the bullet and did the practice paper under timed conditions. It took me ages to work out what I was supposed to do and what all of those DC DMM lines were for, so after 4h my sequence did not all pass and I had to take another half hour fixing it. Oops. That knocked my confidence quite a lot.

When I saw the example solution I laughed my head off. The answers given were really simple, a bit too simple for my liking actually as a lot of data was duplicated and they'd wiggled out of actually having to properly convert enums to binary arrays. So after that I tried the paper again (for practice in speed) and did a better answer in under 2 hours. 

My gameplan for the exam is: 
  1. Read paper, highlight (in Adobe Acrobat) the things that should be parameters, and any info that needs manually entering e.g. COM ports 
  2. Set up report and environment (configure paths with seach subdirectories, execution speed, prompt for file etc.)
    1. Configure > Station Options> Execution
    2. Configure > Station Options > File
    3. Configure > Search Directories
  3. Make and save the .seq file! Look for exam folder 
  4. Store refs for all instruments as fileGlobals. Note that the LabVIEW_IO Visa type thing is at the bottom of the scrolly menu. 
  5. Do init/cleanup steps for UUT in MainSequence. Don't forget that cleanup! 
  6. Do init for non-UUT in ProcessSetup callback. That one is normally empty and runs once per test. 
  7. Do cleanup for non-UUT in ProcessCleanup callback. That one is normally empty and runs once per test. 
  8. Make any custom data types 
  9. Write test 1, run it and check it passes. Speed up execution speed if necessary. Save! 
  10. Write other tests, check again. Save! 
  11. Re-read paper and check I didn't miss anything e.g. error handling requirements.
  12. Make sure 2 test step types, 3 different non-code module step types, a custom data type and a flow step was used.
  13. Make sure I used units in limits.
  14. Make sure execution speed is set to slow.
  15. Check sequence analyzer, see if I need #NoValidation
  16. Disable any failing steps, check report looks nice, save file, zip the file, make sure it is in the Exam folder 

Exam logistics

Make sure you can show the back of your laptop/keyboard for the check by the proctor. This is sent as a requirement when you book the exam. With an inbuilt webcam it is surprisingly hard - I need 2 mirrors!

Technical/timesaving tips

  • %PUBLIC% should take you to C:\Users\Public in Windows Explorer, which might be helpful when you are looking for the instrument drivers.
  • F2 for rename seems safe in my browser. In new TestStand you don't always see the blinky cursor where you are able to rename things.
  • Fullscreen the window so you have more screen real-estate. Edit: this wasn't allowed in my exam
  • ThisContext.SequenceFailed may be useful for error handling.
  • The Enum tips at the bottom of this page are useful.
  • I never really understood how all the different ways you can use a multi-numeric limit test, they are very versatile.
  • If you want to turn an enum value into a number, do Float64(Locals.MyEnum), assuming enum is Float 64. Might be UInt64, Int64 depending on how enum was set up. Float Enums are quite weird when you think about it...
  • There are strict and non-strict enums? Mind blown. And those attributes ones are awesome. Read the enums example in the TestStand examples folder for more info.
  • If you want to turn a number (e.g. 5) into an enum, do Enum("MyEnumTypeName",5)
  • In the practice exam, if you write your answer in too many steps (e.g. iterating through LED array with for loop), the UUT might time out and turn off, so you might find you need to go with answers that take fewer steps.
  • You can copy/paste adapter steps and edit the VI called/step type to potentially save some time on feeding in/out references.

Useful resources

Things I am not sure of:

  • Should I log values set during tests to the report? I do this in real life, with the log checkbox. Makes debugging nicer. 
  • Should I avoid pass/fail steps during non-UUT setup?
  • How fussy are they about comments/lack of? E.g. should each sequence have a description?
  • Which Sequence Analyzer tests do they run?
  • Do I need to understand property loader?
Right, so at this point I have no idea whether my prep is sufficient or at all helpful, but I am putting it out there anyway. Wish me luck!

Comments

  1. Good luck on the TestStand CTD Exam!!!
    And thanks for writing this blog. Even if I'm not going to take the exam it summarizes a lot of useful information.

    ReplyDelete

Post a Comment