牛文彬+呂靜+呂旭東
[摘 要]在油田生產(chǎn)中,智能儀表的數(shù)量越來越多,如何利用Modbus通訊對現(xiàn)場儀表數(shù)據(jù)進(jìn)行采集及控制已成為當(dāng)前數(shù)字化建設(shè)的突出問題。因此,本文通過和利時(shí)PLC的RS485串行通行通訊口基于Modbus協(xié)議改進(jìn)PLC與從設(shè)備的數(shù)據(jù)采集。
[關(guān)鍵詞]和利時(shí)PLC;RS485;串行通訊;Modbus協(xié)議
doi:10.3969/j.issn.1673 - 0194.2017.08.092
[中圖分類號]TP273 [文獻(xiàn)標(biāo)識碼]A [文章編號]1673-0194(2017)08-0-01
0 引 言
目前,在長慶油田投入使用的增壓撬中多數(shù)采用和利時(shí)LM3109的PLC,基于油田SCADA數(shù)字化的集成發(fā)展,越來越多的智能儀表需要進(jìn)行數(shù)據(jù)采集,為了減少占用PLC的IO點(diǎn),并保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,利用LM3109的RS485串行通信口對其他智能儀表的數(shù)據(jù)采集成為了最好的解決方案。
1 Modbus和RS485的簡介
Modbus協(xié)議描述了一個(gè)控制器請求訪問其他設(shè)備的過程,如何回應(yīng)來自其他設(shè)備的請求以及怎樣偵測錯(cuò)誤并記錄,制定了消息域的格式和內(nèi)容。協(xié)議決定了每個(gè)控制器必須知道自己的設(shè)備地址,根據(jù)地址識別消息的歸屬,決定執(zhí)行何種功能??刂破魃蓤?bào)文并以Modbus協(xié)議幀方式發(fā)送報(bào)文。
RS485采用差分信號負(fù)邏輯,+2~+6 V表示“0”,-6~-2 V表示“1”。RS485有兩線制和四線制兩種接線,四線制是全雙工通訊方式,兩線制是半雙工通訊方式,半雙工數(shù)據(jù)通訊模式下數(shù)據(jù)的收發(fā)不能同時(shí)進(jìn)行。在RS485通信網(wǎng)絡(luò)中一般采用的是主從通信方式,允許連接多達(dá)128個(gè)設(shè)備。
2 現(xiàn)場設(shè)備物理層連接
現(xiàn)場設(shè)備物理層連接示意圖所示。
設(shè)備按照RS485兩線制通訊方式,接出來的RS485通訊線與PLC的RS485通訊總線進(jìn)行連接。線路連通后在PLC中編寫符合作業(yè)流程計(jì)算的程序。
3 程序設(shè)計(jì)及比較
3.1 2臺RS485從設(shè)備
對于常見的增壓站,PLC需要讀取2臺輸油泵的變頻器,在程序中通過繼電器的交替接通選擇從哪臺從設(shè)備讀取數(shù)據(jù)。因?yàn)楦餮訒r(shí)繼電器的觸發(fā)都是各自獨(dú)立循環(huán)的,所以實(shí)際工作時(shí)會出現(xiàn)各從設(shè)備的詢問幀發(fā)送數(shù)量不一樣的情況。
3.2 多臺RS485從設(shè)備
當(dāng)現(xiàn)場存在3臺及3臺以上從設(shè)備需要采集數(shù)據(jù)時(shí),采用兩個(gè)延時(shí)繼電器交替運(yùn)行的方法已經(jīng)不能使用了,于是將程序中控制從設(shè)備地址的延時(shí)繼電器改為一個(gè),并由變量自增循環(huán)選擇從設(shè)備。但在實(shí)際工作中會出現(xiàn)有時(shí)從設(shè)備的數(shù)據(jù)變化不連續(xù)。該問題出現(xiàn)在當(dāng)現(xiàn)場采用兩線制RS485通訊時(shí),線路中可能會同時(shí)出現(xiàn)詢問幀在發(fā)送,而從設(shè)備在同時(shí)發(fā)送應(yīng)答幀時(shí),考慮到兩線制RS485通訊為半雙工的情況,同時(shí)存在的數(shù)據(jù)要么是發(fā)送,要么是接收,要想實(shí)現(xiàn)主設(shè)備對從設(shè)備的一問一答就需要再次改進(jìn)程序結(jié)構(gòu)。
3.3 遵循RS485半雙工通訊的多從設(shè)備通訊
為了能達(dá)到半雙工通訊的要求,將通訊程序結(jié)構(gòu)分為4個(gè)階段,即通訊間隔、發(fā)送詢問幀、接受詢問幀或接收超時(shí)、1.5字符停頓,具體程序結(jié)構(gòu)如圖2所示。
該程序結(jié)構(gòu)實(shí)現(xiàn)了多個(gè)從設(shè)備通訊的完整循環(huán)。t1是從設(shè)備的延時(shí)器,t2是詢問幀,兩者變化時(shí)間一致。當(dāng)PLC通過COMM2_SEND向從設(shè)備發(fā)送數(shù)據(jù)時(shí),COMM2_RECEIVE接收數(shù)據(jù)反饋并進(jìn)行收包統(tǒng)計(jì)。如果發(fā)現(xiàn)從設(shè)備故障無法應(yīng)答,t2認(rèn)為此通訊超時(shí)并發(fā)出指令,PLC的監(jiān)控進(jìn)程進(jìn)入下一輪詢。在現(xiàn)場實(shí)際使用中,通過詢問幀結(jié)構(gòu)PLC發(fā)送詢問幀,從設(shè)備發(fā)回應(yīng)答幀,實(shí)現(xiàn)了主設(shè)備對從設(shè)備通訊的一問一答,數(shù)據(jù)連續(xù)更新,達(dá)到了預(yù)期要求。
4 結(jié) 語
經(jīng)過程序改進(jìn)并在現(xiàn)場多臺設(shè)備上實(shí)際運(yùn)行后,改進(jìn)后的RS485通訊程序能連續(xù)處理現(xiàn)場從設(shè)備發(fā)回的數(shù)據(jù),保證了現(xiàn)場數(shù)據(jù)能及時(shí)處理并發(fā)回SCADA平臺,實(shí)現(xiàn)了在SCADA平臺上實(shí)時(shí)讀取現(xiàn)場的從設(shè)備數(shù)據(jù)的目的。