串口伺服器的製作方法
2023-05-24 08:36:41
專利名稱:串口伺服器的製作方法
技術領域:
本發明屬於串口通信裝置,用於在由計算機組成的分布式數據採集系統中,解決上位機與多臺串口設備通信問題,即實現對上位機的單串口進行擴展,並根據應用系統設計的需要把一個串口擴展為多個同類型的串口或一個串口擴展為多個不同類型(RS232、 RS422、RS485)的串口,以便與不同接口的計算機或設備進行串行通信。
背景技術:
通常計算機單串口擴展為多串口採用的是增加轉換器件。擴展的原理不盡相同 直接對串口進行擴展;在PCI插槽上插上擴展卡;利用USB轉串口 ;利用擴展晶片。1)RS232 —轉多擴展器RS232 一轉多擴展器用於將一個RS232串行口分時擴展為多個準RS232串行口。 擴展器上已經設定好了多個串口的硬體地址,所以多機通信時無需修改下位機的軟體。準 RS232串行口只有T)(D(發送)、RXD(接收)、GND(信號地)三個信號。如波仕卡公司的 RS232 一變八擴展器8232A,使用之前通過軟體設置來分時選通八個準RS232接口。RS232 一變多擴展器適用於一臺PC機與多臺PC機、單片機或儀表之間的通信。2)多串口 RS232擴展卡該方法通過在計算機的PCI擴展槽上插上多串口卡來擴展串口。如HighTek公司的HK-1116。該方法的特點是只佔用上位機一個PCI擴展槽,就可以支持對多達十六個RS-232串口的控制,所有的設置都由軟體來完成,無開關無跳線,更無需調整I/O地址和 IRQ(Interrupt Request,即「中斷請求」),而且每個口收發各有1 字節FIFO。3)USB 轉串口該方法通過協議轉換把當前流行的USB接口轉換為多路RS232接口。通過利用 USB接口具有的即插即用和熱拔插的方便性,使USB接口可非常容易地和其他RS232設備通信,並能提供高達12Mbps的傳輸速率。安裝驅動程序以後,計算機可自動虛擬出多個COM 口(具體COM 口的埠號由虛擬驅動程序自動分配)。這幾個虛擬出來的COM 口和計算機原有的COM 口對於應用軟體來說是一樣的,只要應用軟體能夠映射(或選擇)到這幾個虛擬COM 口,就可以實現對RS-232埠的通信。4)串口擴展晶片該方法通過專門的晶片可將任意8-32位處理器及各種DSP等原有的通用異步收發器擴展為多個完全獨立的子串口。且所有子串口可同時或非同時收、發數據且不會丟失數據;所有子串口波特率可獨立設置;所有子串口數據幀長度可獨立設置。如成都視普科技公司的一轉七串口擴展晶片SP3739。常用串口擴展方案多採用的是增加轉換器件。擴展的原理不盡相同軟體模擬法; 在PCI插槽上插上擴展卡;利用USB轉串口 ;利用擴展晶片。其中,軟體模擬串口主要通過單片機的1/0 口模擬異步串行接口時序來實現。以這種方式擴展串口對單片機性能的要求就提高了,這也限制了其應用,一般僅用於1 2個串口的軟體模擬。而PCI總線擴展方法通過在計算機的PCI擴展槽上插上多串口卡來擴展串口。但由於採用了分時控制,需手動選通串口,當多個串口同時給上位機發送數據時可能會發生數據丟失。USB擴串口是一種比較理想的串口擴展方案,但是在需擴展多個串口時,一般採用USB-HUB擴展USB接口,再擴展串口,但這樣會相應增加成本。
發明內容
本發明的目的在於提供一種結構更加緊湊、易於擴展的串口伺服器。實現本發明目的的技術解決方案為一種串口伺服器,包括一片STC12C56^AD單片機、一片SP3739串口擴展晶片和一片印製電路板,STC12C5628AD單片機與SP3739串口擴展晶片通過印製電路板相連,所述SP3739串口擴展晶片設有7個串口即第一串口、第二串口、第三串口、第四串口、第五串口、第六串口、第七串口,第一串口與上位機連接,第二串口、第三串口、第四串口、第五串口、第六串口、第七串口依次與下位機相連。本發明與現有技術相比,其顯著優點(1)單片機可以對採集到的數據進行處理, 緩解了上位機的編程壓力;0)7個子串口可同時收、發數據,每個子串口獨立收、發FIFO ; (3)7個子串口共享上位機原有串口中斷實現數據收、發,而不佔用上位機的外部中斷和並行數據總線。
圖1是本發明的系統總體結構圖。圖2是本發明實施中SP3739與STC12C56^AD單片機簡化電路。圖3是本發明實施的軟體整體結構框圖。圖4是本發明實施的主程序流程圖。圖5是本發明實施的入隊列流程圖。圖6是本發明實施的出隊列流程圖。圖7是本發明實施的串口中斷處理流程圖。
具體實施例方式下面結合附圖對本發明作進一步詳細描述。本發明串口伺服器,包括一片STC12C56^AD單片機、一片SP3739串口擴展晶片和一片印製電路板,STC12C5628AD單片機與SP3739串口擴展晶片通過印製電路板相連,所述 SP3739串口擴展晶片設有7個串口即第一串口 0、第二串口 1、第三串口 2、第四串口 3、第五串口 4、第六串口 5、第七串口 6,第一串口 0與上位機連接,第二串口 1、第三串口 2、第四串口 3、第五串口 4、第六串口 5、第七串口 6依次與下位機相連。本發明串口伺服器,所述印製電路板上蝕刻有6條I/O線和2條串口線用以連接 STC12C5628AD單片機和SP3739串口擴展晶片。1硬體設計1. 1系統總體結構在本發明中,需要將多臺儀器的數據通過RS232接口傳到上位機上,同時還需要對數據進行分析處理。RS232 —轉多擴展器硬體簡單,使用起來方便,但由於採用了分時控制,需手動選通串口,當多個串口同時給上位機發送數據時可能會發生數據丟失;多串口 RS232擴展卡從根本上解決了上位機的串口短缺問題,但該方法成本較高;USB —轉多串口在長期工作時穩定性得不到保證;在本發明中採用第四種方案,即採用專門的串口擴展晶片。採用專門的串口擴展晶片需增加一個單片機來擴展上位機的串口,同時單片機又可以對採集到得數據進行處理,緩解了上位機的編程壓力。擴展的7個串口可獨立設置為 10位或11位幀長(即1+8+1或1+8+1+1) ;7個子串口可同時收、發數據,每個子串口都有 SByte獨立收、發FIFO ;佔用資源少,不佔用上位機的外部中斷和並行數據總線,7個子串口共享上位機原有串口中斷實現數據收、發(上位機通過輸入、輸出地址識別子串口)。由於串口擴展晶片(SP3739)主要是用來擴展各種單片機和DSP的串口的,不能直接用來擴展計算機的串口,因此中間需要通過一個單片機系統來轉換。系統總體結構框架如圖1所示。系統中通過兩個插針來選擇下載調試模式(插針把①連通)和運行模式(插針把②連通)。當處於下載調試模式時,單片機PC機直接與單片機通信,把程序下載在單片機中;當處於運行模式時,SP3739的母串口與單片機相連,子串口 0與PC機相連,子串口 1 6與其它設備相連,單片機採集設備1 6的數據(或接收PC機的指令)再轉發給PC 機(設備1 6)。1.2擴展器通訊協議 通信機制(1)串口擴展器採用隧道傳輸技術設計。(2)擴展器接到上位機的數據包後,剝離出包頭、原始數據包和包尾,解釋出目的設備地址和原始數據包,把原始數據包轉發給目的設備。(3)擴展器接收到子設備的數據包後,加上包頭包尾構造出一個新的數據包,再轉發給上位機。 信道單數(1)波特率9600(2)字節通信格式lbit起始位,8bit數據位,無校驗位,Ibit停止位 數據包格式包頭(目的設備編號+原始數據包長度)+原始數據包+包尾(校驗字節(IByte) 子設備地址編號0x80 0XFF,每個設備一個編號。1. 3系統工作過程 單片機發送數據流程(1)單片機先發送待發送數據的地址信息(子串口地址)到SP3739的輸入地址 (ADRI0 ADRI2),即選中待發送數據對應的子串口。(2)通過串口向SP3739發送數據信息(SP3739會根據第一步的地址信息將數據信息由相應的子串口發送出去)。(3)由於母串口的速度比子串口要快,單片機可發送「NOP」指令,或調用必要的延時程序,來匹配母串口和各子串口不發生數據溢出。 單片機接收數據流程
(1)單片機接收到數據後,必須儘快讀取ADROO ADR02三位輸出地址的狀態,並由此來判斷接收的數據來自哪個子串口。(2)單片機讀取輸出地址的最長時間為8/ (K7*1000) (uS),其中K7為單片機串口的波特率。(3)單片機採用中斷方式來接受數據,並將串口中斷設置為最高優先級。 單片機與上位機的通信(1)單片機接收到上位機(即串口 0)的命令後,對其進行分析,然後選通相應的串口發送命令。(2)各子串口接收到命令後即發送相應的數據給SP3739,再轉給單片機,由單片機對數據進行打包發送給上位機。1.4 SP3739與STC12C56^AD單片機的電路連接SP3739與STC12C56^AD單片機之間的連接只需6條I/O線、2條串口線,電路連接非常簡單。如圖2為SP3739與STC12C56^AD單片機簡化的電路。2系統軟體設計在軟體開發的過程中,本發明採用了模塊化程序設計的思想,即對系統進行功能劃分,每個子程序完成單一的功能,通過在主程序中調用相應的子程序來完成整個系統功能。軟體系統的結構模塊如圖3所示。系統的軟體主要包括主程序模塊、隊列子程序模塊、串口處理子程序模塊以及延時子程序模塊。隊列子程序模塊的作用是為每個串口的輸出和輸出提供一個緩衝區,確保單片機與串口之間高效穩定的通信;串口處理子程序模塊的作用是處理各個串口的中斷, 當有串口發生中斷時即對相應的串口輸入輸出隊列進行操作;延時子程序模塊的作用是為整個軟體提供一個標準的Ims延時。2. 1主程序主程序中主要執行一些變量的初始化、定時器的初始化以及調用串口和隊列的初始化程序,如圖4。定時器每隔5ms產生一次中斷,查詢是否有串口數據需要處理,若有,則置位相應的串口標誌。主程序遍詢各個串口的標誌位,若有串口數據需要處理則讀出相應的隊列數據進行處理。2.2隊列子程序隊列是一種特殊的線性表,它只允許在表的一端插入元素,而在另一端刪除元素, 實現了線性表先進先出(First In First Out,縮寫為FIFO)的功能。在隊列中進行插入的一端叫隊尾(rear),進行刪除的一端則稱為對頭(front)。這裡我們採用循環隊列來存儲單片機與各個串口之間通信的數據。循環隊列是隊列的一種順序表示和實現方法。與順序棧類似,在隊列的順序存儲結構中,我們用一組地址連續的順序存儲單元依次存放從隊頭到隊尾的元素,由於隊頭和隊尾的位置都是動態變化的,因此需要附加兩個指針front和rear分別指示隊頭元素和隊尾元素在數組中的位置。 初始化隊列時,令front = rear = 0 ;入隊時,直接將新元素送入尾指針rear所指的單元, 然後尾指針加1 ;出隊時,直接取出隊頭指針front所指的元素,然後頭指針加1。當rear = MAXSUE時,認為隊滿,但此時不一定是真的隊滿,因為隨著部分元素的出隊,數組前面會出現一些空單元,由於只能在隊尾入列,使得上述空單元無法使用,此現象為假溢出。一個較巧妙的方法是將順序隊列的數組看成一個環狀的空間,即規定最後一個單元的後繼為第一個單元,即循環隊列。這裡可以通過構造14個隊列來分別表示單片機與7子串口間發送數據和接受數據的緩衝區。隊列程序設計的關鍵就是入隊和出隊的操作,其流程圖如圖5、6所示。2.3串口處理子程序RS232串口擴展方案的主要功能是串口數據的轉發,即將串口 1 6 (設備)的數據轉發給串口 ο (計算機),或是將串口 0的數據轉發給串口 1 6。因此串口處理子程序對外的接口主要是串口的發送功能,其具體實現過程為由指定的串口號和數據長度對需要發送的數據進行入隊列操作,然後置位串口中斷標誌位,由串口中斷程序來對數據進行發送,因此串口程序設計的關鍵是串口中斷程序的設計。在對串口進行操作前,我們可以通過對SP3739發送命令字來配置各個串口的屬性,如波特率、數據位等。串口中斷流程圖如圖7所示。
權利要求
1.一種串口伺服器,其特徵在於包括一片STC12C56^AD單片機、一片SP3739串口擴展晶片和一片印製電路板,STC12C5628AD單片機與SP3739串口擴展晶片通過印製電路板相連,所述SP3739串口擴展晶片設有7個串口即第一串口 W]、第二串口 [1]、第三串口 [2]、第四串口 [3]、第五串口 W]、第六串口 [5]、第七串口 W],第一串口
與上位機連接,第二串口 [1]、第三串口 [2]、第四串口 [3]、第五串口 W]、第六串口 [5]、第七串口 [6] 依次與下位機相連。
2.根據權利要求1所述的串口伺服器,其特徵在於所述印製電路板上蝕刻有6條I/ 0線和2條串口線用以連接STC12C56^AD單片機和SP3739串口擴展晶片。
全文摘要
本發明公開了一種串口伺服器,包括一片STC12C5628AD單片機、一片SP3739串口擴展晶片和一片印製電路板,STC12C5628AD單片機與SP3739串口擴展晶片通過印製電路板相連,所述SP3739串口擴展晶片設有7個串口即第一串口、第二串口、第三串口、第四串口、第五串口、第六串口、第七串口,第一串口與上位機連接,第二串口、第三串口、第四串口、第五串口、第六串口、第七串口可以依次與下位機相連。該伺服器對上位機的單串口進行擴展,根據應用系統設計的需要把一個串口擴展為多個同類型的串口或一個串口擴展為多個不同類型(RS232、RS422、RS485)的串口,以便與不同接口的計算機或設備進行串行通信,從而解決多串口控制問題。
文檔編號G06F13/38GK102214155SQ201110190618
公開日2011年10月12日 申請日期2011年7月8日 優先權日2011年7月8日
發明者何新, 周宇友, 張東波, 張衛豐, 彭富明, 曹華雲, 王東星 申請人:南京理工大學