Presentation is loading. Please wait.

Presentation is loading. Please wait.

Five Techniques for Better LabVIEW Code Peter Blume President

Similar presentations

Presentation on theme: "Five Techniques for Better LabVIEW Code Peter Blume President"— Presentation transcript:

1 Five Techniques for Better LabVIEW Code Peter Blume President

2 © 2003 Bloomy Controls Inc. Overview Introduction Five techniques with examples Specifications Data flow State machines Error handling Documentation Conclusion

3 © 2003 Bloomy Controls Inc. 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

4 © 2003 Bloomy Controls Inc. Justifying Bad Habits LabVIEW is a graphical language Computer science fundamentals dont apply Block diagram is self-documenting We dont have time to write good code Intense time pressures LabVIEW is a secondary responsibility Requirements continuously change Equipment availability constraints Im the only developer / end-user Nobody else needs to use or understand my programs

5 © 2003 Bloomy Controls Inc. 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

6 © 2003 Bloomy Controls Inc. Bad Code Example

7 © 2003 Bloomy Controls Inc. Good Code Example

8 © 2003 Bloomy Controls Inc. Lets 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

9 © 2003 Bloomy Controls Inc. 1. Write a Functional Specification Understand the applications 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

10 © 2003 Bloomy Controls Inc. Functional Specification (Continued) Avoid designing the system Dont 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

11 © 2003 Bloomy Controls Inc. Simple Specification Example

12 © 2003 Bloomy Controls Inc. Bad Code Example

13 © 2003 Bloomy Controls Inc. Good Code Example

14 © 2003 Bloomy Controls Inc. 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

15 © 2003 Bloomy Controls Inc. Data Flow Impediments Sequence structures Excessive nesting Local and global variables Coercions Sloppy wiring Excessive bends Overlapping wires with other objects Multidirectional data flow

16 © 2003 Bloomy Controls Inc. Simple Data Flow Example Impeded Unnecessary sequence Coercion Local variables Better data flow

17 © 2003 Bloomy Controls Inc. Bad Code Example

18 © 2003 Bloomy Controls Inc. Bad Code – Zoom In on Wiring

19 © 2003 Bloomy Controls Inc. 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

20 © 2003 Bloomy Controls Inc. Good Code Example

21 © 2003 Bloomy Controls Inc. 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

22 © 2003 Bloomy Controls Inc. Classic State Machine

23 © 2003 Bloomy Controls Inc. 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

24 © 2003 Bloomy Controls Inc. Enumerated State Machine

25 © 2003 Bloomy Controls Inc. Event-Driven State Machine

26 © 2003 Bloomy Controls Inc. 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

27 © 2003 Bloomy Controls Inc. Error Trapping

28 © 2003 Bloomy Controls Inc. Whats Wrong With This Picture?

29 © 2003 Bloomy Controls Inc. Better Error Handling

30 © 2003 Bloomy Controls Inc. 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

31 © 2003 Bloomy Controls Inc. 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

32 © 2003 Bloomy Controls Inc. Documentation Techniques (contd) Diagram Leave the background color white Set all control labels visible Liberally document with free labels Enter descriptions for every subVI

33 © 2003 Bloomy Controls Inc. Bad Code Example

34 © 2003 Bloomy Controls Inc. Good Code Example

35 © 2003 Bloomy Controls Inc. 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

36 © 2003 Bloomy Controls Inc. 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

37 © 2003 Bloomy Controls Inc. 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

38 © 2003 Bloomy Controls Inc. Contact Bloomy Controls Email Write or visit CT, Western MA, Eastern NY: Eastern MA, RI, Northern New England: Greater NYC, NJ: 839 Marshall Phelps Rd.100 Medway Rd., Ste 202 Windsor, CT 06095Milford, MA 01757Mahwah, NJ (860) 298-9925(508) 902-0054(201) 818-0117

Download ppt "Five Techniques for Better LabVIEW Code Peter Blume President"

Similar presentations

Ads by Google