0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

EtherKit快速上手PROFINET

RT-Thread官方賬號(hào) ? 2025-01-03 17:35 ? 次閱讀

簡(jiǎn)介

PROFINET是由PI(PROFIBUS和PROFINET International)組織開(kāi)發(fā)和推廣的工業(yè)以太網(wǎng)標(biāo)準(zhǔn),廣泛應(yīng)用于工業(yè)自動(dòng)化領(lǐng)域。

P-Net協(xié)議是一個(gè)開(kāi)源的PROFINET實(shí)現(xiàn),專門(mén)用于嵌入式設(shè)備的實(shí)時(shí)網(wǎng)絡(luò)通信。它是一個(gè)開(kāi)源項(xiàng)目(p-net),目標(biāo)是提供一個(gè)輕量級(jí)的PROFINET協(xié)議棧實(shí)現(xiàn),使得開(kāi)發(fā)者能夠在嵌入式平臺(tái)上快速集成PROFINET功能。

在本示例中將使用P-Net軟件包來(lái)實(shí)現(xiàn)PROFINET主從站通信

前期準(zhǔn)備

軟件環(huán)境:

CODESYS(profinet主站模擬

CODESYS

CODESYS Gateway(網(wǎng)關(guān)設(shè)備)

CODESYS Control Win SysTray(軟PLC設(shè)備)

Npcap(該軟件是運(yùn)行CODESYS必須的,需要提前安裝好!)

硬件環(huán)境:

FSP配置

打開(kāi)工程配置文件configuration.xml,新增r_gamc Stack:

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

點(diǎn)擊g_ether0 Ethernet,配置中斷回調(diào)函數(shù)為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(根據(jù)原理圖查詢具體地址);設(shè)置phy初始化回調(diào)函數(shù)為ether_phy_targets_initialize_rtl8211_rgmii();同時(shí)設(shè)置MDIO為GMAC。

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

配置g_ether_selector0,選擇以太網(wǎng)模式為交換機(jī)模式,PHY link設(shè)置為默認(rèn)active-low,PHY接口模式設(shè)置為RGMII。

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

網(wǎng)卡引腳參數(shù)配置,選擇操作模式為RGMII:

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

ETHER_GMAC配置:

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

RT-Thread Settings 配置

雙擊打開(kāi) RT-Thread Settings,在搜索欄檢索p-net軟件包并使能,下面是相關(guān)用戶配置信息說(shuō)明;

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

Default netif name for p-net:p-net 網(wǎng)卡設(shè)備接口名稱,默認(rèn)為 e00 ;

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

Default root filesystem path for p-net:p-net 文件系統(tǒng)配置,默認(rèn)使用 ramfs ,默認(rèn)分配 8K 內(nèi)存空間;

P-NET sample slave network ip config:p-net 從站設(shè)備靜態(tài)IP配置(請(qǐng)關(guān)閉 RT_LWIP_DHCP 功能,使用靜態(tài)IP)

下面我們還需要配置禁用dhcp功能并使用靜態(tài)IP,點(diǎn)擊組件->使能lwip堆棧,選擇禁用DHCP;

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

完成上述配置后,將程序編譯下載至開(kāi)發(fā)板。

網(wǎng)絡(luò)配置

我們使用一根網(wǎng)線連接開(kāi)發(fā)板與PC,同時(shí)在PC端配置靜態(tài)IP:

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

檢查開(kāi)發(fā)板端的 IP 信息,并測(cè)試聯(lián)通性:

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

軟PLC啟動(dòng)

CODESYS簡(jiǎn)介:CODESYS是德國(guó)3S公司開(kāi)發(fā)的PLC軟件,集成了PLC邏輯、運(yùn)動(dòng)控制、組態(tài)顯示等功能。CODESYS,全稱為“Controller Development System”,是一種基于 IEC 61131-3 標(biāo)準(zhǔn)的工業(yè)自動(dòng)化編程工具。它不僅支持多種編程語(yǔ)言(如梯形圖、結(jié)構(gòu)化文本、功能塊圖等),還提供了豐富的庫(kù)和功能模塊,幫助工程師快速開(kāi)發(fā)和調(diào)試 PLC(可編程邏輯控制器)和工業(yè)控制系統(tǒng)。CODESYS 的靈活性和強(qiáng)大功能使其成為工業(yè)自動(dòng)化領(lǐng)域廣泛使用的開(kāi)發(fā)平臺(tái)。

CODESYS創(chuàng)建標(biāo)準(zhǔn)工程

請(qǐng)確保已安裝CODESYS軟件,安裝之后下面這三個(gè)是我們需要用到的軟件:

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

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

CODESYS Gateway V3:網(wǎng)關(guān)設(shè)備

CODESYS Control Win V3 -x64 SysTray:軟PLC設(shè)備

首先打開(kāi) CODESYS V3.5 SP20 Patch 3,依次選擇 -> 新建工程 -> Projects -> Standard project ,配置工程名稱及位置后點(diǎn)擊確定:

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

彈出下面這個(gè)彈窗后保持默認(rèn)配置(CODESYS Control Win V3 (CODESYS) / x64 (CODESYS))點(diǎn)擊確定:

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

注意:如果您購(gòu)買(mǎi)了CODESYS Control RTE SL(http://store.codesys.cn/codesys/store/detail.html?productId=58),可選擇設(shè)備:CODESYS Control RTE V3 (CODESYS) / x64 (CODESYS),正常評(píng)估用途可選擇不安裝此擴(kuò)展包,選擇 CODESYS Control Win V3 (CODESYS) / x64 (CODESYS) 設(shè)備創(chuàng)建即可。

創(chuàng)建成功后就可以看到主界面了:

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

Gateway 及 軟PLC 啟動(dòng)

依次打開(kāi)下面兩個(gè)軟件:

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) -> 通信設(shè)置 -> 掃描網(wǎng)絡(luò):

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

彈出設(shè)備用戶登錄窗口后,配置用戶名和密碼(用戶自定義):

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

檢查網(wǎng)關(guān)設(shè)備及軟PLC設(shè)備是否在線:

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

profinet GSDML文件添加

GSD(Generic Station Description file):即通用站點(diǎn)描述文件,主要用于PROFIBUS DP(GSD文件)和PROFINET IO(GSDML文件)通信,作為描述文件,是PLC系統(tǒng)中CPU模塊和IO模塊之間的橋梁,通常包括通道數(shù)據(jù)、參數(shù)數(shù)據(jù)、診斷數(shù)據(jù)以及用戶自定義數(shù)據(jù)。

本項(xiàng)目的 GSDML文件位于如下路徑:

..\src\ports\rtthread\pn_dev

選擇設(shè)備存儲(chǔ)庫(kù)安裝描述文件,選擇上述路徑下的 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

設(shè)備添加

Ethernet添加:左側(cè)導(dǎo)航欄點(diǎn)擊Device并右鍵添加設(shè)備,選擇以太網(wǎng)適配器;

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

圖20-13 Ethernet添加

PROFINET IO主站添加:右鍵左側(cè)導(dǎo)航欄中的Ethernet,選擇PN-Controller

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

PROFINET IO從站添加:右鍵左側(cè)導(dǎo)航欄中的 PN-Controller,選擇 P-Net-multiple-module sample app

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

任務(wù)響應(yīng)

Main Tasks 配置:左側(cè)導(dǎo)航欄選擇 Application -> 任務(wù)配置 -> 雙擊MainTask(IEC-Tasks),優(yōu)先級(jí)設(shè)置為1,類型選擇循環(huán),周期選擇 4ms;

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

Profinet_CommunicationTask 配置:雙擊 Profinet_CommunicationTask(IEC-Tasks),優(yōu)先級(jí)設(shè)置為14,類型選擇循環(huán),周期設(shè)置為 10ms。

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

網(wǎng)絡(luò)配置

Ethernet 配置:雙擊左側(cè)導(dǎo)航欄中的Ethernet(Ethernet) -> 通用,修改網(wǎng)絡(luò)接口為連接到開(kāi)發(fā)板的以太網(wǎng)端口

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

PN_Controller 配置:雙擊左側(cè)導(dǎo)航欄 PN_Controller(PN-Controller) -> 通用,并正確修改默認(rèn)從站IP參數(shù)的區(qū)間,根據(jù)提示修改即可。

P-Net 從站網(wǎng)絡(luò)配置:雙擊左側(cè)導(dǎo)航欄 P-Net-multiple-module sample app -> 通用, 修改IP參數(shù)為開(kāi)發(fā)板IP

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

工程編譯并啟動(dòng)調(diào)試

step1:工程上方導(dǎo)航欄選擇 編譯-> 生成代碼

step2:選擇 在線 -> 登錄

step3:點(diǎn)擊 調(diào)試 -> 啟動(dòng)

此時(shí)就可以看到 PN 主站已經(jīng)上線成功

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

profinet 從站應(yīng)用啟動(dòng)

開(kāi)發(fā)板端上電后,一旦檢測(cè)到網(wǎng)卡 link up,則會(huì)自動(dòng)啟動(dòng) PN 從站:

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

PN協(xié)議棧運(yùn)行demo

這里我們使用 CODESYS軟件來(lái)測(cè)試 PN 的主從站交互。

LED閃爍

回到 CODESYS 軟件,左側(cè)導(dǎo)航欄選擇 PN_Controller,右鍵點(diǎn)擊掃描設(shè)備,單擊設(shè)備名后點(diǎn)擊閃爍LED:

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

此時(shí)的開(kāi)發(fā)板端(PN從站IO)可以看到日志輸出,并伴隨板載User LED閃爍:

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

從站 I&M(標(biāo)識(shí)和維護(hù)) 數(shù)據(jù)修改

依然是掃描設(shè)備界面,我們點(diǎn)擊左下角的 I&M,修改信息并寫(xiě)入 I&M:

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

同時(shí) PNIO 會(huì)更新從站配置信息:

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

我們?cè)俅吸c(diǎn)擊查看 I&M,即可發(fā)現(xiàn) I&M 修改成功!

