FPGA和ARM的Profibus-DP主站通信平臺(tái)設(shè)計(jì)
2.2.2 Scheduler和FDL_Controller狀態(tài)機(jī)
Scheduler狀態(tài)機(jī)功能塊負(fù)責(zé)實(shí)現(xiàn)對(duì)Slave_Handler狀態(tài)機(jī)的控制。它向Slave_Handler狀態(tài)機(jī)發(fā)送從站輪詢控制信號(hào),控制其逐步與從站建立數(shù)據(jù)交換關(guān)系。
FDL_Controller狀態(tài)機(jī)由10個(gè)FDL狀態(tài)組成并在這些狀態(tài)間轉(zhuǎn)換,如圖3所示。本文引用地址:http://cafeforensic.com/article/191752.htm
邏輯令牌環(huán)的建立主要工作是對(duì)LAS和GAPL的初始化。LAS和GAPL的具體初始化流程如圖4所示。
LAS的形成標(biāo)志著邏輯令牌環(huán)初始化的完成。接下來就是邏輯令牌環(huán)運(yùn)轉(zhuǎn)的維護(hù)階段,令牌將按照LAS進(jìn)行循環(huán)傳遞,得到令牌的主站有權(quán)進(jìn)行對(duì)其所屬從站的輪詢。傳遞過程中主站將以固定的時(shí)間間隔,通過Request FDLStatus主動(dòng)幀來詢問自己GAP范圍內(nèi)的所有地址,并根據(jù)詢問結(jié)果修改LAS和GAPL。在主站活動(dòng)表生成之后,前驅(qū)站詢問ReqtJest FDL Starus,主站回復(fù)準(zhǔn)備進(jìn)入邏輯令牌環(huán),并從Listen_Token狀態(tài)進(jìn)入Active_Idle狀態(tài)(主站的前驅(qū)站會(huì)修改自己的GAP和LAS,并把該主站作為自己的后繼站)。主站在Active_Idle狀態(tài)監(jiān)聽總線,能夠?qū)ぶ纷约旱闹鲃?dòng)幀作應(yīng)答,但沒有發(fā)起總線活動(dòng)的權(quán)力,直到前驅(qū)站傳送令牌給它,它保留令牌并進(jìn)入U(xiǎn)se_Token狀態(tài),在此狀態(tài)下驅(qū)動(dòng)Scheduler狀態(tài)機(jī)工作。主站持有令牌后,首先計(jì)算上次令牌獲得時(shí)刻到本次令牌獲得時(shí)刻經(jīng)過的時(shí)間(即實(shí)際輪轉(zhuǎn)時(shí)間tRR),并與用戶設(shè)定的目標(biāo)輪轉(zhuǎn)時(shí)間tTR比較,如果tRR小于tTR,則主站開始處理傳輸任務(wù)。首先處理高優(yōu)先級(jí)傳輸服務(wù),所有高優(yōu)先級(jí)服務(wù)處理完畢后處理低優(yōu)先級(jí)服務(wù)。在這個(gè)過程中,每一個(gè)完整的報(bào)文循環(huán)之后,主站就重新計(jì)算tTR―tTH。若結(jié)果小于0,主站進(jìn)入PassToken狀態(tài),將令牌傳遞給后繼站,未完成的任務(wù)留到下一次令牌持有的時(shí)候再執(zhí)行。所有傳輸服務(wù)都完成后,不管是否有時(shí)間剩余,主站都交出令牌。如果主站接到令牌時(shí)發(fā)現(xiàn)tTR―tTHO,則只發(fā)送一個(gè)高優(yōu)先級(jí)報(bào)文,完成后交出令牌。主站在令牌傳遞成功后,進(jìn)入Active_Idle狀態(tài),直到再次獲得令牌。
評(píng)論