當前位置:首頁 > 單片機 > 單片機
[導讀]介紹一種橋接不同現(xiàn)場總線網(wǎng)絡(luò)的解決方案。該方案采用高性能AVR ATmega128為其控制核心。

摘要:介紹一種橋接不同現(xiàn)場總線網(wǎng)絡(luò)的解決方案。該方案采用高性能AVR ATmega128為其控制核心。AVR ATmega128采用ModBus/RTU協(xié)議與計算機通信,通過多處理器通信模式與其他分控設(shè)備通信。本方案經(jīng)過在實際中運行,證明其設(shè)計是可行的。 
關(guān)鍵詞:AVR ATmega128、Modbus/RTU、AVR多處理器通信模式、CRC16 

1 引言

   如今,電子技術(shù)發(fā)展迅猛,尤其是單片機已廣泛地應(yīng)用于通信、交通、家用電器、便攜式智能儀表、機器人制作等領(lǐng)域,產(chǎn)品功能、精度和質(zhì)量大幅度提高,且電路簡單,故障率低,可靠性高,成本低廉。在單片機某些應(yīng)用方面,對網(wǎng)絡(luò)靈活性和多樣性需求的不斷增加,網(wǎng)絡(luò)之間的互聯(lián)顯得越來越重要。工業(yè)網(wǎng)關(guān)為橋接不同現(xiàn)場總線網(wǎng)絡(luò)提供了一種解決方案。

2 網(wǎng)絡(luò)拓撲結(jié)構(gòu)

網(wǎng)絡(luò)連接的拓撲結(jié)構(gòu)如圖1所示。

(圖1)

RS-232C是廣泛應(yīng)用的串口通信標準,但因其推出較早,在現(xiàn)代網(wǎng)絡(luò)通信中已暴露出數(shù)據(jù)傳輸速度慢、傳輸距離短、接口處各信號間容易產(chǎn)生干擾等明顯的缺點。RS-485是一種多發(fā)送器的電路標準,它擴展了RS-422A的性能,允許雙絞線上一個發(fā)送器驅(qū)動32個負載設(shè)備,負載設(shè)備可以是被動發(fā)送器、接收器或收發(fā)器,RS-485最大傳輸距離為1200m,最大傳送速率可達10Mb/s。因此,RS-485在遠程通信和多機總線系統(tǒng)中具有很大的吸引力。

如圖1所示,將AVR ATmega128的標準的通用異步接收/發(fā)送通信接口0(UART0)轉(zhuǎn)換成半雙工485串口。同樣,PC機的RS-232C串口也轉(zhuǎn)換成485串口。它們之間采用Modbus/RTU協(xié)議進行通信,AVR ATmega128作為從設(shè)備。AVR ATmega128與其下行的AVR分控設(shè)備通過485串行總線并在一起。它們之間采用AVR單片機特有的多機通信方式進行通信。其中AVR ATmega128是主控設(shè)備,其他的AVR分控設(shè)備是從控設(shè)備。

3  AVR ATmega128單片機

ATmega128單片機為基于AVR RISC結(jié)構(gòu)的8位低功耗CMOS微處理器。由于其先進的指令集以及單周期指令執(zhí)行時間,ATmega128單片機的數(shù)據(jù)吞吐率高達1MIPS/MHz,故可以緩減系統(tǒng)的功耗和處理速度之間的矛盾。AVR單片機內(nèi)核具有豐富的指令集和32個通用工作寄存器。所有的寄存器都直接與算術(shù)邏輯單元(ALU)相連接,使得一條指令可以在一個時鐘周期內(nèi)同時訪問兩個獨立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的復雜指令集微處理器高10倍的數(shù)據(jù)吞吐量。ATmega128單片機內(nèi)部帶有128KB的系統(tǒng)內(nèi)可編程Flash程序存儲器,具有在寫的過程中還可以讀的能力,即同時讀寫(RWW); 4KB的EEPROM;4KB的SRAM;53個通用I/O端口線;32個通用工作寄存器;實時時鐘(RTC);4個靈活的具有比較模式和PWM功能的定時器/記數(shù)器(T/C);2個USART;面向字節(jié)的兩線接口(TWI);8通道10位ADC;可選的可編程增益;片內(nèi)振蕩器的可編程看門狗定時器;串行外圍設(shè)備接口(SPI);與IEEE 1149.1規(guī)范兼容的JTAG測試接口,此接口同時還可以用于片上調(diào)試;6種可以通過軟件選擇的省電模式。

