最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

通訊協(xié)議053——全網(wǎng)獨有的OPC HDA知識一之接口(八)IOPCHDA_AsyncRead

2023-08-29 09:46 作者:zhouwl72  | 我要投稿

本文簡單介紹OPC HDA規(guī)范的IOPCHDA_AsyncRead(可選)接口方法,更多通信資源請登錄網(wǎng)信智匯(wangxinzhihui.com)。

異步操作允許客戶端向服務(wù)器發(fā)送請求,而無需等待服務(wù)器填寫請求并返回數(shù)據(jù)。每個操作都有一個關(guān)聯(lián)的事務(wù)ID(由客戶端創(chuàng)建),該ID在回調(diào)到客戶端期間與數(shù)據(jù)一起返回。OPC HDA服務(wù)器的異步方法是使用IConnectionPoint實現(xiàn)的。這允許客戶端建立不同的回調(diào)來處理不同類型的數(shù)據(jù)傳輸。雖然本文檔后面提供了一些關(guān)于IConnectionPoint的信息,但建議閱讀Microsoft文檔。

預(yù)計某些服務(wù)器將不支持此處指定的所有異步接口。但是,所有服務(wù)器都必須支持IConnectPointContainer,并且任何支持任何異步接口的服務(wù)器都必須支撐IOPCHDA_DataCallback ConnectionPoint。如果服務(wù)器不支持特定接口,則無需實現(xiàn)向客戶端的IOPCHDA_Data_callback對象中的匹配回調(diào)例程發(fā)送回調(diào)的方法。

如果需要,客戶端提供一個TransactionID來區(qū)分一個調(diào)用和另一個調(diào)用。由于對異步調(diào)用的響應(yīng)實際上可以在調(diào)用完成之前到達(dá),因此客戶端應(yīng)該在進(jìn)行調(diào)用之前存儲此TransactionID,這樣回調(diào)例程就可以訪問TransactionID。相反,CancelID由服務(wù)器生成,如果客戶端希望取消異步請求,則用于取消異步請求。

?

1)HRESULT ?ReadRaw (dwTransactionID, htStartTime, htEndTime, dwNumValues, bBounds, dwNumItems, phServer, pdwCancelID, ppErrors)

此函數(shù)從歷史數(shù)據(jù)庫中讀取一個或多個項目的指定時域的值、質(zhì)量和時間戳。結(jié)果通過客戶端的IOPCHDA_DataCallback::OnReadComplete方法返回。

當(dāng)bBounds為TRUE時,將返回時域的邊界值。此功能旨在供希望在歷史記錄中保存實際數(shù)據(jù)的客戶使用。實際數(shù)據(jù)可以被壓縮,或者可以是為項目收集的所有數(shù)據(jù),這取決于歷史記錄和保存項目值時調(diào)用的存儲規(guī)則。提供可選的邊界值以允許客戶端在對顯示器上的實際數(shù)據(jù)進(jìn)行趨勢分析時對開始和結(jié)束時間的值進(jìn)行插值。

?

2)HRESULT ?AdviseRaw(dwTransactionID, htStartTime, ftUpdateInterval, dwNumItems, phServer, pdwCancelID, ppErrors)

此函數(shù)在一個或多個項目的更新間隔從指定的開始時間讀取歷史數(shù)據(jù)庫中的值、質(zhì)量和時間戳。結(jié)果通過客戶端的IOPCHDA_DataCallback::OnDataChange方法返回。這是接口上的一個可選方法。

請求的時域由htStartTime和htEndTime定義。如果htEndTime小于htStartTime,則應(yīng)以相反的順序返回數(shù)據(jù),后面的數(shù)據(jù)優(yōu)先。與同步方法不同的是,如果dwNumValues為非零,則函數(shù)將繼續(xù)以dwNumValue大小的塊發(fā)送數(shù)據(jù),直到發(fā)送完所有請求的數(shù)據(jù)為止。CancelID可用于取消請求。

回調(diào)應(yīng)包含請求中所有ItemID的數(shù)據(jù),但返回FAILED錯誤代碼的ItemID除外。

請參閱IOPCHDA_SyncRead:ReadRaw上的討論,了解服務(wù)器在各種情況下應(yīng)向客戶端返回的內(nèi)容。

?

3)HRESULT ?ReadProcessed (dwTransactionID, htStartTime, htEndTime, ftResampleInterval, dwNumItems, phServer, haAggregate, pdwCancelID, ppErrors)

此函數(shù)根據(jù)歷史數(shù)據(jù)庫中一個或多個項目的指定時域的數(shù)據(jù)計算聚合值、質(zhì)量和時間戳。結(jié)果通過客戶端的IOPCHDA_DataCallback::OnReadComplete方法返回。這是接口上的一個可選方法。

