Goals
- Implement a PROFINET IO driver for the PLC4X Java implementation.
- Thoroughly test the driver on a variety of devices.
- Confirm the Nifi Integration works with the new driver.
Background and strategic fit
There is a requirement to implement a PROFINET driver written in Java for the PLC4X project. This will enable direct communication with field devices. There will be a focus on Industry 4.0 use cases, and more concretely, monitoring field devices, to build a real-time time-series processing system. An integration with the existing Nifi adaptor will be a focus for the user.
There are two forms of data transfer within PROFINET IO, Acyclic and cyclic communication. Cyclic communication is generally what is used to communicate between a controller and a device for IO data, this is given priority on the network over acyclic communication. Acyclic communication is generally used for low priority ad-hoc requests from a supervisor node.
Requirements
# | Title | User Story | Importance | Notes |
---|---|---|---|---|
1 | Investigate if PROFINET standards are available | To streamline the development and reduce the amount reverse engineering that needs to be done, we should investigate if the PROFINET standards are available at a reasonable price. | Medium | |
2 | Setup a test development environment | The driver will need to be tested thoroughly across a number of devices. Having as many devices available would be helpful | High | Codesys Runtimes are being used as the controller and device. Captures of the discovery process, connection setup and IO transfer have been captured. |
3 | Implement a Proof of Concept | To confirm that there are no underlying issues that would stall the project, a proof of concept should be put together to confirm the performance is acceptable | High | During the discovery process each device identifies itself, this information is used to lookup a GSD file, this information is then used to create a connection. Once the connection is established then the IO transfer begins, and the GSD file once again is used to decode the IO data field. |
4 | Implement Read Functionality | To be able to obtain data from the field device reading functionality should be implemented. This would match with acyclic communication. | Low | As acyclic communication is predominetly used by a supervisor node and we are looking at implementing a controller node, acyclic communication isn't required. |
5 | Implement Write Functionality | To be able to update data with the device write functionality should be implemented | Medium | |
6 | Implement Subscription Functionality | The PLC4X API includes both read and subscription functions. The read function requires that the user sends each request, whereas the subscription functionality requires the user to setup a continuous monitoring list where callbacks are used to notify the user of any tag updates that arrive. This matches with cyclic communication | High | |
7 | Continue work on the Discovery Functionality | To be able to detect any devices on the network a discovery function has been created, work should continue on this. This will more than likely just be testing this function with other devices. | High | As the connection process uses a lot of the information found during the discovery phase, this should be completed. |
8 | Test the Driver | To confirm the driver is compatible with other devices, testing should be completed with as many devices | High | |
9 | Investigate the use of GSD files in configuring the connection. Implement a parser to allow the user to pass GSD files as part of the connection setup. | GSD files are used by device manufacturers to help with configuring connections. They outline what data and properties are available and how a connection should be made. | High | This file contains all the information to configure a connection and decode the data fields. Extracting this information will be required to configure a connection correctly. |
Questions
Below is a list of questions to be addressed as a result of this requirements document:
Question | Outcome |
---|---|
Is the primary goal of this driver to implement the out of band communication (Acyclic) for a supervisor node or implement cyclic communication with the driver acting as a controller node? |
References
- https://www.rtautomation.com/technologies/profinet-io/
- https://us.profinet.com/profinet-explained/#:~:text=PROFINET%20is%20an%20open%20Industrial,well%2Dadopted%20Industrial%20Ethernet%20solution.