//Logo Image
作者蔡宗成 (2000-07-28);核可徐業良 (2000-08-03)

透過網路遠端遙控步進馬達實驗

本文延續前一篇“(2000-07-20) 透過網路遠端遙控LED實驗”,將Server端控制LED明、暗的副程式更改成控制步進馬達的副程式,其整體程式架構並無太大的改變,仍以Visual Basic設計Client and Server程式,讓遠端的使用者透過網路操控步進馬達。本文重點著重在如何使用VB設計低階I/O語言來控制Plug in介面卡,如A/D卡、步進馬達控制卡等等。

1.     步進馬達控制簡介

要控制步進馬達,除了要了解輸出扭矩大小與轉速等相關規格,最主要是步進馬達每轉一圈所需要的訊號脈衝多少,也就是所謂的「步進角(step angle)」,再依照需要輸入脈波數來控制步進馬達產生正轉、反轉等運動。圖1為步進馬達控制流程圖,產生脈波的方法有很多,例如A/D卡、步進馬達控制卡等等控制器,控制介面卡上腳位電壓訊號的改變產生脈波,經過驅動器放大訊號,便能控制步進馬達。

1 步進馬達控制流程圖

本實驗使用研華公司產品PCL-818H A/D卡(如圖2)作為脈波產生器,利用Digital Output (D/O)的功能,使其腳位有高、低電壓狀態的改變,產生一脈波訊號,本文便是以VB語言設計程式對A/D卡下達Address位址,控制相關腳位之位址,讓腳位開啟或關閉,只要在程式裡執行迴圈指令,便會有連續動作,如此便能達到所需要脈波數。

2 PCL-818H A/D卡外觀圖

本實驗使用擎翔公司產品EXD2015M二相步進馬達小型驅動器,輸入電源為DC24V,每輸入1600pulse便可使步進馬達旋轉一圈,將A/D卡上所要控制的腳位連接到驅動器上CW/CCWPULSE的接腳,再連接到步進馬達的接線和外部電源,就可完成一個步進馬達控制實驗。

2. 程式說明

VB設計網路遠端控制步進馬達實驗和控制LED實驗,兩者程式架構大致相同,差別在於Server端副程式的撰寫,如前所述,必須以VB設計能控制A/D卡腳位電壓改變,並以迴圈形成連續脈波訊號。在Client端程式裡,使用者可依照需求,設計命令字串按鈕,例如正轉、反轉或行走一定數目的步進角,再將相對應的副程式設計在Server端裡,如此便能透過網路遙控步進馬達。

2.1 Client程式

Client程式外觀如圖3,有IPPort欄提供使用者輸入數值,Connect按鈕和Disconnect按鈕作為連接和中斷,指令選擇有設計正轉、反轉、一個步進角。圖4Client程式原始碼。

3 Client程式外觀

4(a) Client程式原始碼

4(b) Client程式原始碼

2.2 Server程式

Server程式外觀如圖5,將Server端電腦的IPPort值顯示出來,而連結狀況顯示在Status欄裡,Server程式在連結時,裡面會有指令接收判斷,再開始執行控制指令。程式原始碼如圖6

5 Server程式

6(a) Server程式原始碼

6(b) Server程式原始碼

2.3 Module1程式碼

如同前一篇透過網路遠端遙控LED實驗,VB語言必須外掛I/O程式,才能設計低階Address程式,控制Plug in介面卡,而I/O程式在Module1裡宣告。Module1程式碼如圖7

7(a) Module1程式碼

7(b) Module1程式碼

7(c) Module1程式碼

3. 步進馬達控制程式說明

要控制步進馬達,就必須產生脈波,程式設計者便需要設計VB程式下達A/DAddress位址,改變D/O腳位有ON/OFF狀態,成為一連續脈波。以A/D卡而言,需要三隻腳位與步進馬達驅動器連接。以本實驗為例,將腳位1連接【Pulse+】、腳位3連接【CW/CCW+】、腳位17(地線)連接【Pulse-】和【CW/CCW-】。

A/DD/O Channel的位址為303,以VB表示為&H303(十六進位),當要控制馬達正轉時,腳位1要有ON/OFF狀態,也就是10種,所以腳位1處於ON的狀態時,表示為1×201,以VB表示為&H1,處於OFF狀態時,就為0×200,以VB表示為&H0;而腳位3一直處於OFF狀態,以VB表示為&H0ONOFF之間要有時間延遲,並以迴圈方式執行1600次。時間延遲控制步進馬達轉速,迴圈數目控制步進馬達轉動圈數,程式說明圖如圖8

8 正轉程式說明圖

反轉程式的腳位1如同正轉模式,也是在ONOFF狀態間改變,但腳位3便一直處於ON狀態,所以要控制步進馬達反轉時,要先腳位13同時ON,轉換成(腳位11×201)加上(腳位31×224)等於5,以VB表示為&H5;然後腳位1OFF,腳位3ON,轉換成(腳位10×201)加上(腳位31×224)等於4,以VB表示為&H4,再設計迴圈程式和延遲時間,便可控制步進馬達反轉,程式說明圖如圖9

9 反轉程式說明圖

只要VB外掛I/O控制動態連結檔後,便能使用agOutp的程式語言,其用法如下『agOutp &H位址, &H數值』,將所設定的數值寫進Plug in介面卡所要控制的Channel裡之位址;但這並不是VB語言開發的功能,因為控制Address位址在Windows系統裡會有相當大的風險,工業上使用VB控制周邊設備通常是以程式裡提供的RS-232連接功能來作為溝通的橋樑,先決條件還是控制設備要有RS-232埠。

參考資料

洪錦魁,1999Visual Basic 6.0,文魁出版社。

范逸之、陳立元、賴俊朋,1999Visual BasicRS-232串列通訊控制,文魁出版社。

黃嘉輝,2000Visual Basic 6 Internet Programming 網際網路與TCP/IP程式設計,文魁出版社。