運動控制器是一種硬件設(shè)備,主要用于運動控制和運動控制系統(tǒng)。它可以接收來自計算機或其他控制設(shè)備的指令,控制電機、伺服電機、氣缸、閥門、編碼器等執(zhí)行器,控制它們按照特定的速度和軌跡進行運動。
運動控制器通常具有高速計數(shù)器、PWM輸出、數(shù)字輸入輸出、模擬輸入輸出等功能,以及各種通信接口,如PCI、PCIe、USB、以太網(wǎng)等。運動控制器的種類很多,主要包括通用運動控制器、伺服電機控制器、步進電機控制器等。不同種類的運動控制器適用于不同類型的運動控制應(yīng)用,如機床、機器人、自動化設(shè)備、醫(yī)療設(shè)備等。
常見的運動控制器品牌有美國的National Instruments(NI)、德國的Beckhoff、日本的三菱、富士、松下等。使用運動控制器進行運動控制時,通常需要編寫相應(yīng)的控制程序,根據(jù)不同的控制器和控制器的類型,編程語言也可能不同,如C、C++、VB、LabVIEW等。
要使用C#操作運動控制,通常需要使用相應(yīng)的控制器的API或SDK。不同品牌的運動控制器API或SDK具有不同的調(diào)用方式和接口。例如,以美國National Instruments(NI)的運動控制器為例,可以使用NI Motion控制器API進行編程,其包含了一系列的函數(shù)庫和控制指令,可以實現(xiàn)運動控制的各種功能,如運動控制、編碼器讀取、IO控制等。
在VS2010中創(chuàng)建程序 啟動Visual Studio 2010選擇“文件”→“新建” →“項目”,選擇Windows窗體應(yīng)用程序。名稱可自主選擇如“Motion”;點擊方案資源管理器,點擊引用,鼠標(biāo)右鍵點擊選擇添加引用,加入需要添加的引用,如研華1245AE加入的引用為“AdvMotAPI.dll”;至此程序已創(chuàng)建完成可以開始后續(xù)的編程工作。
程序接口規(guī)劃 界面規(guī)劃如下圖所示。
程序編寫框架 系統(tǒng)初始化;軸參數(shù)設(shè)置;IO狀態(tài)獲取;參數(shù)保存;多線程實現(xiàn)實時監(jiān)控;錯誤處理機制。
運動順序執(zhí)行是最常見的編程問題之一,關(guān)系到設(shè)備后續(xù)控制動作能否正常運行。如果編程時只是單獨使用While循環(huán),執(zhí)行后會發(fā)現(xiàn)上位機界面被卡死,按鍵不能響應(yīng)。上述程序,在啟動運動位置到dist_0過程中需不斷循環(huán)判斷運動是否停止,在條件不滿足即運動沒有停止時程序一直處于循環(huán)中,程序?qū)加谜麄€軟件的進程時間資源,即進入了死循環(huán),其它進程消息不能及時響應(yīng),導(dǎo)致上位機界面卡死。因此我們需要軟件在循環(huán)判斷運動狀態(tài)的同時還需響應(yīng)其它進程消息。
軟件多線程可解決上述問題,但多線程較麻煩。可以使用軟件自動函數(shù)實現(xiàn)。VB編程中有系統(tǒng)自動線程函數(shù)“DoEvents”。VC編程中有類似線程查詢函數(shù)“PeekMessage”。C#編程中有系統(tǒng)自動線程函數(shù)“DoEvents”。Labview編程中有在循環(huán)框中添加延時時間。
運動控制器是一種基于PC機及工業(yè)PC機、用于各種運動控制場合(包括位移、速度、加速度等)的上位控制單元。采用專業(yè)運動控制芯片或高速DSP作為運動控制核心,大多用于控制步進電機或伺服電機。一般地,運動控制器與PC機構(gòu)成主從式控制結(jié)構(gòu):PC機負(fù)責(zé)人機交互界面的管理和控制系統(tǒng)的實時監(jiān)控等方面的工作(例如鍵盤和鼠標(biāo)的管理、系統(tǒng)狀態(tài)的顯示、運動軌跡規(guī)劃、控制指令的發(fā)送、外部信號的監(jiān)控等等);控制器完成運動控制的所有細(xì)節(jié)(包括脈沖和方向信號的輸出、自動升降速的處理、原點和限位等信號的檢測等等)。