數(shù)據(jù)集成是DCS系統(tǒng)中的關(guān)鍵。一個典型DCS系統(tǒng)從結(jié)構(gòu)上可分為四層[1]:現(xiàn)場級、控制級、監(jiān)控級和治理級。本文討論的是監(jiān)控級,在這一級有很多并列的子站,一般采用計算機(jī)作為為機(jī)接口,各站點(diǎn)可按功能劃分,分別采集相應(yīng)的現(xiàn)場信號和控制某些局部設(shè)備。但是,各站點(diǎn)之間不是孤立的,它們必須互相配合、協(xié)調(diào)才能保證產(chǎn)品質(zhì)量和實(shí)現(xiàn)連續(xù)生產(chǎn),這就需要各站點(diǎn)能互通訊息。另外,上級治理網(wǎng)也需要與監(jiān)控級子站交互數(shù)據(jù),以實(shí)現(xiàn)全局的監(jiān)控和優(yōu)化。
然而,子站是采用不同開發(fā)平臺、不同通訊協(xié)議組成的異構(gòu)系統(tǒng),可能由不同的廠家和個為開發(fā)。要為每種協(xié)議寫一個轉(zhuǎn)換接口或驅(qū)動是比較繁瑣的,特別是在站點(diǎn)和協(xié)議較多的時候。因此,怎樣有效集成數(shù)據(jù),避免信息孤島的出現(xiàn),是DCS系統(tǒng)中常碰到難點(diǎn)題目之一。
比較好的方法是各站點(diǎn)都采用標(biāo)準(zhǔn)協(xié)議進(jìn)行數(shù)據(jù)通訊,而不必為每一種協(xié)議開發(fā)一個通訊接口。目前這方面的協(xié)議比較多,Modbus就是其中的一種。
1 Modbus協(xié)議簡介
Modbus協(xié)議包括ASCII、RTU、PLUS、TCP等,并沒有規(guī)定物理層。此協(xié)議定義了控制器能夠熟悉和使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通訊的[2]。標(biāo)準(zhǔn)的Modicon控制器使用RS232C實(shí)現(xiàn)串行的Modbus。RS232C規(guī)定了連接器針腳、接線、信號電平、波特率、奇偶校驗(yàn)等信息,Modbus的ASC水、RTU協(xié)議則在此基礎(chǔ)上規(guī)定了消息、數(shù)據(jù)的結(jié)構(gòu)、命令和就答的方式,如圖1所示。數(shù)據(jù)通訊采用Maser/Slave方式,Master端發(fā)出數(shù)據(jù)請求消息,Slave端接收到正確消息后就可以發(fā)送數(shù)據(jù)到Master端以響應(yīng)請求;Master端也可以直接發(fā)消息修改Slave真?zhèn)€數(shù)據(jù),實(shí)現(xiàn)雙向讀寫。
圖2是一個典型的Modbus應(yīng)用示例。Modbus可以應(yīng)用在支持Modbus協(xié)議的PIC和PLC之間、PLC和個人計算機(jī)之間、計算機(jī)和計算之間、遠(yuǎn)程PLC和計算機(jī)之間以及遠(yuǎn)程計算機(jī)之間(通過Modem連接),可見Modbus的應(yīng)用是相當(dāng)廣泛的。由于Modbus是一個事實(shí)上的產(chǎn)業(yè)標(biāo)準(zhǔn),很多廠家的PLC、HMI、組態(tài)軟件都支持Modbus,而且Modbus是一個開放標(biāo)準(zhǔn),其協(xié)議內(nèi)容可以免費(fèi)獲得,一些小型廠商甚至個人都可根據(jù)協(xié)議標(biāo)準(zhǔn)開發(fā)出支持Modbus的產(chǎn)品或軟件,從而使其產(chǎn)品聯(lián)進(jìn)到Modbus的數(shù)據(jù)網(wǎng)絡(luò)中。因此,Modbus有著廣泛的應(yīng)用基礎(chǔ)。
在實(shí)際應(yīng)用中,可以使用RS232、RS485/422、Modem加電話線、甚至TCP/IP來聯(lián)網(wǎng)。所以,所以,Modbus的傳輸介質(zhì)種類較多,可以根據(jù)傳輸間隔來選擇。
2 Modbus的具體應(yīng)用
這里先容的Modbus的具體應(yīng)用是某廠的水泥生料生產(chǎn)質(zhì)量控制系統(tǒng)。此系統(tǒng)中一共有5個子站:鈣鐵分析儀、四元素分析儀、料位位/料漿塞、配料秤、配庫。每一個子站由一臺計算機(jī)和相關(guān)軟、硬件組成,控制系統(tǒng)組成如圖3所示。
從圖3可看出,系統(tǒng)基本上是兩個控制回路:一路由鈣鐵分析儀、配料秤及控制算法組成,實(shí)現(xiàn)磨前精配,即出磨生料質(zhì)量的在線實(shí)時閉環(huán)控制;另一路由四元素分析儀、料漿塞、料位儀組成,實(shí)現(xiàn)摩后調(diào)配,即進(jìn)窯前料漿質(zhì)量的均化控制。配庫算法在第二條回路中起控制、優(yōu)化和網(wǎng)絡(luò)接口的作用。系統(tǒng)控制參數(shù)的改變由兩個事件觸發(fā):鈣鐵儀分析的結(jié)果和四元素分析的結(jié)果。這兩個分析結(jié)果由對用戶定期采得的實(shí)際生產(chǎn)中的樣品的分析得到。從圖3還可看出,各站之間是相互聯(lián)系的,它們的協(xié)作關(guān)系到生料生產(chǎn)的質(zhì)量。
在網(wǎng)絡(luò)設(shè)計中,不僅要實(shí)現(xiàn)各站之間數(shù)據(jù)交換,同時還要考慮到網(wǎng)絡(luò)的靈活性、通用性、可擴(kuò)展性。例如,數(shù)據(jù)源站點(diǎn)應(yīng)能比較輕易地增減數(shù)據(jù)、目標(biāo)站點(diǎn)可能有多個、數(shù)據(jù)流向應(yīng)該是雙向的、所有生料系統(tǒng)的數(shù)據(jù)需送到廠級DCS中,因此網(wǎng)絡(luò)的實(shí)現(xiàn)比較復(fù)雜。
由于Modbus協(xié)議具有多樣性、可靠性等特點(diǎn),而且是產(chǎn)業(yè)級標(biāo)準(zhǔn)協(xié)議,完全可以適合具體應(yīng)用,因此用Modbus實(shí)現(xiàn)網(wǎng)絡(luò)。
要在每個站點(diǎn)都用源程序?qū)崿F(xiàn)Modbus是不實(shí)現(xiàn)的,由于應(yīng)用程序開發(fā)平臺不一樣,有Visual C++等,不可能實(shí)現(xiàn)代碼復(fù)用。但是,每個站點(diǎn)讀寫Modbus數(shù)據(jù)的操縱又是相同的,為解決這個題目,我們采用COM技術(shù)。COM也是軟件模塊之間數(shù)據(jù)通訊的標(biāo)準(zhǔn)。COM的特點(diǎn)是語言無關(guān)性、對時程的透明性和可以實(shí)現(xiàn)二進(jìn)制重用。由于它的接口是開放的,所以支持COM技術(shù)的客戶程序可以通過其公共接口調(diào)用COM組件的內(nèi)部功能。眾所周知,在Windows2000中,COM+甚至是構(gòu)成操縱系統(tǒng)的基礎(chǔ)。
最后,采用ATL開發(fā)出了兩個COM組件,即Modbus Master組件和Modbus Slave組件。ATL是一個基于C++模擬技術(shù)的框架,它主要用在甚至COM的軟件開發(fā)上,使用它可以大大簡化組件的開發(fā)過程并進(jìn)步代碼的效率[5]。Master和Slave組件都包含ASCII、RTU、TCP三種方式,實(shí)現(xiàn)了Class0、Class1規(guī)定的功能[3]。每個子站的客戶程序不需要了解Modbus的具體協(xié)議和實(shí)現(xiàn)方式,只需調(diào)用組件公然出來的方法,就可以與遠(yuǎn)程計算機(jī)交換數(shù)據(jù),實(shí)現(xiàn)Modbus協(xié)議透明、網(wǎng)絡(luò)數(shù)據(jù)傳輸透明。例如Slave真?zhèn)€組件,客戶端只需修改其連接數(shù)據(jù)就可以使變化反應(yīng)到Master端,而Master端修改了數(shù)據(jù)后,Slave端會觸發(fā)事件通知客戶。
網(wǎng)絡(luò)結(jié)構(gòu)沒有使用點(diǎn)對點(diǎn)的連接,而是采用了星型連接,在一個站點(diǎn)上建立一個實(shí)時數(shù)據(jù)庫,相當(dāng)于一個數(shù)據(jù)中心。所有站點(diǎn)都只與數(shù)據(jù)中心相連,各站數(shù)據(jù)也發(fā)送到數(shù)據(jù)中心集中。網(wǎng)絡(luò)結(jié)構(gòu)見圖4。
3 討論
3.1 關(guān)于具體應(yīng)用
圖4所示的網(wǎng)絡(luò)結(jié)構(gòu)中,一方面,系統(tǒng)封裝了Modbus協(xié)議和網(wǎng)絡(luò)的實(shí)現(xiàn),實(shí)現(xiàn)了功能復(fù)用,減少了重復(fù)操縱,并且使網(wǎng)絡(luò)調(diào)試比較方便;另一方面,星型結(jié)構(gòu)使增加數(shù)據(jù)、增加站點(diǎn)都很方便,原則上每個站點(diǎn)都可以取得任意站點(diǎn)的數(shù)據(jù),而不需要增加新的連接。在圖4所示的網(wǎng)絡(luò)結(jié)構(gòu)下,可以方便地把配庫和配料秤相連,實(shí)現(xiàn)半庫調(diào)配(根據(jù)料漿質(zhì)量反饋控制配料秤配方),將控制回路增加到3條。部分實(shí)時數(shù)據(jù)還可以存進(jìn)歷史數(shù)據(jù)庫,以便長期保存和事后分析查詢。
3.2 Modbus協(xié)議的其它特點(diǎn)
除了在簡介中提到的應(yīng)用廣泛的特點(diǎn)外,Modbus還有其它特點(diǎn)。Modbus協(xié)議需要對數(shù)據(jù)進(jìn)行校驗(yàn),串行協(xié)議中除有奇偶校驗(yàn)外,ASCII模式采用LRC校驗(yàn),RTU模式采用16位CRC校驗(yàn),但TCP模式?jīng)]有額外規(guī)定校驗(yàn),由于TCP協(xié)議是一個面向連接的可靠協(xié)議。另外,Modbus采用主從方式定時收發(fā)數(shù)據(jù),在實(shí)際使用中假如某Slave站點(diǎn)斷開后(如故障或關(guān)機(jī)),Master端可以診斷出來,而當(dāng)故障修復(fù)后,網(wǎng)絡(luò)又可自動接通。因此,Modbus協(xié)議的可靠性較好。
Modbus定義了很多功能,對產(chǎn)業(yè)上的實(shí)際應(yīng)用考慮比較全面。而且協(xié)議仍在發(fā)展中,用戶還可自定義功能碼??梢?Modbus的擴(kuò)展性是比較好的。
對于一些重復(fù)發(fā)送的檢測數(shù)據(jù),可以采用Unsolicited方式,即Master端不需發(fā)送請求,而由Slave端主動發(fā)送數(shù)據(jù)。這樣可以降低網(wǎng)絡(luò)數(shù)據(jù)流量,以進(jìn)步傳輸速度。因此,Modbus協(xié)議應(yīng)用也比較靈活。
3.3 與NetDDE協(xié)議的對比
NetDDE協(xié)議有幾個缺點(diǎn):一是技術(shù)太老,Win98平臺上沒有32位的API,只有16位的,因此在32位平臺上實(shí)現(xiàn)起來較困難,而且NetDDE不能實(shí)現(xiàn)串行連接;二是傳