甘宜洋 程武山
(上海工程技術(shù)大學(xué)機(jī)械工程學(xué)院,上海 201620)
水下生產(chǎn)系統(tǒng)是深海油氣田開發(fā)最為核心的組成部分,其工作是否穩(wěn)定、可靠直接影響整個(gè)油氣開采系統(tǒng)的工作性能,我國(guó)現(xiàn)行的水下生產(chǎn)系統(tǒng)設(shè)計(jì)和建造經(jīng)驗(yàn)相對(duì)匱乏,同樣也無(wú)相關(guān)設(shè)備和系統(tǒng)的測(cè)試經(jīng)驗(yàn),更沒有專用于水下生產(chǎn)系統(tǒng)測(cè)試的相關(guān)平臺(tái)和測(cè)試基地[1,2]。因此,對(duì)水下生產(chǎn)系統(tǒng)測(cè)試技術(shù)的研究和專用測(cè)試平臺(tái)的建設(shè)不僅具有較大的工程應(yīng)用價(jià)值,而且可以帶動(dòng)國(guó)內(nèi)水下生產(chǎn)系統(tǒng)的相關(guān)研究工作,產(chǎn)生明顯的經(jīng)濟(jì)和社會(huì)效益。
水下生產(chǎn)系統(tǒng)主要由主控站、液壓動(dòng)力站、臍帶纜和臍帶纜分配單元、水下采油樹、水下管匯、跨接管及水下控制系統(tǒng)等組成。水下生產(chǎn)系統(tǒng)的測(cè)試主要針對(duì)各個(gè)單元部件工作性能進(jìn)行測(cè)試[3],具體可分為:驗(yàn)收測(cè)試、系統(tǒng)集成測(cè)試、現(xiàn)場(chǎng)接收測(cè)試及生產(chǎn)調(diào)試等內(nèi)容。測(cè)試實(shí)驗(yàn)主要通過(guò)模擬水下生產(chǎn)系統(tǒng)實(shí)際工作環(huán)境,對(duì)單元器件進(jìn)行壓力測(cè)試,檢驗(yàn)其工作性能是否滿足API 17、ISO 13628及 NORSOK等標(biāo)準(zhǔn)。為保證測(cè)試過(guò)程中數(shù)據(jù)采集的有效性和可靠性,筆者開發(fā)了一套基于PLC模塊的數(shù)據(jù)采集系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程傳輸與實(shí)時(shí)采集。
數(shù)據(jù)采集系統(tǒng)采用DCS控制方式[4],實(shí)現(xiàn)集中控制分散管理,具體包括管理層和控制層和現(xiàn)場(chǎng)設(shè)備層(圖1)。管理層(數(shù)據(jù)控制中心)根據(jù)生產(chǎn)測(cè)試系統(tǒng)的工藝要求,負(fù)責(zé)將采集到的水下生產(chǎn)現(xiàn)場(chǎng)層各功能模塊的數(shù)據(jù)上傳到工控上位機(jī),并通過(guò)工業(yè)組態(tài)軟件KingVIEW,將數(shù)據(jù)進(jìn)行管理、圖像顯示及數(shù)據(jù)歸檔等可視化操作。控制層由CPU224系列PLC和模擬量擴(kuò)展模塊EM231組成,主要完成模數(shù)轉(zhuǎn)換與數(shù)據(jù)傳輸。現(xiàn)場(chǎng)設(shè)備層主要由壓力傳感器、溫度傳感器、流量計(jì)及渦街流量計(jì)等計(jì)量設(shè)備組成,完成現(xiàn)場(chǎng)數(shù)據(jù)的采集。對(duì)于現(xiàn)在的測(cè)量系統(tǒng)而言,數(shù)據(jù)傳輸速率和穩(wěn)定性影響著測(cè)試系統(tǒng)的整體質(zhì)量,因此當(dāng)前測(cè)量測(cè)試系統(tǒng)的一個(gè)關(guān)鍵問(wèn)題是計(jì)算機(jī)和PLC的通信。本測(cè)試系統(tǒng)主要進(jìn)行水下采油樹可靠性測(cè)試,通過(guò)搭建模擬測(cè)試平臺(tái),完成對(duì)器件的氣壓、水壓及油壓等各環(huán)節(jié)的聯(lián)合檢測(cè),測(cè)試項(xiàng)目及其主要參數(shù)見表1。

