430 likes | 1.58k Views
Five Techniques for Better LabVIEW Code. Peter Blume President peter.blume@bloomy.com. Overview. Introduction Five techniques with examples Specifications Data flow State machines Error handling Documentation Conclusion. Introduction.
E N D
Five Techniques for Better LabVIEW Code Peter Blume President peter.blume@bloomy.com
Overview • Introduction • Five techniques with examples • Specifications • Data flow • State machines • Error handling • Documentation • Conclusion
Introduction • Most LabVIEW applications begin with an industrial measurement and/or control challenge • LabVIEW facilitates fast development cycles • Easy to connect and control instrumentation • Fast solutions to industrial challenges • Instant gratification for developers • LabVIEW developers adopt fast habits • Sloppy wiring • No documentation • Computer science fundamentals are ignored • Fast habits = bad habits
Justifying Bad Habits • LabVIEW is a graphical language • Computer science fundamentals don’t apply • Block diagram is self-documenting • We don’t have time to write good code • Intense time pressures • LabVIEW is a secondary responsibility • Requirements continuously change • Equipment availability constraints • I’m the only developer / end-user • Nobody else needs to use or understand my programs
Issues Resulting from Bad Habits • Application requirements expand • LabVIEW code becomes messy • Inefficient • Buggy • Difficult to troubleshoot, expand, and maintain • Not reusable • Overall development time is increased
Let’s Write Better LabVIEW Code! • Follow these five techniques • More up-front time and effort • Attention to detail • Discipline • Dramatically save time in the long run
1. Write a Functional Specification • Understand the application’s requirements • Interview operators, developers, engineers, managers, bean counters • Document the requirements • Statement of high-level objectives • Specific requirements for I/O, analysis, GUI • Timetable and budget • Design prototype screen shot • Assign priorities to each requirement • Test methodology
Functional Specification (Continued) • Avoid designing the system • Don’t prolong specification phase by including too much detail such as how to implement the system • Make the specification readily accessible • Have all contributors review and approve • Revise when requirements change • Keep it somewhere that you and others can quickly reference it
2. Use Proper Data Flow • Data flow definition: “A block diagram node executes when all its inputs are available. When a node completes execution, it supplies data to its output terminals and passes the data to the next node in the dataflow path.” • Parallel paths are permitted and desirable • Efficiency is optimized when LabVIEW determines the execution order • Readability is optimized when source terminals, wires, and destination terminals are visible
Data Flow Impediments • Sequence structures • Excessive nesting • Local and global variables • Coercions • Sloppy wiring • Excessive bends • Overlapping wires with other objects • Multidirectional data flow
Impeded Unnecessary sequence Coercion Local variables Simple Data Flow Example Better data flow
Data Flow Enhancements • Artificial data dependency • Use error cluster and/or task ID • Shift registers • Reduce local and global variables • Clusters • Reduce the overall number of wires • Neat wiring • Left-to-right data flow • Straight wires • Consistent data types • Comments with “>” indicating data flow direction
3. Use a State Machine Top-Level Architecture • Define application as a series of states • Go to any state from any other state • Easy to modify, maintain, and debug • Self-documenting • Scalable
State Machine Enhancements • Use enumerated or string for case selector • Poll user interface events in “No Event, Default” frame or in separate event structure in parallel loop • Use intuitive state names • Include “Initialize” and “Shutdown” states
4. Incorporate Proper Error Handling • Trap and report any I/O related errors in all VIs • I/O functions include DAQ, file I/O, instrument I/O, communication • Trapping is facilitated by propagation of error cluster • Reporting methods include dialog prompt or log to file
5. Document Your Source Code • Assume every VI will be used and maintained by other developers • Best time to document your source code is while you develop it
LabVIEW Documentation Techniques • Control labels • Use succinct, intuitive labels • Indicate units in parentheses or use free labels • Enter descriptions or online help where further text is needed • Icons • Intuitive text or graphic • 10-point small fonts • Color-coding for icons of related subVIs
Documentation Techniques (cont’d) • Diagram • Leave the background color white • Set all control labels visible • Liberally document with free labels • Enter descriptions for every subVI
Summary • Write a specification for all projects before you begin coding • Use proper data flow • Use a state machine top-level architecture • Incorporate proper error handling • Document your source code while you code
Conclusion • Techniques improve: • Readability • Robustness • Efficiency • Maintainability • Reusability • Techniques can be implemented quickly if you make them habits • Apply to every project, starting now • Apply consistently throughout each project • Dramatic reduction in overall time and effort
About Bloomy Controls • Test, measurement, automation, and control specialists since 1991 • Systems integration, software development, and training provider • NI Select Integrator and Certified Training Center • 3 Certified LabVIEW Architects • 8 Certified LabVIEW Developers • 1 Certified TestStand Architect • 2 Certified TestStand Developers • 8 Certified Professional Instructors • Offices in Windsor, CT; Milford, MA; and Mahwah, NJ
Contact Bloomy Controls • Email info@bloomy.com • Write or visit