隨著工業測控系統自動化水平的提高, 系統需要檢測的數據量逐漸增加, 控制算法也越來越復雜, 同時對實時性的要求越來越高, 由于單機本身速度和功能的限制, 因此多采用多機系統以并行工作方式采集、處理信息。通過將信息處理任務在主從CPU之間的分配, 由各自的獨立性和并行性提高系統的實時性, 從而解決工業測控系統中數據流量大、要求適應動態系統的快速響應的問題。多機系統中, 多個處理器間如何進行數據共享與數據交換是設計的關鍵。
本文介紹了在CQ9107機床數控改造中采用的雙CPU共享RAM技術, 主CPU和從CPU并行工作, 由主CPU完成系統監控、檢測及粗插補任務, 從CPU完成步進電機的細插補、步進電機的脈沖分配等任務。選用共享存儲器方案完成雙CPU之間的數據傳遞。雙CPU之間通過雙端口SRAM作為公用存貯器相互交換數據和協調工作, 實現了穩定可靠的工作。
1 雙CPU共享RAM技術
雙機系統間的信息交換可根據具體情況采用串行或并行通訊的方式。串行通訊數據傳送是按位進行的, 因此速度較慢, 適用于遠距離通訊。在并行通訊方式中, 對于并行內總線通訊又分為PIO通信法及共享存儲區通信法兩種。PIO法采用并口芯片實現通訊, CPU之間每次只能交換一個字節; 而共享存儲區通信, CPU之間每次可以以字節的方式并行交換一個數據塊, 對于每側CPU都有獨立的信道, 可以實現真正的同時訪問。因此在本課題中, 選用共享存儲器( IDT7132) 方案完成雙CPU之間的數據傳遞。以共享存儲器區作為多臺微處理機交換數據的系統是一種緊耦合系統。這種系統以并行內總線作為互連的基礎。由于它耦合程度高、通信速度快, 每臺儀表都具有自己專用的存儲器、專用的軟件, 甚至專用的外設, 具有良好的自治性。設置共享存儲器區僅僅用來提供各臺微機通信時交換數據, 并不作為程序執行的工作區。因此共享存儲器功能單一, 但實時性高。
1.1 雙口RAM - IDT7132
本系統采用了美國IDT公司生產的IDT7132 芯片。它是CMOS靜態雙口RAM, 容量為2K字節, 有左右兩套完全相同的I/O 口, 即兩套數據總線D0 ~D7 , 兩套地址總線A0 ~A10 , 兩套控制總線CE、R /W、OE、BUSY, 并有一套競爭仲裁電路。IDT7132可以通過左右兩邊的任一組I/O進行全異步的存儲器讀寫操作。應用雙端口SRAM可在主從CPU間建立緩沖區, 解決CPU間高速交換數據的問題。
使用雙端口RAM在兩個CPU之間共享信息的優點是: 速度快、方式簡單、存取共享信息所用的時間一般與存取外部RAM所用的時間一樣。對兩個CPU中的任一個而言, 雙端口RAM等效于CPU 的外部RAM, 通過適當的設計可消除讀寫雙端口RAM的系統等待時間。
1.2 總線爭用問題的實際解決方案
采用雙端口SRAM的主從式CPU數控系統不穩定因素在于兩CPU同時訪問同一單元時有可能發生爭用。即當左右兩個CPU 同時對同一個存儲單元進行寫操作或對同一個存儲單元的一個口進行寫操作而另一個口進行讀操作時, 雙口將發生競爭, 會出現寫入值和讀出值不是期望值的混亂狀態。這時易發生讀寫錯誤、傳送誤數據和誤指令, 即兩CPU 打架。解決這一問題的方法是實現主從CPU對雙端口SRAM分時操作。通常, 有軟件判優、硬件判優和中斷等幾種解決方案。
(1) 硬件判優
IDT7132芯片內部有硬件判優電路, 即競爭仲裁電路。它用于判定雙口地址匹配或片選使能信號匹配時差最小達5ns以上的競爭勝負, 并用忙信號BUSY來指示競爭仲裁結果。使用時將芯片的BUSY線與該側的CPU ( 80C196KB) 的READY線相連, 內部競爭仲裁優先的一側CPU可以進行讀/寫操作, 如同沒有發生競爭一樣, 而競爭失敗的口的BUSY端輸出忙信號(0電平) , 這時對該口的讀/寫無效, 同時延緩了該側CPU對該單元的訪問而插入等待周期。當準許訪問的一側CPU完成了對該單元的訪問后, 被延緩側的BUSY線變高, 該側CPU退出保持狀態, 可進行存儲器的操作。
(2) 中斷判優
采用中斷方案時, 將BUSY線的上升沿作為中斷源, 分別與主從CPU的高速輸入口HSI相連, 當發生爭用時申請中斷。為每個端口分別分配一個單元,即信箱, 不能再作為普通RAM單元使用。例如: 可以使主CPU (左) 使用1FFEH 單元, 從CPU (右)使用1FFFH單元。約定: 左端口寫地址單元1FFEH時, INTR =L, 可向右端口發出中斷請求; 右端口讀地址單元1FFEH時, INTR = H, 復位左端口發出中斷請求; 右端口寫地址單元1FFF時, INTL = L, 可向左端口發出中斷請求; 左端口讀地址單元1FFF時, INTL =H, 復位右端口發出中斷請求。當信箱內容為00H時, 表示正在使用該方端口; 當信箱內容為FFH, 表示結束使用該方端口。因此主從CPU在對端口的其它單元進行讀/寫操作時, 在讀/寫操作開始時, 向自己的信箱內寫入00H, 當讀/寫操作結束時, 向自己的信箱中寫入FFH。如果沒有發生爭用,則直接進行讀/寫操作, 如果發生爭用, 慢的一方將產生中斷, 在中斷服務程序中, 查詢對方的信箱。當對方信箱內容為FFH時, 慢方才可以進行自己的讀/寫操作。
(3) 軟件判優
在中斷方案中, 當然也少不了軟件的配合。但在這里的軟件判優方案中, 采用的是一種特殊的軟件處理方法, 在硬件處理上, 完全不需要BUSY線的連接。即采用軟件的操作, 使得兩個端口在時序上錯開, 保配示意圖證不會對存儲器的同一單元進行存取操作, 從而避免了數據的丟失。
該方法的核心是采用體切換技術, 即將雙端口RAM根據實際使用要求分成3 個區, 分別為控制區、工作區1和工作區2,。
系統中有定時中斷, 使其時間基準保持一致, 開始時, 讓CPU1 工作在1 區, CPU2 工作在2 區, 控制區中存放兩者的工作區的標志。按照實際需要定時切換兩個CPU的工作區。顯然用這種方法有效地避免了爭用問題。
(4) 方案比較及確定
軟件判優方案針對特殊處理系統, 不具有普遍性, 且要求有準確的時序關系。硬件判優要求CPU插入等待周期。考慮到實時性的要求以及軟硬件實現的方便性, 在本系統中我們采用的是中斷方案, 使主從CPU分時工作, 保證主從CPU 分時使用雙端口SRAM及協調工作。進入雙端口后, 首先檢查信箱中預設置的標志位是否正確, 確認已正確控制雙端口后, 再進行讀寫數據。
2 應用與研究
2.1 硬件設計
本系統采用兩個80C196KB單片機組成主從分布數控系統。該數控系統由主CPU子系統、從CPU子系統及雙端口SRAM三部分構成。主CPU子系統由CPU、LCD顯示、操作開關、程序存儲器等構成; 從CPU子系統由從CPU、程序存儲器、驅動單元接口等構成。數控系統的工作可分為實時性和非實時性兩大類, 主CPU子系統完成非實時性工作, 從CPU子系統完成實時性控制工作, 這可減輕CPU的工作負擔, 實現合理的工作結構, 保證數控系統多任務的完成。
主CPU負責CNC系統的任務調度和管理, 主要完成數控指令的譯碼和預處理, 界面顯示, 操作面板的掃描等任務, 并把這些信息放在雙口RAM中。從CPU定時從雙口RAM 中獲取相關信息, 經過插補后, 利用軟件環分發送脈沖, 經過驅動電路驅動步進電機拖動工作臺, 從而使刀具產生要求的軌跡。這樣, 每個CPU 分別承擔一定的任務, 因而具有很高的并行處理能力, 它們之間的通信依靠雙口RAM進行協調。主CPU進行的非實時工作任務為:
(1) 通過液晶顯示零件加工軌跡; ( 2) 管理操作開關, 實現人機對話; ( 3) 完成對數控指令解釋;(4) 將零件加工參數置入公用存儲器; ( 5) 對公用存儲器進行管理等。
從CPU完成的實時工作任務為:
(1) 對各坐標軸進行實時控制, 包括各坐標軸間直線插補、圓弧插補、點動等; ( 2) 步進電機的脈沖分配; (3) 與主CPU交換數據等。
工作過程如下: 主CPU 從零件程序存儲器中取得零件數據, 經譯碼后, 將加工參數(如坐標原點、坐標值) 及工作方式(如直線插補、圓弧插補、點動方向、自動方式等) 送入雙方約定好的雙口RAM的指定單元, 同時在液晶顯示屏上動態顯示當前加工軌跡的示意圖, 供用戶觀察, 從CPU按照通訊協議從雙口RAM中取出數據, 進行細插補, 驅動步進電機工作, 并向雙口RAM中寫入標志, 供主CPU查詢和管理。
2.2 雙口RAM操作軟件設計
在硬件設計中, 雙口RAM的爭用問題是采用中斷方案解決。分別與主、從CPU的高速輸入口HSI10相連。采用雙口RAM 進行通信, 可簡化硬件設計,提高數據傳輸速率。
軟件采用中斷判優來解決總線爭用問題, 中斷向量為2008H。經硬件譯碼后, 系統中雙口RAM的左端口地址為8000H ~9FFFH, 設9FFFH 單元為其信箱。右端口地址為A000H~BFFFH, 設BFFEH為其信箱。若產生爭用, 則慢方將進入中斷服務程序, 需查詢對方信箱, 確認對方已放棄對雙口RAM的控制權后, 再進入雙口RAM進行數據的存取。以主CPU操作雙端口RAM的左端口占優為例, 從CPU產生中斷。
2.3 通信協議
系統工作過程中, 主、從CPU 通過雙口RAMIDT7132來進行。在雙口RAM中設置一些標志字節和標志位, 通過對這些標志位進行置位和清零來傳達狀態。具體規定如下:
(1) 8000H單元: 程序自動加工標志。該字節的內容由主CPU送置, 從CPU進行查詢, 并根據其不同內容進行插補、發送環分脈沖、驅動電機運動。每一種線型的數據由主CPU粗插補后送雙口RAM的8002H單元向后依次排放。從CPU從雙口RAM中取出數據, 按要求完成規定的任務后, 將8000H 單元清零, 主CPU查詢到后, 可再向8002H單元依次傳送下一線型所需數據。
(2) 8001H 單元: 限位標志。由從CPU 填寫,主CPU查詢。1: 限位; 0: 不限位。
(3) 8002H~9FF9H: 數據區, 用于存放主CPU傳送的零件數據。
(4) 9FFAH 單元: 自動, 手動選擇。1 表示自動; 2表示手動。
(5) 9FFBH單元: 手動標志。表明機床兩軸手動時四個運動方向: + X, - X, + Z, - Z。分別由該字節不同位的內容來表示, 如前所示。
(6) 9FFCH單元: 開始加工標志。1表示自動加工開始; 0表示下位機處于等待狀態。該標志主要和操作面板上的開始按鈕相對應。
(7) 9FFDH 單元: 工件加工完畢標志。1 表示一個工件加工完畢; 0表示工件未加工完畢。
(8) 9FFEH單元: 從CPU的信箱。
(9) 9FFFH單元: 主CPU的信箱。
3 實驗系統與結論
數控系統具有數據處理量大(如插補算法) 、實時性要求高(位置控制) 的特點, 因此用雙CPU和雙口RAM 的硬件結構構成的雙CPU 控制器來對CQ9107機床進行數控化改造是比較適合的。該數控系統屬于經濟型數控, 是由步進電機組成的一個開環系統。
該控制器提出了以一種高斯函數作為擴展的感受域函數的局部神經網絡來實現T - S型模糊邏輯控制, 由于模糊神經網絡控制算法的復雜性和工業系統的實時性要求, 本系統采用了Intel16位單片機雙機共享存儲器技術的主從分布式硬件設計, 構建了基于模糊神經網絡和雙CPU的通用型智能控制器。
在該數控系統上, 我們編制了多種工件的加工程序, 進行實驗加工, 都取得了預定的效果。在CQ9107數控機床上, 我們以一定的速度運行, 得到的軌跡完全符合要求。同時也驗證了采用雙端口RAM進行信息共享的通訊接口的可靠性以及采用雙CPU進行任務分配的合理性和有效性。從而驗證系統方案的可行性。
實驗結果表明, 以16 位單片機80C196KB 為核心, 由雙CPU和雙口RAM組成的主從分布式數控系統, 每個CPU都可單獨執行一定的任務, 因此可以提高整個系統的效率, 它們之間通過公共存儲器(雙口RAM) 來交換信息, 使不同的任務彼此協調,共同構成一個有機的整體, 完成復雜的任務。結構合理、性能可靠、價格低廉, 較好地滿足了數控系統對控制實時性和多任務的要求, 有比較廣闊的應用前景。
(審核編輯: 智匯張瑜)
分享