0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CANOpen系列教程15_NMT網絡網絡與相關源碼說明

黃工的嵌入式技術圈 ? 2020-03-04 11:50 ? 次閱讀

1寫在前面

該系列教程13、14講述了移植相關內容,以及提供給大家可直接編譯、下載運行的源碼工程,想必你已經掌握了一些基礎的知識了。

在《CANOpen系列教程08_CANOpen通信接口引導學習》中,引導大家參看《CANopen輕松入門》通信接口的相關知識。而沒有在文中具體描述關于CANOpen通信接口的知識。

原因在于通信接口的內容太多,單純的去看這些內容,容易讓人產生更多困惑。

對于程序員來說,結合源代碼來理解相關理論知識更加容易。所以,我將其留在了這后面來講述。

下面結合移植好的源代碼,講述CANOpen網絡管理(NMT:Network management)的相關知識。

2

關于網絡管理NMT

在CANOpen網絡中,分主站和從站,而通常由主站來管理整個網絡。比如:復位、停止等。

《CANopen輕松入門》中軍隊的例子說的很好:一個軍隊,如果沒有指揮員來管理,下面士兵豈不亂套了。

例子中指揮員就是CANOpen中的網絡管理主站,士兵就是從站。

重要的一點:每個 CANopen 從節(jié)點的 CANopen 協(xié)議棧中,必須具備 NMT 管理的相應代碼。也就是說從站是被接收管理。

當然,我們使用的Canfestival這套免費框架,大家不必擔心,肯定是具有相關代碼,我們需要明白怎么使用這套源碼即可。

3

NMT網絡管理節(jié)點狀態(tài)

3.1 6種節(jié)點狀態(tài)

NMT網絡管理主要包含以下6種狀態(tài):

1.初始化(Initializing):節(jié)點上電后對功能部件包括 CAN 控制器進行初始化;

2.應用層復位(Application Reset):節(jié)點中的應用程序復位(開始),比如開關量輸出、模擬量輸出的初始值;

3.通訊復位(Communication reset):節(jié)點中的CANopen通訊復位(開始),從這個時刻起,此節(jié)點就可以進行CANopen通訊了;

4.預操作狀態(tài)(Pre-operational):節(jié)點的CANopen通訊處于操作就緒狀態(tài),此時此節(jié)點不能進行PDO通信,而可以進行SDO進行參數配置和NMT網絡管理的操作;

5.操作狀態(tài)(operational):節(jié)點收到NMT主機發(fā)來的啟動命令后, CANopen通訊被激活, PDO通信啟動后, 按照對象字典里面規(guī)定的規(guī)則進行傳輸,同樣SDO也可以對節(jié)點進行數據傳輸和參數修改;

6.停止狀態(tài)(Stopped):節(jié)點收到NMT主機發(fā)來的停止命令后,節(jié)點的PDO通信被停止,但SDO和NMT網絡管理依然可以對節(jié)點進行操作;

NMT網絡管理6種狀態(tài)如上圖所示,其中1 --- 15各處代表含義:

(1):Power on上電初始化

(2):Automatic switch to Pre-operational自動切換預操作狀態(tài)

(3) 、(6):NMT switch to Operational網絡管理切換到操作狀態(tài)

(4)、(7):NMT switch to Pre-operational網絡管理切換到預操作狀態(tài)

(5)、(8):NMT switch to Stopped網絡管理切換到停止狀態(tài)

(9)、(10)、(11):NMT switch to Application reset網絡管理切換到應用層復位狀態(tài)

(12)、(13)、(14):NMT switch to Communication reset網絡管理切換到通訊復位狀態(tài)

(15):Power-off or hardware reset掉電或硬件復位

3.2 源碼說明

通過上面描述,需要知道兩點重要內容:主站進行網絡管理,網絡各個節(jié)點有多種狀態(tài)。當然,一個時刻只能一種狀態(tài)。

在Canfestival框架源碼中,主站可通過masterSendNMTstateChange這個函數接口來管理網絡節(jié)點的狀態(tài)??梢岳斫鉃椋褐髡究刂?,或切換從站節(jié)點的狀態(tài)。

這里需要理解masterSendNMTstateChange這個函數接口的用法,也就是說接口含義,以及參數。

比如:主站上電之后,讓網絡中節(jié)點0x01復位:

這里我們結合《CANOpen系列教程13》提供的代碼基礎上,添加一行管理節(jié)點0x01的代碼:

masterSendNMTstateChange(&TestMaster_Data, 0x01, NMT_Reset_Node);

第1個參數TestMaster_Data:主站對象字典

