ProfinetConnector/profinet_stack/p-net
svad05 c9fe825657 dev(UML-981): Автоматизация сборки
1. Добавил скрипт build.sh - собирает библиотеку pnet и группирует
получившиеся файлы в папку install, туда же помещает библиотеку osal.
Теперь все библиотеки и их заголовки в одном месте, а не распизаны по
папкам в папке build.
2. Добавил проект sample_app в папку profinet_test. Он отвязан от
процесса сборки pnet и использует уже собранную библиотеку из папки
install.
2022-07-12 15:59:03 +02:00
..
.github/workflows dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
cmake dev(none):Теперь собирается 2022-07-08 15:56:57 +02:00
doc dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
include dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
samples dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
src dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
test dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
.clang-format dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
.git-blame-ignore-revs dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
.gitattributes dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
.gitignore dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
.gitmodules dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
build.sh dev(UML-981): Автоматизация сборки 2022-07-12 15:59:03 +02:00
CHANGELOG.md dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
CMakeLists.txt dev(none):Теперь собирается 2022-07-08 15:56:57 +02:00
LICENSE.md dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
options.h.in dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
pnet_options.h.in dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
pnet_version.h.in dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00
README.md dev(none): Снимок библиотеки p-net 2022-07-08 16:04:01 +03:00

p-net Profinet device stack

Web resources

Build Status CodeQL

p-net

Profinet device stack implementation. Key features:

  • Profinet v2.4
    • 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.
  • Portable
    • 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.

Features:

  • Multiple Ethernet ports (for Linux only, so far)
  • TCP/IP
  • LLDP
  • SNMP
  • RT (real-time)
  • Address resolution
  • Parameterization
  • Process IO data exchange
  • Alarm handling
  • 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.

Requirements

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

For Linux:

  • gcc 4.6 or later
  • See the "Real-time properties of Linux" page in the documentation on how to improve Linux timing

For rt-kernel:

  • 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).

Getting started

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

Dependencies

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:

  • C-library
  • 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):

Contributions

Contributions are welcome. If you want to contribute you will need to sign a Contributor License Agreement and send it to us either by e-mail or by physical mail. More information is available on https://rt-labs.com/contribution.