此功能用于在客戶端軟件可用時使用新數(shù)據(jù)更新客戶端軟件;例如周期性地用新數(shù)據(jù)更新趨勢。

該請求將針對從htStartTime到未來的所有數(shù)據(jù),因為它是以ftUpdateInterval指定的速率收集和報告的。報告將繼續(xù),直到請求被取消。在指定當(dāng)前之前的開始時間時應(yīng)注意,因為已經(jīng)可用的數(shù)據(jù)將被無限制地返回,每個響應(yīng)中都有相當(dāng)于ftUpdateInterval的數(shù)據(jù)。一旦發(fā)送了所有已經(jīng)收集的數(shù)據(jù),就會為每個ftUpdateInterval發(fā)送新的數(shù)據(jù)。

如果沒有新數(shù)據(jù),服務(wù)器仍應(yīng)發(fā)送一個響應(yīng),其中每個項目都有一個條目,對于沒有數(shù)據(jù)的任何項目,dwCount為零,ppErrors代碼為OPC_S_NODATA。通過這種方式,客戶端可以確保間隔已被處理。

此函數(shù)使用ftUpdateInterval來限制數(shù)據(jù)返回率。

通知中不會標(biāo)識任何注釋。

請參閱IOPCHDA_SyncRead:ReadRaw上的討論,了解服務(wù)器在各種情況下應(yīng)向客戶端返回的內(nèi)容。

?

4)HRESULT ?AdviseProcessed (dwTransactionID, htStartTime, ftResampleInterval, dwNumItems, phServer, haAggregate, dwNumIntervals, pdwCancelID, ppErrors)

該方法在標(biāo)準(zhǔn)的v1.0和v1.1之間進(jìn)行了更改,以將haAggregate作為DWORD而非ENUM傳遞,從而允許供應(yīng)商指定自己的聚合。使用該標(biāo)準(zhǔn)v1.0構(gòu)建的服務(wù)器和客戶端將與使用v1.1構(gòu)建的服務(wù)器或客戶端協(xié)同工作,但v1.0客戶端可能與返回供應(yīng)商指定聚合的v1.1服務(wù)器不兼容。

此函數(shù)從一個或多個項目的指定開始時間間隔計算歷史數(shù)據(jù)庫中的聚合值、質(zhì)量和時間戳。結(jié)果通過客戶端的IOPCHDA_DataCallback::OnDataChange方法返回。這是接口上的一個可選方法。

此函數(shù)根據(jù)歷史數(shù)據(jù)庫中一個或多個項目的指定時域的數(shù)據(jù)計算聚合值、質(zhì)量和時間戳。時域被劃分為持續(xù)時間為ftResampleInterval的子區(qū)間。通過使用下一個ftResampleInterval中的數(shù)據(jù),為以htStartTime開始的每個子區(qū)間計算指定的haAggregate。

此函數(shù)旨在提供相對于重采樣間隔計算的值。例如,當(dāng)ftResampleInterval為1小時時,此函數(shù)可以為指定時域內(nèi)的每個項目提供每小時統(tǒng)計信息,如Maximum、Minimum、Average等。

請求的域由htStartTime、htEndTime和htResampleInterval定義。如果htStartTime或htEndTime是以字符串(相對)格式給定的,則返回的值應(yīng)為服務(wù)器將該值轉(zhuǎn)換為的FILETIME。必須指定這三個。如果htEndTime小于htStartTime,則應(yīng)以相反的順序返回數(shù)據(jù),后面的數(shù)據(jù)優(yōu)先。

對于MinimumActualTime和MaximumActualTime,如果一個子區(qū)間內(nèi)存在多個值實例,則返回的值實例(時間戳)取決于服務(wù)器。在任何情況下,服務(wù)器可以設(shè)置OPCHDA_EXTRADATA質(zhì)量標(biāo)志,以使呼叫者知道存在具有該值的其他時間戳。

如果htResampleInterval為0,則服務(wù)器應(yīng)為整個時間范圍創(chuàng)建一個聚合值。這允許在長時間內(nèi)進(jìn)行聚合。

請參閱IOPCHDA_SyncRead:ReadProcessed上的討論,了解服務(wù)器在各種情況下應(yīng)向客戶端返回的內(nèi)容。

?

5)HRESULT ?ReadAtTime (dwTransactionID, dwNumTimeStamps, ftTimeStamps, dwNumItems, phServer, pdwCancelID, ppErrors)

此函數(shù)從歷史數(shù)據(jù)庫中讀取一個或多個項目的指定時間戳的值和質(zhì)量。此函數(shù)旨在提供與具有已知時間戳的其他值相關(guān)的值。例如,收集實驗室樣本時傳感器的值。結(jié)果通過客戶端的IOPCHDA_DataCallback::OnReadComplete方法返回。這是接口上的一個可選方法。