PLC編程及PNIO控制

首先我們點(diǎn)擊左側(cè)面板的Device->PLC邏輯->Application->PLC_PRG(PRG),使用ST語(yǔ)言編程,編寫(xiě)變量及程序代碼

變量定義:這些變量定義了按鈕的輸入狀態(tài)(in_pin_button_LED),LED 的輸出狀態(tài)(out_pin_LED)以及控制 LED 是否閃爍的狀態(tài)變量(flashing)。振蕩器狀態(tài)(oscillator_state)和振蕩器周期計(jì)數(shù)器(oscillator_cycles)用來(lái)實(shí)現(xiàn)定時(shí)閃爍效果。

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

程序定義:

首先在每次循環(huán)中,oscillator_cycles 增加 1。當(dāng)計(jì)數(shù)器超過(guò) 200 時(shí),重置計(jì)數(shù)器并切換 oscillator_state 的狀態(tài)(TRUE 或 FALSE),實(shí)現(xiàn)周期性變化;

如果按鈕被按下(in_pin_button_LED 為 TRUE),并且在上一周期按鈕狀態(tài)是 FALSE,則切換 flashing 狀態(tài)。即每次按鈕按下時(shí),切換 LED 是否閃爍的狀態(tài)。

如果 flashing 為 TRUE,則 LED 會(huì)根據(jù)振蕩器狀態(tài) (oscillator_state) 閃爍;如果 flashing 為 FALSE,LED 直接關(guān)閉。

