PLC Testing
And why should we test?
And why should we test?
Testing of PLC program is one of the important steps in PLC programming. For a PLC tester it is required to try all possible scenarios to understand how program will behave in specific conditions.
Professionally speaking, development of new PLC logic and changes to an existing logic must be tested to validate that a new implementation complies with equipment's required functionality. More importantly, changes to existing PLC logic must not inadvertently affect existing functionality.
To test the PLC, a PLC programmer currently adds custom simulation code to emulate the behaviour of inputs due to the process driving them. PLC logic is required to be added to apply default setpoints or equipment statuses.
Traditional approach has a few problems:
We have developed a software to perform specification-based testing of PLC logic. Specification-based (or black-box) testing is a method of software testing that examines the functionality of an application without peering into its internal structures or workings. This method of test can be applied virtually to every level of software testing: unit, integration, system and acceptance.
The app creates a stand alone testing environment, runs it on a computer and communicates to a PLC (or the emulator) via Ethernet. There is no need to add additional logic to the production PLC program. For testing PLC logic the software needs to be set as per the client's specification (also known as a functional description). The test runs completely automatically and can be used for the following test cases:
Our approach eliminates the problems with the traditional PLC testing approach but also adds benefits:
As an example of a subsystem tests, PLC's inputs and outputs can be used. PLCs typically have field device inputs and outputs that will not exist in a testing environment. Via Ethernet protocol the app writes values to input memory registers and reads output registers to confirm expected behaviour.
Have a question? Post it in Github Issues or send it to alex@controlx.io