【摘要】 本文提出以ARM芯片和PROFIBUS—DP協(xié)議芯片為核心的從站接口設(shè)計,采用STM32F103處理用戶程序,由VPC3+C協(xié)議芯片實現(xiàn)PROFIBUS—DP協(xié)議的轉(zhuǎn)換。從硬件和軟件設(shè)計兩個方面闡述從站接口的設(shè)計和實現(xiàn)方法。
【關(guān)鍵詞】 現(xiàn)場總線 PROFIBUS-DP從站 VPC3+C STM32F103
一、引言
現(xiàn)場總線是一種工業(yè)數(shù)據(jù)總線,近年來得到了迅速的發(fā)展?,F(xiàn)場總線有三種形式:Profibus—DP、Profibus—FMS、Profibus—PA,其中Profibus-DP以其靈活性和可靠性等優(yōu)點得到了世界范圍內(nèi)的廣泛應(yīng)用,但并不是每個設(shè)備都可以接到Profibus網(wǎng)絡(luò)中,這就使得為工業(yè)設(shè)備開發(fā)Profibus通信接口顯得尤為重要。
二、PROFIBUS-DP從站接口設(shè)計的整體思路
PROFIBUS—DP用于分散外設(shè)間高速數(shù)據(jù)傳輸,適用于加工自動化領(lǐng)域。Profibus的傳輸速率為96~12kbps,最大傳輸距離在12kbps時為1000m,可用中繼器延長至10km,最多可接 127個站點。Profibus協(xié)議模型中第一層是物理層,第二層是數(shù)據(jù)鏈路層,三至六層未使用,第七層是應(yīng)用層,最后是用戶層。Profibus—DP從站接口選用STM32F103處理用戶發(fā)送的數(shù)據(jù),協(xié)議芯片VPC3+C處理Profibus—DP數(shù)據(jù)鏈路層的協(xié)議,通過RS485實現(xiàn)物理層通信。采用協(xié)議芯片不必去了解PROFIBUS-DP的具體細(xì)節(jié),只要了解協(xié)議的相關(guān)內(nèi)容,這樣使我們更方便的設(shè)計接口電路。本文設(shè)計的PROFIBUS-DP從站接口在總線控制系統(tǒng)中的大體框架。
三、PROFIBUS-DP從站硬件接口的設(shè)計
目前Profibus-DP從站開發(fā)有兩種方案:(1)單片機+軟件,但需要了解通信中的大量的協(xié)議;(2)單片機+Profibus通信的專用芯片,該芯片集成了Profibus通信所有的協(xié)議,避免對大量協(xié)議的掌握。本文選用第二種方案,設(shè)計的從站接口主要包括以下五部分:電源模塊、AD/DA轉(zhuǎn)換模塊、STM32F103與VPC3+C接口模塊、RS485轉(zhuǎn)換模塊和從站地址選擇電路。從站采用反激式開關(guān)電源供電,可提供3.3V和5V兩路隔離的電源。PROFIBUS-DP 從站通采用4~20mA/1~5V 模擬信號傳輸方式,對4~20mA 的輸入信號通過AD轉(zhuǎn)換進(jìn)行校準(zhǔn)和量程變換后將其轉(zhuǎn)換為DP 總線輸入數(shù)據(jù),對DP 總線輸出數(shù)據(jù)通過DA進(jìn)行校準(zhǔn)和量程變換轉(zhuǎn)換為1~5V 的輸出信號。PROFIBUS-DP支持的站地址由0到126共127,采用一個八位撥碼開關(guān)防止尋址過程發(fā)生地址的沖突。
3.1微處理器與VPC3+C接口
STM32F103是增強型32位Cortex-M3,6K字節(jié)至20K字節(jié)SRAM,多達(dá)80個快速IO口,所有IO口可以影像到16個外部中斷。VPC3是用于從站開發(fā)的通信協(xié)議芯片,它支持3.3V和5V電壓的供電,并且包含Profibus通信的全部協(xié)議,即不用考慮電源轉(zhuǎn)換問題也減少對協(xié)議的掌握。VPC3內(nèi)部集成4KB的雙口RAM,有16個沒有優(yōu)先級的中斷存儲。VPC3與STM32F103的通信有兩種模式:Intel模式和Motorola模式。本文選擇Intel模式,VPC3相當(dāng)于STM32F103的外部RAM,通過雙口RAM交換數(shù)據(jù),VPC3內(nèi)部有地址解碼器,所以AB8—AB10接地。DB7—DB0可用作數(shù)據(jù)地址復(fù)用總線產(chǎn)生低八位數(shù)據(jù)和地址,AB0—AB3產(chǎn)生高四位地址,VPC3的片選信號由AB4—AB7控制,當(dāng)AB4—AB7全為零時,選中VPC3。由于VPC3的AB0—AB7是地址數(shù)據(jù)復(fù)用總線,所以與STM32F103的IO連接是通過鎖存器相連,鎖存器的時鐘控制端通過反相器與VPC3的ALE控制,地址總線直接與STM32F103的IO口相連。VPC3的復(fù)位引腳與STM32F103的PC9相連,可以通過軟件復(fù)位VPC3。VPC3與STM32F103進(jìn)入數(shù)據(jù)交換狀態(tài)時,VPC3的引腳XDATAEXCH輸出低電平,利用這個特點在該引腳與VDD直接接個LED指示燈,當(dāng)進(jìn)入數(shù)據(jù)交換狀態(tài)時,指示燈就會被點亮。電路圖如1所示。
3.2VPC3與RS485接口
Profibus通信的物理層為RS485,VPC3芯片本身不帶RS485接口,所以本設(shè)計中采用IL3685芯片實現(xiàn)RS485信號轉(zhuǎn)換。IL3685是現(xiàn)場總線隔離收發(fā)器芯片,具有RS485收發(fā)和隔離功能。使用一片IL3685設(shè)計方法可替代光耦+ RS485通訊芯片,簡化了電路設(shè)計。IL3685一側(cè)與VPC3相連,另一側(cè)通過DB9與Profibus—DP電纜相連。VPC3的請求發(fā)送端口、串行發(fā)送端口、串行接收端口與IL3685直接相連。IL3685有一個特殊的引腳ISODE與DB9的DTR相連。
四、PROFIBUS-DP從站軟件的設(shè)計
PROFIBUS-DP從站的軟件設(shè)計主要是完成現(xiàn)場總線通信控制和處理用戶數(shù)據(jù),VPC3中集成的Profibus—DP狀態(tài)機,可以描述Profibus—DP站的各種情況下的行為,STM322F103的主要任務(wù)是初始化和啟動VPC3+C以及處理中斷診斷事務(wù),轉(zhuǎn)存通過VPC3接收來自主站的數(shù)據(jù),同時把外圍設(shè)備發(fā)出的數(shù)據(jù)通過VPC3反饋給主站,然后通過主站的組態(tài)參數(shù)發(fā)送控制命令給外圍設(shè)備,使得外圍設(shè)備發(fā)生相應(yīng)的變化,從而完成一個程序的循環(huán)過程。該軟件部分主要有以下幾個模塊組成:
(1)主程序:主要完成STM32F103初始化設(shè)置波特率、系統(tǒng)時鐘、中斷方式等;VPC3+C初始化設(shè)置中斷允許、設(shè)置地址/參數(shù)/配置緩沖區(qū)及長度;ADC、DAC初始化,設(shè)置從站地址;
(2)A/D、D/A調(diào)整模塊:主要包括數(shù)據(jù)的采集、數(shù)據(jù)的轉(zhuǎn)換,AD轉(zhuǎn)換結(jié)束讀取轉(zhuǎn)換數(shù)據(jù);
(3)通信模塊:主要指的是VPC3+C通過RS485與主站之間的通信;
(4)時鐘設(shè)置程序:包括串口波特率時鐘、AD/DA采樣時鐘;
(5)中斷模塊:主要是處理從站參數(shù)、組態(tài)數(shù)據(jù)檢測和從站地址選擇;
(6)頭文件:定義一些變量和宏接口,使得訪問VPC3寄存器更加方便。
主程序和中斷程序流程圖如下圖2所示。
五、結(jié)論
Profibus—DP用于主從設(shè)備間進(jìn)行快速、簡單的數(shù)據(jù)交換過程。本設(shè)計是為電源系統(tǒng)設(shè)計的,當(dāng)電源數(shù)值變化時,會把這種變化數(shù)據(jù)發(fā)送給VPC3,VPC3把數(shù)據(jù)轉(zhuǎn)換后通過RS485傳送給主站S7-300,S7-300接到信息后,經(jīng)行處理,將處理的結(jié)果反饋給VPC3,VPC3轉(zhuǎn)換成微處理器可以處理的數(shù)據(jù),微處理器接到數(shù)據(jù),發(fā)送給電源設(shè)備發(fā)生相反的變化,從而達(dá)到穩(wěn)定電源的目的。