当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]时间敏感网络(TSN)是一组IEEE 802.1标准,旨在为以太网提供确定性的数据传输能力,满足工业自动化等领域对实时性的严格要求。工业PLC(可编程逻辑控制器)是工业自动化的核心设备,负责控制生产过程中的各种设备和工艺流程。将TSN技术应用于工业PLC,可以显著提高系统的实时性、可靠性和灵活性。


一、TSN与工业PLC概述

时间敏感网络(TSN)是一组IEEE 802.1标准,旨在为以太网提供确定性的数据传输能力,满足工业自动化等领域对实时性的严格要求。工业PLC(可编程逻辑控制器)是工业自动化的核心设备,负责控制生产过程中的各种设备和工艺流程。将TSN技术应用于工业PLC,可以显著提高系统的实时性、可靠性和灵活性。


二、NXP i.MX RT1170简介

NXP i.MX RT1170是一款高性能的跨界处理器,结合了微控制器(MCU)的易用性和微处理器(MPU)的高性能。它集成了多个以太网控制器,支持TSN功能,包括gPTP(通用精确时间协议)时钟同步和流量调度,非常适合用于工业PLC的TSN实现。


三、gPTP时钟同步实现

(一)gPTP原理

gPTP是TSN中用于实现高精度时钟同步的协议,它基于IEEE 1588精确时间协议(PTP)发展而来。gPTP通过主从时钟架构,主时钟周期性地发送时间同步报文,从时钟根据这些报文调整自己的本地时钟,从而实现整个网络中的时钟同步。


(二)i.MX RT1170上的gPTP实现步骤

1. 硬件准备

选择支持gPTP的以太网控制器:i.MX RT1170的以太网控制器需要支持IEEE 1588时间戳功能,以便在发送和接收报文时记录精确的时间戳。

连接网络:将i.MX RT1170与TSN交换机或其他支持gPTP的设备连接,确保网络拓扑符合gPTP的要求。

2. 软件配置

选择操作系统和协议栈:可以使用NXP提供的MCUXpresso SDK,其中包含了gPTP协议栈的实现。也可以选择开源的gPTP协议栈,如LinuxPTP,并进行移植。

配置gPTP参数:

主时钟配置:如果i.MX RT1170作为主时钟,需要设置其时钟源(如外部晶振)的精度和稳定性参数,以及gPTP报文的发送周期和优先级。

从时钟配置:如果i.MX RT1170作为从时钟,需要配置其接收gPTP报文的接口,并设置时钟同步的算法和参数,如同步间隔、延迟测量方式等。

3. 代码示例(基于MCUXpresso SDK)

c

#include "fsl_enet.h"

#include "fsl_gptp.h"


// gPTP实例句柄

gptp_handle_t gptpHandle;


// 初始化gPTP

void gptp_init(void) {

   gptp_config_t gptpConfig;


   // 获取默认配置

   GPTP_GetDefaultConfig(&gptpConfig);


   // 配置gPTP参数

   gptpConfig.ptpDomain = 0;  // PTP域

   gptpConfig.twoStepFlag = true;  // 使用两步时钟

   gptpConfig.primaryDomain = true;  // 作为主时钟(如果需要)


   // 初始化gPTP

   GPTP_Init(ENET, &gptpHandle, &gptpConfig, CLOCK_GetFreq(kCLOCK_CoreSysClk));


   // 启动gPTP

   GPTP_Start(&gptpHandle);

}


// 处理gPTP事件(如报文接收)

void gptp_event_handler(ENET_Type *base, gptp_handle_t *handle, gptp_event_t event, void *param) {

   switch (event) {

       case kGPTP_EventSyncReceived:

           // 处理同步报文接收事件

           break;

       case kGPTP_EventDelayReqReceived:

           // 处理延迟请求报文接收事件

           break;

       default:

           break;

   }

}


