技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于VB6.0的工控機(jī)與智能流量積算儀的串口通信

基于VB6.0的工控機(jī)與智能流量積算儀的串口通信

時(shí)間:2008-03-26 14:28:00來源:wangtao

導(dǎo)語:?以VB6.0為軟件開發(fā)平臺(tái),在分析工控機(jī)與D08-8CZM智能流量積算儀通信原理的基礎(chǔ)上,利用MSComm 控件和MODBUS協(xié)議,實(shí)現(xiàn)了上位機(jī)與該智能流量積算儀的串口通信功能

1、引言

本文主要從應(yīng)用的角度利用VB6.0的MSComm 控件MODBUS協(xié)議,成功實(shí)現(xiàn)了某流量控制系統(tǒng)中工控機(jī)與帶RS-232輸出接口的智能數(shù)字流量積算儀之間的串口通信功能。D08-8CZM數(shù)字顯示表應(yīng)用于底吹氬流量控制系統(tǒng)中流量的顯示,工控機(jī)通過讀取其顯示值作為反饋信號(hào),從而實(shí)現(xiàn)流量的閉環(huán)控制。

2、D08-8CZM型智能數(shù)字流量顯示積算儀與串口通信

2.1 硬件構(gòu)成

D07-12A型質(zhì)量流量傳感器采用毛細(xì)管傳熱溫差量熱法原理測(cè)量氣體的質(zhì)量流量(無需溫度壓力補(bǔ)償)。將傳感器加熱電橋測(cè)得的流量信號(hào)送入放大器放大,放大后的流量檢測(cè)電壓與設(shè)定電壓進(jìn)行比較,再將差值信號(hào)放大后去控制調(diào)節(jié)閥門,閉環(huán)控制流過通道的流量使之與設(shè)定的流量相等。當(dāng)本流量積算儀與MFC(質(zhì)量流量計(jì))配套使用時(shí),只需用電纜通過D型插頭將流量積算儀與MFC連接起來即可。然后采用一臺(tái)上位機(jī)與一臺(tái)D08-8CZM流量積算儀進(jìn)行通信的方式,使用RS232通訊方式:將2引腳(TXD)與上位機(jī)串口的RXD(工控機(jī)串口的2引腳)相連;3引腳(RXD)與上位機(jī)串口的TXD(工控機(jī)串口的3引腳)相連;5引腳(SG)與上位機(jī)串口的SG(工控機(jī)串口的5引腳)相連。

2.2 通訊原理

工控機(jī)作為上位機(jī)與從機(jī)(數(shù)字流量積算儀)采用主從應(yīng)答方式進(jìn)行通信,一個(gè)網(wǎng)絡(luò)中只有一個(gè)主機(jī)(上位機(jī),節(jié)點(diǎn)地址為0),主機(jī)通過站號(hào)(數(shù)字流量積算儀的唯一地址)區(qū)分不同的從機(jī)。上位機(jī)始終處于主動(dòng)狀態(tài),根據(jù)程序運(yùn)行的需要向(通信端口)數(shù)字流量積算儀發(fā)出讀寫等命令;從機(jī)處于被動(dòng)狀態(tài),接收并響應(yīng)上位機(jī)的命令。需要讀采樣數(shù)據(jù)時(shí),上位機(jī)通過通信口向指定地址的數(shù)字流量積算儀發(fā)出讀數(shù)據(jù)命令,數(shù)字流量積算儀響應(yīng)并將數(shù)據(jù)準(zhǔn)備好,按統(tǒng)一的數(shù)據(jù)通信幀格式編成響應(yīng)字符串,主機(jī)再次讀通信口接收緩沖區(qū)即可讀到所需的數(shù)據(jù)。向數(shù)字流量積算儀寫數(shù)據(jù)時(shí),上位機(jī)向指定數(shù)字流量積算儀發(fā)出寫命令及參數(shù)數(shù)據(jù),積算儀即可接受并返回響應(yīng)情況。上位機(jī)通過RS-232通信進(jìn)行運(yùn)行狀態(tài)監(jiān)控、參數(shù)設(shè)置、診斷等遠(yuǎn)程測(cè)控功能,實(shí)現(xiàn)這些功能采用了不同的通信格式。其中MODBUS協(xié)議通訊原理圖如下:

MODBUS協(xié)議的詢問應(yīng)答環(huán)路
圖1 MODBUS協(xié)議的詢問應(yīng)答環(huán)路

2.3 通訊協(xié)議

本通信協(xié)議應(yīng)用于D08-8CZM型流量積算儀與上位機(jī)的通信,數(shù)據(jù)以16進(jìn)制格式傳輸,波特率:9600;數(shù)據(jù)位8位;停止位:1位;效驗(yàn)位:無。本協(xié)議與MODBUS協(xié)議兼容,可以通過上位機(jī)顯示流量積算儀的瞬時(shí)流量、累積流量、滿量程、單位和閥狀態(tài)(包括閥控、關(guān)閉和清洗),而且可以通過上位機(jī)設(shè)定流量積算儀的瞬時(shí)流量、使流量積算儀的累積流量清零。因此在本協(xié)議用到了MODBUS協(xié)議的命令$03(Reading 1~9words)、命令$05(Force single coil)和命令$06(Writing 1 word)。

