<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 自動(dòng)抄表系統中可靠性和糾錯能力

自動(dòng)抄表系統中可靠性和糾錯能力

作者: 時(shí)間:2012-03-06 來(lái)源:網(wǎng)絡(luò ) 收藏
本文針對結構,通過(guò)一系列方法來(lái)提高上位機軟件的,從而協(xié)調和下位機(硬件)數據及命令的交互。上位機采用Visual Basic 6.0編程工具,采用MSComm控件實(shí)現與通訊控制器的通訊。

  1幀格式的設計

  要保證數據的正確性和,必須設計一種盡可能避免錯誤出現的幀格式,我們以01H作為幀起始碼(SOH),以04H作為幀結束碼(EOT)。在幀內的數據中也有可能出現01H和04H,必須加以替換以區別幀頭和幀尾。文中以DLE+‘x’來(lái)代替SOH(01H),以DLE+‘y’來(lái)代替EOT(04H)。此時(shí)會(huì )出現一個(gè)問(wèn)題,即如何區分數據區中的DLE與替換后出現的DL E;這就必須對數據DLE(10H)再進(jìn)行替換,以DEL+‘z’來(lái)替換DLE,此時(shí)所有情況的替換結束。這既能很容易識別出一幀數據,又避免了因數據區中出現特殊字符而導致錯誤數據的出現,再結合奇偶校驗,從而進(jìn)一步保證了傳輸數據的。

  對上位機發(fā)送的數據,要先替換后校驗;而對于下位機傳上來(lái)的數據,要先校驗再反替換,這是為了保證上位機和下位機在通訊線(xiàn)路中都不出現特殊字符SOH、EOT和DLE而設計的規定。反替換流程相當于替換流程的逆,在此就不再累述了。

  2串口問(wèn)題

  因為本系統的上位機是通過(guò)RS232轉RS485與下位機進(jìn)行通訊的。所以,串口通訊的可靠性直接關(guān)系到整個(gè)系統的可靠性。而串口的使用借助于Visual Basic 6.0中的MSComm控件。MSComm控件是通過(guò)OnComm事件來(lái)觸發(fā)的,觸發(fā)的時(shí)機由CommEvent的屬性Rthreshold決定。當設定Rthreshold=1時(shí),即緩沖區每接受到1個(gè)字符就引發(fā)一次OnComm事件;當設定Rthreshold=10時(shí),即緩沖區每接收到10個(gè)字符就引發(fā)一次OnComm事件。因考慮到前面的替換問(wèn)題,每一幀的長(cháng)度是無(wú)法預測的,但根據通訊規程可以知道最短幀的長(cháng)度。我們采用最少數據長(cháng)度(沒(méi)有任何替換)作為Rthreshold的值。這雖然可以保證對上傳數據的及時(shí)響應但無(wú)法保證獲得一個(gè)完整的幀。當使用此語(yǔ)句讀串口時(shí)若接收的數據沒(méi)經(jīng)過(guò)任何替換則可接收到完整一幀,否則數據幀不全。解決的方法是在讀串口前加延時(shí)以保證讀入數據完全,至于延時(shí)的處理不建議用循環(huán)語(yǔ)句來(lái)實(shí)現,這將增加調試的難度,最好的方法是調用API函數Sleep:

  Sleep()中時(shí)間以毫秒作為最小時(shí)間單位,a值的選取必須通過(guò)多次調試才能獲得最佳效果。另外,為了防止MSComm控件串行通訊問(wèn)題,在發(fā)送讀串口命令時(shí)通過(guò)啟用定時(shí)器處理程序來(lái)捕獲串口通訊異常。這些方法可以最大程度的減少因通訊方面的問(wèn)題而引發(fā)的錯誤。

  3整體抄表問(wèn)題

  的優(yōu)點(diǎn)在于它既可以對單一用戶(hù)又可以對所有用戶(hù)的水、電、氣三表進(jìn)行讀數而不需人工干預。單一抄表比較簡(jiǎn)單;但在整體抄表過(guò)程中會(huì )出現因連續、快速的讀數導致硬件的采集速度與上位機的讀數速度不匹配,或因串口事件處理函數未結束而又有事件觸發(fā),或線(xiàn)路干擾等一系列問(wèn)題,這些因素都會(huì )影響到整體抄表的穩定性和正確率。由于整體讀數的復雜性,僅通過(guò)增加錯誤處理程序往往無(wú)法達到預期效果。對于本系統,筆者通過(guò)不斷實(shí)踐發(fā)現,在整體讀數程序中引入第二個(gè)延時(shí)和重復讀數功能可以大大提高整體讀數的正確率。

  在發(fā)出讀數命令并正確讀到數據后,必須進(jìn)行短暫的延時(shí),然后再讀下一戶(hù),再延時(shí),以此類(lèi)推直到全部讀完。當對一戶(hù)讀數出錯時(shí),要重復對其讀數幾次,若正確再讀下一戶(hù),否則先調錯誤處理函數,再讀下一戶(hù)。注意:錯誤數據不能寫(xiě)入數據庫,以防結算時(shí)產(chǎn)生問(wèn)題。延時(shí)的引入盡管會(huì )對整體抄表的速度造成一定影響,但考慮到系統的整體性能,以損失一定速度來(lái)?yè)Q取準確性這在絕大多數中是可以接受的。在整體抄表過(guò)程中,“延時(shí)”具有關(guān)鍵的作用,它不但協(xié)調了軟件和硬件之間的問(wèn)題,也協(xié)調了軟件自身的問(wèn)題。

  通過(guò)上述方法,使得整個(gè)系統從細節到整體上都加強了抄表系統的可靠性和對 大多數錯誤情況的避免和處理,從而保證了自動(dòng)抄表系統高性能和高可靠性的要求,這種方 法在實(shí)際應用中收到了良好的效果。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>