關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 盲點 [簡明漢英詞典]

盲點 [簡明漢英詞典]

——
作者: 時間:2006-06-14 來源: 收藏
 MODBUS 是采取一問一答的協(xié)議, 如果物理層 ( 硬件層 ) 使用 RS-232 或是 RS-422 因為是 “接收” 與 “發(fā)送” 分離, 因此一般不會發(fā)生傳送遺失問題; 但如使用 RS-485 時, 因為是 “接收” 與 “發(fā)送” 同在一條傳輸線上, 因此容易造成資料遺失.
  造成資料遺失的問題取決主因是 [ Master發(fā)送最后一筆資料后哪時釋放發(fā)送權(quán) ] 問題 ? 根據(jù)標準 MODBUS 規(guī)則是等待 四個 傳輸字符當間格. 舉例來說 在 9600,E,8,1 傳輸率上則必須間格 ( 1.1416ms * 4 ) 既一般說的 4ms 空閑時間.
  但; 實際上有一問題; 如果產(chǎn)品定義只是 MODBUS I/O 這 [空閑問題] 可能可以接受, 因為 CPU 可以有很充分時間等待; 若產(chǎn)品是 人機或是PLC 這4ms可能就會有問題, 當然解決方式可以使用雙CPU來解決, 既是用一顆CPU專門處理傳輸問題. 因此許多人機與 PLC 都是以最后一個字符傳輸完畢來區(qū)隔; 事實證明這種傳輸方式也是有效. 但要讓整體傳輸能縮短空閑時間其實可以在接收MODBUS碼五個以內(nèi) ( 依句柄不同 ) 既能得知總共會接收多少個碼; 因此既可縮短或幾乎不需要 空閑時間 .
  但不管是雙CPU或是單CPU來處理 MODBUS 協(xié)議處理, 想要減低傳送時間耗損, 我們必須在解析MODBUS協(xié)議的工作上充分利用其傳輸特性. 并避開 ”盲點” .
  如下照片, 我們可以用以解說 “盲點” 誤區(qū)
  
  1. “1”是Slave1回復(fù)Master, 在發(fā)送最后一筆資料立即Master 既馬上回復(fù).
  
  2.是 Master 傳送完畢, 被呼叫到的 Slave2 回復(fù)狀況, 這回復(fù)是Slave2 故意延遲一個傳送字符時間.
  
  這是已經(jīng)避開誤區(qū)的做法, 但避開誤區(qū)的理論則為如下 :
  
  1.主機 ( 上位機 如 PC / HMI / PLC ) 有許多傳輸部分處理都是引用高階內(nèi)核去寫, 常見使用 “C語言” 開發(fā). 在這我先聲明不是批評 “C語言 “, 但因為一般上位機很復(fù)雜, 如果沒有一些功力很難用原生匯編語言來寫. 因此 使用者很難自行完全掌握目前工作時序.
  
  2.上位機處理 “傳送 / 接收 “ 都是用 “中斷” 來處理, 也就是對上位機來說 由其 “傳送 / 接收 “ 應(yīng)件完成的 中斷來引發(fā)進一步數(shù)據(jù)處理.
  
  3.由第 ”2” 狀況我們可以得知照片 Slave1 回送后 Master 可以馬上發(fā)送理由. 因為對 Master 而言它確實是完整接收完資料, 其短暫的延時則為其數(shù)據(jù)處理時間.
  
  4.由第 ”2” 狀況我們可以得知照片 Master 送完后 Slave2 必須延時一個字符時間發(fā)送理由. 因為對 Master而言它確實是完整發(fā)送完資料, 對Slave2而言它確實是完整接收完資料, 但如果Slave2馬上將RS485 硬件切入發(fā)送模式并開始發(fā)送, 對 Master 而言其發(fā)送剛結(jié)束也正準備離開 “串移中斷程序” 此時Master并沒放開 RS-485 硬件發(fā)送模式, 這時將會引發(fā) “總線沖突” 此沖突會導(dǎo)致 主機 接收硬件第一時序第一個位無預(yù)期錯誤. 但糟糕的是這會引發(fā)主機 “接收硬件” 開始工作, 而導(dǎo)致錯誤.
  
  5.由上 “4” Slave2為了要避開沖突. Slave2 在接收完 Master 后也靜空一個 “傳送字符時間” 在將 RS-485 由接收轉(zhuǎn)為發(fā)送.



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