李秀芹 杜向陽
(上海工程技術(shù)大學(xué)機(jī)械工程學(xué)院,上海 201620)
低壓斷路器是一種不僅有手動(dòng)開關(guān)作用,而且能自動(dòng)在電路發(fā)生短路及過載等情況時(shí)切斷電路,保護(hù)用電設(shè)備的電器,所以對(duì)低壓斷路器進(jìn)行過載可靠性等常規(guī)參數(shù)的檢測(cè)非常重要,但手工調(diào)節(jié)斷路器雙金屬片螺釘長(zhǎng)度時(shí)誤差較大。為此筆者提出了下位機(jī)PLC和上位機(jī)相結(jié)合的斷路器自動(dòng)測(cè)試系統(tǒng),下位機(jī)PLC主要完成數(shù)據(jù)的采集與運(yùn)算,上位機(jī)則對(duì)下位機(jī)采集的各工作部件的運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控與顯示,并基于VB和PLC自由口實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程通信。
筆者根據(jù)GB 14048.5-2008[1]開發(fā)了一套斷路器熱態(tài)在線測(cè)試系統(tǒng)。以三相塑殼式斷路器250H-250A的A相為例,其額定電流為250A,通過給斷路器加載一定的額定負(fù)載,檢測(cè)其在70~90s內(nèi)是否滿足過載可靠性的要求,如果產(chǎn)品性能不達(dá)標(biāo),則利用柔性調(diào)整結(jié)構(gòu)里的一體化組合螺絲刀改變雙金屬片螺釘?shù)拈L(zhǎng)度,使其滿足測(cè)試性能的要求。
斷路器測(cè)試系統(tǒng)的結(jié)構(gòu)如圖1所示,軸向移動(dòng)系統(tǒng)主要由步進(jìn)電機(jī)、磁柵傳感器及絲桿機(jī)構(gòu)等部分組成,完成水平移動(dòng)與換向移動(dòng);柔性機(jī)構(gòu)包括一體化螺絲刀和升降電機(jī),實(shí)現(xiàn)螺釘?shù)恼{(diào)節(jié)與螺母的鎖緊,其定位數(shù)據(jù)及螺釘長(zhǎng)度等參數(shù)需通過自由口通信傳到上位機(jī)進(jìn)行實(shí)時(shí)顯示,同時(shí)其他機(jī)構(gòu)的啟停操作通過上位機(jī)VB下傳到PLC。PLC和計(jì)算機(jī)通過自由口字符中斷方式進(jìn)行通信,實(shí)現(xiàn)二者間數(shù)據(jù)的實(shí)時(shí)遠(yuǎn)程傳送;基于VB與Access2000數(shù)據(jù)庫可動(dòng)態(tài)存儲(chǔ)與查詢測(cè)試數(shù)據(jù),提高了斷路器測(cè)試系統(tǒng)的工作可靠性和效率。
圖1 斷路器測(cè)試系統(tǒng)結(jié)構(gòu)示意圖
串行通信具有接線少、成本低、適宜遠(yuǎn)距離傳輸及可靠性高等優(yōu)點(diǎn)。筆者設(shè)計(jì)的斷路器熱態(tài)在線測(cè)試系統(tǒng)的上位機(jī)與PLC之間的通信即采用自由口串行通信方式。S7-200 PLC在自由口模式下可以與任何已知協(xié)議的智能設(shè)備通信,允許用戶自定義一些簡(jiǎn)單的基本的通信協(xié)議設(shè)置,如數(shù)據(jù)長(zhǎng)度及奇偶校驗(yàn)等通信協(xié)議完全可由用戶自定義。
S7-200 PLC通過特殊的功能寄存器SMB30(Port0)和SMB130(Port1)進(jìn)行自由口工作模式的設(shè)置[2]。自由口通信主要通過發(fā)送接收指令、特殊功能寄存器配置和中斷來實(shí)現(xiàn),其中端口0的常用中斷和通過SMB30設(shè)計(jì)校驗(yàn)方式、波特率及數(shù)據(jù)位長(zhǎng)度等的控制字可參考文獻(xiàn)[3]。
S7-200PLC與PC機(jī)進(jìn)行通信時(shí),需要考慮通信雙方的距離問題[4],由于標(biāo)準(zhǔn)的PC/PPI電纜長(zhǎng)度為5m,而實(shí)際系統(tǒng)設(shè)計(jì)時(shí),二者間距可達(dá)幾十甚至上百米,為此制定硬件連接方案,解決通信數(shù)據(jù)失真和抗干擾問題。具體方案如下:
a. RS485總線中,如果傳輸線達(dá)到一定距離,而且處于復(fù)雜的外部環(huán)境時(shí),易受外部環(huán)境的電磁感應(yīng)等干擾。而中繼器中的高效防雷管可以有效抑制閃電和ESD,其傳輸距離可達(dá)1 200m,長(zhǎng)距離通信時(shí)可選用圖2中的方案一,利用PC/PPI電纜與RS485中繼器配合的方式進(jìn)行通信。
b. 如果通信距離不是很長(zhǎng),可采用RS485延長(zhǎng)線來加長(zhǎng)通信距離。
c. 通信設(shè)備距離在5m內(nèi)時(shí),直接用標(biāo)準(zhǔn)PC/PPI電纜進(jìn)行通信連接,但要注意設(shè)置電纜的波特率等參數(shù)。
圖2 自由口通信硬件的3種連接方案
該測(cè)試系統(tǒng)基于CCD攝像機(jī)的視覺定位系統(tǒng)獲取斷路器雙金屬片螺釘螺母的中心坐標(biāo),通過該坐標(biāo)控制軸向移動(dòng)裝置和柔性調(diào)整機(jī)構(gòu)動(dòng)作,進(jìn)行螺釘長(zhǎng)度在線調(diào)整。為了避免通信中各方爭(zhēng)用通信線,測(cè)試系統(tǒng)計(jì)算機(jī)與PLC通信時(shí),大多采用主-從方式,即把計(jì)算機(jī)作為主機(jī)、PLC看作從機(jī),主機(jī)主動(dòng)發(fā)送請(qǐng)求報(bào)文,從機(jī)收到請(qǐng)求后返回響應(yīng)報(bào)文。本設(shè)計(jì)中PC為主站,S7-200 PLC為從站。
通信協(xié)議是指PC與PLC通信時(shí)發(fā)出命令和收到應(yīng)答的信息格式,通信協(xié)議包含起始字符、站號(hào)、命令字、數(shù)據(jù)、校驗(yàn)碼和結(jié)束字符[5]。
該系統(tǒng)中采集的數(shù)據(jù)單元共4個(gè),模/數(shù)轉(zhuǎn)換后,兩個(gè)字節(jié)的整數(shù)將轉(zhuǎn)換為4個(gè)字節(jié)的實(shí)數(shù)(即工程值),所以需要發(fā)送給上位機(jī)的數(shù)據(jù)長(zhǎng)度為16個(gè)字節(jié)。發(fā)送緩沖區(qū)數(shù)據(jù)存放區(qū)的劃分:VD220——發(fā)送緩沖區(qū)的指針;VB224——存放PLC發(fā)來的數(shù)據(jù)區(qū)字節(jié)數(shù);VB225——存放計(jì)算機(jī)計(jì)算出的異或校驗(yàn)結(jié)果。
本設(shè)計(jì)采用字符接收中斷方式接收數(shù)據(jù),即根據(jù)收到的字符個(gè)數(shù)來判斷接收是否結(jié)束,所以沒有設(shè)置結(jié)束字符,劃分接收緩沖區(qū)如圖3所示。其中,VD86是接收緩沖區(qū)的指針,PLC計(jì)算出的異或校驗(yàn)值存放在VB90中,計(jì)算機(jī)發(fā)來的數(shù)據(jù)區(qū)字節(jié)數(shù)存放在VB99中。
圖3 數(shù)據(jù)接收緩沖區(qū)分配
S7-200 PLC與上位機(jī)自由口的通信主要分為以下步驟:
a. 通過SMB30.1=1或SM0.7=1方式進(jìn)行自由口通信模式選擇;
b. 串口參數(shù)初始化,將操作數(shù)寫入控制字節(jié),開中斷ENI;
c. 字符接收準(zhǔn)備,若有傳送字符則執(zhí)行字符接收中斷子程序,并將收到的字符存入接收緩沖區(qū);
d. 執(zhí)行發(fā)送指令XMT,將處理好的數(shù)據(jù)發(fā)送給上位機(jī);
e. 完成發(fā)送后,執(zhí)行發(fā)送完中斷程序,等待下一幀數(shù)據(jù),并轉(zhuǎn)至步驟c。
PLC通信程序流程如圖4所示。
圖4 PLC通信程序流程
PLC部分通信程序代碼如下:
/**主程序**/
LD SM0.7//自由口與PPI通信轉(zhuǎn)換
SM0.1//首次上電掃描
CALL SBR_0:SBR0//調(diào)用初始化子程序
/**初始化子程序**/
MOVB16#09,SMB30//9600bit/s,8位數(shù)據(jù)位,無奇偶校驗(yàn)
MOVB 10,SMB34//定時(shí)10ms
ATCH INT_0:INT0,8//字符中斷事件8連接
ATCH INT_1:INT1,9//定時(shí)中斷事件9連接
ENI//開中斷
RCV VB100,0//指向接收緩沖區(qū)首地址
/**部分接收子程序**/
MOVB 0,VB100//清零
MOVD & VB100,VD86//指針VD86指向接收緩沖首地址VB100
MOVB SMB2,VB99//將報(bào)文數(shù)據(jù)區(qū)字節(jié)數(shù)存在VB99
上位機(jī)設(shè)計(jì)采用VB6.0作為開發(fā)工具對(duì)斷路器中的VB與PLC通信程序進(jìn)行設(shè)計(jì)。串行通信的實(shí)現(xiàn)主要是通過控件MSComm實(shí)現(xiàn)[6,7]。通信控件MSComm的屬性主要包括:CommPort,設(shè)置或返回通信端口號(hào);PortOpen,設(shè)置或返回通信口的狀態(tài);Setings,設(shè)置并返回通信參數(shù);Input,返回并清除接收緩沖區(qū)中數(shù)據(jù);Output,向發(fā)送緩沖區(qū)寫數(shù)據(jù)。
MSComm控件對(duì)通信問題的處理主要有事件驅(qū)動(dòng)方式和查詢方式兩種。事件驅(qū)動(dòng)方式——相當(dāng)于一般程序設(shè)計(jì)中的中斷方式,當(dāng)串口發(fā)生錯(cuò)誤或事件時(shí),MSComm控件將產(chǎn)生OnComm事件,使用戶程序?qū)υ撌录M(jìn)行相應(yīng)的處理,這種方法的優(yōu)點(diǎn)是可靠性高、程序響應(yīng)及時(shí)。查詢方式——在程序的每個(gè)關(guān)鍵功能執(zhí)行后,在用戶程序中設(shè)計(jì)定時(shí)或不定時(shí)查詢,通過檢查CommEvent屬性值來查詢事件和錯(cuò)誤,從而做出相應(yīng)的處理。由于查詢方式占用的CPU時(shí)間太長(zhǎng)。本設(shè)計(jì)中采用的是事件驅(qū)動(dòng)方式。
上位機(jī)通信程序代碼及其注釋如下:
/**串口初始化部分程序**/
With MSComm1
.CommPort=1//選擇通信端口為COM1
.Settings="9600,n,8,1"http://串口通信參數(shù)設(shè)置,波特率為9600b/s,奇校驗(yàn),8個(gè)數(shù)據(jù)位,1個(gè)停止位
.InBufferCount=0//清空接收緩沖區(qū)
.OutBufferCount=0//清空發(fā)送緩沖區(qū)
.RThreshold=1//接收到的字符數(shù)大于等于1就產(chǎn)生接收事件
.PortOpen=True//打開串口
/**上位機(jī)接收數(shù)據(jù)部分程序**/
rcvtemp=MSComm1.Input//讀串口到緩沖區(qū)
For i=LBound(rcvtemp)To UBound(rcvtemp)
rcvlenth=rcvlenth+1
rcv(rcvlenth)=rcvtemp(i)//將接收到的各字節(jié)放入接收字節(jié)數(shù)組
Next i
上位機(jī)發(fā)送數(shù)據(jù)程序。起始字符約定為0,結(jié)束字符約定為&HFF,校驗(yàn)碼約定為報(bào)文中第二個(gè)字節(jié)與數(shù)據(jù)區(qū)內(nèi)各字節(jié)的異或和。程序代碼如下:
nbyte(1)=UBound(sdate)+1//發(fā)送數(shù)據(jù)區(qū)字節(jié)數(shù)
fcs=nbyte(1)//異或校驗(yàn)碼
For i=2 To UBound(sdate)+2
nbyte(i)=sdate(i-2)//待發(fā)送數(shù)據(jù)
MSComm1.Output=nbyte//發(fā)送
4.2.1數(shù)據(jù)庫基本功能
為方便管理測(cè)試數(shù)據(jù),本設(shè)計(jì)選用Access2000數(shù)據(jù)庫作為平臺(tái),實(shí)現(xiàn)斷路器合格率及測(cè)試時(shí)間等重要參數(shù)的組織、存儲(chǔ)、查詢、瀏覽信息記錄及斷路器合格率的報(bào)表統(tǒng)計(jì)等功能。同時(shí),數(shù)據(jù)表字段顯示測(cè)試時(shí)間、斷路器型號(hào)及規(guī)格參數(shù)等信息。
4.2.2數(shù)據(jù)庫的創(chuàng)建和鏈接
在Access中創(chuàng)建一個(gè)新數(shù)據(jù)庫,命名為“斷路器測(cè)試數(shù)據(jù)庫”,然后創(chuàng)建ODBC數(shù)據(jù)源,這個(gè)數(shù)據(jù)源包括數(shù)據(jù)庫位置、數(shù)據(jù)庫類型及ODBC驅(qū)動(dòng)程序等信息。
ADO是Visual Basic程序中數(shù)據(jù)庫開發(fā)的最新內(nèi)容,用以控件鏈接數(shù)據(jù)庫。ADO可以處理不同的數(shù)據(jù)庫記錄,使應(yīng)用程序具有靈活性和通用性,其中ADO中最主要的對(duì)象是Connection、Recordset和Command。Connection對(duì)象主要用于設(shè)置數(shù)據(jù)源的鏈接;Recordset對(duì)象主要用來接收和管理來自Connection數(shù)據(jù)源的數(shù)據(jù);Command對(duì)象設(shè)置訪問數(shù)據(jù)源所需的命令;在窗體的FormLoad事件中編寫相應(yīng)的VB與Access2000數(shù)據(jù)庫鏈接。
考慮到系統(tǒng)工作環(huán)境不理想,周圍光線分布不均勻且工作空間狹小,有可能會(huì)影響通信系統(tǒng)的穩(wěn)定性,所以設(shè)計(jì)外加電磁擾動(dòng)源(如變壓器及變頻器等),測(cè)試系統(tǒng)的穩(wěn)定性并進(jìn)行調(diào)試實(shí)驗(yàn)進(jìn)行對(duì)比分析。測(cè)試時(shí)從VB操作界面發(fā)送字符串16##55 16##EE 16##CC 16##BB …,下位機(jī)通過查看相應(yīng)存儲(chǔ)空間核查發(fā)送數(shù)據(jù)是否正確。經(jīng)調(diào)試分析得出在有變頻器等干擾存在的情況下,通信要加金屬屏蔽套管抗干擾,否則通信數(shù)據(jù)可能會(huì)丟失。用示波器監(jiān)測(cè)到的自由口通信數(shù)據(jù)波形如圖5所示。
圖5 自由口通信數(shù)據(jù)波形
筆者根據(jù)斷路器測(cè)試系統(tǒng)的控制要求,開發(fā)了基于VB與S7-200 PLC自由口模式下的通信系統(tǒng),實(shí)現(xiàn)了斷路器在線檢測(cè)系統(tǒng)的實(shí)時(shí)通信、數(shù)據(jù)顯示和遠(yuǎn)程控制,有效解決了人工操作產(chǎn)生的誤差。采用Access2000數(shù)據(jù)庫與VB操作界面動(dòng)態(tài)鏈接模式,方便了測(cè)試結(jié)果的查詢和歷史趨勢(shì)分析?,F(xiàn)場(chǎng)調(diào)試和運(yùn)行結(jié)果表明:該方法簡(jiǎn)單、實(shí)時(shí)性好且可靠性高,同時(shí)降低了開發(fā)成本,提高了檢測(cè)的智能程度。
[1] GB 14048.5-2008,低壓開關(guān)設(shè)備和控制設(shè)備[S].北京:中國標(biāo)準(zhǔn)出版社,2008.
[2] 張揚(yáng),蔡春偉,孫明健.S7-200 PLC原理與應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2007:196~202.
[3] 甘宜洋,程武山,李小龍.水下生產(chǎn)測(cè)試系統(tǒng)的數(shù)據(jù)通信[J].化工自動(dòng)化及儀表,2014,41(12):1412~1416.
[4] 程武山.分布式控制技術(shù)及其應(yīng)用[M].北京:科學(xué)出版社,2008:90~100.
[5] 李如甲,程武山,董林.基于RS-485的智能儀表與PLC串行通信[J].儀表技術(shù)與傳感器,2011,(8):34~36.
[6] 李江全,湯智輝,朱東芹.Visual Basic數(shù)據(jù)采集與串口通信測(cè)控應(yīng)用實(shí)戰(zhàn)[M].北京:人民郵電出版社,2010:143~152.
[7] 董淑冷,茅紅偉.物料自動(dòng)分揀系統(tǒng)中PLC與上位機(jī)的通信[J].計(jì)算機(jī)工程,2007,33(11):267~269.