使用命令$03可以通過上位機(jī)讀流量積算儀的當(dāng)前狀態(tài),其通信協(xié)議的具體格式為:

上位機(jī)

積算儀:01 03 00 02 00 08 E5 CC

各字節(jié)含義:

01:MODBUS地址;

03:功能碼03(Reading 1~9words);

00 02:起始地址,00為高8位,02為低8位;

00 08:讀取的字?jǐn)?shù);

E5 CC:CRC效驗(yàn)值,E5為CRC的低8位,CC為高8位。

上位機(jī)

積算儀:01 03 10 (1)~(16) CRCL CRCH

各字節(jié)含義:

01:MODBUS地址;

03:MODBUS命令號(hào);

10:上傳的字節(jié)數(shù);

(1)~(4):瞬時(shí)流量值;

“00~09”表示數(shù)字“0~9”,“10~19”表示“0.~9.”;

(5)~(10):流量累積值;

同上;

(11)~(14):滿量程;

同上;

(15):流量單位;

00表示SCCM和SCC,01表示SCCM和SL,11表示SLM和SL;

(16):閥狀態(tài);

00表示關(guān)閉,80表示閥控,F(xiàn)F表示清洗;

CRCL:CRC的低八位;

CRCH:CRC的高8位。

3、用VB實(shí)現(xiàn)串行通訊

3.1 MSComm控件

VB的通信控件MSComm能夠提供串行通信的全部功能,程序編寫、調(diào)試簡(jiǎn)單方便,開發(fā)速度快,該控件封裝了通信過程中的底層操作程序,用戶只需設(shè)置和監(jiān)控控件的屬性和事件,就可以方便地實(shí)現(xiàn)異步串行通信。

采用MSComm控件接收數(shù)據(jù),按照接收方式分兩種形式:事件驅(qū)動(dòng)方式,定時(shí)查詢方式。本例為適應(yīng)流量的實(shí)時(shí)控制采用定時(shí)驅(qū)動(dòng)方式,若定時(shí)器計(jì)時(shí)到,通過串行通信口向指定地址流量積算儀發(fā)出讀寫等操作命令,等待時(shí)間到則檢查InBufferCount屬性值來判斷輸入緩沖區(qū)中是否接受到了相應(yīng)數(shù)目的字符,從而進(jìn)行讀取、判斷數(shù)據(jù)合法性和數(shù)據(jù)存儲(chǔ)、處理等操作。

3.2 通信功能的編程實(shí)現(xiàn)

程序框圖如下:

串口通信程序框圖
圖2 串口通信程序框圖

串口初始化:

MSComm1.CommPort = 1

MSComm1.SThreshold = 1

MSComm1.Settings = 9600,N,8,1

MSComm1.InBufferSize = 1024

MSComm1.OutBufferSize = 1024

MSComm1.InputMode = comInputModeBinary

打開串口并定時(shí)發(fā)送數(shù)據(jù)命令:

Private Sub Timer1_Timer()

Dim bytearray(0 To 7)

As Byte bytearray(0) = &H1

bytearray(1) = &H3

bytearray(2) = &H0

bytearray(3) = &H2

bytearray(4) = &H0

bytearray(5) = &H8

bytearray(6) = &HE5

bytearray(7) = &HCC

MSComm1.InputLen = 21

MSComm1.InBufferCount = 0

MSComm1.OutBufferCount = 0

MSComm1.RThreshold = 1

MSComm1.PortOpen = True

If MSComm1.PortOpen = True

Then MSComm1.Output = bytearray

End If End Sub

接受數(shù)據(jù):

Private Sub MSComm1_OnComm()

Do DoEvents Loop Until MSComm1.InBufferCount = 21 Dim dataread()

As Byte

Dim tempdata As Variant

Dim str As String

If MSComm1.CommEvent = comEvReceive

Then tempdata = MSComm1.InputReDim dataread(UBound(tempdata))

As Byte For i = 0 To UBound(tempdata)

dataread(i) = tempdata(i)

End Sub

同理利用以上程序框圖和通信協(xié)議可以完成下圖的所有功能:

基于VB的D08-8CZM型流量積算儀
圖3 基于VB的D08-8CZM型流量積算儀

4、結(jié)束語

利用VB6.0的MSComm 控件和MODBUS協(xié)議,實(shí)現(xiàn)了工控機(jī)與帶RS-232輸出接口的智能數(shù)字流量積算儀之間的串口通信功能,使其能夠?qū)崟r(shí)的采集瞬時(shí)流量,并成功的應(yīng)用于底吹氬流量閉環(huán)控制系統(tǒng)。這種通信方式靈活方便,結(jié)構(gòu)簡(jiǎn)單,可靠性高,完全達(dá)到了預(yù)期的要求,具有較好的實(shí)際價(jià)值和使用性。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:圖形LCD模塊的菜單方式人機(jī)交...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)