1 引言
在數(shù)控機(jī)床中,手動操作面板總是必不可少的,其特點(diǎn)是1.有些輸入量是互斥的,不允許誤操作,由機(jī)械的互鎖關(guān)系來保證要求;2.鍵的通/斷用電平觸發(fā)不同狀態(tài),而不是用沿觸發(fā)不同狀態(tài);3.允許多個狀態(tài)同時輸入并可靠地做出相應(yīng)的反應(yīng);4.能對設(shè)備當(dāng)前狀態(tài)進(jìn)行必要的提示,如使用信號燈、發(fā)光二級管或液晶顯示屏?,F(xiàn)有的設(shè)計大多將手動操作面板的輸入/輸出作為開關(guān)量I/O的一部分,統(tǒng)一由一臺內(nèi)置的或外置的可編程控制器(PLC)進(jìn)行控制。數(shù)控機(jī)床生產(chǎn)廠家根據(jù)自己機(jī)床的工藝特點(diǎn),購買數(shù)控系統(tǒng),經(jīng)過二次開發(fā),形成工藝性能和操作互不相同的數(shù)控機(jī)床產(chǎn)品。二次開發(fā)的工作量絕大部分在于開關(guān)量I/O的設(shè)計,而其中又有60%以上的工作是根據(jù)工藝性能與操作設(shè)計手動操作面板[1]。事實(shí)上,手動操作面板的輸入/輸出僅僅是控制信號開關(guān)量I/O,對其驅(qū)動能力的要求很低,是一類特殊的數(shù)控機(jī)床開關(guān)量I/O。如果將手動操作面板的輸入/輸出與數(shù)控機(jī)床其它開關(guān)量I/O不加以區(qū)別,會大大增加數(shù)控系統(tǒng)二次開發(fā)的工作量,數(shù)控機(jī)床手動操作面板無法標(biāo)準(zhǔn)化和模塊化,其經(jīng)濟(jì)性也會受到很大影響。
本文提出了一種基于89C51/52單片機(jī)的數(shù)控機(jī)床面板智能處理單元,該處理單元通過標(biāo)準(zhǔn)串口與數(shù)控系統(tǒng)交換信息,可以顯示數(shù)控機(jī)床的基本狀態(tài)和對其進(jìn)行手動操作。該工作是國家863計劃“PC外設(shè)型完備數(shù)字機(jī)床及其關(guān)鍵技術(shù)研究”的一部分研究內(nèi)容,已經(jīng)用于三坐標(biāo)數(shù)控銑床。
2 工作原理
89C51/52單片機(jī)具有片內(nèi)ROM、16位計數(shù)和標(biāo)準(zhǔn)串口[2]。在89C51/52單片機(jī)構(gòu)成數(shù)控機(jī)床面板智能處理單元中,一般不需要外部擴(kuò)展ROM和RAM,單片機(jī)I/O口的一位對應(yīng)一個輸入/輸出量,若單片機(jī)I/O口不夠,可以進(jìn)行擴(kuò)展。單片機(jī)以定時中斷檢測輸入,一旦發(fā)現(xiàn)輸入電平變化,就將其對應(yīng)的新狀態(tài)由串口發(fā)送給數(shù)控系統(tǒng)。另一方面,數(shù)控系統(tǒng)通過串口將需要顯示的信息發(fā)送給單片機(jī)。由于采用了串行通信,數(shù)控系統(tǒng)與面板智能處理單元的接口是標(biāo)準(zhǔn)的,操作面板的信息處理基本上不占用數(shù)控系統(tǒng)CPU的時間,而且面板智能處理單元本身成為一個標(biāo)準(zhǔn)化模塊。圖1為數(shù)控銑床面板智能處理單元的原理圖。圖中,數(shù)控銑床手動操作面板的輸入/輸出信息大致有以下幾類:
[align=center]

