熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > Profibus-DP智能從站開發過程中若干核心問題的探討

Profibus-DP智能從站開發過程中若干核心問題的探討

時間:2007-07-13 10:59:00來源:shixiang

導語:?國內參與DP總線產品研究與開發的單位很多不能自成體系,主要是在開發過程中幾個核心問題沒有很好地解決
1 引言 隨著Profibus總線技術在我國的進一步普及,基于Profibus-DP協議的總線產品在市場上占據了越來越多的份額。自行開發含DP接口的從站產品具有重要的現實意義,國內參與DP總線產品研究與開發的單位很多,然而能夠自成體系的卻鮮見報道。究其原因,主要是在開發過程中幾個核心問題沒有很好地解決。這些問題主要集中在對Profibus-DP中斷機制的理解、SPC3固態程序的剖析、GSD文件的編制以及Profibus-DP網絡的組態幾個方面,本文將就這幾個問題逐一進行討論。 2 Profibus-DP的中斷機制 2.1 中斷機制 Profibus-DP協議中的中斷控制是通過協議芯片SPC3內的中斷控制器來實現的,當有指令報文到來或各種錯誤事件發生時,CPU會得到通知并進行相應的處理。該中斷控制器可以管理預定義的16種中斷事件,這些事件通過一個中斷輸出進行統一管理。該中斷控制器不具備中斷優先級,也不提供中斷矢量。中斷控制器內主要有4個寄存器:中斷請求寄存器IRR(Interrupt Request Register),中斷屏蔽寄存器IMR(Interrupt Mask Register),中斷寄存器IR(Interrupt Register)和中斷確認寄存器IAR(Interrupt Acknowledge Register)。該中斷控制器內部的工作原理示意如圖1。 所有等待處理的中斷都存儲在IRR寄存器內,個別的中斷可以通過設置IMR寄存器來禁止。IRR寄存器的輸入不受中斷屏蔽的影響,未屏蔽的中斷信號經過求和運算來觸發X/INT中斷。在調試DP從站時,可以在IRR寄存器種設置各種中斷信號來進行調試。所有經微處理器處理的中斷只能通過IAR寄存器刪除,相應地,需要將相應的位置“1”。如果一個新的中斷事件與先前的一個中斷事件同時加在IRR寄存器的輸入端,該新事件將被保持。如果處理器隨后使能一個屏蔽的中斷,它必須保證之前沒有中斷信號加在IRR寄存器的輸入端。為了安全起見,在使能中斷屏蔽前必須刪除IRR寄存器中的相應位。 [align=center] 圖1 Profibus-DP中斷機制[/align] 2.2 中斷相應 雖然在開發DP產品時無需對Profibus-DP的中斷機制進行修改,但深入了解該中斷機制對于剖析SPC3的固態程序具有重要的意義,因為該固態程序的框架就是基于Profibus-DP協議所定義的中斷機制。在實際運行過程中,DP從站內的微處理器主要對協議芯片SPC3的以下幾類中斷事件做出響應。 (1) Diag_Fetched:診斷數據被主站取走,此時MCU應發出一個User_Diag_Read_Cmd命令(通過讀RAM中的User_Diag_Read_Cmd單元實現),將用戶診斷緩沖器與MAC緩沖器互換,以將更新的用戶診斷數據提供給MAC層,供主站在必要時取用; (2) IndQ_Entry:新的事件信息進入指示隊列,在中斷處理時MCU應從指示隊列中讀出事件信息代碼,根據不同的事件做出反應。比如發生監視定時器到時事件,就將程序從數據交換狀態跳出,停止輸入數據的發送; (3) Go/Leave_Data_Exchange:進入或離開數據交換狀態。此時MCU應讀取SPC3的狀態寄存器,得知具體是進入還是離開。若是進入數據交換狀態,應當準備輸入數據以便向主站發送;若是離開則停止輸入數據的發送; (4) New_Prm_Data:新的參數報文。MCU從用戶參數緩沖器中讀出參數數據, 然后對從站需要設置的參數進行設置,根據設置的結果是否正確向SPC3發出一個肯定的User_Prm_OK_Cmd或一個否定的User_Prm_Not_OK_Cmd命令,SPC3便會對此參數報文向主站作出肯定或否定的應答; (5) New_Cfg_Data:新的組態報文。MCU從用戶組態緩沖器中讀出組態數據,然后根據組態信息設置從站,根據組態的結果是否正確向SPC3發出一個肯定的User_Cfg_OK_Cmd或一個否定的User_Cfg_ Not_OK_Cmd命令,SPC3便會對此組態報文向主站作出肯定或否定的應答; (6) Get_Cfg_Buffer_Change:讀組態緩沖器改變,即用戶讀組態緩沖器與MAC讀緩沖器互換。在中斷處理時MCU應通過讀User_Cfg_Buffer_Ptr得到新的用戶讀組態緩沖器的指針,以將從站的組態信息寫入新的用戶讀組態緩沖器中。此中斷由User_Get_Cfg_Read_Cmd命令對主站組態報文的User_Cfg_OK_Cmd肯定引起; (7) Diag_Buffer_Changed:診斷緩沖器改變,即用戶診斷緩沖器與MAC診斷緩沖器互換。在中斷處理中MCU應通過讀User_Diag_Buffer_Ptr得到新的用戶診斷緩沖器的指針,以將從站的診斷信息寫入新的用戶診斷緩沖器中,此中斷由User_Diag_Read_Cmd命令引起; (8) DX_OUT:新的輸出數據。此時應發出一個User_New_Dout_Cmd命令,并得到新的U緩沖器的指針,從而用戶可以根據這個指針得到存入其中的新的輸出數據,同時MCU應發出一個User_New_Din_Cmd,將U輸入數據緩沖器變為N輸入數據緩沖器,同時得到新的U緩沖器的指針,這樣便將用戶的輸入數據發送給主站,并得到新的U緩沖器以準備新的輸入數據。 所有的中斷事件協調組合在一起,就構成了Profibus-DP的狀態機,該狀態機模型如圖2: [align=center] 圖2 Profibus-DP狀態機模型[/align] 3 SPC3固態程序的剖析 使用西門子公司提供的協議芯片SPC3可以較容易地設計Profibus-DP從站的硬件電路,相對而言從站的軟件設計要相對復雜,而軟件設計的關鍵是利用開發包中提供的SPC3協議芯片固態程序,因此解析該固態程序是另一個需要關注的問題。 3.1 SPC3固態程序流程 由于SPC3芯片內的寄存器是完全格式化的,固態程序可實現在SPC3內部寄存器與應用接口之間的連接,為用戶提供了宏接口,使用固態程序可大大節省用戶的開發的時間。SPC3固態程序包使得用戶無須直接操作寄存器和計算存儲空間。固態程序中包含的各程序模塊有: (1) 主程序SERSPC3.C,主要完成SPC3初始化,啟動,外部信號處理,發送和接收數據和診斷; (2) 中斷模塊INTSPC3.C,主要處理分配從站參數、組態數據檢查和從站地址設定; (3) 函數DPS2SPC3.C,這些函數根據組態數據計算輸入輸出數據長度,輔助緩沖區分配,緩沖區初始化,設置IO數據長度,各緩沖區更新函數等; (4) 變量定義和宏接口DPS2USER.h,宏接口使用戶能夠方便地訪問SPC3的各個寄存器。 SPC3在接收到由Profibus-DP主站傳送的不同輸出數據時,會產生輸出標志位(位于中斷請求字單元),CPU通過在應用循環中查詢標志位來接收主站數據,對于實時性要求嚴格的系統,則應采用中斷方式進行輸出數據的處理。主程序首先利用開發包中的DPS2對SPC3進行初始化,允許外部中斷INT0,設置INT0為高優先級及開中斷,然后啟動SPC3,通過SPC3進行主站和從站的數據交換以及處理診斷。SPC3固態程序的流程示意如圖3: [align=center] 圖3 SPC3固態程序流程圖[/align] 3.2 SPC3初始化子程序 在SPC3正常工作之前,首先需要進行初始化,以配置需要的寄存器,包括設置協議芯片的中斷允許,寫入從站識別號和地址,設置SPC3方式寄存器,設置診斷緩沖區,參數緩沖區,配置緩沖區,地址緩沖區,初始化長度,并根據以上初始值得出各個緩沖區的指針和輔助緩沖區的指針。根據傳輸的數據長度,確定輸出緩沖區,輸入緩沖區及指針。 初始化程序用以實現以下各項功能: (1) SPC3硬件復位:應用程序用RESET復位SPC3,初始化內部RAM及復位微處理器; (2) 編譯器設置:針對選用的微處理器選用合適的編譯器,用#define DPS2_SPC3激活DPS2接口; (3) 設置SPC3中斷屏蔽寄存器:宏DPS2_SET_IND( )激活SPC3中斷觸發,包括從站地址改變,組態數據檢查,參數檢查中斷; (4) SPC3內部看門狗設置:用戶看門狗用于確保在微處理器出現故障時,SPC3能在DPS2_SET_USER_WD_VALUE(X)設定的時間內進行數據通信后,時間完后則離開數據交換通信狀態,只要微處理器沒有問題,則需不斷地用DPS2_RESET_USER_WD重新觸發看門狗電路; (5) 設備標識碼設置:在啟動過程中,應用程序讀取標識碼,并將其傳送到SPC3芯片中; (6) 設置響應時間:如果某些應用需要,用戶可以通過DPS2_SET_MINTSDR(X)為SPC3設置最小的從站響應時間; (7) 緩沖區初始化設置:用戶必須確定DPS2_BUFINIT結構體中定義的各個用于信息交換的緩沖區的長度,這些緩沖區長度決定了SPC3中各個數據緩沖區的長度,這些緩沖區占用SPC3雙口RAM的空間,因此不能超過緩沖區總長度。用宏SPC3_INIT( )或Dps2_buf_init( )函數將DPS2_BUFINIT初始化后的結構體指針作為參數,根據結構體中的數據在SPC3的RAM中分配各緩沖區,檢查各個緩沖區的最大長度,并返回緩沖區初始化后的測試信息; (8) 波特率控制設置:用DPS2_SET_BAUD_CNTRL( )宏,可以設置波特率控制模式。在此監視定時值過后,如果沒有有效的信息被接收,SPC3將啟動波特率搜索BAUT RATE RESEARCH功能。如果定時監視器被啟用,且DP從站檢查到DP主站有故障,則本地輸出數據被刪除或進入規定的安全狀態。監視定時器的時基為10ms,其時間范圍為10ms~650s。 3.3 接收主站輸出數據子程序 Profibus-DP主站和SPC3通過默認的服務訪問點交換數據,在此過程中SPC3需要完成的任務主要包括以下3步: (1) SPC3將輸出數據寫入D緩沖區中,且交換D和N緩沖區中的數據; (2) 產生DX-Out中斷; (3) 用戶通過交換N和U緩沖區中的數據,從U緩沖區中獲取輸出數據。 第1步由SPC3自動完成,用DPS2_POLL_IND_ DX_OUT( )讀SPC3的中斷請求寄存器查詢中斷事件。當為真時,表示SPC3接收到Write_Read_Data報文,并使N緩沖區中的輸出數據有效。用宏DPS2_OUTPUT_UPDATE( )更新輸出緩沖區,即將N緩沖區中的數據送到U緩沖區中。輸出數據中并不包括輸出數據的長度,但必須和DPS2_SET_IO_DATA_LEN( )定義的數據長度一致,當長度不一致時,從站將會返回到等待參數賦值狀態,輸出數據緩沖區的長度在初始化部分程序中。 該部分程序核心代碼如下: if (DPS2_POLL_IND_DX_OUT( )) { DPS2_CON_IND_DX_OUT( ); user_output_buffer_ptr = DPS2_OUTPUT_UPDATE( ); for (i=0; ioutp_data_len; i++) { (*((io_byte_ptr)+i))=(*(((UBYTE SPC3_PTR_ATTR*) user_output_buffer_ptr) + i)); } } 3.4 發送從站輸入數據子程序 在輸入數據發送前,用戶主程序首先要宏DPS2_GET_DIN_BUF_PTR( )取得輸入緩沖區的指針,用宏DPS2_INPUT_UPDATE( )用戶可以重復地將輸入數據從用戶端傳送到DPS2,并取得可用的輸入緩沖區指針,用于接收新的輸入數據。輸入數據中并不包括輸入數據的長度,但輸入數據必須和DPS2_SET_IO_DATA_LEN( )定義的長度一致。 處理輸入數據,將輸入數據從外設寫入緩沖區核心程序段如下: for (i=0; iinp_data_len; i++) { *(((UBYTE SPC3_PTR_ATTR*) user_input_buffer_ptr) + i) = *((io_byte_ptr) + i); } user_input_buffer_ptr = DPS2_INPUT_UPDATE( ); 3.5 診斷數據發送子程序 主站和SPC3通過服務訪問點SAP60處理診斷數據,SPC3需要完成的任務主要包括以下幾點: (1) 用戶將外部診斷數據保存在diag_buffer中; (2) 由NEW_DIAG_CMD啟動診斷數據的傳送; (3) 用"Diag_buffer_changed"確認診斷數據已傳送; (4) 設置Diag_Flag,下一個讀寫周期將由高優先權響應新的診斷請求。 診斷用戶在外部診斷數據輸入之前,需要用宏DPS2_GET_DIAG_BUF_PTR( )取得可用的用戶診斷數據緩沖區指針,可將用戶診斷信息和狀態信息寫入到此緩沖區中從第7個字節開始的存儲空間中,前6個字節為總線標準指定的的診斷頭。用DPS2_SET_DIAG_LEN( )宏指定診斷數據的長度,診斷緩沖區長度范圍為6~244字節,此診斷數據長度包括6個字節固定診斷數據和從第7個字節開始的外部用戶診斷數據。設定診斷數據長度宏必須在接收到可用的診斷緩沖區指針以后,才能被調用。 用宏DPS2_DIAG_UPDATE( ),可以將新的外部診斷數據傳給SPC3中的用戶診斷緩沖區,并返回一個新的診斷數據緩沖區指針。SPC3接收到New_Diag_Cmd診斷發送請求后,SPC3將用戶診斷緩沖區的數據送到診斷發送緩沖區,并使原用戶診斷緩沖區為可用狀態。由于SPC3的發送診斷緩沖區在數據發送完成后,不會自動變成有效狀態,用DPS2_POLL_IND_DIAG_BUFFER_CHANGED( )查詢到診斷緩沖區的數據發送完成后,用戶需要置診斷緩沖區可用標志位。如果沒有外部診斷數據傳送, 或在診斷數據被傳出前被刪除,SPC3用6字節的從站診斷數據響應來自Profibus-DP主站的診斷請求, 這6字節的診斷數據包括3個字節的從站狀態數據,發診斷請求的主站地址,從站設備標識號。 診斷處理程序核心程序段如下: if (DPS2_POLL_IND_DIAG_BUFFER_CHANGED( ) ) { DPS2_CON_IND_DIAG_BUFFER_CHANGED( ); user_diag_buffer_ptr = DPS2_GET_DIAG_BUF_PTR( ); user_diag_flag = TRUE; } 4 現場設備GSD文件的編制 為了實現Profibus-DP現場設備的快速組態,必須提供該產品可靠的電子設備數據單。Profibus-DP設備的特性均在電子設備數據單中具體說明,電子設備數據單也稱為電子設備數據庫文件GSD。標準化的GSD數據將通信擴大到操作員控制級,使用基于GSD的組態工具可將不同廠商生產的設備集成在同一總線系統中,即簡便又可靠。GSD文件大體上可以分為三部分: 4.1 一般規范 該部分包括生產廠商和設備的名稱,硬件和軟件的版本狀況,支持的波特率,可能的監視時間間隔以及總線插頭的信號分配; 4.2 DP主站有關的規范 該部分包括只適用于DP主站的各項參數(如連接從站的最多臺數或上裝和下裝能力),該部分對從站沒有規定; 4.3 DP從站有關的規范 該部分包括與從站有關的一切規范(如輸入/輸出通道的數量和類型、中斷測試的規范以及輸入/輸出數據一致性的信息)。 GSD文件是由若干個行組成,每行都用一個關鍵字開頭,包括關鍵字及參數(無符號數或字符串)兩部分。GSD文件中的關鍵字可以是標準關鍵字(在PROFIBUS標準中定義)或自定義關鍵字,標準關鍵字可以被PROFIBUS的任何組態工具所識別,而自定義的關鍵字只能被特定的組態工具識別。GSD文件主要用于向組態工具提供從站的組態數據。 GSD文件標準規定中定義了標識不同功能的關鍵字以供組態軟件識別,一個實現16路開關量輸出的DP從站模塊的GSD文件示意如下(僅列舉了最重要的參數,其它一些參數的定義可依參考文獻2定義): #Profibus-DP ;支持Profibus-DP協議 Model_Name=“16_DO” ;從站設備名稱 Ident_Number=0x18 ;從站設備識別號(認證時得到) Protocol_Ident=0 ;僅支持DP協議 12M_Supp=1 ;支持12M的波特率 Max_Tsdr_12M=800 ;12M波特率時最長響應時間為800μs Max_Diag_Data_Len=8 ;最大用戶診斷數據長度 Unit_Diag_Bit(0)=“external device not present” ;診斷位0表示的診斷信息 Unit_Diag_Bit(1)= “external device detects fault” ;診斷位1表示的診斷信息 Module=“Module1”0x23 ;定義16路開關量輸出模塊 EndModule ;模塊定義結束符 類似地,用戶可以根據設備廠商提供的設備相關參數編制GSD文件。GSD文件將數據通信網絡擴大到操作員控制級,基于GSD文件的組態軟件提供了友好的用戶界面。 5 Profibus-DP網絡組態 調試與檢驗Profibus-DP產品前必須組建總線網絡,并進行網絡組態。通常的組態方法有兩種:一種是使用COMPROFIBUS組態軟件組態,該方法較為簡便但只能實現簡單的應用,適用于初級用戶或開發從站產品時使用;另一種是使用STEP7軟件進行組態,組態過程較為復雜但能夠實現較為復雜的應用,組態本身也成為用戶程序中的一部分。在實際應用中,應針對不同的需求選擇合適的組態方法。鑒于篇幅限制,本文只討論常用的STEP7組態方法。 5.1 網絡硬件組態 組態一個基本的Profibus-DP網絡所需的模塊包括:電源(PS307/10A),CPU(S7-300系列),CP342-5(Profibus-DP主/從站接口模塊),IM365(數據輸入/輸出模塊,供多機架系統使用),中央機架(供安裝各模塊用)。硬件連接完成后需要安裝自行編制的GSD文件,在菜單條中,選擇OPTIONS→INSTALL NEW*.GSE FILES即可。 在組態硬件前必須首選建立一個STEP7項目,為了建立一個新的STEP7項目,首選應打開SIMATIC Manager,然后執行如下步驟: (1) 在菜單條中,選擇FILE-New…打開對話框以便建立一個新的項目; (2) 選擇“New Projet”按鈕,為這個新的項目設定“存儲位置(路徑)”; (3) 登錄新項目的名稱(如,S7-Profibus-DP),用“OK”確認并退出。 回到SIMATIC Manager的主菜單。S7-Profibus-DP對象文件夾的建立已經自動地生成了MPI對象。在項目屏幕的右半邊可以看到此MPI(多點接口)對象。每次建立一個新項目,STEP7就自動地生成一個MPI對象。MPI是CPU標準的編程和通信接口。 返回到名稱為S7-Profibus-DP項目的屏幕主菜單,選擇對象Profibus并右擊打開快捷菜單。選擇OPEN OBJECT調用圖形組態工具Net Pro。在屏幕的上部選擇Profibus子網絡,右擊打開快捷菜單,選擇命令OBJECT PROPERTIES…在“Properties-Profibus”對話框中打開“Network Settings”標簽。此時可以為Profibus子網絡設置所有有關的網絡參數。 此時需要設置的參數主要有:傳輸速率(transmission rate),總線行規(profile)和總線參數(bus parameters),其余的參數采用默認設置即可。所選用的傳輸速率將適用于整個Profibus子網絡,因此在Profibus子網絡上使用的所有站都必須支持所選用的波特率, 波特率可以在9.6kbit/s~ 12,000kbit/s之間選擇。波特率1500k bit/s推薦作為缺省設置;總線行規為不同的Profibus應用提供基準(缺省設定)。每個總線行規包含一個Profibus總線參數集, 這些參數由STEP7程序計算和設定,并考慮到特殊的配置、行規和波特率,這些總線參數對整個總線和連接在此Profibus子網絡中的所有節點都適用;所有總線參數值均以tBIT(位運行時間)表示,tBIT與波特率有關,二者間的關系可以列于附表: [align=center]附表 位運行時間與波特率關系 [/align] 5.2 組建Profibus-DP網絡 利用STEP7軟件來建立Profibus-DP網絡也十分方便,主要包括以下步驟: (1) 進入Hardware組態環境,將使用的各個模塊用鼠標拖拉的方式添加到機架相應的位置處; (2) 建立Profibus-DP網絡,設定主站,并將各從站掛接到網絡上; (3) 設置各主從站的地址; (4) 若一個機架容納不了所有的模塊,應相應地增加機架數目; (5) 選擇Station菜單下的Save and Compile命令,若無錯誤,就可以利用Download命令將硬件組態下載到PLC中。 利用CPU314、PS307/10A、IM365(SEND/RECEIVE)和CP342-2組態得到的Profibus-DP網絡示意如圖4。 [align=center] 圖4 Profibus-DP網絡組態示意[/align] 在設定各站地址時應注意有些類型的DP從站不提供用于設置Profibus地址的硬件開關,它們的總線地址是用2類DP主站功能Set_Slave_Add來指定的。由于它是集成的MPI在線接口,故STEP7組態軟件能夠處理此編址功能,這種地址分配的方法僅適用于支持Set_Slave_Add功能的DP從站設備。此外,從站設備的缺省地址由制造商設定為126。在歐洲標準EN 50170中,此地址已經被保留而不能由Profibus-DP用戶使用,但如果此從站是新的從制造商那里直接得來的設備,仍然可以見到此缺省值。 6 結束語 開發Profibus-DP從站的硬件設計比較簡單,相對復雜的是其軟件設計和聯機調試。筆者在DP從站開發過程中發現,很多情況下從站未能正常工作均是由于GSD文件編寫有問題或網絡組態錯誤造成的。本文針對這些問題進行了探討,并結合實例給出了解決方案,具有一定的參考價值。在開發DP從站產品的過程中,必須對這些問題給予十分關注。

標簽:

點贊

分享到:

上一篇:水工業機械設備的總體狀況與發展

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 余庆县| 鹤庆县| 渭源县| 金沙县| 南漳县| 双牌县| 彭阳县| 梁河县| 彰武县| 谢通门县| 高邮市| 永登县| 高青县| 安泽县| 乌苏市| 连州市| 松原市| 德保县| 文山县| 清水河县| 彭州市| 大关县| 尚志市| 萝北县| 青田县| 霍林郭勒市| 徐汇区| 孙吴县| 湄潭县| 沅陵县| 舒兰市| 永靖县| 张家口市| 穆棱市| 鹿邑县| 合阳县| 武川县| 平邑县| 汝南县| 康定县| 蒲江县|