亚洲人成人无码.WWW石榴,亚洲AV综合日韩精品久久,亚洲AV无码专区国产乱码不卡,日本在线一区二区三区,蜜桃MV在线播放免费观看网站
精密電阻
NEWS

自己編寫(xiě)MODBUS協(xié)議代碼時(shí),坑坑洼洼

早在2008年左右,我就使用Modbus協(xié)議與產(chǎn)品中的其他設(shè)備進(jìn)行通信。

請(qǐng)記住,第一個(gè)是智能電動(dòng)機(jī)保護(hù)器,它充當(dāng)Modbus從站并與Modbus主站設(shè)備通信。

這么多年來(lái),一直沒(méi)有使用開(kāi)源的Modbus協(xié)議代碼,但是我自己編寫(xiě)的Modbus協(xié)議代碼一直在不斷優(yōu)化,發(fā)現(xiàn)并解決了問(wèn)題。

自己編寫(xiě)的代碼更易于使用。

可以針對(duì)不同平臺(tái)優(yōu)化該應(yīng)用程序,以最大化處理器的性能。

在此期間,我踩了一些坑,現(xiàn)在我將得出一些結(jié)論:接收到串行端口數(shù)據(jù)后,將重新使用從通過(guò)IO端口接收數(shù)據(jù)的時(shí)間間隔。

發(fā)送后切換接收的延遲時(shí)間。

如上圖所示,Td根據(jù)Modbus協(xié)議的規(guī)定,在接收到數(shù)據(jù)之后,發(fā)送之前必須有3.5個(gè)字符的間隔。

如果波特率為9600bps,8個(gè)數(shù)據(jù)位,1個(gè)起始位,1個(gè)停止位且沒(méi)有奇偶校驗(yàn)位,則1個(gè)字符為10位(對(duì)應(yīng)于1.04ms)和3.5個(gè)字符(對(duì)應(yīng)于3.5ms)。

考慮到總線上的電容對(duì)傳輸延遲的影響,建議在發(fā)送1.7個(gè)字符的數(shù)據(jù)后啟用接收。

這次可能會(huì)犯一些錯(cuò)誤,例如:在發(fā)送完最后一個(gè)字節(jié)后的發(fā)送完成中斷中,直接控制IO端口以使能485芯片的接收。

眾所周知,由于電容器引起的信號(hào)延遲,串口數(shù)據(jù)沒(méi)有完全發(fā)送到總線,并且485芯片被設(shè)置為接收狀態(tài),導(dǎo)致最后幾位數(shù)據(jù)錯(cuò)誤;不能正確理解傳輸完成中斷和傳輸緩沖區(qū)清空中斷。

傳輸完成中斷之間的區(qū)別通常是指串行端口數(shù)據(jù)已從移位寄存器中的端口發(fā)送出去。

但這并不意味著它已經(jīng)發(fā)送到RS485總線。

從MCU的IO端口到RS485總線,還必須考慮隔離光電耦合器,電容器和RS485芯片的延遲。

發(fā)送緩沖區(qū)為空的中斷意味著緩沖區(qū)位置已騰空,數(shù)據(jù)可以被緩沖。

此時(shí),最后的數(shù)據(jù)可以在移位寄存器中按順序移出到IO端口。

此時(shí),RS485芯片被設(shè)置為接收。

數(shù)據(jù)仍在不斷變化。

因此,有必要弄清楚所選擇的中斷是發(fā)送完成中斷還是緩沖區(qū)空中斷。

在發(fā)送中斷中,它不能切換為立即接收,因此應(yīng)延遲一段時(shí)間。

在中斷中,如果判斷為最后一個(gè)字節(jié),則延遲為1.7ms,并且將RS485設(shè)置為接收。

定時(shí)器不應(yīng)該延時(shí)啟動(dòng),定時(shí)器資源是非常寶貴的,它應(yīng)該由大約100us的定時(shí)器中斷中的變量來(lái)計(jì)數(shù),大約需要1.7ms的延時(shí); MODBUS從站設(shè)備將響應(yīng)多長(zhǎng)時(shí)間? Modbus是一種問(wèn)答式通信。

主設(shè)備發(fā)送數(shù)據(jù)后,從設(shè)備將響應(yīng)。

根據(jù)Modbus協(xié)議,從站在3.5個(gè)字符后做出響應(yīng)是合法的。

不同的傳感器具有不同的響應(yīng)時(shí)間。