圖1 數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)框圖 表1 主要測(cè)試參數(shù)

測(cè)試項(xiàng)目 最小值/psi 最大值/psi 回路油壓 8 250 15 000 14水壓 6 000 30 000 6氣壓 6 000 30 000 6壓力艙 150 5 075 2
由于串行通信具有線路簡(jiǎn)單、應(yīng)用靈活和可靠性高的優(yōu)點(diǎn),并且普通機(jī)上均有串行口,所以通常上位機(jī)與PLC之間的通信都是采用串行通信的方式,本設(shè)計(jì)采用自由口通信方式。
所謂自由口通信模式即Freeport模式,是建立在硬件基礎(chǔ)上的一種通信方式,它允許用戶自己定義一些簡(jiǎn)單、基本的通信協(xié)議設(shè)置[5],如數(shù)據(jù)長(zhǎng)度、奇偶校驗(yàn)等,通信功能完全由用戶程序控制,為了方便自由口通信,S7-200 PLC配有發(fā)送與接收、通信與接收中斷和用于通信設(shè)置的特殊功能寄存器。
使用自由口通信前,必須了解自由口通信工作模式的定義方法,即控制字的組態(tài)。S7-200 PLC的自由口通信數(shù)據(jù)字節(jié)格式必須含有一個(gè)起始位、一個(gè)停止位,數(shù)據(jù)位長(zhǎng)度為7位或8位,校驗(yàn)位和校驗(yàn)類型(奇、偶校驗(yàn))可選(圖2)。字符傳輸從最低位開始,空閑線高電平、起始位低電平、停止位高電平。字符傳輸時(shí)間取決于波特率。PLC通信口工作在自由口模式時(shí),通信口就不支持其他通信協(xié)議(如PPI),此時(shí),通信口不能再與編程軟件Micro/WIN通信。PLC的CPU停止時(shí),自由口不能工作,Micro/WIN就可以與PLC的CPU通信。

圖2 自由口通信數(shù)據(jù)格式
自由口通信定義方法為將自由口通信操作數(shù)傳入特殊寄存器 SMB30(端口0)和 SMB130 (端口1)進(jìn)行端口定義。自由口通信主要通過(guò)發(fā)送接收指令、特殊功能寄存器配置和中斷來(lái)實(shí)現(xiàn),端口0常用中斷事件見表2。

