李明強 劉小河 田雨聰
(1.北京信息科技大學自動化學院,北京 100192; 2.北京國電智深控制技術有限公司,北京 102200)
隨著先進工業技術的發展,現場總線技術已經廣泛地應用到世界工業自動化控制領域之中。在眾多的現場總線協議中,Profibus-DP 協議的應用最為廣泛,各類用途和型號的Profibus-DP 從站設備占據著巨大的市場份額。本文旨在設計一款成本低廉,性能穩定的Profibus-DP 智能從站,并能將通過壓力傳感器得到的壓力數據正確傳送至主站。
最常見的Profibus-DP 智能從站的實現有兩種方式。
第一種:單純“MCU+UART”方式??偩€數據通過UART 進入MCU,MCU 通過完全的軟件編程和必需的外圍硬件接口(存儲器等)來實現Profibus-DP 從站協議規定的狀態機。硬件上,這種方式需要有高性能的 MCU 的支持;軟件上,Profibus-DP從站狀態機的編程實現需要花費程序員大量復雜的工作。此方法設計的從站站點設計靈活,可以完全按照用戶的要求來實現一個內核小巧的、特定的通信平臺。
第二種:使用專門的Profibus-DP 從站ASIC 芯片。這類芯片內部已經搭建了完整的SAP 通信結構,負責處理與通信有關的狀態機控制、將數據打包成規定的幀格式、從總線上截取幀以及令牌環的管理等,使所有與總線通信有關的任務在ASIC 上得以完成,用戶便不再需要將過多的精力放在協議狀態機的軟件實現上,從而可以專注于應用層的設計,完成產品的特定功能設計。這種方式極大地減少了處理器和開發人員的負擔,節約開發時間。
綜上考慮,本文選用方案二所述方法來完成Profibus-DP 智能從站的設計。
適合構建從站的ASIC 芯片分為智能型和簡單型從站芯片兩種:智能型有APC3、SPC3、VPC3、SPC4-2、SIM11、DPC31 等,簡單型有LSPM2 和SPM2 等。本文設計的為智能型從站,所選擇的芯片為國產的APC3。
APC3 是一款用于Profibus-DP 智能從站開發的ASICs 芯片,支持Profibus-DP 標準中的DPV0 部分,可以自動識別9.6kbps~12Mbps 范圍內的波特率。在3.3V 工作電壓情況下,與工作在DPV0 模式下的VPC3 完全兼容,除工作電壓不同之外,與工作在DPV0 模式下的SPC3 完全兼容。APC3 支持Intel和Motorola 兩種處理器接口模式,通過兩個模式選擇引腳可以進行接口模式的配置。通過8 位數據總線和11 位的地址總線,用戶可以直接操作內部雙口RAM。APC3 需要外部提供固定48MHz 的時鐘,經內部分頻后能夠輸出24M/12M 的時鐘給外部處理器。通過中斷請求寄存器可以獲各種外部事件,從而得到相關的數據,如擴展參數數據等。
APC3 內部的雙口RAM 可視為MCU 的一個簡單外部RAM,MCU 可以直接對其進行尋址和數據存儲。1.5kbyte 大小的雙口RAM 被分為192 個段,每個段包括8 個字節。軟件對雙口RAM 的操作以段為單位。Profibus-DP 從站的狀態機完全由APC3完成,因此用戶可以直接從組態時已經分配好的各個數據緩沖區中直接獲取報文中的相關數據,而不必通過花大量時間分析報文來獲得。
系統硬件總體結構如圖1所示??刂坪诵臑橐夥ò雽w公司的 STM32F103VET6 嵌入式控制芯片,該芯片擁有128kByte 的程序存儲器,運行速度可達72MHz,片內集成了3 路波特率可達4.5Mbit/s的UART 接口,內存最大可達20KB,另外芯片I/O接口豐富,具有DMA 和FSMC 模塊,完全滿足設計需求。
專用的Profibus-DP 總線連接器將差分信號送至485 芯片,得到的串行數據送至APC3 進行協議數據拆分保存,STM32 通過操作三種總線按照一定的時序和周期將APC3 內的緩沖數據取走,繼而使得STM32 內應用層軟件得以運行。在接收到主站指令后,STM32 內部的A/D 模塊讀取壓力傳感器電壓值,轉換成相應的模擬量數據后通過APC3 應答給主站。為了使用方便,設計放置了一個8 位撥碼鍵盤來設置從站自身的固定地址,由于Profibus-DP 協議規定從站地址為0~127,所以只用到了按鍵的低7 位,第8 位可做擴展功能使用。將STM32 芯片的UART1 引至RJ11 接口,用以在編程時輸出調試信息,并在程序運行時不斷輸出自定義的設備狀態信息,以便對設備進行實時監視。系統供電來自外部輸入的5V 電源。

