欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

實(shí)現(xiàn)工控設(shè)備間OPC通信的方法與流程

文檔序號(hào):11206633閱讀:1804來源:國知局
實(shí)現(xiàn)工控設(shè)備間OPC通信的方法與流程

本發(fā)明涉及工業(yè)安全技術(shù)領(lǐng)域,尤其涉及一種實(shí)現(xiàn)工控設(shè)備間opc通信的方法。



背景技術(shù):

opc協(xié)議(oleforprocesscontrol)是基于微軟的ole/com機(jī)制在應(yīng)用層協(xié)議dce/rpc(distributedcomputingenvironment/remoteprocedurecalls)之上傳輸數(shù)據(jù)的通訊標(biāo)準(zhǔn),以c/s(客戶端和服務(wù)器)架構(gòu)實(shí)現(xiàn),主要用于工業(yè)生產(chǎn)過程中的數(shù)據(jù)采集和邏輯控制。工業(yè)環(huán)境中各種設(shè)備種類繁多,各大廠商的設(shè)備和軟件之間需要一種通用的數(shù)據(jù)交換方式,opc協(xié)議定義了一套標(biāo)準(zhǔn)的接口和方法,各大設(shè)備和軟件廠商也都基于微軟的ole/com技術(shù)提供了對opc協(xié)議的支持。

但是,隨著全球化發(fā)展的進(jìn)一步加快,工業(yè)發(fā)展的過程中,工業(yè)現(xiàn)場使用的設(shè)備和軟件來自于世界各個(gè)國家,這其中極有可能出現(xiàn)通過設(shè)備或軟件來竊取國家工業(yè)生產(chǎn)信息的行為,所以在一些關(guān)鍵的、關(guān)系國家安全的工業(yè)領(lǐng)域,會(huì)禁止使用某些軟件或系統(tǒng),例如,國家的某些電力生產(chǎn)系統(tǒng)中就禁止使用windows系統(tǒng)。工業(yè)生產(chǎn)中需要采集各種設(shè)備的數(shù)據(jù)信息進(jìn)行集中展現(xiàn),例如,公司的erp(enterpriseresourceplanning)系統(tǒng)要集中展現(xiàn)生產(chǎn)環(huán)境的數(shù)據(jù),這種情況就需要erp系統(tǒng)對各種設(shè)備進(jìn)行直接的數(shù)據(jù)訪問,如果需要對僅支持opc協(xié)議的設(shè)備進(jìn)行數(shù)據(jù)通訊,就要erp系統(tǒng)所部署的操作系統(tǒng)支持opc協(xié)議,就目前而言只有微軟的windows操作系統(tǒng)支持了opc協(xié)議,linux操作系統(tǒng)不支持opc協(xié)議。因此,對于不允許使用windows系統(tǒng)或僅使用了linux操作系統(tǒng)的環(huán)境中,無法與支持opc協(xié)議的設(shè)備進(jìn)行數(shù)據(jù)通訊,限制了設(shè)備的使用。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供一種實(shí)現(xiàn)工控設(shè)備間opc通信的方法,用于至少解決上述技術(shù)問題之一。

第一方面,本發(fā)明實(shí)施例提供一種實(shí)現(xiàn)工控設(shè)備間opc通信的方法,所述工控設(shè)備包括服務(wù)端工控設(shè)備和客戶端工控設(shè)備,所述工控設(shè)備搭載有不兼容opc協(xié)議的操作系統(tǒng),所述方法包括:

服務(wù)端工控設(shè)備根據(jù)通過135端口接收到自客戶端工控設(shè)備的連接請求時(shí),建立與所述客戶端工控設(shè)備之間的第一通信連接;

當(dāng)所述服務(wù)端工控設(shè)備通過所述第一通信連接接收自所述客戶端工控設(shè)備的dce/rpc數(shù)據(jù)包不屬于第一預(yù)設(shè)數(shù)據(jù)包時(shí),生成響應(yīng)數(shù)據(jù)并反饋至所述服務(wù)端工控設(shè)備。

第二方面,本發(fā)明實(shí)施例提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)中存儲(chǔ)有一個(gè)或多個(gè)包括執(zhí)行指令的程序,所述執(zhí)行指令能夠被電子設(shè)備(包括但不限于計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)讀取并執(zhí)行,以用于執(zhí)行本發(fā)明上述任一項(xiàng)實(shí)現(xiàn)工控設(shè)備間opc通信的方法。

