發表時間: 2022-03-08 18:32:12
作者: 北京科瑞興業科技有限公司
瀏覽:
3.1 ID分配
CAN2.0B的標準幀中的11位標識符,高4位分配為功能碼(Function Code)域,低7位分配為節點地址(Node-ID)域,如圖3.1.1所示。
11 位標識符 | ||||||||||
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
功能碼(Function Code) 節點地址(Node-ID)
圖 3.1.1
節點地址(Node-ID)由系統集成商定義,節點地址(Node-ID)範圍是1~127(0不允許被使用)
CAN2.0B的標準幀如圖3.1.2 所示:
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | FF | RTR | x | x | DLC (0-0x0A) | |||
字節2+字節 3 | 11 位標識符 (功能碼 + 節點地址) | |||||||
字節 4 | 數據區數據(數據字節 1) | |||||||
…… | ||||||||
字節 11 | 數據區數據(數據字節8) | |||||||
圖 3.1.2
FF :FF=0 為標準格式, FF=1 為擴展格式(協議中固定為0)
RTR:RTR=0 為數據幀。 RTR=1 為遠程幀(協議中固定為0)
DLC為本幀有效數據字節個數,可填入0~8,0~8 表示本幀無後跟數據字節。約定長度數字超過8 後,0x09 表示有後續幀,0x0A 表示本幀為連續幀的最後一幀。
3.2 功能碼(Function Code)定義
在同一功能碼下,不同命令由數據字節1 的值進行定義並解析。
節點同步值可進行預設置,占用1 字節,可設定範圍:0~255
心跳間隔時間值可進行預設置,占用1字節,可設定範圍:1~255(單位100mS),當設置值為0 時,關閉心跳。
主動上傳數據時間間隔參數值可進行預設置,占用1 字節,可設定範圍:1~255(單位10mS), 當設置值為 0 時,關閉主動上傳數據功能。
功能碼定義表:
功能 | 功能碼 (ID-bits 10-7) |
備注 |
保留 | 0000 | |
廣播指令(主節點) | 0001 | 最高優先級 |
主節點發送從節點配置信息 | 0010 | |
主節點請求從節點配置信息 | 0011 | |
保留 | 0100 | |
| 0101 | |
| 0110 | |
| 0111 | |
| 1000 | |
| 1001 | |
主節點發送計數清零 | 1010 | |
保留 | 1011 | |
保留 | 1100 | |
保留 | 1101 | |
狀態返回指令(從節點) | 1110 | |
保留 |
1111 |
1) 廣播指令:0001
方式:主節點發送從節點接收
地址: 0000000B
格式:
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | 1 | |||
字節2+字節 3 | 功能碼(0001)+節點地址(XXXXXXX) | |||||||
字節 4 | 00/01/02 | |||||||
主節點發送幀
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | X | x | DLC(0~0x0A) | |||
字節2+字節 3 | 功能碼(0001)+節點地址(XXXXXXX) | |||||||
字節 4 | 數據字節 1 | |||||||
…… | …… | |||||||
字節 11 | 數據字節 8 | |||||||
從節點發送幀
功能說明:
<1> 00 --- 節點收到此指令時,按分配的優先級發送全部數據一次;
<2> 01 --- 節點的同步信號計數器清零;
<3> 02 --- 節點收到此指令時, 節點的同步信號計數器增 1 並與設定值進行比較, 當計數數值
等於設定值時,發送全部數據一次。
2) 主節點發送從節點配置信息:0010
方式:主節點發送從節點接收
地址:從節點地址
格式:
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | 7 | |||
字節2+字節 3 | 功能碼(0010)+節點地址(XXXXXXX) | |||||||
字節 4 | 要配置的節點地址 | |||||||
字節 5 | 波特率 0 | |||||||
字節 6 | 波特率 1 | |||||||
字節 7 | 波特率 2 | |||||||
字節 8 | 同步計數值 | |||||||
字節 9 | 心跳間隔時間參數 | |||||||
字節 10 | 主動上傳時間參數 | |||||||
字節 11 | 模塊其他參數( K-8510 模塊是熱電偶類型代碼,K-8514E 模塊 是高級參數,其他模塊沒有這個字節) | |||||||
主節點發送幀
功能說明: 從節點收到此指令時,將得到的數據保存。
注:波特率0、波特率1 、波特率2的數值在後面的附錄A中給出,取值是低24 位。
心跳間隔時間參數值:0 --- 關閉心跳
1~FF --- 心跳間隔( 1~255)*100mS
主動上傳時間參數值:0 --- 關閉主動上傳
1~FF --- 主動上傳間隔( 1~255)*10mS
3) 主節點請求從節點配置信息:0011
方式:主節點發送從節點接收
地址:從節點地址
格式:
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | 0 | |||
字節2+字節 3 | 功能碼(0011)+節點地址(XXXXXXX) | |||||||
主節點發送幀
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | 8 | |||
字節2+字節 3 | 功能碼(0011)+節點地址(XXXXXXX) | |||||||
字節 4 | 節點地址 | |||||||
字節 5 | 波特率 0 | |||||||
字節 6 | 波特率 1 | |||||||
字節 7 | 波特率 2 | |||||||
字節 8 | 同步計數值 | |||||||
字節 9 | 心跳間隔時間參數值 | |||||||
字節 10 | 主動上傳時間參數值 | |||||||
字節 11 | 模塊型號(K-8510 模塊是熱電偶類型代碼,K-8514E 是 0x6E) |
從節點發送幀
功能說明:從節點收到此指令時,發送配置信息一次。
心跳間隔時間參數值: 0 --- 關閉心跳
1~FF --- 心跳間隔( 1~255)*100mS
主動上傳時間參數值: 0 --- 關閉主動上傳
1~FF --- 主動上傳間隔( 1~255)*10mS
字節11 說明:1 、K-8510 模塊返回的是量程代碼。具體定義見下面表格。
量程代碼
代碼 | 熱電偶類型 | 測溫範圍 |
0x80 | Type J Thermocouple | 0℃~1200℃ |
0x81 | Type K Thermocouple | 0℃~1300℃ |
0x82 | Type T Thermocouple | 0℃~400℃ |
0x83 | Type E Thermocouple | 0℃~1000℃ |
0x84 | Type R Thermocouple | 0℃~1768℃ |
0x85 | Type S Thermocouple | 0℃~1768℃ |
0x86 | Type B Thermocouple | 400℃~1820℃ |
2 、其他模塊返回的是模塊型號。
4) 主節點請求單通道輸入數據(指定): 0101
方式:主節點發送從節點接收
地址:從節點地址
格式:
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | 1 | |||
字節2+字節 3 | 功能碼(0101)+節點地址(XXXXXXX) | |||||||
字節 4 | 通道號 |
主節點發送幀
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | 3 | |||
字節2+字節 3 | 功能碼(0101)+節點地址(XXXXXXX) | |||||||
字節 4 | 通道號 | |||||||
…… | 通道數據低位 | |||||||
字節 11 | 通道數據高位 | |||||||
功能說明: 從節點收到此指令時,發送單通道數據一次。
注: K-8510 模塊實際數據=上傳數據除以 10 ,K-8511 模塊實際數據=上傳數據除以 100。
5) 主節點請求通道輸入數據(全部): 0110
方式:主節點發送從節點接收
地址:從節點地址
格式:
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | 0 | |||
字節2+字節 3 | 功能碼(0110)+節點地址(XXXXXXX) | |||||||
主節點發送幀
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | DLC(0~0x0A) | |||
字節2+字節 3 | 功能碼(0110)+節點地址(XXXXXXX) | |||||||
字節 4 | 數據字節 1 | |||||||
…… | …… | |||||||
字節 11 | 數據字節 8 | |||||||
從節點發送幀
功能說明:從節點收到此指令時,發送全部數據一次。
注意:DLC 為本幀有效數據字節個數, 可填入0~8,0~8 表示本幀無後跟數據字節。約定長度數字超過8 後,0x09 表示有後續幀,0x0A 表示本幀為連續幀的最後一幀。
K-8510 模塊實際數據=上傳數據除以10 ,K-8511模塊實際數據=上傳數據除以100。
6) 主節點發送單個通道輸出數據:0111
方式:主節點發送從節點接收
地址:從節點地址
格式:
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | 3 | |||
字節2+字節 3 | 功能碼(0111)+節點地址(XXXXXXX) | |||||||
字節 4 | 通道號 | |||||||
字節 5 | 通道數據低位 |
字節 6 | 通道數據高位 |
主節點發送幀
功能說明:從節點收到此指令時,將得到的數據值輸出。
7) 主節點發送全部通道輸出數據:1000
方式:主節點發送從節點接收
地址:從節點地址
格式:
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | DLC(0~0x0A) | |||
字節2+字節 3 | 功能碼(1000)+節點地址(XXXXXXX) | |||||||
字節 4 | 數據字節 1 | |||||||
…… | …… | |||||||
字節 11 | 數據字節 8 | |||||||
主節點發送幀
功能說明:從節點收到此指令時,將全部數據值輸出。
注意: DLC 為本幀有效數據字節個數, 可填入 0~8,0~8 表示本幀無後跟數據字節。約定長度數字超過8 後,0x09 表示有後續幀,0x0A 表示本幀為連續幀的最後一幀。
8) 主節點請求通道輸出數據(全部):1001
方式:主節點發送從節點接收
地址:從節點地址
格式:
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | 0 | |||
字節2+字節 3 | 功能碼( 1001)+節點地址(XXXXXXX) | |||||||
主節點發送幀
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | DLC(0~0x0A) | |||
字節2+字節 3 | 功能碼( 1001)+節點地址(XXXXXXX) | |||||||
字節 4 | 數據字節 1 | |||||||
…… | …… | |||||||
字節 11 | 數據字節 8 | |||||||
從節點發送幀
功能說明:從節點收到此指令時,發送全部數據值一次。
注意: DLC 為本幀有效數據字節個數, 可填入 0~8,0~8 表示本幀無後跟數據字節。約定長度數字超過8 後,0x09 表示有後續幀,0x0A 表示本幀為連續幀的最後一幀。
9) 主節點發送計數清零: 1010
方式:主節點發送從節點接收
地址:從節點地址
格式:
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | 1 | |||
字節2+字節 3 | 功能碼(1010)+節點地址(XXXXXXX) | |||||||
字節 4 | 00/01/02/03/04/05/06/07/08 | |||||||
主節點發送幀
注:此條指令對K-8514 計數模塊有效,K-8514C 模塊字節4的數據00~07對應1到8通道清零,08為全部通道清零。K-8514E模塊字節4的數據00~03對應1到4通道清零,沒有4字節為全部通道清零。
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | DLC(0~0x0A) | |||
字節 2、3 | 功能碼(1010)+節點地址(XXXXXXX) | |||||||
字節 4 | 數據字節 1 | |||||||
…… | …… | |||||||
字節 11 | 數據字節 8 | |||||||
從節點發送幀
功能說明:從節點收到此指令時,將計數器清零,並發送全部數據值一次。
注: K-8514E 沒有返回幀。
10) 狀態返回指令: 1110
方式:從節點發送主節點接收
地址:從節點地址
格式:
--- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
字節 1 | 0 | 0 | x | x | 4 | |||
字節 2、3 | 功能碼(1110)+節點地址(XXXXXXX) | |||||||
字節 4 | 數據字節 1(節點工作狀態參數 0) | |||||||
字節 5 | 數據字節 2(節點工作狀態參數 1) | |||||||
字節 6 | 數據字節 3(節點工作狀態參數 2) | |||||||
字節 7 | 數據字節 4(節點工作狀態參數 3) | |||||||
從節點發送幀
功能說明:從節點按心跳設置時間發送節點的工作狀態參數。
節點工作狀態寄存器參數 0
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
BS | ES | TS | RS | TCS | TBS | DOS | RBS |
RBS --- 1:接收緩衝區狀態——如果CANRDA和CANRDB 寄存器有效,CANRFS 和CANRID 內接收到的信息可用, 隻要以後再無可用的接收信息, 該位通過 CANCMR 的釋放接收緩衝區命令清除。
複位值0。
DOS --- 1:數據溢出狀態——由於前面傳輸到CAN控製器的數據未被讀出,而接收緩衝區沒有及時釋放,從而引起後面信息丟失。
0:自從上次的清除數據溢出命令被寫入CANCMR(或自從複位後)後就無數據溢出發生。
複位值0。
TBS --- 1:發送緩衝區狀態——無發送信息(3個Tx緩衝區中任何一個的信息)等待CAN 控製器處理,軟件可以向CANTFI、CANTID、CANTDA和CANTDB寄存器寫入數據。
0:至少有一條前面隊列中的到CAN控製器的信息未被發送,因此,軟件不應該向存放信息的那個(那些)Tx 緩衝區的CANTFI、CANTID 、CANTDA和CANTDB 寄存器寫入數據。
複位值1。
TCS --- 1:發送結束狀態——所有發送請求都被成功處理。
0:至少有一個請求發送未處理。
複位值1。
RS --- 1:接收狀態:CAN 控製器正在接收數據。
複位值0。
TS --- 1:發送狀態:CAN 控製器正在發送數據。
複位值0。
ES --- 1:錯誤狀態:發送和接收錯誤計數器的計數值或其中一個的計數值已經達到出錯警
告界限寄存器中設置的閾值。
複位值0。
BS --- 1:總線狀態:由於發送錯誤計數器的計數值已達到其閾值 255 ,CAN 控製器目前被 禁止。
複位值0。
節點工作狀態寄存器參數 1
Rx 錯誤計數器的當前值,複位值0。
節點工作狀態寄存器參數 2
Tx 錯誤計數器的當前值,複位值0。
節點工作狀態寄存器參數 3
在CAN 操作過程中,該值與Tx和Rx錯誤計數器的計數器相比較,如果其中一個計數值與該值相等,CANSR的錯誤狀態(ES)位置位,複位值0x60。
3.3 K85系列模塊各個模塊用到的功能碼表
功能碼 | 模塊型號 | ||||||||||
8510 | 8511 | 8512 | 8513 | 8514 | 8516 | 8518 | 8520 | 8521 | 8522 | 8523 | |
0001 | ● | ● | ● | ● | ● | ● | ● | ● | ● | ● | ● |
0010 | ● | ● | ● | ● | ● | ● | ● | ● | ● | ● | ● |
0011 | ● | ● | ● | ● | ● | ● | ● | ● | ● | ● | ● |
0101 | ● | ● | ● | ● | ● | ||||||
0110 | ● | ● | ● | ● | ● | ● | ● | ● | |||
0111 | ● | ||||||||||
1000 | ● | ● | ● | ● | ● | ● | |||||
1001 | ● | ● | ● | ● | ● | ● | |||||
1010 | ● | ||||||||||
1110 | ● | ● | ● | ● | ● | ● | ● | ● | ● | ● | ● |
用戶在應用程序編程時,可以根據所使用的模塊查閱相關指令幀,並參考我們提供的各模塊編程示例進行。