表2 自由口通信相關(guān)的中斷事件
字符發(fā)送通過(guò)XMT指令完成,字符接收可由RCV指令或字符接收中斷實(shí)現(xiàn)。自由口工作過(guò)程大體可分為:
a. 根據(jù)數(shù)據(jù)發(fā)送特點(diǎn),分配發(fā)送和接收的數(shù)據(jù)緩沖區(qū);
b. 設(shè)置自由口通信參數(shù),選擇接收發(fā)送字符方式;
c. 執(zhí)行發(fā)送指令,字符發(fā)送完畢進(jìn)入相應(yīng)的中斷事件;
d. 進(jìn)入字符發(fā)送完中斷事件,執(zhí)行接收指令 RCV,進(jìn)行數(shù)據(jù)接收。
報(bào)文的結(jié)束字符只有 8 位,與接收到的報(bào)文數(shù)據(jù)位數(shù)相同,因此在數(shù)據(jù)接收過(guò)程中可能造成二者混淆。通常在發(fā)送前對(duì)數(shù)據(jù)作某種處理,例如將數(shù)據(jù)字符轉(zhuǎn)換為 ASCII碼后再發(fā)送,并使用不會(huì)與ASCII碼相混淆的數(shù)據(jù)作為結(jié)束字符,接收方收到數(shù)據(jù)后將它還原為最初的數(shù)據(jù)格式,這樣是可以解決上述問(wèn)題,但是會(huì)增加編程的工作量和數(shù)據(jù)傳送的時(shí)間。如果在設(shè)計(jì)通信程序時(shí)使用接收字符中斷,就可以對(duì)收到的每個(gè)字符進(jìn)行判斷和處理,能有效地解決數(shù)據(jù)字符與結(jié)束字符混淆的問(wèn)題。為確保系統(tǒng)通信的準(zhǔn)確性,本設(shè)計(jì)采用字符中斷方式接收字符。
計(jì)算機(jī)與PLC通信時(shí),為了避免通信中各方爭(zhēng)用通信線,一般采用主-從方式,即計(jì)算機(jī)為主機(jī),PLC為從機(jī),只有主機(jī)才有權(quán)主動(dòng)發(fā)送請(qǐng)求報(bào)文,從機(jī)收到后返回響應(yīng)報(bào)文(圖3)。本設(shè)計(jì)中KingVIEW為主站,S7-200PLC為從站,設(shè)計(jì)過(guò)程中考慮了PC/PPI電纜切換時(shí)間、數(shù)據(jù)幀異或校驗(yàn)、結(jié)束字符及數(shù)據(jù)字符混淆等問(wèn)題,減少了通信故障。

圖3 主-從式通信示意圖
S7-200PLC的自由口模式通信是對(duì)用戶完全開放的通信方式,設(shè)計(jì)時(shí)可以自行規(guī)定通信協(xié)議,CPU只有處于RUN狀態(tài)下才能工作在自由口模式。通過(guò)將SMB30(端口0)或SMB130(端口1)的協(xié)議選擇區(qū)域置1,可以將通信端口設(shè)置為自由端口模式,或者使用特殊寄存器位SM0.7來(lái)控制自由口模式。以端口0為例,通過(guò)SMB30還可以設(shè)置校驗(yàn)方式、波特率及數(shù)據(jù)位長(zhǎng)度等,具體如圖4所示。

圖4 控制字節(jié)SMB30
圖4中,相應(yīng)的校驗(yàn)方式、波特率及數(shù)據(jù)位長(zhǎng)度等的取值為:
PP 校驗(yàn)選擇
00=不校驗(yàn)
01=偶校驗(yàn)
10=不校驗(yàn)
11=奇校驗(yàn)
d 字符數(shù)據(jù)位
0=每個(gè)字符8位
1=每個(gè)字符7位
bbb 自由口波特率
000=38 400bit/s
001=19 200bit/s
010=9 600bit/s
011=4 800bit/s
100=2 400bit/s
111=57 600bit/s
其他
mm 協(xié)議選擇
00=PPI/從站模式
01=自由口模式
10=PPI/主站模式
11=保留
選擇自由口通信口0,波特率為 38 400bit/s,8 位數(shù)據(jù),無(wú)校驗(yàn),1 個(gè)停止位。在這種情況下,SMB30賦值為16#01。通常在通信口初始化過(guò)程中,還要中斷連接指令連接接收完成中斷、接收完成中斷等子程序。
S7-200PLC配有發(fā)送和接收指令,通信和接收中斷,用于通信設(shè)置的特殊標(biāo)志位,通過(guò)相關(guān)寄存器的配置和程序組態(tài),可方便實(shí)現(xiàn)數(shù)據(jù)通信。
3.2.1數(shù)據(jù)發(fā)送
發(fā)送數(shù)據(jù)可以用XMT指令,XMT指令激活發(fā)送緩沖區(qū)(TBL)中的數(shù)據(jù),其格式為發(fā)送字節(jié)數(shù)和信息字符。緩沖區(qū)的第一個(gè)數(shù)據(jù)指明了要發(fā)送的字節(jié)數(shù),最大為255個(gè),PORT指定了用于發(fā)送的端口0。在發(fā)送完緩沖區(qū)最后一個(gè)字符時(shí),會(huì)產(chǎn)生一個(gè)中斷事件9,通過(guò)監(jiān)視SM4.5信號(hào),也可以判斷發(fā)送是否完成。
本系統(tǒng)中采集的數(shù)據(jù)單元共28個(gè),模數(shù)轉(zhuǎn)換后,把2Byte的整數(shù)轉(zhuǎn)換為4Byte的實(shí)數(shù)即工程值,所以需要發(fā)送給KingVIEW的數(shù)據(jù)長(zhǎng)度為112Byte,故劃分發(fā)送緩沖區(qū)如圖5所示。其中,VW44為存放接收數(shù)據(jù)按字節(jié)異或校驗(yàn)的次數(shù);VW54為存放發(fā)送數(shù)據(jù)按字節(jié)異或校驗(yàn)的次數(shù);VD60為發(fā)送緩沖區(qū)的首指針;VD66為指向發(fā)送緩沖區(qū)的指針;VB200為發(fā)送緩沖區(qū)的首字節(jié)。

