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

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(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

十一好啊,了解modbus的前輩請(qǐng)進(jìn)。

作者:happystar 欄目:單片機(jī)
十一好啊,了解modbus的前輩請(qǐng)進(jìn)。
各位好啊,我現(xiàn)在做電網(wǎng)的modbus程序,小弟今年剛畢業(yè)上班,有勞大家拉。在modbus中采用RTU幀,
1》協(xié)議定義說在幀完成前有超過1。5個(gè)字符停頓則單片機(jī)(下位機(jī))認(rèn)為下一字節(jié)為新消息....判斷這個(gè)是不是根據(jù)傳輸波特率計(jì)算每個(gè)字符的時(shí)間,然后用定時(shí)器處理啊。本協(xié)議存在著接受超時(shí)問題,比如上位機(jī)判斷10ms即為超時(shí)時(shí)間,這個(gè)也得用定時(shí)器,定時(shí)器是獨(dú)立與CPU的,在一邊接受數(shù)據(jù)一邊判斷2個(gè)定時(shí)器中斷,對(duì)于下位機(jī)寫程序時(shí)怎么來協(xié)調(diào)?我現(xiàn)在越想越郁悶。
2》在CRC校驗(yàn)時(shí),我在網(wǎng)上找了RTU的代碼,大概有2種。
第一種:
uint16 crc16(uint8 *puchMsg, uint16 usDataLen)
{
    uint8 uchCRCHi = 0xFF ; /* 高CRC字節(jié)初始化 */
    uint8 uchCRCLo = 0xFF ; /* 低CRC 字節(jié)初始化 */
    uint32 uIndex ; /* CRC循環(huán)中的索引 */
    while (usDataLen--) /* 傳輸消息緩沖區(qū) */
    {
        uIndex = uchCRCHi ^ *puchMsg++ ; /* 計(jì)算CRC */
        uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ;
        uchCRCLo = auchCRCLo[uIndex] ;
    }
    return (uchCRCHi << 8 | uchCRCLo) ;
}
第二種:(和CRC定義類似)
int mb_crc(BYTE *snd,int num)

{ int i,j;

unsigned int c,crc=0xFFFF

for (i=0;i<num;i ){
c=str[i] & 0x00FF;
crc^=c;

for(j=0,j<8,j )
{ if (crc & 0x0001)

{crc>>=1;crc^=0xA001;}

else crc>>=1

}
我是采用第一CRC種程序,可是發(fā)現(xiàn)校驗(yàn)的結(jié)果和用專門modbus校驗(yàn)碼生成器不一致。請(qǐng)教各位這怎么回事?
我想問問大家這2種寫法有什么不同么?

謝謝大家,祝愿大家開心每一天

2樓: >>參與討論
yixiao2000
關(guān)于Modbus
1>下位機(jī)每接收完一個(gè)字符后,都要重新計(jì)時(shí),判斷是否接收完一個(gè)幀,計(jì)時(shí)可根據(jù)波特率和字符長(zhǎng)度計(jì)算。
2>上位機(jī)每發(fā)出一個(gè)幀后,要開始計(jì)時(shí),超出定時(shí)未收到下位機(jī)響應(yīng)可以重新發(fā)送。計(jì)時(shí)可根據(jù)系統(tǒng)反應(yīng)速度確定

3樓: >>參與討論
yixiao2000
關(guān)于Modbus
你用的CRC校驗(yàn)方法(第一種)實(shí)際上上查表法,因些首先要保證你的表格中的數(shù)據(jù)是正確的,其次程序本身也要注意

4樓: >>參與討論
lsqdesign
d
d

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
求助:如何設(shè)置一個(gè)函數(shù)不被中斷?
pcb打樣/批量:貨倒付款!
電壓\\頻率轉(zhuǎn)換器LM331N
CD4051做多路信號(hào)切換,但要延時(shí)1秒左右,信號(hào)才穩(wěn)定。
用12232做顯示的實(shí)時(shí)時(shí)鐘,碰到的怪問題?
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


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