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