圖5 數(shù)據(jù)發(fā)送緩沖區(qū)
3.2.2數(shù)據(jù)接收
使用字符中斷方式接收數(shù)據(jù),接收每個(gè)字符時(shí)都會(huì)產(chǎn)生中斷事件8。在執(zhí)行與接收字符事件相連的中斷程序前,接收的字符存入SMB2寄存器中,校驗(yàn)狀態(tài)存入SM3.0。SMB2、SM3.0都是只讀的。SMB2為特殊標(biāo)志位,是自由口接收字符緩沖器。在自由口方式下收到的每個(gè)字符都放到這里便于用戶程序進(jìn)行存取。
接收緩沖區(qū)的格式,以起始字符作為接收?qǐng)?bào)文的開始,校驗(yàn)碼為接收緩沖區(qū)中“數(shù)據(jù)字節(jié)數(shù)”與數(shù)據(jù)區(qū)各字節(jié)的異或和。因?yàn)樵谧址邮罩袛喑绦蛑惺歉鶕?jù)收到的字符個(gè)數(shù)來(lái)判別接收是否結(jié)束,所以沒有設(shè)置結(jié)束字符。其中,VW8為存放PLC的地址;VD40為存放接收緩沖區(qū)的首指針;VW44為存放接收數(shù)據(jù)按字節(jié)異或校驗(yàn)的次數(shù);VD46為指向接收緩沖區(qū)的指針;VB100為接收緩沖區(qū)的首字節(jié)。
3.3.1通信流程
S7-200PLC與KingVIEW自由口通信流程設(shè)計(jì)如圖6所示,主要流程為:
a. 通過(guò)SMB30.1=1或SM0.7=1方式,打開自由口通信;
b. 串口初始化,將參數(shù)寫入控制字節(jié),開中斷;
c. 有需要接收的字符時(shí),執(zhí)行接收任務(wù),將收到的字符存入接收緩沖區(qū)中;
d. 執(zhí)行發(fā)送指令XMT,將處理好的數(shù)據(jù)發(fā)送給KingVIEW;
e. 完成發(fā)送后,執(zhí)行發(fā)送完中斷程序,等待下一幀數(shù)據(jù)。