4 Modbus通信協(xié)議

Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其他設(shè)備之間可以通信。它已經(jīng)成為一通用工業(yè)標準。有了它,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進行集中監(jiān)控。此協(xié)議定義了一個控制器能認識使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進行通信的。它描述了一控制器請求訪問其它設(shè)備的過程,如果回應(yīng)來自其它設(shè)備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。當在一Modbus網(wǎng)絡(luò)上通信時,此協(xié)議決定了每個控制器須要知道它們的設(shè)備地址,識別按地址發(fā)來的消息,決定要產(chǎn)生何種行動。如果需要回應(yīng),控制器將生成反饋信息并用Modbus協(xié)議發(fā)出。在其它網(wǎng)絡(luò)上,包含了Modbus協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu)。這種轉(zhuǎn)換也擴展了根據(jù)具體的網(wǎng)絡(luò)解決節(jié)地址、路由路徑及錯誤檢測的方法。

Modbus網(wǎng)絡(luò)能設(shè)置為兩種傳輸模式(ASCII或RTU)中的任何一種進行通信。用戶選擇想要的模式,包括串口通信參數(shù)(波特率、校驗方式等),在配置每個控制器的時候,在一個Modbus網(wǎng)絡(luò)上的所有設(shè)備都必須選擇相同的傳輸模式和串口參數(shù)。

當控制器設(shè)為在Modbus網(wǎng)絡(luò)上以RTU(遠程終端單元)模式通信,在消息中的每個8Bit字節(jié)包含兩個4Bit的十六進制字符。這種方式的主要優(yōu)點是:在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)。

代碼系統(tǒng):

ü         8位二進制,十六進制數(shù)0...9,A...F

ü         消息中的每個8位域都是一個兩個十六進制字符組成

每個字節(jié)的位:

ü         1個起始位

ü         8個數(shù)據(jù)位,最小的有效位先發(fā)送

ü         1個奇偶校驗位,無校驗則無

ü         1個停止位(有校驗時),2個Bit(無校驗時)

錯誤檢測域

ü         CRC(循環(huán)冗長檢測)

使用RTU模式,消息發(fā)送至少要以3.5個字符時間的停頓間隔開始。在網(wǎng)絡(luò)下多樣的字符時間,這是最容易實現(xiàn)的(如下圖2所示)。傳輸?shù)牡谝粋€域是設(shè)備地址??梢允褂玫膫鬏斪址鞘M制的0…9,A…F。網(wǎng)絡(luò)設(shè)備不斷偵測網(wǎng)絡(luò)總線,包括停頓間隔時間內(nèi)。當?shù)谝挥颍ǖ刂酚颍┙邮盏?,每個設(shè)備都進行解碼以判斷是否發(fā)往自己的。在最后一個傳輸字符之后,一個至少3.5個字符時間的停頓標定了消息的結(jié)束。一個新的消息可在停頓后開始。

整個消息幀必須作為一連續(xù)的流傳輸。如果在幀完成之前有超過 3.5個字符時間的停頓時間,接收設(shè)備將刷新不完整的消息并假定下一字節(jié)是一個新消息的地址域。同樣地,如果一個新消息在小于3.5個字符時間內(nèi)接著前個消息開始,接收的設(shè)備將認為它是前一消息的延續(xù)。這將導致一個錯誤,因為在最后的CRC域的值不可能是正確的。一典型的RTU消息幀如下所示:

起始位

設(shè)備地址

功能代碼

數(shù)據(jù)

CRC校驗

結(jié)束符

T1-T2-T3-T4

8Bit

8Bit

N個8Bit

16Bit

T1-T2-T3-T4

當消息在標準的Modbus系列網(wǎng)絡(luò)傳輸時,每個字符或字節(jié)以如下方式發(fā)送(從左到右):最低有效位...最高有效位。

使用RTU字符幀時,位的序列是:

有奇偶校驗

啟始位

1

2

3

4

5

6

7

8

奇偶位

停止位

無奇偶校驗

啟始位

1

2

3

4

5

6

7

8

停止位

停止位

5  CRC16檢測

循環(huán)冗余碼CRC檢驗技術(shù)廣泛應(yīng)用于測控及通信領(lǐng)域。CRC計算可以靠專用的硬件來實現(xiàn),但是對于低成本的微控制器系統(tǒng),在沒有硬件支持下實現(xiàn)CRC檢驗,關(guān)鍵的問題就是如何通過軟件來完成CRC計算,也就是CRC算法的問題。計算CRC16有三種算法:按位計算CRC、字節(jié)計算CRC、半字節(jié)計算CRC。這三種算法它們稍有不同,按位求法速度較慢,但占用最小的內(nèi)存空間;按字節(jié)查表求CRC的方法速度較快,但占用較大的內(nèi)存;按半字節(jié)查表求CRC的方法是前兩者的均衡,即不會占用太多的內(nèi)存,同時速度又不至于太慢,比較適合8位小內(nèi)存的單片機的應(yīng)用場合。

