DeviceNet是一個(gè)開(kāi)放的網(wǎng)絡(luò )標準。規范和協(xié)議都是開(kāi)放的——供應商將設備連接到系統時(shí),無(wú)需為硬件、軟件或授權付費;任何人都能以名義上的復制成本(目前為250美元+郵費)從開(kāi)放式DeciceNet供應商協(xié)會(huì )(ODVA)獲得DeviceNet規范。 本設計針對的DeviceNet從設備特性如下:屬于DeviceNet group 2 only 從設備;采用Predefine的通信連接;可通過(guò)硬件開(kāi)關(guān)設置125 kbps、250 kbps、500 kbps波特率;可通過(guò)硬件開(kāi)關(guān)設置0"63 MAC ID。在軟件、硬件設計前應首先進(jìn)行從設備(泵/閥)I/O需求分析(即profile文檔設計)。由于篇幅關(guān)系本文從略。 1 通信適配器硬件系統設計 1.1 功能簡(jiǎn)介 DeviceNet是基于CAN總線(xiàn)的一種總線(xiàn)協(xié)議標準。因此,DeviceNet從設備適配器硬件首先應實(shí)現CAN總線(xiàn)的基本功能,主要包括:報文收發(fā)、訪(fǎng)問(wèn)控制及其它物理層的諸多功能。此外,為實(shí)現DeviceNet協(xié)議,硬件應具有足夠大的程序存儲空間,并具有足夠快的運行速度,以保證協(xié)議程序的順利執行。 1.2 硬件原理 DeviceNet節點(diǎn)硬件主要由以下幾部分組成:電源、單片機系統、看門(mén)狗及掉電保護電路、CAN控制器SJA1000、CAN收發(fā)器82C251、撥碼開(kāi)關(guān)及狀態(tài)LED顯示、雙口RAM IDT7005、AnyBus接口?傮w設計框圖如圖1所示。詳細硬件電路圖見(jiàn)本刊網(wǎng)站補充版。 以下是主要部分功能介紹。 (1)單片機 DeviceNet適配器選用Winbond公司的高性能8位單片機W78E58。W78E58功能、引腳與80C52完全兼容,并提供256 B的內部RAM以及32 KB的Flash EEPROM,從而使系統不需擴展外部程序存儲器便可滿(mǎn)足DeviceNet協(xié)議程序的容量要求。W78E58最高可在40 MHz的主頻下運行,處理速度完全滿(mǎn)足DeviceNet節點(diǎn)通信的實(shí)時(shí)性要求。為減少芯片的數量及降低硬件成本,本系統只擴展1片8 KB的雙口RAM,其前面7 KB用于外部數據存儲,最后 1 KB用于提供與其它應用電路的通信接口。 (2)CAN控制器SJA1000 DeviceNet總線(xiàn)報文的收發(fā)以及媒體訪(fǎng)問(wèn)控制等都是依據CAN總線(xiàn)協(xié)議的,而這些協(xié)議都要通過(guò)CAN控制器加以實(shí)現。DeviceNet通信節點(diǎn)選用目前比較流行的Philips CAN控制器SJA1000。由于DeviceNet總線(xiàn)協(xié)議采用11位的標識符,因此應使SJA1000工作在Basic CAN模式。 (3)CAN收發(fā)器82C251 CAN收發(fā)器(transceiver)82C251的主要作用是收發(fā)CAN總線(xiàn)上的信號:一方面將總線(xiàn)信號轉換為CAN控制器所需的信號;另一方面,將CAN控制器的輸出信號轉化為CAN總線(xiàn)信號。 (4)雙口RAM IDT7005 DeviceNet適配器通過(guò)1個(gè)具有中斷功能的雙口RAM IDT7005提供與其它應用電路的通信接口。IDT7005具有2套完全獨立的數據線(xiàn)、地址線(xiàn)、讀寫(xiě)控制線(xiàn),允許2個(gè)CPU對雙口RAM的同一個(gè)單元在不同的時(shí)間進(jìn)行讀寫(xiě);具有2套完全獨立的中斷邏輯,實(shí)現2個(gè)CPU間的握手控制信號。IDT7005的最高2個(gè)字節1FFEH和1FFFH分別兼做2個(gè)端口的中斷邏輯單元。 (5)AnyBus接口 作為一種通用的現場(chǎng)總線(xiàn)通信節點(diǎn),AnyBus提供了與其它應用電路之間進(jìn)行數據交換的接口標準,并對接口的引腳進(jìn)行了嚴格的定義。 2 DeviceNet總線(xiàn)通信協(xié)議 DeviceNet協(xié)議規范是描述DeviceNet設備之間實(shí)現連接和交換數據的一套協(xié)議。在DeviceNet規范中定義了DeviceNet通信協(xié)議,詳細介紹了連接、信息協(xié)議和與通信相關(guān)的對象。 (1)DeviceNet是基于連接的網(wǎng)絡(luò ) DeviceNet中的連接提供在多種應用之間交換信息的路徑。當建立1個(gè)連接時(shí),與連接相關(guān)信息的傳送就會(huì )分配1個(gè)標識符,稱(chēng)為連接標識符CID(Connection Identifier)。如果某個(gè)連接需要雙向數據交換,則應該分配2個(gè)不同的連接標識符。 DeviceNet通信協(xié)議是基于連接概念的協(xié)議。一旦建立了連接,就可以在網(wǎng)絡(luò )設備之間傳送I/O數據。此時(shí),DeviceNet I/O報文的所有協(xié)議都包含在11位的CAN標識符中,其它部分都是數據。 11位的CAN標識符用來(lái)定義連接ID。DeviceNet將11位的CAN標識符分為4組,前3組的連接ID包括了6位的媒體訪(fǎng)問(wèn)控制標識符(MAC ID)以及信息標識符(Message ID)。信息組的定義如圖2所示。組4信息用于離線(xiàn)通信。 通過(guò)設計,DeviceNet系統中的節點(diǎn)能夠對自己的標識符進(jìn)行管理。這些標識符交錯分布在整個(gè)范圍內。所有的節點(diǎn)都有一個(gè)完整的它們能獲得的報文優(yōu)先權范圍,而與它們的MAC ID無(wú)關(guān)。重復MAC ID算法保證了CAN標識符的唯一性,而不需要網(wǎng)絡(luò )集中工具或記錄。 (2)DeviceNet的報文傳送 DeviceNet使用更為有效的生產(chǎn)者/消費者模式,取代了傳統的源/目的的傳輸方式。該模式要求對報文打包,使它具有數據標識位域。標識符還提供解決多級優(yōu)先權(仲裁中使用)的手段,以便更高效地傳送I/O數據,并供多個(gè)消費者使用。 DeviceNet定義了2種不同類(lèi)型的報文,稱(chēng)作 I/O報文和顯式報文。I/O報文適用于實(shí)時(shí)性要求較高和面向控制的數據。I/O報文數據幀中的8位數據場(chǎng)不包含任何與協(xié)議有關(guān)的位,只有當I/O報文為大報文經(jīng)過(guò)分割后形成的I/O報文片段時(shí),數據位域中有一位由報文分割協(xié)議使用。連接標識符提供了I/O報文的相關(guān)信息,在I/O報文利用連接標識符發(fā)送之前,報文的發(fā)送和接收設備都必須先進(jìn)行設定。設定的內容包括源和目的對象的屬性,以及數據生產(chǎn)者和消費者的地址。顯式報文適用于2個(gè)設備間多用途的點(diǎn)對點(diǎn)報文傳遞,是典型的請求-響應通信方式,常用于節點(diǎn)的配置、問(wèn)題診斷等。顯示報文通常使用優(yōu)先級低的連接標識符,并且該報文的相關(guān)信息包含在顯示報文數據幀的數據位域中,包括要執行的服務(wù)和相關(guān)對象的屬性及地址。 (3)預定義的主/從連接組 DeviceNet提供了一個(gè)功能很強的應用層協(xié)議,允許動(dòng)態(tài)配置設備間的連接。但考慮到有些設備根本不需要也沒(méi)有資源去使用這一強大功能,DeviceNet指定了一套稱(chēng)為預定義主/從連接組的連接標識符,用來(lái)簡(jiǎn)化主/從結構中I/O和配置型數據的傳送。 許多傳感器和執行器要實(shí)現的功能在設計時(shí)就已經(jīng)預先決定了(如感受壓力、啟動(dòng)馬達等等),因此這些設備將要生產(chǎn)和/或消費的數據的類(lèi)型和數量在上電前就已經(jīng)知道了。這些設備通常提供輸入數據或請求輸出數據和配置數據。預定義主/從連接組可以滿(mǎn)足設備的這些要求,它提供的連接對象的全部配置在設備上電時(shí)就完成了。在啟動(dòng)數據流時(shí),主機設備唯一必須執行的一個(gè)步驟就是要廣播對從機內該預定義連接組的所有權。 (4)DeviceNet對象模型與設備描述 ① 對象模型。為管理和實(shí)現DeviceNet產(chǎn)品組件的屬性(數據)、服務(wù)(方法或步驟)和行為提供了一個(gè)模板。模型為每個(gè)屬性提供了由4個(gè)數字組成的尋址方案,分別是節點(diǎn)地址(MAC ID)、對象類(lèi)標識符、實(shí)例編號和屬性編號。這4級地址與顯式報文連接相結合,將數據從DeviceNet網(wǎng)絡(luò )上的一點(diǎn)傳送到另一點(diǎn)。表1列出4個(gè)地址組件的范圍: 表1 DeviceNet地址組件范圍 ![]() 圖3是一個(gè)通用DeviceNet設備的對象模型;表2是DeviceNet產(chǎn)品中典型的對象類(lèi)。 ② 設備描述(Device Profiles)。DeviceNet規范不僅僅是一個(gè)物理連接協(xié)議規范。它通過(guò)定義標準的設備模型促進(jìn)不同廠(chǎng)商設備之間的互操作性。屬于同一設備模型的所有設備都必須支持共同的標識和通信狀態(tài)數據。設備描述是針對各種設備而定義的。設備描述中包括設備各種特定的數據。符合設備類(lèi)型描述的多個(gè)供貨商提供的簡(jiǎn)單設備(例如:按鈕、馬達啟動(dòng)器、光電池、氣動(dòng)閥執行器)在邏輯上是可互換的。 DeviceNet規范定義了一個(gè)電子數據文件(EDS)。EDS是一個(gè)簡(jiǎn)單的文件格式,供貨商可以將產(chǎn)品的特殊信息提供給其它供貨商。這樣可以具有友好的用戶(hù)配置工具,可以很容易地更新,無(wú)需經(jīng)常修正配置軟件工具。 3 通信適配器軟件系統設計 下面主要介紹通信協(xié)議的設計。軟件的實(shí)現是以DeviceNet協(xié)議規范的2.0版本為指導的,不同的應用有不同的具體實(shí)現。本文只給出設計的原理和指導思想及原則。 3.1 DeviceNet通信設備的上電狀態(tài)流圖 每個(gè)設備上電以前都有一個(gè)例行的狀態(tài)流轉過(guò)程。該過(guò)程描述了設備能夠在DeviceNet上通信之前必須完成的以下工作(例如重復MAC ID檢測等),以及對設備通信產(chǎn)生影響的網(wǎng)絡(luò )事件。 圖4是DeviceNet設備上電后的狀態(tài)流圖,其中一共有4個(gè)狀態(tài):發(fā)送重復MAC ID檢測報文狀態(tài)、等待重復MAC ID檢測報文狀態(tài)、在線(xiàn)狀態(tài)、通信出錯狀態(tài)。 3.2 CAN芯片的初始化 在建立CAN總線(xiàn)的通信之前要預先有一些初始化過(guò)程。一般,獨立式CAN芯片SJA1000在上電后或者上電后進(jìn)行軟件功能重置時(shí)要初始化一下工作寄存器。當系統上電后,處理器首先運行自己的特殊初始化過(guò)程,然后再進(jìn)入SJA1000的連接建立過(guò)程(SJA1000的17引腳獲得1個(gè)Reset低電平脈沖,并進(jìn)入Reset模式)。在初始化SJA1000的寄存器之前,主微處理器應該檢測Reset的mode/request標志。如果SJA1000已經(jīng)是Reset模式,因為所有的寄存器只能在Reset模式下進(jìn)行寫(xiě)操作,所有的寄存器都將獲得相應的配置信息。 在完成所有的初始化工作后,SJA1000就進(jìn)入工作模式,并且使CAN控制器的中斷功能有效。用C51編寫(xiě)的SJA1000初始化及一個(gè)模擬發(fā)送、接收過(guò)程的程序請見(jiàn)本刊網(wǎng)站補充版。http://www.dpj.com.cn 3.3 報文收發(fā)程序和分段服務(wù) 這里所講的報文收發(fā)協(xié)議對不同的通信協(xié)議有不同的定義。另外,CAN的數據長(cháng)度不能超過(guò)8個(gè)字節,如何支持大于8個(gè)字節的報文要涉及到分段服務(wù)。分段協(xié)議信息由1個(gè)字節組成,其中高2位表示分段的類(lèi)型,低6位作為分段的計數器,用來(lái)標識每個(gè)數據包.其計算方式是: fragmentCount=(fragmentcount+1) mod 64。 表3是具體的分段類(lèi)型。 表2 DeviceNet產(chǎn)品中典型的對象類(lèi) ![]() 表3 分段協(xié)議信息 ![]() 因此在程序的設計中,應當加入對分段服務(wù)協(xié)議的支持。 發(fā)送報文的處理與接收的過(guò)程是一個(gè)逆向過(guò)程。需要注意的是編寫(xiě)程序的時(shí)候要嚴格按照DeviceNet協(xié)議規范的定義,否則將產(chǎn)生不可預測的錯誤,為將來(lái)的協(xié)議一致性測試和底層調試都帶來(lái)許多麻煩。 3.4 DeviceNet通信適配器主程序的設計 軟件由頭文件、初始化程序、功能子程序和主程序組成。 軟件的組成結構提供了硬件和軟件升級的方便。軟件中將對與主處理器、CAN控制器等硬件接口的部分進(jìn)行比較獨立的設計,而主程序和功能子程序主要集中在協(xié)議的完成。這對將來(lái)的硬件改型和可能的協(xié)議修改都提供了較大的方便。 軟件用Franklin C51語(yǔ)言編寫(xiě),通過(guò)偉福E51L單片機開(kāi)發(fā)裝置進(jìn)行調試。 軟件結構如圖5所示。 在實(shí)現所有的功能模塊以后,最重要的是如何構造一個(gè)有機的主程序模塊,將這些零散的模塊組織起來(lái),進(jìn)行系統的初始化工作。另外,還要設計一個(gè)優(yōu)化的循環(huán)體并周期性地執行以對DeviceNet網(wǎng)絡(luò )上的報文產(chǎn)生動(dòng)作。 |