《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 解決方案 > PROFIBUS-DP總線I/O設(shè)備的開發(fā)

PROFIBUS-DP總線I/O設(shè)備的開發(fā)

——基于XGate-DPS10的應(yīng)用——下篇(軟件設(shè)計(jì))
2010-11-03
作者:廣州致遠(yuǎn)
關(guān)鍵詞: SOC PROFIBUS-DP I/O

    如果說硬件是設(shè)備的軀體,那么軟件則是設(shè)備的靈魂。上期文章中詳細(xì)介紹了基于XGate-DPS10的總線I/O設(shè)備硬件設(shè)計(jì),,至此,,已構(gòu)建了一個(gè)完整的設(shè)備軀體。但是,,這個(gè)設(shè)備還不能正常運(yùn)行,因?yàn)樗€沒有靈魂,不知道自己該做什么,,怎么做。本期文章將介紹如何使用XGate-DPS軟件庫設(shè)計(jì)設(shè)備軟件,,通過下面的介紹,,您可以快速地讓您的設(shè)備具有思想,最終成為一個(gè)功能完整的設(shè)備,。
1 XGate-DPS軟件庫結(jié)構(gòu)
    XGate-DPS系列模塊都提供了軟件庫,,用戶使用該軟件庫可以快速開發(fā)出設(shè)備軟件。圖 1是該軟件庫的結(jié)構(gòu)圖,,整個(gè)軟件架構(gòu)將XGate-DPS的資源展示給用戶,,這些資源包括輸入數(shù)據(jù)、輸出數(shù)據(jù),、用戶參數(shù)數(shù)據(jù),、配置數(shù)據(jù)、診斷數(shù)據(jù)等等,。圖中,,灰色背景部分表示需要用戶編程,。軟件庫針對(duì)8051、ARM平臺(tái)做了硬件相關(guān)的接口驅(qū)動(dòng),,一般不需要做任何更改,,如果使用新的硬件平臺(tái), 用戶需要修改UART驅(qū)動(dòng),。

    軟件庫自行完成UART數(shù)據(jù)傳輸控制,、命令發(fā)送和接收及相關(guān)分析處理,即圖中的“XGate數(shù)據(jù)處理”部分,;在“XGate數(shù)據(jù)處理”的上層,,提供了用戶接口函數(shù)API,用戶使用這些函數(shù)完成對(duì)XGate-DPS的操作,;一些基于事件的操作,,如DP-V1的讀寫和數(shù)據(jù)傳輸請(qǐng)求,“XGate數(shù)據(jù)處理”將通過回調(diào)方式獲取應(yīng)答和處理,;用戶應(yīng)用程序APP可以直接訪問XGate資源,,但是,必須使用API來更新這些資源,。
2 XGate-DPS軟件設(shè)計(jì)步驟
    用戶使用該軟件庫對(duì)XGate-DPS10的操作其實(shí)就是完成回調(diào)函數(shù),、使用API更新資源、訪問資源數(shù)據(jù),。整個(gè)設(shè)計(jì)遵循圖2所示的5個(gè)步驟,,每個(gè)步驟需要完成的工作在圖中作了注釋,其中,,大多數(shù)場合不需要步驟3,;在不使用DP-V1的情況下步驟4幾乎也是可以忽略的。

3 總線I/O設(shè)備的GSD文件
    GSD文件是設(shè)備描述文件,,當(dāng)一個(gè)設(shè)備確定了其功能和參數(shù)后,,GSD文件也就確定了。設(shè)備的GSD文件一般是通過修改示例GSD文件生成,,示例GSD文件中的大部分關(guān)鍵字和參數(shù)已經(jīng)確定而不需要修改,。本例中修改示例如下:
    Vendor_Name="ZY Ltd. Co.";//公司名,用戶自行修改
    Model_Name="總線I/O";//設(shè)備名稱,,也是組態(tài)時(shí)該產(chǎn)品的名稱
    OrderNumber="I/O20100801";//產(chǎn)品序列號(hào),,可按用戶名修改
    Module= "DO8 LEDs" 0x20;//模塊描述,組態(tài)數(shù)據(jù)0x20
表示1個(gè)字節(jié)輸出,,對(duì)應(yīng)了8位輸出開關(guān)量
    1
    Ext_Module_Prm_Data_Len=1
    Ext_User_Prm_Data_Ref(0)=2
    EndModule
    ……
    修改的內(nèi)容一部分是設(shè)備的名稱,、序列號(hào)等信息,另一部分是設(shè)備組態(tài)數(shù)據(jù)和用戶參數(shù)數(shù)據(jù)部分,。設(shè)備組態(tài)數(shù)據(jù)指示了設(shè)備的輸入輸出大小,,決定了通信數(shù)據(jù)結(jié)構(gòu),,組態(tài)數(shù)據(jù)的設(shè)置可以查看XGate-DPS10數(shù)據(jù)手冊(cè)的附錄;用戶參數(shù)數(shù)據(jù)是為了限定或指示設(shè)備數(shù)據(jù)的范圍或意義的,,更詳細(xì)的信息請(qǐng)參考《XGate-DPS10數(shù)據(jù)手冊(cè)》,。