6 AVR單片機多處理器通信模式

置位UCSRA 的多處理器通信模式位(MPCM) 可以對USART 接收器接收到的數(shù)據(jù)幀進行過濾。那些沒有地址信息的幀將被忽略,也不會存入接收緩沖器。在一個多處理器系統(tǒng)中,處理器通過同樣的串行總線進行通信,這種過濾有效的減少了需要CPU 處理的數(shù)據(jù)幀的數(shù)量。MPCM位的設(shè)置不影響發(fā)送器的工作,但在使用多處理器通信模式的系統(tǒng)中,它的使用方法會有所不同。如果接收器所接收的數(shù)據(jù)幀長度為5 到8 位,那么第一個停止位表示這一幀包含的是數(shù)據(jù)還是地址信息。如果接收器所接收的數(shù)據(jù)幀長度為9 位,那么由第9 位(RXB8) 來確定是數(shù)據(jù)還是地址信息。如果確定幀類型的位( 第一個停止位或第9 個數(shù)據(jù)位) 為1,那么這是地址幀,否則為數(shù)據(jù)幀。在多處理器通信模式下,多個從處理器可以從一個主處理器接收數(shù)據(jù)。首先要通過解碼地址幀來確定所尋址的是哪一個處理器。如果尋址到某一個處理器,它將正常接收后續(xù)的數(shù)據(jù),而其他的從處理器會忽略這些幀直到接收到另一個地址幀。

對于一個作為主機的處理器來說,它可以使用9 位數(shù)據(jù)幀格式(UCSZ = 7)。如果傳輸?shù)氖且粋€地址幀(TXB8 = 1) 就將第9 位(TXB8) 置1,如果是一個數(shù)據(jù)幀(TXB = 0) 就將它清零。在這種幀格式下,從處理器必須工作于9 位數(shù)據(jù)幀格式。

下面即為在多處理器通信模式下進行數(shù)據(jù)交換的步驟:

5.1 所有從處理器都工作在多處理器通信模式(UCSRA 寄存器的MPCM 置位)。

5.2 主處理器發(fā)送地址幀后,所有從處理器都會接收并讀取此幀。從處理器UCSRA寄存器的RXC 正常置位。

5.3 每一個從處理器都會讀取UDR 寄存器的內(nèi)容已確定自己是否被選中。如果選中,就清零UCSRA 的MPCM 位,否則它將等待下一個地址字節(jié)的到來,并保持MPCM 為1。

5.4 被尋址的從處理器將接收所有的數(shù)據(jù)幀,直到收到一個新的地址幀。而那些保持MPCM 位為1 的從處理器將忽略這些數(shù)據(jù)。

5.5被尋址的處理器接收到最后一個數(shù)據(jù)幀后,它將置位MPCM,并等待主處理器發(fā)送下一個地址幀。然后第2 步之后的步驟重復進行。

使用5 至8 比特的幀格式是可以的,但是不實際,因為接收器必須在使用n 和n+1 幀格式之間進行切換。由于接收器和發(fā)送器使用相同的字符長度設(shè)置,這種設(shè)置使得全雙工操作變得很困難。如果使用5 至8 比特的幀格式,發(fā)送器應(yīng)該設(shè)置兩個停止位(USBS = 1),其中的第一個停止位被用于判斷幀類型。不要使用讀- 修改- 寫指令(SBI 和CBI) 來操作MPCM 位。MPCM 和TXC 標志使用相同的I/O 單元,使用SBI 或CBI 指令可能會不小心將它清零。在本設(shè)計方案中,AVR ATmega128作為多處理器通信模式中的主處理器,其他的AVR分控設(shè)備做為從處理器。

7結(jié)束語

采用本方案所介紹的網(wǎng)絡(luò)拓撲結(jié)構(gòu),由于AVR ATmega128與上位機之間通信是基于Modbus標準協(xié)議,而與其他的AVR分控設(shè)備之間采用AVR單片機所特有的多處理器通信。因此,在保證系統(tǒng)開放性的同時,又能保證數(shù)據(jù)處理效率的提高。在交通控制、智能化停車場管理系統(tǒng)等方面,本設(shè)計方案有一定的參考價值。

 

參考文獻

[1] 陳冬云,杜敬倉,任柯燕. ATmega 128單片機原理與開發(fā)指導.機械工業(yè)出版社,2006.

[2] Richard Barnett,Larry O’Cull,Sarah Cox. 嵌入式C編程與Atmel AVR.北京:清華大學出版社,2003.

[3] Modicon.Modbus Protocol Reference Guide.1996

[4] 朱懿,蔣念平.ModBus協(xié)議在工業(yè)控制系統(tǒng)中的應(yīng)用.微計算機信息,2006,4-1:118-120.

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