一些不良的傳感器可能要到幾十毫秒后才會(huì)響應(yīng),而有些傳感器會(huì)在3.5ms左右立即響應(yīng)。

有些甚至沒(méi)有遵循Modbus協(xié)議,因此在3.5ms之前做出了響應(yīng)。

這要求主設(shè)備在啟用RS485接收后立即進(jìn)入接收狀態(tài)。

如果使用串行端口中斷接收,則應(yīng)注意中斷操作是否與主程序有關(guān),以及中斷操作是否會(huì)影響接收。

每個(gè)串行端口數(shù)據(jù)之間的時(shí)間間隔Modbus根據(jù)數(shù)據(jù)之間的時(shí)間間隔判斷幀消息的結(jié)束。

必須確保幀消息中前后數(shù)據(jù)之間的間隔不超過(guò)3.5個(gè)字符。

通常在發(fā)送中斷期間發(fā)送數(shù)據(jù)。

為了確保數(shù)據(jù)的完整性和相互排斥的數(shù)據(jù)訪問(wèn),有些人喜歡關(guān)閉中斷以保護(hù)現(xiàn)場(chǎng)。

如果您不小心,這種方法將導(dǎo)致兩次發(fā)送數(shù)據(jù)之間的間隔超過(guò)3.5個(gè)字符。

特別是當(dāng)波特率較高時(shí),更可能發(fā)生這種情況。

例如,當(dāng)波特率為38400時(shí),3.5個(gè)字符僅約為850us。

在發(fā)送串行端口數(shù)據(jù)期間,如果中斷關(guān)閉了850us,則Modbus通信將中斷。

如果MCU支持DMA,建議使用DMA +定時(shí)器進(jìn)行數(shù)據(jù)發(fā)送和接收。

作為Modbus從站設(shè)備,接收數(shù)據(jù)后需要多長(zhǎng)時(shí)間進(jìn)行響應(yīng)?根據(jù)要求

歡迎您的咨詢

車(chē)用電阻的應(yīng)用與種類(lèi) 電流感測(cè)電阻:原理、選擇與應(yīng)用 抗硫化電阻的研究與應(yīng)用
薄膜貼片電阻:特性、應(yīng)用與優(yōu)勢(shì) 厚膜貼片電阻的應(yīng)用與特性 串連排阻與網(wǎng)絡(luò)排阻:原理、應(yīng)用及比較
抗突波電阻的應(yīng)用與原理 無(wú)鉛電阻:環(huán)保時(shí)代的電子元件選擇 CNF汽車(chē)電阻:特性、應(yīng)用與選擇指南
AMF四端電流采樣電阻:原理、應(yīng)用與優(yōu)勢(shì)分析 電子設(shè)備中的EBR電流采樣分流器電阻分析 RBL低阻值電流采樣電阻的應(yīng)用與選擇
曲折中,Inovance Technology遇到了兩輪查詢。股票發(fā)行能否成功? 時(shí)堅(jiān)獲得了“ 2020年杰出代理商”的稱號(hào)。 SIMCom獎(jiǎng) 恩智浦LPC1788FBD208微控制器概述,存儲(chǔ)器保護(hù)單元和以太網(wǎng)模塊的特征是什么?
更快地將物聯(lián)網(wǎng)應(yīng)用推向市場(chǎng):Rutronik提供AVX Ethertronics嵌入式LTE /蜂窩寬帶FPC天線 現(xiàn)在有成為硬件工程師的未來(lái)嗎? 阿斯頓·馬丁可能由吉利和CATL中國(guó)公司投資:暫無(wú)評(píng)論
美的也想從事半導(dǎo)體業(yè)嗎? 小米的新舉動(dòng):在芯片開(kāi)發(fā)商中的股份 Atmosic Technologies:即使沒(méi)有電池,也可以實(shí)現(xiàn)IoT設(shè)備的永久電池壽命
芯片短缺! 2020年花費(fèi)3000億美元進(jìn)口芯片... 您知道PCB設(shè)計(jì)過(guò)程中需要特別注意的重要因素嗎? 您知道頻譜分析儀的全部8個(gè)技術(shù)指標(biāo)嗎?頻譜分析儀如何工作?
亚洲人成人无码.WWW石榴,亚洲AV综合日韩精品久久,亚洲AV无码专区国产乱码不卡,日本在线一区二区三区,蜜桃MV在线播放免费观看网站