翻譯|使用教程|編輯:王香|2019-01-10 10:40:19.000|閱讀 299 次
概述:在某些情況下,需要將設備協議設計為客戶端應用程序(HMI,SCADA或其他)而非OmniServer完全控制輪詢的位置。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
您可能知道,OmniServer用于從使用“非標準”協議進行通信的設備中檢索信息,例如體重秤,條形碼閱讀器和打印機。 在某些情況下,需要將設備協議設計為客戶端應用程序(HMI,SCADA或其他)而非OmniServer完全控制輪詢的位置。但在您發出下一條消息之前,您如何知道該設備是否仍然連接?
在我們的“OmniServer您知道嗎?”后續的第一篇文章中。博客系列,我們將介紹如何創建所謂的心跳消息,以確認您的設備在發送下一條消息之前正在“收聽”。 對于許多設備,設備在沒有活動的一段時間后“進入睡眠狀態”并不罕見。有時在設備的設置中存在可配置的超時,該超時控制該不活動時段的持續時間,但有時不存在。 許多這樣的設備可以通過發送特定命令或發送不是命令的任何字符或字符序列來“喚醒”。這通常被稱為心跳消息
設備的一致例程輪詢是OmniServer用于確定設備是否可用的機制。如果不允許OmniServer正常控制該輪詢,則無法知道儀器是否已停止通信。
心跳消息可以用作設備的基礎輪詢機制。然后,客戶端使用心跳通知項來標記潛在的通信問題。
在此示例中,我們將設置OmniServer以使用“STATUS”一詞自動輪詢儀器。注意: 這只是一個示例 - 對于您的設備,您需要確認可以使用哪個序列/消息來保持設備喚醒,但不會導致設備出現任何問題。
然后OmniServer將等待“OK”的值返回。同樣,這只是一個示例 - 您將需要一個可以發送到設備的序列/消息,從而產生某種形式的響應或確認。如果沒有任何反饋或儀器響應不正確,Heartbeat通知項將設置為False或Zero。
1、創建一個名為Heartbeat的新OmniServer項,如下面的屏幕截圖所示。確保所有設置都匹配,尤其是“Item should be automatically activated/項目應自動激活”設置:
2、使用以下示例在協議內創建新的OmniServer命令/請求消息。
3、在“常規”選項卡上,輸入以下值。注意通知項目。 只要此特定消息成功完成,此字段中選定的項目將由OmniServer設置為True或One。確保啟用“消息應自動激活”選項以確保即使客戶端應用程序未請求項目也執行消息也很重要:
4、在“Request/請求”選項卡上,輸入以下值。請記住,這只是一個示例。請查看儀器的文檔,查看是否有可以發送的消息來檢索狀態信息:
5、最后,在“響應”選項卡上,輸入以下值。同樣,您的響應可能會有所不同,但關鍵項目最后是{Heartbeat:L}(其中{Heartbeat} 可以是您剛剛創建的項目,或者您可以選擇任何其他整數字段)。
“L”用于Linkage格式樣式,它告訴OmniServer正常讀入數據,但不會將任何數據分配給項目,也不會 期望該項目的任何數據。這對于使此命令/請求消息定期執行而不會導致錯誤至關重要,因為設備未返回該項的值:
6、最后,保存您的協議。
要測試此協議,請在客戶端應用程序中創建一個標記以指向項目Heartbeat。這將激活心跳消息,并持續將項目Heartbeat設置為值1,直到儀器沒有響應或發出除“OK”之外的任何內容作為對請求的響應。因此,任何時候Heartbeat都歸零,你知道出了什么問題。
在上面的實現中,Heartbeat提供了與名為Status的保留OmniServer項類似的功能。但是,使用通知項會增加故障排除功能。
例如, 一旦通信出現問題,Status和Heartbeat都會變為零(或假)。但是,狀態是一個全局項目,基本上意味著“未在協議內某處收到預期通信”。如果您有五百條消息,那么排除哪個消息導致錯誤可能很麻煩。
但是使用上面的通知項(例如Heartbeat),可以說“此消息中未收到預期通信”。因此,您可以使用通知項來準確找出問題所在。
如果您的設備不接受任何命令(如某些條形碼閱讀器和其他設備的情況),那么此方案將無法工作,OmniServer將無法確定設備是否仍然連接,因為這是一個限制協議本身。
你有一個你不太確定的協議嗎?與往常一樣,我們很樂意幫助您對協議文檔進行免費協議審查或回答您可能遇到的問題。
購買TOP Server OPC Server正版授權,請點擊“”喲!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn