亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        OPC技術在智能倉儲系統(tǒng)中的應用

        2021-08-02 03:35:34成衛(wèi)青
        計算機技術與發(fā)展 2021年7期
        關鍵詞:數(shù)據(jù)庫

        吳 晗,成衛(wèi)青

        (南京郵電大學 計算機學院,江蘇 南京 210023)

        0 引 言

        當今社會不斷進步,工業(yè)上的自動化程度也在不斷提高,智能倉儲也被逐漸應用于各種場景,以達到減少貨物存放空間,提高效率的目的。而對各個設備狀態(tài)的實時監(jiān)控是整個智能倉儲軟件最為關鍵的一部分,在監(jiān)控、控制整個智能化立體倉儲中發(fā)揮著十分關鍵的作用。作為整個系統(tǒng)的核心,WCS(warehouse control system,倉庫控制系統(tǒng))能夠根據(jù)設備當前的狀態(tài),通過對數(shù)據(jù)庫的查詢來控制任務信息的下達,可以實時監(jiān)控當前堆垛機所處的位置、堆垛機狀態(tài)、是否報警以及堆垛機貨叉上是否有貨的狀態(tài)變化,也能夠對輸送線的狀態(tài)和是否有報警進行監(jiān)控,還能夠查詢到當前貨物所存放的位置及庫位信息等。為了能夠實現(xiàn)上述的功能,第一步需要解決PLC和上位機之間的通信。一般來說,對于一些要求不是很高的設備,串口通信是最常見的方式,除此以外還有總線通信、串口轉以太網(wǎng)通信等。但是根據(jù)實際使用的情況發(fā)現(xiàn),串口通信和現(xiàn)場總線通信會受到通信距離的限制,而且通信效率不高,常常會有信號延遲或者信號收不到的問題出現(xiàn)。為了解決上述問題,出現(xiàn)了OPC(OLE for process control)通信。

        1 OPC技術

        通信協(xié)議規(guī)定了實體雙方要實現(xiàn)通信所必須遵守的規(guī)則或約定。現(xiàn)階段,隨著工業(yè)自動化的快速進步,在完成PLC和上位機的數(shù)據(jù)交互方面,OPC協(xié)議起著至關重要的作用[1-4]。由于基于OPC通信協(xié)議的交互速度快,性能穩(wěn)定,目前越來越多的交互方式都采取這種協(xié)議。根據(jù)不同的控制系統(tǒng),OPC服務器不僅能夠放在PLC上成為上位機的遠程OPC服務器,也能夠放在上位機上成為本地OPC服務器。此外,接口作為組件之間通信的橋梁[5],OPC為開發(fā)人員提供了一個具有開放式的接口,可以對這個接口進行引用、改寫、擴展,從而實現(xiàn)符合自身需求的接口,完成基于OPC的上位機與下位機的數(shù)據(jù)交互。因此,OPC協(xié)議為實現(xiàn)通過PLC連接到現(xiàn)場工控電腦的OPC客戶端提供了一個可行的方式。圖1為數(shù)據(jù)源與WCS的連接結構。

        圖1 數(shù)據(jù)源與WCS連接結構

        WCS與OPC服務器的數(shù)據(jù)通信包含兩方面:一方面是WCS從OPC服務端讀數(shù)據(jù);另一方面是WCS向OPC服務端寫數(shù)據(jù)[6]。WCS從OPC服務端讀數(shù)據(jù)有4種方法,分別為:異步讀取、刷新與訂閱、同步讀取[7]。WCS向OPC服務器寫入數(shù)據(jù)有兩種方法:異步寫入和同步寫入。WSC和OPC服務器的數(shù)據(jù)通信有3種方式,分別為:異步、同步以及訂閱。

        1.1 同步訪問

        同步讀和寫都屬于同步訪問,同步訪問指的是WCS(OPC客戶端)調用OPC服務器提供的接口,對服務器中的內容進行讀取和寫入,OPC服務器根據(jù)WCS所請求的內容將查找到的數(shù)據(jù)返回給WCS,而在此之前WCS將會一直處在等待狀態(tài)。

        同步訪問的特點是:在WCS讀取特定數(shù)據(jù)塊內容時,必須要求WCS讀到數(shù)據(jù)為止;同樣的,WCS在寫入指定的數(shù)據(jù)塊地址之前,會始終處在等待數(shù)據(jù)的狀態(tài)。因此,當數(shù)據(jù)量比較小且WCS與OPC服務器交互不是很頻繁的時候可以使用同步訪問的方法。但當數(shù)據(jù)量大或者有大量用戶訪問的時候,同步訪問會出現(xiàn)延遲情況,造成系統(tǒng)的效率降低。

        1.2 異步訪問

        異步讀和寫也都屬于異步訪問,異步訪問和同步訪問相似,但異步訪問的操作過程比同步訪問更加復雜,先要WCS提出數(shù)據(jù)請求,然后在OPC服務器接收到這個數(shù)據(jù)請求后,OPC服務器會將這個請求進行“隊列”排序并且為其編號,WCS所調用的方法就會立即返回,使WCS能夠繼續(xù)執(zhí)行其他任務,不再處于等待狀態(tài)。在OPC服務器操作完成后,WCS會在一個專門處理外部事件的代碼塊中處理OPC服務器發(fā)送過來的數(shù)據(jù)。

        異步訪問的特點是:在WCS發(fā)出讀取請求后需要馬上返回,然后WCS可執(zhí)行其他任務,當OPC服務器讀取數(shù)據(jù)完成后,調用WCS的讀取完成事件,完成讀取過程;同樣的,在WCS發(fā)出寫入請求后需要馬上返回,然后WCS繼續(xù)執(zhí)行其他任務,當OPC服務器把數(shù)據(jù)寫入完成后,再調用WCS的寫入完成事件,完成寫過程。所以異步訪問的效率相比較于同步訪問更高,它可以承載更多的用戶請求的數(shù)據(jù),并且在最大程度上節(jié)約通信以及CPU資源。

        1.3 訂閱方式

        訂閱方式是OPC服務器與WCS通信中的一種十分特別的數(shù)據(jù)通信模式[8]。OPC服務器不需要收到來自WCS的數(shù)據(jù)請求,它是OPC服務器在每一個周期內,對于在掃描緩沖區(qū)內的數(shù)據(jù)進行掃描然后對比,若對比結果發(fā)現(xiàn)前后數(shù)據(jù)的變化大于閾值時,則會更新掃描緩沖區(qū)中的數(shù)據(jù)并且向WMC提供數(shù)據(jù)。這樣一旦出現(xiàn)數(shù)據(jù)變化WCS就能夠及時地收到變化后的數(shù)據(jù)信息。訂閱方式從本質上來說是一種異步方式中的讀取方式。使用訂閱方式采集數(shù)據(jù)是按照固定的周期更新數(shù)據(jù)緩沖區(qū)的值,當發(fā)現(xiàn)數(shù)據(jù)出現(xiàn)變化時,則會通過數(shù)據(jù)變化事件告訴WCS,并且只有當數(shù)據(jù)的變化超過規(guī)定閾值的時候才會更新數(shù)據(jù)緩沖區(qū)的值并且通知WCS,由此可以得出,使用此種方式將會忽略數(shù)據(jù)微小的變化,以降低WCS與OPC服務器的負載。

        訂閱方式的特點是:通過OPC服務器在每個固定周期中檢查緩存區(qū)中的數(shù)據(jù),當發(fā)現(xiàn)數(shù)據(jù)的變化超過一個固定值之后,就會立即告訴WCS應用程序,將數(shù)據(jù)緩存區(qū)的信息傳送過去。這種技術是根據(jù)“硬件設備-服務器-用戶”的模型,如圖2所示,在服務器內部預先建立一個動態(tài)緩存區(qū)用來存儲數(shù)據(jù),當數(shù)據(jù)出現(xiàn)變化較大時對其進行更新且發(fā)送給WCS。這種方式在數(shù)據(jù)變化不大的情況下不會向WCS發(fā)送信息,從而減少數(shù)據(jù)發(fā)送的次數(shù),也能夠減少WCS對OPC服務器的重復訪問的次數(shù)。在提供數(shù)據(jù)的設備點十分多的情景中,更能體現(xiàn)出使用這種通信方法的優(yōu)點。

        圖2 訂閱數(shù)據(jù)訪問交互方式

        2 OPC服務器的搭建

        智能倉儲一般都使用C/S的架構模式,它包含了OPC服務器以及WCS(OPC客戶端)兩個部分,該文主要探討的是OPC服務器的實現(xiàn)過程。

        2.1 總體設計構思

        OPC服務器的設計需要根據(jù)智能倉儲的實際情況去考慮,為WCS提供一個穩(wěn)定、流暢的通信平臺。具體需要實現(xiàn)3個方面的功能。第一,作為一個數(shù)據(jù)服務器,OPC服務器需要向WCS提供OPC服務器的對象以及接口,這樣其他軟件才能對OPC服務器提供的數(shù)據(jù)進行讀操作和寫操作,這是作為OPC服務器最關鍵也是最為基本的功能;第二,OPC服務器應當能夠對現(xiàn)場采集的實時數(shù)據(jù)進行數(shù)據(jù)管理;第三,為了能便于維護人員進行操作,OPC服務器應提供靈活多用的交互接口。在開發(fā)設計層面,OPC服務器應當與WCS的功能模塊相對獨立,由數(shù)據(jù)采集、OPC對象和接口以及數(shù)據(jù)管理三個子模塊組成。OPC服務器的總體結構如圖3所示[9]。

        圖3 OPC服務器的總體結構

        2.2 數(shù)據(jù)采集模塊

        數(shù)據(jù)采集與現(xiàn)場設備直接連接,獲取到現(xiàn)場設備的實際數(shù)值,再將其分配到其對應的通信子模塊中。通常來說,每一個設備都會有一個通信子模塊與其對應。數(shù)據(jù)采集模塊會有一個固定的采集周期,在每個采集周期內都會從現(xiàn)場實際設備中采集數(shù)據(jù)。對于數(shù)據(jù)采集模塊來說有兩種方式可以實現(xiàn)數(shù)據(jù)采集,第一種為直接通過I/O驅動實現(xiàn)現(xiàn)場設備與通信子模塊之間的通信;第二種為使用數(shù)據(jù)接口,通過這個數(shù)據(jù)接口不斷地讀取現(xiàn)場設備中的數(shù)據(jù)。OPC服務器數(shù)據(jù)采集模塊的結構如圖4所示。

        圖4 OPC服務器數(shù)據(jù)采集模塊的結構

        在實際開發(fā)應用的時候,工業(yè)上很多的控制軟件都配備了屬于其單獨擁有的數(shù)據(jù)庫。通常情況下,都是利用數(shù)據(jù)庫供應商提供的專門的API來實現(xiàn)對數(shù)據(jù)庫的操作。除此以外,目前市面上經(jīng)常使用的數(shù)據(jù)庫如SQLServer、Oracle、MySql等,雖然大致相同,但是每個數(shù)據(jù)庫都具備其自身的特點,如果需要訪問這些數(shù)據(jù)庫的話,就要對每個數(shù)據(jù)庫單獨地編寫不同的控制軟件。對于日后的系統(tǒng)集成來說,這將會是一個巨大的挑戰(zhàn)[10]。

        在本系統(tǒng)中OPC服務器特別為數(shù)據(jù)采集模塊提供了對數(shù)據(jù)庫進行操作的接口,使得整個WCS具有OPC服務器的功能,有效地解決了數(shù)據(jù)庫版本不統(tǒng)一,需要單獨編寫的問題。對于這樣的設計方式類似于創(chuàng)建了一個訪問WCS實時數(shù)據(jù)庫的中間件,對于其他的開發(fā)商來說就無需知道這個數(shù)據(jù)庫的特有結構了。OPC客戶端(WCS)只需要根據(jù)所提供的OPC通信規(guī)范[11],就可以利用OPC服務器通過間接訪問的方式與數(shù)據(jù)源交換數(shù)據(jù)。

        對于不同的數(shù)據(jù)源如輸送線、傳感器、堆垛機等,OPC服務器必須能夠取得這些設施的數(shù)據(jù)。因此在數(shù)據(jù)采集模塊中,通信子模塊中的接口都是以動態(tài)鏈接庫(dynamic-link library,DLL)的形式實現(xiàn)的。利用動態(tài)鏈接庫能夠制定一個統(tǒng)一的通信接口格式,這樣就能將OPC服務器中上層具體功能和下層數(shù)據(jù)采集模塊的功能分隔開,兩部分獨立開發(fā)降低耦合程度,這樣使得OPC服務器能夠對多種不同的設備實現(xiàn)兼容。除此以外,將通信接口封裝成DLL來實現(xiàn),不僅能夠在很大程度上降低程序運行所需的資源,增強系統(tǒng)的安全性和可靠性,也使得用戶對其二次開發(fā)更加方便。

        2.3 OPC對象和接口

        WCS和OPC服務器之間的數(shù)據(jù)通信依靠對象的接口來實現(xiàn),OPC對象和接口也是整個OPC通信規(guī)范的核心。主要有三種結構組成了OPC服務器:服務器、組和項[12]。作為所有組對象的集合,服務器對象包含了所有組對象的數(shù)據(jù)。在同一個組中,本組的組對象可以獲得所有信息,同時也包含了OPC數(shù)據(jù)項。

        OPC的組對象為客戶獲取數(shù)據(jù)信息提供了一種方法??蛻艏瓤梢栽诳蛻舳水斨性O置對數(shù)據(jù)的更新頻率,也可以對數(shù)據(jù)進行讀操作或寫操作。當在數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)出現(xiàn)變化后,OPC服務器會將變化的數(shù)據(jù)發(fā)送給WCS,它在接收到數(shù)據(jù)后進行信息處理,無需花費大量的時間來搜索。在OPC定義的規(guī)范當中,有兩組對象:分別是本地組以及公共組。對于公共組來說,它可以被多個WCS共同擁有,但是本地組只能有一個WCS客戶。一般情況下,對于一對已建立連接的WCS和OPC服務器來說,它們只需要定義唯一的一組對象。但是在每組對象中,WCS能夠將多個OPC數(shù)據(jù)項增加進來。

        服務器、組、數(shù)據(jù)項這三類對象形成了一個分層式的結構模型。在這個結構模型中,作為標準的COM對象,OPC對象包含了服務器對象和組對象,是OPC服務器必須實現(xiàn)的兩個組件對象[13],它需要通過實現(xiàn)OPC規(guī)范定義的接口,并且將這些接口提供給WCS,WCS再根據(jù)所提供的接口,完成對OPC服務器的訪問[14]。服務器對象擁有自己的類廠,如果需要使用,就必須先行在系統(tǒng)注冊表中完成注冊;而由于組對象沒有類廠,因此不需要向服務器對象一樣在注冊表中注冊,在服務器對象創(chuàng)建的同時也創(chuàng)建了組對象。組對象包括了項對象,它的作用是創(chuàng)建和數(shù)據(jù)存儲區(qū)的聯(lián)系,表明數(shù)據(jù)源的地址和類型。項對象與數(shù)據(jù)存儲區(qū)的數(shù)據(jù)項這兩個項是不同的,數(shù)據(jù)存儲區(qū)的數(shù)據(jù)項主要作用是和數(shù)據(jù)源通信,獲取該數(shù)據(jù)源中的數(shù)據(jù);而項對象主要是和組對象通信,以及獲得WCS所需要獲得的信息。WCS通過組對象獲取到相關對象的名稱、屬性、值等信息,然后再將項對象與數(shù)據(jù)存儲區(qū)的數(shù)據(jù)項進行關聯(lián),從而避免直接操作數(shù)據(jù)存儲區(qū)。

        OPC對象和接口模塊對外提供OPC接口與WCS進行交互,對內則通過變量連接機制建立與數(shù)據(jù)源的連接,其結構如圖5所示。

        圖5 服務器中對象和接口模塊結構

        2.4 數(shù)據(jù)管理

        WCS需要監(jiān)控很多的變量數(shù)據(jù)信息,其中就包括了堆垛機的狀態(tài),模式,輸送線的狀態(tài)模型,光電開關,報警信息,也能夠通過其他程序來獲得數(shù)據(jù),以上的數(shù)據(jù)都能作為OPC服務器中的數(shù)據(jù)項,存儲在服務器的地址空間中。

        3 WCS與OPC服務器通信的實現(xiàn)

        WCS要從OPC服務器中獲取數(shù)據(jù),是數(shù)據(jù)使用者,而OPC服務器是數(shù)據(jù)的提供者,將數(shù)據(jù)提供給WCS。它們兩個之間的數(shù)據(jù)傳遞、交互是通過OPC協(xié)議來實現(xiàn)的,也就是說必須要符合OPC的接口規(guī)范。OPC技術不僅僅適用于WCS和硬件設備之間,也適用于兩個軟件之間實現(xiàn)數(shù)據(jù)互通,它們既可以都配置在同一臺PC上,也能夠配置在同一個局域網(wǎng)中的不同PC上。

        3.1 WCS與OPC服務器的通信流程

        WCS和OPC服務器的交互流程如圖6所示。首先,無論對于WCS還是OPC服務器第一步都要做的是初始化COM(組件)庫。COM是微軟公司為了計算機工業(yè)的軟件生產(chǎn)更加符合人類的行為方式開發(fā)的一種新的軟件開發(fā)方式,可以將系統(tǒng)中的組件用新的替換掉,以便于日后的升級,也能夠在多個系統(tǒng)中使用多次。然后,OPC服務器將自身的信息注冊到操作系統(tǒng)的注冊表中,獲取CLSID,也叫類標識符。接下來是WCS根據(jù)查詢到的CLSID向OPC服務器提出構建服務器對象的請求,將WCS的請求發(fā)送給OPC服務器后就會構建服務器組件對象,并且向客戶端提供返回服務器接口對象的指針。當服務器組件對象構建完成后,WCS就能根據(jù)這個接口指針去調用OPC服務器中提供的方法。最后,當WCS結束訪問后就會將OPC服務器的資源進行釋放,然后卸載COM庫,關閉程序。在執(zhí)行這一項過程當中,是WCS主動連接或者斷開OPC服務器,但是對于OPC服務器本身來說,它是并不知道對于任何訪問它的客戶的信息的。圖6為OPC服務器和WCS的交互流程。

        圖6 OPC服務器和WCS的交互流程

        3.2 組對象的實現(xiàn)

        WCS是通過控制組對象從而實現(xiàn)更小單位的控制,從本質上來說,是OPC服務器將相同類型的數(shù)據(jù)劃分成為一個組而達到對相同類型的數(shù)據(jù)進行統(tǒng)一管理的目的。比如說,有兩個WCS需要經(jīng)常訪問的數(shù)據(jù),但是它們的數(shù)據(jù)刷新速率是不同的,那么就可以將這兩個數(shù)據(jù)分別劃分到不同組對象當中,這樣將大大提高WCS讀取數(shù)據(jù)的有效性和效率。

        (1)組對象類的定義和方法。

        接口中包含的方法與變量如下:

        Class OpcDaCustomGroup

        {

        public int ServerGroupHandle; //輸出參數(shù),服務器為新創(chuàng)建的組對象產(chǎn)生的句柄

        public int RevisedUpdateRate; //輸出參數(shù),服務器返回給客戶端的實際使用的數(shù)據(jù)更新率

        public Guid Riid=typeof(IOPCItemMgt).GUID; //引用參數(shù),客戶端想要的組對象的接口類型(如 IIDIOPCItemMgt)

        public object Group; //輸出參數(shù),用來存儲返回的接口指針。如果函數(shù)操作出現(xiàn)任務失敗,此參數(shù)將返回NULL

        public Guid Riid; //引用參數(shù),客戶端想要的組對象的接口類型(如IIDIOPCItemMgt)

        public object Group; //輸出參數(shù),用來存儲返回的接口指針。如果函數(shù)操作出現(xiàn)任務失敗,此參數(shù)將返回NULL。

        public GCHandle TimeBias; //指向Long類型的指針

        public GCHandle PercendDeadBand; //一個項對象的值變化的百分比,可能引發(fā)客戶端程序的訂閱回調。此參數(shù)只應用于組對象中有模擬dwEUType(工程單位)類型的項對象。指針為NULL表示0.0

        public int LCID; //當用于組對象上的操作的返回值為文本類型時,服務器使用的語言

        public OpcDaCustomItem[] OpcDataCustomItems; // OPC項數(shù)組

        }

        (2)組對象的接口實現(xiàn)。

        組對象在Opc自定義接口-異步管理類(OpcDaCustomAsync)中的添加OPC項AddOpcGroup中實現(xiàn),其中部分關鍵代碼如下:

        //添加OPC組

        Private void AddOpcGroup(OpcDaCustomGroupopcGroup)

        {

        InitIoInterfaces(opcGroup); //初始化IO接口

        if(opcGroup.OpcDataCustomItems.Length>0)

        {

        //添加OPC項

        AddOpcItem(opcGroup);

        //激活訂閱回調事件

        ActiveDataChanged(IOPCGroupStateMgt);

        }

        opcGroup.TimeBias.Free();

        opcGroup.PercendDeadBand.Free(); //釋放組對象的資源

        }

        其中IOPCGroupStateMgt為OpcDaCustomAsync類中的成員變量,是Opc組管理器。

        //初始化I/O接口方法

        public void InitIoInterfaces(OpcDaCustomGroupopcGroup){

        int cookie;

        //組狀態(tài)管理對象,改變組的刷新率和激活狀態(tài)

        IOPCGroupStateMgt=(IOPCGroupStateMgt)opcGroup.Group;

        IConnectionPointContainer=(IConnectionPointContainer)opcGroup.Group;

        Guidiid=typeof(IOPCDataCallback).GUID;

        IConnectionPointContainer.FindConnectionPoint(ref iid, out IConnectionPoint);

        //創(chuàng)建客戶端與服務端之間的連接

        IConnectionPoint.Advise(this,out cookie);}

        其中IConnectionPoint為OpcDaCustomAsync類中的成員變量,是連接指針。

        3.3 項對象的實現(xiàn)

        項對象作為OPC服務器之中的私有變量,是將WCS和數(shù)據(jù)源連接起來的核心,又因為是私有變量,但在OPC定義的規(guī)范中并未為其設定出任何標準接口,WCS只能通過組對象對其進行操作,但也正因為沒有為項對象做出規(guī)定,開發(fā)者們就能夠根據(jù)現(xiàn)場的實際情況以及自身的需求來對項對象進行設計與開發(fā)[15]。用設計類OpcDaCustomItem來描述項對象,包含的主要屬性和部分關鍵代碼有:

        ///添加OPC項

        private void AddOpcItem(OpcDaCustomGroup opcGroup)

        {

        OpcDaCustomItem[] opcDataCustomItemsService=opcGroup.OpcDataCustomItems;

        IntPtrpResults=IntPtr.Zero;

        IntPtrpErrors=IntPtr.Zero;

        OPCITEMDEF[] itemDefyArray=new OPCITEMDEF[opcGroup.OpcDataCustomItems.Length];

        int i=0;

        int[] errors=new int[opcGroup.OpcDataCustomItems.Length];

        int[] itemServerHandle=new int[opcGroup.OpcDataCustomItems.Length];

        //獲取每一個數(shù)據(jù)項的值,存放在一個集合中

        foreach (OpcDaCustomItem itemService in opcDataCustomItemsService){

        if (itemService!=null)

        {

        itemDefyArray[i].szAccessPath = itemService.AccessPath;

        itemDefyArray[i].szItemID = itemService.ItemID;

        itemDefyArray[i].bActive = itemService.IsActive;

        itemDefyArray[i].hClient = itemService.ClientHandle;

        itemDefyArray[i].dwBlobSize = itemService.BlobSize;

        itemDefyArray[i].pBlob = itemService.Blob;

        itemDefyArray[i].vtRequestedDataType = itemService.RequestedDataType;

        }

        //添加OPC項組

        ((IOPCItemMgt)opcGroup.Group).AddItems(opcGroup.OpcDataCustomItems.Length, itemDefyArray, out pResults, out pErrors);

        IntPtr Pos = pResults;

        Marshal.Copy(pErrors, errors, 0, opcGroup.OpcDataCustomItems.Length);

        Pos = new IntPtr(Pos.ToInt32() + Marshal.SizeOf(typeof(OPCITEMRESULT))); }

        var result = (OPCITEMRESULT)Marshal.PtrToStructure(Pos, typeof(OPCITEMRESULT));

        itemServerHandle[j] = opcDataCustomItemsService[j].ServerHandle = result.hServer;

        4 系統(tǒng)實際應用

        OPC服務器在系統(tǒng)實際應用中主要起以下兩個方面的作用:與電子元器件(主要為PLC)相連獲取外界物理數(shù)據(jù);與上位機通訊,將獲取來的數(shù)據(jù)提供給上位機進行讀寫操作,從而實現(xiàn)對外部設備的控制。該系統(tǒng)運行需要的軟硬件有:Net Framework 4.0、WinCC_V7.3、西門子300或其他類型PLC。

        OPC服務器從PLC處獲取數(shù)據(jù),需先在本機上安裝WinCC_V7.3,并對站組態(tài)編輯器進行配置,如圖7所示,需要配置好站名、模式,選擇本機使用的網(wǎng)卡,以及對應的IP。

        圖7 OPC服務器站組態(tài)編輯器

        當以上操作都完成后,需要PLC編程人員將程序下載至站組態(tài)編輯器之中,這樣OPC服務器就能與PLC建立連接,獲取數(shù)據(jù)。

        而作為OPC服務器的上位機WCS在從OPC中獲取時,通常情況下都是在文本文件中預先編寫好xml類型的配置文件,如圖8所示。

        圖8 xml文件配置示例圖

        xml配置文件的第一行為xml的版本(1.0版本),并且使用的是UTF-8字符編碼。其中的標簽從大到小分別為OpcServer,OpcGroup和Item,依次對應OPC服務器配置、OPC組對象配置以及OPC項對象配置。在OPC服務器配置中需要寫明OPC服務器名及IP地址;在OPC組對象配置中需要寫明OPC組名、客戶端句柄以及刷新頻率;最后在項對象中則需要寫明OPC項對象在PLC中的地址塊、自定義英文名和中文名、客戶端句柄以及刷新頻率。至此,上位機配置文件基本完成。

        由于PLC一般適用于工業(yè)自動化設備,考慮到軟件的穩(wěn)定性和適用性,以及庫文件的多樣性,上位機軟件開發(fā)常使用微軟的VS平臺作為開發(fā)環(huán)境,.NET作為開發(fā)語言。圖9為上位機軟件WCS的變量監(jiān)控圖。

        圖9 WCS監(jiān)控數(shù)據(jù)變量圖

        從圖9中可以看出,監(jiān)控的變量為xml配置文件中配置好的項對象,其中包含了變量描述、變量地址、變量名以及變量值。其中變量值的刷新頻率可以通過xml文件的刷新頻率(UpdateRate)進行設置,通常情況下數(shù)據(jù)交互模式都是采用訂閱方式進行數(shù)據(jù)更新,因為這種方式效率高、穩(wěn)定性好。

        5 結束語

        該文為智能倉儲系統(tǒng)設計實現(xiàn)了OPC服務器以及OPC接口,實現(xiàn)了基于OPC的WCS和PLC之間的通信。使得WCS系統(tǒng)能夠對堆垛機、輸送線等進行控制并且下發(fā)指令,從而實現(xiàn)對貨物以及庫位的管理。在智能倉儲中使用OPC通信,相較于傳統(tǒng)的串口通信,傳輸性能大大提高,提升了WCS下指令的速度、整個倉儲的工作效率以及管理水平。

        猜你喜歡
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        財經(jīng)(2017年15期)2017-07-03 22:40:49
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        兩種新的非確定數(shù)據(jù)庫上的Top-K查詢
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        數(shù)據(jù)庫
        財經(jīng)(2015年3期)2015-06-09 17:41:31
        數(shù)據(jù)庫
        財經(jīng)(2014年21期)2014-08-18 01:50:18
        數(shù)據(jù)庫
        財經(jīng)(2014年6期)2014-03-12 08:28:19
        數(shù)據(jù)庫
        財經(jīng)(2013年6期)2013-04-29 17:59:30
        国产精品久久中文字幕第一页| 正在播放强揉爆乳女教师| 日本爽快片18禁免费看| 国产成人77亚洲精品www| 精品国产97av一区二区三区| 亚洲日本精品国产一区二区三区| 国产午夜伦鲁鲁| 中文无码成人免费视频在线观看| 亚洲AV无码成人精品区H| 亚洲av产在线精品亚洲第三站| 亚洲乱码国产乱码精品精| 人妻无码中文字幕免费视频蜜桃| AV无码专区亚洲AVL在线观看| 三级国产高清在线观看| 好吊妞无缓冲视频观看| 精品人妻伦九区久久AAA片69| 中文字幕亚洲乱码熟女一区二区 | 亚洲av毛片一区二区久久| 日本a级片免费网站观看| 亚洲aⅴ在线无码播放毛片一线天| 精品国产福利久久久| 隔壁人妻欲求不满中文字幕| 中文人妻熟女乱又乱精品| 亚洲中文字幕无码专区| 久久久久久人妻一区二区无码Av| 日韩有码在线观看视频| 国产精品户外野外| 亚洲日韩图片专区小说专区| 中文字幕日本五十路熟女| 亚洲av色影在线| 久久精品久久久久观看99水蜜桃| 国产亚洲曝欧美不卡精品| 亚洲国产精品久久婷婷| 无码人妻av一二区二区三区| 无码国产精品第100页| 国产亚洲av夜间福利在线观看| 99久热在线精品视频观看| 国产天堂网站麻豆| 热门精品一区二区三区| 久久不见久久见www日本网| 国产95在线 | 欧美|