|
CANopen專有個子協(xié)議用來描述怎樣去通過網(wǎng)絡(luò)設(shè)置節(jié)點地址和波特率,就是CiA DSP-305,大伙都叫LSS協(xié)議,是Layer Setting Services的縮寫,不太好翻譯,也許可以翻譯成底層設(shè)置服務(wù)協(xié)議吧。 屬于主從式服務(wù),類似于NMT的方式,占用2021(for master)和2020(for slave)兩個標識符。CANopen網(wǎng)絡(luò)中同時只能有一個節(jié)點能提供LSS Master服務(wù),并且該節(jié)點同時也必須是NMT Master。網(wǎng)絡(luò)上的其他節(jié)點都提供LSS Slave服務(wù)。 假設(shè)網(wǎng)絡(luò)上除了主節(jié)點之外,其他節(jié)點都是無地址的,那么它根據(jù)什么去設(shè)置各節(jié)點地址呢? 答案是LSS地址,這跟節(jié)點的地址可不同,它理論上是全球唯一的,那么這個地址到底是什么呢?答案是對象字典1018H的內(nèi)容,包括vendor-id(制造商ID)、product-code(產(chǎn)品碼)、revision-number(修訂碼)和serial-number(序列號),這幾個加起來就全球唯一了吧。一般要求LSS Master節(jié)點要預(yù)先知道網(wǎng)絡(luò)上的各節(jié)點的LSS地址。 設(shè)置某個節(jié)點地址的步驟如下: 1. 通過LSS地址去將希望設(shè)置ID的節(jié)點切換到配置狀態(tài)(相當(dāng)于NMT的停止狀態(tài)),當(dāng)然是通過LSS服務(wù)(Switch Mode Selective)。 2. 然后通過’Configure Node-ID’服務(wù)設(shè)置其節(jié)點地址。 3. 置該節(jié)點到可操作狀態(tài)。不是很困難吧。 設(shè)置網(wǎng)絡(luò)波特率要復(fù)雜一些,步驟如下: 1. 將網(wǎng)絡(luò)上所有LSS Slave切換到配置狀態(tài),通過‘switch Mode Global’服務(wù)實現(xiàn)。 2. 通過’Configure Bit Timing Parameters’服務(wù)將波特率廣播到每個節(jié)點中。 3. 通過‘Activate Bit Timing Parameters’服務(wù)激活新設(shè)置。將整個網(wǎng)絡(luò)波特率切換為新設(shè)置。 4. 置網(wǎng)絡(luò)切換回可操作狀態(tài)。 這里要注意:在‘Activate Bit Timing Parameters’服務(wù)中有個switch_delay參數(shù),該參數(shù)指定相等長度的兩個延遲周期長度,是為了避免總線上出現(xiàn)不同的位定時參數(shù)(波特率)。每個節(jié)點在收到命令后’switch_delay’毫秒后應(yīng)用新的位定時參數(shù)。在應(yīng)用新參數(shù)后,節(jié)點在第二個’switch_delay’毫秒定時到之前不發(fā)送任何報文。 各節(jié)點處理位定時激活命令需要的時間可能不同,而且激活命令之前的的報文可能還在節(jié)點的接收隊列中。意思就是某個節(jié)點在處理延時的過程中可能還會以舊的波特率來傳輸CAN報文。因此swith_delay要比網(wǎng)絡(luò)上任何一個節(jié)點的處理時間都要長,這樣才能避免一個節(jié)點已經(jīng)改變了波特率,而另一個節(jié)點還在以舊的波特率工作。在第一次經(jīng)過switch_delay指定的時間長度后,每個節(jié)點必須在第二個switch_delay期間完成到新波特率的切換。因而在經(jīng)過了第二個switch_delay后,所有的節(jié)點都必須保證以新的波特率監(jiān)聽網(wǎng)絡(luò)。 至于LSS提供的LSS地址查詢等功能這里就不介紹了。
|
|
|