第2個參數0x01:節(jié)點(從站)ID

第3個參數NMT_Reset_Node:復位節(jié)點

第1,2個參數很好理解,第3個參數是通過宏定義在def.h中,總共5種狀態(tài),如下圖:

寫到這里,相信大家對網絡管理節(jié)點有一定認識了,初學者可以多結合代碼理解。

4

NMT網絡管理節(jié)點上線報文

該教程上一篇文章末尾講述運行效果時,提供了一張運行時CAN總線數據的截圖:

任何一個 CANopen 從站上線后,為了提示主站它已經加入網絡(便于熱插拔),或者避免與其他從站 Node-ID 沖突。這個從站必須發(fā)出節(jié)點上線報文(boot-up)。

節(jié)點上線報文的 ID 為:700h + Node-ID, 數據規(guī)定為0。 生產者(Producer)為 CANopen 從站。如下圖:

5

NMT網絡管理心跳報文

為了監(jiān)控 CANopen 節(jié)點是否在線與目前的節(jié)點狀態(tài)。 CANopen 應用中通常都要求在線上電的從站定時發(fā)送狀態(tài)報文(心跳報文),以便于主站確認從站是否故障、是否脫離網絡。

格式:

CAN-ID:700h + Node-ID

數據:一字節(jié)狀態(tài)

在《CANOpen系列教程13》提供例程中,就是包含一個心跳報文。心跳報文比較簡單,請結合上圖理解。

注意:

1.CANopen從站按其對象字典中 1017h 中填寫的心跳生產時間(ms)進行心跳報文的發(fā)送。

2.CANopen主站則會按其1016h 中填寫的心跳消費時間進行檢查,假設超過諾干次心跳消費時間沒有收到從站的心跳報文,則認為從站已經離線或者損壞。

還有一些網絡管理相關內容,大家可以結合這種思路去理解,建議參看:

1.CiA 301 V4.2.0網絡管理章節(jié)

2.周立功的CANOpen輕松入門

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • CAN
    CAN
    +關注

    關注

    57

    文章

    2754

    瀏覽量

    463697
  • 源碼
    +關注

    關注

    8

    文章

    641

    瀏覽量

    29208
  • CANopen
    +關注

    關注

    8

    文章

    253

    瀏覽量

    43586
  • NMT
    NMT
    +關注

    關注

    0

    文章

    7

    瀏覽量

    3636