圖1 數(shù)控銑床面板智能處理單元原理圖[/align]
1)工作方式選擇:手動/自動/回原點(diǎn)
2)單步進(jìn)給量選擇
3)連續(xù)進(jìn)給速度選擇
4)進(jìn)給速度倍率選擇
5)進(jìn)給坐標(biāo)選擇
6)主軸電機(jī)、泵、電磁離合制動器等的通/斷控制
7)急停
8)暫停及顯示
9)進(jìn)給坐標(biāo)超行程顯示
10)故障顯示
其中,工作方式、單步進(jìn)給量和連續(xù)進(jìn)給速度等的選擇與進(jìn)給速度倍率選擇分別用轉(zhuǎn)換開關(guān)1和轉(zhuǎn)換開關(guān)2在不同狀態(tài)間切換。同一個轉(zhuǎn)換開關(guān)控制的狀態(tài)具有機(jī)械互鎖,可以避免由于誤操作同時接通兩個或兩個以上具有互鎖關(guān)系的狀態(tài)。圖1中其余的輸入/輸出量均由單片機(jī)的I/O口直接控制,可保證多個狀態(tài)同時可靠地輸入/輸出。
3 系統(tǒng)軟件
89C51/52單片機(jī)數(shù)控機(jī)床面板智能處理單元上電復(fù)位初始化后,進(jìn)入中斷工作狀態(tài),允許定時中斷和串行中斷。在定時中斷中,將檢測輸入狀態(tài)有無變化,并將變化了的輸入狀態(tài)由串口發(fā)送到數(shù)控系統(tǒng);數(shù)控系統(tǒng)需要由手動操作面板顯示的信息從串口發(fā)送給單片機(jī),并由單片機(jī)串行中斷服務(wù)程序作出相應(yīng)的處理,其程序框圖如圖2所示,其中圖2(a)為主程序框圖,圖2(b)為定時中斷服務(wù)程序框圖,圖2(c)為串行中斷服務(wù)程序框圖。
[align=center]

圖2 程序框圖[/align]
單片機(jī)上電復(fù)位及初始化可以在極短的時間內(nèi)完成,而數(shù)控系統(tǒng)的初始化則需要較長的時間。在數(shù)控系統(tǒng)的初始化沒有完成時,串行通信無法工作,因此單片機(jī)的主程序在完成初始化后,要等待數(shù)控系統(tǒng)從串口發(fā)送“READY”信號,并在接收到“READY”信號后開始對操作面板的輸入/輸出進(jìn)行控制。
在定時中斷服務(wù)程序中,逐一檢查每個鍵的狀態(tài),若發(fā)現(xiàn)某一個鍵的狀態(tài)發(fā)生變化,便將新的狀態(tài)從串口發(fā)送到數(shù)控系統(tǒng),同時退出中斷服務(wù)程序,否則,在檢查完所有鍵后退出中斷服務(wù)程序。為了檢測鍵狀態(tài)的變化,必須將鍵原先的狀態(tài)存放在內(nèi)存中,用00H表示鍵處于接通狀態(tài),F(xiàn)FH表示鍵處于斷開狀態(tài)。當(dāng)讀到某個鍵處于接通狀態(tài)時,先判斷其內(nèi)存中的值是80H還是<80H,若內(nèi)存中值80H,說明鍵原來處于斷開狀態(tài),將其減1后若FCH,則存入內(nèi)存,若<FCH,則表明連續(xù)3次讀入鍵接通,即鍵的狀態(tài)由斷開變?yōu)榻油?,將?nèi)存清為00H(接通狀態(tài));若內(nèi)存中的值<80H,說明鍵原來處于接通狀態(tài),鍵的狀態(tài)沒有改變,將內(nèi)存清為00H(由于有各種擾動,內(nèi)存中可能是一個<03H的數(shù))。當(dāng)讀到某個鍵處于斷開狀態(tài)時,仍先判斷其內(nèi)存中的值是80H還是<80H,若內(nèi)存中的值80H,說明鍵原來處于斷開狀態(tài),鍵的狀態(tài)沒有改變,將內(nèi)存置為FFH(由于有各種擾動,內(nèi)存中可能是一個FCH的數(shù));若內(nèi)存中的值<80H,說明鍵原來處于接通狀態(tài),將其加1后若<04H,則存入內(nèi)存,若04H,則表明連續(xù)3次讀入鍵斷開,即鍵的狀態(tài)由接通變?yōu)閿嚅_,將內(nèi)存置為FFH(接通狀態(tài))。這樣可以有效避免由于鍵抖動和其它干擾造成的誤判斷。這些過程可以準(zhǔn)確地用圖3所示的狀態(tài)轉(zhuǎn)移來加以描述。
[align=center]

圖3 狀態(tài)轉(zhuǎn)移圖[/align]
4 結(jié)論
本文提出了一種新的基于89C51/52單片機(jī)數(shù)控機(jī)床面板智能處理單元,從理論分析和實(shí)際應(yīng)用可以得到以下結(jié)論:
?。?)面板智能處理單元滿足數(shù)控機(jī)床手動操作面板的功能需求,軟硬件設(shè)計合理,可靠性高;
?。?)利用串行通信,使手動操作面板成為一個接口簡單并且標(biāo)準(zhǔn)的模塊;
(3)本文提出了一種軟件消除鍵抖動的算法,該算法具有可靠和簡單等優(yōu)點(diǎn);
?。?)面板智能處理單元具有很好的擴(kuò)展性,可以十分方便地擴(kuò)展單點(diǎn)輸入/輸出口,還可以帶動數(shù)碼或液晶顯示。