圖6 通信程序流程
3.3.2部分通信程序
自由口通信程序采用模塊化編寫方式,主要包括串口初始化子程序、字符接收中斷子程序等。部分程序如下:
/****主程序****/
LD SM0.1
CALL SBR0//調(diào)用串口初始化子程序SBR0;
LD SM0.7
=SM30.0//PPI與自由口方式轉(zhuǎn)換控制位;
/****初始化子程序****/
LD SM0.0
MOVW +2, VW8//設(shè)置PLC通信地址為2;
LD SM0.0
MOVB 1, SMB30//設(shè)置參數(shù),波特率38400,自由口模式,無(wú)校驗(yàn);
MOVD &VB100, VD40//接收緩沖區(qū)地址傳送;
MOVW +10, VW54//發(fā)送校驗(yàn)次數(shù)10;
MOVB 12, VB150
MOVB VB9, VB151
MOVD &VB151, VD60//發(fā)送緩沖區(qū)首地址
MOVB 6, SMB34//定時(shí)6ms
ATCH INT0, 10//連接定時(shí)中斷0
ATCH INT1, 8//連接接收字符中斷子程序1;
ENI
/****發(fā)送子程序****/
LD SM0.0
MOVB 250, SMB34
ATCH INT7, 10//起用發(fā)送時(shí)間監(jiān)控
ATCH INT7, 9//發(fā)送中斷(發(fā)送完成時(shí)觸發(fā))起用服務(wù)程序INT7
A SM4.5
XMT VB150, 0
/****部分接收子程序****/
LD SM0.0
XORW SMW1, AC0//記住異或的次數(shù)
MOVB SMB2, *VD46//將讀寫代碼存入VB100
INCD VD46//指針VD46指向VB101
DECW VW44//異或的次數(shù)VW44-1=10-1=9
LD SM1.0
自由口通信時(shí),KingVIEW配置主要包括定義設(shè)備、I/O地址選擇、通信參數(shù)設(shè)定及定義變量等環(huán)節(jié)。KingVIEW定義設(shè)備時(shí)選擇:PLC/西門子/S7200系列/自由口。I/O設(shè)備地址:由于S7-200系列PLC 的型號(hào)不同,設(shè)備地址的范圍不同,筆者選用S7-200PLC,所以PLC的地址選擇2。通信參數(shù)設(shè)置:波特率為38 400bit/s,數(shù)據(jù)位長(zhǎng)度為8,停止位長(zhǎng)度為1,校驗(yàn)方式為無(wú)校驗(yàn),如圖7所示。定義變量:在數(shù)據(jù)字典中選擇相應(yīng)的寄存器和數(shù)據(jù)類型,設(shè)定變量類型,主要有I/O整數(shù)、I/O實(shí)數(shù)、I/O離散、I/O字符串,對(duì)于不同類型的變量,配置不同的讀/寫屬性。

圖7 KingVEIW通信參數(shù)設(shè)置
實(shí)際通信調(diào)試時(shí),根據(jù)特殊需要,對(duì)有關(guān)變量要進(jìn)行特殊設(shè)置:
a. 對(duì)于只寫寄存器,采集頻率設(shè)置為0;
b. 當(dāng)V寄存器BIT類型為只寫類型時(shí),寫入1下發(fā),寫入0無(wú)效 , 默認(rèn)為0;
c. STR寄存器與V寄存器的BIT類型要一一對(duì)應(yīng)。
PLC 由于其高可靠性、編程簡(jiǎn)單、通用性強(qiáng)、結(jié)構(gòu)簡(jiǎn)單及安裝維護(hù)方便等優(yōu)點(diǎn),在自控系統(tǒng)中得到了廣泛應(yīng)用。筆者根據(jù)水下生產(chǎn)測(cè)試系統(tǒng)控制要求開發(fā)了基于自由口模式通信的數(shù)據(jù)采集系統(tǒng),實(shí)現(xiàn)了數(shù)據(jù)遠(yuǎn)程傳輸。現(xiàn)場(chǎng)調(diào)試與運(yùn)行表明,該系統(tǒng)具有實(shí)時(shí)性好、速度快及可靠性高等優(yōu)點(diǎn),壓力采集精度達(dá)到0.01psi,適用于水下生產(chǎn)測(cè)試系統(tǒng)的實(shí)時(shí)監(jiān)控。