周明剛,余艷艷,陳 源,周敬東
(湖北工業(yè)大學(xué)機(jī)械工程學(xué)院,湖北 武漢 430068)
艦艇用的軟管由于在使用中有反復(fù)高壓充水、放水的過程,對(duì)其疲勞強(qiáng)度有嚴(yán)格的要求.為測(cè)試各個(gè)批次的軟管是否滿足疲勞強(qiáng)度要求,軟管的疲勞強(qiáng)度試驗(yàn)測(cè)試系統(tǒng)采用對(duì)管道內(nèi)注入一定壓力的水并在管道內(nèi)保持一段時(shí)間,然后排出,反復(fù)循環(huán)充放,直到管道發(fā)生漏水或者滿足用戶預(yù)設(shè)次數(shù)的方法,測(cè)試軟管是否滿足疲勞強(qiáng)度要求.
本系統(tǒng)由上位機(jī)和下位機(jī)兩部分組成.上位機(jī)由臺(tái)式PC機(jī)構(gòu)成,運(yùn)行用VC++開發(fā)的應(yīng)用程序.下位機(jī)以PLC為核心控制塊,對(duì)傳感器進(jìn)行數(shù)據(jù)采集分析,同時(shí)通過對(duì)電動(dòng)球閥的開合控制液體的注入和排出.上位機(jī)與下位機(jī)之間通過485接口與臺(tái)式PC機(jī)連接進(jìn)行通訊,實(shí)現(xiàn)較遠(yuǎn)距離的智能化監(jiān)控管理.系統(tǒng)的工作原理如圖1所示.
圖1 系統(tǒng)工作原理圖
其工作過程為:
1)系統(tǒng)開啟后,電磁球閥1開啟,電動(dòng)球閥2關(guān)閉,水泵工作,軟管進(jìn)水,壓力傳感器開始工作,管內(nèi)壓力開始上升.
2)當(dāng)壓力傳感器測(cè)得管內(nèi)壓強(qiáng)達(dá)到指定的保壓值時(shí),系統(tǒng)將關(guān)閉電動(dòng)球閥1與水泵.保壓指定的時(shí)間后電動(dòng)球閥2打開,水排出,管內(nèi)壓力下降.
3)當(dāng)壓力傳感器測(cè)出壓力小于指定的值時(shí),電動(dòng)閥2關(guān)閉,電動(dòng)閥1打開,水泵工作,重新注水.
4)每注水一次“實(shí)驗(yàn)次數(shù)值”自動(dòng)減1,直到實(shí)驗(yàn)次數(shù)值歸零,實(shí)驗(yàn)結(jié)束,將實(shí)驗(yàn)數(shù)據(jù)存入數(shù)據(jù)庫.
下位機(jī)中的PLC選用的是SIMENS公司的S7-200系列產(chǎn)品,它支持多種通信協(xié)議.系統(tǒng)設(shè)計(jì)過程中選用用戶自定義協(xié)議(自由口協(xié)議),用戶可以通過編程控制PLC通信口的操作模式,并與任何設(shè)備靈活地進(jìn)行通信.下位機(jī)通過PPI電纜和485無源轉(zhuǎn)換器與上位機(jī)的串口相連.
通訊方式采用半雙工主從式,上位機(jī)為主機(jī),下位機(jī)只有在收到上位機(jī)的信息后才根據(jù)當(dāng)前的狀態(tài)向上位機(jī)發(fā)送信息.如果下位機(jī)收到的信息不正確則不向上位機(jī)發(fā)送任何信息.上位機(jī)如果發(fā)送信息后收不到下位機(jī)的確認(rèn)信息,則每0.5 s向下位機(jī)發(fā)送重復(fù)一次.待實(shí)驗(yàn)開始后,上位機(jī)每隔0.5 s向下位機(jī)發(fā)送訊問信息一幀數(shù)據(jù),如果下位機(jī)收到的信息是正確的,下位機(jī)則將實(shí)時(shí)測(cè)的的壓力值、當(dāng)前實(shí)驗(yàn)次數(shù)、當(dāng)前狀態(tài)的信息等發(fā)送回主機(jī).這樣,上位機(jī)就可以得到實(shí)時(shí)的數(shù)據(jù),顯示在人機(jī)界面中并保存到數(shù)據(jù)庫.
上位機(jī)運(yùn)用VC++進(jìn)行開發(fā),通過串口與下位機(jī)進(jìn)行通訊.在VC++中開發(fā)串口通信應(yīng)用程序,通常有兩種方法:使用串口通信控件和利用API函數(shù)[1].其中通信控件的工作原理類似于中斷方式,當(dāng)有通信事件(如發(fā)送或接受數(shù)據(jù)等)時(shí)就會(huì)觸發(fā)OnComm事件,從而觸發(fā)該事件的處理函數(shù).應(yīng)用這種方法實(shí)現(xiàn)串口通訊簡(jiǎn)單方便,不用了解復(fù)雜的API函數(shù),因此選用控件的方法開發(fā)上位機(jī)通訊功能.
在作為上位機(jī)的PC機(jī)中運(yùn)行的軟件用VC++6進(jìn)行開發(fā),后臺(tái)數(shù)據(jù)庫使用ACCESS數(shù)據(jù)庫管理軟件.主要功能包括建立和管理試驗(yàn)項(xiàng)目、查詢歷史測(cè)試結(jié)果數(shù)據(jù)、自定義試驗(yàn)參數(shù)、試驗(yàn)過程實(shí)時(shí)監(jiān)測(cè)、故障自診斷、試驗(yàn)啟動(dòng)與停止等.軟件主界面如圖2所示.
圖2 上位機(jī)軟件主界面
在上位機(jī)軟件的設(shè)計(jì)過程中,首先需要在CFormView基類派生的對(duì)話框類中添加MSComm控件,并為該控件添加處理OnComm事件的消息處理函數(shù)OnComm().在CFormView基類派生的對(duì)話框類中還加入了一個(gè)定時(shí)器處理函數(shù)OnTimer(),定時(shí)器函數(shù)每500ms執(zhí)行一次.定時(shí)器函數(shù)定時(shí)根據(jù)用戶界面的交互結(jié)果向下位機(jī)發(fā)送命令,分析消息處理函數(shù)OnComm()接收的數(shù)據(jù)并修改用戶界面,將下位機(jī)的返回值實(shí)時(shí)顯示在用戶界面上[2].其中部分處理函數(shù)的代碼如下:
通信模塊采用自由口通信模式.在通信之前通過設(shè)定SMB30來選擇通訊模式,設(shè)定波特率以及數(shù)據(jù)長(zhǎng)度和校驗(yàn)位.系統(tǒng)采取的通訊格式為無奇偶校驗(yàn),波特率9600,8位字符[3].初始化部分需要進(jìn)行相應(yīng)的設(shè)置工作,其中的部分程序段如下:
數(shù)據(jù)發(fā)送和接收均采用專用指令實(shí)現(xiàn),數(shù)據(jù)通訊過程用中斷實(shí)現(xiàn).初始化完成后,每收到一個(gè)正確的數(shù)據(jù)包都對(duì)該數(shù)據(jù)包進(jìn)行回應(yīng),發(fā)送回一個(gè)對(duì)應(yīng)的數(shù)據(jù)包.數(shù)據(jù)包的格式及各個(gè)字節(jié)的功能如表1所示.每個(gè)數(shù)據(jù)包由11個(gè)字節(jié)組成,其作用分別為起始位、本機(jī)地址、目的地址、功能號(hào)、數(shù)據(jù)、狀態(tài)、校驗(yàn)字節(jié)、結(jié)束位.其中功能號(hào)0至6的含義分別見表2.地址字節(jié)中用00代表上位機(jī),01代表下位機(jī).CRC校驗(yàn)字節(jié)為起始位后所有的數(shù)之和取低位字節(jié).狀態(tài)為中是當(dāng)前軟管的試驗(yàn)狀態(tài),00為調(diào)壓狀態(tài)(升壓狀態(tài)),01為保壓狀態(tài),02為放水狀態(tài).
表1 數(shù)據(jù)包格式表
表2 各個(gè)功能號(hào)的含義
本文運(yùn)用VC++和MSComm控件實(shí)現(xiàn)上位機(jī)的應(yīng)用軟件,并用串口與下位機(jī)PLC進(jìn)行通訊,通過PC機(jī)與PLC的通訊實(shí)現(xiàn)了一個(gè)可以遠(yuǎn)程監(jiān)控的軟管疲勞試驗(yàn)控制系統(tǒng).本文介紹的控制系統(tǒng)構(gòu)建簡(jiǎn)練,運(yùn)行穩(wěn)定,在實(shí)踐中取得了良好的效果.
[1]朱正禮.基于VC++的PLC與上位機(jī)的通訊[J].電氣傳動(dòng),2002(2):25-27.
[2]李子彬.基于VC++6.0的PC機(jī)與PLC串口通信的實(shí)現(xiàn)及其應(yīng)用[J].太原科技大學(xué)學(xué)報(bào),2008,29:3-5.
[3]西門子有限公司.西門子S7-200可編程控制器系統(tǒng)手冊(cè)[M].德國:西門子有限公司,1999.