圖1 系統整體結構功能框圖
協議芯片APC3 處于磁隔離芯片ADM2486 和主控芯片之間,完成報文的自主發送和接收工作,硬件連接如圖2所示[4]。
設計采用ADI 公司生產的ADM2486 作為系統與總線的隔離芯片,其具有高達2500Vrms 的高壓隔離性能,最大傳輸速率為20Mbps,可配置為半雙工或全雙工模式,總線最大節點數可達50 個,支持Profibus-DP 現場總線。將其RE 引腳接地,使從站一直處于接收監聽總線數據狀態,另外三個引腳與APC3 相應引腳連接,A、B 線與DB9 規定的引腳相連。
將APC3 的9 腳接地,使APC3 工作于Intel 接口模式,即數據總線和地址總線復用模式,8 數據總線分時復用為地址總線的低8 位,原地址總線的高3 位接地[5]。APC3 的3 腳接地,使得7 腳可以輸出12MHz 的方波作為STM32F103 的外部時鐘源之用。如果APC3 正確進入DATA_EXCH(數據交換)狀態,13 腳連接的發光二極管將會亮起以進行提示。中斷信號、復位信號、讀寫控制信號都與STM32F103 相應管腳連接。
系統軟件編程的主要任務是APC3 芯片的初始化、電壓采集處理及傳輸、從站的診斷以及中斷程序的處理等。程序流程圖如圖3所示。
初始化分為系統資源初始化和APC3 芯片初始化。系統資源初始化主要完成對本設計所用到的系統資源,諸如ADC、UART、GPIO、SYSCLK、TIMER、FSMC 等模塊的初始化工作。

圖3 系統整體流程圖
APC3 的初始化相對復雜,主要需要完成與從站相關的基本信息及功能相關寄存器的配置、APC3內部數據緩沖區指針的計算以及外部中斷相關的各種定義。這些配置信息都保存在APC3 內存中地址從0X00H 到0X3FH 的區域中,之后的從0X40H 到0X5FFH 區域中以既定數據存儲結構保存用戶與主站間的交互數據。
Intel 操作模式下,APC3 內存中從地址0X00H到0X15H 保存處理器參數,從0X15H 到0X3FH 存儲組織參數。處理器參數包括對模式寄存器0/1、中斷寄存器和狀態寄存器等的設置,組織參數用以設置從站的設備地址、生產廠家ID、輸入輸出緩沖區數據指針及長度等信息。這些配置信息都被寫到從站的GSD 配置文件中,以便于使用者使用主站對其進行進一步配置。從站配置完成后,主站就可以同從站進行周期性的數據交換,主要完成以下三種服務:Read_Inp(讀從站輸入數據)、Read_Outp(讀從站輸出數據)、Data_Exchange(發送和接收被主站初始化的各參數以及與各從站的用戶數據)。
MCU 內部的ADC 模塊根據主站的需求適時對壓力傳感器電壓值進行采樣,經過數字濾波和模擬量計算后,計算得到實時的壓力值。隨后,MCU 將壓力值數據寫入到APC3 內部的輸入數據緩沖區,APC3 將自動將數據打包,以應答幀的形式將數據送上Profibus-DP 總線,繼而送至主站。在APC3 初始化和運行的階段,主站會隨時發送診斷報文給從站,因此還要求從站能組織診斷報文,在需要的時候送往主站,這些都在MCU 中完成。
在設備的運行過程中,隨時可能出現一些意外的情況導致從站退出 DATA_EXCH 狀態而進入WAIT_CFG 或者WAIT_PRM 狀態,此時,MCU 應該重新對APC3 進行初始化操作以期回歸正常。
從站設計過程中使用了兩個輔助設計軟件:DPMasterSIM(模擬主站軟件)、ProfibusViewer (Profibus-DP 總線監視軟件)。DPMasterSIM 軟件模擬了一個Profibus-DP 主站的DP-V0 的功能,能初始化從站并能與從站進行周期性數據交換。ProfibusViewer 軟件能監視總線上的數據流。

圖4 測試結果
經測試,通過從站配置和組態,主站和該從站之間能建立起有效的數據通信。測試結果如圖4所示,組態后設備地址為16,診斷字節長度為6,輸入和輸出字節長度均為4。從設備診斷選項卡的從站狀態欄可知從站已經正確進入了DATA_EXCH 狀態,從輸入數據選項卡右側數據欄可知主站能正確 接收到從站測得的壓力值。同時,可以在輸出數據選項卡中點擊“數據輸出”按鈕來使主站向從站輸出右側數據欄內用戶自定義的數據,以便獲得更高的應用靈活性。
[1] 侯維巖,費敏銳.Profibus 協議分析和系統應用[M].北京: 清華大學出版社,2006: 22-76.
[2] 孟靜靜.Profibus 與Profinet 網絡結構的研究與應用[D].蘭州: 蘭州理工大學,2011.
[3] 張強.采用SPC3 設計Profibus-DP 智能從站[J].自動化儀表,2005,26(3): 15-18.
[4] 鄭源濱.智能分析儀表中 Profibus-DP 接口的研發[D].北京: 華北電力大學:北京,2011.
[5] 閻松明.基于Profibus-DP 分布式智能從站設計與研究[D].南京: 南京理工大學,2008.
[6] 姚旺.Profibus-DP 從站設計及其在人防工程中的應用研究[D].哈爾濱: 哈爾濱工業大學,2010.
[7] 郭彥青,姚竹亭.基于Profibus-DP 總線的單主站/單從站測試網絡建設[J].計量與測試技術,2005,32(11): 24-25,27.
[8] 劉成俊,王善永.基于Profibus 的水電廠分布式測控裝置[J].水電自動化與大壩監測,2007,31(1): 2-3.
[9] 劉波文,孫巖.嵌入式實時操作系統uC/OS-II 經典實例——基于STM32 處理器[M].北京: 北京航空航天出版社,2012.
[10] 姜日新,宋延民,張平,等.基于 VPC3+C 的Profibus-DP 智能從站設計[J].天津工程師范學院學報,2010,20(4): 14-17