第四方面,提供一種電子設(shè)備,其包括:至少一個(gè)處理器,以及與所述至少一個(gè)處理器通信連接的存儲(chǔ)器,其中,所述存儲(chǔ)器存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的指令,所述指令被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器能夠執(zhí)行本發(fā)明上述任一項(xiàng)實(shí)現(xiàn)工控設(shè)備間opc通信的方法。

第五方面,本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包括程序指令,當(dāng)所述程序指令被計(jì)算機(jī)執(zhí)行時(shí),使所述計(jì)算機(jī)執(zhí)行上述任一項(xiàng)實(shí)現(xiàn)工控設(shè)備間opc通信的方法。

本發(fā)明實(shí)施例中,實(shí)現(xiàn)了服務(wù)端工控設(shè)備與客戶端工控設(shè)備之間的opc通信。從而通過采用本發(fā)明實(shí)施例的方法避免了某些特殊領(lǐng)域采用windows系統(tǒng)而可能存在的安全隱患,同時(shí)還能夠保證與支持opc協(xié)議的設(shè)備之間的兼容性。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明的實(shí)現(xiàn)工控設(shè)備間opc通信的方法一實(shí)施方式的流程圖;

圖2為本發(fā)明的實(shí)現(xiàn)工控設(shè)備間opc通信的方法的另一實(shí)施方式的流程圖;

圖3為本發(fā)明的實(shí)現(xiàn)工控設(shè)備間opc通信的方法的又一實(shí)施方式的流程圖;

圖4為本發(fā)明的實(shí)現(xiàn)工控設(shè)備間opc通信的方法的又一實(shí)施方式的流程圖;

圖5為本發(fā)明的實(shí)現(xiàn)工控設(shè)備間opc通信的方法的又一實(shí)施方式的流程圖;

圖6為本發(fā)明的實(shí)現(xiàn)工控設(shè)備間opc通信的方法的又一實(shí)施方式的流程圖;

圖7為本發(fā)明實(shí)施例中的數(shù)據(jù)存儲(chǔ)解析模型的結(jié)構(gòu)示意圖;

圖8為本發(fā)明的電子設(shè)備的一實(shí)施例的結(jié)構(gòu)示意圖。

具體實(shí)施方式

為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。

本發(fā)明可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、元件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本發(fā)明,在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。

在本發(fā)明中,運(yùn)行于服務(wù)器上的應(yīng)用程序或腳本程序、服務(wù)器都可以是元件。一個(gè)或多個(gè)元件可在執(zhí)行的過程和/或線程中,并且元件可以在一臺(tái)計(jì)算機(jī)上本地化和/或分布在兩臺(tái)或多臺(tái)計(jì)算機(jī)之間,并可以由各種計(jì)算機(jī)可讀介質(zhì)運(yùn)行。元件還可以根據(jù)具有一個(gè)或多個(gè)數(shù)據(jù)包的信號(hào),例如,來自一個(gè)與本地系統(tǒng)、分布式系統(tǒng)中另一元件交互的,和/或在因特網(wǎng)的網(wǎng)絡(luò)通過信號(hào)與其它系統(tǒng)交互的數(shù)據(jù)的信號(hào)通過本地和/或遠(yuǎn)程過程來進(jìn)行通信。

最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”,不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。

如圖1所示,本發(fā)明的一實(shí)施例的實(shí)現(xiàn)工控設(shè)備間opc通信的方法,所述工控設(shè)備搭載有不兼容opc協(xié)議的操作系統(tǒng),所述工控設(shè)備包括服務(wù)端工控設(shè)備和客戶端工控設(shè)備,所述方法包括:

s11、服務(wù)端工控設(shè)備根據(jù)通過135端口接收到自客戶端工控設(shè)備的連接請求時(shí),建立與所述客戶端工控設(shè)備之間的第一通信連接;

s12、當(dāng)所述服務(wù)端工控設(shè)備通過所述第一通信連接接收自所述客戶端工控設(shè)備的dce/rpc數(shù)據(jù)包不屬于第一預(yù)設(shè)數(shù)據(jù)包時(shí),生成響應(yīng)數(shù)據(jù)并反饋至所述服務(wù)端工控設(shè)備。

