PC機與單片機多機實時通信的設計與實現
VB可以發送文本數據和二進制數據。發送二進制數據時,必須傳遞一個包含字節數組的 Variant到 Output 屬性。接收二進制數據時,Input屬性通過一個Variant返回一二進制數據的數組。為便于命令的表達,本系統采用二進制格式的數據。
為更深入了解該控件,這里對接收數據緩沖區進行了分析,該控件開辟的接收數據緩沖區類似一個隊列,Windows95低層驅動程序負責將接收到的數據填入隊列尾部,同時修改尾指針,當OnComm事件發生后用Input讀取InputLen長度個字節后,將隊列頭指針后移InputLen位。可以把這個緩沖區開得大一點,這樣即使暫時來不及處理也不會丟失數據。接收數據緩沖區數據結構示意圖如圖3所示。
3 RS-485多機通信的實現
89C51單片機的串行口工作方式3可實現多機通信。接收時,若SM2=1,表示置多機通信功能位,這時出現兩種可能情況:接收到第9位數據為1時,數據才裝入SBUF,并置RI=1向CPU發出中斷請求;如果接收到第9位數據為0,則不產生中斷標志,信息將拋棄。若SM2=0,則接收到的第9位數據不論是0還是1都產生RI=1中斷標志,接收到的數據裝入SBUF中。根據這個功能,可實現多個 89C51應用系統的串行通信。
機定時中斷服務程序框圖
多機通信過程安排如下:使所有從機的SM2位置1,處于只接收地址幀的狀態;主機發送一幀地址信息,其中包含8位地址,第9位為地址、數據標志位,第9位置1表示發送的是地址;從機接收到地址幀后 ,各自將所接收的地址與本從機的地址相比較,對于地址相符的從機,使SM2清0以接收主機隨后發來的信息,對于地址不相符的從機,仍保持SM2=1狀態,對主機隨后發送的數據不予理睬,直至發送新的地址幀;主機發送控制指令與數據,給被尋址的從機數據幀的第9位置0,表示發送的是數據。
單片機程序采用PLM51語言設計,主單片機定時中斷服務程序框圖如圖4所示。主單片機RS-485串行口接收和發送中段服務程序框圖如圖5所示。主單片機RS-232C串行口接收中斷服務程序如圖6所示。從單片機RS-485串行口接收和發送中段服務程序框圖如圖7所示。主單片機在主程序中以查詢方式將各從機送來的數據從內存中讀出后順序發送給上位PC機。程序清單略。
從實際使用來看,本系統具有較高的性價比,且穩定可靠,稍加改進即可用于自動化測量和實時控制系統的數據通信。
參考文獻
1 何立民.MCS-51系列單片機應用系統設計系統配置與接口技術.北京:北京航天航空大學出版社,1990.1
2 陳功富,韓賢東.計算機網設計與實現.北京:人民郵電出版社,1994.10
評論