Target release0.11
Document status
DRAFT
Document owner

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

#TitleUser StoryImportanceNotes
1Investigate 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


2Setup a test development environmentThe driver will need to be tested thoroughly across a number of devices. Having as many devices available would be helpfulHighCodesys Runtimes are being used as the controller and device. Captures of the discovery process, connection setup and IO transfer have been captured.
3Implement a Proof of ConceptTo 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 acceptableHighDuring 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.
4Implement Read FunctionalityTo be able to obtain data from the field device reading functionality should be implemented. This would match with acyclic communication.LowAs acyclic communication is predominetly used by a supervisor node and we are looking at implementing a controller node, acyclic communication isn't required.
5Implement Write FunctionalityTo be able to update data with the device write functionality should be implementedMedium
6Implement Subscription FunctionalityThe 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 communicationHigh
7Continue work on the Discovery FunctionalityTo 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.HighAs the connection process uses a lot of the information found during the discovery phase, this should be completed.
8Test the DriverTo confirm the driver is compatible with other devices, testing should be completed with as many devicesHigh
9Investigate 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.HighThis 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:

QuestionOutcome
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

Out of Scope