本發(fā)明實(shí)施例中,本實(shí)施例中的工控系統(tǒng)所搭載的操作系統(tǒng)可以是linux操作系統(tǒng)或者是unix操作系統(tǒng)。實(shí)現(xiàn)了服務(wù)端工控設(shè)備與客戶端工控設(shè)備之間的通信。從而通過采用本發(fā)明實(shí)施例的方法避免了某些特殊領(lǐng)域采用windows系統(tǒng)而可能存在的安全隱患,同時(shí)還能夠保證與支持opc協(xié)議的設(shè)備之間的兼容性。執(zhí)行本發(fā)明上述實(shí)施例的執(zhí)行主體可以為工控設(shè)備,并且所述工控設(shè)備可以是單個(gè)設(shè)備也可以是設(shè)備群組。

如圖2所示,在本發(fā)明實(shí)現(xiàn)工控設(shè)備間opc通信的方法的一些實(shí)施例中,還包括:

s21、當(dāng)接收的所述dce/rpc數(shù)據(jù)包屬于所述第一預(yù)設(shè)數(shù)據(jù)包時(shí),獲取服務(wù)端動(dòng)態(tài)端口;

s22、所述服務(wù)端工控設(shè)備基于所述服務(wù)端動(dòng)態(tài)端口創(chuàng)建tcp服務(wù),并將所述服務(wù)端動(dòng)態(tài)端口號(hào)發(fā)送至所述客戶端工控設(shè)備;

s23、當(dāng)所述服務(wù)端工控設(shè)備接收到自所述客戶端工控設(shè)備發(fā)送的與所述服務(wù)端動(dòng)態(tài)端口建立連接的tcp連接請求時(shí),建立與所述客戶端工控設(shè)備之間的第二通信連接;

s24、所述服務(wù)端工控設(shè)備通過所述第二通信連接接收自所述客戶端工控設(shè)備的opc通訊數(shù)據(jù)包;

s25、當(dāng)接收的所述opc通訊數(shù)據(jù)包不屬于第二預(yù)設(shè)數(shù)據(jù)包時(shí),解析所述opc數(shù)據(jù)包,并向所述客戶端工控設(shè)備返回響應(yīng)數(shù)據(jù)。

如圖3所示,在本發(fā)明實(shí)現(xiàn)工控設(shè)備間opc通信的方法的一些實(shí)施例中,還包括:

s31、當(dāng)接收的所述opc通訊數(shù)據(jù)包屬于所述第二預(yù)設(shè)數(shù)據(jù)包時(shí),所述服務(wù)端工控設(shè)備通過所述客戶端工控設(shè)備的135端口,建立與所述客戶端工控設(shè)備之間的第三通信連接;

s32、所述服務(wù)端工控設(shè)備通過所述第三通信連接向所述客戶端工控設(shè)備發(fā)送dce/rpc數(shù)據(jù)包;

s33、所述服務(wù)端工控設(shè)備接收自所述客戶端工控設(shè)備針對所述dce/rpc數(shù)據(jù)包的響應(yīng)數(shù)據(jù)包;

s34、當(dāng)所述響應(yīng)數(shù)據(jù)包包含客戶端動(dòng)態(tài)端口信息時(shí),所述服務(wù)端工控設(shè)備基于所述客戶端動(dòng)態(tài)端口信息建立與所述客戶端工控設(shè)備之間的第四通信連接;

s35、所述服務(wù)端工控設(shè)備通過所述第四通信連接向所述客戶端工控設(shè)備發(fā)送opc通訊數(shù)據(jù)包。

在本發(fā)明實(shí)現(xiàn)工控設(shè)備間opc通信的方法的一些實(shí)施例中,還包括:當(dāng)所述服務(wù)端工控設(shè)備與所述客戶端工控設(shè)備之間的通信結(jié)束之后,斷開所述第一通信連接至第四通信連接,以釋放所述服務(wù)端工控設(shè)備的135端口、所述客戶端工控設(shè)備的135端口、所述服務(wù)端動(dòng)態(tài)端口和所述客戶端動(dòng)態(tài)端口。

