朱土榮(東風柳州汽車有限公司,廣西 柳州 545005)
基于AT89S52的GSK 980TA數(shù)控程序傳輸器
朱土榮
(東風柳州汽車有限公司,廣西 柳州 545005)
摘 要:從實際生產(chǎn)需要出發(fā),通過對電腦與廣數(shù)系統(tǒng)980TA之前的串行通訊進行深入的研究與分析,結合自身的電子制作基礎,從零開始研發(fā),設計并制作了一個數(shù)控程序傳輸器,并投入到實際生產(chǎn)應用。
關鍵詞:AT89S52;GSK 980TA系統(tǒng);程序傳輸器
東風柳汽專用件車間,是我實習所在的車間,主要負責生產(chǎn)公司的各類非標總成及零件。車間里有六臺數(shù)控車床,使用了廣州數(shù)控設備有限公司生產(chǎn)的GSK980TA數(shù)控系統(tǒng)。該系統(tǒng)只能存儲63個程序,由于車間生產(chǎn)的零件較多,機床內(nèi)部的存儲空間遠遠無法滿足要求。車間之前的做法是當程序存儲空間不足時,就刪掉一些最近不用的程序,然后手工鍵入新的程序。費時費力,且無法保證準確性。經(jīng)常有因為程序錯誤導致零件報廢的情況發(fā)生。
因此需要改變這一方式,使用傳輸程序代替手工鍵入程序。
為了解決這一問題,我上網(wǎng)查找了很多資料,并詳細透徹的研讀了數(shù)控系統(tǒng)的說明書。根據(jù)系統(tǒng)說明,該系統(tǒng)只支持與電腦RS232通信,交換程序、參數(shù)等。既然可以使用筆記本電腦與機床通信實現(xiàn)程序傳輸,那么就可以設計一個通訊器做為電腦與機床之間的移動電子版,與U盤功能類似,只不過這里使用的232通信罷了。
既然要設計通訊器,那么通訊器應該具有以下功能,以滿足需求
(1)手持式通訊器,鋰電池供電,帶充電、保護、升壓模塊;
(2)有向電腦發(fā)送、從電腦接收、向機床發(fā)送、從機床接收四種功能;
(3)帶背光顯示屏,能顯示通訊狀態(tài)與程序號,可存儲多個程序。
4.1 要制作通訊器,首先要實現(xiàn)電腦與機床之間的程序傳輸
首先安裝數(shù)控系統(tǒng)的傳輸軟件“凱恩帝串口通信3.0版”,這個軟件是兼容軟件,窗口化操作,比原廠軟件的DOS界面要友好很多。然后根據(jù)系統(tǒng)說明書“第四篇安裝連接 ? 第二章接口信號定義及連接”的“圖 2-21 系統(tǒng)與PC 機的連接”制作了一根用于電腦與機床之間傳輸程序的通信電纜。然后運行通信軟件,根據(jù)GSK980TA系統(tǒng)說明書的第三篇之第十一章“通訊”,可知數(shù)控系統(tǒng)默認的通信格式為:波特率:2400,停止位:2位,數(shù)據(jù)長度:7位,校驗方式:偶校驗。
準備工作完成后,可以開始實驗通訊。通訊不像U盤拷文件那么簡單,需要特定的按鍵與操作順序才能完成,同時還需要關注數(shù)控系統(tǒng)內(nèi)的參數(shù)設置,具體操作參考系統(tǒng)說明書“第三篇操作說明 ? 第十一章通訊”。
經(jīng)過實踐,機床與電腦之間的通信順利實現(xiàn),程序可以在機床與電腦之間自由傳輸。
4.2 破解通訊協(xié)議
通訊上面的實驗,程序實現(xiàn)了順利的傳輸,可是整個傳輸過程到底是怎么實現(xiàn)的呢?這個時候就破解通信協(xié)議,因為所有的資料、網(wǎng)上的論壇都沒有公開這個通信協(xié)議。如何破解呢,答案當然是監(jiān)聽通信過程,然后用通訊器模仿通信對象的另一方。監(jiān)聽的方法有兩種:硬件監(jiān)聽與軟件監(jiān)聽。
硬件監(jiān)聽是使用另外一臺機器,機器上安裝有兩個串口硬件,僅使用串口的接收RXD信號,這兩個信號分別接到電腦與數(shù)控系統(tǒng)通信線的TXD與RXD線上。這樣就可以在另一臺電腦的串口助手上清楚的看到兩臺機器間的通信了。這種監(jiān)聽方法是硬件級的,肯定可以監(jiān)聽到數(shù)據(jù),且不會被通信著的設備發(fā)現(xiàn),但實現(xiàn)方法比較復雜。
第二種監(jiān)聽方法是軟件監(jiān)聽,從電腦端入手,使用串口監(jiān)聽軟件,監(jiān)控電腦串口上的數(shù)據(jù)流。這種方法最簡單,只要安裝軟件就可以了。監(jiān)聽軟件有很多,而且有的通信軟件內(nèi)部有防監(jiān)聽功能,具體怎么實現(xiàn)不詳,在這里,我選擇了Portmon, Portmon是一個用于監(jiān)控系統(tǒng)串口與并口活動的工具。它不但可以監(jiān)控本地機的串口與并口,而且可以通過TCP/IP協(xié)議監(jiān)控其它計算機。
然后安裝好該軟件,開始監(jiān)聽。首先監(jiān)聽的是電腦向數(shù)控系統(tǒng)傳輸程序的流程,傳輸?shù)牡某绦蚝芎唵危皇且粋€程序號O1234,監(jiān)聽并分析數(shù)據(jù)流后,總結出了電腦向機床發(fā)送程序的通訊流程:
(1)機床會先向電腦發(fā)送一個特征字11H,代表電腦可以發(fā)送了;
(2)此時電腦開始向機床發(fā)送數(shù)據(jù)流:25H 20H 0AH 3AH
31H 32H 33H 34H 0AH 25H 25H 25H。開頭與結束的25H是電腦附加的,為內(nèi)容開頭與結束特征字,中間的內(nèi)容為程序實體內(nèi)容。
4.2.3 最后機床向電腦發(fā)送一個HEX碼:13H。代表接收成功。
然后我又監(jiān)控了很多種通信過程,兩種通信模式:機床發(fā)送給電腦,機床從電腦接收,不同的程序內(nèi)容:各種程序號,只有程序號的,有程序號和程序內(nèi)容的。終于總結出了機床與電腦通信的規(guī)律,而且在這里只是需要制作一個通訊器,不需要對中間的內(nèi)容進行詳細的解析,只需要對開頭和結尾的幾個字節(jié)進行分析就行了,其它內(nèi)容都是原版不動的存儲起來就行了。
5.1 通訊器的功能框圖如下
5.2 通訊器主要元件選型
核心零件——單片機選擇了AT89S52,原因很簡單,這個是我平時搞電子常用的單片機,目前我比較拿手的也是這個單片機,為了快速的完成這個通訊器,在這里沒有考慮其它的單片機。
存儲器——ISSC65256。由于AT89S52只有8k字節(jié)的片上Flash,且單片機無法自編程,加上片上只無集成了256字節(jié)RAM。要存儲數(shù)控系統(tǒng)的程序,這顯然是不夠了,于是我選擇了ISSC62565這個外部并行總線的32KRAM,這個芯片我在大學的時候用過,很適合AT89S52,雖然與單片機的聯(lián)線比較多,但使用起來很簡單,存儲速度也比單片機快多了,程序處理也很簡單。
RS232串行通信接品電路,在這里無疑是選用MAX232芯片。我設計的這個模塊還有一個特色,就是支持交叉與直連轉換。串行通信都要求一方的TX信號線接另一方的RX信號線,否則無法通信。在這里我使用了一個6毫米的雙刀雙擲轉換開關,如果無法通信,可以通過開關轉換,以保證通信成功,而不用更換通信線。
剩下的就是其它的外轉電路:RS232轉TTL電路及外圍元件,1602字符型顯示屏及外圍電路,按鍵電路、鋰電池升壓及充電控制電路(在這里選擇了現(xiàn)成的一體化模塊)。在這里使用了很大眾化的電路板設計軟件:Altium Designer Sumer 06。
5.3 程序調(diào)試
由于這個單片機的資源實在是有限,我依舊只能使用匯編語言來設計程序,程序比較難讀,但不得不佩服匯編的高效率。程序運行得很好,在這里摘錄了一段通訊器從機床接收程序的子程序TAFA。程序內(nèi)容如下:
TAFA: CLR TI ;清發(fā)送中斷標志,防止上次影響
CLR RI ;清接收中斷標志,防止上次影響
MOV DPTR,#LINE9 ;顯示"TA Kai Shi FA"
LCALL DISPA1
MOV DPL,70H;重新載入程序存儲首地址MOV DPH,71H
JNB RI,$ ;等待計算機發(fā)送程序
CLR RI
MOV A,SBUF ;把接收緩沖器的內(nèi)容送到累加器
CJNE A,#12H,TAFA;檢測發(fā)過來的內(nèi)容是否以12開頭
JNB RI,$ ;等待計算機發(fā)送程序,不存儲12這個開關
CLR RI
MOV A,SBUF;把接收緩沖器的內(nèi)容送到累加器25H
MOVX @DPTR,A;存儲接收來的內(nèi)容
INC DPTR ;指向下一地址
TAFA1: JNB RI,$ ;接收內(nèi)容
CLR RI
MOV A,SBUF
MOVX @DPTR,A ;存儲接收來的內(nèi)容
INC DPTR ;指向下一地址
CJNE A,#0A5H,TAFA1;收到25H則認為程序內(nèi)容結束。
TAFA2: JNB RI,$ ;再接收一個25H
CLR RI
MOV A,SBUF ;把接收緩沖器的內(nèi)容送到累加器25H
CJNE A,#14H,TAFA ;收到14H則認為程序內(nèi)容結束,不存儲14H
LCALL XUHAO ;調(diào)用分離并顯示程序號的子程序
MOV DPTR,#LINE13;顯示"TA FA Wan "
LCALL DISPA1
RET
截止至目前,通訊器已經(jīng)投入實際生產(chǎn)應用半年有余,生產(chǎn)班組反饋良好,每次傳輸程序都能正確完成,數(shù)控班班長電腦內(nèi)的程序庫也一天天的完善起來。現(xiàn)在已經(jīng)很少看到有人面機床的十寸顯示屏上用按鍵輸入程序了。可以說,這個通訊器的制作還是相當成功的。
新一代的數(shù)控系統(tǒng)都已經(jīng)意識到了串口傳輸?shù)牟槐悖娂娂闪诵滦偷膫鬏斀涌诩皡f(xié)議,比如USB接口、CF卡接口、以太網(wǎng)接口等。但對于公司已有的機床設備來說,不可能因為一個程序傳輸?shù)牟槐愣p易的更換整個數(shù)控系統(tǒng)。數(shù)控系統(tǒng)在整個機床的壽命周期里一般是不更換的。這里所制作的數(shù)控機床通訊器,雖然不是非常高科技的制作,甚至由于AT89S52這顆CPU顯得有些落伍。但通訊器還是解決了老系統(tǒng)程序傳輸這個難題,提高了車間的生產(chǎn)效率,降低了因程序錯誤引起的廢品率。
參考文獻:
[1]GSK980TA車床用數(shù)控系統(tǒng)使用手冊[M].廣州數(shù)控設備有限公司出版,2005(05).
[2]陳明熒.8051 單片機課程設計實訓教程[M].清華大學出版社.
作者簡介:朱土榮(1984-),男,壯族,廣西人,本科,助理工程師,從事設備電氣工作,東風柳州汽車有限公司車架車間設備科電氣設備工程師。