瀏覽單個文章
老柏(第四)
Senior Member
 
老柏(第四)的大頭照
 

加入日期: Mar 2012
您的住址: 地球
文章: 1,303
引用:
作者aston
首先你要先了解115200是bps(bits per second),再確認一下你的時間計算公式是否正確。

再來你文章中ASCII的434跟RTU的99是位元?還是位元組?

如果誠如你所說的
434位元(bit)=>54.25位元組(bytes)?
99位元(bit)=>12.375位元組(bytes)?

老實說,我寫這麼多年的Modbus Master & Slave傳送接收程式碼,還沒寫傳送過小數位的bytes啊!

可以教我嗎?

抱歉,我跳太多以致於非內行的人有點難理解,而且我也算錯很多地方
我用台達馬達的MODBUS說明來解釋


我們先看看RTU的第二層(還是第三層)傳輸方式

右邊的數字代表我要傳送的BYTE數,所以我總共要傳送1+1+4+1=7個BYTE
那假設我RTU用8bit、n(沒有檢馬)、2(2bit stop bit)這種模式傳送(這是底層),那每傳送一個byte的話底層要要多少個bit

要11個bit

也就是說我傳送完我要的資料要7*11=77個bit(之前我錯算成9個BYTE所以才會寫99),再來換算成時間77/115200=0.668ms,那再加上前面要等10ms,所以是10.668ms


\\================================
然後來看ASCII

一個字必須兩個位元組來表示,也就是說我必須要34個位元組
假設我用7、E、1(7bit、檢碼偶同位、stop bit 1bit)來傳送

也就是說我每傳送一個位元組要10個bit
34*10=340(我之前算錯成434),換算成時間 340/115200=2.9513ms




這樣算起來ASCII還是比RTU快很多吧(因為ASCII不用等,他是用符號當作起始點)
__________________
[/url]
老柏                 老柏(第二)

老柏(第三)              老柏(第四)
舊 2013-05-01, 12:08 AM #4
回應時引用此文章
老柏(第四)離線中