摘" 要:針對工業(yè)生產(chǎn)中用到的溶劑儲液罐液位遠程監(jiān)控的問題,提出采用基于Modbus TCP的現(xiàn)場總線控制結(jié)構(gòu)。Modbus TCP現(xiàn)場總線應用層采用Modbus協(xié)議作為通信協(xié)議,傳輸層和網(wǎng)絡(luò)層采用TCP/IP協(xié)議,數(shù)據(jù)鏈路層和物理層由以太網(wǎng)實現(xiàn),所以Modbus TCP具有通用性強和通信速度快的雙重優(yōu)點。設(shè)計監(jiān)控系統(tǒng)結(jié)構(gòu)和I/O點控制算法,編寫監(jiān)控軟件,進行系統(tǒng)實驗。實驗結(jié)果表明,Modbus TCP現(xiàn)場總線控制結(jié)構(gòu)能夠保證系統(tǒng)具有很高的實時性能,系統(tǒng)結(jié)構(gòu)合理,可擴展性強。
關(guān)鍵詞:Modbus TCP;儲液罐;遠程實時監(jiān)控;現(xiàn)場總線;FCS;液位監(jiān)控;可擴展性
中圖分類號:TP273" " " "文獻標志碼:A" " " " " 文章編號:2095-2945(2023)18-0136-05
Abstract: In order to solve the problem of remote monitoring of liquid level of solvent storage tank used in industrial production, a field bus control structure based on Modbus TCP is proposed. The Modbus TCP fieldbus application layer uses Modbus protocol as the communication protocol, the transport layer and network layer uses TCP/IP protocol, and the data link layer and physical layer are implemented by Ethernet, so Modbus TCP has the dual advantages of strong versatility and fast communication speed. The structure of the monitoring system and the I/O point control algorithm are designed, the monitoring software is compiled, and the system experiments are carried out. The experimental results show that the Modbus TCP fieldbus control structure can ensure that the system has high real-time performance, reasonable structure and strong expansibility.
Keywords: Modbus TCP; liquid storage tank; remote real-time monitoring; fieldbus; FCS; liquid level monitoring; expansibility
儲液罐是工業(yè)生產(chǎn)中用于儲存生產(chǎn)用溶劑的儲存設(shè)備。為了對溶劑儲液罐的使用進行管理,需要設(shè)計一個能夠在控制室對生產(chǎn)現(xiàn)場儲液罐進行監(jiān)控的自動化系統(tǒng)。傳統(tǒng)的自動化監(jiān)控系統(tǒng)一般采用DCS(Distributed Control System,分布式控制系統(tǒng))實現(xiàn)。但隨著系統(tǒng)規(guī)模和控制距離的逐漸增大,DCS控制距離短、擴展能力弱的缺點就顯現(xiàn)出來了。所以在DCS之后出現(xiàn)了FCS(Fieldbus Control System,現(xiàn)場總線控制系統(tǒng))。FCS中的設(shè)備均為支持現(xiàn)場總線協(xié)議的智能設(shè)備,這些設(shè)備可以簡單掛接在現(xiàn)場總線上,控制器通過總線協(xié)議與各傳感器和其他控制器進行通信?,F(xiàn)場總線經(jīng)過專門設(shè)計,通信距離能夠到達上千米,通信速率從每秒幾千比特到每秒上千兆比特,其中以以太網(wǎng)作為底層通信手段的現(xiàn)場總線通訊速度最快、通信距離最長。目前流行的現(xiàn)場總線協(xié)議有很多種,每一種都形成了自己世界通用的標準并有專門的行業(yè)協(xié)會維護和發(fā)展[1-5]。因為控制室與儲液罐現(xiàn)場的距離很遠,并且FCS布線簡單,可靠性高,擴展性好,所以溶劑儲液罐系統(tǒng)選擇了FCS實現(xiàn)自動化監(jiān)控。
Modbus協(xié)議是由MODICON在1979年開發(fā)的,是全球第一個真正用于工業(yè)現(xiàn)場的總線協(xié)議?,F(xiàn)在,Modbus協(xié)議的所有權(quán)歸屬于IDA組織(Interface for Distributed Automation),該組織成立了Modbus-IDA組織,專門進行Modbus協(xié)議的發(fā)展和應用。Modbus協(xié)議是應用于電子控制器上的一種通用語言,是全球應用最為廣泛的工業(yè)協(xié)議。和許多收費的現(xiàn)場總線協(xié)議不同,Modbus協(xié)議完全免費,因此得到了工業(yè)自動化領(lǐng)域的廣泛關(guān)注和應用[6-11]。Modbus協(xié)議具有容易學習、便于應用、可靠性高和成本低廉的特點,因此使用Modbus協(xié)議可以連接到工業(yè)自動化領(lǐng)域幾乎所有的傳感器和控制設(shè)備上。
根據(jù)網(wǎng)絡(luò)連接形式的不同,Modbus協(xié)議有很多變種。Modbus TCP就是其中一個。Modbus TCP協(xié)議于1999年被提出,是基于以太網(wǎng)的Modbus協(xié)議。Modbus TCP的應用層使用Modbus協(xié)議,傳輸層采用TCP協(xié)議,網(wǎng)絡(luò)層采用IP協(xié)議,數(shù)據(jù)鏈路層和物理層由以太網(wǎng)實現(xiàn)。因為TCP/IP以太網(wǎng)具有傳輸速度快和可靠性高的特點,所以Modbus TCP具有通用性強和傳輸速度快的雙重優(yōu)點。因此,儲液罐監(jiān)控系統(tǒng)采用Modbus TCP作為通信總線。
Modbus協(xié)議采用一問一答的形式。如果問過之后等待回答,就會耗費計算機的運行時間,降低系統(tǒng)實時性。所以為了保證監(jiān)控軟件的實時性能,采用了消息通信的機制接受應答信息。這樣,沒有應答信息時監(jiān)控軟件可以進行其他工作,應答信息到了就會向監(jiān)控軟件發(fā)送消息,監(jiān)控軟件收到消息就可以及時接收和處理應答信息。
1" 系統(tǒng)結(jié)構(gòu)
溶劑儲液罐需要監(jiān)控的信息主要是儲液罐的液位。當液位高于某一指定值時進行報警,以提醒工作人員液位超限,同時自動關(guān)閉入口閥門和氣動泵。當液位低于某一指定值時也進行報警,以提醒工作人員進行加液。液位信息還要顯示在工作現(xiàn)場的觸摸屏和控制室的操作界面屏幕上。溶劑的加液操作由儲液罐入口閥門和入口氣動泵控制,溶劑的使用由出口閥門和出口氣動泵控制。用戶可以在控制室的操作界面屏幕上或在工作現(xiàn)場的觸摸屏上進行開關(guān)閥門和氣動泵的操作。儲液罐的液位值由差壓式液位傳感器采集。差壓式液位傳感器需要安裝在儲液罐下部,采集值其實是儲液罐里面液體下部的壓力,該壓力值與液面上面空氣的壓力值進行換算才能得到測量的液位值。所以在儲液罐的頂部安裝一個壓力傳感器,用于測量液面上面空氣的壓力。
令儲液罐液面上面空氣的壓力為pair(單位為Pa),差壓液位傳感器測量值為pt(單位為Pa),測得的儲液罐液位為h(單位為m),儲液罐中溶劑的密度為ρ(單位為kg/m3),重力加速度為g(kg·m/s2),則有
h=(pt-pair)/(ρg)。 (1)
選用的壓力變送器和差壓液位變送器均支持Hart通信,采用Hart與Modbus TCP轉(zhuǎn)換模塊HME635采集變送器傳送的信息并通過Modbus TCP傳給主控計算機。Hart通信是一種介于模擬量與數(shù)字量通信之間的通信形式,采用載波通信技術(shù),能夠克服模擬量數(shù)據(jù)采集傳輸距離短、抗干擾能力弱的缺點。所以這里傳感器數(shù)據(jù)的傳輸采用Hart通信形式。HME635使用一種Hart通信轉(zhuǎn)Modbus TCP通信的工控模塊。HME635可以通過設(shè)定自動使用Hart通信采集變送器數(shù)據(jù),存儲于自身的存儲器中。上位機可以通過Modbus TCP協(xié)議讀取這些數(shù)據(jù)。HME635最多同時支持3個Hart通道和64個Modbus TCP或Modbus UDP通道。通過HME635模塊使控制計算機能夠通過Modbus TCP訪問變送器傳送的數(shù)據(jù),這樣就實現(xiàn)了基于Modbus TCP總線的數(shù)據(jù)采集。
報警器一共有2個,一個安裝在現(xiàn)場的控制柜上,一個安裝在控制室。當儲液罐液位異常時,2個報警器要同時報警。2個報警器均受主控制計算機控制,由支持Modbus TCP的PLC和控制模塊驅(qū)動。
主控計算機為研華ARK-2250嵌入式工控機,安裝在控制室。該型工控機采用無風扇設(shè)計,結(jié)構(gòu)緊湊,接口豐富,擁有雙百兆以太網(wǎng)接口。因為現(xiàn)場工作條件比較差,所以采用了可靠性較高的三菱Q系列PLC作為驅(qū)動設(shè)備。三菱Q系列PLC采用模塊化設(shè)計,方便擴展應用。在PLC上安裝的QJ71MT91模塊支持Modbus TCP通信,主控計算機通過該模塊實現(xiàn)對PLC輸出信號的控制。工作現(xiàn)場的報警器、儲液罐的出入口閥門和氣動泵的控制均由PLC上的DO信號驅(qū)動??刂剖业膱缶魇褂靡粋€ZQWL-IO遠程IO控制模塊驅(qū)動,該模塊支持Modbus TCP通信,包含2個DO通道和2個DI通道。
Modbus TCP采用客戶機/服務(wù)器形式進行通信。發(fā)起通信的一方為客戶機,接收通信數(shù)據(jù)并進行響應的一方為服務(wù)器。因此,PLC、控制模塊、HME635模塊工作于服務(wù)器模式,主控計算機為客戶機模式,操作界面計算機和觸摸屏兼有服務(wù)器模式和客戶機模式。通信網(wǎng)絡(luò)采用冗余環(huán)網(wǎng),由2臺100 M的赫斯曼工業(yè)網(wǎng)絡(luò)交換機組成。
監(jiān)控系統(tǒng)的結(jié)構(gòu)如圖1所示。
操作界面計算機運行圖形監(jiān)控界面軟件,圖形界面的刷新需要耗費計算機的運行時間。所以將監(jiān)控軟件放在主控計算機中運行,以提高系統(tǒng)的實時性能。同時,即使用戶的失誤操作造成操作界面計算機不能正常工作,并不會影響主控計算機的工作,從而提高了系統(tǒng)的可靠性。
2" Modbus TCP的應用數(shù)據(jù)單元
Modbus的以太網(wǎng)協(xié)議分為Modbus TCP和Modbus UDP。其區(qū)別在于Modbus TCP在傳輸層采用TCP協(xié)議,Modbus UDP在傳輸層采用UDP協(xié)議。TCP適用于少量數(shù)據(jù)傳送,而UDP適用于大量數(shù)據(jù)傳送。用戶可以根據(jù)實際需要選擇Modbus TCP或者Modbus UDP。為了提高系統(tǒng)可靠性,溶劑儲液罐監(jiān)控系統(tǒng)選擇Modbus TCP進行數(shù)據(jù)通信。
根據(jù)TCP/IP協(xié)議,每一個Modbus TCP設(shè)備都有一個固定的IP地址,數(shù)據(jù)傳送以IP地址區(qū)分不同的設(shè)備。使用Modbus TCP協(xié)議的服務(wù)器,其默認端口號均為502。Modbus TCP協(xié)議客戶機的端口號可設(shè)置為除502以外的值。Modbus TCP的應用數(shù)據(jù)單元(Application Data Unit,ADU)將Modbus簡單協(xié)議數(shù)據(jù)單元(Protocol Data Unit,PDU)按照TCP/IP協(xié)議標準進行封裝。一個TCP幀稱為一個應用數(shù)據(jù)單元,在一個Modbus TCP ADU中一般只發(fā)送一個Modbus TCP PDU。Modbus TCP ADU的結(jié)構(gòu)如圖2所示。
MBAP報文頭字段見表1。
事務(wù)處理標識符用于事務(wù)處理配對,由用戶根據(jù)需要自行設(shè)置,服務(wù)器端接收到此標識符后應答時復制該值;協(xié)議標識符應為0;長度字段是后續(xù)字段的字節(jié)數(shù),包括單元標識符和數(shù)據(jù)字段的字節(jié)數(shù);單元標識符用于系統(tǒng)內(nèi)路由選擇。
Modbus協(xié)議定義了公共功能碼、用戶定義功能碼和保留功能碼等3種功能代碼。Modbus協(xié)議是為了讀寫PLC數(shù)據(jù)而產(chǎn)生的,主要支持輸入離散量、輸出線圈、輸入寄存器和保持寄存器4種數(shù)據(jù)類型。Modbus協(xié)議相當復雜,但常用的功能碼主要有8個。這8個功能碼及功能見表2。
在功能碼之后是數(shù)據(jù)部分。數(shù)據(jù)部分的形式根據(jù)功能碼的不同而不同,但一般包括起始地址、寄存器數(shù)、數(shù)據(jù)字節(jié)數(shù)和實際數(shù)據(jù)等幾個部分。
3" 監(jiān)控軟件設(shè)計
溶劑儲液罐監(jiān)控程序要實現(xiàn)的功能包括:
1)打開關(guān)閉入口和出口閥門;
2)打開關(guān)閉入口和出口氣動泵;
3)設(shè)定高液位值,當液位高于高液位值時自動關(guān)閉入口閥門和氣動泵并通過現(xiàn)場警報器和控制室警報器報警;
4)設(shè)定低液位值,當液位低于低液位值時通過現(xiàn)場警報器和控制室警報器報警;
5)液位值、閥門和氣動泵的開關(guān)狀態(tài)在監(jiān)控屏幕上和現(xiàn)場觸摸屏上顯示。
3.1" 以太網(wǎng)通信的實現(xiàn)
監(jiān)控軟件采用Visual C++語言編寫。在Windows操作系統(tǒng)中,以太網(wǎng)的通信是由Windows套接字實現(xiàn)的。Visual C++中支持套接字的類有2個,分別是CSocket和CAsyncSocket。CSocket是CAsyncSocket的派生類,支持阻塞模式,即進行發(fā)送數(shù)據(jù)和接受數(shù)據(jù),如果沒有完成則持續(xù)等待。但這也會帶來軟件運行停滯的風險。而CAsyncSocket通過消息機制處理數(shù)據(jù)的收發(fā),數(shù)據(jù)發(fā)送之后即返回,發(fā)送完畢通過virtual void CAsyncSocket::OnSend(int nErrorCode)消息通知軟件可以發(fā)送下一個數(shù)據(jù)。當接收到數(shù)據(jù)時通過virtual void CAsyncSocket::OnReceive(int nErrorCode)通知軟件可以接收數(shù)據(jù)。這樣,當軟件工作任務(wù)比較多、對實時性有一定要求時會更方便一些。為了使用這些功能,需要自己定義CAsyncSocket的派生類,然后在派生類中對OnSend函數(shù)和OnReceive函數(shù)進行重載就可以了。因此,監(jiān)控程序使用自定義的CAsyncSocket類的派生類實現(xiàn)以太網(wǎng)通信。
監(jiān)控軟件運行于主控計算機中,需要與操作界面計算機、觸摸屏、HME635、PLC、控制模塊ZQWL-IO進行以太網(wǎng)通信。所以需要使用5個自定義的通信對象的實例,每個實例使用一個除502外的不同的端口號,連接至相應設(shè)備的502端口。其結(jié)構(gòu)如圖3所示。
3.2" 控制器I/O點控制算法
開閉閥門、氣動泵、工作現(xiàn)場報警器、控制室報警器均要用到Modbus協(xié)議的寫線圈指令。05指令和15指令均為寫線圈指令,區(qū)別是05指令一次寫一個線圈,15指令一次寫多個線圈。線圈值置1則閉合開關(guān),置0則斷開開關(guān)。
因為控制信號通過Modbus協(xié)議傳遞,所以設(shè)定設(shè)備狀態(tài)需要確??刂破髡_執(zhí)行了操作。當控制器正確響應了Modbus指令后會向客戶端返回一個響應指令,程序可通過該指令進行判斷。為控制器設(shè)置了唯一ID編號,并將發(fā)送指令的事務(wù)標識符設(shè)置為該ID編號??刂破鱾骰氐捻憫噶钪袝⑹聞?wù)標識符完整復制,所以可通過響應指令中的事務(wù)標識符判斷控制器,然后根據(jù)響應指令中I/O口地址和設(shè)定值更新相應的標志值。
為了保證網(wǎng)絡(luò)暢通,要避免不必要的信息傳送。為此為每個設(shè)備設(shè)置一個控制變量和一個狀態(tài)標志變量??刂谱兞亢蜖顟B(tài)標志變量的設(shè)定值見表3。
控制變量在判斷工作狀態(tài)設(shè)定值時更新。狀態(tài)標志變量在接收到控制器響應指令時更新。如果某一設(shè)備的控制變量與狀態(tài)標志變量不一樣,則依據(jù)控制變量向控制器發(fā)送寫線圈指令。如果控制變量與狀態(tài)標志標量一致則不進行操作。
軟件初始化時,設(shè)置控制變量初始值為2,即關(guān)閉。設(shè)置狀態(tài)標志變量初始值為-1,這樣不管控制變量為何值都會發(fā)送一次寫線圈指令,客戶端在接收響應指令時即將狀態(tài)標志變量與設(shè)備實際工作狀態(tài)同步。設(shè)控制變量為整形變量cnt,狀態(tài)標志變量為整型變量st,則狀態(tài)標志變量初始化流程圖如圖4所示。
4" 測試舉例
設(shè)控制器PLC設(shè)備ID號為10,控制工作現(xiàn)場報警器的DO口地址為56H,控制變量為整形變量cnt,狀態(tài)標志變量為整型變量st,則當軟件初始化時令
cnt=2;
st=-1。
接下來判斷cnt和st是否相等,這時cnt和st不相等,所以要向PLC發(fā)送控制指令,這里使用05指令。
因為cnt為2表示關(guān)閉,所以發(fā)送的控制指令如下。
0x00 0x0A 0x00 0x00 0x00 0x06 0x01 0x05 0x00 0x56 0x00 0x00
指令中的數(shù)均為16進制。其中0x00 0x56表示線圈地址為56H,0x00代表地址高8位,0x56代表地址低8位。最后2個字節(jié)0x00 0x00代表關(guān)閉命令。如果是打開命令,則最后2個字節(jié)是0xFF 0x00。
PLC正確收到該指令后就發(fā)回響應指令,同時設(shè)置地址為56H的DO端口為關(guān)閉狀態(tài)。PLC發(fā)回的響應指令如下。
0x00 0x0A 0x00 0x00 0x00 0x06 0x01 0x05 0x00 0x56 0x00 0x00
由事務(wù)標識符0x00 0x0A可知設(shè)備ID號為10,也就是PLC。由第8個字節(jié)0x05可知是寫線圈操作,由第9和第10字節(jié)0x00 0x56可知是對控制工作現(xiàn)場報警器的線圈進行寫操作,由最后2個字節(jié)0x00 0x00可知是關(guān)閉線圈指令。然后修改st值,令
st=2;
這樣就完成了工作現(xiàn)場報警器狀態(tài)標志變量的初始化。
以太網(wǎng)的速度為100M bit/s,則每個字節(jié)傳送所用時間為0.08 μs,控制報警器的指令和返回指令共需用時1.92 μs。考慮到信息處理及數(shù)據(jù)校驗,則一次DO操作不超過10 μs。所以Modbus TCP的通信速度是非??斓?。
5" 結(jié)束語
現(xiàn)場總線控制系統(tǒng)(FCS系統(tǒng))相比于分布式控制系統(tǒng)(DCS系統(tǒng))具有布線簡單、可靠性高、可擴展性強的優(yōu)勢。所以,溶劑儲液罐采用FCS系統(tǒng)方案構(gòu)建遠程監(jiān)控系統(tǒng)。Modbus TCP現(xiàn)場總線是現(xiàn)場總線的一種。Modbus TCP現(xiàn)場總線使用具有廣泛支持的Modbus協(xié)議作為網(wǎng)絡(luò)應用層,網(wǎng)絡(luò)的傳輸層、網(wǎng)絡(luò)層使用TCP/IP協(xié)議,數(shù)據(jù)鏈路層和物理層采用以太網(wǎng),因此Modbus TCP現(xiàn)場總線具有通用性強和通信速度快的雙重優(yōu)點。構(gòu)建的遠程監(jiān)控系統(tǒng)采用了Modbus TCP現(xiàn)場總線。設(shè)計了控制系統(tǒng)結(jié)構(gòu)和I/O點控制算法,開發(fā)了監(jiān)控軟件,進行了系統(tǒng)測試實驗。實驗結(jié)果表明,基于Modbus TCP現(xiàn)場總線的監(jiān)控系統(tǒng)實時性強,運行穩(wěn)定,可靠性高,結(jié)構(gòu)合理,具有很強的可擴展性。
參考文獻:
[1] 王振力,孫平,劉洋.工業(yè)控制網(wǎng)絡(luò)[M].北京:人民郵電出版社,2012:1-15.
[2] 汪勇,聶洪權(quán),張任妍.核電廠核廢物廠房總線控制系統(tǒng)應用研究[J].自動化儀表,2020,41(11):66-69,75.
[3] 孫竹梅,王琦,白建云,等.多協(xié)議現(xiàn)場總線控制系統(tǒng)創(chuàng)新型試驗設(shè)計[J].自動化儀表,2019,40(12):10-13.
[4] 張浩龍,劉威,孔德偉,等.FF與Profibus現(xiàn)場總線在火電廠應用中的故障診斷及處理[J].自動化儀表,2020,41(7):102-106.
[5] 李曉萌.基于現(xiàn)場總線的水環(huán)境監(jiān)測裝置設(shè)計[J].節(jié)能,2022,41(8):31-33.
[6] 楊更更.Modbus軟件開發(fā)實戰(zhàn)[M].北京:清華大學出版社,2017:1-9.
[7] 李霞.基于Modbus/TCP伺服通信設(shè)計[J].工業(yè)控制計算機,2022,35(5):35-38.
[8] 楊勝源,尹政鑫,張清波,等.基于MODBUS/TCP協(xié)議的等離子體霧化在線監(jiān)控系統(tǒng)的設(shè)計[J].控制系統(tǒng)與智能制造,2021,36(8):24-28.
[9] 余志遠,朱毅,肖萬彪,等.基于西門子1500的Modbus TCP與相機通信在沖壓行業(yè)的應用[J].鍛壓裝備與制造技術(shù),2021, 56(4):68-71.
[10] 崔靖元,魏春光,曾潔.基于Modbus TCP協(xié)議的地鐵虛擬操縱臺系統(tǒng)設(shè)計[J].控制系統(tǒng)與智能制造,2021,36(10):24-27,37.
[11] 陳煦,何璇.基于Modbus TCP/IP協(xié)議的遠程控制系統(tǒng)的設(shè)計與實現(xiàn)[J].集成電路應用,2022,39(8):84-86.