今天浩道跟大家分享近期維護(hù)的一個(gè)關(guān)于門禁系統(tǒng)的踩到的一些坑。同時(shí)也希望給大家今后接觸類似項(xiàng)目的小伙伴一個(gè)方向吧。同時(shí)也會(huì)跟大家說(shuō)一說(shuō)該項(xiàng)目中用到的串口通信相關(guān)知識(shí)點(diǎn),一起看看!
浩道最近收到用戶反饋說(shuō),門禁刷卡,門不開,沒有上送門禁事件等。。。經(jīng)過(guò)一番溝通,用戶現(xiàn)場(chǎng)門禁刷卡器與門禁控制器采用485接口通信,并且接入了幾個(gè)485刷卡器,最最重要的是,485的線長(zhǎng)達(dá)數(shù)幾十米,每一個(gè)刷卡器都是經(jīng)過(guò)一根數(shù)幾十米的信號(hào)線匯總并接到了門禁控制器的485接口。 經(jīng)過(guò)對(duì)485口進(jìn)行數(shù)據(jù)抓包分析,發(fā)現(xiàn)串口數(shù)據(jù)存在亂碼,最后查閱資料發(fā)現(xiàn)485串口通信采用這種星行組網(wǎng),會(huì)存在數(shù)據(jù)干擾。數(shù)據(jù)干擾是導(dǎo)致門禁刷卡數(shù)據(jù)異常的根本原因,之前做方案沒有考慮到這些細(xì)節(jié),導(dǎo)致踩到了一個(gè)大坑了。可能也是對(duì)串口通信沒有更深的認(rèn)識(shí)吧。在此借此機(jī)會(huì),跟大家聊一聊串口通信相關(guān)知識(shí),希望以后可以幫助到大家避坑!
一、串行通訊與并行通訊
在通信和計(jì)算機(jī)科學(xué)中,串行通信(Serial Communication)是一個(gè)通用概念,泛指所有的串行的通信協(xié)議,如RS232、RS422、RS485、USB、I2C、SPI等。 串行通訊是指僅用一根接收線和一根發(fā)送線就能將數(shù)據(jù)以位進(jìn)行傳輸?shù)囊环N通訊方式。盡管串行通訊的比按字節(jié)傳輸?shù)牟⑿型ㄐ怕谴诳梢栽趦H僅使用兩根線的情況下就能實(shí)現(xiàn)數(shù)據(jù)的傳輸。
圖1 串行通信與并行通信
二、串口通訊模式
串口通訊模式包括單工、半雙工和全雙工,其中單工模式數(shù)據(jù)傳輸只支持?jǐn)?shù)據(jù)在一個(gè)方向上傳輸。半雙工模式允許數(shù)據(jù)在兩個(gè)方向上傳輸,但某一時(shí)刻只允許數(shù)據(jù)在一個(gè)方向上傳輸,實(shí)際上是一種切換方向的單工通信,不需要獨(dú)立的接收端和發(fā)送端,兩者可合并為一個(gè)端口。詳見下圖:
圖2 (a)單工、(b)半雙工、(c)全雙工
三、串口通訊協(xié)議
最初數(shù)據(jù)是模擬信號(hào)輸出簡(jiǎn)單過(guò)程量,后來(lái)儀表接口出現(xiàn)了RS232接口,這種接口可以實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的通信方式,但這種方式不能實(shí)現(xiàn)聯(lián)網(wǎng)功能,這就促生了RS422和RS485。 我們知道串口通信的數(shù)據(jù)傳輸都是0和1,在單總線、I2C、UART中都是通過(guò)一根線的高低電平來(lái)判斷邏輯1或者邏輯0,但這種信號(hào)線的GND再與其他設(shè)備形成共地模式的通信,這種共地模式傳輸容易產(chǎn)生干擾,并且抗干擾性能也比較弱。所以差分通信、支持多機(jī)通信、抗干擾強(qiáng)的RS422和RS485就被廣泛的使用了。 RS422和RS485通信最大特點(diǎn)就是傳輸速度最大可以達(dá)到10Mb/s以上,最大傳輸距離超過(guò)1000米。大家需要注意的是雖然485最大速度和最大傳輸距離都很大,但是傳輸?shù)乃俣仁菚?huì)隨距離的增加而變慢的,所以兩者是不可以兼得的。
四、RS232詳細(xì)介紹
1.RS232的基本特性
RS-232是串行數(shù)據(jù)接口標(biāo)準(zhǔn),是由電子工業(yè)協(xié)會(huì)(EIA: Electronic Industries Alliance)制訂并發(fā)布的工業(yè)標(biāo)準(zhǔn),以保證不同廠家產(chǎn)品之間的兼容。特性如下:
圖3 RS232基本特性
2.RS232的物理特性
在RS232的通訊方式中,兩個(gè)通訊設(shè)備的"DB9接口"之間通過(guò)串口信號(hào)線建立起連接,串口信號(hào)線中使用"RS-232標(biāo)準(zhǔn)"傳輸數(shù)據(jù)信號(hào)。D型或D-subminiature(D形狀超小型)連接器的原始編號(hào)系統(tǒng)使用D作為前綴(將其名稱命名為系列),然后根據(jù)外殼尺寸選擇A,B,C,D或E,末尾數(shù)字表示引腳數(shù)量。詳見下圖:
圖4 RS232物理特性
3.RS232的通信協(xié)議
RS232一般使用DB9接口,由于兩個(gè)通訊設(shè)備之間的收發(fā)信號(hào)(RXD與TXD)應(yīng)交叉相連,所以調(diào)制調(diào)解器端的DB9母頭的收發(fā)信號(hào)接法一般與公頭的相反。DB9公頭、母頭以及引腳說(shuō)明詳見下方圖和表。
圖5 DB9公頭與母頭
表1 DB9引腳說(shuō)明
4.RS232的波特率
在信道中,攜帶數(shù)據(jù)信息的信號(hào)單元叫碼元,單位時(shí)間內(nèi)通過(guò)信道傳輸?shù)拇a元數(shù)稱為碼元傳輸速率,簡(jiǎn)稱波特率(Baud Rate),其單位是波特(Baud,symbol/s),波特率是傳輸通道頻寬的指標(biāo)。RS232典型的“波特率”是
300/1200/2400/9600/19200/38400/115200 /230400等。 表2 不同BAUD Rate對(duì)應(yīng)的RS232通信距離
5.RS232的數(shù)據(jù)結(jié)構(gòu)
一個(gè)完整的串行數(shù)據(jù),也就是一個(gè)數(shù)據(jù)幀(Data frame),或者一個(gè)字符幀,包括起始位、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位。數(shù)據(jù)位前后即幀頭和幀尾,包含一些必要的控制信息。其中,MSB(Most Significant Bit)是指低地址存放最高有效字節(jié),LSB(Least Significant Bit)則是低地址存放最低有效字節(jié)。
圖6 RS232數(shù)據(jù)結(jié)構(gòu)
起始位:起始位必須是持續(xù)一個(gè)比特時(shí)間的邏輯0電平,標(biāo)志傳輸一個(gè)字符的開始,接收方可用起始位使自己的接收時(shí)鐘與發(fā)送方的數(shù)據(jù)同步。 數(shù)據(jù)位:數(shù)據(jù)位緊跟在起始位之后,是通信中的真正有效信息。數(shù)據(jù)位的位數(shù)可以由通信雙方共同約定。傳輸數(shù)據(jù)時(shí)先傳送字符的低位,后傳送字符的高位。 奇偶校驗(yàn)位:奇偶校驗(yàn)位僅占一位,用于進(jìn)行奇校驗(yàn)或偶校驗(yàn),奇偶檢驗(yàn)位不是必須有的。如果是奇校驗(yàn),需要保證傳輸?shù)臄?shù)據(jù)總共有奇數(shù)個(gè)邏輯高位;如果是偶校驗(yàn),需要保證傳輸?shù)臄?shù)據(jù)總共有偶數(shù)個(gè)邏輯高位。 停止位:停止位可以是是1位、1.5位或2位,可以由軟件設(shè)定。它一定是邏輯1電平,標(biāo)志著傳輸一個(gè)字符的結(jié)束。 空閑位:空閑位是指從一個(gè)字符的停止位結(jié)束到下一個(gè)字符的起始位開始,表示線路處于空閑狀態(tài),必須由高電平來(lái)填充。
6.RS232與RS232(TTL)
RS-232電平標(biāo)準(zhǔn)的信號(hào)不能直接被控制器直接識(shí)別,所以這些信號(hào)會(huì)經(jīng)過(guò)一個(gè)"電平轉(zhuǎn)換芯片"轉(zhuǎn)換成控制器能識(shí)別的"TTL校準(zhǔn)"的電平信號(hào),才能實(shí)現(xiàn)通訊。 TTL全名是晶體管-晶體管邏輯集成電(Transistor-Transistor Logic),這種串行通信,對(duì)應(yīng)的物理電平,始終是在0V和Vcc之間,其中常見的Vcc是5V或3.3V。TTL 高電平1是>=2.4V,低電平0是<=0.5V(對(duì)于5V或3.3V電源電壓),這里是正邏輯。
RS-232電平標(biāo)準(zhǔn)的信號(hào)不能直接被控制器直接識(shí)別,所以這些信號(hào)會(huì)經(jīng)過(guò)一個(gè)"電平轉(zhuǎn)換芯片"轉(zhuǎn)換成控制器能識(shí)別的"TTL"的電平信號(hào),才能實(shí)現(xiàn)通訊。
圖8 RS232 電平信號(hào)轉(zhuǎn)換
轉(zhuǎn)換電路圖如下所示:
圖9 RS232 電平信號(hào)轉(zhuǎn)換電路圖
五、RS422簡(jiǎn)介
RS-422 的總線標(biāo)準(zhǔn)規(guī)定了總線接口的電氣特性標(biāo)準(zhǔn),發(fā)送端:正電平在+2V~+6V之間,表示邏輯狀態(tài)“1”;負(fù)電平在-2V~-6V之間,則表示邏輯狀態(tài)“0”;接收器:(V+) - (V-) ≥0.2V,表示信號(hào)“0”;(V+) - (V-) ≤0.2V,表示信號(hào)“1”)。 RS-422 采用全雙工通訊方式,有4根信號(hào)線,收與發(fā)是分開的,可以同時(shí)收和發(fā)。適用于兩個(gè)站之間通信,如星型網(wǎng)、環(huán)網(wǎng)等,不可用于總線網(wǎng)。
圖10 RS-422全雙工(點(diǎn)對(duì)點(diǎn))接線方式
六、RS485簡(jiǎn)介
RS-485的電氣特性與RS-422基本一樣。它采用半雙工通訊方式,有2根信號(hào)線,在半雙工模式下工作,常用于總線網(wǎng)。其具體接線方式如下圖所示:
圖11 RS485(點(diǎn)對(duì)多點(diǎn))接線方式
七、網(wǎng)絡(luò)電臺(tái)串口
以我司機(jī)載網(wǎng)絡(luò)電臺(tái)為例,綜合接口為J30J-25。其中涉及RS232/RS422/RS485接口引腳說(shuō)明如下: 表3 機(jī)載網(wǎng)絡(luò)電臺(tái)綜合接口 J30J-25ZKP
?
編輯:黃飛
?
評(píng)論