馬志剛
(山西機(jī)電職業(yè)技術(shù)學(xué)院,山西 長(zhǎng)治 046011)
計(jì)算機(jī)測(cè)控,就是利用傳感器將實(shí)際物理量(如溫度、壓力、液位)轉(zhuǎn)換為電量(如電壓、電流),再將這些電量傳送到控制系統(tǒng)中,由控制系統(tǒng)將采集到的數(shù)據(jù)存儲(chǔ)起來,進(jìn)行實(shí)時(shí)分析并按工藝要求輸出相應(yīng)的電信號(hào),推動(dòng)執(zhí)行裝置完成控制任務(wù)。
計(jì)算機(jī)測(cè)控系統(tǒng)可分為硬件和軟件兩部分,硬件部分由監(jiān)控對(duì)象(生產(chǎn)機(jī)械)、計(jì)算機(jī)主機(jī)等組成。計(jì)算機(jī)主機(jī)有單片機(jī)、PLC或主控機(jī)等。計(jì)算機(jī)軟件有系統(tǒng)軟件和應(yīng)用軟件之分,應(yīng)用軟件有很多,主要的是:1) Visual Basic、VC、Labview等高級(jí)語(yǔ)言;2) 如組態(tài)王、昆侖通態(tài)等組態(tài)軟件[1]。
其中Microsoft Visual C++,(簡(jiǎn)稱Visual C++、MSVC、VC++或VC)是Microsoft公司推出的以C++語(yǔ)言為基礎(chǔ)的開發(fā)Windows環(huán)境程序,面向?qū)ο蟮目梢暬删幊滔到y(tǒng)。
數(shù)據(jù)采集卡實(shí)際上就是過程通道板卡,他是一塊印刷電路板上記成了模擬多路開關(guān)、程序放大器、采樣/保持器、AD/DA轉(zhuǎn)換器、光電隔離接口等電路[1]。常見的板卡有研華、凌華等,現(xiàn)今眾多板卡的出現(xiàn),給工控人員提供了極大的便利,不需要掌握過于復(fù)雜的電子電路,而交給更專業(yè)的板卡生產(chǎn)廠家去完成,而自己只需要根據(jù)生產(chǎn)過程選擇合適的板卡就行,而廣大的板卡廠家也很貼心的提供了二次開發(fā)的接口,我們只需要根據(jù)廠家提供的二次開發(fā)接口完成我們的開發(fā)就可以節(jié)省大量時(shí)間。
本論文是基于鄭市一個(gè)電子科技有限公司的一款迷你USB數(shù)據(jù)采集卡而寫,該數(shù)據(jù)采集卡采用USB2.0總線,具有12路單端模擬量采集,2路DA模擬量輸出,2路PWM可編程頻率占空比輸出,1路PWM脈寬測(cè)量,1路32位計(jì)數(shù)器端口,8路單向輸入輸出口。
該板卡提供設(shè)備操作函數(shù)、AD操作函數(shù)和PWM輸入輸出函數(shù)、IO口控制模塊。
表1數(shù)據(jù)采集卡常用函數(shù)
具體過程如下:
1) 新建一個(gè)基于對(duì)話框的程序
圖1 演示系統(tǒng)界面
2) 將解壓得到的dll,lib、h文件復(fù)制入程序目錄之中。
圖2 解壓包內(nèi)容
3) 在數(shù)據(jù)采集卡Dlg.cpp中加入#include "easyusb_card_dll.h"和#pragma comment(lib,"easyusb_card_dll.lib")
圖3 函數(shù)申明
這樣就可以調(diào)用easyusb_card_dll.dll庫(kù)文件中的函數(shù)。
4) 打開設(shè)備和關(guān)閉設(shè)備
新建兩按鈕響應(yīng)函數(shù),在打開設(shè)備中填入OpenUsbV20函數(shù),并判斷是否打開設(shè)備成功,如打開失敗,則彈出對(duì)話框提示打開失敗,程序如下圖:
圖4 打開設(shè)備函數(shù)
5) 設(shè)置閥門開啟、關(guān)閉狀態(tài)
執(zhí)行機(jī)構(gòu)可采用繼電器去控制馬達(dá)或閥門的起閉。開啟停止閥門可以用DoSetV20函數(shù)來實(shí)現(xiàn)。DoSetV20具體定義如下:
設(shè)置OUT0-7的輸出狀態(tài),輸入?yún)?shù)為8位字符型,Chan為要設(shè)置的通道,0 對(duì)應(yīng)OUT0……7 對(duì)應(yīng)OUT7
State為要設(shè)置的狀態(tài),0 對(duì)應(yīng)輸出口輸出0 V,1 對(duì)應(yīng)輸出口輸出3.3 V
正常返回 0,失敗返回-1。
我們可以通過建立按鈕來調(diào)用這些函數(shù),可以通過判斷按鍵上的文本來判斷是開啟閥門還是關(guān)閉閥門,外接電路如圖5:
圖5 硬件電路圖
具體程序內(nèi)容如下:
圖6 輸出函數(shù)
6) 檢測(cè)閥門開啟狀態(tài)
檢測(cè)閥門開啟狀態(tài)可以通過調(diào)用DiReadV20函數(shù)來實(shí)線,DIReadV20函數(shù)具體定義如下:
功能:讀入8位開關(guān)量輸入。
函數(shù):int DiReadV20 (unsigned char *value);
*value:為8位無符號(hào)型數(shù)據(jù)指針,函數(shù)返回后該數(shù)據(jù)指向的數(shù)據(jù)就是IN0—7的輸入狀態(tài),其中位0的值表示IN0的高低狀態(tài),以此類推,位7的值表示IN7的高低狀態(tài);每位數(shù)值為0
則輸入為低電平(0 V)、為1 則為高電平(3.3 V)
函數(shù)返回:=0 表示操作有效/-1 失敗。
我們可以調(diào)用定時(shí)器來實(shí)現(xiàn)定時(shí)讀取輸入端口狀態(tài),具體程序如下:
圖7 讀取端口狀態(tài)
如上,我們的設(shè)計(jì)主體基本完成。除此之外,我們還可以有其他輔助功能,如:開機(jī)畫面、登錄驗(yàn)證功能、讀取溫度和禁止快捷鍵等功能。
通過調(diào)用板卡廠商提供的動(dòng)態(tài)鏈接庫(kù),可以極大的簡(jiǎn)化項(xiàng)目開發(fā)過程,可以大大提高開發(fā)人員的效率。
[1] 李江全,唐智輝,朱東芹.Visual Basic數(shù)據(jù)采集與串口通信測(cè)控應(yīng)用實(shí)戰(zhàn)[M].北京:人民郵電出版社,2010.