在Linux下用CANopenSocket協議模擬CAN總線通訊


一、參考文檔

https://github.com/CANopenNode/CANopenSocket //下載 CANopenSocket 的源碼
http://elinux.org/Can-utils //解決 Unable to locate package can-utils問題
https://www.raspberrypi.org/forums/viewtopic.php?t=138390&p=963200//解決 Unable to locate package can-utils問題
http://www.cnblogs.com/zhouhq/archive/2013/03/17/2964381.html //解決make編譯出現undefined reference to clock_gettime

二、模擬can設備通訊

1、下載開源CANopenSocket源碼

git clone https://github.com/CANopenNode/CANopenSocket.git       //  從github 上邊下載CANopenSocket源代碼
cd CANopenSocket // 進入CANopenSocket文件夾 cd為進入文件夾命令
git submodule init // 初始化子模塊
git submodule update // 更新子模塊

2、虛擬Can接口
建立Can設備之間通訊,在打開第一個First terminal進行准備虛擬can設備:

sudo modprobe vcan                     //掛載vcan 模塊
sudo ip link add dev vcan0 type vcan //Create a virtual CAN network interface called 'vcan0'
sudo ip link set up vcan0 //啟動vcan0設備
sudo apt-get install can-utils //安裝can-utils工具來分析CAN traffic
candump vcan0 //對於vcan0:display, filter and log CAN data to files

安裝can-utils可能出現以下安裝不了Unable to locate package can-utils,解決辦法請見參考文檔注釋:

candump vcan0是可以在vcan0上顯示所有模擬CAN設備之間通訊的數據流。模擬的CAN設備和工具都准備好,接下來就打開第二個Second terminal在CAN設備上進行編譯和開始運行CANSocket:

cd CANopenSocket/canopend        //進入canopend源代碼文件夾下
make //進行編譯
app/canopend --help //Displays a summary of the main command-line options
app/canopend vcan0 -i 4 -s od4_storage -a od4_storage_auto //配置can設備的Node ID=4,並且初始化Node ID4的對象字典,然后開始運行Node ID4

對於執行上邊make編譯命令,編譯出來可能出現以下錯誤undefined reference to 'clock_gettime'如下圖所示

解決辦法,需要增加在Makefile-lrt,具體請見參考文檔注釋,增加位置如下圖所示,再Make就沒有問題。

3、監控數據並分析數據
以下的開始運行Node ID=4設備發送出來的數據,從candump vcan0顯示的,數據的解析請見注釋:

  yang@yang-virtual-machine:~$ candump vcan0
vcan0 704 [1] 00 //Node id=4處於Bootup狀態 NMT state:0=Boot-up,4=stopped,5=Operational,127(7F)=Pre-operational
vcan0 084 [8] 00 50 01 2F F3 FF FF FF //Emergency communication message:Byte 0.1 00xx--Error Reset or NO Error,Byte 2--error resgiter at[1001h,00h]
//Byte3..7---Up to Up to 5 bytes for manufacturer specific error codes
vcan0 704 [1] 7F //發Heartbeat包, Node id=4處於Pre-operational狀態
vcan0 704 [1] 7F //one per second

上邊模擬的只是一個CAN設備發送的數據,接下來會加入其它節點的can設備進行通訊。

by 羊羊得億
2017-05-23 ShenZhen


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com