智能建筑中PLC可編程與PC的通信實現微機監(jiān)控
摘 要:本文通過介紹
PLC可編程控制器的開發(fā)和PLC與VB的通信技術,結合數據庫技術,為智能建筑中的系統(tǒng)集成提供一種思路,提高智能建筑中設備使用的安全和可靠性。
1、引言:
PLC在智能建筑中也得到廣泛應用,如中央空調控制、二次加壓設施、消防系統(tǒng)、電梯系統(tǒng)等。它集邏輯運算、順序控制、定時、計數、算術運算功能為一體。另外還可以與其他計算機進行通信聯(lián)網,這種通信不但包括不同的PLC之間的數據交換,而且還包括PLC與計算機之間的通信。
2、系統(tǒng)構成:
本系統(tǒng)采用PLC采集模擬信號、數據處理,通過串行通信口上傳到計算機,計算機對傳上來智能建筑中監(jiān)控設備的數據進行分析、分類記入數據庫,實時顯示在上位機上并提供數據查詢。PLC為S7-224,串行通信接口的信號線采用RS-485,此信號線為半雙工,即不能同時接收和發(fā)送。將PLC置于run態(tài),就可以將PLC可編程中存于發(fā)送緩沖區(qū)中的數據及信號送人上位機的串口,上位機通過串口通信程序接收這些數據后顯示并通過數據庫控件Adodc的綁定,把數據記錄到數據庫,從而完成數據的采樣并記錄。
3、S7-200的通信方式與通信參數的設置:
本工程選擇STEP7-Micro/WlN32支持的通信硬件PC/PPI電纜,它所支持的波特率有9.6Kbps和19.2Kbps,支持的協(xié)議為PPI協(xié)議,即點對點接口協(xié)議,基于開放系統(tǒng)互聯(lián)模型0Sl。PPl是主/從協(xié)議,網絡上的S7-200CPU均為從站,其他CPU、SIMATIC編程器或TD200為主站。S7-200CPU仍通信端口采用RS-485信號標準的連接口,PC/PPI電纜把S7-200計算機連接起來,通過使用接收中斷、發(fā)送中斷和字符中斷等指令,自由端口通信可以控制S7-200CPU通信口的操作模式。本工程使用的是自由端口模式,允許在CPU處于RUN模式時通信口0使用自由端口模式,通過設定SMB30的值,我們可以選擇波特率、奇偶校驗、每個字符的數據位和協(xié)議。CPU處于STOP模式時,停止自由端口通信,通信口強制轉換成PPI協(xié)議模式,此時,就可以向CPU中輸入PLC程序,實現編程軟件對PLC的編程和控制功能。在這里的通訊過程采用主從方式,即計算機為主機,PLC為從機,只有主機計算機發(fā)送請求報文后,從機PLC才向PC返回發(fā)送緩沖區(qū)中的數據。
計算機與PLC通訊時,一般由計算機發(fā)給PLC指令,PLC收到指令后自動發(fā)回答應。下面給出命令幀、答應幀和幀檢查的結構。
FCS(Fame CheckSum)表示報文開頭和報文結結束間所有執(zhí)行邏輯加操作所得的結果,它由兩位ASC碼字符組成,每次PLC接收到計算機發(fā)送過來的一幀數據,即計算其效驗和,結果記為FCS2,將FCS2與幀中所包含的FCS1比較,可檢查該幀是否有數據錯誤,PLC立即發(fā)送錯誤信息計算機,利用這一機制,有效防止了數據傳輸錯誤。
4、自由端口模式下PLC的通信:
由于本工程使用的是PC/PPl電纜,所以要在PLC的程序中考慮電纜的切換時間。PLC接收到請求報文到它返回發(fā)送緩沖區(qū)的數據的延遲時間必須不小于電纜的切換時間。波特率為9600bps,電纜的切換時間是2ms。在本工程的程序中是用定時中斷實現切換延時的。
定時中斷子程序:
NefworkTitle定時中斷程序INT2:
LDSM0.0
DTCCH 10
XMT VB200.0
當程序運行到“啟動定時中斷”(即ATCHINL的語句時,就會跳到如上所示的中斷子程序中,SM0.0是特殊存儲器,該位始終為1,即只要PLC處于RUN狀態(tài),這一開關即是接通的。XMTVB200.0語句是用來發(fā)送數據到串口的,此時發(fā)送的是存儲在以200為首地址的連續(xù)的存儲空間中的數據,是通過端口0發(fā)送的。
另外,在初始化時要注意自由端口通信協(xié)議的設定,一定要使通信過程中的波特率,數據位,奇偶校驗及停止位與上位機VB以及通信線上中設定的參數相同,否則將不能實現通信過程,要么接收不到數據,要么會出現“下標越界”的錯誤。
5上位機的通信部分采用VB語言編程
在編程過程中只要設置MSComm控件的屬性,就可以實現串行通信。在此控件眾多的屬性當中,需要重新定義的屬性只有Comm—Port仍;輸數據的通信端口號)、Settings(設置數據傳輸的波特率、奇偶校驗、數據位以及停止位,注意,此參數一定要與PLC通信程中設置的參數相一致)、Porf0Pen(設置通信端口的狀態(tài))、InputMode(讀取接收緩沖區(qū)的格式)等。本工程采用事件驅動方式處理接受信息,即把RfhreshoId屬性設置為非零的值,此時只要接收字符或傳輸線發(fā)生變化就會產生串口事件OnComm。通過查詢CommEvent屬性可以捕獲這些通信事件。
Mscomm控件的主要屬性列表:
計算機串口初始化程序段如下:
With MSComm 1
PorfODen=False
Comport=1 設置通信端口為1
PortOpen-True'打開通訊端口
InputMode=comlnpufModeBinary以字節(jié)方式接受數據
EndWith
在VB中實現異或計算的程序及注釋如下:
nByfe(1)=UBound(sdata)+1'送數據區(qū)字節(jié)數
fcs=nByte(1)’校驗碼初始化
Fori=2 to UBound(sdate)+2
nByte(1)=sdata(1-2)。待發(fā)送數據報文數組的數據區(qū)
fcs=fcs×or n,Byte(1)異或運算,求校驗碼
nByte(1)=fcs'送校驗碼
其中sdafa發(fā)送的數據數組的變量名稱,For Next語句實現所發(fā)送的數據每一位都進行異或運算。這樣就可以把發(fā)送數據的異或校驗碼送到PLC中,在PLC比較兩次計算出的校驗碼是否相同,從而提高通信的可靠性。
本工程中把計算機向下發(fā)送控制命令的部分寫成自定義函數send(xi)(i從1到6),在每一個需要發(fā)送控制命令的按鈕處調用此函數,只是在send中參數設置為不同的控制函數。
為模擬一個配電屏控制面,該軟件可以對三相輸出電壓、電流、功率因數這些信號進行采集、顯示并存儲,并對設備的動作狀態(tài)、故障情況采集到數據庫中。該控制面上方有一系列的控制按鈕,點擊某一按鈕就會向下位機發(fā)送相應的控制命令,控制下位機動作。
6、與數據庫綁定的控件:
采集數據的最終目的不僅要把需要顯示的數據(比如:日常量)顯示在界面上,另外還要把數據記錄到數據庫中,以備日后查詢。顯示數據的過程很容易實現,就是把接收緩沖區(qū)的內容按照事先約定好的順序依次取出即可。要把數據記錄到數據庫就需要用到數據庫綁定控件,在本工程中用到的是Adodc控件,這一控件也不包括在常用的工具框中,仍然要依照加MSComm控件的方法把工具條Microsoft ADO Data Control6.0(sP4)(OLEDB)加到工具框中,然后就可以把這一控件拖入Form(在本次工作中把Adodcl控件放在了程序運行時不顯示的查詢畫面中,這樣就可以同時完成記錄到數據庫和查詢工作)中,通過設定Adodcl的Conectionst ring(要求與事先建好的數據庫所存儲的地址相聯(lián)接)、CommandType(由于要向數據庫寫人數據因此要把它設置為2-adCmdtable)以及RecordSource。(如果指定的數據庫包含多個表,就要選擇一個與此Adodcl相對應的表)屬性(其他屬性用默認值即可)就綁定完畢。
7、結束語:
從以上敘述,可以看到,由計算機與PLC可編程組建實時監(jiān)控系統(tǒng)關鍵在于解決計算機與PLC實時通信、PLC對設備狀態(tài)實時監(jiān)控問題。計算機與PLC組建的實時監(jiān)控系統(tǒng)開發(fā)成本低、實時性好、操作簡便、通用性強,利用計算機易組網功能,既可以做到智能建筑內部網絡互聯(lián)、信息共享,又可通過調制解調器連接因特網,使異地信息共享、遠程監(jiān)控變?yōu)楝F實。實際工程中,該系統(tǒng)在惡劣的工業(yè)環(huán)境下工作穩(wěn)定、可靠,具有一定的應用推廣價值。