音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

一個(gè)PC與多MCU的RS485半雙工通訊試驗(yàn)(原創(chuàng)!!!!)

作者:epwwm 欄目:通信技術(shù)
一個(gè)PC與多MCU的RS485半雙工通訊試驗(yàn)(原創(chuàng)!!!!)
近來在編一個(gè)PC作上位機(jī),PIC16F73作下位機(jī)的一主多從系統(tǒng),RS485總線半雙工,PC用VB6,MCU的ASM.

MCU邊有按鍵,LCD顯示,A/D,I2C,等.除串口通訊用中斷外,其余子程序全用查詢(畢竟多機(jī)系通訊時(shí)間第一)
共有5到10條指令,接收來自PC的查詢指令,將A/D結(jié)果,狀態(tài),顯示數(shù)據(jù)送往PC顯示,PC邊用進(jìn)度條顯示A/D值,
要求盡量要實(shí)時(shí)(實(shí)際是不可能真正實(shí)時(shí)),要求最多有32臺(tái)從機(jī)(從機(jī)數(shù)量不定,視實(shí)際而定),也就是說PC要同時(shí)
實(shí)時(shí)顯示從機(jī)狀態(tài),不過可不是一秒更新一次,而要求更新越快越好,要達(dá)到MS級(jí).

   于是,我做了以下實(shí)驗(yàn),MCU暫時(shí)用4M晶振,據(jù)計(jì)算4M晶振下最快的標(biāo)準(zhǔn)波特率是19.2K,就用這個(gè)波特,通訊格式用
1位起始,8位數(shù)據(jù)位,無校驗(yàn),1位地址數(shù)據(jù)識(shí)別,1位停止位,共11位,由此算得1秒內(nèi)最快可傳送19200/11=1745Byte數(shù)據(jù),
其中:
  PC發(fā)命令為6 BYTE格式:  地址+命令+數(shù)據(jù)位1+數(shù)據(jù)位2+數(shù)據(jù)位3+校驗(yàn)和
  MCU回應(yīng)數(shù)據(jù)8 BYTE格式: 地址+數(shù)據(jù)位1+數(shù)據(jù)位2+數(shù)據(jù)位3+數(shù)據(jù)位4+數(shù)據(jù)位5+數(shù)據(jù)位6+校驗(yàn)和

一次PC與MCU握手到成功發(fā)送數(shù)據(jù)共雙向傳數(shù)據(jù)14 BYTE,因此一秒內(nèi)PC與MCU共可以聯(lián)系1745/14=124次,如果有10臺(tái)從機(jī)
,平均一臺(tái)從機(jī)一秒種內(nèi)可以發(fā)更新數(shù)據(jù)給PC機(jī)10次.可以勉強(qiáng)滿足要求.不過以上只是理論計(jì)算,當(dāng)然實(shí)際上是不可能實(shí)現(xiàn)的.

    在實(shí)驗(yàn)中發(fā)現(xiàn)PC機(jī)可不能像MCU一樣可以以u(píng)s級(jí)計(jì)算運(yùn)行時(shí)間,實(shí)際一條指令可能運(yùn)行的時(shí)間也不
能確定,而且定時(shí)的精度只有MS級(jí),延時(shí)子程序也只有MS級(jí),實(shí)際上還達(dá)不到這個(gè)精度,比MS級(jí)要大.

如用執(zhí)行MSCOMM1.OUTPUT="1234"指令發(fā)數(shù)據(jù)后,VB就將其交給操作系統(tǒng)了,實(shí)際上什么時(shí)候完全發(fā)送出了,可不知道,雖然有OnComm事件
但從發(fā)送真正完成到產(chǎn)生OnComm事件估計(jì)也有一定有時(shí)間,接收數(shù)據(jù)也一樣從收到數(shù)據(jù)到產(chǎn)生OnComm事件也有一定有時(shí)間但這個(gè)時(shí)間是多少
就不知道了.

   我在試驗(yàn)中實(shí)際上我測(cè)算,從PC發(fā)出命令,到PC收到MCU回應(yīng)數(shù)據(jù),再發(fā)下一次命令之間的延時(shí)特別嚴(yán)重
