一種直接采用計(jì)算機(jī)串行口控制步進(jìn)電機(jī)的新方法
步進(jìn)電機(jī)在數(shù)控機(jī)床、醫(yī)療器械、儀器儀表等自動(dòng)或半自動(dòng)設(shè)備中得到了廣泛應(yīng)用。用計(jì)算機(jī)控制步進(jìn)電機(jī)的通常作法是采用步進(jìn)控制卡,系統(tǒng)構(gòu)成如圖1所示[1][2]。其中Pulse、Dir分別為控制電機(jī)的轉(zhuǎn)換步數(shù)和旋轉(zhuǎn)方向的信號(hào);CWL(Clock Wise Limit)、CCWL(Counter Clock Wise Limit)分別為電機(jī)順、逆時(shí)針旋轉(zhuǎn)的限位信號(hào);ORG為定位信號(hào)。
這種方法不僅成本較高,而且不便于操作。在計(jì)算機(jī)擴(kuò)展槽上安裝控制卡,必需打開(kāi)機(jī)箱才能操作,而且在小型平板電腦和嵌入式電腦中根本沒(méi)有安裝控制卡的空間和擴(kuò)展槽。將計(jì)算機(jī)串行口二次開(kāi)發(fā),用于控制步進(jìn)電機(jī),代替控制卡的作用,具有成本低、操作簡(jiǎn)單、兼容性好等優(yōu)點(diǎn)。
1 RS232串行口及編程
計(jì)算機(jī)串行接口采用RS232標(biāo)準(zhǔn):規(guī)定邏輯1的電平為-3~-15V,邏輯0的電平為+3~+15V,常用的信號(hào)有8個(gè)(接口為DB9M插座時(shí),引腳號(hào)如表1所示),其中RXD、TXD為收、發(fā)數(shù)據(jù),可與RS232串行口設(shè)備直接進(jìn)行通訊,RTS、DTR、CD、DSR、CTS、BELL為控制與檢測(cè)MODEM的信號(hào),在通訊過(guò)程中起聯(lián)絡(luò)與控制作用。數(shù)據(jù)格式有5、6、7、8位幾種,1位起始位(邏輯0),1、1.5或2位停止位(邏輯1),可以選擇奇校驗(yàn)、偶校驗(yàn)和無(wú)校驗(yàn),常用波特率為2400、4800、7200、9600bps等。串行口編程方法主要有三種:硬件編程法、文件操作法、串口控件法。
表1 RS232接口各引腳定義
引腳號(hào) | 作 用 | 方 向 |
1 2 3 4 5 6 7 8 9 | CD 數(shù)據(jù)載波檢測(cè) RXD 接收數(shù)據(jù) TXD 發(fā)送數(shù)據(jù) DTR 數(shù)據(jù)終端準(zhǔn)備就緒 GND 信號(hào)地 DSR 數(shù)據(jù)設(shè)備準(zhǔn)備就緒 RTS 請(qǐng)求發(fā)送 CTS 清除發(fā)送 RI 振鈴指示 | 輸入 輸入 輸出 輸出 輸入 輸出 輸入 輸入 |
1.1 硬件編程法
直接使用端口的輸入、輸出(I/O)函數(shù)對(duì)串行口的控制電路進(jìn)行編程。適用于DOS及Windows平臺(tái)(Windows Me以前的各版本),但在基于NT技術(shù)構(gòu)建的操作系統(tǒng)(Windows NT、Windows 2000、Windows XP等)中因不允許用戶(hù)程序直接操作硬件而不適用。常用的端口輸入、輸出函數(shù)(指令)有:匯編語(yǔ)言的IN、OUT指令及軟中斷調(diào)用,C語(yǔ)言的inport()、outport()、inportb()、outportb(),C++的_inp()、_outp()等。計(jì)算機(jī)串行口采用Intel 8250異步串行通訊組件構(gòu)成,COM1、COM2、COM3、COM4的基地址分別為16#3F8(16進(jìn)制數(shù)3F8,表示法下同)、16#2F8、16#3E8、16E2E8,波特率因子(DR)計(jì)算方法為:DR=1.8432×1000000/16B,8250編程請(qǐng)見(jiàn)參考文獻(xiàn)[3]。
1.2 文件操作法[4]
文件操作法是將串行口作為系統(tǒng)的一個(gè)文件來(lái)處理,通過(guò)對(duì)這個(gè)文件的讀、寫(xiě)操作引發(fā)串口對(duì)數(shù)據(jù)進(jìn)行收、發(fā)動(dòng)作。這種方法在DOS、Windows、Windows NT、Windows 2000及Windows XP等平臺(tái)下都能正常工作。例如在BASIC語(yǔ)言中可用語(yǔ)句:OPEN “COM1,1200,n,8,1,rs,cs,ds,cd”AS #1將串行口COM1作為文件#1進(jìn)行讀寫(xiě)操作。在VC++中,可用CreateFile()、BuildCommDCB()、Read()、Write()、EscapeCOMMFunction()等函數(shù)將串行口作為文件進(jìn)行操作。
評(píng)論