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