摘 要:本文介紹了一種控制普通閥門的閥門控制器的設計方案,該閥門控制器帶有工業現場總線PROFIBUS-DP的接口,可以實現閥門的遠程控制和網絡控制。本文主要的著力點為介紹利用PROFIBUS-DP專用芯片SPC3開發PROFIBUS-DP設備中需要注意的一些問題,包括硬件接口設計,有關PROFIBUS-DP規范標準的一些設計要點,以及利用PROFIBUS-DP診斷功能的方法。
關鍵詞:閥門; PROFIBUS-DP; SPC3
1. 引言
在傳統的閥門控制領域中,引入嵌入式系統技術和工業現場總線技術是閥門控制器發展的重要方向之一,也是工業執行器實現智能化、網絡化、遠程控制化的客觀要求。本文中的設計方案就是針對這一課題的嘗試。希望能為國內閥門控制器的設計提供一些參考。
在閥門選擇上,我們選擇應用最為廣泛,結構也最為簡單的普通閥門作為研究對象。普通閥門本身操作也較簡單,只有開、關、停三種運動狀態,對其進行遠程控制改造容易入手。在工業現場總線技術選擇上,我們選擇PROFIBUS-DP工業現場總線技術,是考慮到PROFIBUS-DP技術發展成熟,有廣泛的應用實例,在全球擁有巨大的市場占有率[2]。在國內目前也已經是機械工業推薦標準。因此設計普通閥門PROFIBUS-DP閥門控制器在技術可行性和市場意義上都具有一定的優勢。
本設計的最終目的是實現一種實用的普通閥門控制器,可以作為從站兼容于PROFIBUS-DP系統,接受遠程的主站的控制。
2. PROFIBUS-DP硬件接口電路設計
在閥門控制器的PROFIBUS-DP硬件接口電路設計方案上,我們采用單片機 + 專用集成芯片SPC3 + RS485驅動的方案。
SPC3是西門子公司用于開發PROFIBUS-DP從站的智能通信專用芯片,集成了完整的PROFIBUS-DP協議,可以獨立完成全部PROFIBUS-DP通信功能。SPC3提供了方便的硬件接口,適用于不同的微處理器,如Intel內核的80C32、80X86、80C165還有motorola型單片機等等。本設計選用的是51內核的單片機,所以采用Intel 8位連接方式,為了節約單片機資源,還采用的是地址數據復用模式。SPC3為44管腳的PQFP封裝。
[align=center]

圖 1 DP硬件接口結構[/align]
SPC3具有1.5Kbyte的信息報文存儲器,這1.5K的存儲空間包括:處理器參數Processor Parameters、組織參數Organizational Parameter、和所有的輸入輸出緩沖區DP buffer[1]。在中央處理器對SPC3的操作上,類似于對一個1.5K的RAM進行操作。值得注意的是,SPC3的1.5K存儲空間只需要有11條地址線提供地址,而實際SPC3與中央處理器都是16條地址線連接,因為SPC3內部以地址線的最高5位全為零,作為存儲空間的選通信號,因此SPC3的16條地址線狀態應該在0000H和05FFH范圍內,才能進入SPC3的存儲空間。
在中央處理器還有其他外部數據存儲器的情況下,應注意與SPC3存儲空間的地址沖突。一般情況下,選擇通過地址譯碼電路把SPC3的存儲空間置于整個中央處理器地址空間的最高部分。
SPC3芯片上有一個引腳XDATAEXCH,復位狀態為高電平,而當SPC3進入數據交換狀態能夠數據通訊時,該引腳會變為低電平。以此可以作為檢測通訊是否正常的標志,一般在該引腳上連接發光二極管,作為直觀的判斷數據通訊正常的指示信號,較為方便。
3. 通訊地址方案
閥門控制器作為PROFIBUS-DP通訊的從站必須有不與其他站沖突的地址。有關PROFIBUS-DP從站通訊地址的設計方案有兩種:一種是由遠程的PROFIBUS-DP主站通過特定的數據通訊設定或修改從站地址;另一種是禁止PROFIBUS-DP主站設定和修改從站地址,從站的地址由從站本地設定。
本設計采用的是后一種設計方案,通過一個8位的撥碼開關手動設定閥門控制器的地址,然后由中央處理器讀入并寫入SPC3特定的存儲位置,位于SPC3存儲空間地址16H的 組織參數 R_TS_Adr,從而使SPC3獲得通訊地址。由于禁止主站改變該從站的地址,需要在初始化SPC3時,設定組織參數R_Real_No_Add_Change = FFH,并設定另兩個組織參數R_SSA_Buf_Ptr = 0和R_Len_SSA_Data = 0,這兩個組織參數的意義是:前者為存放來自主站的地址設定幀的緩沖區地址首地址,后者為收到的地址設定幀的數據長度。這樣SPC3初始化時,就不會激活負責地址設定功能的服務存取點SAP55,從而使主站無法設定從站地址。
同時,需要在閥門控制器的設備描述文件GSD文件中有這樣的語句:Set_Slave_Add_supp = 0
表示該從站禁止主站設定和改變地址。
PROFIBUS-DP支持的站地址由0到126共127個,可以通過改變8位撥碼開關的低7位設定。撥碼開關的最高位設定閥門處于遠程控制下還是本地控制下。作為一個實用的控制器,出于安全和可靠的考慮,除了遠程控制還要有本地的控制功能。本設計使得現場的操作人員可以禁止遠程控制而手動的操作閥門。在這種狀態下,閥門控制器會把從主站獲得的閥門運動控制命令拋棄掉,但仍然把閥門的各種狀態傳給主站,所以此時遠程的操作員會得知遠程控制失效,并仍然可以看到閥門的各種數據,但不能操作閥門運動。
4. 標識符設計及使用
標識符(Identifier)是一個PROFIBUS-DP產品的重要參數,一般為一個或幾個字節構成一個標識符,它表示了該產品在通訊時輸入和輸出的數據的寬度和特性。比如一個PROFIBUS-DP產品控制8個開關量,需要由主站提供這8個開關量的內容,那么該產品接受主站數據就是8位共一個字節的寬度。而該產品的標識符就必須描述出這種特性和寬度:一個字節。標識符會寫入產品的設備描述文件GSD文件,便于系統建立時組態。標識符也必須在SPC3初始化時寫入SPC3特定的緩沖區中,便于主站檢查驗證。
專用標識符用一個字節表示,編寫格式如下:
[align=center]

