0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

EtherKit快速上手PROFINET

RT-Thread官方账号 2025-01-03 17:35 次阅读

简介

PROFINET是由PI(PROFIBUS和PROFINET International)组织开发和推广的工业以太网标准,广泛应用于工业自动化领域。

P-Net协议是一个开源的PROFINET实现,专门用于嵌入式设备的实时网络通信。它是一个开源项目(p-net),目标是提供一个轻量级的PROFINET协议栈实现,使得开发者能够在嵌入式平台上快速集成PROFINET功能。

在本示例中将使用P-Net软件包来实现PROFINET主从站通信

前期准备

软件环境:

CODESYS(profinet主站模拟

CODESYS

CODESYS Gateway(网关设备)

CODESYS Control Win SysTray(软PLC设备)

Npcap(该软件是运行CODESYS必须的,需要提前安装好!)

硬件环境:

FSP配置

打开工程配置文件configuration.xml,新增r_gamc Stack:

fe7258c0-c9b5-11ef-9434-92fbcf53809c.png

点击g_ether0 Ethernet,配置中断回调函数为user_ether0_callback:

fe912dfe-c9b5-11ef-9434-92fbcf53809c.pngfe912dfe-c9b5-11ef-9434-92fbcf53809c.png

下面配置phy信息,选择g_ether_phy0,Common配置为User Own Target;修改PHY LSI地址为1(根据原理图查询具体地址);设置phy初始化回调函数为ether_phy_targets_initialize_rtl8211_rgmii();同时设置MDIO为GMAC。

fec6a65a-c9b5-11ef-9434-92fbcf53809c.png

配置g_ether_selector0,选择以太网模式为交换机模式,PHY link设置为默认active-low,PHY接口模式设置为RGMII。

fedbef60-c9b5-11ef-9434-92fbcf53809c.png

网卡引脚参数配置,选择操作模式为RGMII:

fef92e2c-c9b5-11ef-9434-92fbcf53809c.png

ETHER_GMAC配置:

ff151c22-c9b5-11ef-9434-92fbcf53809c.png

RT-Thread Settings 配置

双击打开 RT-Thread Settings,在搜索栏检索p-net软件包并使能,下面是相关用户配置信息说明;

ff29085e-c9b5-11ef-9434-92fbcf53809c.png

Default netif name for p-net:p-net 网卡设备接口名称,默认为 e00 ;

Enable pnet sample board config:p-net app 用户LED及按键配置;

Default root filesystem path for p-net:p-net 文件系统配置,默认使用 ramfs ,默认分配 8K 内存空间;

P-NET sample slave network ip config:p-net 从站设备静态IP配置(请关闭 RT_LWIP_DHCP 功能,使用静态IP)

下面我们还需要配置禁用dhcp功能并使用静态IP,点击组件->使能lwip堆栈,选择禁用DHCP;

ff41c092-c9b5-11ef-9434-92fbcf53809c.png

完成上述配置后,将程序编译下载至开发板。

网络配置

我们使用一根网线连接开发板与PC,同时在PC端配置静态IP:

ff5617ea-c9b5-11ef-9434-92fbcf53809c.png

检查开发板端的 IP 信息,并测试联通性:

ff9039b6-c9b5-11ef-9434-92fbcf53809c.png

软PLC启动

CODESYS简介:CODESYS是德国3S公司开发的PLC软件,集成了PLC逻辑、运动控制、组态显示等功能。CODESYS,全称为“Controller Development System”,是一种基于 IEC 61131-3 标准的工业自动化编程工具。它不仅支持多种编程语言(如梯形图、结构化文本、功能块图等),还提供了丰富的库和功能模块,帮助工程师快速开发和调试 PLC(可编程逻辑控制器)和工业控制系统。CODESYS 的灵活性和强大功能使其成为工业自动化领域广泛使用的开发平台。

CODESYS创建标准工程

请确保已安装CODESYS软件,安装之后下面这三个是我们需要用到的软件:

ffaad01e-c9b5-11ef-9434-92fbcf53809c.png

CODESYS V3.5 SP20 Patch 3:Profinet 主站模拟

CODESYS Gateway V3:网关设备

CODESYS Control Win V3 -x64 SysTray:软PLC设备

首先打开 CODESYS V3.5 SP20 Patch 3,依次选择 -> 新建工程 -> Projects -> Standard project ,配置工程名称及位置后点击确定:

ffc9a8cc-c9b5-11ef-9434-92fbcf53809c.png

弹出下面这个弹窗后保持默认配置(CODESYS Control Win V3 (CODESYS) / x64 (CODESYS))点击确定:

ffe90bfe-c9b5-11ef-9434-92fbcf53809c.png

注意:如果您购买了CODESYS Control RTE SL(http://store.codesys.cn/codesys/store/detail.html?productId=58),可选择设备:CODESYS Control RTE V3 (CODESYS) / x64 (CODESYS),正常评估用途可选择不安装此扩展包,选择 CODESYS Control Win V3 (CODESYS) / x64 (CODESYS) 设备创建即可。

创建成功后就可以看到主界面了:

000734bc-c9b6-11ef-9434-92fbcf53809c.png

Gateway 及 软PLC 启动

依次打开下面两个软件:

CODESYS Gateway V3(右键 Start Gateway)

CODESYS Control Win V3 -x64 SysTray(右键 Start PLC)

001b02d0-c9b6-11ef-9434-92fbcf53809c.png

回到 CODESYS 主站软件,双击 Device(CODESYS Control Win V3 x64) -> 通信设置 -> 扫描网络:

002df656-c9b6-11ef-9434-92fbcf53809c.png

弹出设备用户登录窗口后,配置用户名和密码(用户自定义):

004a1192-c9b6-11ef-9434-92fbcf53809c.png

检查网关设备及软PLC设备是否在线:

00652662-c9b6-11ef-9434-92fbcf53809c.png

profinet GSDML文件添加

GSD(Generic Station Description file):即通用站点描述文件,主要用于PROFIBUS DP(GSD文件)和PROFINET IO(GSDML文件)通信,作为描述文件,是PLC系统中CPU模块和IO模块之间的桥梁,通常包括通道数据、参数数据、诊断数据以及用户自定义数据。

本项目的 GSDML文件位于如下路径:

..\src\ports\rtthread\pn_dev

选择设备存储库安装描述文件,选择上述路径下的 GSDML-V2.4-RT-Labs-P-Net-Sample-App-20220324.xml 文件。

007e7f22-c9b6-11ef-9434-92fbcf53809c.png

安装成功后可以看到 p-net 从站描述文件:

00a237c8-c9b6-11ef-9434-92fbcf53809c.png

设备添加

Ethernet添加:左侧导航栏点击Device并右键添加设备,选择以太网适配器;

00bd47c0-c9b6-11ef-9434-92fbcf53809c.png

图20-13 Ethernet添加

PROFINET IO主站添加:右键左侧导航栏中的Ethernet,选择PN-Controller

00e69daa-c9b6-11ef-9434-92fbcf53809c.png

PROFINET IO从站添加:右键左侧导航栏中的 PN-Controller,选择 P-Net-multiple-module sample app

010b6e96-c9b6-11ef-9434-92fbcf53809c.png

任务响应

Main Tasks 配置:左侧导航栏选择 Application -> 任务配置 -> 双击MainTask(IEC-Tasks),优先级设置为1,类型选择循环,周期选择 4ms;

0124995c-c9b6-11ef-9434-92fbcf53809c.png

Profinet_CommunicationTask 配置:双击 Profinet_CommunicationTask(IEC-Tasks),优先级设置为14,类型选择循环,周期设置为 10ms。

01441674-c9b6-11ef-9434-92fbcf53809c.png

网络配置

Ethernet 配置:双击左侧导航栏中的Ethernet(Ethernet) -> 通用,修改网络接口为连接到开发板的以太网端口

015cf414-c9b6-11ef-9434-92fbcf53809c.png

PN_Controller 配置:双击左侧导航栏 PN_Controller(PN-Controller) -> 通用,并正确修改默认从站IP参数的区间,根据提示修改即可。

P-Net 从站网络配置:双击左侧导航栏 P-Net-multiple-module sample app -> 通用, 修改IP参数为开发板IP

0181e8fa-c9b6-11ef-9434-92fbcf53809c.png01a4fcfa-c9b6-11ef-9434-92fbcf53809c.png

工程编译并启动调试

step1:工程上方导航栏选择 编译-> 生成代码

step2:选择 在线 -> 登录

step3:点击 调试 -> 启动

此时就可以看到 PN 主站已经上线成功

01beddfa-c9b6-11ef-9434-92fbcf53809c.png

profinet 从站应用启动

开发板端上电后,一旦检测到网卡 link up,则会自动启动 PN 从站:

01d3c01c-c9b6-11ef-9434-92fbcf53809c.png01f2e2a8-c9b6-11ef-9434-92fbcf53809c.png

PN协议栈运行demo

这里我们使用 CODESYS软件来测试 PN 的主从站交互。

LED闪烁

回到 CODESYS 软件,左侧导航栏选择 PN_Controller,右键点击扫描设备,单击设备名后点击闪烁LED:

02145b22-c9b6-11ef-9434-92fbcf53809c.png

此时的开发板端(PN从站IO)可以看到日志输出,并伴随板载User LED闪烁:

022c4250-c9b6-11ef-9434-92fbcf53809c.png

从站 I&M(标识和维护) 数据修改

依然是扫描设备界面,我们点击左下角的 I&M,修改信息并写入 I&M:

02466806-c9b6-11ef-9434-92fbcf53809c.png

同时 PNIO 会更新从站配置信息:

026c93a0-c9b6-11ef-9434-92fbcf53809c.png

我们再次点击查看 I&M,即可发现 I&M 修改成功!

PLC编程及PNIO控制

首先我们点击左侧面板的Device->PLC逻辑->Application->PLC_PRG(PRG),使用ST语言编程,编写变量及程序代码

变量定义:这些变量定义了按钮的输入状态(in_pin_button_LED),LED 的输出状态(out_pin_LED)以及控制 LED 是否闪烁的状态变量(flashing)。振荡器状态(oscillator_state)和振荡器周期计数器(oscillator_cycles)用来实现定时闪烁效果。

029714c2-c9b6-11ef-9434-92fbcf53809c.png

程序定义:

首先在每次循环中,oscillator_cycles 增加 1。当计数器超过 200 时,重置计数器并切换 oscillator_state 的状态(TRUE 或 FALSE),实现周期性变化;

如果按钮被按下(in_pin_button_LED 为 TRUE),并且在上一周期按钮状态是 FALSE,则切换 flashing 状态。即每次按钮按下时,切换 LED 是否闪烁的状态。

如果 flashing 为 TRUE,则 LED 会根据振荡器状态 (oscillator_state) 闪烁;如果 flashing 为 FALSE,LED 直接关闭。

在每次循环结束时,将当前按钮的状态保存在 in_pin_button_LED_previous 中,以便在下次判断按钮按下的事件。

02b9ec9a-c9b6-11ef-9434-92fbcf53809c.png

工程中的配置位置如下图所示:

02f51f72-c9b6-11ef-9434-92fbcf53809c.png

接下来我们还需要添加一个内置的IO模块,右键点击P_Net_multi_module_sample_app然后添加一个IO模块(DIO 8xLogicLevel),如下图所示:

031506fc-c9b6-11ef-9434-92fbcf53809c.png

接下来双击DIO_8xLogicLevel节点,选择PNIO Module I/O映射,编辑Input Bit 7和Output Bit 7并绑定PLC变量:

033f1a96-c9b6-11ef-9434-92fbcf53809c.png

接着我们点击上方导航栏的编译->生成代码,然后选择在线->登录,运行查看现象;

03701394-c9b6-11ef-9434-92fbcf53809c.png

接下来回到CODESYS,再次双击Device->PLC逻辑->Application下的PLC_PRG(PRG),此时便可动态观察程序运行状态,例如我们按住etherkit开发板上的KEY0,可以发现in_pin_button_LED及in_pin_button_LED_previous 这两个变量值为FALSE,此时再松开KEY0,可以发现flashing值反转一次。

03a04636-c9b6-11ef-9434-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5086

    文章

    19141

    浏览量

    305972
  • 工业以太网
    +关注

    关注

    10

    文章

    621

    浏览量

    42348
  • Profinet
    +关注

    关注

    6

    文章

    1196

    浏览量

    23455
收藏 人收藏

    评论

    相关推荐

    ModelSim快速上手指南

    ModelSim快速上手指南
    发表于 08-16 17:14

    如何快速上手MSP430

    之前一直用keil,如何快速上手MSP430
    发表于 11-07 20:06

    如何快速上手

    如何快速上手,得分
    发表于 12-14 09:27

    教你如何快速易懂的上手cadence?

    一步步截图说明,做到每步都有说明,有理由,教你如何快速易懂的上手cadence?
    发表于 06-22 06:36

    帮助大家快速上手PCB的设计

    一篇“从入门到上手”的PCB设计教程这是一篇面向神马都不懂的小白玩家的PCB设计教程。希望能帮助大家快速上手PCB的设计。1预备知识1.1 常用工具(1)做图工具:Altium Designer(2
    发表于 11-11 06:34

    如何快速上手学习STM32

    关注「嵌入式大杂烩」,选择「星标公众号」一起进步!来源 | 巧学模电数电单片机单片机用处这么广,尤其是STM32生态这么火!如何快速上手学习呢?你要考虑的是,要用STM32实现什么?为什么...
    发表于 01-24 07:10

    如何快速上手TrueStudio?

    如何快速上手TrueStudio?
    发表于 02-23 07:01

    如何快速上手RK3399?

    如何快速上手RK3399?
    发表于 03-07 06:42

    ModelSim快速上手指南

    ModelSim快速上手指南 快速上手四部曲:建立Project、引進HDL Files、Compile、模擬(Simulate/Loading and Run)
    发表于 05-08 17:29 0次下载

    带IRT网络接口的快速平台-PROFINET

    带IRT网络接口的快速平台-PROFINET
    发表于 04-29 11:56 2次下载
    带IRT网络接口的<b class='flag-5'>快速</b>平台-<b class='flag-5'>PROFINET</b>

    Kingst逻辑分析仪快速上手

    为了能够让各位电子行业的同仁们拿到 Kingst 系列逻辑分析仪后,在几分钟内快速熟 悉上手分析仪,并且高效解决问题,特做此快速上手手册,以 Kingst LA5016 为例进行说明
    发表于 02-23 10:53 3次下载

    快速实现Modbus和Profinet互转的方案

    Modbus转Profinet网关(XD-MDPN100/200)可快速实现Modbus信号至Profinet信号的转换,确保通信稳定安全。Modbus转Profinet网关(XD-M
    的头像 发表于 12-27 09:14 476次阅读
    <b class='flag-5'>快速</b>实现Modbus和<b class='flag-5'>Profinet</b>互转的方案

    Modbus转Profinet不会编程也能用 轻松快上手

    Modbus转Profinet是一种协议转换器,可将Modbus协议转换为Profinet协议,实现设备间的数据交换与通信。即使不会编程的人也可以轻松快速上手使用Modbus转
    的头像 发表于 12-30 16:10 1073次阅读
    Modbus转<b class='flag-5'>Profinet</b>不会编程也能用 轻松快<b class='flag-5'>上手</b>

    Ubuntu系统快速上手

    Ubuntu系统快速上手概述和操作说明
    的头像 发表于 04-12 16:25 561次阅读
    Ubuntu系统<b class='flag-5'>快速</b><b class='flag-5'>上手</b>

    PROFINET转SSI协议模块快速使用说明

    Profinet网关PROFINET转SSI协议 PN4SSI模块快速使用说明
    的头像 发表于 10-17 16:13 336次阅读
    <b class='flag-5'>PROFINET</b>转SSI协议模块<b class='flag-5'>快速</b>使用说明