基于Ethernet現(xiàn)場(chǎng)總線的多協(xié)議網(wǎng)絡(luò)通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
圖7系統(tǒng)驅(qū)動(dòng)程序框圖
SERCOSIII協(xié)議初始化過(guò)程包括CP0~CP4五個(gè)階段,CP0~CP3為接口初始化的階段。CP4是正常通信階段。其初始化流程圖如圖8所示。CP0的作用是檢測(cè)環(huán)路是否閉合和確定環(huán)路的延時(shí)。在CPO階段,主機(jī)通過(guò)發(fā)送同步信息來(lái)檢測(cè)環(huán)路,當(dāng)檢測(cè)環(huán)路為閉合時(shí),系統(tǒng)進(jìn)入下一通訊階段CPI,在CP0階段的主要函數(shù)為void SendCP0(),它的作用是發(fā)送CP0階段的信息,在CP0階段MDT數(shù)據(jù)區(qū)40字節(jié)。AT數(shù)據(jù)區(qū)512字節(jié)。CPI是識(shí)別所有連接在環(huán)路上的伺服裝置,主站向環(huán)路發(fā)送包含待識(shí)別的伺服裝置地址的MDT與AT電報(bào),其中MDT與AT發(fā)送時(shí)間小于650/us(下同),當(dāng)環(huán)路上所有裝置都作出正確的應(yīng)答,則可以進(jìn)入下一個(gè)通信階段CP2。CPI階段的函數(shù)主要為void SendCPl(),功能為發(fā)送CPl階段的參數(shù),在該階段MDT、AT數(shù)據(jù)區(qū)均1280字節(jié)。CP2是通過(guò)非周期數(shù)據(jù)的傳輸,完成主站向各個(gè)伺服裝置發(fā)送周期通信所需要的配置參數(shù),實(shí)現(xiàn)過(guò)程與CPl階段相同,MDT中包含每個(gè)從機(jī)的地址及配置數(shù)據(jù),配置成功從站回復(fù)主站AT包作為應(yīng)答。在CP2階段的主要函數(shù)為發(fā)送函數(shù)void SendCP2()和參數(shù)配置函數(shù)void InitCP2Idn()。CP3是通過(guò)非周期數(shù)據(jù)傳輸設(shè)置各伺服裝置的運(yùn)行參數(shù),在CP3階段,主站向各從站發(fā)送MDT與AT報(bào)文,各伺服裝置都能接收本機(jī)報(bào)文后回復(fù)AT作為應(yīng)答,在CP3階段主要的函數(shù)為發(fā)送函數(shù)voidSendCP3()和參數(shù)配置函數(shù)InitCP3Idn()。CP4是正常的通訊階段,初始化CP4階段實(shí)時(shí)數(shù)據(jù)隊(duì)列函數(shù)InitCP4RTData()。在CP1~CP4的任何階段中,從站只要超過(guò)65ms沒(méi)有收到新的MDT0報(bào)文,則自動(dòng)切換到CP0階段。且在CPI~CP4的任何階段中,從站收到主站發(fā)送的切換到CP0階段的MDT報(bào)文,則強(qiáng)制切換到CP0階段。
圖8 SERCOSIII初始化流程圖
圖9 任務(wù)調(diào)度
2.4 kernel對(duì)象設(shè)計(jì)
為實(shí)現(xiàn)實(shí)時(shí)性的要求,處理器面對(duì)多任務(wù)時(shí)能及時(shí)有效地處理各個(gè)任務(wù),因此軟件系統(tǒng)采取任務(wù)的優(yōu)化處理與調(diào)度也即核心對(duì)象所要做的工作,其任務(wù)調(diào)度機(jī)制如圖9所示。
評(píng)論