時(shí)間敏感網(wǎng)絡(luò)(TSN)在工業(yè)PLC中基于NXP i.MX RT1170的實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一、TSN與工業(yè)PLC概述
時(shí)間敏感網(wǎng)絡(luò)(TSN)是一組IEEE 802.1標(biāo)準(zhǔn),旨在為以太網(wǎng)提供確定性的數(shù)據(jù)傳輸能力,滿足工業(yè)自動(dòng)化等領(lǐng)域?qū)?shí)時(shí)性的嚴(yán)格要求。工業(yè)PLC(可編程邏輯控制器)是工業(yè)自動(dòng)化的核心設(shè)備,負(fù)責(zé)控制生產(chǎn)過(guò)程中的各種設(shè)備和工藝流程。將TSN技術(shù)應(yīng)用于工業(yè)PLC,可以顯著提高系統(tǒng)的實(shí)時(shí)性、可靠性和靈活性。
二、NXP i.MX RT1170簡(jiǎn)介
NXP i.MX RT1170是一款高性能的跨界處理器,結(jié)合了微控制器(MCU)的易用性和微處理器(MPU)的高性能。它集成了多個(gè)以太網(wǎng)控制器,支持TSN功能,包括gPTP(通用精確時(shí)間協(xié)議)時(shí)鐘同步和流量調(diào)度,非常適合用于工業(yè)PLC的TSN實(shí)現(xiàn)。
三、gPTP時(shí)鐘同步實(shí)現(xiàn)
(一)gPTP原理
gPTP是TSN中用于實(shí)現(xiàn)高精度時(shí)鐘同步的協(xié)議,它基于IEEE 1588精確時(shí)間協(xié)議(PTP)發(fā)展而來(lái)。gPTP通過(guò)主從時(shí)鐘架構(gòu),主時(shí)鐘周期性地發(fā)送時(shí)間同步報(bào)文,從時(shí)鐘根據(jù)這些報(bào)文調(diào)整自己的本地時(shí)鐘,從而實(shí)現(xiàn)整個(gè)網(wǎng)絡(luò)中的時(shí)鐘同步。
(二)i.MX RT1170上的gPTP實(shí)現(xiàn)步驟
1. 硬件準(zhǔn)備
選擇支持gPTP的以太網(wǎng)控制器:i.MX RT1170的以太網(wǎng)控制器需要支持IEEE 1588時(shí)間戳功能,以便在發(fā)送和接收?qǐng)?bào)文時(shí)記錄精確的時(shí)間戳。
連接網(wǎng)絡(luò):將i.MX RT1170與TSN交換機(jī)或其他支持gPTP的設(shè)備連接,確保網(wǎng)絡(luò)拓?fù)浞蟝PTP的要求。
2. 軟件配置
選擇操作系統(tǒng)和協(xié)議棧:可以使用NXP提供的MCUXpresso SDK,其中包含了gPTP協(xié)議棧的實(shí)現(xiàn)。也可以選擇開源的gPTP協(xié)議棧,如LinuxPTP,并進(jìn)行移植。
配置gPTP參數(shù):
主時(shí)鐘配置:如果i.MX RT1170作為主時(shí)鐘,需要設(shè)置其時(shí)鐘源(如外部晶振)的精度和穩(wěn)定性參數(shù),以及gPTP報(bào)文的發(fā)送周期和優(yōu)先級(jí)。
從時(shí)鐘配置:如果i.MX RT1170作為從時(shí)鐘,需要配置其接收gPTP報(bào)文的接口,并設(shè)置時(shí)鐘同步的算法和參數(shù),如同步間隔、延遲測(cè)量方式等。
3. 代碼示例(基于MCUXpresso SDK)
c
#include "fsl_enet.h"
#include "fsl_gptp.h"
// gPTP實(shí)例句柄
gptp_handle_t gptpHandle;
// 初始化gPTP
void gptp_init(void) {
gptp_config_t gptpConfig;
// 獲取默認(rèn)配置
GPTP_GetDefaultConfig(&gptpConfig);
// 配置gPTP參數(shù)
gptpConfig.ptpDomain = 0; // PTP域
gptpConfig.twoStepFlag = true; // 使用兩步時(shí)鐘
gptpConfig.primaryDomain = true; // 作為主時(shí)鐘(如果需要)
// 初始化gPTP
GPTP_Init(ENET, &gptpHandle, &gptpConfig, CLOCK_GetFreq(kCLOCK_CoreSysClk));
// 啟動(dòng)gPTP
GPTP_Start(&gptpHandle);
}
// 處理gPTP事件(如報(bào)文接收)
void gptp_event_handler(ENET_Type *base, gptp_handle_t *handle, gptp_event_t event, void *param) {
switch (event) {
case kGPTP_EventSyncReceived:
// 處理同步報(bào)文接收事件
break;
case kGPTP_EventDelayReqReceived:
// 處理延遲請(qǐng)求報(bào)文接收事件
break;
default:
break;
}
}
int main(void) {
// 初始化硬件(如時(shí)鐘、以太網(wǎng)控制器等)
// ...
// 初始化gPTP
gptp_init();
// 注冊(cè)gPTP事件處理函數(shù)
GPTP_SetEventHandler(&gptpHandle, gptp_event_handler, NULL);
while (1) {
// 主循環(huán)
}
}
4. 時(shí)鐘同步測(cè)試與優(yōu)化
測(cè)試時(shí)鐘同步精度:使用高精度的時(shí)鐘測(cè)量工具,測(cè)量主從時(shí)鐘之間的時(shí)間偏差,確保時(shí)鐘同步精度滿足工業(yè)PLC的要求(通常在微秒級(jí)甚至納秒級(jí))。
優(yōu)化網(wǎng)絡(luò)參數(shù):根據(jù)測(cè)試結(jié)果,調(diào)整gPTP報(bào)文的發(fā)送周期、網(wǎng)絡(luò)拓?fù)浜玩溌焚|(zhì)量,以提高時(shí)鐘同步的穩(wěn)定性和精度。
四、流量調(diào)度實(shí)現(xiàn)
(一)TSN流量調(diào)度機(jī)制
TSN定義了多種流量調(diào)度機(jī)制,如基于時(shí)間感知整形器(TAS)、信用整形器(CBS)和異步流量整形器(ATS)等,用于保證不同優(yōu)先級(jí)流量的確定性傳輸。在工業(yè)PLC中,通常使用TAS機(jī)制來(lái)確保關(guān)鍵控制流量的實(shí)時(shí)傳輸。
(二)i.MX RT1170上的TAS實(shí)現(xiàn)步驟
1. 流量分類與標(biāo)記
定義流量類型:根據(jù)工業(yè)PLC的業(yè)務(wù)需求,將流量分為關(guān)鍵控制流量、實(shí)時(shí)監(jiān)控流量和普通數(shù)據(jù)流量等不同類型。
標(biāo)記流量?jī)?yōu)先級(jí):使用VLAN標(biāo)簽或802.1Q優(yōu)先級(jí)字段對(duì)不同類型的流量進(jìn)行標(biāo)記,以便TSN交換機(jī)和i.MX RT1170能夠識(shí)別和處理。
2. 配置TAS門控列表(GCL)
GCL原理:GCL定義了在不同時(shí)間窗口內(nèi)允許傳輸?shù)牧髁款愋?。通過(guò)合理配置GCL,可以確保關(guān)鍵控制流量在預(yù)定的時(shí)間窗口內(nèi)優(yōu)先傳輸,避免與其他流量發(fā)生沖突。
配置步驟:
確定時(shí)間窗口:根據(jù)工業(yè)PLC的控制周期和實(shí)時(shí)性要求,確定關(guān)鍵控制流量的傳輸時(shí)間窗口。
配置GCL條目:在i.MX RT1170的以太網(wǎng)控制器中配置GCL條目,指定每個(gè)時(shí)間窗口內(nèi)允許傳輸?shù)牧髁款愋秃蛯?duì)應(yīng)的VLAN ID或優(yōu)先級(jí)。
3. 代碼示例(基于MCUXpresso SDK)
c
#include "fsl_enet.h"
#include "fsl_tsn.h"
// TSN實(shí)例句柄
tsn_handle_t tsnHandle;
// 初始化TSN和TAS
void tsn_tas_init(void) {
tsn_config_t tsnConfig;
tsn_tas_config_t tasConfig;
// 獲取默認(rèn)TSN配置
TSN_GetDefaultConfig(&tsnConfig);
// 初始化TSN
TSN_Init(ENET, &tsnHandle, &tsnConfig, CLOCK_GetFreq(kCLOCK_CoreSysClk));
// 配置TAS參數(shù)
tasConfig.gateControlListSize = 8; // GCL條目數(shù)量
// 配置GCL條目(示例)
tasConfig.gateControlList[0].timeInterval = 1000; // 時(shí)間窗口長(zhǎng)度(單位:納秒)
tasConfig.gateControlList[0].gateStates = 0x01; // 允許傳輸?shù)牧髁款愋停ǘM(jìn)制位表示)
// ... 配置其他GCL條目
// 初始化TAS
TSN_TAS_Init(&tsnHandle, &tasConfig);
// 啟動(dòng)TAS
TSN_TAS_Start(&tsnHandle);
}
int main(void) {
// 初始化硬件(如時(shí)鐘、以太網(wǎng)控制器等)
// ...
// 初始化TSN和TAS
tsn_tas_init();
while (1) {
// 主循環(huán)
}
}
4. 流量調(diào)度測(cè)試與驗(yàn)證
測(cè)試流量傳輸延遲:使用網(wǎng)絡(luò)測(cè)試工具,測(cè)量關(guān)鍵控制流量的傳輸延遲和抖動(dòng),確保其滿足工業(yè)PLC的實(shí)時(shí)性要求。
驗(yàn)證流量隔離性:檢查不同優(yōu)先級(jí)流量之間的隔離性,確保關(guān)鍵控制流量不會(huì)受到其他流量的干擾。
五、總結(jié)
通過(guò)在NXP i.MX RT1170上實(shí)現(xiàn)gPTP時(shí)鐘同步和流量調(diào)度,可以構(gòu)建一個(gè)基于TSN的工業(yè)PLC系統(tǒng),實(shí)現(xiàn)高精度的時(shí)鐘同步和確定性的數(shù)據(jù)傳輸。在實(shí)際應(yīng)用中,需要根據(jù)具體的工業(yè)場(chǎng)景和需求,對(duì)gPTP和TAS的參數(shù)進(jìn)行優(yōu)化和調(diào)整,以確保系統(tǒng)的性能和可靠性。同時(shí),還需要考慮網(wǎng)絡(luò)安全、故障診斷等方面的問(wèn)題,以保障工業(yè)PLC系統(tǒng)的穩(wěn)定運(yùn)行。