p-net Profinet device stack¶
Source repository: https://github.com/rtlabs-com/p-net
Continuous integration: https://github.com/rtlabs-com/p-net/actions
RT-Labs (stack integration, certification services and training): https://rt-labs.com
Profinet device stack implementation. Key features:
Conformance Class A and B
Real Time Class 1
Multiple Ethernet ports
Easy to use
Extensive documentation and instructions on how to get started.
Build and run sample application on Raspberry Pi in 30 minutes.
Written in C.
Linux, RTOS or bare metal.
Sources for supported port layers provided.
The RT-Labs Profinet stack p-net is used for Profinet device implementations. It is easy to use and provides a small footprint. It is especially well suited for embedded systems where resources are limited and efficiency is crucial. The stack is supplied with full sources including porting layers and a sample application.
Also C++ (any version) is supported for application development.
The main requirement on the platform is that it can send and receive raw Ethernet Layer 2 frames.
Multiple Ethernet ports (for Linux only, so far)
Process IO data exchange
Configurable number of modules and sub-modules
Bare-metal or OS
Porting layer provided
Supports I&M0 - I&M4. The I&M data is supported for the device, but not for individual modules.
Limitations or not yet implemented:
This is a device stack, which means that the IO-controller/master/PLC side is not supported.
No media redundancy (No MRP support)
Legacy startup mode is not fully implemented
No support for RT_CLASS_UDP
No support for DHCP
No fast start-up
No MC multicast device-to-device
No support of shared device (connection to multiple controllers)
Supports only full connections, not the limited “DeviceAccess” connection type.
No iPar (parameter server) support
No support for time synchronization
No UDP frames at alarm (just the default alarm mechanism is implemented)
No ProfiDrive or ProfiSafe profiles.
This software is dual-licensed, with GPL version 3 and a commercial license. If you intend to use this stack in a commercial product, you likely need to buy a license. See LICENSE.md for more details.
The platform must be able to send and receive raw Ethernet Layer 2 frames, and the Ethernet driver must be able to handle full size frames. It should also avoid copying data, for performance reasons.
cmake 3.14 or later
gcc 4.6 or later
See the “Real-time properties of Linux” page in the documentation on how to improve Linux timing
Workbench 2020.1 or later
An example of microcontroller we have been using is the Infineon XMC4800, which has an ARM Cortex-M4 running at 144 MHz, with 2 MB Flash and 352 kB RAM. It runs rt-kernel, and we have tested it with 9 Profinet slots each having 8 digital inputs and 8 digital outputs (one bit each). The values are sent and received each millisecond (PLC watchdog setting 3 ms).
See the tutorial in the documentation: https://rt-labs.com/docs/p-net/tutorial.html
Note that you need to include submodules when cloning:
git clone --recurse-submodules https://github.com/rtlabs-com/p-net.git
Some of the platform-dependent parts are located in the OSAL repository and the cmake-tools repository.
Those are downloaded automatically during install.
The p-net stack contains no third party components. Its external dependencies are:
An operating system (if used)
For conformance class B you need an SNMP implementation. On Linux is net-snmp (BSD License) used http://www.net-snmp.org
Tools used for building, testing and documentation (not shipped in the resulting binaries):