當(dāng)指定的時間戳不存在值時,應(yīng)從周圍的值中插入一個值,以表示指定時間戳的值。

OPCHDA_ITEM結(jié)構(gòu)將在haAggregate字段中返回OPCHDA_NOAGGREGATE。

如果找到指定時間戳的值,服務(wù)器將以質(zhì)量返回OPCHDA_RAW。如果該值是根據(jù)周圍的值進(jìn)行插值的,則服務(wù)器將以質(zhì)量返回OPCHDA_interpolated。

?

6)HRESULT ?ReadModified (dwTransactionID, htStartTime, htEndTime, dwNumValues, dwNumItems, phServer, pdwCancelID, ppErrors)

此函數(shù)從歷史數(shù)據(jù)庫中讀取一個或多個項目的指定時域的值、質(zhì)量、時間戳、用戶ID和修改時間戳。結(jié)果通過客戶端的IOPCHDA_DataCallback::OnReadModifiedComplete方法返回。此功能的目的是讀取已修改/替換的歷史記錄中的值。如果ReadRaw、ReadProcessed或ReadAtTime返回的質(zhì)量為OPCHDA_EXTRADATA,表示存在被取代的值,則此函數(shù)將允許您查看被取代的那些值。此函數(shù)只讀取已修改/替換或刪除的值。這是接口上的一個可選方法。

?

7)HRESULT ?ReadAttribute (dwTransactionID, htStartTime, htEndTime, hServer, dwNumAttributes, dwAttributeIDs, pdwCancelID, ppErrors)

此函數(shù)從歷史數(shù)據(jù)庫中讀取項目指定時域的屬性值和時間戳。結(jié)果通過客戶端的IOPCHDA_DataCallback::OnReadAttributeComplete方法返回。這是接口上的一個可選方法。

此函數(shù)從歷史數(shù)據(jù)庫中讀取一個或多個項目的指定時域的修改值、質(zhì)量、時間戳、用戶ID和時間戳。

此函數(shù)的目的是讀取已修改/替換的歷史記錄中的值(返回的值的質(zhì)量為OPCHDA_EXTRADATA,表示該項/時間戳還有其他已被替換的值)。

請求的時域由htStartTime和htEndTime定義。如果htEndTime小于htStartTime,則應(yīng)以相反的順序返回數(shù)據(jù),后面的數(shù)據(jù)優(yōu)先。與同步方法不同的是,如果dwNumValues為非零,則函數(shù)將繼續(xù)以dwNumValue大小的塊發(fā)送數(shù)據(jù),直到發(fā)送完所有請求的數(shù)據(jù)為止。CancelID可用于取消請求。

如果一個值被修改了多次,則會返回該時間的所有值。這意味著時間戳可以多次出現(xiàn)在數(shù)組中。具有相同時間戳的返回值的順序應(yīng)該是從最近修改值到最舊修改值。它是保留多次修改還是只保留最近的修改,這取決于服務(wù)器。

在異步ReadModified中,與同步不同,如果指定了所有三個參數(shù)(htStartTime、htEndTime和dwNumValues),則函數(shù)將繼續(xù)以dwNumValue大小的塊發(fā)送數(shù)據(jù),直到發(fā)送完所有請求的數(shù)據(jù)??捎糜谌∠埱蟮腃ancelID。

?

8)HRESULT ?Cancel(dwCancelID)

此功能取消未完成的操作。實際實現(xiàn)是特定于服務(wù)器的,但服務(wù)器將通過客戶端的IOPCHDA_Data_Callback::OnCancelComplete方法進(jìn)行響應(yīng),除非調(diào)用返回FAILED錯誤代碼。

此函數(shù)從歷史數(shù)據(jù)庫中讀取項目指定時域的屬性值和時間戳。

未完待續(xù)。更多通信資源請登錄網(wǎng)信智匯(wangxinzhihui.com)。


通訊協(xié)議053——全網(wǎng)獨有的OPC HDA知識一之接口(八)IOPCHDA_AsyncRead的評論 (共 條)

分享到微博請遵守國家法律
澄江县| 廉江市| 游戏| 镇赉县| 浦北县| 吉隆县| 马关县| 分宜县| 白城市| 肇源县| 凉山| 阳信县| 小金县| 麟游县| 榆中县| 武宁县| 广宗县| 江永县| 牡丹江市| 临潭县| 湖北省| 清镇市| 乐安县| 抚顺市| 龙游县| 海伦市| 临洮县| 通渭县| 波密县| 洱源县| 嵩明县| 特克斯县| 盐城市| 临洮县| 乌鲁木齐市| 门源| 会泽县| 东莞市| 定兴县| 巴马| 静海县|