理論上: 19200BpS 1000MS/(19200/11)=0.57MS 可以收發(fā)1BYTE數(shù)據(jù),收發(fā)14BYTE要14*0.57=8MS,也就是說只要PC發(fā)出命令延時(shí)8MS,PC就
可以收到MCU的數(shù)據(jù),加上MCU本身回應(yīng)最大延時(shí)約2MS(是MCU的程序本身造成)也只要10MS, 但實(shí)際上VB的程序每秒鐘只能約和MCU聯(lián)系17次左右
平均58MS才能收發(fā)一次,與理論上的10MS相差很遠(yuǎn).到底是什么原因?還是RS485總線換向需要時(shí)間?我估計(jì)大多是PC機(jī)的指令延時(shí)引起的,但不論
我怎樣精簡(jiǎn)VB指令,怎樣也無法縮短延時(shí),難道這是VB的根本,不知用C或deplhi會(huì)不會(huì)這樣?

   繼續(xù)實(shí)驗(yàn)中,大家一起交流交流!      



                        待續(xù)............

2樓: >>參與討論
epwwm
繼續(xù)...........
在VB6中弄了兩個(gè)計(jì)時(shí)器,一個(gè)interval設(shè)為1MS,事件設(shè)為y=y+1
一個(gè)interval設(shè)為1000MS,事件為顯示y的數(shù)值,
兩個(gè)計(jì)時(shí)器同時(shí)啟動(dòng),每隔一秒鐘就顯示y數(shù)值,理論上應(yīng)該每秒y的值加上一
1000,但實(shí)際上只是每秒加上100,足足差了十倍.


3樓: >>參與討論
epwwm
發(fā)現(xiàn)主要原因。。
原來是 MSComm1.Settings = "19200,M,8,1"和MSComm1.Settings = "19200,S,8,1"這兩句設(shè)定通訊格式的語句延時(shí)太大了.
由于是一主多從,因此每發(fā)一次命令都要加地址號(hào),因此要頻繁地更改通訊格式,但一加上上述語句,延時(shí)就大了最小三倍,大大拖慢了通訊速度.

各位是用何辦法解決上述問題的??????


4樓: >>參與討論
chunyang
道理上講,PC平臺(tái)頻繁的串行通訊是可以的
但VB的控制確實(shí)不好,一般多用C、Dephi等,關(guān)鍵是多任務(wù)的調(diào)度機(jī)制問題。
能詳細(xì)的記錄自己的心得是好習(xí)慣,加酷以示鼓勵(lì)并吸引更多的眼球。

5樓: >>參與討論
dengm
PC發(fā)送數(shù)據(jù)量不大,可用 7 bits
MSComm1.Settings = "19200,E,8,1
  發(fā)送:
    BIT 0 TO BIT 6 為數(shù)據(jù), bit7 為0 or 1
     

6樓: >>參與討論
epwwm
辦法是好!
可惜,我要發(fā)送和接收的是二進(jìn)制數(shù)0~255,都有可能!

7樓: >>參與討論
ocon
以前做過,用VB4,調(diào)用聞都死的底層API可以高精度定時(shí)高速通訊
 

* - 本貼最后修改時(shí)間:2005-12-19 13:10:06 修改者:ocon

8樓: >>參與討論
chunyang
不錯(cuò),VB是可以實(shí)現(xiàn)
但確實(shí)要注意方法。以前見過有人用VB寫過串口調(diào)試軟件,性能還是不錯(cuò)的。

9樓: >>參與討論
epwwm
決定用PComm通訊庫!!!
然后設(shè)定"19200,8,E,1",定義BIT 0 TO BIT 6 為數(shù)據(jù), bit7 為奇偶調(diào)整位,
對(duì)于128以上的數(shù),只好用兩字節(jié)傳了.

經(jīng)過試驗(yàn),通訊可以達(dá)到約1300BYTE/秒,快了很多,但和理論的1745BYET/秒還有一定的差距,努力中!!!!!


10樓: >>參與討論
epwwm
又有新問題了!測(cè)試程序運(yùn)行了一定時(shí)間,機(jī)器就致命錯(cuò)誤了!!
而且是嚴(yán)重錯(cuò)誤,藍(lán)屏,機(jī)器馬上自動(dòng)重啟了.

11樓: >>參與討論
computer00
速度慢應(yīng)該是操作系統(tǒng)調(diào)度的原因吧。
我試過用VB寫并口輸出方波,發(fā)現(xiàn)波形是一段一段的(就是有一段時(shí)間無波形),
估計(jì)是windows的任務(wù)調(diào)度,在這段時(shí)間內(nèi)運(yùn)行其它任務(wù)去了。

12樓: >>參與討論
epwwm
當(dāng)然與系統(tǒng)有關(guān),不過我的可是在系統(tǒng)足夠快的情況下出現(xiàn)的!
應(yīng)該不是操作系的問題,如果不設(shè)定MSComm1.Settings = "19200,M,8,1"和MSComm1.Settings = "19200,S,8,1"就可以很快了.