int main(void) {

   // 初始化硬件(如时钟、以太网控制器等)

   // ...


   // 初始化gPTP

   gptp_init();


   // 注册gPTP事件处理函数

   GPTP_SetEventHandler(&gptpHandle, gptp_event_handler, NULL);


   while (1) {

       // 主循环

   }

}

4. 时钟同步测试与优化

测试时钟同步精度:使用高精度的时钟测量工具,测量主从时钟之间的时间偏差,确保时钟同步精度满足工业PLC的要求(通常在微秒级甚至纳秒级)。

优化网络参数:根据测试结果,调整gPTP报文的发送周期、网络拓扑和链路质量,以提高时钟同步的稳定性和精度。

四、流量调度实现

(一)TSN流量调度机制

TSN定义了多种流量调度机制,如基于时间感知整形器(TAS)、信用整形器(CBS)和异步流量整形器(ATS)等,用于保证不同优先级流量的确定性传输。在工业PLC中,通常使用TAS机制来确保关键控制流量的实时传输。


(二)i.MX RT1170上的TAS实现步骤

1. 流量分类与标记

定义流量类型:根据工业PLC的业务需求,将流量分为关键控制流量、实时监控流量和普通数据流量等不同类型。

标记流量优先级:使用VLAN标签或802.1Q优先级字段对不同类型的流量进行标记,以便TSN交换机和i.MX RT1170能够识别和处理。

2. 配置TAS门控列表(GCL)

GCL原理:GCL定义了在不同时间窗口内允许传输的流量类型。通过合理配置GCL,可以确保关键控制流量在预定的时间窗口内优先传输,避免与其他流量发生冲突。

配置步骤:

确定时间窗口:根据工业PLC的控制周期和实时性要求,确定关键控制流量的传输时间窗口。

配置GCL条目:在i.MX RT1170的以太网控制器中配置GCL条目,指定每个时间窗口内允许传输的流量类型和对应的VLAN ID或优先级。

3. 代码示例(基于MCUXpresso SDK)

c

#include "fsl_enet.h"

#include "fsl_tsn.h"


// TSN实例句柄

tsn_handle_t tsnHandle;


// 初始化TSN和TAS

void tsn_tas_init(void) {

   tsn_config_t tsnConfig;

   tsn_tas_config_t tasConfig;


   // 获取默认TSN配置

   TSN_GetDefaultConfig(&tsnConfig);


   // 初始化TSN

   TSN_Init(ENET, &tsnHandle, &tsnConfig, CLOCK_GetFreq(kCLOCK_CoreSysClk));


   // 配置TAS参数

   tasConfig.gateControlListSize = 8;  // GCL条目数量

   // 配置GCL条目(示例)

   tasConfig.gateControlList[0].timeInterval = 1000;  // 时间窗口长度(单位:纳秒)

   tasConfig.gateControlList[0].gateStates = 0x01;  // 允许传输的流量类型(二进制位表示)

   // ... 配置其他GCL条目


   // 初始化TAS

   TSN_TAS_Init(&tsnHandle, &tasConfig);


   // 启动TAS

   TSN_TAS_Start(&tsnHandle);

}


int main(void) {

   // 初始化硬件(如时钟、以太网控制器等)

   // ...


   // 初始化TSN和TAS

   tsn_tas_init();


   while (1) {

       // 主循环

   }

}

4. 流量调度测试与验证

测试流量传输延迟:使用网络测试工具,测量关键控制流量的传输延迟和抖动,确保其满足工业PLC的实时性要求。

验证流量隔离性:检查不同优先级流量之间的隔离性,确保关键控制流量不会受到其他流量的干扰。

五、总结

通过在NXP i.MX RT1170上实现gPTP时钟同步和流量调度,可以构建一个基于TSN的工业PLC系统,实现高精度的时钟同步和确定性的数据传输。在实际应用中,需要根据具体的工业场景和需求,对gPTP和TAS的参数进行优化和调整,以确保系统的性能和可靠性。同时,还需要考虑网络安全、故障诊断等方面的问题,以保障工业PLC系统的稳定运行。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