虛擬令牌傳éžä¸²è¡Œé€šè¨Šæ–¹å¼åœ¨æŽ§åˆ¶ç³»çµ±(tÇ’ng)ä¸çš„æ‡‰(yÄ«ng)用
時(shÃ)間:2008-09-10 10:23:00來(lái)æºï¼šfenghy
å°Ž(dÇŽo)語(yÇ”):?串行通訊端å£ï¼ˆ Serial Communication Port)在系統(tÇ’ng)控制的范疇ä¸ä¸€ç›´å 有極其é‡è¦çš„ä½ç½®
串行通訊端å£ï¼ˆ Serial Communication Port)在系統(tÇ’ng)控制的范疇ä¸ä¸€ç›´å 有極其é‡è¦çš„ä½ç½®ã€‚在工æ¥(yè)控制方é¢ï¼Œå…·å‚™é€šè¨ŠåŠŸèƒ½çš„æ™ºèƒ½è¨(shè)備最簡(jiÇŽn)單最常用的接å£ä¾¿æ˜¯RS232/RS485,簡(jiÇŽn)單易用。令牌環(huán)(Token Ring)是采用最為普é的無(wú)æ²–çªè¨ªå•(wèn)介質(zhì)訪å•(wèn)控制,環(huán)ä¸åªæœ‰ä¸€å€‹(gè)令牌在循環(huán)傳é€ã€‚任何一個(gè)節(jié)點(diÇŽn)è¦ç™¼(fÄ)逿•¸(shù)據(jù)ï¼Œå¿…é ˆç‰åˆ°å¾ªç’°(huán)的令牌通éŽ(guò)該站,然åŽå°‡æ•¸(shù)據(jù)é€å…¥ç’°(huán)ä¸å¹¶å°‡ä»¤ç‰Œå‚³é€è‡³ä¸‹ä¸€å€‹(gè)節(jié)點(diÇŽn)。çµ(jié)åˆå…·é«”的系統(tÇ’ng)需求,將令牌環(huán)應(yÄ«ng)用到串行通訊訪å•(wèn)控制ä¸ï¼Œå°‡æœƒ(huì)收到很好的效果。
æˆ‘å…¬å¸æ–°é–‹ç™¼(fÄ)ç ”åˆ¶çš„DLCS2000集散控制系統(tÇ’ng)ä¸Šä½æ©Ÿ(jÄ«)與ç¾(xià n)å ´(chÇŽng)控制器間采用的便是RS232/RS485串行通訊方å¼ã€‚最åˆè¨(shè)計(jì)的是主從å¼é€šè¨Šæ–¹å¼ï¼Œä½†åœ¨èª¿(dià o)試éŽ(guò)程ä¸ç™¼(fÄ)ç¾(xià n)該方å¼ä¸èƒ½å¾ˆå¥½çš„æ»¿è¶³ç³»çµ±(tÇ’ng)å°(duì)實(shÃ)時(shÃ)性ã€å¯é æ€§çš„è¦æ±‚。çµ(jié)åˆç³»çµ±(tÇ’ng)的具體情æ³ï¼Œæ”¹ç‚ºè™›æ“¬ä»¤ç‰Œæ–¹å¼é€²(jìn)行通訊,系統(tÇ’ng)的實(shÃ)時(shÃ)性ã€å¯é 性有了很大的改觀?,F(xià n)å°(duì)æ¤åšä¸€ä»‹ç´¹ã€‚
該系統(tÇ’ng)çµ(jié)æ§‹(gòu)如下:
  

