本發明涉及數控機床的技術領域,特別涉及一種基于TCP/IP協議的數控機床伺服調整方法。
背景技術:
隨著現代科技的發展,對數控系統的精度速度要求越來越高。通過調整數控系統有關伺服的參數是實現更高速度更高精度地加工的一種有效且常用的辦法。而目前數控機床在加工過程中不能直觀地反應出機床電機的運行細節信息,操作員只能憑借數控系統上基本的運行信息并結合自身經驗來定制數控系統的伺服參數。因此,傳統的伺服調整方法使數控系統的加工精度和加工速度受到人為因數影響,并存在使用不便的問題。當前計算機和網絡技術的迅速發展,為伺服電機的實時數據、動態顯示和分析提供了必要的前提和條件,網絡技術的發展也為數控系統的數據傳輸提供了方便。利用計算機強大的運算能力更能迅速準確地分析出數控機床的運行過程和狀態。為此,基于TCP/IP的數控機床伺服調整方法的計算機軟件將能直觀地體現伺服數據、并能實現實時調整數控系統伺服參數,以使機床更高效地工作。
技術實現要素:
本發明的目的在于克服現有數控系統在進行伺服參數調整時操作不便,伺服數據不能實時直觀體現等缺點,提供一種基于TCP/IP協議的數控機床伺服調整方法。
為了到達上述目的,本發明采用以下技術方案:
本發明基于TCP/IP協議的數控機床伺服調整方法,包括下述步驟:
S1、啟動數控系統,創建網絡通信線程,初始化網絡服務器并綁定端口和IP,等待客戶端請求連接;
S2、當客戶端和數控系統建立連接后,數控系統等待客戶端發送各種命令數據包,如果在指定時間內客戶端和數控系統沒有進行任何數據通信,則數控系統將使用ping校驗連接是否已斷開;
S3、當客戶端和數控系統建立連接后,用戶客戶端上可以查看伺服參數、上傳伺服參數、采集數控機床伺服數據、分析和顯示伺服波形,各操作互不影響,可同時進行,實現數控機床伺服參數在客戶端軟件界面上邊采集顯示伺服波形,邊微調伺服參數,最終制定更優的伺服參數使數控機床有更快的速度和更高的精度。
作為優選的技術方案,步驟S2中,數控系統將使用ping校驗連接是否已斷開的具體方法為:
當客戶端與數控系統在一定的時間內沒有按約定的數據包通信時,將通過ping函數命令去檢測當前網絡是否連接正常,不正常就報警提示處理;
數據包格式:關鍵字串+操作類型+當前包號+總包數+具體數據結構包。
作為優選的技術方案,步驟S3中,查看伺服參數的具體步驟如下:
S21、客戶端給數控系統發送請求下載伺服參數的數據包;
S22、數控系統解析數據包,通過操作類型標志知道是下載伺服參數的請求,調用相關函數GSKRM_GetServoParam(hInst,int number,int valcnt,double*pval)取得相應參數信息;參數包括伺服驅動器內部參數;
S23、數控系統向客戶端發送附帶參數信息的數據包。
作為優選的技術方案,步驟S3中,所述的上傳伺服參數的具體步驟如下:
S31、客戶端給數控系統發送請求上傳伺服參數的數據包;
S32、客戶端給數控系統發送需要上傳的伺服參數數據包;
S33、數控系統解析數據包,通過操作類型標志知道是上傳伺服參數的請求,判斷當前是否允許上傳伺服參數,若允許,通過函數GSKRM_SetServoParam(hInst,int number,int valcnt,double*pval)發送伺服參數數據包,并應用到數控系統,若不允許,舍棄伺服參數數據包。
作為優選的技術方案,步驟S3中,所述的伺服數據具體數據內容如下:
S41、進給軸的指令位置量、電機驅動反饋的位置量、光柵尺反饋的位置量;
S42、主軸的指令脈沖數、電機驅動反饋的脈沖數;
S43、PID指令轉速、實際轉速;
S44、伺服指令電流、伺服實際電流。
作為優選的技術方案,所述的采集數控機床伺服數據的具體步驟如下:
S51、客戶端請求建立額外的數據通信連接;
S52、當數據通信連接建立后,客戶端給數控系統發送請求采集機床伺服數據的數據包;
S53、數控系統解析數據包,知道是采集機床伺服數據的請求,開始從DSP取得伺服數據并緩存在內存中;
S54、數控系統網絡通信線程循環調用函數setRunMonitor(int monitorType,int spindle,int axis1,int axis2,int*cnt,struct PosUnit Pos[])從內存中取得伺服數據,并使用數據通信連接向客戶端發送附帶伺服數據的數據包,內存數據是為了多線程運行時,提高線程并發處理而設置的多段數據的緩沖結構,從而避免因數據未及時取走而丟失數據的情況;
S55、客戶端循環接收附帶伺服數據的數據包,并緩存在計算機內存中。
作為優選的技術方案,步驟S52和步驟S53中,利用伺服數據的位移數據計算數控機床進給軸的進給速度、進給加速度,選擇使用一階慣性濾波及其濾波系數濾去其高頻信號,觀察其變化趨勢;對于數控機床電機的轉速、位移、電流伺服數據,直接繪制到用戶界面上;對于具體的圖形,直線插補的誤差分析,用戶可獲取直線的方差、最小二乘法擬合直線的角度、和直線度;圓弧插補的誤差分析,用戶可診斷反向間隙、反向躍沖、比例不匹配誤差。
作為優選的技術方案,所述的分析和顯示伺服波形的具體步驟如下:
S61、客戶端選擇需要顯示的伺服數據波形;
S62、客戶端界面線程準備從內存中取出伺服數據并繪制相應曲線;
S63、客戶端在接收到伺服數據后通知界面線程從內存取出伺服數據繼續繪制相應曲線。
本發明與現有技術相比,具有如下優點和有益效果:
1、本發明使用計算機分析伺服數據,運算準確、快速,操作方便。
2、本發明可把數控機床加工過程的伺服數據繪制成實時曲線,伺服電機數據細節清楚地體現在顯示屏上。
3、本發明可以邊觀察伺服數據及其繪制的曲線,邊調整伺服參數,使操作者更容易了解數控系統伺服參數對電機的影響。
附圖說明
圖1是本發明數控系統端網絡模塊框架圖;
圖2是本發明客戶端軟件網絡模塊框架圖;
圖3是本發明計算機客戶端軟件伺服數據處理流程圖。
具體實施方式
下面結合實施例及附圖對本發明作進一步詳細的描述,但本發明的實施方式不限于此。
實施例
如圖1所示,基于嵌入式linux操作系統,實現TCP/IP的數控系統網絡服務器模塊。網絡服務器主要由網絡通信模塊和網絡業務處理模塊組成。網絡通信模塊基于linux API的select模型設計,面向多客戶端,多連接,負責接受和管理客戶端的連接、接收數據包、發送數據包。數控系統啟動后,啟動網絡通信線程,初始化服務器響應連接請求的socket,并把該socket加入到select模型的監聽集合里。當有客戶端請求連接時,得到與客戶端通信的新socket,繼續把該socket加入select模型的監聽集合里。服務器使用類似于FTP連接協議模式,分為主連接和數據連接。主連接負責通信特定大小的命令數據包,數據連接負責通信數據流,數控系統服務器發送伺服數據到客戶端使用數據連接,數據連接依附于主連接,當主連接斷開時,數據連接自動斷開。建立連接后,客戶端通過發送數據包(ATTR_HOSTPORT)來告知服務器該連接(socket)是依附到哪個主連接的數據連接或獨立的主連接。網絡業務處理模塊即負責解析數據包,根據數據包包頭的指令來執行相應的操作,需要發送數據包到客戶端時即把數據包投遞到網絡通信模塊。
如圖2所示,由于數控系統服務器支持多個socket同時通信,為了實現采集伺服數據的同時可以上傳參數,實現各操作相互獨立,互不影響,客戶端網絡模塊使用了多socket多線程的方式。當客戶端軟件啟動后,點擊【開始】菜單的【新建終端】子菜單,輸入IP、端口號,新建一個CNC的連接,將創建一個網絡通信對象(netClient)。用戶點擊菜單欄的【操作】菜單中的【連接】子菜單,netClient將創建線程A,初始化socket0,使用socket0請求數控系統服務器建立連接。當連接建立后,發送命令數據包(ATTR_HOSTPORT),指定該連接為主連接。此時,線程A通知界面線程連接數控系統服務器已成功,接著進入select模型的循環中監聽socket0,隨時接收數控系統服務器的應答數據包。用戶點擊【參數】按鈕,界面線程調用netClient的方法,通過socket0發送請求下載參數的命令數據包(PARAM_OPT)。服務器處理后,將發送命令數據包(PARAM_OPT)及相應參數數據到socket0。線程A的select模型監聽到有數據來時,接收并解析命令數據包,判斷是下載參數的應答命令,繼續接收后續附帶參數信息的數據包,并壓入netClient的緩存隊列中。接收完畢后,線程A發送信號通知界面從參數信息緩存隊列中讀取參數并顯示。同理,用戶點擊參數窗口下的【上傳】按鈕,界面線程調用netClient的方法,通過socket0發送請求上傳參數的命令數據包(PARAM_OPT),接著發送附帶參數信息的數據包。服務器處理后,回發應答命令數據包(PARAM_OPT),并回發成功上傳的參數信息數據包,線程A接收并解析命令數據包,接收參數信息,通知界面讀取參數緩存隊列,界面即確認成功上傳的參數。用戶需要采集并分析伺服數據時,點擊【采集】按鈕,此時,界面線程通過netClient的方法創建線程B,并初始化socket1,請求與數控系統服務器建立連接。連接成功后,發送命令數據包(ATTR_HOSTPORT),指定socket0為其依附的主連接,即當socket0建立的連接斷開時,socket1會斷開連接并結束線程B。指定連接屬性后,線程B通知界面線程數據連接已就緒,接著進入select模型監聽socket1,隨時接收數控系統服務器發送的數據包。界面線程得知數據連接已就緒后,通過netClient對象,使用socket1發送命令數據包(MONITOR_OPT)請求采集伺服數據。數控系統服務器解析命令數據包,開始從DSP循環讀取n組伺服數據,發送命令數據包和n組伺服數據包到socket1。線程B的select模型監聽到socket1有數據到來,先接收并解析命令數據包,得知接著有n組伺服數據,再接收伺服數據數據包。每接收到一組,壓入伺服數據緩存隊列中,接收完n組伺服數據后,線程B發送信號通知界面線程可以取出伺服數據。
如圖3所示,用戶通過點擊【分析】按鈕,在彈出的窗口中選擇需要顯示的曲線。界面線程判斷當前伺服數據緩存隊列是否存在數據,若存在,調用對應的函數計算曲線縱坐標和橫坐標,并繪制到界面上的坐標系。若不存在,即在界面線程接收到網絡通信線程發送信號才從伺服數據緩存隊列讀取數據,同理,調用對應函數計算曲線縱坐標和橫坐標,并繪制到界面的坐標系。在伺服數據采集過程,客戶端軟件的網絡通信線程每接收到n組數據發送一次信號通知界面線程讀取數據并繪圖,實現了一個邊采集邊繪圖的過程,同時也不影響參數的上傳。
上述實施例為本發明較佳的實施方式,但本發明的實施方式并不受上述實施例的限制,其他的任何未背離本發明的精神實質與原理下所作的改變、修飾、替代、組合、簡化,均應為等效的置換方式,都包含在本發明的保護范圍之內。