圖 2 專用標識符格式[/align]
專用標識符的低4位bit0 ~ bit3表示該設備數據輸入或輸出的數據寬度,數值0到15對應表示寬度為1到16個字節或字,而bit6則指明寬度數值的單位是字節還是字:0表示字節,1表示字;bit4和bit5兩位共同來表示以上寬度的數據是輸出數據,輸入數據,還是輸入/輸出數據,這里需要指出的是,在PROFIBUS-DP系統中,輸入和輸出是相對與主站而言的,由主站發送給從站的數據稱之為輸出數據,由主站自從站讀取的數據稱之為輸入數據。最高位bit7表示一致性程度,所謂一致性要求是指某一區域的數據要求同時寫入或同時讀入,具體系統中,就是要求主站在一次上載或下載中完成對有一致性要求的數據區域的讀或寫,而不能分成幾次來上載或下載。該位的定義為:0表示僅字節或字內部有一致性要求,1表示整個標識符定義的寬度都有一致性要求。
本設計中,閥門控制器的標識符定義為:B1H。也就是:長度為2,單位為字節,輸入/輸出,全部一致性要求。
該標識符在PROFIBUS-DP系統上電運行時,會由主站發送給從站,以求證實際的從站特性是否與主站數據集中的一致。從站設計者在編寫從站程序時,需要有特定的過程來比較從主站發來的標識符與自己的是否一致,并作相應回應。
此外該標識符必須在SPC3初始化的時候由中央處理器寫入SPC3特定的緩沖區:Read Config Buffer,該緩沖區由組織參數R_Read_Cfg_Buf_Ptr存放首地址,由R_Len_Read_Cfg_Data定義緩沖區長度。這樣做的目的也是為了遠程的主站查詢。
同時標識符也必須在GSD文件中說明,語句格式如下:
Module = "2 Bytes Input and Output" 0x31
EndModule
這兩個字節就是主站和閥門控制器數據交換時的內容,所以它們應該包含著閥門控制的命令和閥門的狀態。按照閥門控制的要求和閥門的功能,本設計對這兩個字節的結構做出定義。結構如下
[align=center]