如圖4所示,在一些實(shí)施例中,在所述生成響應(yīng)數(shù)據(jù)并反饋至所述服務(wù)端工控設(shè)備之前還包括:

s41、當(dāng)通過所述dce/rpc數(shù)據(jù)包屬于bind類型時(shí),確定所述bind類型的數(shù)據(jù)包所對應(yīng)的接口的bind全局唯一標(biāo)識(shí)符;

s42、查詢預(yù)先建立的接口管理字典,以確定是否包括所述bind全局唯一標(biāo)識(shí)符;

s43、如果是,則組bind_ack包以生成響應(yīng)報(bào)文,并在所述響應(yīng)報(bào)文的是否支持接口字段填是;

s44、如果否,則組bind_ack包以生成響應(yīng)報(bào)文,并在所述響應(yīng)報(bào)文的是否支持接口字段填否。

本實(shí)施例中實(shí)現(xiàn)了對bind類型數(shù)據(jù)包的響應(yīng),能夠在判定接收到的數(shù)據(jù)包為bind類型時(shí)根據(jù)獲取的bind類型數(shù)據(jù)包的全局唯一標(biāo)識(shí)符,并通過查詢預(yù)先建立的接口管理字典來確定是否支持opc設(shè)備所發(fā)送的bind類型的數(shù)據(jù)包的請求,如果是則組包為bind_ack包,并在數(shù)據(jù)包的是否支持字段填寫“是”,如果否則組包為bind_ack包,并在數(shù)據(jù)包的是否支持字段填寫“否”。

本實(shí)施例中的,接口管理字典存儲(chǔ)接口信息,所述接口信息至少包括:接口的全局唯一標(biāo)識(shí)符值、接口的類型、接口的引用計(jì)數(shù)、全局唯一標(biāo)識(shí)符常量標(biāo)志、接口對應(yīng)opc版本、接口是否支持標(biāo)志、關(guān)聯(lián)的對象標(biāo)識(shí)符、擁有者的全局唯一標(biāo)識(shí)符、擁有者的全局唯一標(biāo)識(shí)符類型、關(guān)聯(lián)的全局唯一標(biāo)識(shí)符和關(guān)聯(lián)的全局唯一標(biāo)識(shí)符類型中的一種或者多種。

接口管理字典是全局唯一的單根類,在提供opc客戶端和opc服務(wù)器中都有且僅有一個(gè),用于存儲(chǔ)全部的以全局唯一標(biāo)識(shí)符guid(globallyuniqueidentifier)為區(qū)分標(biāo)志的接口信息。opc協(xié)議通過一系列接口提供服務(wù),接口通過128位的全局唯一標(biāo)識(shí)符guid進(jìn)行區(qū)分,是一種由算法生成的二進(jìn)制長度為128位的數(shù)字標(biāo)識(shí)符,在以dce/rpc協(xié)議為基礎(chǔ)的opc協(xié)議中,ipid、uuid同guid都是同樣的數(shù)據(jù)、僅是語言表達(dá)定義不同。

為了識(shí)別和存儲(chǔ)接口信息,建立一個(gè)接口管理字典,接口管理字典中用一個(gè)map結(jié)構(gòu)(在該數(shù)據(jù)結(jié)構(gòu)中,key唯一不重復(fù))存儲(chǔ)接口信息,每一個(gè)接口信息包括:接口的guid值、接口的類型、接口的引用計(jì)數(shù)、guid常量標(biāo)志、接口對應(yīng)opc版本、接口是否支持標(biāo)志、關(guān)聯(lián)的oid、關(guān)聯(lián)的oxid、擁有者的guid、擁有者的guid類型、關(guān)聯(lián)的guid、關(guān)聯(lián)的guid類型。

接口管理字典的功能包括:

存儲(chǔ)dce/rpc及opcda規(guī)范中定義的,涉及opc協(xié)議通訊接口的guid值,以便在進(jìn)行opc協(xié)議通訊過程中識(shí)別接口類型。例如,在收到bind類型數(shù)據(jù)幀的時(shí)候,根據(jù)數(shù)據(jù)幀中abstractsyntax結(jié)構(gòu)的guid,去接口管理字典中查詢接口類型,確定該接口的支持狀態(tài)。

