• 工业自动化控制通信协议Profinet系列-2、编译p-net在虚拟机树莓派上运行示例


    工业自动化控制通信协议Profinet系列-2、编译p-net在虚拟机树莓派上运行示例

    一、前言

    之前已经对Profinet做了一些基础的了解,接下来进行简单的Profinet组网,并利用开源库p-net的示例程序和plc基于profinet网络进行交互,以此抓包分析整个profinet协议交互过程,便于我们进一步开发基于profinet协议的应用。

    二、树莓派虚拟机编译安装测试

    1、树莓派desktop下载及虚拟机安装

    树莓派desktop:https://www.raspberrypi.com/software/raspberry-pi-desktop/
    下载树莓派:https://downloads.raspberrypi.org/rpd_x86/images/
    文档:https://www.raspberrypi.com/documentation/
    Windows和MacOS的PC机都可以通过虚拟机安装该DeskTop,对于学习树莓派很有帮助,还有一些对应的文档资料。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    之后的设置一下硬件配置进入安装界面选择图形界面安装后步骤基本上就是常规的安装虚拟机的步骤,没有特殊要求则使用默认的选项一路向下即可,这里不再细说,安装成功并安装vm tools后如下:
    在这里插入图片描述

    2、下载编译安装p-net及运行demo程序

    按照教程 的中流程进行下载安装即可,注意使用pi用户去执行即可(注意:安装源也最好先不要换到国内源,我更换之后出了一堆问题,好在是虚拟机可以重装,否则设备板子刷系统还是 挺浪费时间的):

    sudo apt update
    sudo apt install snapd
    sudo snap install cmake --classic
    sudo reboot
    
    cmake --version
    
    sudo apt install git
    mkdir /home/pi/profinet/
    cd /home/pi/profinet/
    git clone --recurse-submodules https://github.com/rtlabs-com/p-net.git
    #可能耗时较长,可以增加一下内存
    cmake -B build -S p-net
    cmake --build build --target install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    运行测试(虚拟机可以直接设置桥接模式,就不需要再单独修改网卡地址了):

    sudo ./pn_dev -v
    
    • 1

    会需要root权限去读取eth0网卡的网络信息:
    在这里插入图片描述

    三、p-net缺陷与接下来的测试

    根据这里的描述:https://zhuanlan.zhihu.com/p/181332329
    Profinet IO设备基本分为三类:Device(从站)、Controller(主站)与Supervisor(监视器),结合p-net的GitHub描述,p-net可以用于实现Device也就是Profinet从站IO设备,主要的动能就是读写IO数据(可以用于开发:远程IO、伺服驱动器、变频器等现场设备)。更详细一些的profinet IO系统的说明可以看这里:https://www.founderchip.com/?id=354
    如下是机翻的,有一些不太理解,但是大致的意思能看明白,缺陷和特征都是比较明显的。

    1、p-net特征

    ● 多个以太网端口配置(目前仅适用于 Linux)
    ● TCP/IP协议支持
    ● LLDP协议支持
    ● SNMP协议支持
    ● RT(实时)支持
    ● 地址解析支持
    ● 参数化支持
    ● 处理IO数据交换支持
    ● 报警处理支持
    ● 可配置的模块和子模块数量
    ● 裸机或操作系统支持
    ● 提供移植层
    ● 支持 I&M0 - I&M4。设备支持 I&M 数据,但单个模块不支持。
    ● 共享设备(支持连接多个控制器)

    2、p-net局限性

    ● 这是一个Device(从站)堆栈,这意味着不支持 IO 控制器/主站/PLC 端。
    ● 无介质冗余(无 MRP 支持)
    ● 传统启动模式未完全实现
    ● 不支持 RT_CLASS_UDP
    ● 不支持 DHCP
    ● 没有快速启动
    ● 无 MC 组播设备到设备
    ● 不支持共享输入
    ● 仅支持完整连接,不支持有限的“DeviceAccess”连接类型。
    ● 不支持 iPar(参数服务器)
    ● 不支持时间同步
    ● 报警时无 UDP 帧(仅实现默认报警机制)
    ● 没有 ProfiDrive 或 ProfiSafe 配置文件。
    PROFINET主从站间使用应用关系(Application Relation,AR)描述它们之间的通信关系(Communication Relation,CR);而CR又可分为3种:记录数据CR、IO数据CR、警报CR;3种CR标识了主站与从站之间的数据传输类型,并分别标识了其传输的以太网通道类型,如下图所示:
    在这里插入图片描述

    3、接下来

    根据上面的进一步了解,我们可以确认利用p-net开源堆栈可以开发的应用只能作为从站开发三类CR数据和控制器进行交互,因此,我们接下来利用codesys软PLC作为主站和该从站交互进一步分析下对应的交互过程,再做进一步的打算。

  • 相关阅读:
    代码随想录刷题Day55 | 392. 判断子序列 | 115. 不同的子序列
    Unity技术手册-脚本初始(上)
    LeetCode 1113.报告的记录
    使用 Spring Data MongoDB 连接到多个数据库
    redis6.0源码分析:字典扩容与渐进式rehash
    Python高级进阶(2)----Python装饰器的艺术
    linux shell数组与字典用法总结
    Apache Airflow (八) :DAG任务依赖设置
    车间静电消除不掉?静电接地桩来帮忙!
    【学习笔记35】JavaScript计算两个指定日期的时间差
  • 原文地址:https://blog.csdn.net/weixin_39510813/article/details/133933676