4 APP設(shè)計(jì)及回調(diào)函數(shù)
    軟件庫提供了demo示例代碼,一個(gè)軟件庫基礎(chǔ)操作單元如圖3所示,。

    在使用軟件包前,,首先要配置cfg.h頭文件的宏定義,這包括與硬件相關(guān)的寄存器,、緩沖區(qū)大小,、設(shè)備屬性等的定義。
    使用軟件包,,用戶沒有必要去考慮如何與模塊通信,,也不必了解PROFIBUS技術(shù)細(xì)節(jié),只需要關(guān)心設(shè)備功能的實(shí)現(xiàn)及如何組織數(shù)據(jù),。一個(gè)典型的前后臺(tái)用戶程序框圖如圖4所示,。

    軟件包中有兩個(gè)非常重要的函數(shù)DataUpdate()和RecvProcess(),調(diào)用這兩個(gè)函數(shù)實(shí)現(xiàn)數(shù)據(jù)的交換,。接收到的交換數(shù)據(jù)在sys.Out_data[]數(shù)組中,,要發(fā)送的數(shù)據(jù)需要放到sys.In_data[]中。例如:
    sys.In_data[0] = redDI();//將數(shù)字量輸入讀回放到
sys.In_data緩沖區(qū)中
    DataUpdate();//上傳輸入數(shù)據(jù)
    RecvProcess();//獲取輸出數(shù)據(jù)
    DriveDO(sys.Out_data[0]);//將來自主站的輸出數(shù)據(jù)DO
輸出到開關(guān)輸出
    放到sys數(shù)組中的數(shù)據(jù)順序與GSD文件描述的設(shè)備信息順序是一致的,。在本例中,,8位開關(guān)輸入量在sys.In_data[0]中,,而16位(2 B)計(jì)數(shù)器占用sys.In_data[1…2],;8位開關(guān)輸出在sys.Out_data[0]中。來自主站的用戶參數(shù)數(shù)據(jù)放在sys.User_para[]數(shù)組中,,用戶可以根據(jù)這些數(shù)據(jù)的意義設(shè)置設(shè)備相關(guān)功能,。
    XGate-DPS10支持用戶診斷,用戶可以調(diào)用SetDiag_Channel(),、SetDiag_Identifier(),、SetDiag_Device()等函數(shù)來完成用戶診斷的發(fā)送,在發(fā)送這些診斷前,,需要將診斷信息賦值到定義好的結(jié)構(gòu)體中,,例如:
    STRUCT_Diag_Channel diag_channel;//通道相關(guān)診斷
    diag_channel.Channel_ByteType=ChannelByte_In;//字節(jié)、
輸入通道
    diag_channel.Channel_Number=2;//通道號(hào)
    diag_channel.Channel_Type=ChannelTpye_byte;//類型為字節(jié)
    diag_channel.EerrType=STATUS_OVERVOLTAGE;
//錯(cuò)誤為過壓
    diag_channel.Module_Number=2;//通道所屬模塊
    SetDiag_Channel(0, &Diagbuf, &diag_channel);
//發(fā)送診斷數(shù)據(jù)
    當(dāng)XGate-DPS收到DP-V1讀寫請(qǐng)求,,也將產(chǎn)生一個(gè)中斷,,軟件庫將調(diào)用相應(yīng)的回調(diào)函數(shù)。在這些回調(diào)函數(shù)中應(yīng)首先判斷訪問的slot_num,、index的合法性,,基本格式如下:
    switch(slot_num)
    {
    case允許的:
        允許的處理;//在這里使用同樣格式進(jìn)一步對(duì)
index的合法性判斷,;完全合法則應(yīng)答請(qǐng)求數(shù)據(jù)
    break;
    case不允許的:
        返回訪問錯(cuò)誤;
    break;
    }
    PROFIBUS-DP從站應(yīng)用廣泛,使用通信接口模塊來開發(fā)總線I/O設(shè)備可以有效地縮短開發(fā)周期,、節(jié)省成本投入,,并在可靠性上得到保障。XGate-DPS10符合大多數(shù)應(yīng)用場合,,其高可靠性,、方便性、低成本性使其成為開發(fā)DP從站設(shè)備的首選,。
    廣州致遠(yuǎn)電子有限公司致力于嵌入式系統(tǒng),、工業(yè)通信網(wǎng)絡(luò)的技術(shù)研發(fā)與應(yīng)用推廣,自主研發(fā)了一系列PROFIBUS-DP網(wǎng)絡(luò)產(chǎn)品,,包括嵌入式模塊,、通訊卡、調(diào)試工具,、PC軟件,、OPC服務(wù)器等,并提供基于PROFIBUS總線的整套組網(wǎng)方案及應(yīng)用集成,。

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請(qǐng)及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]