電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 69|回復(fù): 0
收起左側(cè)

工業(yè)現(xiàn)場經(jīng)常用到的 RS485 通信,原來它的收發(fā)機(jī)制是這樣的。

[復(fù)制鏈接]

485

主題

485

帖子

1623

積分

三級會員

Rank: 3Rank: 3

積分
1623
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-25 17:50:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師
$ T8 x+ h5 B" j. M關(guān)注我,一起變得更加優(yōu)秀!RS485是工業(yè)控制場景下,應(yīng)用得非常廣泛的通信協(xié)議,RS485的差分物理信號在電磁環(huán)境復(fù)雜的工業(yè)現(xiàn)場,有強(qiáng)大的抗干擾能力。
+ m5 v  l! l) b5 [5 u' x! N7 k2 v5 f$ o5 R' f
對于平時專注于應(yīng)用軟件開發(fā)的工程師,使用RS485進(jìn)行數(shù)據(jù)傳輸,只要關(guān)注串口的數(shù)據(jù)收發(fā)器即可,但其實(shí)在硬件層面,RS485通信的數(shù)據(jù)收發(fā),也需要遵循一定的機(jī)制。" J& G9 [% U8 b3 _/ k
4 y- D# e2 p9 D
RS485通信接口特點(diǎn)
$ O+ r' F$ Y0 l3 @, ]; a: X0 O8 |' M; Y. U$ J1 }4 L
作為工業(yè)領(lǐng)域上較常用的通信方式,RS485總線具有以下諸多特點(diǎn):5 ]) j+ s) n7 q/ t( L( ]' i  M) x
3 V3 v6 y# ~+ F6 F+ d7 z9 }
1、收發(fā)器輸出A、B之間的電平為+2V~+6V,是邏輯“1”;為-6V~-2V,是邏輯“0”。信號電平比RS232降低了,不易損壞接口芯片。另有“使能”控制信號,可使收發(fā)器處于高阻狀態(tài),切斷與傳輸線的連接。0 U# A, I2 B  F! |1 y3 \5 m

; D1 X5 {, f1 q, c% D2、接收器的輸入靈敏度為200mV。即在當(dāng)接收端A、B之間的電平相差200mV時即可輸出邏輯。
- Z- v& ~9 p* i: z/ z( K) z9 a3 @1 \3 v- n) `
3、傳輸速率高(10Mbps),傳輸距離達(dá)到1200m)。5 ~; V0 j1 V; S' \2 c$ s7 }
6 O4 Z: {7 p9 B
4、具有多站點(diǎn)傳輸能力,即總線上允許掛接多達(dá)128個收發(fā)器,可建立設(shè)備網(wǎng)絡(luò)。4 n+ Q8 `" F5 R

% Q  V9 J5 _# u5 b$ c" _5、RS485收發(fā)器共模電壓范圍為-7V~+12V,只有滿足該條件,整個網(wǎng)絡(luò)才能正常工作。當(dāng)網(wǎng)絡(luò)線路中共模電壓超出此范圍時就會影響通信的穩(wěn)定,甚至損壞接口。
0 [; h* C/ X' l! V. V6 O* ~( Z  A; i- a; }
RS485收發(fā)控制方法
% _9 e3 r% j% o. S5 w+ m2 ~7 C
( V1 ?% H3 N4 D' i; ERS485屬于半雙工總線,在實(shí)際使用時一般采用主機(jī)輪詢或令牌傳遞的方法來分配總線控制權(quán),RS485設(shè)備需要進(jìn)行發(fā)送和接收的方向轉(zhuǎn)換。
0 g" g  `' c0 F8 k9 ~1 ?
9 f1 ~+ C7 o- a2 g8 L& Z比較通用的做法是,每個RS485設(shè)備在平時均處于接收狀態(tài),只有在自己有數(shù)據(jù)要發(fā)送時才轉(zhuǎn)換到發(fā)送狀態(tài),數(shù)據(jù)發(fā)送完畢后再次切換回接收狀態(tài)。
) d+ i2 p' |9 H  X+ s/ H; y
, n6 J8 R( v. t4 |2 U9 h! v" ?: }第一種:程序換向控制
% W- T+ u! W1 A# S; e; @/ E& j2 J1 @! s9 F/ q
最常用的RS485收發(fā)換向方法是程序換向,即由MCU的一個I/O端口控制RS485收發(fā)器件的收發(fā)使能引腳,在平時使RS485收發(fā)器件處于接收狀態(tài)。
! F" I6 M. u% Y/ m2 x7 F+ X
' b' }. D5 ^; n) D如下圖,這里485芯片用TI的SN65LBC184,最大速率達(dá)到250Kbps,當(dāng)有數(shù)據(jù)需要發(fā)送時,MCU將RS485收發(fā)器件引腳(網(wǎng)絡(luò)RS485_EN2)置于發(fā)送狀態(tài),完成數(shù)據(jù)發(fā)送后,再把RS485收發(fā)器件切回接收狀態(tài)。! P  }( u4 l; H7 O8 {1 y
1 t" ]0 @3 p4 r5 f- @
4 _4 \% Y: l6 m4 o. @
這種方式簡單易行,不需增加額外成本,這種方法很多人都會知道并且基本上都用的方法。6 L7 l3 q# d! j, o. i  ?
第二種:自動換向
1 x( `3 ?& m4 ^! k但是,當(dāng)我們采用某種硬件平臺的工控主板或核心板進(jìn)行二次開發(fā)時,由于工控主板或核心板上沒有預(yù)留出足夠的I/O端口,使得RS485收發(fā)的程序換向方法無法實(shí)現(xiàn)。! C9 v1 G! _0 Z5 z- a: [2 O
在某些特定的情況下,開發(fā)平臺的底層驅(qū)動未對外開放,難以對底層進(jìn)行二次開發(fā),這種情況下即便有足夠的I/O端口也無法實(shí)現(xiàn)程序換向。. i$ ^4 T! W* {/ d
為此,我們需要采用另外一種換向技術(shù),即自動換向技術(shù)。
; [2 X, L/ u6 ^1 {7 T自動換向其實(shí)就是對使能引腳不需要單獨(dú)的I/O口來控制,而是由發(fā)送引腳發(fā)送數(shù)據(jù)時候順便控制了。3 b0 ], x4 |/ E5 M( ?' a# `+ J
要實(shí)現(xiàn)這種方法可以使能那里加一個反相器,如下圖,在空閑狀態(tài)下,串口的發(fā)送信號TXD2為高電平,經(jīng)過反相器后輸出低電平,使SN65LBC184處于接收狀態(tài),而RS485總線由于上下拉電阻的作用處于A高B低的狀態(tài)。
1 `/ x% m, g) ^7 i! N: c當(dāng)發(fā)送數(shù)據(jù)時,TXD2信號線上的低電平比特位控制SN65LBC184進(jìn)入發(fā)送狀態(tài),將該比特發(fā)送出去。而高電平比特位則使SN65LBC184處于接收狀態(tài),由RS485總線上下拉電阻把總線置于A高B低的狀態(tài),即表示發(fā)送了高電平。
* e' c! s8 {, x* u8 {
4 T( F" T; T1 _8 `, ^反相器也可以用三極管代替,如下圖所示,工作原理和加反相器一樣。
8 g4 `5 _# N8 o9 `: N9 ~4 h% U5 A但是這種方法在發(fā)送高電平時的驅(qū)動能力有限,因此會限制通訊距離,一般適用于距離不遠(yuǎn)場合。/ S; B% f9 U2 g8 {

2 d5 O+ L6 O) C8 [其實(shí),為了省去控制的麻煩,也可以采用專門的、帶有AutoDirection功能的485芯片,比如MAX13487E,它省去了常用的485使能信號,從而簡化了設(shè)計(jì)電路。0 d& A/ v! W' ?* z( \# U
# t  W7 D9 r9 j6 r, I) z
來源:牛x的工程師網(wǎng)友。5 k: K7 F, Q4 @

/ v  R/ o5 U6 u' R$ ^2 x+ B+ @% z
8 a# a0 w" i, d" m' p' M

  s3 P: S; n* x. [$ Z2 q$ t-END-
. Y4 a) u$ D( S& _- Z往期推薦:點(diǎn)擊圖片即可跳轉(zhuǎn)閱讀
4 d/ V# W* }. Y8 D3 W                                                        . P( c2 h9 ~# f5 n0 {. G5 B
                                                               
$ k1 A" U2 h1 G: m# p                                                                       
2 z' s& E! u% `! Z. [# _                                                                                ) A4 y3 p( H6 X. X9 u% j) c

: U+ T/ r% N: t                                                                               
% O/ h- O" N& G9 w9 S: ^                                                                                        嵌入式應(yīng)用程序開發(fā),經(jīng)常使用哪些數(shù)據(jù)結(jié)構(gòu)?1 q' k2 u9 z9 W9 Q) {; ~/ G5 a
                                                       
6 c, K( W. c4 L1 {& x# g                                                                $ m9 |+ }# {+ Z8 e) U4 m
                                                                       
' o- A5 J- O* B2 M& W7 r" a                                                                               
7 H# Y7 l2 p( w: l: b: P ( R! h# J+ R+ o1 F1 v
                                                                               
5 I" V" b) w' T                                                                                        嵌入式 C 語言運(yùn)行時的錯誤處理機(jī)制
9 Q8 N% b/ Y5 `                                                                ( ?1 ~4 W' P8 p2 \) P& h0 |
                                                                        ( ?# W. D& T& A# z+ h, s8 l  N
                                                                               
. w3 J5 F% [6 ~
+ m3 N2 q/ S2 v- C                                                                               
1 C) V2 d% T: g6 q3 d$ T                                                                                        今年快過完了,明年準(zhǔn)備進(jìn)廠搞嵌入式工控,提前了解各方行業(yè)信息!5 R* Y/ R! f% j* q
                                                                                9 X8 ~) L% P3 n/ o5 ~1 h& M1 T
                                                                        # {! e7 h" i$ E' N
                                                                2 I( p& R' u/ I) X( j
                                                        我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師
6 Z+ x: C& A' i: x關(guān)注我,一起變得更加優(yōu)秀!
回復(fù)

使用道具 舉報

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表