canopen與can區(qū)別
CANopen定義了應(yīng)用層。CANopen是基于CAN總線的應(yīng)用層協(xié)議,在開放的現(xiàn)場總線標(biāo)準(zhǔn)中CANopen是最著名和成功的一種。
“自動(dòng)化CAN用戶和制造商協(xié)會(huì)”(CiA,CANinAutomation),制定自動(dòng)化CAN的應(yīng)用層協(xié)議CANopen。
現(xiàn)場總線網(wǎng)絡(luò)一般只實(shí)現(xiàn)了第1層(物理層)、第2層(數(shù)據(jù)鏈路層)、第7層(應(yīng)用層)。因?yàn)楝F(xiàn)場總線通常只包括一個(gè)網(wǎng)段,因此不需要第3層(傳輸層)和第4層(網(wǎng)絡(luò)層),也不需要第5層(會(huì)話層)第6層(描述層)
reference:
can數(shù)據(jù)幀(標(biāo)準(zhǔn)幀):
幀起始1bit、仲裁段11bit(1遠(yuǎn)程幀發(fā)送標(biāo)志位+10ID)、控制段6bit(1擴(kuò)展幀標(biāo)志位+1保留位+4數(shù)據(jù)長度(DLC)) 、數(shù)據(jù)段8bit、CRC15bit、ACK1bit、幀結(jié)束7bit
canopen:
1、在can數(shù)據(jù)幀的基礎(chǔ)上,重新定義仲裁段和數(shù)據(jù)段
1.1 仲裁段:functionCode 4bit + nodeID 7bit functionCode定義CanOpen的:PDO、SDO、EMCY、NMT、 SYNC、LSS等不同的幀
1.2 數(shù)據(jù)段:當(dāng)functionCode不同時(shí),有不同含義,一般是1B操作碼+2B數(shù)據(jù)字典+1Bsub-index+4B數(shù)據(jù)
2、數(shù)據(jù)字典
其實(shí)就是對一個(gè)整數(shù)賦予意義,主要用文檔體現(xiàn),比如
{
字典0x6040,
表示溫度,
值是整數(shù),
單位是0.01°,
有兩個(gè)sub-index(0存儲(chǔ)華氏攝氏度,1存儲(chǔ)通用攝氏度)。
}
那么想要獲取通用攝氏度需要發(fā)送 SDO(通過修改functionCode):讀操作碼1B+數(shù)據(jù)字典6040 4B+sub-index 1B+4B數(shù)據(jù)(讀操作碼時(shí)全為0,寫操作碼時(shí)為要寫入的數(shù)據(jù))。