記錄在程序運(yùn)行過程中動(dòng)態(tài)生成的接口信息。例如,iremunknown2接口會(huì)在opc協(xié)議通訊的過程中被用來申請和釋放接口。iremunknown2接口的remqueryinterface方法用來申請接口,調(diào)用此方法時(shí),需向接口管理字典中添加一個(gè)ipid對應(yīng)的接口信息。iremunknown2接口的remrelease方法用來釋放接口,當(dāng)調(diào)用此方法時(shí),需要從本字典中刪除報(bào)文中要?jiǎng)h除ipid對應(yīng)的接口信息。

在request數(shù)據(jù)幀的packetflags的object位為1的情況下,根據(jù)數(shù)據(jù)中objectuuid字段在接口管理字典中查詢對應(yīng)的接口類型,為處理opc數(shù)據(jù)確定接口信息。

如圖5所示,在一些實(shí)施例中,在所述生成響應(yīng)數(shù)據(jù)并反饋至所述服務(wù)端工控設(shè)備之前還包括:

s51、當(dāng)通過所述dce/rpc數(shù)據(jù)包屬于alter類型時(shí),確定所述alter類型的數(shù)據(jù)包所對應(yīng)的接口的alter全局唯一標(biāo)識(shí)符;

s52、查詢預(yù)先建立的接口管理字典,以確定是否包括所述alter全局唯一標(biāo)識(shí)符;

s53、如果是,則組alter_ack包以生成響應(yīng)報(bào)文,并在所述響應(yīng)報(bào)文的是否支持接口字段填是;

s54、如果否,則組alter_ack包以生成響應(yīng)報(bào)文,并在所述響應(yīng)報(bào)文的是否支持接口字段填否。

本實(shí)施例中實(shí)現(xiàn)了對alter類型數(shù)據(jù)包的響應(yīng),能夠在判定接收到的數(shù)據(jù)包為alter類型時(shí)根據(jù)獲取的alter類型數(shù)據(jù)包的全局唯一標(biāo)識(shí)符,并通過查詢預(yù)先建立的接口管理字典來確定是否支持opc設(shè)備所發(fā)送的alter類型的數(shù)據(jù)包的請求,如果是則組包為alter_ack包,并在數(shù)據(jù)包的是否支持字段填寫“是”,如果否則組包為alter_ack包,并在數(shù)據(jù)包的是否支持字段填寫“否”。

如圖6所示,在一些實(shí)施例中,在所述生成響應(yīng)數(shù)據(jù)并反饋至所述服務(wù)端工控設(shè)備之前還包括:

s61、當(dāng)所述dce/rpc數(shù)據(jù)包屬于request類型時(shí),解析所述dce/rpc數(shù)據(jù)包的標(biāo)志位信息以確定所述標(biāo)志位信息的最高位是否為1;

s62、當(dāng)確定所述標(biāo)志位信息的最高位為1時(shí),確定所述dce/rpc數(shù)據(jù)包的報(bào)文頭所包含的全局唯一標(biāo)識(shí)符;

s63、查詢預(yù)先建立的接口管理字典以確定對應(yīng)于所述全局唯一標(biāo)識(shí)符的接口類型;

s64、根據(jù)確定的所述接口類型所對應(yīng)的方法類型處理所述數(shù)據(jù)包所包含的數(shù)據(jù)部分以生成響應(yīng)報(bào)文。

本實(shí)施例中,當(dāng)接收到的數(shù)據(jù)包為request類型時(shí),進(jìn)一步判斷該數(shù)據(jù)包是否對應(yīng)于isystemactivator接口的remotecreateinstance方法(當(dāng)服務(wù)器訪問客戶端時(shí),數(shù)據(jù)包對應(yīng)于ioxidresolver接口的resolveoxid2方法),如果是,則獲取動(dòng)態(tài)端口。

在一些實(shí)施例中,實(shí)現(xiàn)工控設(shè)備間opc通信的方法還包括:在所述服務(wù)端工控設(shè)備與所述客戶端工控設(shè)備之間通信之前建立數(shù)據(jù)存儲(chǔ)解析模型,所述數(shù)據(jù)存儲(chǔ)解析模型包括第一級(jí)存儲(chǔ)解析模型(standardopcserver)、第二級(jí)存儲(chǔ)解析模型(standardopcgroup)和第三級(jí)存儲(chǔ)解析模型(standardopcitem)。

