學習CANopen --- [1] CANopenSocket簡單用法

本系列文章主要是來學習CANopen的理論知識以及相關實踐,使用開源軟件CANopenSocket進行學習,不需要使用實際的CAN設備,比較方便。

軟件地址是https://github.com/CANopenNode/CANopenSocket,運行環境是Debian10,Ubuntu也是一樣的。


一 下載源碼及編譯使用

本小節主要是參照CANopenSocket的readme

1)首先使用下面的命令獲取源碼,並下載相關子模塊

$ git clone https://github.com/CANopenNode/CANopenSocket.git
$ cd CANopenSocket
$ git submodule init
$ git submodule update

2)使用下面命令生成一個虛擬can設備,叫vcan0,

$ sudo modprobe vcan
$ sudo ip link add dev vcan0 type vcan
$ sudo ip link set up vcan0

3)使用下面命令去安裝can-utils,然後使用candump去監控vcan0

$ sudo apt-get install can-utils
$ candump -t d vcan0

4)新開一個terminal,使用下面命令編譯並使用canopend,

$ cd CANopenSocket/canopend
$ make
$ app/canopend --help
$ echo - > od4_storage
$ echo - > od4_storage_auto
$ app/canopend vcan0 -i 4 -s od4_storage -a od4_storage_auto -c ""

此時在candump的那個terminal下就可以看到can報文了,
在這裏插入圖片描述
第一條是bootup報文,第二條是PDO報文,後面都是心跳報文,1秒鐘發一次心跳報文,現在節點處於operational state (0x05) ,最左側是相鄰2條報文的時間間隔,大約是1s
5) 新開一個terminal,使用下面命令編譯並使用canopencomm

$ cd CANopenSocket/canopencomm
$ make
$ app/canopencomm --help
$ ./canopencomm [1] 4 read 0x1017 0 i16
$ ./canopencomm [1] 4 write 0x1017 0 i16 5000

第3條命令是去讀取NodeId是4的CANopen設備的心跳報文時間間隔值,其對象字典的index是0x1017,subindex是0,數據類型是int16

第4條命令是把該設備的心跳報文時間間隔改爲5s,改完後,我們在canopend那個terminal下可以明顯看到心跳報文的時間間隔變長了,左側的時間間隔也變成了大約5s
在這裏插入圖片描述


二 總結

本文主要講述如何簡單使用CANopenSocket,可以有一個初步印象,這個方法最大的好處就是不需要實際的物理設備,一個虛擬機就可以了。

如果有寫的不對的地方,希望能留言指正,謝謝閱讀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章