系統(tÇ’ng)ç”±å·¥ç¨‹å¸«ç«™ã€æ“作站ã€ç¾(xià n)å ´(chÇŽng)控制器組æˆ?,F(xià n)å ´(chÇŽng)控制器為å¯ç·¨ç¨‹æŽ§åˆ¶å™¨ï¼Œæ”¯æŒRS232/RS485通訊,這里é¸ç”¨RS485通訊,多個(gè)控制器的RS485端并接通éŽ(guò)RS232/RS485轉(zhuÇŽn)æ›æ¨¡å¡Šèˆ‡å·¥ç¨‹å¸«ç«™çš„RS232通訊å£ç›¸é€£æŽ¥å®Œæˆæ•¸(shù)據(jù)的交æ›ã€‚工程師站與æ“作站間通éŽ(guò)以太網(wÇŽng)進(jìn)行數(shù)據(jù)的交æ›ã€‚ç¾(xià n)å ´(chÇŽng)控制器主è¦å®Œæˆç¾(xià n)å ´(chÇŽng)數(shù)據(jù)的采集ã€å ±(bà o)è¦ã€æŽ§åˆ¶é‹(yùn)ç®—ã€æŽ§åˆ¶è¼¸å‡ºç‰ï¼ŒåŒæ™‚(shÃ)å°‡ç¾(xià n)å ´(chÇŽng)采集的數(shù)據(jù)傳到工程師站并將工程師站的命令進(jìn)行轉(zhuÇŽn)æ›è¼¸å‡ºæŽ§åˆ¶ç¾(xià n)å ´(chÇŽng)çš„è¨(shè)備。工程師站æä¾›ç¾(xià n)å ´(chÇŽng)控制的人機(jÄ«)接å£ï¼Œè² (fù)責(zé)接收ç¾(xià n)å ´(chÇŽng)控制站傳來(lái)çš„ç¾(xià n)å ´(chÇŽng)數(shù)據(jù)并以棒圖ã€è¶¨å‹¢(shì)曲線ã€å ±(bà o)è¡¨ç‰æ–¹å¼é€²(jìn)行管ç†ï¼ŒåŒæ™‚(shÃ)è² (fù)責(zé)å°‡ç¾(xià n)å ´(chÇŽng)æ“ä½œã€æŽ§åˆ¶å‘½ä»¤å‚³é”(dá)給ç¾(xià n)å ´(chÇŽng)控制器,由控制器完æˆå…·é«”的計(jì)算控制功能。æ“作站分散在ç¾(xià n)å ´(chÇŽng)çš„ä¸åŒåœ°æ–¹ï¼Œå¾žå·¥ç¨‹å¸«ç«™å…±äº«æ•¸(shù)據(jù),完æˆç¾(xià n)å ´(chÇŽng)的檢測(cè)控制功能。影響該系統(tÇ’ng)性能的關(guÄn)鵿˜¯å·¥ç¨‹å¸«ç«™èˆ‡å„ç¾(xià n)å ´(chÇŽng)控制器間的數(shù)據(jù)通訊。
工程師站與å„ç¾(xià n)å ´(chÇŽng)æŽ§åˆ¶å™¨é–“é‡‡ç”¨è™›æ“¬ä»¤ç‰Œå‚³éžæ–¹å¼é€²(jìn)行通訊。
首先,將系統(tÇ’ng)虛擬æˆä¸€å€‹(gè)ç’°(huán)行網(wÇŽng)çµ(jié)æ§‹(gòu),æ¯å€‹(gè)通訊節(jié)點(diÇŽn)ï¼ˆåŒ…æ‹¬ä¸Šä½æ©Ÿ(jÄ«)和控制器)作為環(huán)行網(wÇŽng)çµ(jié)æ§‹(gòu)ä¸çš„一個(gè)節(jié)點(diÇŽn)。例如:有4臺(tái)ç¾(xià n)å ´(chÇŽng)控制器,1臺(tái)ä¸Šä½æ©Ÿ(jÄ«),則該環(huán)ä¸å…±æœ‰1+4=5個(gè)節(jié)點(diÇŽn)。令牌環(huán)行傳éžçš„é †åº?yà n)椋?→2→3→4→5→1
ç„¶åŽï¼Œåœ¨ç’°(huán)行網(wÇŽng)ä¸è™›æ“¬ä¸€å€‹(gè)權(quán)é™ä»¤ç‰Œï¼Œåœ¨å„節(jié)點(diÇŽn)間傳éžã€‚節(jié)點(diÇŽn)收到令牌時(shÃ)ç«‹å³ç™¼(fÄ)é€éŸ¿æ‡‰(yÄ«ng)信號(hà o)ï¼ˆåœ¨ä¸æ–·ä¸åŸ·(zhÃ)行),然åŽç™¼(fÄ)逿•¸(shù)據(jù)(在主程åºä¸åˆ¤æ–·å¦‚果有數(shù)據(jù)需è¦ç™¼(fÄ)é€å‰‡ç™¼(fÄ)é€ï¼Œå¦å‰‡ä¸åŸ·(zhÃ)行),接著å‘下一個(gè)節(jié)點(diÇŽn)傳éžä»¤ç‰Œã€‚令牌發(fÄ)出åŽï¼Œç‰å¾…響應(yÄ«ng)信號(hà o),如果ç‰å¾…超時(shÃ),則跳éŽ(guò)下一個(gè)節(jié)點(diÇŽn)繼續(xù)å‘其下一個(gè)節(jié)點(diÇŽn)傳éžä»¤ç‰Œï¼Œå¦‚果收到響應(yÄ«ng)信號(hà o),則解除ç‰å¾…狀態(tà i)。該方å¼ä¸çš„幾點(diÇŽn)說(shuÅ)æ˜Žï¼šï¼ˆä¸Šä½æ©Ÿ(jÄ«)å°(duì)應(yÄ«ng)上述工程師站)
1ã€ç¯€(jié)點(diÇŽn)號(hà o):在虛擬環(huán)行網(wÇŽng)ä¸ï¼Œç¯€(jié)點(diÇŽn)é †åºæŽ’åˆ—ç‚ºï¼šç¾(xià n)å ´(chÇŽng)控制器從1號(hà o)(與其地å€å°(duì)應(yÄ«ng))開始é€å€‹(gè)éžå¢žï¼Œä¸Šä½æ©Ÿ(jÄ«)節(jié)點(diÇŽn)號(hà o)為環(huán)䏿œ€å¤§ç¯€(jié)點(diÇŽn)號(hà o)。
2ã€ä¿¡è™Ÿ(hà o)響應(yÄ«ng)æ–¹å¼ï¼šç•¶(dÄng)節(jié)點(diÇŽn)接收到令牌應(yÄ«ng)ç«‹å³ç™¼(fÄ)應(yÄ«ng)ç”信號(hà o),然åŽåˆ¤æ–·æ˜¯å¦ç™¼(fÄ)逿•¸(shù)據(jù),接著å‘下一節(jié)點(diÇŽn)傳éžä»¤ç‰Œï¼Œç‰å¾…應(yÄ«ng)ç”信號(hà o)。當(dÄng)節(jié)點(diÇŽn)收到應(yÄ«ng)ç”信號(hà o),解除ç‰å¾…狀態(tà i)。如果在ç‰å¾…應(yÄ«ng)ç”éŽ(guò)程ä¸è¶…時(shÃ),則跳éŽ(guò)下一個(gè)節(jié)點(diÇŽn),å‘下一個(gè)節(jié)點(diÇŽn)繼續(xù)傳éžä»¤ç‰Œã€‚
3ã€ä¸»ç¯€(jié)點(diÇŽn):在虛擬環(huán)行網(wÇŽng)ä¸ï¼Œä¸Šä½æ©Ÿ(jÄ«)節(jié)點(diÇŽn)作為主節(jié)點(diÇŽn),啟動(dòng)åŽç‰å¾…一段時(shÃ)間如果沒(méi)有收到令牌,則主動(dòng)生æˆä¸€å€‹(gè)令牌å‘1號(hà o)節(jié)點(diÇŽn)傳éžã€‚在é‹(yùn)行éŽ(guò)程ä¸ï¼Œä¸Šä½æ©Ÿ(jÄ«)檢測(cè)兩次收到令牌的時(shÃ)間間隔,如果第一次收到令牌åŽï¼Œç¶“(jÄ«ng)éŽ(guò)一定時(shÃ)é–“åŽæœªæ”¶åˆ°ä»¤ç‰Œï¼Œå‰‡èª(rèn)為令牌在傳éžéŽ(guò)程ä¸ä¸Ÿå¤±ï¼Œä¸Šä½ç¯€(jié)點(diÇŽn)主動(dòng)生æˆä¸€ä»¤ç‰Œå‘一號(hà o)節(jié)點(diÇŽn)傳éžã€‚
4ã€æœ‰é—œ(guÄn)令牌傳éžçš„幾個(gè)變é‡å’Œå¸¸é‡èªª(shuÅ)明:
RingFlag:ä»¤ç‰ŒæŒæœ‰èˆ‡å¦çš„æ¨™(biÄo)志(1ï¼šæŒæœ‰ä»¤ç‰Œ 0ï¼šä¸æŒæœ‰ä»¤ç‰Œï¼‰
WaitAck: ç‰å¾…應(yÄ«ng)ç”信號(hà o)的標(biÄo)志(1:ç‰å¾…應(yÄ«ng)ç” 0:解除ç‰å¾…應(yÄ«ng)ç”)
CycleCount:ç‰å¾…應(yÄ«ng)ç”æœŸé–“計(jì)時(shÃ)變é‡ï¼ˆæŽ¥æ”¶åˆ°æ‡‰(yÄ«ng)ç”æ™‚(shÃ)便清零,ç‰å¾…應(yÄ«ng)ç”æ™‚(shÃ)循環(huán)ç´¯åŠ è¨ˆ(jì)數(shù))
RingTime:兩次收到令牌的最大時(shÃ)間間隔(é (yù)定義常é‡ï¼‰
CycleNum:ç‰å¾…應(yÄ«ng)ç”超時(shÃ)上é™ï¼ˆé (yù)定義常é‡ï¼‰
NodeNum:環(huán)行網(wÇŽng)ä¸ç¯€(jié)點(diÇŽn)總數(shù)(é (yù)定義常é‡ï¼‰
ç¶“(jÄ«ng)測(cè)試和ç¾(xià n)å ´(chÇŽng)的實(shÃ)際應(yÄ«ng)用,èª(rèn)ç‚ºåˆ©ç”¨è™›æ“¬ä»¤ç‰Œå‚³éžæ–¹å¼é€²(jìn)行多節(jié)點(diÇŽn)間的數(shù)據(jù)通訊,有利于æé«˜ç³»çµ±(tÇ’ng)的通訊速度å³ç³»çµ±(tÇ’ng)的實(shÃ)時(shÃ)æ€§ï¼ŒåŒæ™‚(shÃ)å› é€šéŽ(guò)虛擬令牌來(lái)控制發(fÄ)逿•¸(shù)據(jù)的權(quán)é™ï¼Œé¿å…了多個(gè)節(jié)點(diÇŽn)åŒæ™‚(shÃ)發(fÄ)é€å¼•èµ·æ²–çªè€Œå°Ž(dÇŽo)致數(shù)據(jù)出錯(cuò)的情æ³ï¼Œé™ä½Žäº†æ•¸(shù)據(jù)傳輸?shù)æŸé²¥e(cuò)çŽ‡å³æé«˜äº†ç³»çµ±(tÇ’ng)çš„å¯é 性。較主從å¼é€šè¨Šæ–¹å¼ç›¸æ¯”,在實(shÃ)時(shÃ)性和å¯é 性上都有很大的æé«˜ã€‚
串行通訊由于其簡(jiÇŽn)單易用而被廣泛應(yÄ«ng)用,é¸ç”¨å“ªç¨®æ–¹å¼æ‡‰(yÄ«ng)æ ¹æ“š(jù)å°(duì)å…·é«”æ€§èƒ½è¦æ±‚çš„ä¸åŒè€Œè€ƒæ…®é‡‡ç”¨ä¸åŒæ–¹å¼ï¼Œä»¥é”(dá)到é©ç”¨çš„æ•ˆæžœã€‚本文介紹的是在實(shÃ)時(shÃ)控制系統(tÇ’ng)䏿‰€é‡‡ç”¨çš„一種方å¼ï¼Œé‡‡ç”¨è™›æ“¬ä»¤ç‰Œå‚³éžä¾†(lái)控制å„節(jié)點(diÇŽn)的數(shù)據(jù)傳é€ï¼Œä»¥æé«˜ç³»çµ±(tÇ’ng)å°(duì)實(shÃ)時(shÃ)性ã€å¯é æ€§çš„è¦æ±‚。其它方å¼å¯ä»¥æŸ¥é–±ç›¸é—œ(guÄn)的文ç»(xià n)資料,本文åªèµ·åˆ°æ‹‹ç£šå¼•玉的作用。
åƒè€ƒæ–‡ç»(xià n)
1ã€èŒƒé€¸ä¹‹ VB與 RS232串行通訊控制 ä¸åœ‹(guó)é’年出版社,2000ï¼08
2ã€é›·éœ‡ç”²ç‰è‘— 計(jì)算機(jÄ«)ç¶²(wÇŽng)絡(luò) 西安電å科技大å¸(xué)出版社 1997ï¼04
3ã€Stallings W. Data and Computer Communications,4th Edition. Macmillan Publishing Company,1994