如圖7所示為數(shù)據(jù)存儲(chǔ)解析模型的結(jié)構(gòu)示意圖。

所述第一級(jí)存儲(chǔ)解析模型存儲(chǔ)有opc協(xié)議處理的相關(guān)接口對象,以及對所述第二級(jí)存儲(chǔ)解析模型的增加、刪除、修改、查詢的方法;

所述第二級(jí)存儲(chǔ)解析模型存儲(chǔ)有opc協(xié)議處理的相關(guān)接口對象,以及對所述第三級(jí)存儲(chǔ)解析模型的增加、刪除、修改、查詢的方法;

所述第三級(jí)存儲(chǔ)解析模型為opc協(xié)議中讀寫數(shù)據(jù)的最小單位。

在本實(shí)施例中第二級(jí)存儲(chǔ)解析模型(standardopcgroup)擁有的屬性主要包括:字符串名稱、激活標(biāo)致、客戶端定義的最快的刷新頻率(單位為毫秒)、客戶端句柄、服務(wù)端句柄、死區(qū)參數(shù)、語言標(biāo)記、時(shí)區(qū)數(shù)據(jù)。

standardopcitem作為opc協(xié)議讀寫數(shù)據(jù)的最小單位,擁有的屬性為:字符串名稱、值、時(shí)間戳、數(shù)據(jù)類型、數(shù)據(jù)質(zhì)量、激活標(biāo)志、客戶端句柄、服務(wù)端句柄、訪問權(quán)限、字符串id。

根據(jù)opc協(xié)議通訊,在對象standardopcserver、standardopcgroup中分別創(chuàng)建相關(guān)接口的同名接口對象,為數(shù)據(jù)解析使用,這些接口對象在opcda中給予了接口、輸入?yún)?shù)、輸出參數(shù)定義說明。在非windows系統(tǒng)環(huán)境下,根據(jù)報(bào)文一問一答的形式(客戶端和服務(wù)端通訊的一般形式),分別實(shí)現(xiàn)了他們的方法,一個(gè)方法對應(yīng)四個(gè)函數(shù)。例如,iopcserver的addgroup方法,為了提供客戶端的功能,build+方法+request的函數(shù)為組織請求報(bào)文的函數(shù),process+方法名+response為解析收到響應(yīng)數(shù)據(jù)的函數(shù)。為了提供服務(wù)端的功能,process+方法+request的函數(shù)為解析請求報(bào)文的函數(shù),build+方法名+response為根據(jù)請求生成響應(yīng)數(shù)據(jù)的函數(shù)。

在一些實(shí)施例中,所述opc服務(wù)器中包括地址空間對象模型,所述地址空間對象模型包括層次化地址空間模型和扁平化地址空間模型。

opc服務(wù)器中存儲(chǔ)有一個(gè)standardopcitem(簡稱item)列表,該item列表包含服務(wù)器的全部item,服務(wù)器需要構(gòu)造一個(gè)地址空間,以支持客戶端通過標(biāo)準(zhǔn)的iopcbrowseserveraddressspace接口進(jìn)行瀏覽查詢所有的item。

地址空間的構(gòu)建可以分為兩種類型:層次化地址空間和扁平化地址空間。地址空間對象模型結(jié)構(gòu)主要實(shí)現(xiàn)了把item的字符串id(例如,a.b.c、peoplecount)和item數(shù)據(jù)類型(opc傳輸支持的一些數(shù)據(jù)類型)添加到地址空間對象模型中,地址空間對象模型中包含一個(gè)map和一個(gè)list存儲(chǔ)結(jié)構(gòu)(map中存儲(chǔ)key-value鍵值對,key不允許重復(fù);list中為value序列化數(shù)據(jù),可重復(fù))。map中的key為字符串,元素為子地址空間對象模型的指針,主要用在構(gòu)建層次化地址空間。list結(jié)構(gòu)在兩種地址空間模型中都要使用。

