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, A-cyclic and cyclic communication. Cyclic communication is generally what is used to communicate between a controller and 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 environment | The driver will need to be tested thoroughly across a number of devices. Having as many devices available would be helpful | High | |
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 | |
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. | Medium | |
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. | Low | |
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. While not strictly required it would allow for the driver to be able to provide a browsing functionality. | Medium |
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.