李秀芹 杜向陽
(上海工程技術大學機械工程學院,上海 201620)
低壓斷路器是一種不僅有手動開關作用,而且能自動在電路發生短路及過載等情況時切斷電路,保護用電設備的電器,所以對低壓斷路器進行過載可靠性等常規參數的檢測非常重要,但手工調節斷路器雙金屬片螺釘長度時誤差較大。為此筆者提出了下位機PLC和上位機相結合的斷路器自動測試系統,下位機PLC主要完成數據的采集與運算,上位機則對下位機采集的各工作部件的運行狀態進行實時監控與顯示,并基于VB和PLC自由口實現數據的遠程通信。
筆者根據GB 14048.5-2008[1]開發了一套斷路器熱態在線測試系統。以三相塑殼式斷路器250H-250A的A相為例,其額定電流為250A,通過給斷路器加載一定的額定負載,檢測其在70~90s內是否滿足過載可靠性的要求,如果產品性能不達標,則利用柔性調整結構里的一體化組合螺絲刀改變雙金屬片螺釘的長度,使其滿足測試性能的要求。
斷路器測試系統的結構如圖1所示,軸向移動系統主要由步進電機、磁柵傳感器及絲桿機構等部分組成,完成水平移動與換向移動;柔性機構包括一體化螺絲刀和升降電機,實現螺釘的調節與螺母的鎖緊,其定位數據及螺釘長度等參數需通過自由口通信傳到上位機進行實時顯示,同時其他機構的啟停操作通過上位機VB下傳到PLC。PLC和計算機通過自由口字符中斷方式進行通信,實現二者間數據的實時遠程傳送;基于VB與Access2000數據庫可動態存儲與查詢測試數據,提高了斷路器測試系統的工作可靠性和效率。

圖1 斷路器測試系統結構示意圖
串行通信具有接線少、成本低、適宜遠距離傳輸及可靠性高等優點。筆者設計的斷路器熱態在線測試系統的上位機與PLC之間的通信即采用自由口串行通信方式。S7-200 PLC在自由口模式下可以與任何已知協議的智能設備通信,允許用戶自定義一些簡單的基本的通信協議設置,如數據長度及奇偶校驗等通信協議完全可由用戶自定義。
S7-200 PLC通過特殊的功能寄存器SMB30(Port0)和SMB130(Port1)進行自由口工作模式的設置[2]。自由口通信主要通過發送接收指令、特殊功能寄存器配置和中斷來實現,其中端口0的常用中斷和通過SMB30設計校驗方式、波特率及數據位長度等的控制字可參考文獻[3]。
S7-200PLC與PC機進行通信時,需要考慮通信雙方的距離問題[4],由于標準的PC/PPI電纜長度為5m,而實際系統設計時,二者間距可達幾十甚至上百米,為此制定硬件連接方案,解決通信數據失真和抗干擾問題。具體方案如下:
a. RS485總線中,如果傳輸線達到一定距離,而且處于復雜的外部環境時,易受外部環境的電磁感應等干擾。而中繼器中的高效防雷管可以有效抑制閃電和ESD,其傳輸距離可達1 200m,長距離通信時可選用圖2中的方案一,利用PC/PPI電纜與RS485中繼器配合的方式進行通信。
b. 如果通信距離不是很長,可采用RS485延長線來加長通信距離。
c. 通信設備距離在5m內時,直接用標準PC/PPI電纜進行通信連接,但要注意設置電纜的波特率等參數。

