朱衛國 樊留鎖
摘 要 單片機作為嵌入式控制單元已得到廣泛的應用,它是計算機,但是相比高端的數控系統計算機而言,有些小巫見大巫,盡管如此單片機同樣可以拿來做數控系統的計算機,本文就一款常見的單片機應用于數控系統的可能性及實施方案進行了一些探討和嘗試。
關鍵詞 數控 單片機 方案
中圖分類號:TH138文獻標識碼:A
0引言
第四代及以后的數控系統是計算機數控系統,經歷多年的發展已非常成功地應用于各個方面,作為數控系統用的計算機在硬件上要求很高的性能,在軟件上要求非常復雜的系統程序,是由專業的集團公司生產制造的,產品無一例外地是向著高精尖方面發展,在應用上造價非常昂貴,這就使得在一些特殊場合的應用顯得被動和高投入,另外我們不會想著是否可以通過一些常用的控制器和伺服裝置自行設計制造一套低成本個性化的數控系統,這似乎有點天方夜譚,而其實如我們真的這樣想了,并且去做了,發現這是可以實現的,而且只需要一個60多KB容量的單片機就可以實現。
1高速高性能單片機是單片機微數控得以實現的基礎
我們在此應用的是8051檔次的8位單片機,因為畢竟要用于開發數控系統,性能太低了是沒有實用價值的,配置用戶程序空間60KB,RAM是1280Byte, 2KB的EEPROM,單時鐘/機器周期(1T)的單片機,工作頻率范圍最大35MHz,兩個全雙工異步串行口(UART),可分別有于數據顯示和程序下載,有40個引腳36個I/O口,這就是宏晶STC單片機 STC12C5A60S2。實踐證明,這樣的硬件配置的單片機開發的包括常用FMS指令和常用G指令在內的整個數控系統做出來也不過20K的大小,還有30K多的容量可以用于存放用戶程序,最多可支持1200個用戶程序段,而某些系列的PLC定位模塊僅支持600個程序段的編程,而且編程非常麻煩,在速度方面,用33MHZ的晶振,1微米的分辨率,就可以走出非常滿意的速度。
2減小系統程序容量提高程序運行速度的方法
我們選用的硬件最大才有62KB的ROM空間和1280ByteRAM空間,可謂是捉襟見肘,所以在編制程序時必須要精打細算還要兼顧運行速度問題,以下僅僅是就此舉幾個實例。
刪去不必要的功能,數控系統有很多功能,但對于單片機這樣一個簡單的計算機來說龐大的系統功能是不可能的,有好多也是不必要的,例如半徑和長度補償功能,如果用于機械加工,可以通過自動編程軟件編程來實現,如果不是用于機械加工則更不必要了,其它好多功能都是可以舍棄或不得不舍棄的,總的來說只需要具有G00~G04功能,F功能,M功能,S功能,絕對坐標編程功能,循環啟動功能,進給保持功能,復位功能,急停功能,進給速度增減功能,主軸轉速增減功能,手動或手輪進給功能,回零功能,手動/自動轉換功能,三坐標以及主軸轉速和進給速度顯示功能等等,再結合自動編程軟件就可以達到實用的程度。
平方的算法,我們知道平方的運算可以用函數實現也可以用乘法實現,但二者編譯后的容量卻相差很多,以long型數據為例,用pow函數做的運算要比用乘法做的運算多1808個字節。
對變量的類型進行合理地設置,不同類型的變量所占用的空間是不一樣的,在編制系統程序時要合理設置變量的類型,力爭使變量占用空間最少,char型的變量夠用就不要用int型,int型的變量夠用就不要用long型, 浮點數sing夠用就不要用double型,當然絕對不能定義的變量的容量過小,不然會出現嚴重的錯誤。
共用變量節省RAM空間,不會同時用的兩個或更多個變量可以共用同一個變量,例如同一時間段內圓弧插補和直線插補以及快速定位是不會同時運行的,我們就可以定義這樣一個變量float idata RorZINC,在圓弧插補時用作圓弧半徑,而在G00或者G01插補時用作Z軸增量坐標,這一方法可以節省大量的RAM空間。
Long數據的快速傳送,long型數據占用四個字節空間,在進行外部傳送時最簡單的運算也要進行三次每次八位的移位,但是如果我們知道這四個字節的地址,就可以直接把這四個字節傳送出去,省去了傳送前的所有運算,這時我們可以這樣定義變量:
unsigned? Long? data? X? ? ?_at_ 0x40;
unsigned? char? data? X1? ? _at_ 0x40;? ? //最高字節
unsigned? char? data? X2? ? _at_ 0x41;
unsigned? char? data? X3? ? _at_ 0x42;
unsigned? char? data? X4? ? _at_ 0x43;? ? //最低字節
當需要把X變量傳送出去時,直接傳送X1~X4四個變量即可,在接收側,反其道而行,就可以直接合成變量X的值。
尺寸數據的單位,在設計插補程序時其分辯率是1微米,但是如果依習慣用毫米做單位,步進量需以0.001計算,實際證明這樣運算是會產生誤差的,而且輸出坐標時,為了不丟失小數位還要再乘以1000,既增大了程序量又拖慢了運行速度,然而如果用微米做單位,就會三全其美。
充分利用子程序功能,子程序可以最大限度地節省程序占用的空間,在程序編寫及階段性完成后要核查一下是不是可以組合出子程序功能。
3 VB語言的應用使得單片機微數控的編程變得容易,并且和大眾化數控程序相兼容
為了使系統盡可能地兼容多數數控系統的程序,所以其格式必須要大眾化,但是大眾化G代碼指令程序的格式在普通單片機C語言程序中是不被認可的,只會被認為是一個未被定義的變量,為此可以用VB語言編制一個可視化轉換程序,把G代碼指令程序轉化為單片機C語言兼容的函數格式,例如G代碼指令程序G01 X12.300 Y45.600 Z78.900,通過轉化后可處理為G01(12.300,45.600,78.900)格式,如此就變成了一個C語言認可的子程序調用從而可以實現直線插補。通過實踐證明,這種方法,簡便易行,可把自動編程生成的長篇的程序轉化為合法格式,直接復制到單片機C語言程序中去,而不用做修改,同樣地,F、M、S代碼都要做類似的轉換。
4系統方案的實施
數據顯示方案,結合單片機的數據顯示方案有許多種,但在本方案中為了節省CPU必須采用靜態顯示,為了節省I/O口,必須采用串行輸出,綜合這兩點可以采用74595或74164移位寄存器的串行七段數碼管,其優點是僅占用三個I/O口(異步串行通訊的兩個I/O口和一個普通I/O口,而74164只需要異步串行通訊的兩個I/O口)即可,而且可非常靈活地根據實際需要調整其位數,在此每個坐標需要8位七段數碼管,三個坐標需要24位七段數碼管,進給速度需要四位數碼管進行顯示,主軸轉速的顯示可采用第三個單片機進行實時顯示,具體方案不受限制。在數據顯示方案上普通的數控系統坐標是非常頻繁刷新的,至少說是快于人眼的反應能力的,這其實是不必要的,本方案中受單片機速度的限制,顯示方案采用的是一個插補程序段刷新一次(圓弧在過象限處和節點處均刷新)的方案,另外由于數碼管顯示部分功耗較大,不宜和單片機共用電源。
插補功能的實現,最能體現數控系統不同于一般程控系統的一點就是插補功能,所以這是本方案成功與否的重點所在,根據數控原理內容,插補有多種方法,而最易于編制和實現的就是逐點比較插補方法,有一定的C語言基礎就可以編制出插補的系統程序,雖然如常見的數控機床功能一樣只有直線和圓弧的插補,這就足夠了,本方案中我們可以做出一維、二維、三維直線插補、二維圓弧插補和整圓插補,至于說其它的二次曲線,則可以由宏程序完成,我們知道數控程序是具有宏程序功能的,這使得我們在處理復雜任務時游刃有余,顯然宏程序也就是C語言、BASIC語言或由這二者學派生出來的其它語言,本方案中開發程序就是用的C語言,所以它天生具在宏程序功能,用戶只需要定義出自己需要的變量,就可以任意地編制宏程序。
多種系統方案,單機微數控的系統程序和用戶程序在同一個空間存儲,這種結構的系統程序是對用戶公開的,不但限制了用戶程序的容量,對系統程序的保護以及對知識產權的保護都不利,所以僅適用于開發者個人應用或不需要用戶修改程序的方案,為了克服上述缺點,也可以開發雙機微數控,這種結構的系統一個單片機用于存儲系統程序,另一個單片機專一地用于存儲用戶程序,如此既擴展了用戶程序空間,也保護了系統程序和知識產權,兩個單片機間的通訊可以并行也可以串行,并行速度高但占用I/O點數多,串行占用I/O口少,但速度低些,用串行通訊時還可選擇用異步串行通訊UART或者是同步串行通訊SPI;定位模塊是配套PLC開發的,有些品牌的PLC自身開發有定位模塊,但可能存在價格昂貴、編程不方便、容量偏小等缺點,特別是當需要頻繁修改用戶程序時就會顯得效率低下。
5系統的執行機構和機械本體
執行機構性能從低到高可選的方案有:開環步進電機加細分驅動器、閉環步進電機加專用細分驅動器和交流伺服電機加交流伺服驅動器方案,至于具體用哪個看用戶的需要,交流伺服系統性能要優于步進伺服系統,但造價高。
主軸控制系統可選用通用變頻器加異步電動機方案或者直流無刷電動機加驅動器方案,在速度控制上前者可以實現開環控制,直接由單片機提供給變頻器模擬或數字的轉速指令即可,后者要對速度進行精確控制必須采用閉環控制,由于主數控系統單片機I/O口及速度的原因,需要再加一個單片機進行閉環控制。
機械機械本體性能從低到高可選的方案有: 同步帶導軌系統、普通矩形絲杠導軌和滾珠絲杠導軌系統,具體的要看造價的高低和對精度以及速度的需要。
6單片機微數控的意義和評價
單片機微數控使數控的應用變得廉價和普及,數控系統由專門的公司開發制造,一般來說功能強大價格不菲,對于我們個性化的需要很不合適,當我們不需要強大的功能、很高的精度時,就要多付出成本,而單片機微數控則可以充分地實現個性化,進行量身打造,需要什么功能就做什么樣的功能,避免多余功能增加成本。
單片機微數控可以應用于許多方面,如木工機床、數控車床和銑床、雕刻機、普通機床的數控化改造、需要精確定位和復雜運行軌跡的生產線,如碼垛機器人、三維焊接機器人、精巧的食品加工機械等等,特別適用于不需要經常改變用戶程序的場合。
不可否認單片機微數控有其固有的缺點,功能不夠多、穩定性有待進一步開發、只能存儲一套用戶程序、必須結合PC機才能應用,用戶必須有一定的單片機和C語言的基礎等等,盡管如此單片機微數控仍不失為一個不錯的方案。
參考文獻
[1] 王靜霞.單片機基礎與應用[M].北京:高等教育出版社,2016.
[2] 趙曉安.MCS-51單片機原理及應用[M].天津:天津大學出版社,2001.
[3] 夏繼強.單片機實驗與實踐教程[M].北京:北京航空航天大學出版社,2001.
[4] 張麗華,馬立克等.數控編程與加工技術[M].大連:大連理工大學出版社,2004.