PCI總線技術(shù)在儀表檢測(cè)控制系統(tǒng)中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
小型儀器儀表監(jiān)控系統(tǒng)一般由控制器、數(shù)據(jù)采集模塊、串口通訊模塊以及工控機(jī)組成。但是,這種結(jié)構(gòu)會(huì)存在設(shè)計(jì)結(jié)構(gòu)復(fù)雜,系統(tǒng)靈活性較低的缺點(diǎn)。為了克服這些缺點(diǎn),本文利用PCI總線技術(shù),并結(jié)合研華公司所研制的兩種PCI控制卡完成了這種小型系統(tǒng)的設(shè)計(jì)。其中PCI總線是先進(jìn)的高性能局部總線,可同時(shí)支持多組外圍設(shè)備,而不受制于處理器,為中央處理器及高速外圍設(shè)備提供一座橋梁,更可作為顯現(xiàn)之間的交通指揮員,提高數(shù)據(jù)吞吐量。PCI采用高度綜合化的局部總線結(jié)構(gòu),可確保電腦部件、附加卡及系統(tǒng)之間的可靠運(yùn)作,并能完全兼容現(xiàn)有的ISA/EISA/MicroChannel擴(kuò)充總線。PCI總線與其他主流總線相比,具有速度更快、實(shí)時(shí)性更好和可控性更佳的優(yōu)點(diǎn),適用于高速實(shí)時(shí)的I/O控制卡。但由于PCI總線協(xié)議比較復(fù)雜,因此,其接口電路實(shí)現(xiàn)起來(lái)并不容易,而采用通用PCI接口芯片就能很好地解決這一問(wèn)題虬
1控制系統(tǒng)設(shè)計(jì)方案
本設(shè)計(jì)采用PCI總線來(lái)構(gòu)建硬件平臺(tái),通過(guò)PCI總線由PC機(jī)來(lái)控制系統(tǒng)的電磁閥,通過(guò)PCI1601通訊板卡將外置儀器儀表采集的設(shè)備溫度、壓力及流量等信息傳送給PC機(jī)并進(jìn)行相關(guān)數(shù)據(jù)處理。具體設(shè)計(jì)原理框圖如圖1所示。
圖1 控制系統(tǒng)方案圖
PCI1750
PCI1750是一款功能強(qiáng)大的PCI總線半長(zhǎng)卡,能提供16路隔離數(shù)字量輸入通道、16路隔離數(shù)字量輸出通道以及一個(gè)帶輸入信號(hào)的隔離計(jì)數(shù)器/定時(shí)器。由于帶有2500VDC隔離保護(hù)及支持干接點(diǎn),PCI1750非常適合需要高電壓保護(hù)的工業(yè)應(yīng)用場(chǎng)所。PCI1750與PC機(jī)可以構(gòu)成主從式控制結(jié)構(gòu),其中PC機(jī)負(fù)責(zé)人機(jī)交互界面的管理和控制系統(tǒng)的實(shí)時(shí)監(jiān)控等方面的工作[2],PCI1750則完成對(duì)開(kāi)關(guān)電磁閥或是邏輯控制類(lèi)執(zhí)行器的控制,依靠輸出的數(shù)字脈沖信號(hào)來(lái)驅(qū)動(dòng)相應(yīng)回路的繼電器,從而實(shí)現(xiàn)PC機(jī)通過(guò)PCI1750對(duì)開(kāi)關(guān)電磁閥的邏輯控制。除了對(duì)開(kāi)關(guān)電磁閥的簡(jiǎn)單邏輯控制外,用戶可根據(jù)控制系統(tǒng)的要求調(diào)用PCI1750運(yùn)動(dòng)函數(shù)庫(kù)中的指令函數(shù),從而開(kāi)發(fā)出滿足要求而且成本低廉的邏輯控制系統(tǒng)。
本文利用PCI1750板卡實(shí)現(xiàn)了對(duì)開(kāi)關(guān)電磁閥的控制,這種控制方法具有控制簡(jiǎn)單、點(diǎn)位利用率高等優(yōu)點(diǎn)。
PCI1601
計(jì)算機(jī)通過(guò)PCI1601總線通訊接口卡與儀器儀表設(shè)備的傳感器進(jìn)行連接,進(jìn)而控制電磁閥。PCI1601總線通訊接口卡可以支持RS-422、RS-485兩種串行通訊接口標(biāo)準(zhǔn),并采用Modbus規(guī)約RTU模式,可以方便地與多種組態(tài)軟件相連接,其通訊驅(qū)動(dòng)與ModiconModbus_RTU格式完全兼容。PCI1601板卡增加了“自動(dòng)數(shù)據(jù)流控制”硬件,故可自動(dòng)識(shí)別數(shù)據(jù)是“發(fā)送”還是“接收”,它不再支持“RTS握手信號(hào)”,這樣就使RS-485通訊軟件的開(kāi)發(fā)與RS-232完全相同。板卡通過(guò)DIP撥碼開(kāi)關(guān)設(shè)置相應(yīng)模式。RS-485的通信距離最遠(yuǎn)可達(dá)1200m,通信距離為15m時(shí),波特率可達(dá)10Mb/s。在工業(yè)現(xiàn)場(chǎng)中,RS-485作為一種雙線差分半雙工的通信方法而廣泛采用,具有很高的抗共模干擾能力,并可很好地適應(yīng)現(xiàn)場(chǎng)的惡劣環(huán)境叫在數(shù)據(jù)傳輸過(guò)程中,其字節(jié)格式如圖2所示。
圖2 字節(jié)傳輸序列圖
圖2中,D0是字節(jié)的最低有效位,D7是字節(jié)的最高有效位。傳輸時(shí),先傳低位,后傳高位。通訊時(shí),數(shù)據(jù)以字(WORD一2字節(jié))的形式回送,回送的每個(gè)字中,高字節(jié)在前,低字節(jié)在后。如果2個(gè)字連續(xù)回送(如浮點(diǎn)或長(zhǎng)整形),則高字在前,低字在后。上位機(jī)發(fā)送的數(shù)據(jù)格式和儀表回送的數(shù)據(jù)包格式分別如表1和表2所歹n
2控制系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)采用VB6.0作為上位機(jī)軟件開(kāi)發(fā)平臺(tái),其程序流程圖如圖3所示。編寫(xiě)上位機(jī)程序時(shí),可利用ModBus規(guī)約來(lái)完成串口通訊部分的軟件設(shè)計(jì)。
該通訊模塊中的儀表地址可以在1?247之間選擇。儀器出廠時(shí),一般的默認(rèn)地址為1,而在實(shí)際使用中,則可以根據(jù)現(xiàn)場(chǎng)情況設(shè)定不同的通訊地址。
PCI1750與計(jì)算機(jī)的連接
通過(guò)下列函數(shù)可實(shí)現(xiàn)PCI-1750與PC機(jī)的連接,以使PC機(jī)能實(shí)現(xiàn)對(duì)輸入輸出的控制,并通過(guò)AdvDIOLWriteDoPorts(DOBuffer0,0,1)實(shí)現(xiàn)對(duì)DO的控制。其代碼如下:
PrivateSubBtnSelectDevice_Click()
TimerLEnabled=False
AdvDIO1.SelectDevice
If(AdvDIO1.DeviceNumber>=0)ThentxtDeviceName.Text=AdvDIO1.DeviceNameEnableCommandControlsTrue
SetProperties
EnableButtonFrameOptDO.Value
Else
EnableCommandControlsFalse
EndIf
EndSub
2.2串口通訊的實(shí)現(xiàn)
實(shí)現(xiàn)串口通訊時(shí),可在程序中插入MSComm控件,并配置串行端口參數(shù);每當(dāng)一組數(shù)據(jù)接收完畢后便激活1個(gè)OnComm()事件,在OnComm。消息處理函數(shù)中加入相應(yīng)的數(shù)據(jù)處理算法,并做出相應(yīng)的處理,如顯示、控制等。其具體程序如下:
PrivateSubForm_Load()
Command1.Caption="打開(kāi)串口"
MSComm2.Settings="9600,N,8,2"
MSComm2.InBufferSize=40
MSComm2.OutBufferSize=2
MSComm2.InputMode=comInputModeBinary
MSComm2.InBufferCount=0
MSComm2.OutBufferCount=0
MSComm2.RThreshold=1
EndSub
通過(guò)上列函數(shù)即可實(shí)現(xiàn)串口通訊的建立。通過(guò)下面的函數(shù)則可實(shí)現(xiàn)與現(xiàn)場(chǎng)實(shí)際儀表的通訊:
Dimdatal()AsByte'串口發(fā)送字節(jié)
ReDimdatal(7)
IfComm1=1Then
datal(0)=&H1
datal(1)=&H3
datal(2)=&HB
datal(3)=&HBA
datal(4)=&H0
datal(5)=&H10
datal(6)=&H67
datal(7)=&HC7
Comm1=2
GoTo1
EndIf
由于一個(gè)串口通??梢話旖雍脦讉€(gè)儀表,因此,程序中使用了GoTo函數(shù)。不同儀表可以編寫(xiě)不同的通訊命令,以便采集各儀表的數(shù)據(jù)。
2.3儀表采集數(shù)據(jù)的處理
由于上位機(jī)數(shù)據(jù)顯示格式為十進(jìn)制,而儀表傳送到上位機(jī)的數(shù)據(jù)一般均為浮點(diǎn)數(shù),因此,必須經(jīng)過(guò)相應(yīng)的計(jì)算將其轉(zhuǎn)換為十進(jìn)制數(shù)才能進(jìn)行顯示。圖4所示是一種由雙精度浮點(diǎn)數(shù)格式轉(zhuǎn)換為十進(jìn)制格式的方法,其轉(zhuǎn)換公式為:
圖4雙精度浮點(diǎn)數(shù)格式的轉(zhuǎn)換
其中,第63bit為符號(hào)位,該位為0表示正數(shù),反之為負(fù)數(shù),其讀數(shù)值用S表示;第62~52bit共11冪數(shù)(2的冪數(shù)),其讀數(shù)值可用E表示;第51~0bit共52位為系數(shù),視為二進(jìn)制純小數(shù),假定該小數(shù)的十進(jìn)制值為尸;那么,轉(zhuǎn)換后的十進(jìn)制浮點(diǎn)數(shù)據(jù)則以FData表示。整個(gè)轉(zhuǎn)換算法的具體代碼如下:
IfLenB(StrConv(HDatal,vbFromUnicode))=74Then
IfComm1=1Then
Text1.Text=HDatal
sngTemp=0
lngTemp=CLng("&H"&Mid(HDatal,7,8))
CopyMemorysngTemp,lngTemp,4
Text2=Round((""&CStr(sngTemp))*3600,6)dblTemp=0
strHex=Mid(HDatal,63,8)&Mid(HDatal,55,8)
lngArray(1)=CLng("&H"&Right(strHex,8))
lngArray(0)=CLng("&H"&Left(strHex,Len(strHex)-8))CopyMemorydblTemp,lngArray(0),8
Text3=(CStr(dblTemp)*1000)
EndIf
EndIf
2.4人機(jī)界面總體效果
本系統(tǒng)的人機(jī)界面總體效果圖如圖5所示。從圖5中可以看出,此界面能監(jiān)視所有連接到上位機(jī)的儀表數(shù)據(jù),并通過(guò)設(shè)定值與實(shí)際值的比較來(lái)實(shí)現(xiàn)閥1和閥2的自動(dòng)控制。
圖5 人機(jī)界面圖
3結(jié)論
本文介紹了一種基于PCI總線技術(shù)的小型儀器儀表監(jiān)控系統(tǒng),該系統(tǒng)以PCI1601通訊接口卡作為通訊模塊的核心設(shè)備。目前,該系統(tǒng)已經(jīng)正式運(yùn)行,應(yīng)用效果良好,并具有可靠性好、集成度高、靈活性高等優(yōu)點(diǎn),可以大大縮短系統(tǒng)研制和開(kāi)發(fā)周期,滿足用戶對(duì)小型儀器儀表監(jiān)控系統(tǒng)的不同控制要求。
20210916_61435bf3f0bd9__PCI總線技術(shù)在儀表檢測(cè)控制系統(tǒng)中的應(yīng)用