谘詢電話

ENGLISH0755-88840386
新聞中心

谘詢電話

0755-88840386
您的位置:首頁 > K8凯发大酒店天生赢家專題 > 專業技術專題 > 工業自動化稱重儀表>詳情頁

基於dsPIC30F的電子皮帶秤控製儀表的PROFIBUS-DP從站實現

發布時間:2021-05-31 15:08:15 |來源:網絡轉載

電子皮帶秤控製儀表是針對生產過程控製的實際需要而開發的一種低成本專用儀表[1]。該儀表采用dsPIC30F作為CPU;24位的模數轉換器AD7730采集壓力傳感器的模擬信號,並通過SPI口與dsPIC30F相連;皮帶的速度信號通過光電編碼器測量,並經QEI口輸入dsPIC30F;控製信號經電流型數模轉換器AD420輸出,控製變頻器,調節電機轉速。儀表中設有兩個獨立的通信接口,一個配置成RS232,用於與係統機相連,作為電子皮帶秤係統調試、參數設置和代碼下載的通道;另一個則配置成RS485。
在電子皮帶秤安裝到現場使用後,由於生產線是采用SIEMENS的S7-300PLC控製的,希望皮帶秤能夠接受生產線控製主機發來的命令,同時也能將物料K8凯发登录入口等數據發送到主機,因此要求電子皮帶秤控製儀表具備有PROFIBUS-DP的通信接口,成為PROFIBUS-DP從站。
雖然PROFIBUS是一個開放的現場總線通信協議,任何人都可以獲得這個標準並設計各自的軟、硬件解決方案[2]。但該協議較為複雜,而且通信過程中對時間響應的要求較為嚴格,目前開發DP從站的解決方案大多采用專用的協議芯片,如SPC3等[3]來實現的。采用專用的協議芯片的解決方案是一種省時省力的解決方案,但要求在硬件上進行設計,將協議芯片直接與儀表控製CPU總線相連,需要占用較多的硬件資源。在所設計的電子皮帶秤控製儀表中,控製芯片的硬件資源基本被用完,除非重新設計,已不可能實現與專用的協議芯片的直接相連,采用專門的串口/PROFIBUS-DP轉換器又要增加成本。為此隻能探索一種軟件解決方案,讓現有的電子皮帶秤控製儀表能成為PROFIBUS-DP從站,滿足生產線的控製需要。
在許多文獻裏都提到過利用單片機的UART口可以通過軟件來實現PROFIBUS-DP的數據鏈路層協議[2],但尚未見過實用的成功實例報告。筆者將在對PROFIBUS-DP進行協議分析的基礎上,充分利用dsPIC30F的UART功能,實現一種純軟件的PROFIBUS-DP從站解決方案,並成功地運用於電子皮帶秤控製儀表中。
1PROFIBUS-DP協議分析①
為了保證數據的高速傳輸,PROFIBUS隻采用了物理層、數據鏈路層和用戶接口,並通過數據鏈路層FDL(FieldbusDataLink)來實現大部分的總線協議。這種精簡結構使得數據能高速、高效地傳輸,特別適應於PLC與現場I/O設備間的通信。PROFIBUS的物理層采用RS485雙絞線電纜或光纜,其中RS-485傳輸是PRIFIBUS總線中最常用的一種傳輸技術,它既適應於需高速傳輸的係統,又適應於簡單、廉價,需快速鋪設的場合。通信波特率為9.6kbps~12.0Mbps。
PRIFIBUS通常采用基於總線的主從結構,可以有多個主站。主站之間采用令牌環網,確保每個主站在一個確定的時間內得到總線存取權(令牌)。主站與從站之間采用主-從輪詢方式完成信息傳送。主站可以對從站進行賦值、配置、初始化和診斷。而從站一般是被動地等待主站的請求,並對主站的請求進行必要的響應。
PROFIBUS的數據鏈路層幀協議是很複雜的,要采用軟件方式實現一個可以滿足各種配置需要、能通過PROFIBUS認證的通用站點是很困難的。而本項設計的目的是在自行設計的專用儀表上增設一個可以作為DP從站的PROFIBUS總線接口,讓專用儀表能和總線上的確定主站交換信息,實現生產線的聯動控製和數據采集。為此可以裁剪掉一些不必要的功能,保證專用儀表可以順利地接入PROFIBUS-DP總線,並可靠地與主站實現數據交換。為此根據專用儀表功能和所需要交換的數據,編輯一個該儀表的GSD文件,其中關鍵是設置好該設備的ID、適應波特率、從站響應時間和數據交換模塊。然後將該GSD文件安裝到PLC的主站中,讓主站可以正確識別該設備。
在所設計的係統中,選用SIEMENS的S7-300PLC作為主站。在安裝了皮帶秤控製儀表的GSD文件後,通過實際測試和協議分析後,得到該係統的主-從通信過程大致可以分為:主站對從站的第1次診斷、參數化從站、組態配置從站、主站對從站的第2次診斷以及主站與從站之間的循環數據交換。
為了便於以下說明,現將報文幀中的符號作簡要說明:SD為報文起始符,SD=0x68表示數據域長度可變的報文幀;LE為所有數據的長度;LEr為LE的重複;SDr為SD的重複;DA為傳輸的目的地址;SA為傳輸的源地址;FC為功能碼域;DSAP為目標服務點;SSAP為源服務點;DU為用戶數據域,最長為246字節;FCS為所有數據的代數和;ED為報文幀的結束標誌,固定為0x16。
當控製儀表的GSD文件輸入到S7-300主站後,主站首先會定期發出診斷幀來判斷控製儀表從站是否在總線上,當主站地址為2,從站地址為11時。
如果控製儀表從站已接到總線上,從站必須在確定時間內響應主站請求,即從站應發出一個診斷響應幀,其DU域應包含診斷信息數據。由於此時隻是主站發出的第一個診斷,其目的是判斷從站是否在總線上,因此數據域隻需包含6個字節的基本標準診斷信息,其中數據域的第1字節0x02表示該從站未準備好交換數據;第2字節0x05表示該從站必須重新設置參數;第4字節0xFF表示該從站未被任何主站控製或參數設置;第5、第6字節表示該從站的ID號為0x000B。
在接到第一個診斷響應後,主站將發出一個參數賦值幀給從站,用於指定主站與從站的關係和從站的操作方式,主要包括從站被主站鎖定,參數可以被接收;Watchdog啟用;設定Watchdog時間;定義從站延遲響應時間和確認設備ID號等。
從站收到參數賦值幀後,響應報文非常簡單,隻需用一個字節來對主站的請求進行確認,即發一個確認報文SC=0xE5。
參數賦值完成後,主站將發出一個組態請求報文給從站,其作用是對I/O的類型及性質進行設定。本例DU域中的0x11和0x21表示從站應該有兩個字節的輸入模塊和兩個字節的輸出模塊。
從站收到組態請求幀後,也隻需要發一個確認報文SC=0xE5即可。
組態配置完成後,主站將再次發出診斷幀來判斷從站的初始化是否正確。
收到第2次診斷幀後,從站應發出一個響應幀,報告自身的初始化狀態。此時數據域也隻需包含6個字節的基本信息,第1字節0x00表示該從站已準備好交換數據;第2字節0x0C表示Watchdog啟用;第4字節0x02表示該從站的屬主主站地址為2。
當各項初始化過程結束,且參數都正確,就可以啟動數據交換,主站與從站開始正常的周期性數據交換。首先主站向從站發出輸出數據。
在收到主站數據後,從站需及時向主站發出輸入數據。
至此將一直處於數據交換狀態,實現了主站與從站之間的通信。
2UART的通信實現與波特率自適應
微芯公司的dsPIC30F是一款16位的數字信號控製器,具有單片機的控製功能和數字信號處理器的計算能力和數據吞吐量。dsPIC30F有兩個獨立的UART口,在電子皮帶秤控製儀表中,UART2被配置為RS232,用於與係統機相連,而UART1則配置成RS485。PROFIBUS-DP從站就是采用這個口RS485來實現的。
UART由波特率發生器(BRG)、異步發送器和異步接收器組成。UxBRG寄存器控製一個自由運行的16位定時器的周期。其計算波特率的公式為:
式中:FCY---係統時鍾。當UxBRG=0時,UART可以獲得最高的波特率為FCY/16。
由於dsPIC30F容許的最高係統時鍾為30MHz,為了使其UART產生的波特率與PROFI-BUS-DP對應,控製儀表的係統時鍾選擇為24MHz。這樣,UART可產生的最高波特率為1.5Mbps,也就是說可能實現的PROFIBUS-DP的最高波特率僅能達到1.5Mbps。這個波特率雖然低了一些,但足以滿足PLC控製生產線的PROFIBUS總線組網要求。
PROFIBUS-DP總線係統中,總線的傳輸速率是根據實際應用的需要,由主站來設定的。為了實現設備的複位和重組,要求從站能主動匹配事先定義的總線的傳輸速率,一旦通信速率發生變化,還能主動調整到新的傳輸速率,也就是說從站應具有波特率自適應能力。
在dsPIC30F芯片上擁有一個具備自動波特率檢測能力的UART外設,UART接收引腳(RX引腳)上的信號能在內部傳送至一個輸入捕捉模塊,從而獲得輸入信號邊沿的時序,應用程序可根據此時序計算出UxBRG寄存器的值,實現波特率自適應。但這種自動檢測的方法取決於接收到的數據,通常要求主站首先發送一個同步字符,如0x55。然而本係統的主站是確定的PLC,主站隻能按現場總線傳輸協議傳送相關報文幀,不可能加入所要求的同步字符,很難保證波特率計算的精度,經測試表明,該方法無法完成PROFIBUS-DP的波特率自適應,實現穩定通信。
好在PROFIBUS-DP協議隻支持9.6~12.0Mbps的10級固定的波特率,總線傳輸信號可能的工作頻率已知且穩定。因此,可以采用窮舉法,在從站啟動通信程序後,逐個嚐試以不同的波特率接收主站發出的字符,直到能成功接收為止。在所設計的係統中,考慮到主站隻可能有45.45、93.75、187.5、500、1.5*103Mbps5個波特率,所對應的從站的UxBRG值分別為32、15、7、2、0。以收到一個完整的幀為標準,在從站初始化時自動進入波特率搜尋狀態,逐個輪詢UxBRG的值來實現波特率自適應。這種方法簡單,容易實現,並且係統工作穩定。
PROFIBUS-DP總線在數據交換過程中,有嚴格的報文幀的結構和相應的時序關係,如果時序稍有差錯,交換就會終止[5,6]。在主站發送每一報文幀前,需加入一段總線休息的同步時間TSYN,其值固定為33Tbit(Tbit表示傳輸一個數據位占用的時間,為傳輸速率的倒數)。在從站接收到主站請求後並非立即響應,而是需要一定的時間間隔,這個時間間隔定義為TSDR,PROFIBUS規定此值的下限為11Tbit,上下限為60~800Tbit。主站在接收到響應報文幀後,要等待TIDI才能發送下一幀,TIDI固定為75Tbit。此外,在通信的主站一側還定義了參數TSL,它表示從主站發出請求幀的最後一個bit到收到響應幀的第一個bit之間的時間間隔,反映了一個係統的實時性好壞。如果實際時間超過TSL後,主站還未收到從站的響應,就認為係統出錯,需做出相應的處理。
在設計一個從站時,務必注意滿足TSDR和TSL這兩條件,使從站的反應時間不能過快也不能太慢,以符合總線時序關係。在從站接收到一個主站請求幀後都必須做一些必要的處理,這些處理所花費的CPU時間通常都能達到TSDR的下限要求,如果不能滿足(如波特率太低,而CPU運行速度太快)可適當加入一點延時,以保證時序關係。為了保證整個係統的實時性,TSDR的上限和TSL都不能定義得太長,因此要求從站能對主站的請求及時做出響應。為此在從站控製器編程中采用了兩項技術:一是充分利用了dsPIC30F的UART接收寄存器和發送寄存器的四級緩存,保證收入數據的及時接收和輸出數據的連續發送;二是為了避免被控製器其它任務的打擾,影響響應時間,在從站收到主站請求幀的最後一個字節時,直接在接收中斷中解析該請求幀,並準備好響應數據,開啟發送中斷。這兩項技術是通過多次摸索後,確保實現與主站穩定通信的關鍵。
3聯網測試
為了驗證所設計電子皮帶秤控製儀表作為PROFIBUS-DP從站的性能,采用西門子公司的S7-300作為主站,並采用STEP7來配置相應的PROFIBUS-DP實驗網絡[3]。首先在SIMATICMANAGER下建立一個PROFIBUS-DP項目;然後將S7-300插入總線中作為主站,並將主站地址設置為2;在配置好通信傳輸速率(如1.5Mbps)後,就可以得到一個以S7-300為主站的PROFIBUS-DP總線。在硬件配置下添加自行編輯的GSD文件後,可以在PROFIBUS-DP站點目錄中找到電子皮帶秤控製儀表DP從站,將其添加到PROFIBUS-DP總線上並設置其地址為11,就完成了整個實驗網絡的組態。在將組態代碼下載到S7-300模塊後,用雙絞線將該模塊的PROFIBUS-DP接口與電子皮帶秤控製儀表的RS485接口相連,就構成了測試平台。
在組網結束後,分別給PLC、電子稱上電,將PLC模式開關選擇RUN狀態,PLC的RUN(綠色)指示燈閃爍幾次後停止閃爍,處於綠色點亮狀態。指示燈SF(紅色)、BATF(紅色)、FRCE(黃色)、STOP(停止)閃爍幾次後,處於熄滅狀態。此種狀態一直持續下去,說明通信在正常運行。更換其它波特率,PLC指示燈的狀態與以上情況相同,也說明通信正常。
在PROFIBUS-DP聯通後,就可以實現上位PLC與下位電子皮帶秤控製儀表的數據交換。根據在GSD文件中規定好的數據交換格式,PLC送給電子秤的信號為PIW310~PIW339,共30個字節。電子秤送到PLC的信號單元為PQW300~PQW329共30個字節。經觀察,在各種波特率下,上下位機之間均能實現正常的數據交換,基本達到了生產過程控製的需求。
4結束語
PROFIBUS-DP現場總線是一種較為複雜的通信協議,而且有嚴格的時序要求。要開發符合標準的通用DP從站站點,可采用專用的協議芯片來實現,但這種解決方案需要占用較多的控製器硬件資源。在控製器硬件資源不夠時,還有一種解決方案就是采用串口/PROFIBUS-DP轉換器,不過這種方式不僅增加了控製器成本,而且還需開發與轉換器相連的串口程序。
如果控製器的CPU芯片具有較高的性能,如16位以上的芯片;並且具有足夠高的係統時鍾,能產生1.5MHz以上的串口波特率;串口的收發裝置都具有相應的緩存,能滿足數據交換過程中的時序要求,則可以采用軟件方式來實現一個滿足一般工業控製要求的DP從站站點。隻要對通信過程中的時序進行嚴格控製,完全可以實現從站與主站間的數據交換,滿足PROFIBUS-DP總線的實時性要求。這是一種經濟實用的解決方案,對開發自主的PROFIBUS-DP總線儀表有一定指導意義。

 

本文源於網絡轉載,如有侵權,請聯係刪除

分享到
網站地圖凱發K8凱發K8凱發K8凱發K8凱發K8凱發K8凱發K8凱發K8