圖2 自由口通信硬件的3種連接方案
該測試系統基于CCD攝像機的視覺定位系統獲取斷路器雙金屬片螺釘螺母的中心坐標,通過該坐標控制軸向移動裝置和柔性調整機構動作,進行螺釘長度在線調整。為了避免通信中各方爭用通信線,測試系統計算機與PLC通信時,大多采用主-從方式,即把計算機作為主機、PLC看作從機,主機主動發送請求報文,從機收到請求后返回響應報文。本設計中PC為主站,S7-200 PLC為從站。
通信協議是指PC與PLC通信時發出命令和收到應答的信息格式,通信協議包含起始字符、站號、命令字、數據、校驗碼和結束字符[5]。
該系統中采集的數據單元共4個,模/數轉換后,兩個字節的整數將轉換為4個字節的實數(即工程值),所以需要發送給上位機的數據長度為16個字節。發送緩沖區數據存放區的劃分:VD220——發送緩沖區的指針;VB224——存放PLC發來的數據區字節數;VB225——存放計算機計算出的異或校驗結果。
本設計采用字符接收中斷方式接收數據,即根據收到的字符個數來判斷接收是否結束,所以沒有設置結束字符,劃分接收緩沖區如圖3所示。其中,VD86是接收緩沖區的指針,PLC計算出的異或校驗值存放在VB90中,計算機發來的數據區字節數存放在VB99中。

圖3 數據接收緩沖區分配
S7-200 PLC與上位機自由口的通信主要分為以下步驟:
a. 通過SMB30.1=1或SM0.7=1方式進行自由口通信模式選擇;
b. 串口參數初始化,將操作數寫入控制字節,開中斷ENI;
c. 字符接收準備,若有傳送字符則執行字符接收中斷子程序,并將收到的字符存入接收緩沖區;
d. 執行發送指令XMT,將處理好的數據發送給上位機;
e. 完成發送后,執行發送完中斷程序,等待下一幀數據,并轉至步驟c。
PLC通信程序流程如圖4所示。

