Learn PLC programming from the software perspective to understand advanced concepts such as OOP and HMI development and design reusable, portable, and robust code Purchase of the print or Kindle book includes a free PDF eBook Key Features Take a deep dive into object-oriented PLC programming to gain hands-on knowledge Explore software engineering concepts such as SDLC, debugging, and SOLID programming Get a thorough grasp on HMI development to build various HMI projects Book Description Object-oriented programming (OOP) is a new feature of PLC programming that has taken the automation world by storm. This book provides you with the necessary skills to succeed in the modern automation programming environment. The book is designed in a way to take you through advanced topics such as OOP design, SOLID programming, the software development lifecycle (SDLC), library design, HMI development, general software engineering practices, and more. To hone your programming skills, each chapter has a simulated real-world project that'll enable you to apply the skills you've learned. In all, this book not only covers complex PLC programming topics, but it also removes the financial barrier that comes with most books as all examples utilize free software. This means that to follow along, you DO NOT need to purchase any PLC hardware or software. By the end of this PLC book, you will have what it takes to create long-lasting codebases for any modern automation project. What you will learn Find out how to write PLC programs using advanced programming techniques Explore OOP concepts for PLC programming Delve into software engineering topics such as libraries and SOLID programming Explore HMIs, HMI controls, HMI layouts, and alarms Create an HMI project and attach it to a PLC in CODESYS Gain hands-on experience by building simulated PLC and HMI projects Who this book is for This book is for automaton programmers with a background in software engineering topics such as object-oriented programming and general software engineering knowledge. Automation engineers, software engineers, electrical engineers, PLC technicians, hobbyists, and upper-level university students with an interest in automation or robotics will also find this book useful and interesting. Anyone with a basic knowledge of PLCs can benefit from reading this book.
Source of description
Description based on print version record.
Contents
Cover
Title Page
Copyright and Credits
Contributors
About the reviewers
Table of Contents
Preface
Part 1 - An Introduction to Advanced PLC Programming
Chapter 1: Software Engineering for PLCs
Technical requirements
Software engineering for PLCs
Understanding the IEC 61131-3 standard
What does the IEC 61131-3 standardize?
Programming a PLC - The five IEC languages
Introducing CODESYS
Testing CODESYS
Creating the program
Summary
Questions
Chapter 2: Advanced Structured Text -Programming a PLC in Easy-to-Read English
Understanding error handling
Variables
The main program
The division by 0 error
Checking for 0 code
TRY-CATCH blocks
FINALLY statements
Identifying and handling errors
Understanding pointers
Representing PLC memory
General syntax for pointers
The ADR operator
Dereferencing pointers
Handling invalid pointers
Understanding references
Declaring a reference variable
Example program
Checking for invalid references
Understanding documentation
Self-documenting code
Code to variables
Code commenting
Understanding state machines
Variables for the state machine
Exploring state machine logic
Further reading
Chapter 3: Debugging - Making Your Code Work
What is debugging?
Types of bugs
Testing versus debugging
Breaking down the debugging process
Understanding debugging tools and techniques
Print debugging
The CODESYS debugger tool
Forcing variables
Troubleshooting - a practical example
Case 4 - a while loop
Chapter 4: Complex Variable Declaration - Using Variables to Their Fullest
Auto declaring variables
Understanding constants.
Investigating arrays
Initialized arrays
Multidimensional arrays
Exploring global variable lists
Creating a GVL
Understanding structs
Declaring a struct
Getting to know enums
Exploring persistent variables
Persistent variable list
Final project - motor control program
Part 2 - Modularity and Objects
Chapter 5: Functions - Making Code Modular and Maintainable
What is modular code?
Why use modular code?
Exploring functions
What goes into a function?
Creating a function
The PLC_PRG file
Examining return types
The RETURN statement
Understanding arguments
Named parameters
Default arguments
Final project - temperature unit converter
Chapter 6: Object-Oriented Programming - Reducing, Reusing, and Recycling Code
What is OOP?
Why use OOP?
The four pillars - A preview
Understanding function blocks
Getting to know objects
Getting to know methods
Adding a method
Getting to know properties
Adding a property
Understanding the purpose of a getter and setter
Getter method
Setter method
Understanding recursion and the THIS keyword
THIS keyword
Recursion in action
Final project - creating a unit converter
Chapter 7: OOP - The Power of Objects
Understanding access specifiers
Calculation program
Exploring the pillars of OOP
Encapsulation versus abstraction
Inheritance
Polymorphism
Inheritance versus composition
When to use composition
Composition in practice
Examining interfaces
Getting to know design patterns
Final project - creating a simulated assembly line
Further reading.
Part 3 - Software Engineering for PLCs
Chapter 8: Libraries - Write Once, Use Anywhere
Investigating libraries
Why do we need libraries?
Libraries versus frameworks
Distribution
Third-party libraries
Installing a library
Guiding principles for library development
Rule 1 - Keep it simple, stupid (KISS)
Rule 2 - Abstraction and encapsulation
Rule 3 - Patterns make for perfection
Rule 4 - Documentation
Building custom libraries
Requirements
Implementation
Final project - part computation library
Chapter 9: The SDLC - Navigating the SDLC to Create Great Code
Understanding the SDLC
Why care about the SDLC?
How is the SDLC implemented?
Investigating the general steps of the SDLC
Requirements/planning
Design
Build
Test
Deployment
Maintenance
Final project - creating a simple library
Gathering requirements for the library
Designing the library
Building the library
Testing the library
Deploying the library
Maintaining the library
Chapter 10: Advanced Coding - Using SOLID to Make Solid Code
Introducing SOLID programming
Benefits of SOLID programming
The governing principles of SOLID programming
The single-responsibility principle
The open-closed principle
The Liskov substitution principle
The interface segregation principle
The Dependency inversion principle
Final project - a painting machine
Part 4 - HMIs and Alarms
Chapter 11: HMIs - UIs for PLCs
Understanding HMIs
Why create and use an HMI?
How are HMIs created?.
Programming languages to develop HMIs
What should an HMI do?
HMIs versus SCADA
How the SDLC applies to HMIs
Exploring wireframing
Final project - creating an HMI
Chapter 12: Industrial Controls - User Inputs and Outputs
Exploring common HMI controls
Flip switches
Push switches
Buttons
LEDs
Potentiometers
Sliders
Spinners
Measurement controls
Histogram
Text field
Control properties
Final project - creating a simple HMI
Requirements for the HMI
Design of the HMI
Building the HMI
Chapter 13: Layouts - Making HMIs User-Friendly
The importance of colors
Backgrounds
Red, yellow, and green
Control colors
Labeling colors
Understanding grouping/position
Best practices for blinking
Blinking a component
Animation
Organizing the screen into multiple layouts
Creating visualizations screens
Changing the default screen
Navigating between screens
Final project - creating a user-friendly HMI
Chapter 14: Alarms - Avoiding Catastrophic Issues with Alarms
What are alarms?
When should you use an alarm?
What should an alarm say?
Alarm configuration - I, Warning, and Error setup
Alarm groups
Alarm HMI components
Setting up an alarm banner
Setting up an alarm table
PLC alarm logic
Alarm acknowledgment
Final project - motor alarm system
Design/implementation of the HMI
Part 5 - Final Project and Thoughts
Chapter 15: Putting It All Together - The Final Project
Project overview
Getting the requirements
HMI design.
HMI implementation
LED variables
Acknowledgment variable
Spinner variables/setup
Gauge variable/setup
Alarm table variables/configuration
PLC code design
Implementing the PLC code
PLC_PRG file
Alarms function block
Door function block
Oven function block
Testing the application
Testing the door lock
Testing the gauge
Chapter 16: Distributed Control Systems, PLCs, and Networking
What are computer networks?
Network topology
Common IT protocols
TCP/IP
UDP
PLC/automation device communication
Modbus
Profibus
Profinet
EtherCAT
DeviceNet
Protocol conversion
Other communication topics to explore
Understanding distributed control systems
The differences between DCSs and PLCs
Index
Other Books You May Enjoy.
ISBN
9781804619124
1804619124
OCLC
1372321966
Statement on responsible collection description
Princeton University Library aims to describe library materials in a manner that is respectful to the individuals and communities who create, use, and are represented in the collections we manage. Read more...