層次化地址空間構(gòu)造的原型是樹,整個(gè)地址空間為一顆倒著的樹,每一個(gè)item的字符串id,為一個(gè)包含或不包含“.”的字符串,如果字符串不包含“.”,則該item信息作為根的葉子,否則,該字符串中包含樹干。例如,item的字符串id為a.b,則a為根上的樹干,b為a樹干上的葉子。樹干是以一個(gè)子地址空間的形式展現(xiàn)的,可以再包含樹干或葉子,但是一個(gè)樹干不能既沒有樹干也沒有葉子。因此,利用循環(huán)遞歸的概念,當(dāng)item的字符串id包含“.”,以“.”作為分隔符,以第一個(gè)“.”前的字符串為key,創(chuàng)建子地址空間對象模型,添加到上一級(jí)地址空間對象模型的map中,并將“.”后的子字符串作為輸入,由剛才創(chuàng)建的子地址空間模型對象調(diào)用,重復(fù)檢測剩下的字符串中是否包含點(diǎn),如果包含點(diǎn),重復(fù)上述的流程,如果不包含點(diǎn),創(chuàng)建子字符串和數(shù)據(jù)類型組成的iteminfostruct,并添加到該地址空間對象模型的list列表中。

扁平化地址空間,直接將item的id作為key,和item的數(shù)據(jù)類型一起組成iteminfostruct,并添加到根地址空間對象模型的list列表中。

在一些實(shí)施例中,實(shí)現(xiàn)工控設(shè)備間opc通信的方法還包括:

在所述服務(wù)端工控設(shè)備與所述客戶端工控設(shè)備之間通信過程中,客戶端工控設(shè)備按照預(yù)設(shè)周期ping所述請求端;

當(dāng)所述客戶端工控設(shè)備連續(xù)三次未接收到所述服務(wù)端工控設(shè)備對ping消息的響應(yīng)時(shí),釋放所述客戶端工控設(shè)備與所述服務(wù)端工控設(shè)備之間的連接所占用的資源。

本實(shí)施例中,opc通訊時(shí),服務(wù)端工控設(shè)備和客戶端工控設(shè)備必須周期性地“ping”對方,以便保證客戶與對象一直處于連接狀態(tài),達(dá)到心跳的效果。根據(jù)ping機(jī)制和ping集合的概念,ping處理器創(chuàng)建對應(yīng)的ping處理線程,通過ioxidresolver接口的complexping和simpleping方法,進(jìn)行連接狀態(tài)的監(jiān)測。根據(jù)ioxidresolver接口的complexping進(jìn)行ping集合的創(chuàng)建(oid添加)和刪除(oid刪除),simpleping方法根據(jù)complexping添加返回的ping集合的id,進(jìn)行每2分鐘一次的數(shù)據(jù)通訊心跳檢測工作(發(fā)送ping報(bào)文,解析響應(yīng)報(bào)文),如果連續(xù)3次ping不成功(不能連接、ping沒有響應(yīng)或ping的返回結(jié)果錯(cuò)誤),則釋放相關(guān)連接上的資源,包括釋放standardopcserver、standardopcgroup、standardopcitem模型,刪除結(jié)構(gòu)管理字典中相關(guān)接口信息,及停止相關(guān)數(shù)據(jù)通訊和ping線程。

需要說明的是,對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作合并,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。

在上述實(shí)施例中,對各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。

另一方面,本發(fā)明實(shí)施例提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)中存儲(chǔ)有一個(gè)或多個(gè)包括執(zhí)行指令的程序,所述執(zhí)行指令能夠被電子設(shè)備(包括但不限于計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)讀取并執(zhí)行,以用于執(zhí)行上述方法實(shí)施例中的相關(guān)步驟,例如:

服務(wù)端工控設(shè)備根據(jù)通過135端口接收到自客戶端工控設(shè)備的連接請求時(shí),建立與所述客戶端工控設(shè)備之間的第一通信連接;

當(dāng)所述服務(wù)端工控設(shè)備通過所述第一通信連接接收自所述客戶端工控設(shè)備的dce/rpc數(shù)據(jù)包不屬于第一預(yù)設(shè)數(shù)據(jù)包時(shí),生成響應(yīng)數(shù)據(jù)并反饋至所述服務(wù)端工控設(shè)備。

另一方面,本發(fā)明實(shí)施例還公開一種電子設(shè)備,其包括:

至少一個(gè)處理器,以及

