【Software Toolbox教程】如何在OmniServer中設置心跳消息

下載TOP Server OPC Server最新版本

您可能知道,OmniServer用於從使用“非標準”協議進行通信的設備中檢索信息,例如體重秤,條形碼閱讀器和打印機。 在某些情況下,需要將設備協議設計爲客戶端應用程序(HMI,SCADA或其他)而非OmniServer完全控制輪詢的位置。但在您發出下一條消息之前,您如何知道該設備是否仍然連接?

在我們的“OmniServer您知道嗎?”後續的第一篇文章中。博客系列,我們將介紹如何創建所謂的心跳消息,以確認您的設備在發送下一條消息之前正在“收聽”。 對於許多設備,設備在沒有活動的一段時間後“進入睡眠狀態”並不罕見。有時在設備的設置中存在可配置的超時,該超時控制該不活動時段的持續時間,但有時不存在。 許多這樣的設備可以通過發送特定命令或發送不是命令的任何字符或字符序列來“喚醒”。這通常被稱爲心跳消息

我爲什麼要這樣做?

設備的一致例程輪詢是OmniServer用於確定設備是否可用的機制。如果不允許OmniServer正常控制該輪詢,則無法知道儀器是否已停止通信。

心跳消息可以用作設備的基礎輪詢機制。然後,客戶端使用心跳通知項來標記潛在的通信問題。

我怎樣才能做到這一點?

在此示例中,我們將設置OmniServer以使用“STATUS”一詞自動輪詢儀器。注意: 這只是一個示例 - 對於您的設備,您需要確認可以使用哪個序列/消息來保持設備喚醒,但不會導致設備出現任何問題。

然後OmniServer將等待“OK”的值返回。同樣,這只是一個示例 - 您將需要一個可以發送到設備的序列/消息,從而產生某種形式的響應或確認。如果沒有任何反饋或儀器響應不正確,Heartbeat通知項將設置爲False或Zero。

1、創建一個名爲Heartbeat的新OmniServer項,如下面的屏幕截圖所示。確保所有設置都匹配,尤其是“Item should be automatically activated/項目應自動激活”設置:

ComponentOne

2、使用以下示例在協議內創建新的OmniServer命令/請求消息。

3、在“常規”選項卡上,輸入以下值。注意通知項目。 只要此特定消息成功完成,此字段中選定的項目將由OmniServer設置爲True或One。確保啓用“消息應自動激活”選項以確保即使客戶端應用程序未請求項目也執行消息也很重要:

ComponentOne

4、在“Request/請求”選項卡上,輸入以下值。請記住,這只是一個示例。請查看儀器的文檔,查看是否有可以發送的消息來檢索狀態信息:

ComponentOne

5、最後,在“響應”選項卡上,輸入以下值。同樣,您的響應可能會有所不同,但關鍵項目最後是{Heartbeat:L}(其中{Heartbeat} 可以是您剛剛創建的項目,或者您可以選擇任何其他整數字段)。

“L”用於Linkage格式樣式,它告訴OmniServer正常讀入數據,但不會將任何數據分配給項目,也不會 期望該項目的任何數據。這對於使此命令/請求消息定期執行而不會導致錯誤至關重要,因爲設備未返回該項的值:

ComponentOne

6、最後,保存您的協議。

要測試此協議,請在客戶端應用程序中創建一個標記以指向項目Heartbeat。這將激活心跳消息,並持續將項目Heartbeat設置爲值1,直到儀器沒有響應或發出除“OK”之外的任何內容作爲對請求的響應。因此,任何時候Heartbeat都歸零,你知道出了什麼問題。

Heartbeat消息可以用於其他事情嗎?

在上面的實現中,Heartbeat提供了與名爲Status的保留OmniServer項類似的功能。但是,使用通知項會增加故障排除功能。

例如, 一旦通信出現問題,Status和Heartbeat都會變爲零(或假)。但是,狀態是一個全局項目,基本上意味着“未在協議內某處收到預期通信”。如果您有五百條消息,那麼排除哪個消息導致錯誤可能很麻煩。

但是使用上面的通知項(例如Heartbeat),可以說“此消息中未收到預期通信”。因此,您可以使用通知項來準確找出問題所在。

Heartbeat消息是否有任何限制?

如果您的設備不接受任何命令(如某些條形碼閱讀器和其他設備的情況),那麼此方案將無法工作,OmniServer將無法確定設備是否仍然連接,因爲這是一個限制協議本身。

我在哪裏可以獲得更多信息?

你有一個你不太確定的協議嗎?與往常一樣,我們很樂意幫助您對協議文檔進行免費協議審查或回答您可能遇到的問題。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章