時(shí)間融合和使用
對(duì)于整車來(lái)說(shuō),Tsync模塊需要將整車所有vehicle time和utc同步好,對(duì)于用戶來(lái)說(shuō),開(kāi)發(fā)者最好提供獲取vehicle time和utc時(shí)間的接口,用戶無(wú)需要關(guān)注時(shí)鐘同步的過(guò)程和細(xì)節(jié)。
- 時(shí)間融合與utc同步
前面提到vehicle time和utc的精度不一樣,所以使用場(chǎng)景各有不同,也就意味著同一個(gè)ecu內(nèi),應(yīng)該同時(shí)存在上述兩種時(shí)間,我們以網(wǎng)關(guān)(GW),座艙控制器(CDC),智駕控制器(ADC)以及TBOX為例分析。
如上圖所示,vehicle time可以借助gptp以及can_tsync讓所有ecu保持同步,而utc時(shí)間必須借助外部環(huán)境先同步TBOX。但是如何讓GW, CDC ,ADC也能同步UTC時(shí)間呢?
針對(duì)上述拓?fù)洌瑅ehicle master和utc master不在同一個(gè)ecu,可以借助當(dāng)前最火的SOA思想,在TBOX上部署UtcServiceProvider,提供GetUtc和PubUtc兩種接口,而GW, ADC, CDC則可以部署UtcServiceConsumer。為了消除SOA傳輸帶來(lái)的延遲,我們可以將TBOX的utc和vehicle time一同給到consumer端,這樣的話,UTCconsumer=UTC(provider)+(vehicle_time(consumer)-vehicle_time(provider))。
如果vehicle master和utc master在同一個(gè)ecu,如下圖,這種方式相對(duì)來(lái)說(shuō),會(huì)更加簡(jiǎn)單一點(diǎn)。比如我們可以將utc的時(shí)間在tbox上于vehicle time同步,然后通過(guò)gptp的報(bào)文,簡(jiǎn)介的同步所有的ecu的utc時(shí)間。
不管上述任何一種情況,實(shí)際并不復(fù)雜,前一種讓架構(gòu)部門輸出soa的描述語(yǔ)言(arxml,idl),由下游直接生成服務(wù)和實(shí)現(xiàn)服務(wù)即可;而后一種情況從方式較為簡(jiǎn)單了,但是需要考慮時(shí)間跳變的問(wèn)題。
- 對(duì)外接口
針對(duì)使用者來(lái)說(shuō),期望能夠直接獲取utc時(shí)間或者vehicle time,所以開(kāi)發(fā)者理應(yīng)再提供接口直接獲取,屏蔽使用者無(wú)需關(guān)心的細(xì)節(jié)。代碼示例如下:
C++
class JinbaoClock {
public:
static struct timespec GetVehicleTime()
{
struct timespec ts_ptp;
if (clock_gettime(clk_id_, &ts_ptp)) {
return {};
}
return ts_ptp;
}
static struct timespec GetUtc()
{
struct timespec ts_utc;
if (clock_gettime(CLOCK_REALTIME, &ts_utc)) {
return {};
}
return ts_utc;
}
};
-
模塊
+關(guān)注
關(guān)注
7文章
2707瀏覽量
47476 -
控制器
+關(guān)注
關(guān)注
112文章
16361瀏覽量
178071 -
車載
+關(guān)注
關(guān)注
18文章
612瀏覽量
83388 -
時(shí)鐘同步
+關(guān)注
關(guān)注
0文章
87瀏覽量
12765
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論