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