圖 3 數據交換第一字節與第二字節[/align]
如圖所示,數據交換的第一個字節中,bit0和bit1定義閥門控制命令,閥門控制器收到由主站發出的數據,將會分析第一字節的這兩位,并根據這兩位的內容驅動閥門做相應動作。其余的位在主站讀取閥門控制器的狀態時有效,bit2和bit3表明閥門現在是否到達關和開的極限位置,bit4和bit5表示閥門目前的運動狀態,bit7表示閥門控制器目前的控制模式,控制模式是由上文提到的地址撥碼開關的最高位決定,其意義一致。
數據交換的第二字節bit0~bit6存放閥門打開程度,數值范圍為0~100,100表示全開,0表示全關。當主站由閥門控制器讀取該值時,表示目前閥門的開度;當主站向閥門控制器發送某值時,表示要求閥門開啟到該值開度。bit7保留。
5. 診斷功能的使用
所謂診斷功能是指PROFIBUS-DP規范定義的一種主站可以讀取自己所控制的從站的出錯信息和狀態信息的功能,是獨立于數據交換功能的另一項功能,發生于數據交換的間隙,由主站發起。
在PROFIBUS-DP規范已有的定義內,主站可以診斷從站有關通訊的出錯信息和狀態信息,比如:從站不能通過總線到達,響應不合理等。除此之外,PROFIBUS-DP規范還允許用戶使用擴展的診斷信息,通過對診斷信息的擴展用戶可以把自己定義的自己產品的出錯信息和狀態信息編入,這樣利用PROFIBUS-DP提供的可靠優化的通訊功能來實現具體的用戶要求,是PROFIBUS-DP產品設計者理所應當采取的措施。也正因如此,診斷信息設計也就成為PROFIBUS-DP產品設計的重要部分。
診斷信息包括兩個部分,PROFIBUS-DP標準診斷信息和擴展診斷信息。前者是診斷信息必須的部分,由固定的6個字節構成,存放著PROFIBUS-DP規范定義的標準出錯信息和狀態信息。后者是用戶根據自己開發的產品要求設定的,它又可以分為三級診斷:關于設備的診斷、關于標識符的診斷、和關于通道的診斷。這三級診斷分作三個字節塊在擴展診斷部分依次連續排列,其中每部分都有自己特定的首部字節作為該級診斷的開始標志。本設計的閥門控制器使用到了第一級擴展診斷,也就是關于設備的診斷。
具體在本設計使用的SPC3芯片上,首先在SPC3初始化時給診斷信息開辟專用的緩沖區,緩沖區有兩個,共有四個組織參數對其定義:R_Diag_Buf_Ptr1和R_Diag_Buf_Ptr2存放兩個診斷緩沖區的首地址,R_Len_Diag_buf1和R_Len_Diag_buf2定義兩個緩沖區的長度,兩個緩沖區的長度不同是允許的。
當需要使用診斷功能時,一般為閥門控制器發生了一定的事件需要通知主站,則在用戶持有的那個緩沖區內填入診斷信息。緩沖區的前6個字節,也就是診斷信息的前6個字節為標準診斷信息,用戶基本不需要賦值,除了第一個診斷字節的最后一位bit0,需要由用戶設置為1。該位為“擴展診斷位”,置1表示6個字節標準診斷之后跟有擴展診斷。所有使用擴展診斷的設計,該位都必須置位。
第7個字節為擴展診斷第一級關于設備診斷的首部字節,首部字節最高兩位固定為00,后6位存放關于設備診斷的塊長度,該長度包括首部字節本身,取值2到63。本設計的閥門控制器診斷事件較少,只需要1個字節存放關于設備的診斷信息,所以關于設備診斷的塊長度為2。最終閥門控制器的診斷信息長度為8個字節:“標準診斷6字節+首部字節1+設備診斷字節1”。
設備診斷字節8個位的分配如下:bit0對應閥門電機缺相事件,bit1對應閥門過轉矩事件,某位被置1表示對應事件發生;bit2~bit5放入一定的錯誤碼,這四位的錯誤碼對應的事件如下:
0000 無錯誤
0001 工作電壓不足
0010 AD采集不正常
0011 本地顯示不正常
0100 控制沖突
0101 控制命令錯誤
0110~1111 保留
為了實現以上的設備診斷字節分配,除了閥門控制器的用戶程序在相應事件發生下對正確的位做正確處理外,還需要在閥門控制器的設備描述文件GSD文件中有以下語句:
Unit_Diag_Bit(0) =“Lack power”
Unit_Diag_Bit(1) =“Over-moment”
以上兩句把bit0和bit1分配給相應事件。
Unit_Diag_Area =2-5
Value(0) =“No error”
Value(1) =“Low voltage”
Value(2) =“AD error”
Value(3) =“Display error”
Value(4) =“Control conflict”
Value(5) =“Command error”
Unit_Diag_Area_End
以上語句則把bit2~bit5分配給對應的錯誤碼。這樣就完成了對閥門控制器診斷信息的設計。
6. 結論
本設計的意圖在于工業現場總線PROFIBUS-DP技術與閥門控制工程實際要求的有效結合,突出實用性,也滿足閥門控制領域技術更新的要求。事實證明,閥門控制的遠程化和網絡化是一個重要的發展趨勢,現場總線技術在這一領域的應用也是切實可行的。
參考文獻
[1] Siemens AG..SPC3 and DPS2 User Description. Siemens AG in Fed Rep of Germany. 1998.
[2] 陽憲惠編. 現場總線技術及其應用[M].北京:清華大學出版社,1998.
[3] 王福來,吳世紅等. 采用SPC3的智能型PROFIBUS-DP現場總線接口的開發[J]. 電氣傳動,2000,2.