13樓: >>參與討論
epwwm
最后將波特率提高到230.4K了,通訊訊速度只比19.2K提高了一倍.
達(dá)到2000BYTE/秒左右,但波特率已提高了12倍!!!,嚴(yán)重不成比例!!!

又測(cè)試到如果脫離VB開發(fā)環(huán)境,生成EXE后直接運(yùn)行,可以提高到3000BYTE/秒左右.隨同時(shí)運(yùn)行的其他軟件的多少有不同的變化.






14樓: >>參與討論
后學(xué)
PC連ms都達(dá)不到,10ms一個(gè)時(shí)間片就不錯(cuò)了
 
15樓: >>參與討論
robertchai
vc寫動(dòng)態(tài)庫,用vb調(diào)用
vc

16樓: >>參與討論
hqgboy
tC....
 
17樓: >>參與討論
zhang_2000
發(fā)送不可顯示的單字
發(fā)送不可顯示的單字 如發(fā)送ASCII碼值為3的數(shù)    MSCOM.OUTPUT= chr(3)

18樓: >>參與討論
epwwm
現(xiàn)在想用USB轉(zhuǎn)串IC:FT232BM,但不用虛擬串口驅(qū)動(dòng).
用FTDI Direct Driver,不再經(jīng)串口,直接用FTDI的DLL控制收發(fā),速度應(yīng)該會(huì)快些.(因?yàn)椴唤?jīng)COM了,由DLL--API---系統(tǒng)硬件了),待現(xiàn)在的程序大體完成了就試試!!!

   不知道各位有這樣用過嗎?

19樓: >>參與討論
etiller
從8位數(shù)據(jù)改成7位數(shù)據(jù)沒什么用處
多一位數(shù)據(jù)在總體效率上根本沒影響,你的查詢速度慢我覺得還是跟vb有關(guān)系的,以前用過vb做這種東西,效率卻是令人堪憂,現(xiàn)在我用vc+api做串行通信,速度比以前快得多,效果非常理想,我pc機(jī)下面能帶100個(gè)設(shè)備左右

20樓: >>參與討論
epwwm
用7位數(shù)據(jù)并不是因?yàn)樾蕟栴}.
我是用第7位為作調(diào)整奇偶校驗(yàn)第9位,為1或0,由此產(chǎn)生地址幀或數(shù)據(jù)幀.

不知你所帶的100臺(tái)設(shè)備所什么設(shè)備,每臺(tái)設(shè)備可以每秒響應(yīng)多少次?

我還準(zhǔn)備用VB+API測(cè)試一下看能快多少.

21樓: >>參與討論
像見
有沒有測(cè)試,它最遠(yuǎn)能多少米可以正常通訊呢
 
22樓: >>參與討論
ye77
我做過類似的產(chǎn)品
通迅距離1000米沒問題,不過這與RS485芯片有關(guān)系嘍.

23樓: >>參與討論
epwwm
距離沒有測(cè)試過,反正是越遠(yuǎn)速率肯定要減小的了.
 
24樓: >>參與討論
mtexpo
要使用DAISY-CHAIN 方式 or tcp/ip
這種應(yīng)用 不能 用半雙工 要使用DAISY-CHAIN 方式 把所有子機(jī) 串接,子機(jī) 沒有數(shù)據(jù)時(shí) 讓 后面子機(jī) by-pass 直接發(fā)送數(shù)據(jù),只是監(jiān)聽數(shù)據(jù)封包。
若是自己有 數(shù)據(jù) 要發(fā)送時(shí),堅(jiān)聽后面資料 當(dāng)封包結(jié)束時(shí),切換成自己發(fā)送數(shù)據(jù),但是把后面子機(jī)傳送過來資料存在自己緩沖區(qū)中 接在自己資料后面?zhèn)魉停?br>當(dāng)然 若是依 數(shù)據(jù)量規(guī)劃是不會(huì)擠爆緩沖區(qū)。
若是要求實(shí)時(shí)性更高 ,就不宜 走 rs232/rs485,換tcp/ip 則pc 同時(shí)開多少PORT 都沒有問題


參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)教MC1374?
那里有RS編碼的資料?
實(shí)用資料--電子通信產(chǎn)品的硬件可靠性設(shè)計(jì)
如何讓G網(wǎng)手機(jī)顯示網(wǎng)絡(luò)監(jiān)測(cè)及鎖頻功能
無源光耦
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)