<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 數控同步現場(chǎng)總線(xiàn)與CAN總線(xiàn)網(wǎng)關(guān)的設計

數控同步現場(chǎng)總線(xiàn)與CAN總線(xiàn)網(wǎng)關(guān)的設計

作者: 時(shí)間:2016-12-20 來(lái)源:網(wǎng)絡(luò ) 收藏

4 NCSF與CAN數據幀封裝轉換模塊

NCSF-CAN協(xié)議轉換模塊把CAN數據幀封裝在NCSF數據包中。NCSF應用層提供四類(lèi)設備應用服務(wù):計數器、操作站、伺服電機和簡(jiǎn)單I/0設備,其中計數器設備服務(wù)數據包中可利用的字段比較多,所以選擇把CAN報文封裝在計數器數據包中。

CAN數據幀由七部分構成:幀起始、仲裁場(chǎng)、控制場(chǎng)、數據場(chǎng)、CRC場(chǎng)、應答場(chǎng)和幀結尾。其中,幀起始為一個(gè)“顯性”位;仲裁場(chǎng)由11位標識符和遠程發(fā)送請求位(RTR)構成;控制場(chǎng)有六位,最后四位是數據場(chǎng)長(cháng)度,其余兩位保留;數據場(chǎng)是數據幀中的有效數據,長(cháng)度為0—8個(gè)字節;應答場(chǎng)有兩位分別為應答間隙和應答定界符;最后是7位的幀結尾。CAN遠程幀沒(méi)有數據場(chǎng),RTR位為“隱形”。綜合CAN的各種幀,NCSF—CAN網(wǎng)關(guān)需要把標識符、RTR位、數據長(cháng)度字段、0—8字節的數據封裝在計數器數據包的計數器字段中,然后通過(guò)NCSF的鏈路傳送給主站。

計數器數據包長(cháng)48個(gè)字節,支持5個(gè)計數器,按絕對增量方式計數,采用32位計數。由此每個(gè)計數器數據包傳輸20字節的數據,每個(gè)CAN幀的數據至多8個(gè)字節,再加上標識符等字段也不多于20字節。表1為計數器數據包與CAN數據幀的封裝轉換。

表1 計數器數據包與CAN數據幀的封裝轉換

點(diǎn)擊放大圖片

點(diǎn)擊放大圖片


為了區分普通計數器數據包和封裝CAN數據幀的特殊計數器數據包,規定前兩個(gè)字節為0x0101的計數器數據包為封裝CAN協(xié)議數據的數據包。IOIN和IO.OUT是輸入輸出端子控制字段。CNT0_CNT、CNTl_CNT、CNT2_CNT、CNT3_CNT和CNT4_CNT為五個(gè)計數器,在主站發(fā)往計數器從站的計數器數據包中這些字段為1表示對應的計數器清零,為0表示正常計數,其它值沒(méi)有定義。

為了兼容主站的計數器命令,主站發(fā)往NCSF_CAN網(wǎng)關(guān)的計數器字段不能為0或1。為了達到此目的規定:CNTO_CNT、CNTI_CNT、CNT2_CNT、CNT3_CNT和CNT4_CNT最高位為1,即這些字段的最小值為Ox80000000。CNT0_CNT的0_15位對應于CAN數據幀的id字段的0-15位;CNT0_CNT的16位是擴展報文標志;17位對應為RTR位;CNT0_CNT的18位表示此數據包是否包含有效數據,為1表示此數據包封裝了_個(gè)CAN數據幀,為0表示不含有效數據的計數器報文,直接轉發(fā)此幀即可;CNTO_CNT的19位,標識此數據包中信息是否為主站對NCSF_CAN網(wǎng)關(guān)的配置控制信息,為1表示配置數據用于配置網(wǎng)關(guān)的運行參數,為0表示封裝的是CAN數據幀。CNT1_CNT的0—15位對應其余的CAN數據幀id字段位,這32位足以存儲CAN擴展報文29位長(cháng)的id字段;CNT1_CNT的16—22位存儲數據長(cháng)度。

5 NCSF主站對網(wǎng)關(guān)數據的處理

引入NCSF-CAN網(wǎng)關(guān)后,NCSF主站的軟件結構如圖7所示。用戶(hù)層行規為用戶(hù)提供統一的接口服務(wù),而服務(wù)映射管理層用于把用戶(hù)層行規的通用接口映射到具體協(xié)議的應用層服務(wù)。主站接收到計數器數據包頭部為OxO101時(shí)經(jīng)過(guò)CAN數據幀封裝轉換處理得到CAN數據幀,此幀經(jīng)過(guò)CAN的應用層,通過(guò)服務(wù)映射管理和用戶(hù)層行規提交給NC系統,NC系統由此可以得知CAN總線(xiàn)上的設備狀態(tài)、I/0和傳感器數據等信息。NC系統向CAN總線(xiàn)上發(fā)送命令或數據時(shí),先通過(guò)用戶(hù)層行規和服務(wù)映射管理層映射到相應的CAN應用層,然后把需要傳送的CAN數據幀封裝到NCSF計數器數據包中,通過(guò)NCSF的物理鏈路發(fā)到NCSF-CAN網(wǎng)關(guān),對數據包解析和轉換后,即可把相應的命令或數據發(fā)送到CAN總線(xiàn)上。

圖7所示軟件結構也是其它現場(chǎng)總線(xiàn)與NCSF互聯(lián)的基本結構:用戶(hù)層行規為NC系統提供統一的服務(wù)接口,而服務(wù)映射管理層先把相應的命令或數據映射到具體的某一種協(xié)議應用層,然后封裝到NCSF應用層,通過(guò)NCSF的物理鏈路發(fā)送到NCSF與此協(xié)議的交互網(wǎng)關(guān),最后發(fā)送到特定的總線(xiàn)上。

點(diǎn)擊放大圖片

圖7 引入NCSF-CAN網(wǎng)關(guān)后的主站軟件結構

6 NCSF-CAN網(wǎng)關(guān)工作流程

NCSF-CAN網(wǎng)關(guān)設備加電后首先初始化NCSF模塊,接著(zhù)初始化CAN模塊和數據幀封裝轉換模塊。初始化完成后,NCSF-CAN網(wǎng)關(guān)等待接收NCSF總線(xiàn)和CAN總線(xiàn)數據。為確保NCSF的實(shí)時(shí)性,NCSFCAN網(wǎng)關(guān)接收到每個(gè)數據包后應該在盡量短的時(shí)間內把有效數據插入,然后轉發(fā)出去。為此,當收到NCSF數據幀后,并不等待CAN總線(xiàn)的響應,僅僅查看當前NCSF發(fā)送隊列中是否有數據,沒(méi)則立即轉發(fā);有則封裝隊頭數據后再轉發(fā)。處理NCSF數據包的過(guò)程如圖8所示。



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>