圖4 PLC通信程序流程
PLC部分通信程序代碼如下:
/**主程序**/
LD SM0.7//自由口與PPI通信轉換
SM0.1//首次上電掃描
CALL SBR_0:SBR0//調用初始化子程序
/**初始化子程序**/
MOVB16#09,SMB30//9600bit/s,8位數據位,無奇偶校驗
MOVB 10,SMB34//定時10ms
ATCH INT_0:INT0,8//字符中斷事件8連接
ATCH INT_1:INT1,9//定時中斷事件9連接
ENI//開中斷
RCV VB100,0//指向接收緩沖區首地址
/**部分接收子程序**/
MOVB 0,VB100//清零
MOVD & VB100,VD86//指針VD86指向接收緩沖首地址VB100
MOVB SMB2,VB99//將報文數據區字節數存在VB99
上位機設計采用VB6.0作為開發工具對斷路器中的VB與PLC通信程序進行設計。串行通信的實現主要是通過控件MSComm實現[6,7]。通信控件MSComm的屬性主要包括:CommPort,設置或返回通信端口號;PortOpen,設置或返回通信口的狀態;Setings,設置并返回通信參數;Input,返回并清除接收緩沖區中數據;Output,向發送緩沖區寫數據。
MSComm控件對通信問題的處理主要有事件驅動方式和查詢方式兩種。事件驅動方式——相當于一般程序設計中的中斷方式,當串口發生錯誤或事件時,MSComm控件將產生OnComm事件,使用戶程序對該事件進行相應的處理,這種方法的優點是可靠性高、程序響應及時。查詢方式——在程序的每個關鍵功能執行后,在用戶程序中設計定時或不定時查詢,通過檢查CommEvent屬性值來查詢事件和錯誤,從而做出相應的處理。由于查詢方式占用的CPU時間太長。本設計中采用的是事件驅動方式。
上位機通信程序代碼及其注釋如下:
/**串口初始化部分程序**/
With MSComm1
.CommPort=1//選擇通信端口為COM1
.Settings="9600,n,8,1"http://串口通信參數設置,波特率為9600b/s,奇校驗,8個數據位,1個停止位
.InBufferCount=0//清空接收緩沖區
.OutBufferCount=0//清空發送緩沖區
.RThreshold=1//接收到的字符數大于等于1就產生接收事件
.PortOpen=True//打開串口
/**上位機接收數據部分程序**/
rcvtemp=MSComm1.Input//讀串口到緩沖區
For i=LBound(rcvtemp)To UBound(rcvtemp)
rcvlenth=rcvlenth+1
rcv(rcvlenth)=rcvtemp(i)//將接收到的各字節放入接收字節數組
Next i
上位機發送數據程序。起始字符約定為0,結束字符約定為&HFF,校驗碼約定為報文中第二個字節與數據區內各字節的異或和。程序代碼如下:
nbyte(1)=UBound(sdate)+1//發送數據區字節數
fcs=nbyte(1)//異或校驗碼
For i=2 To UBound(sdate)+2
nbyte(i)=sdate(i-2)//待發送數據
MSComm1.Output=nbyte//發送
4.2.1數據庫基本功能
為方便管理測試數據,本設計選用Access2000數據庫作為平臺,實現斷路器合格率及測試時間等重要參數的組織、存儲、查詢、瀏覽信息記錄及斷路器合格率的報表統計等功能。同時,數據表字段顯示測試時間、斷路器型號及規格參數等信息。
4.2.2數據庫的創建和鏈接
在Access中創建一個新數據庫,命名為“斷路器測試數據庫”,然后創建ODBC數據源,這個數據源包括數據庫位置、數據庫類型及ODBC驅動程序等信息。
ADO是Visual Basic程序中數據庫開發的最新內容,用以控件鏈接數據庫。ADO可以處理不同的數據庫記錄,使應用程序具有靈活性和通用性,其中ADO中最主要的對象是Connection、Recordset和Command。Connection對象主要用于設置數據源的鏈接;Recordset對象主要用來接收和管理來自Connection數據源的數據;Command對象設置訪問數據源所需的命令;在窗體的FormLoad事件中編寫相應的VB與Access2000數據庫鏈接。
考慮到系統工作環境不理想,周圍光線分布不均勻且工作空間狹小,有可能會影響通信系統的穩定性,所以設計外加電磁擾動源(如變壓器及變頻器等),測試系統的穩定性并進行調試實驗進行對比分析。測試時從VB操作界面發送字符串16##55 16##EE 16##CC 16##BB …,下位機通過查看相應存儲空間核查發送數據是否正確。經調試分析得出在有變頻器等干擾存在的情況下,通信要加金屬屏蔽套管抗干擾,否則通信數據可能會丟失。用示波器監測到的自由口通信數據波形如圖5所示。

圖5 自由口通信數據波形
筆者根據斷路器測試系統的控制要求,開發了基于VB與S7-200 PLC自由口模式下的通信系統,實現了斷路器在線檢測系統的實時通信、數據顯示和遠程控制,有效解決了人工操作產生的誤差。采用Access2000數據庫與VB操作界面動態鏈接模式,方便了測試結果的查詢和歷史趨勢分析?,F場調試和運行結果表明:該方法簡單、實時性好且可靠性高,同時降低了開發成本,提高了檢測的智能程度。
[1] GB 14048.5-2008,低壓開關設備和控制設備[S].北京:中國標準出版社,2008.
[2] 張揚,蔡春偉,孫明健.S7-200 PLC原理與應用系統設計[M].北京:機械工業出版社,2007:196~202.
[3] 甘宜洋,程武山,李小龍.水下生產測試系統的數據通信[J].化工自動化及儀表,2014,41(12):1412~1416.
[4] 程武山.分布式控制技術及其應用[M].北京:科學出版社,2008:90~100.
[5] 李如甲,程武山,董林.基于RS-485的智能儀表與PLC串行通信[J].儀表技術與傳感器,2011,(8):34~36.
[6] 李江全,湯智輝,朱東芹.Visual Basic數據采集與串口通信測控應用實戰[M].北京:人民郵電出版社,2010:143~152.
[7] 董淑冷,茅紅偉.物料自動分揀系統中PLC與上位機的通信[J].計算機工程,2007,33(11):267~269.