收藏 人收藏

    評論

    相關推薦

    canopen轉Profinet網關對于工業(yè)現場PLC與伺服之間的通訊重要性

    開疆智能Profinet轉Canopen網關是一種能夠實現Profinet網絡Canopen網絡之間通信的設備。
    的頭像 發(fā)表于 09-30 14:15 ?196次閱讀
    <b class='flag-5'>canopen</b>轉Profinet網關對于工業(yè)現場PLC與伺服之間的通訊重要性

    canopen轉Profinet網關對于工業(yè)現場PLC與伺服之間的通訊重要性

    Profinet轉Canopen網關是一種能夠實現Profinet網絡Canopen網絡之間通信的設備。
    的頭像 發(fā)表于 09-30 14:05 ?194次閱讀
    <b class='flag-5'>canopen</b>轉Profinet網關對于工業(yè)現場PLC與伺服之間的通訊重要性

    MODBUS TCP 轉 CANOpen

    產品概述 SG-TCP-COE-210 網關可以實現將 CANOpen 接口設備連接到 MODBUS TCP 網絡中。用戶不需要了解具體的 CANOpen 和 Modbus TCP 協(xié)議即可實現
    的頭像 發(fā)表于 09-24 13:59 ?275次閱讀
    MODBUS TCP 轉 <b class='flag-5'>CANOpen</b>

    CANopen系列CANopen從站為什么總不上傳PDO報文?

    CANopen網絡中無法獲取從站的TPDO數據?本文將為您解析可能的原因及解決方案。通過檢查TPDO的通信參數和傳輸類型,確保主站與從站的數據同步,快速定位問題所在。如果你的CANopen
    的頭像 發(fā)表于 09-19 08:05 ?334次閱讀
    【<b class='flag-5'>CANopen</b><b class='flag-5'>系列</b>】<b class='flag-5'>CANopen</b>從站為什么總不上傳PDO報文?

    DeviceNet轉CANopen協(xié)議網關(DeviceNet轉CANopen

    一,設備主要功能 捷米特JM-DNT-COP網關實現DeviceNet總線和CANopen網絡連接起來。本網關連接到DeviceNet總線中作為從站使用,連接到CANopen總線中作為主站
    的頭像 發(fā)表于 09-10 10:16 ?307次閱讀
    DeviceNet轉<b class='flag-5'>CANopen</b>協(xié)議網關(DeviceNet轉<b class='flag-5'>CANopen</b>)

    適用于標準化嵌入式網絡,CANopen有什么不同?

    電子發(fā)燒友網報道(文/吳子鵬)CANopen是一種架構在控制局域網絡CAN上的高層通信協(xié)議,包括通信子協(xié)議及設備子協(xié)議,常在嵌入式系統(tǒng)中使用,也是工業(yè)控制常用到的一種現場總線。 ? 在CAN的基礎上
    的頭像 發(fā)表于 08-22 01:19 ?3133次閱讀

    EtherCAT從站轉CANopen主站協(xié)議網關(YC-ECT-COP)

    怎樣實現EtherCAT網絡CANopen網絡的連接互通?不少朋友在這個問題上存在疑惑。接下來,將為大家集中解惑。實際上, 遠創(chuàng)智控YC-ECT-COP 這一設備能夠有效地處理此難題。下面,作者為
    的頭像 發(fā)表于 08-16 11:50 ?289次閱讀
    EtherCAT從站轉<b class='flag-5'>CANopen</b>主站協(xié)議網關(YC-ECT-COP)

    EtherCAT從站轉CANopen主站協(xié)議網關(JM-ECT-COP)

    一,設備主要功能 捷米特JM-ECT-COP網關實現EtherCAT網絡CANopen網絡之間的數據通訊,可連接CANopen網絡到Eth
    的頭像 發(fā)表于 08-15 17:36 ?434次閱讀
    EtherCAT從站轉<b class='flag-5'>CANopen</b>主站協(xié)議網關(JM-ECT-COP)

    ACR系列網絡多功能電力儀表安裝使用說明

    電子發(fā)燒友網站提供《ACR系列網絡多功能電力儀表安裝使用說明書.pdf》資料免費下載
    發(fā)表于 07-23 11:16 ?1次下載

    CANopen協(xié)議移植編譯,一直編譯不過的原因?

    CO_Data ObjDict_Data = CANOPEN_NODE_DATA_INITIALIZER(ObjDict); IAR編譯提示Error[Pe253]: expected a
    發(fā)表于 04-26 06:03

    【米爾-瑞薩RZ/G2UL開發(fā)板】5.CAN通訊進階CANopen

    索引,其范圍是 0x00 到 0xFF 之間。 1.2 NMT網絡管理對象 它負責CAN 網絡上的初始化、配置和故障處理。節(jié)點控制: 節(jié)點上線報文:任何一個 CANopen 從站上線后
    發(fā)表于 03-31 16:19

    CANopen以太網網關怎么用?

    CANopen以太網網關怎么用? CANopen以太網網關是一種連接CANopen總線和以太網的設備,它提供了在CANopen網絡和以太網之
    的頭像 發(fā)表于 02-02 16:59 ?3350次閱讀

    Profinet協(xié)議轉換為CanOpen協(xié)議來連接CanOpen伺服驅動器的應用

    局域網(CAN)網絡的通信協(xié)議,被廣泛應用于汽車和其他嵌入式系統(tǒng)中。對于將Profinet協(xié)議轉換為CanOpen協(xié)議以鏈接臺達B3系列伺服驅動器的應用
    的頭像 發(fā)表于 01-10 10:50 ?725次閱讀
    Profinet協(xié)議轉換為<b class='flag-5'>CanOpen</b>協(xié)議來連接<b class='flag-5'>CanOpen</b>伺服驅動器的應用

    Profinet協(xié)議轉換為CanOpen協(xié)議來連接CanOpen伺服驅動器的應用

    局域網(CAN)網絡的通信協(xié)議,被廣泛應用于汽車和其他嵌入式系統(tǒng)中。對于將Profinet協(xié)議轉換為CanOpen協(xié)議以鏈接臺達B3系列伺服驅動器的應用,以下是一些運用的基本步驟:系列
    發(fā)表于 01-10 10:29

    Profinet協(xié)議轉換為CanOpen協(xié)議來連接CanOpen伺服驅動器的應用

    局域網(CAN)網絡的通信協(xié)議,被廣泛應用于汽車和其他嵌入式系統(tǒng)中。對于將Profinet協(xié)議轉換為CanOpen協(xié)議以鏈接臺達B3系列伺服驅動器的應用,以下是一些運用的基本步驟:系列
    的頭像 發(fā)表于 01-10 10:27 ?425次閱讀