基于Ethernet現場總線的多協議網絡通信系統設計與實現

圖7系統驅動程序框圖
SERCOSIII協議初始化過程包括CP0~CP4五個階段,CP0~CP3為接口初始化的階段。CP4是正常通信階段。其初始化流程圖如圖8所示。CP0的作用是檢測環路是否閉合和確定環路的延時。在CPO階段,主機通過發送同步信息來檢測環路,當檢測環路為閉合時,系統進入下一通訊階段CPI,在CP0階段的主要函數為void SendCP0(),它的作用是發送CP0階段的信息,在CP0階段MDT數據區40字節。AT數據區512字節。CPI是識別所有連接在環路上的伺服裝置,主站向環路發送包含待識別的伺服裝置地址的MDT與AT電報,其中MDT與AT發送時間小于650/us(下同),當環路上所有裝置都作出正確的應答,則可以進入下一個通信階段CP2。CPI階段的函數主要為void SendCPl(),功能為發送CPl階段的參數,在該階段MDT、AT數據區均1280字節。CP2是通過非周期數據的傳輸,完成主站向各個伺服裝置發送周期通信所需要的配置參數,實現過程與CPl階段相同,MDT中包含每個從機的地址及配置數據,配置成功從站回復主站AT包作為應答。在CP2階段的主要函數為發送函數void SendCP2()和參數配置函數void InitCP2Idn()。CP3是通過非周期數據傳輸設置各伺服裝置的運行參數,在CP3階段,主站向各從站發送MDT與AT報文,各伺服裝置都能接收本機報文后回復AT作為應答,在CP3階段主要的函數為發送函數voidSendCP3()和參數配置函數InitCP3Idn()。CP4是正常的通訊階段,初始化CP4階段實時數據隊列函數InitCP4RTData()。在CP1~CP4的任何階段中,從站只要超過65ms沒有收到新的MDT0報文,則自動切換到CP0階段。且在CPI~CP4的任何階段中,從站收到主站發送的切換到CP0階段的MDT報文,則強制切換到CP0階段。

圖8 SERCOSIII初始化流程圖

圖9 任務調度
2.4 kernel對象設計
為實現實時性的要求,處理器面對多任務時能及時有效地處理各個任務,因此軟件系統采取任務的優化處理與調度也即核心對象所要做的工作,其任務調度機制如圖9所示。


評論