基於VB6的PC機與多台單片機通信的應用
1 引言
在庫房管理係統中,傳統的方法是通過幹濕度表、雙金屬式測量計等檢測器材進行人工測量,然後對不符合溫度、濕度等要求的庫房進行通風、去濕、降溫等工作。這種人工方式效率低、誤差大,隨機事件難以預料,使庫房管理質量得不到很好的保證。本文所論述的係統是一個用於製藥廠倉庫的監控和管理係統,上位機(PC機)除負責對下位機(MCS—51單片機)進行監管和控製外,還用於采集下位機傳送的數據進行數據庫化管理,另外,上位機還可以對庫房藥品入庫、出庫、有效期、交易方式等信息進行管理,並可用實時曲線和報表的形式查詢。下位機(MCS-51單片機。MCS-51單片機及其外圍設備我們稱之為庫機)負責收集庫房中溫度、濕度、煙(yan)霧(wu)等(deng)信(xin)息(xi)並(bing)傳(chuan)給(gei)上(shang)位(wei)機(ji)。此(ci)係(xi)統(tong)可(ke)使(shi)辦(ban)公(gong)人(ren)員(yuan)坐(zuo)在(zai)辦(ban)公(gong)室(shi)裏(li)對(dui)遠(yuan)在(zai)幾(ji)百(bai)米(mi)之(zhi)位(wei)的(de)庫(ku)房(fang)進(jin)行(xing)監(jian)控(kong)和(he)管(guan)理(li),不(bu)但(dan)使(shi)辦(ban)公(gong)人(ren)員(yuan)從(cong)繁(fan)重(zhong)的(de)體(ti)力(li)勞(lao)動(dong)中(zhong)解(jie)放(fang)出(chu)來(lai),而(er)且(qie)使(shi)庫(ku)房(fang)管(guan)理(li)快(kuai)速(su)準(zhun)確(que),提(ti)高(gao)了(le)企(qi)業(ye)的(de)管(guan)理(li)水(shui)平(ping)和(he)辦(ban)公(gong)自(zi)動(dong)化(hua)水(shui)平(ping)。
2 係統構成及工作原理
PC機裏安裝著用VB6編寫的倉庫管理係統,作為前台操作係統。係統的數據庫格式采用VB數據庫格式,也稱為本地數據庫,這類數據庫文件使用與 MicroSoft Access相同的格式,數據的存取利用VB6的ADO控件通過MicroSoft Jet (Joint Engineering Technology) 數據庫引擎,速度快工作效率高。此管理係統包括進庫藥品、進庫日期、出庫藥品、出庫日期、jingshourendengdezhaxun,yijiyaopinguoqitishideng。lingwaihaibakujichuansonglaideshujushishixianshibingcunfangzaibendiyingpanzhong,yibianzhaxunhedayin。houtaixitongshiyigeshangweijiyuduotaixiaweijitongxindetongxinxitong,duotaixiaweijibuduancongcangkucaijiwendu、濕度、煙霧等數據傳給上位機,PC機進行實時顯示,並可以設置溫度、濕度、煙霧、等參數,單片機根據設定參數來控製倉庫裏的去濕、降溫和報警係統,從而使庫房達到預定的環境。如果庫房內環境與設定環境不符,單片機就會喚醒降溫、去濕設備,把倉庫內參數鎖定在預定的範圍之內,如發生火災、被盜等意外事件,單片機就會驅動火災、防盜報警係統,並把信號傳給上位機,使其在屏幕上作出顯示。
3 PC機與單片機之間的通信
3.1 通信方式的實現
PC機與單片機之間的通信是通過串行口來實現的(如圖2)。由於單片機係統電平是TTL電平,與標注RS-232C不兼容,又考慮到通信距離,我們采用Maxim 公司生產的Max485芯片將TTL電平轉化為RS-485標準,然後再進行RS-485與RS-232之間的轉換,再與PC機的串口連接。這種轉換方式延長了通信的距離,最長可達1200米,提高了係統的可行性。
3.2 通信協議及程序設計思想
本係統由於是一台上位機和多台下位機,所以要給下位機設置一個通信代碼,為簡單起見,取0~255之間的任意四個即可。當PC機欲與某個單片機通信時,便向所有單片機發出通信代碼。單片機在接到代碼後與自己的代碼進行核對,如果一致則向PC機發出回應,開始通信,其它的單片機繼續采集和傳輸數據。
3.3 上位機程序設計
VB6中有一個專門用來串行通信的控件---MSComm控件。MSComm控件最常用的屬性如下:
CommPort屬性:設置並返回通信端口號,指定PC機上用於通信的串口
Setting屬性:以字符串的形式設置並返回波特率,奇偶校驗,數據位和停止位
PortOpen屬性:設置並返回通信端口的狀態,用於打開和關閉端口
Rthreshold 屬性:MSComm 控件設置CommEvent 屬性為ComEvReceive並產生OnComm之前設置並返回的要接收的字符數
Input屬性:從接收緩衝區返回和刪除字符,用於接收數據
InputLen 屬性:設置並返回Input屬性從接收緩衝區讀取的字符數
Output屬性:向緩衝區寫一個字符,用於發送數據
本係統VB6通信初始化程序如下:
MSComm1.CommPort = 1 ;選擇COM1為通信端口
MSComm1.Setting ="9600,n,8,1" ;設置波特率為9600,無奇偶校驗,8個數據位,一個停止位
MSComm1.OutBuffersize =256 ;設置輸出緩衝大小為256個字節
MSComm1.RThreshold = 3 ;輸入緩衝區裏有3個字符時,觸發OnComm事件
If Not MSComm1.PortOpen = True
Then MSComm1.PortOpen = True ;打開串行口,並防止運行時發生打開同一串口的錯誤
End If
以上MSComm1是係統默認的MSComm控件的名字(Name)。在初始化完成後通過
MSComm1.Output=OutputString 發送數據,OutputString 是定義的字符型變量(Dim OutputString As String)。一般用定時器的Timer事件來定時發送數據,接到回應字符後則關閉定時器。MSComm控件可以直接把字符串轉化成二進製數據形式發送,不需要我們在程序中用算法來轉換。每次發送完畢最好關閉串口。用MSComm1.PortOpen=False來實現。MSComm_OnComm事件可以捕捉通信時發生的錯誤,也可以接收數據。由於RThreshold的屬性值為3,所以當輸入緩衝區滿三個字符時,就觸發MSComm_OnComm事件,通過對接收字符的判斷,可以決定主程序分支的去向。
3.4 下位機程序設計
本係統單片機MCS-51通信時用定時器T1工作於定時方式2作為周波發生器,選擇11.0592的晶振。由於波特率為9600,所以定時器T1初值取0FDH。初始化還需設置用於控製和監視串行口狀態的控製狀態寄存器SCON。初始化程序如下:
MOV SCON,#0C0H ;通信方式3
MOV PCON,#00H ;SMOD=0
MOV TMOD,#20H ;定時器T1,工作於方式2
MOV TL1,#0FDH ;設置波特率為9600
MOV TH1,#0FDH
單片機始終處於被動狀態,隻在接收到通信的命令後才進入中斷服務子程序發送數據,進入通信狀態。PC機與單片機通信時,先發出呼叫信號,單片機接到約定的呼叫信號後,向PC機發出應答信號,表示準備接受,PC機在接到應答信號後則發出通信代碼,單片機接到通信代碼與本身代碼相減,若為0則開始接受命令,設置新的參數;若不為0則繼續執行采集數據和發送數據的程序。
3.5 庫機的設計
庫機設計以單片機為核心,配有EPROM、A/D轉換、數碼顯示、光電隔離和控製電路等(如圖3)。傳感器把溫度、濕度等非電量轉化為電量,通過A/D轉換後變為數字量,然後通過單片機的串行通信將數據送往PC機ji數shu據ju庫ku保bao存cun。同tong時shi,單dan片pian機ji將jiang采cai集ji的de結jie果guo與yu設she定ding參can數shu進jin行xing比bi較jiao,如ru若ruo不bu在zai規gui定ding的de參can數shu範fan圍wei之zhi內nei或huo者zhe單dan片pian機ji采cai集ji的de狀zhuang態tai量liang發fa生sheng異yi常chang,則ze驅qu動dong光guang電dian隔ge離li放fang大da器qi,經jing過guo一yi級ji放fang大da後hou就jiu可ke驅qu動dong繼ji電dian器qi動dong作zuo打da開kai降jiang溫wen、去濕設備和報警係統。在這裏光電隔離可以有效地避免繼電器的誤動作,提高了係統的抗幹擾能力。
4 結束語
本文所介紹的管理和監控係統是基於VB6的主從式通信結構,可靠性好,可行性強。其硬件結構簡單,軟件(VB6)編bian程cheng環huan境jing友you好hao,界jie麵mian靈ling活huo,易yi學xue易yi用yong。本ben係xi統tong可ke以yi方fang便bian地di控kong製zhi通tong信xin對dui象xiang的de選xuan擇ze,實shi時shi顯xian示shi所suo采cai集ji數shu據ju,人ren機ji對dui話hua靈ling多duo機ji動dong,易yi於yu操cao作zuo。這zhe種zhong單dan片pian機ji與yu數shu據ju庫ku的de串chuan行xing通tong信xin技ji術shu的de應ying用yong,為wei庫ku房fang管guan理li的de發fa展zhan提ti供gong了le新xin的de方fang向xiang。