與所述至少一個(gè)處理器通信連接的存儲(chǔ)器,其中,所述存儲(chǔ)器存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的指令,所述指令被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器能夠執(zhí)行:

服務(wù)端工控設(shè)備根據(jù)通過135端口接收到自客戶端工控設(shè)備的連接請求時(shí),建立與所述客戶端工控設(shè)備之間的第一通信連接;

當(dāng)所述服務(wù)端工控設(shè)備通過所述第一通信連接接收自所述客戶端工控設(shè)備的dce/rpc數(shù)據(jù)包不屬于第一預(yù)設(shè)數(shù)據(jù)包時(shí),生成響應(yīng)數(shù)據(jù)并反饋至所述服務(wù)端工控設(shè)備。

圖8是本申請另一實(shí)施例提供的執(zhí)行實(shí)現(xiàn)工控設(shè)備間opc通信的方法的電子設(shè)備的硬件結(jié)構(gòu)示意圖,如圖8所示,該設(shè)備包括:

一個(gè)或多個(gè)處理器810以及存儲(chǔ)器820,圖8中以一個(gè)處理器810為例。

執(zhí)行實(shí)現(xiàn)工控設(shè)備間opc通信的方法的設(shè)備還可以包括:輸入裝置830和輸出裝置840。

處理器810、存儲(chǔ)器820、輸入裝置830和輸出裝置840可以通過總線或者其他方式連接,圖8中以通過總線連接為例。

存儲(chǔ)器820作為一種非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),可用于存儲(chǔ)非易失性軟件程序、非易失性計(jì)算機(jī)可執(zhí)行程序以及模塊,如本申請實(shí)施例中的實(shí)現(xiàn)工控設(shè)備間opc通信的方法對應(yīng)的程序指令/模塊。處理器810通過運(yùn)行存儲(chǔ)在存儲(chǔ)器820中的非易失性軟件程序、指令以及模塊,從而執(zhí)行服務(wù)器的各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述方法實(shí)施例實(shí)現(xiàn)工控設(shè)備間opc通信的方法。

存儲(chǔ)器820可以包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需要的應(yīng)用程序;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)實(shí)現(xiàn)工控設(shè)備間opc通信的裝置的使用所創(chuàng)建的數(shù)據(jù)等。此外,存儲(chǔ)器820可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他非易失性固態(tài)存儲(chǔ)器件。在一些實(shí)施例中,存儲(chǔ)器820可選包括相對于處理器810遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過網(wǎng)絡(luò)連接至實(shí)現(xiàn)工控設(shè)備間opc通信的裝置。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。

輸入裝置830可接收輸入的數(shù)字或字符信息,以及產(chǎn)生與實(shí)現(xiàn)工控設(shè)備間opc通信的裝置的用戶設(shè)置以及功能控制有關(guān)的信號(hào)。輸出裝置840可包括顯示屏等顯示設(shè)備。

所述一個(gè)或者多個(gè)模塊存儲(chǔ)在所述存儲(chǔ)器820中,當(dāng)被所述一個(gè)或者多個(gè)處理器810執(zhí)行時(shí),執(zhí)行上述任意方法實(shí)施例中的實(shí)現(xiàn)工控設(shè)備間opc通信的方法。

上述產(chǎn)品可執(zhí)行本申請實(shí)施例所提供的方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。未在本實(shí)施例中詳盡描述的技術(shù)細(xì)節(jié),可參見本申請實(shí)施例所提供的方法。

以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。

通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件。基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說對相關(guān)技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。

最后應(yīng)說明的是:以上實(shí)施例僅用以說明本申請的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本申請進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本申請各實(shí)施例技術(shù)方案的精神和范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
扎兰屯市| 泰来县| 盐津县| 田林县| 新巴尔虎左旗| 郯城县| 陕西省| 富顺县| 出国| 黄平县| 平阳县| 商洛市| 贺州市| 元氏县| 宽城| 鸡西市| 常熟市| 彰武县| 静安区| 平罗县| 永平县| 都兰县| 闽清县| 合山市| 长寿区| 裕民县| 琼结县| 阿拉善右旗| 兴业县| 政和县| 县级市| 马公市| 吉木萨尔县| 毕节市| 邯郸县| 巫山县| 巩义市| 车致| 诏安县| 子洲县| 崇阳县|