沈健,潘進
(1.蘇州健雄職業技術學院,江蘇太倉,215411;2.浩科機器人(蘇州)有限公司,江蘇太倉,215400)
集線器(HUB)屬于數據通信系統中的基礎設備,具有流量監控、數據交換功能,是一種不需任何軟件支持或只需很少管理軟件管理的硬件設備,它被廣泛應用到各種場合。大多數集線器屬于純硬件網絡底層設備,不具有類似于交換機的"智能記憶"能力和"學習"能力。發送數據時都是沒有針對性的,而是采用廣播方式發送。也就是說當它要向某節點發送數據時,不是直接把數據發送到目的節點,而是把數據包發送到與集線器相連的所有節點。這種設備的廣播發送數據方式有三方面不足:(1)用戶數據包向所有節點發送,帶來不安全因素,很容易就能非法截獲他人的數據包。(2)由于所有數據包都是向所有節點同時發送,數據傳送過程中容易堵塞,降低了執行效率。(3)雙向接口只需要3根線制作,非平衡電路使得RS-232非常的容易受兩設備間基點電壓偏移的影響很容易發生串話的問題。
本設計利用嵌入式系統設計的一款智能集線器,當節點提出交換數據信息的請求時,數據包發送給對應節點,其他沒有需求的節點將不會接收數據包,如圖1所示。

圖1 集線器
本集線器是由一個從端口和兩個主端口組成,系統在通電之前,通過對波特率設置開關的設置,確定主從端口數據的波特率。集線器上電后通過嵌入式系統檢測串口通信主端口是否有請求信號發出,請求信號包含連接主端口的設備需要采集的數據協議,當集線器接收到相應主端口發送過來的數據包后,保存對應主端口號,并將接收過來的數據包完整發送給從端口。連接在從斷口上的設備接收到發送過來的數據包,進行解析,根據通信協議,發送對應數據包所需要的數據包給集線器,集線器收到從端口發送過來的數據包后,根據保存的主端口號,有選擇的將從端口號的發送過來的數據包發送給對應的從端口設備,完成一次數據請求發送的通信。本集線器系統結構圖設計如圖2所示。

圖2 系統結構圖
本集線器系統大致分為5個電路模塊,分別是:嵌入式控制核心模塊、多路串口通信模塊、電源電路模塊、串行E2PROM存儲單元模塊、波特率設置開關控制模塊。電源電路模塊給集線器提供3.3V電源,外接電源12~24V電源模塊。波特率設置開關電路通過三路撥碼開關設置8種波特率,確保主從端口接收發送數據波特率一致,波特率設置對應分別是:

STM32F103RBT6內置了3個通用同步/異步收發器,多路串口通信模塊采用SP232EEN芯片,本次串口通信采用三線標準制RXD、TXD和GND,由于本集線器使用在本地設備中而且是點對點,傳輸距離近,所以采用RS232異步串行通信模式。這種通信模式是以字符為傳輸單位,相鄰兩個字符間隔時間不定,接收和發送的波特率是由三位開關設置。由于主口設備數據包格式不一致,我們在編程時不考慮數據格式,接收數據時采用查詢方式確定數據包的字節數,并將數據包以字符形式存儲在E2PROM隊列里,發送數據時根據字節數到E2PROM隊列里讀取數據發送確保數據傳輸不丟包。
串行E2PROM存儲單元模塊采用FM24V02芯片保存讀取端口號及對應傳遞的數據包,FM24V02是一款256Kb的3V串行F-RAM存儲器,使用雙線協議。該FM24V02執行寫操作時,沒有寫入延遲發生,速度快等特點。下一個數據循環可立即開始,而不需要數據輪詢。串口通信模塊及存儲模塊如圖3所示。

圖3 串口通信模塊及存儲模塊
程序設計要求有:(1)確保接收的數據和發送的數據一致;(2)哪個主端口提出數據請求,從設備收到數據后解析把結果發送給對應的端口。由于STM32單片機帶IDLE中斷,所以利用這個中斷,可以接收不定長字節的數據。我們在做數據通信的時候通過命令開啟通信,通信要求實時且準確不丟幀。開始是定義了一個大數組,將該緩存數組定義成接收的長度,然后每次接收后清除該buff,而且要確保系統發送的數組長度要一定時才不會出錯,但順序會變化,并每次在接收到數據后都通過指令memcpy(d,s,strlen(s))復制到隊列中,確保數據不丟失。
程序開始運行后,先配置硬件,硬件配置主要是對串口異步通行和E2PROM隊列清零進行配置,然后進入接收數據模塊,判斷各路串口是否有數據包接收,如果有,則將該數據包保存在E2PROM存儲單元隊列中;如果沒有則巡回檢測各路端口是否有數據包接收,詳情見圖4;當系統發現E2PROM隊列中有新的數據包后,就讀取該數據包,并清零該隊列,然后將該數據包發送給指定的端口,詳情見圖5。
我們采用一個相同硬件的線路板作為測試板,通過串口調試助手軟件讀取主端口接收發送的數據包,讓測試板從口接到待測線路板的從口上,待測線路板上的2路主口通過RS232串口線接到PC的串口上,我們在做測試程序的時候,讓測試版上從口接收的數據原路發送,這樣我們就可以通過對待測線路板上主口發送任意字節(不超過1000個字節)數的數據,查看是否有同樣字節的數接收,這樣就能確定發送接收不丟包點對點的測試,完成客戶要求。圖6是我們測試的一個樣圖。

圖4 發送數據程序框圖

圖6 系統調試圖
本集線器工作過程很簡單,很實用,性價比高。集線器種類很多,客戶需求也各不一樣,這就要求我們集線器要不斷調整功能,滿足客戶的需求。