Profibus和CAN現場(chǎng)總線(xiàn)的幀轉換
(2)幀格式舉例
Profibus的幀有4種
1)無(wú)數據字段的固定長(cháng)度的幀
2)有數據字段的固定長(cháng)度的幀
3)有可變數據字段長(cháng)度的幀
4)令牌幀
其中:
SYN同步時(shí)間,所有的主動(dòng)幀前都必須有。
SD1開(kāi)始定界符,值l0H
SD2開(kāi)始定界符,值68H
SD1開(kāi)始定界符,值A2H
SD1開(kāi)始定界符,值DCH LE信息字節長(cháng)度。該長(cháng)度包括DA, SA,FC和DATA_UNIT。
LEr重復信息字節長(cháng)度。 DA目的地址
SA源地址 FC幀控制 DATA UNIT數據字段。在固定長(cháng)度的幀中為8個(gè)字符,在可變數據字段長(cháng)度的幀中由LE決定,最大246個(gè)字符。
FCS幀檢查順序 ED結束定界符,值16H。 SC短應答幀的單一字符,值E5H。
(3)地址
在幀首部的地址字符結構是這樣的:
地址位組的低7位為其所指示的站地址。這樣在不擴展的情況下就有127個(gè)站地址(0~126)可以提供給主站和從站(其中127是作為全局地址來(lái)用的)。
EXT位用來(lái)指示在DATA UNIT中有無(wú)地址擴展。為了效率的緣故,Profibus-DP的數據交換功能禁止了地址擴展。
(4)服務(wù)存取點(diǎn)SAP
ProfibuS-DP協(xié)議使用FDL的服務(wù)存取點(diǎn)SAP作為基本功能代碼。這個(gè)SAP有點(diǎn)類(lèi)似于我們熟悉的TCP/IP協(xié)議中的端口:
在Profibus-DP協(xié)議中通常使用的幀格式如下,其中地址欄的最高位是1。
4、幀的內容的轉化
一般說(shuō)來(lái),Profibus現場(chǎng)總線(xiàn)是主從結構的,Master和Slave之間是通過(guò)輪詢(xún)來(lái)通訊的。CAN也有主從結構的,但它的通訊方式是優(yōu)先級逐位仲裁的競爭式通訊(CSMA/MBA)。
如果把這兩種現場(chǎng)總線(xiàn)連在一起的話(huà),大多數情況下應該是把CAN段作為Profibus的Slave。
CAN的幀比較短,每個(gè)幀都有嚴格的差錯控制,在每個(gè)CAN的幀中,數據域最長(cháng)是8個(gè)字節;而Profibus常用的有可變數據字段的單幀數據容量可達246字節,但它的每個(gè)字節(UART字符)都有比較好的差錯控制。在這種轉化中我們需要集中考慮地址轉化和幀的拆分問(wèn)題。
4.1 地址轉化
如前所述,Profibus-DP的站地址(DA/SA)在幀中用1個(gè)字節的低7位來(lái)表示;但是CAN協(xié)議的幀中卻沒(méi)有明顯的地址位,它是利用仲裁域中的11位(CAN2. OA)或29位(CAN2.OB)表示符ID來(lái)表示幀的有關(guān)接收信息,讓接受節點(diǎn)自己來(lái)確定是否接收。這樣,實(shí)際上的地址信息就應當包含在ID中了。CAN協(xié)議沒(méi)有規定信息標識符(ID)的分配,可以根據不同的應用使用不同的方法。確定標識符的分配非常重要,是高層協(xié)議、應用層協(xié)議的一個(gè)主要研究項目。
在本文中,為簡(jiǎn)單起見(jiàn),我們只采用CAN2. OA格式的幀。首先我們來(lái)研究其標識符的分配方法。世界上已經(jīng)有很多現場(chǎng)總線(xiàn)的高層協(xié)議是基于CAN協(xié)議的,如CANopen, Modbus,DeviceNET等。出于研究方便,現在我們就采用“HiLon協(xié)議B”,協(xié)議。
下面對“HiLon協(xié)議B”作簡(jiǎn)單介紹。
HiLon協(xié)議B是一個(gè)通用協(xié)議。該協(xié)議基于對稱(chēng)型多主網(wǎng)絡(luò )結構,支持廣播和點(diǎn)對點(diǎn)傳送命令數據。命令數據包可長(cháng)達256字節。
協(xié)議以CAN2. OA幀結構為基礎。下圖是幀報文格式,一個(gè)CAN2. OA標準幀由11位ID、1位RTR、4位DLC、數據區(最多8個(gè)字節)組成。
PRI:保留位(可作優(yōu)先級位)。通常,保留位設置為1。保留位亦可作為優(yōu)先級位,這時(shí)1為低優(yōu)先級0為高優(yōu)先級而剩余的優(yōu)先級由源地址決定,低地址優(yōu)先級高。該保留功能可有效支持緊急信息傳送,如報警等。
source address:源地址,表示發(fā)送數據的節點(diǎn)地址,范圍只能設定為0~125。
TYPE:幀類(lèi)型。見(jiàn)下表中的幀類(lèi)型說(shuō)明。
DLC:每幀字節數(1~8)
destination address:目標地址,表示接收數據的節點(diǎn)地址,范圍只能設定為0~125。
index:索引字節。對于單幀數據,該字節表示傳輸數據的第一個(gè)字節;對于多幀數據,此字節表示索引字節,即此幀數據在數據包中的位置。
data:數據。
Profibus有127個(gè)站地址,地址范圍是0~126,127是全局地址。
兩者的差距并不大。因為只是研究用,我們不妨把HilonB協(xié)議稍許修改,地址范圍擴充到0~126,這樣做,對整個(gè)CAN幀的長(cháng)度和結構并無(wú)任何影響。
于是,我們就可以對所有的Profibus設備和CAN設備統一編址。整個(gè)系統里的站地址是唯一的,在幀轉化時(shí)我們只要把相應位的地址信息直接拷貝進(jìn)去就是了。
4.2 幀的拆分和合并
要把profibus的長(cháng)幀裝到CAN的短幀里去,就只能把Profibus的幀里的數據拆分成適合CAN的幀傳輸的長(cháng)度。
相關(guān)推薦
技術(shù)專(zhuān)區
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線(xiàn)
- 開(kāi)關(guān)電源
- 單片機
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機控制
- 藍牙
- PLC
- PWM
- 汽車(chē)電子
- 轉換器
- 電源管理
- 信號放大器
評論