久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1746|回復: 0
打印 上一主題 下一主題
收起左側

單片機數控系統設計 步進電機 開關量的輸入/輸出電路 附程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:685250 發表于 2023-7-11 15:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
數控系統設計綜合實踐
一、系統硬件電路設計
系統硬件電路設計的主要內容包括 CPU 的選型、1/0 口以及存儲器的擴展電路、鍵盤-顯示電路、開關量的輸入/輸出電路、步進電機驅動電路以及抗干擾電路等設計,本章就這些內容展開研究、討論。圖 3.1 為數控系統總體設計框圖。
從圖中可以看出,系統選用ATMEL公司生產的8位單片機AT89S52作為控制核心考慮到數控系統程序代碼存儲量比較大,擴展了一片 EPROM 芯片27512 用做程序存儲器:AT89S52芯片內只有 256KB 的數據存儲器(RAM,而一般數控系統需要存儲的數據較多,必須外接數據存儲器芯片進行適當擴展,故擴展一片 SRAM 芯片6264 數據存儲器,用來存放用戶程序:鍵盤輸入電路采用一片 8279 芯片來管理;擴展一片 8255 可編程接口芯片作為并行 O 口,步進電機、切削液泵電機等控制信號都經 8255 輸出,些進/出的信號均做了隔離放大處理:系統采用 LCD 顯示,LCD的控制器選用 1602芯片。
系統硬件結構確定之后,如何實現系統硬件具體結構,如何實現各種功能模塊電路成為硬件設計的核心內容。實現同樣的功能,采用不同的電路和模式,其效果并不是完全相同。以下對本平臺中的各個單元模塊予以介紹。
1.CPU及存儲器的擴展設計
1.1 數據存儲擴展
在機電一體化設備的專用控制系統中,數據存儲器通常選用靜態 RAM(SRAM)。因為在使用SRAM時,無需考慮刷新問題,且與 CPU 的接口較簡單。常用的 SRAM 芯片主要有6116(2KX8位)、6264(8KX8位)、62256(32KX8位)、628128(128KX8位)等。本次設計中選用 6264 芯片,其中,Ai 是地址線;I/i 是雙向數據線;/CE 或/CS 是片選線;/0E是數據讀出選通線,通常與 CPU 芯片的/RD引腳相連:/WE 是數據寫入選通線,一般與CPU的/WR引腳連接;VCC是工作電源,通常要求4.5V-5V。
數據存儲器的擴展與程序存儲器的擴展,在地址線的處理上是相同的,所不同的是除讀選通信號各異之外,尚需考慮寫選通的控制問題。
6264 芯片有一個片選/CS1,今用“3-8”譯碼器輸出引腳 CSO 來選通它;8 根數據線I/07-I/00 直接掛在CPU的PO口;13根地址線A12-A0分為高5位和低8位,其中高5位與CPU的P2.4-P2.0引腳相連,低8位與地址鎖存器74LS373 的輸出端相連:數據讀允許引腳/0E與CPU的/RD連接;數據寫允許引腳/WE 與CPU的WR連接可以算出6264的地址范圍是:0000H-FFFH。
在很多應用場合,要求 SRAM 芯片內部的數據在掉電后不丟失,這時就需要增加掉電保護電路。SRAM屬CMOS 芯片,靜態電流小,正常運行時由電源對其供電,而在掉電狀態下,由小型蓄電池對其供電,連續掉電后,蓄電池可維持數據 3-5 個月不丟失。
1.2 CPU的選擇
AT89S52是一種低功耗、高性能CMOS的8位微控制器,具有8K 在系統可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術制造,與工業 80C51產品指令和引存儲空間,如果不需要這一空間,可將其/EA 引腳接地:如果需要使用這部分空間,/EA引腳必須接高電平,且片外擴展的 EPROM 地址應從2000H開始。
AT89S52單片機的 PO 口是分時復用的地址/數據總線,而且與 I/0 口線復用,為了將地址總線與數據總線分離出來,以便同片外的電路正確連接,需要在單片機外部增加地址鎖存器,構成片外三總線結構,一般常用鎖存器74LS373。
74LS373有直通、高阻、鎖存3個狀態。通過鎖存信號輸入端G和輸出允許控制信號輸入端/0E 組合,可實現上述3個狀態。當三態門的/0E=0 且 G=1時,三態門處于直通狀態,允許 1Q-8Q 輸出到 Q0-Q7;當/0E 為高電平時,輸出三態門斷開,輸出線 Q0-Q7處于高阻狀態:當/0E=0且G 端出現下降沿時,為鎖存狀態。74LS373 作為地址鎖存器時,首先應使三態門的使能信號/0E 為低電平,這時,當G輸入為高電平時,鎖存器直通狀態,此時輸出端Q0-Q7 狀態和輸入端 DO-D7 狀態相同;當G端從高電平到低電平(下降沿)時,輸入端1D-8D的數據鎖入 10-8Q的8位鎖存器,為鎖存狀。它的鎖存控制端G直接與單片機的鎖存控制信號 ALE 相連,ALE 下降沿進行低8 位地址鎖存,直到下一次 ALE 變高,地址才發生變化。
74LS138是一個廣泛應用的地址譯碼器,3位輸入A BC對應8位反向輸出YO-Y78選1,即YO-Y7 有一個輸出為低電平有效,作片選。
2.鍵盤電路和LCD顯示電路設計
鍵盤-顯示功能是數控系統中的一個很關鍵的部分,它能實現向系統輸入數據、傳達命令和顯示工作狀況等,是人工干預的主要依據和手段。
2.1鍵盤電路
鍵盤主要有獨立式和矩陣式。前者一個按鍵接一個輸入線,輸入口浪費很大,用于按鍵數量較少的場合:后者多用按鍵較多的場合,可以節省很多 1/0 口。矩陣式鍵盤又可分為兩大類:無編碼器鍵盤和帶編碼器鍵盤。帶編碼器鍵盤采用硬件方法,當按鍵按下時直接給出該鍵的鍵編碼,而且還能夠消除抖動和解決重復鍵問題。鍵盤編碼器有靜態編碼器,掃描式編碼器和反相編碼器等。無編碼器鍵盤采用軟件掃描法,逐行逐列地檢查鍵盤狀態,當發現有鍵按下時,用計算的方法來得到該鍵的編碼。目前使用較多的是帶編碼器鍵盤。
INTEL8279是一種通用可編程鍵盤-顯示器接口芯片。它能完成鍵盤輸入和顯示控制兩種功能。鍵盤部分提供一種掃描工作方式,可于 64 個按鍵的矩陣鍵盤連接,能對鍵盤不斷掃描,自動消抖,自動識別出按下的鍵并給出編碼,能對雙鍵或n鍵同時按下實現保護。8279為40列引腳封裝。

引腳簡介:
1.數據總線:DO-D7 是雙向三態總線。用于和系統數據總線相連,在 CPU 和 8279之間傳送命令或數據。
2.地址線:當/CS=0選中8279,當AO=1為命令字及狀態字地址,A0=0 為片內數據地址,故8279占用兩個端口地址。
3.控制線:8279的控制線較多。這里介紹系統設計中幾個用到的控制線
4.IRQ:中斷請求輸出線,高電平有效。
5SLO-SL3(掃描線):輸出線。這四條輸出線用來掃描鍵盤和顯示器。它們可以編程設定為編碼輸出(16 中取 1)或譯碼輸出(4 中取1)。
6.RLO-RL7(回復線):輸入線。它們是鍵盤矩陣或傳感器矩陣的列信號輸入線。
7.SHIFT(移位信號):輸入線,高電平有效。該輸入信號是 8279 鍵盤數據的次高位D6,通常用來補充鍵盤開關的功能,可以用作鍵盤上、下檔功能鍵,在傳感器方式和選通方式中,SHIFT 無效。
8.CNTL/STB(控制/選通):輸入線,高電平有效。在鍵盤方式時,該輸入信號是鍵盤數據的最高位 D7,通常用來擴充鍵開關的控制功能,做控制功能鍵用。
本節著重介紹系統中可編程 I/0 接口芯片的電路設計。
可編程1/0接口芯片種類很多,常用的有 Intel 公司的外圍器件,如可編程外圍并行接口8255A、可編程RAM/I0擴展接口8155、可編程鍵盤/顯示接口8279、可編程定時/計數器8253、可編程串行通訊接口 8251等。這些芯片都具有多種工作方式,可由CPU對其編程進行決定。下面對 8255A、8253在本平臺中的運用進行詳細介紹。
2.2可編程外圍并行接口設計
本系統中所要控制的外部設備主要有兩個步進電機(根據自制的步進電機驅動器需要用8個輸出口),加上上下左右的4個鍵盤輸口,選用8255A 可編程外圍并行接口芯片。

可編程輸入/輸出接口芯片 8255A 的引腳如圖 3.5所示。D是雙向數據線:/CS是片選線:/RD 是數據讀出選通線,通常與 CPU 芯片的/RD引腳相連;/WR 是數據寫入選通線,一般與CPU的/WR引腳連接:PA口是8位數據輸出口,既有上拉又有下拉總線保持器;PB 口是8位數據輸入/輸出口,只有上拉總線保持器;PC 口是8位數據輸入(無所存)/輸出(帶緩沖器)口,在方式控制下可分作兩個 4 位端口用,每個 4位口都有一個4位所存器,這兩個4位端口可與A及B口配合使用,輸出控制信號輸入狀態信息,PC 口的保持結構與 B口相同。
向8255A 控制口寫入控制字可決定它的工作方式,并且只有先寫入控制字,才能通過三個數據口實現正確的I/0操作。它的3個I/0并行口 PA、PB、PC可選擇三種工作方式:方式0為基本的輸入輸出:方式1為選通輸入輸出:方式2 為雙向傳送8255A 還能對C端口的任一位進行置位/復位操作。
3.步進電機控制設計
步進電機是一種通過電脈沖信號控制相繞組電流實現定角轉動的機電元件,與其他類型電機相比具有易于開環精確控制、無積累誤差等優點,在眾多領域中獲得了廣泛的應用。為了得到性能優越的控制效果,出現了很多步進電機控制系統,其中采用單片機作為控制核心的控制系統得到了廣泛的應用。
3.1步進電機的工作原理

圖3.6反應式步進電機結構圖
圖3.6 是反應式步進電機結構示意圖,它的定子具有均勻分布的六個磁極,磁極上繞有繞組。兩個相對的磁極組成一組,連法如圖 3.6 所示。
下面介紹反應式步進電動機單三拍、六拍及雙三拍通電方式的基本原理。反應式進電機的工作原理是利用了物理上的“磁通總是力圖使自己所通過的路徑的磁阻最小所產生的磁阻轉矩,使電機一步一步轉動的。以三相反應式步進電機為例。
1、單三拍通電方式的基本原理
設A 相首先通電 (B、C 兩相不通電),產生 A-A軸線方向的磁通,并通過轉子形成閉合回路。這時 A、A’極就成為電磁極鐵的 N、S 極。在磁場的作用下,轉子總是力圖轉到磁阻最小的位置,也就是要轉到轉子的齒對齊 A、A’極的位置(圖 3.7a);接著B相通電(A、C兩相不通電),轉子便順時針方向轉過 30°,它的齒和C、C’極對齊(圖c)。不難理解,當脈沖信號一個一個發來時,如果按 A一C一B一A一···的順序通電,則電機轉子逆時針方向轉動。這種通電方式稱為單三拍方式。
2、六拍通電方式的基本原理

設A相首先通電,轉子齒與定子A、A’對齊(圖3.7a),然后在A 相繼續通電的情況下接通B相。這時定子 B、B’極對轉子齒 2、4產生磁拉力,使轉子順時針方向轉動但是 A、A’極繼續拉住齒 1、3,因此,轉子轉動兩個磁拉力平衡為止。這時轉子的位置如圖 3.7b 所示,即轉子從圖 3.7a 位置順時針轉過了巧“。接著A相斷電,B相繼續通電。這時轉子齒2、4和定子 B、B’極對齊(圖3.7c),轉子從圖3.8(b)的位置又轉過了15“。其位置如圖3.8d所示。這樣,如果按 A-A、B-B-B、C-C-C、A一A.二的順序輪流通電,則轉子便順時針方向一步一步地轉動,步距角 15°。電流換接六次,磁場旋轉一周,轉子前進了一個齒距角。如果按 A一A、C-C-C、B一B一B、A一A.二的順序通電,則電機轉子逆時針方向轉動。這種通電方式稱為六拍方式功能來實現。
3、轉矩的選擇
步進電機轉矩的選擇包括四個方面:最大靜轉矩、啟動轉矩、矩頻特性、定位轉矩最大靜轉矩是指步進電動機在通電狀態下,使轉子離開平衡位置時的極限力矩值,它反映了步進電動機承受外加轉矩的特性;啟動轉矩是指步進電動機單相繞組勵磁時所能帶動的極限負載轉矩:矩頻特性是指輸出轉矩與頻率的關系,一般來一說,隨著運行頻率的提高,輸出轉矩逐漸下降;定位轉矩是指步進電機在斷電狀態下定位時所需的轉矩。當注意的是,步進電動機的輸出轉矩不僅與電動機本身的最大靜轉矩和矩頻特性有關,而且還與驅動電源有著很大的關系。
4、連續運行頻率的選擇
步進電動機啟動后,不失步地連續升速,所能達到的最高頻率,稱作連續運行頻率。產品樣本所提供的極限運行頻率,是指電動機在空載時的最高運行頻率。帶載時的極限運行頻率要根據負載轉矩的大小,從矩頻特性曲線上查找。
5.啟動頻率的選擇
步進電動機不同于一般電動機,它的啟動概念和不失步聯系在一起。廠家提供的步進電動機啟動頻率,是指步進電動機空載時的極限啟動頻率。電動機帶載后,啟動頻率要下降。啟動頻率主要取決于負載的轉動慣量,二者之間的關系可以用啟動慣頻特性曲線來描述。用戶可以根據廠家提供的啟動慣頻特性曲線來決定帶載時的啟動頻率。
綜合上述因素,進給系統選用三洋 57 型步進電機,其額定轉矩為 20Nm,相數為 2,步距角為 0.9/1.8度,可以對其進行兩相兩拍、兩相四拍控制。
3.2步進電機驅動與隔離選擇
由于步進電機的大功率、高電平會對單片機產生比較嚴重的干擾,不能直接把單片機產生的控制信號直接連在步進電機上,需要進行強弱電隔離。在實際運用中,對于強弱電隔離一般采用電子開關方法或光電隔離的方法。由于步進電機工作需要較大的功率所以通常需要使用功率放大器來提供步進電機的工作電流,將光電隔離器送來的弱電信號變為強電信號,可以采用集成功放,也可以采用分立元件。本系統使用 TLP521GB 光電耦合芯片。
由于步進電機是一種將電脈沖信號轉換成直線或角位移的執行元件,它不能直接接到交直流電源上.而必須使用專用設備-步進電機控制驅動器。典型步進電機控制系統中的控制器可以發出脈沖頻率從幾赫茲到幾十千赫茲連續變化的脈沖信號,它為環形分配器提供脈沖序列。環形分配器的主要功能是把來自控制環節的脈沖序列按一定的規律分配后,經過功率放大器的放大加到步進電機驅動電源的各項輸人端,以驅動步進電機的轉動。環形分配器主要有兩大類:一類是用計算機軟件設計的方法實現環分器要求的功能,通常稱軟環形分配器。另一類是用硬件構成的環形分配器,通常稱為硬環形分配器。功率放大器主要對環形分配器的較小輸出信號進行放大,以達到驅動步進電機目的。L298N 是ST 公司生產的一種高電壓、大電流電機驅動芯片。該芯片采用 15 腳封裝主要特點是:工作電壓高,最高工作電壓可達 46V;輸出電流大,瞬間峰值電流可達 3A,持續工作電流為 2A;額定功率 25W。內含兩個H橋的高電壓大電流全橋式驅動器,可以用來驅動直流電動機和步進電動機、繼電器線圈等感性負載:采用標準邏輯電平信號控制;具有兩個使能控制端,在不受輸入信號影響的情況下允許或禁止器件工作有一個邏輯電源輸入端,使內部邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。使用 L298N 芯片驅動電機,該芯片可以驅動一臺兩相步進電機或四相步進電機,也可以驅動兩臺直流電機。可以直接用單片機的 I/O 口提供信號:而且電路簡單,使用比較方便。L298N 可接受標準TTL邏輯電平信號 VSS,VSS 可接4.5~7V電壓。4腳VS 接電源電壓,VS 電壓范圍VIH為+25~46V。輸出電流可達2.5A,可驅動電感性負載。1 腳和 15 腳下管的發射極分別單獨引出以便接入電流采樣電阻,形成電流傳感信號。L298 可驅動 2個電動機,OUT1,OUT2 和OUT3,OUT4 之間可分別接電動機,本實驗裝置我們選用驅動一臺電動機。5,7,10,12 腳接輸入控制電平,控制電機的正反轉。EnA,EnB 接控制使能端,控制電機的停轉。

In1,In2的邏輯圖與圖3.9相同。由圖可知 EnA 為低電平時,輸入電平對電機控制起作用,當 EnA 為高電平,輸入電平為一高一低,電機正或反轉。同為低電平電機停止,同為高電平電機剎停。
4.系統抗干擾措施
控制系統都工作在一定的環境條件下。環境中必然存在各種產生電磁場的因素,這些磁場能量會通過一定的途徑傳入單片機控制系統,產生系統正常工作所不需要的信號,影響了單片機的正常工作。同時,單片機內部也會產生影響正常工作的信號。一般把上述所說影響正常工作的信號稱為噪聲,也就是干擾。在單片機控制系統出現干擾就會影響指令的正常執行。
環境對單片機控制系統的干擾一般都是以脈沖的形式進入系統的,干擾竄入系統的渠道主要有 3條,即空間干擾、供電系統干擾、過程通道干擾。一般情況下,空間干擾在強度上遠小于其它兩個渠道進入系統的干擾,而且空間干擾可用良好的屏蔽與正確的接地,或采用高頻濾波器加以解決。因此,抗干擾的重點應放在供電系統和過程干擾通道的干擾。系統的抗干擾措施可以從硬件和軟件兩方面著手。
4.1硬件抗干擾技術
硬件系統的抗干擾設計特別重要,必須要在硬件設計的初始階段就要考慮各種干擾因素,否則在系統調試時將會非常困難,增加系統調試的時間和費用。
單片機控制系統通常可由幾塊印刷電路板組成,各板之間以及各板與基準電源之間經常選用接插針相聯系。在接插件的插針之間也易造成干擾,這些干擾與接插件插針之間的距離都有關系。在設計時要注意四個問題:合理地設置接插件:2插座上要話當增加接地針數;3信號針盡量分散配置,增大彼此之間的距離;@考慮到信號的翻轉時差,把不同時刻翻轉的插針放在一起,同時翻轉的插針盡量遠離,因為同時翻轉會使干擾疊加。
印刷電路板是器件、信號線、電源線的高密度集合體,電路板的布線和布局好壞對可靠性影響很大。制作電路板時要注意以下幾個事項:D電路板大小要適中,元件布局時相關盡量靠近:2電源線和地線與數據線傳輸方向要一致,這樣有助于增強抗干擾能力;3地線盡量加寬,數據地線、模擬地線要分開,配置必要的去藕電容。
4.2軟件抗干擾抗術
控制系統軟件設計對提高系統的可靠性,提高抗干擾性能意義很大。一個好的軟件設計,要充分考慮采取必要的抗干擾措施,利用軟、硬件相結合的措施實現系統抗干擾,這也是單片機控制系統具有的優點之一。
1.軟件冗余
軟件冗余技術就是多次使用同一功能的軟件指令,以保證指令執行的可靠性,常從以下幾個方面考慮。
(1) 采用多次讀入法,確保開關量輸入正確無誤。重要的輸入信息利用軟件多讀入,比較幾次結果一致再讓其參與運算。對于按鈕和開關狀態讀入時,要配合軟件延時可消除抖動和誤操作。
(2) 不斷輸出狀態寄存器,及時糾正輸出狀態。設置輸出狀態寄存器,利用軟件不斷查詢,當發現和輸出的不一致時,及時糾正,防止由于干擾引起的輸出變化導致設備誤動作。
(3)對于條件控制系統,把對控制條件的一次采樣、處理控制輸出改為循環地采樣。這種方法對于慣性較大的控制系統具有良好的抗干擾作用。
(4)為防止計算錯誤,可采用兩組計算程序,分別計算,然后將兩組計算結果進行比較,如兩次計算結果相同,則將結果輸出。如果出現誤差,則再進行一次運算,重新比較,直到結果相同,才認為計算正確。
軟件冗余技術是提高軟件設計可靠性,防止干擾造成誤差,保證控制系統正常運行的有力措施。至于在什么地方采用冗余,是根據在軟件設計過程中的薄弱環節和在硬件上易于受到干擾部位而定。采用軟件冗余技術,可使程序運轉的可靠性大大提高。
對于AT89S52 單片機來說,所有的指令都不會超過三個字節,因此在某條關鍵的指令前插入兩條“NOP”指令,則該條指令不會因程序跑飛而跳過沒有被執行,造成整個程序的混亂。這些關鍵的指令一般為:RET、RETI、ACALL、LCALL、AJMP、LJMP、JZ、州Z、JC、JNC、JB、JBC、DJNZ、CJNE 等。同樣可以在某些對系統狀態起關鍵作用的指令前加上冗余指令。
2.增加程序監視系統
利用設置軟件陷阱的辦法雖然在一定程度上解決了程序“飛出”失控問題,但在程序執行過程中若進入死循環,無法撞上陷阱,就會使程序運行不下去。因此設置陷阱的辦法不能有效的解決死循環問題。設置程序監視器(Watchdog)可比較有效的解決死循環問題。程序監視器系統有的采用軟件解決,大部分都是采用軟硬件相結合的辦法。
本系統采用單片機內部定時器進行監視,其方法是在程序一開始就啟動定時器工作,在主程序中增設定時器賦值指令,使該定時器維持在非溢出工作狀態。定時器要稍大于程序一次循環的執行時間。程序正常循環執行一次給定定時器送一次初值,使其不能溢出。若程序失控,定時器則計滿溢出中斷,在中斷服務程序中使主程序自動復位又進行初始狀。
5.開關量輸入、輸出通道設計
5.1有觸點開關量
有觸點開關也稱機械式開關,比如行程開關、控制按鈕、繼電器、接觸器等。有觸點開關分為常開、常閉兩種方式,其顯著特點是無源,開、閉時均會產生抖動,所以在實際應用中需要采取措施消除抖動。
在機械有觸點開關中,當觸點閉合或打開時將產生抖動,使得開關量在瞬間的狀態不穩,由于機械觸點的彈性作用,按鍵開關在閉合時不會馬上穩定地接通,在斷開時也不會立即斷開。因而在閉合及斷開的瞬間均伴隨一連串的抖動,抖動的時間長短中按鍵的機械特性決定,一般為5到10ms。若是工作在計數器方式或作為中斷輸入,將導致系統工作不正常,因此消除抖動是十分必要的。消除按鍵抖動通常有兩種方法:硬件消除抖動和軟件消抖。
硬件消除抖動是通過在按鍵輸出電路上加一定的硬件線路來消除抖動,一般采用R-S 觸發器或單穩態電路。軟件消除抖動是利用延時來跳過抖動動作過程,當判斷有按鍵按下后,先執行一段大于 10ms 的延時程序再去判斷按下的鍵位是哪一個,從而消除抖動的影響。本系統采用軟件消除抖動。
5.2開關量輸入通道
開關量輸入通道也稱數字量輸入通道,它是將用雙值邏輯“1’和“0’表示的電壓或電流的開關量,轉換為計算機能夠識別的數字量。典型的開關量輸入通道通常由以下幾個部分組成:
(1)信號變換器 將工業過程的非電量或電磁量轉換為電壓或電流的雙值邏輯值比如有觸點的機械開關或無觸點的接近開關等。
(2) 整形變換電路 將混有毛刺之類干擾的雙值邏輯信號,或前后沿不合要求的輸入信號,整形為接近理想狀態的方波。
(3)電平變換電路 將輸入的雙值邏輯電平轉換成與 CPU 兼容的邏輯電平
二、系統軟件設計
控系統軟件是為實現數控系統各項功能而編制的專用軟件,即存放于內存儲器中的系統程序。由于數控系統的功能設置與控制方案各不相同,在結構和規模上差別很大般來說,功能越多,所需要的系統程序越長,所占內存空間越大。系統程序的設計直接關系到數控系統各項功能的實現及其將來的擴展,所以它是整個數控系統研制工作中的關鍵,也是工作量最大的部分。一般數控系統軟件設計的原則是,在條件允許的情況下,減少硬件電路,降低成本,盡可能地用軟件來代替硬件。系統軟件必須完成管理和控制兩項仟務,數控裝置的管理任務一般包括編輯輸入、I/0 處理、顯示、診斷等,控制任務包括譯碼、刀具補償、速度處理、插補、位置控制等。
本系統的軟件設計主要分為系統初始化、按鍵、顯示處理及控制脈沖輸出幾部分,事實上每一部分都是緊密相關的,每個功能模塊對于整體設計都是非常重要,單片機AT89C2051 通過軟件編程才能使系統真正的運行起來,軟件設計的好壞也直接決定了系統的運行質量。
程序流程圖的設計遵循自頂向下的原則,即從主體遂逐步細分到每一個模塊的流程。在流程圖中把設計者的控制過程梳理清楚。本程序主要由鍵盤程序、顯示器程序、步進電機驅動程序三部份組成,主程序首先初始化各變量,將顯示器消隱,步進電機驅動的各引腳均輸出高電平,便進入待機狀態,等待鍵入相應操作。然后調用鍵盤程序,并作判斷,如果有鍵按下,則調用鍵盤處理程序。在各個調用程序中相應的編入顯示的程序。
1.系統軟件的總體框架簡介
在此運行模塊中,在開啟定時器后,便進入速度檔位顯示和允許操作鍵盤掃描判斷程序。在連續運行模式中“拍數”和“模式”鍵不可用,“上升”和“下降”鍵為速度調節鍵。數控系統軟件具有多任務性和實時性兩大特點。編輯輸入、預處理、顯示、插補、進給控制等任務需并行及時處理。所以要采用并行處理技術確定軟件各模塊的結構。并行處理技術的方法很多,本系統由于是單 CPU的數控裝置,因而在軟件設計中采用資源分時并行處理技術。一般地采用資源分時共享方法是:各個任務按其需要時間的長短被分割成一個個子任務,系統采用時循環調度和優先搶占調度相結合的方法完成各任務,所以資源分時共享的并行處理只具有宏觀上的意義,從微觀上看來,各個任條還是順序執行的。并行處理中的信息交換主要通過設置各種緩沖存儲區來實現。零件程序首先通過編輯輸入程序的處理存入加工程序緩沖存儲區,這是一個循環存儲隊列,然后插補準備程序(包括譯碼、刀具補償和速度處理)從加工程序存儲區將一個程序段的數據讀入譯碼緩沖存儲區,進行譯碼、刀具補償和速度處理,并將結果放入插補緩沖存儲區。插補程序在每次執行一個程序段的插補運算時,將插補緩沖存儲區的內容讀入插補工作存儲區,用插補工作存儲區的數據進行插補計算并將結果送到插補輸出寄存器。各緩沖區數據交換和更新的同步依靠同步信號指針實現,從而保證了信息的正確傳輸。分時并行處理技術主要需解決的問題是,充分利用計算機的高速數據計算和處理能力,保證每個任務的合理響應時間。
本系統軟件總體結構采用前后臺型。這種模式將數控系統分成兩部分:前臺程序和后臺程序。前臺程序為實時中斷程序,承擔了幾乎全部實時任務,實現插補、位置控制、開關控制等實時功能;后臺程序是一個循環運行程序,實現加工程序的輸入和預處理以及管理的各項任務。后臺程序是本系統的主程序,主要功能是完成整個系統的管理和調度,并完成實時插補前的各項控制任務。
系統啟動和復位重新啟動后,先進入開機界面,稍后自動進入系統初始化子程序為系統的正常工作做好各種準備。初始化子程序的主要工作有:設置 CPU 及其有關接口工作狀態,顯示系統有關的局部標志和全局標志:設置系統參數:設置中斷矢量,使系統能及時獲得操作員的操作控制信號。
圖4.1為正常加工狀態下背景程序的軟件度管理主流程圖。初始化工作完成后,系統進入背景程序的循環中,調度系統工作于編輯、手動、自動、模擬和對刀等工作方式中。編輯工作方式使背景程序進入鍵盤輸入處理程序,用來進行程序的編制、修改和存儲;手動工作方式使背景程序進入手動方式處理程序,按操作面板上的操作狀態轉入不同的處理分支,在實時時鐘中斷服條程序和點動處理程序的配合下,實現各種手動功能,自動工作方式是對零件進行自動加工的一種方式,自動處理程序及時完成各程序段插補前的預處理并完成實時加工控制。
附錄2:程序清單
  1. #include  <reg51. H> //x軸半/全步設定
  2. sbit hfx= P(f7;   sbit   //x軸正反轉設定
  3. ccwx=  P20;    sbit   //x軸脈沖設定
  4. stepx=  P21;   sbit  //y軸半/全步設定
  5. hfy=P2"2;sbit ccwy //y軸正反轉設定
  6. =P2 3;sbit stepy = 7/y軸脈沖設定
  7. P2 4;    sbit  LED = "報警
  8. P2"5; sbit K1 = P2^7;  //確定步進電機工作
  9. sbit shift =P31;      //圓、直線轉換
  10. int  a[]={0x3F,0x06,0x5B,0x4F,0x66,
  11.           0x6D,0x7D,Ox07,0x7F,0x6F,0x77,
  12.           0x7C,0x39,0x5E,0x79,0x71};   //數碼管顯示代碼
  13. Static int Fn1=0;static int Fn2=0;
  14. Static int Fn3=0;static int Fn4=0
  15. Static int Fn=0;
  16. Static int xn1,yn1;
  17. Static int xn2,yn2;
  18. Static int xn3,yn3;
  19. Static int xn4,yn4;
  20. Int cntx=0;
  21. Int  cnty=0;
  22. Int m1,m2.m3,m4,m;
  23. Static int kx,ky,i,mO;
  24. Void circle(void);//函數聲明
  25. Void alarm(void);
  26. Void Delay(int  t);
  27. Void line (void);
  28. Void LI(void);
  29. Void L2(void);
  30. Void L3(void);
  31. void           main(void)
  32. EA   =1:      //開中斷
  33. ITO=1;
  34. EXO=1;
  35. TT1=1;
  36. EXl=1;
  37. while(K1);if
  38. (shift^0)
  39. circle();
  40. if(shift=1)      //調用兩圓子程序
  41. line();
  42. }                //調用岡直線子程序
  43. /*外部中斷0程序*1

  44. void         intO(void)interrupt 0 using 1{
  45.     Delay(2000);
  46. cntx++;
  47.     cntx%:16;
  48. ynl=0;
  49. xnl=10 氺 cntx;
  50. xn2=0;
  51. yn2=10氺cntx;
  52. yn3=0;
  53. xn3=10氺cntx;
  54. xn4=0;
  55. yn4=10氺cntx;
  56. Pl=~a[cntx];
  57. kx=5氺cntx;
  58. }
  59. / * 外 部 中 斷 1 程 序 * /
  60. void         inti(void)interrupt 2 using 2
  61. Delay(2000);
  62.     cnty++;
  63.     Cnty%16;
  64. P0=~a[cnty];
  65. Ky=5氺cnty;
  66. }                        
  67.   //顯示更新程序
  68. void circle(void)     //顯示更新畫圓
  69. {1)1 =~a[cntx];
  70. hfx=0;
  71. hfy=0;
  72. m1=m2=m3,m4=20*cnty;//若K1鍵按下(為0),步進電機開始動作
  73. while (R1=0)
  74. {
  75.   Delay(1000);if(Kl=0)         //延時消抖處理
  76. {
  77. LED=0;  while
  78. (ml)
  79.                //此時調用各象限加工子函數
  80. {
  81.    PO=~0x06;L1();
  82. }
  83. Delay(1000);while(m2){PO=~0x5B;L2();
  84. }Delay(1000);while(m3)   {PO=~0x4F:
  85.     L3()
  86. }
  87. Delay(1000);while(m4)
  88. P0=~0x66;L4();
  89. }
  90. while(!ml&&!m2&&!m3&&!m4)//加工完畢,報警提示
  91.          stepx=stepy=1;
  92. alarm();
  93.          }
  94.        }
  95.       }
  96. }
  97. Void line(void)  //顯示更新畫直線單步插補
  98. {
  99. mO=kx+ky;ccwx=1;ccwy=1;
  100.                   //xy步進電機正轉
  101. while(Kl==0)
  102. //若K1為0,步進電機開始動作
  103. {
  104. EA  =0;
  105. LED=0;while(mO)
  106. {
  107. if(Fn 〉=0)
  108.   {
  109.    Fn =Fn ky;
  110.    ky=ky;
  111. stepx=0;Delay(25);
  112. stepx=1;Delay(25);mO-
  113. =1;
  114. }
  115. if(Fn〈0)
  116. En=Fn+kx;
  117. kx=kx;
  118. stepy=0;Delay     (25);
  119. stepy=1;Delay(25);
  120. mO-=1;
  121. }
  122. }
  123. if(!mO)                 //加工完畢,報警提示
  124. {
  125. stepx=stepy=1;     alarm
  126.   ();
  127. /****                    //顯示更新畫直線比例插補
  128. Kx=100*cntx
  129. ky=100*cnty; while(Kl=0)
  130. {                       //若K1為0,步進電機開始動作
  131. EA =0;
  132. LED=0;while(kx||ky)
  133.   {
  134.    kx=kx-cntx;
  135.    ky=ky-cnty;
  136.    for(m=0;m<cntx;m++)  //脈沖
  137.                    {
  138.        Delay(25);
  139. stepx=0;
  140. Delay(25);
  141. stepx=1;
  142. }
  143. for(m=0;n)<cnty;m++)
  144. Delay(25);
  145. stepy=0;
  146. Delay(25);
  147. stepy=1;
  148. }
  149. }
  150. if(!kx&&!ky)    //加工完畢,報警提示
  151.   stepx=stepy=1;
  152. alarm();
  153. }
  154. }  ****
  155.      }
  156. /各象限插補程序/
  157. voidLI(void)
  158. ccwx=0;ccwy=1;
  159. if(Fnl>=0)
  160. Fnl=Fn1-2*xnl+1;
  161. xnl=xnl- 1;
  162. stepx=0;Delay(25);
  163. stcpx=1;Delay(25);
  164. ml-=1;
  165. }
  166. if(Fnl<0)
  167.   Fnl=Fnl+2*ynl+1;
  168. ynl=ynl+1;
  169. stepy=0;Delay(25);
  170. stepy=1;Delay(25);
  171. m1=1
  172. }
  173. void   L2(void)
  174. ccwx=0;ccwy=0;
  175. if(Fn2>=0)
  176. {
  177. Fn2=Fn2-2*yn2+1;
  178. yn2=yn2~1;m2~=1;
  179. stepy=0;Delay(25);
  180. stepy=1;Delay(25);}
  181. if(Fn2<0)
  182. {
  183. Fn2=Fn2+2*xn2+1;
  184. xn2=xn2+1;m2-=1;
  185. stepx=0;Delay(25);
  186. stepx=1;Delay(25);
  187. }
  188. void     L3(void)
  189. {
  190. ccwx=1;ccwy=0;
  191. if(Fn3 〉=0)
  192.   {
  193.    Fn3=Fn3-2*xn3+1;
  194. xn3=xn3~1;m3-=1;
  195. stepx=0;Delay(25);
  196. stepx=1;Delay(25);}
  197. if(Fn3<0)
  198. {
  199. Fn3=Fn3+2*yn3+1;
  200. yn3=yn3+1;m3-=1;
  201. stepy=0;Delay(25);
  202. stepy=1;Delay(25);}
  203. void    L4(void)
  204.   ccwx=1;ccwy=1;if
  205.   (Fn4>=0)
  206.   {
  207.    Fn4=Fn4-2*yn4+1;
  208. yn4=yn4- 1;m4~=1;
  209. stepy=0;Delay(25);
  210. stepy=1;Delay(25);}
  211. if(Fn4<0)
  212.   {
  213. Fn4=Fn4+2*xn4+1;
  214. xn4=xn4+1;m4-=1;
  215. stepx=0;Delay(25);
  216. stepx=1;Delay(25);}
  217. 報警函數

  218. void   alarm(void)
  219.   {
  220.    for(i=0;i<200;i++)
  221.    {
  222.     LED=0;Delay(150);
  223. LED=1;Delay(150);
  224. //延時函數//
  225. void   Delay(int t)
  226. for(i=0;i<t;i++);
復制代碼

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩免费高清视频 | 日韩一区二区三区视频 | 99国产精品久久久 | 欧美大片一区二区 | 成人免费观看视频 | 久久久久久久久久影视 | 一区二区三区高清在线观看 | 亚洲综合色网站 | 免费一区在线 | 综合网在线 | 亚洲美女一区 | 久久极品| 一级a毛片 | 美国一级黄色片 | 欧美日韩精品一区 | 最近中文字幕在线视频1 | 四虎成人免费视频 | 亚洲精品资源 | 国产精品视频一区二区三区四蜜臂 | 欧美色综合一区二区三区 | 久久之精品| 国产精品视频不卡 | 国产精品一区二区福利视频 | 免费一区 | 久久噜噜噜精品国产亚洲综合 | 美女国产一区 | eeuss国产一区二区三区四区 | 一区二区免费 | 福利网站在线观看 | 午夜影视网| 99在线免费视频 | 在线一区视频 | 五月网婷婷 | 色视频免费 | 91精品国产91久久久久久密臀 | 一本综合久久 | 久久久久无码国产精品一区 | 超碰在线免费av | av激情影院 | 欧美第一页 | 在线视频一区二区 |