蔣金元
一、RS-485方式構成的多機通信原理
用MAX1487構成的多機通信原理框圖如圖1所示。
總線末端接匹配電阻,吸收總線上的反射信號,保證信號傳輸無毛刺。匹配電阻的取值應與總線的電阻特性相當。當總線上沒有信號傳輸時,總線處于懸浮狀態,易受干擾信號影響。在總線上差分信號的正端A+和+5V電源間接一個10kΩ的電阻,正端A+和負端B-間接一個10kΩ的電阻,負端B-和地間接一個10kΩ的電阻,形成網絡。總線上沒有信號傳輸時,正端A+的電平大約為3.2V,負端B-的電平大約為1.6V。即使有干擾信號,也很難產生串行通信的起始信號0,從而增加了總線抗干擾的能力。
在半雙工通信情況下,發送和接收共用一個物理通道,任意時刻只允許一臺單機處于發送狀態。因此,要求應答單機必須在偵聽到總線上呼叫信號已經發送完畢,且沒有其他單機發出應答信號的情況下才能應答。如果在時序上配合不好,就會發生總線沖突,使整個系統通信癱瘓,無法正常工作。要避免這一點,必須遵守以下幾項原則:
1.復位時,主從機都處在接收狀態
MAX1487的發送和接收功能轉換是由/RE,DE端控制的。RE=1,DE=1時,MAX1487處于發送狀態:/RE=0,DE=0時,處于接收狀態。使用單片機的一根口線連接/RE,DE端。在上電復位時,硬件電路穩定需要一定時間,且單片機各端口復位后處于高電平狀態,會使總線上各個分機處于發送狀態,加上上電時各電路不穩定,可能向總線發送信息。因此,用一根口線作發送和接收控制信號,應該將口線反向后接入MAX1487的控制端,使上電時MAX1487處于接收狀態。
2.控制端,RE、DE的信號的有效寬度應大于發送或接收一幀信號的寬度
MAX1487的發送和接收都由同一器件完成,且使用同一物理通道,必須對控制信號進行切換。控制信號何時為高電平、何時為低電平,以單片機的標志位作為參考。AVR的標志位為TXC和RXC。
二、Atmega8515和MAX1487的連接
在多機通信過程中,所有設備的RS-485接口是并在通信線上的,只能有一個設備為主機,其他為從機。通信由主機發起。數據幀一般采用1位起始位、9位數據位,其中第9位(RXB8)被用作表征該幀是地址幀還是數據幀。當幀類型表征位為“1”時,表示該幀數據為一個地址幀;當幀類型表征位為“0”時,表示這個幀為一個數據幀。主機MCU可以設置使用9位數據幀結構(UCSZ=7)。當發送地址幀時,置第9位為“1”;發送數據幀時,置第9位為“0”。這種情況下,從機必須設置成接收9位數據幀結構。
多機通信模式允許多個從機并在通信線路上,接收一個主機發出的數據。通過對接收到的地址幀中的地址進行解碼,確定哪個從機被主機尋址。如果某個從機被主機尋址,它將接收接下來主機發出的數據幀,而其它的從機將忽略數據幀,直到再次接收到一個地址幀(從機地址是由各個從機本身的軟件決定的)。