在每次循環(huán)結(jié)束時(shí),將當(dāng)前按鈕的狀態(tài)保存在 in_pin_button_LED_previous 中,以便在下次判斷按鈕按下的事件。

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

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

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

接下來(lái)我們還需要添加一個(gè)內(nèi)置的IO模塊,右鍵點(diǎn)擊P_Net_multi_module_sample_app然后添加一個(gè)IO模塊(DIO 8xLogicLevel),如下圖所示:

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

接下來(lái)雙擊DIO_8xLogicLevel節(jié)點(diǎn),選擇PNIO Module I/O映射,編輯Input Bit 7和Output Bit 7并綁定PLC變量:

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

接著我們點(diǎn)擊上方導(dǎo)航欄的編譯->生成代碼,然后選擇在線->登錄,運(yùn)行查看現(xiàn)象;

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

接下來(lái)回到CODESYS,再次雙擊Device->PLC邏輯->Application下的PLC_PRG(PRG),此時(shí)便可動(dòng)態(tài)觀察程序運(yùn)行狀態(tài),例如我們按住etherkit開(kāi)發(fā)板上的KEY0,可以發(fā)現(xiàn)in_pin_button_LED及in_pin_button_LED_previous 這兩個(gè)變量值為FALSE,此時(shí)再松開(kāi)KEY0,可以發(fā)現(xiàn)flashing值反轉(zhuǎn)一次。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5086

    文章

    19141

    瀏覽量

    305932
  • 工業(yè)以太網(wǎng)

    關(guān)注

    10

    文章

    621

    瀏覽量

    42347
  • Profinet
    +關(guān)注

    關(guān)注

    6

    文章

    1196

    瀏覽量

    23453
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ModelSim快速上手指南

    ModelSim快速上手指南
    發(fā)表于 08-16 17:14

    如何快速上手MSP430

    之前一直用keil,如何快速上手MSP430
    發(fā)表于 11-07 20:06

    如何快速上手

    如何快速上手,得分
    發(fā)表于 12-14 09:27

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

    一步步截圖說(shuō)明,做到每步都有說(shuō)明,有理由,教你如何快速易懂的上手cadence?
    發(fā)表于 06-22 06:36

    幫助大家快速上手PCB的設(shè)計(jì)

    一篇“從入門(mén)到上手”的PCB設(shè)計(jì)教程這是一篇面向神馬都不懂的小白玩家的PCB設(shè)計(jì)教程。希望能幫助大家快速上手PCB的設(shè)計(jì)。1預(yù)備知識(shí)1.1 常用工具(1)做圖工具:Altium Designer(2
    發(fā)表于 11-11 06:34

    如何快速上手學(xué)習(xí)STM32

    關(guān)注「嵌入式大雜燴」,選擇「星標(biāo)公眾號(hào)」一起進(jìn)步!來(lái)源 | 巧學(xué)模電數(shù)電單片機(jī)單片機(jī)用處這么廣,尤其是STM32生態(tài)這么火!如何快速上手學(xué)習(xí)呢?你要考慮的是,要用STM32實(shí)現(xiàn)什么?為什么...
    發(fā)表于 01-24 07:10

    如何快速上手TrueStudio?

    如何快速上手TrueStudio?
    發(fā)表于 02-23 07:01

    如何快速上手RK3399?

    如何快速上手RK3399?
    發(fā)表于 03-07 06:42

    ModelSim快速上手指南

    ModelSim快速上手指南 快速上手四部曲:建立Project、引進(jìn)HDL Files、Compile、模擬(Simulate/Loading and Run)
    發(fā)表于 05-08 17:29 ?0次下載

    帶IRT網(wǎng)絡(luò)接口的快速平臺(tái)-PROFINET

    帶IRT網(wǎng)絡(luò)接口的快速平臺(tái)-PROFINET
    發(fā)表于 04-29 11:56 ?2次下載
    帶IRT網(wǎng)絡(luò)接口的<b class='flag-5'>快速</b>平臺(tái)-<b class='flag-5'>PROFINET</b>

    Kingst邏輯分析儀快速上手

    為了能夠讓各位電子行業(yè)的同仁們拿到 Kingst 系列邏輯分析儀后,在幾分鐘內(nèi)快速熟 悉上手分析儀,并且高效解決問(wèn)題,特做此快速上手手冊(cè),以 Kingst LA5016 為例進(jìn)行說(shuō)明
    發(fā)表于 02-23 10:53 ?3次下載

    快速實(shí)現(xiàn)Modbus和Profinet互轉(zhuǎn)的方案

    Modbus轉(zhuǎn)Profinet網(wǎng)關(guān)(XD-MDPN100/200)可快速實(shí)現(xiàn)Modbus信號(hào)至Profinet信號(hào)的轉(zhuǎn)換,確保通信穩(wěn)定安全。Modbus轉(zhuǎn)Profinet網(wǎng)關(guān)(XD-M
    的頭像 發(fā)表于 12-27 09:14 ?475次閱讀
    <b class='flag-5'>快速</b>實(shí)現(xiàn)Modbus和<b class='flag-5'>Profinet</b>互轉(zhuǎn)的方案

    Modbus轉(zhuǎn)Profinet不會(huì)編程也能用 輕松快上手

    Modbus轉(zhuǎn)Profinet是一種協(xié)議轉(zhuǎn)換器,可將Modbus協(xié)議轉(zhuǎn)換為Profinet協(xié)議,實(shí)現(xiàn)設(shè)備間的數(shù)據(jù)交換與通信。即使不會(huì)編程的人也可以輕松快速上手使用Modbus轉(zhuǎn)
    的頭像 發(fā)表于 12-30 16:10 ?1070次閱讀
    Modbus轉(zhuǎn)<b class='flag-5'>Profinet</b>不會(huì)編程也能用 輕松快<b class='flag-5'>上手</b>

    Ubuntu系統(tǒng)快速上手

    Ubuntu系統(tǒng)快速上手概述和操作說(shuō)明
    的頭像 發(fā)表于 04-12 16:25 ?560次閱讀
    Ubuntu系統(tǒng)<b class='flag-5'>快速</b><b class='flag-5'>上手</b>

    PROFINET轉(zhuǎn)SSI協(xié)議模塊快速使用說(shuō)明

    Profinet網(wǎng)關(guān)PROFINET轉(zhuǎn)SSI協(xié)議 PN4SSI模塊快速使用說(shuō)明
    的頭像 發(fā)表于 10-17 16:13 ?336次閱讀
    <b class='flag-5'>PROFINET</b>轉(zhuǎn)SSI協(xié)議模塊<b class='flag-5'>快速</b>使用說(shuō)明