[深圳電子]電子秤的串口通訊與通信協議

[深圳電子]電子秤的串口通訊與通信協議

2019-03-14handler817

電子秤的串口通訊與通信協議


所謂電子秤通信協議是指通信雙方的一種(zhǒng)約定。約定包括對(duì)數據格式、同步方式、傳送速度、傳送步驟、檢糾錯方式以及控制字符定義等問題做出統一規定,通信雙方必須共同遵守。因此,也叫(jiào)做通信控制規程,或稱傳輸控制規程,它屬于ISO'S OSI七層參考模型中的數據鏈路層。

目前,采用的通信協議有兩(liǎng)類:異步協議和同步協議。同步協議又有面(miàn)向(xiàng)字符和面(miàn)向(xiàng)比特以及面(miàn)向(xiàng)字節計數三種(zhǒng)。其中,面(miàn)向(xiàng)字節計數的同步協議主要用于DEC公司的網絡體系結構中。


一、物理接口标準


1.電子秤串行通信接口的基本任務


(1)實現數據格式化:因爲來自CPU的是普通的并行數據,所以,接口電路應具有實現不同串行通信方式下的數據格式化的任務。在異步通信方式下,接口自動生成(chéng)起(qǐ)止式的幀數據格式。在面(miàn)向(xiàng)字符的同步方式下,接口要在待傳送的數據塊前加上同步字符。


(2)進(jìn)行串-并轉換:串行傳送,數據是一位一位串行傳送的,而計算機處理數據是并行數據。所以當數據由計算機送至數據發(fā)送器時(shí),首先把串行數據轉換爲并行數才能(néng)送入計算機處理。因此串并轉換是串行接口電路的重要任務。


(3)控制數據傳輸速率:串行通信接口電路應具有對(duì)數據傳輸速率——波特率進(jìn)行選擇和控制的能(néng)力。


(4)進(jìn)行錯誤檢測:在發(fā)送時(shí)接口電路對(duì)傳送的字符數據自動生成(chéng)奇偶校驗位或其他校驗碼。在接收時(shí),接口電路檢查字符的奇偶校驗或其他校驗碼,确定是否發(fā)生傳送錯誤。


(5)進(jìn)行TTL與EIA電平轉換:CPU和終端均采用TTL電平及正邏輯,它們與EIA采用的電平及負邏輯不兼容,需在接口電路中進(jìn)行轉換。


(6)提供EIA-RS-232C接口标準所要求的信号線:遠距離通信采用MODEM時(shí),需要9根信号線;近距離零MODEM方式,隻需要3根信号線。這(zhè)些信号線由接口電路提供,以便與MODEM或終端進(jìn)行聯絡與控制。


2、電子秤串行通信接口電路的組成(chéng)


爲了完成(chéng)上述串行接口的任務,串行通信接口電路一般由可編程的串行接口芯片、波特率發(fā)生器、EIA與TTL電平轉換器以及地址譯碼電路組成(chéng)。其中,串行接口芯片,随著(zhe)大規模繼承電路技術的發(fā)展,通用的同步(USRT)和異步(UART)接口芯片種(zhǒng)類越來越多,如下表所示。它們的基本功能(néng)是類似的,都(dōu)能(néng)實現上面(miàn)提出的串行通信接口基本任務的大部分工作,且都(dōu)是可編程的。才用這(zhè)些芯片作爲串行通信接口電路的核心芯片,會(huì)使電路結構比較簡單。


3.有關電子秤串行通信的物理标準


爲使計算機、以及其他通信設備互相溝通,現在,已經(jīng)對(duì)串行通信建立了幾個一緻的概念和标準,這(zhè)些概念和标準屬于三個方面(miàn):傳輸率,電特性,信号名稱和接口标準。


(1)、傳輸率:所謂傳輸率就(jiù)是指每秒傳輸多少位,傳輸率也常叫(jiào)波特率。國(guó)際上規定了一個标準波特率系列,标準波特率也是zui常用的波特率,标準波特率系列爲110、300、600、1200、4800、9600和19200。大多數CRT終端都(dōu)能(néng)夠按110到9600範圍中的任何一種(zhǒng)波特率工作。打印機由于機械速度比較慢而使傳輸波特率受到限制,所以,一般的串行打印機工作在110波特率,點針式打印機由于其内部有較大的行緩沖區,所以可以按高達2400波特的速度接收打印信息。大多數接口的接收波特率和發(fā)送波特率可以分别設置,而且,可以通過(guò)編程來指定。


(2)、RS-232-C标準:RS-232-C标準對(duì)兩(liǎng)個方面(miàn)作了規定,即信号電平标準和控制信号線的定義。RS-232-C采用負邏輯規定邏輯電平,信号電平與通常的TTL電平也不兼容,RS-232-C將(jiāng)-5V~-15V規定爲“1”,+5V~+15V規定爲“0”。


二、軟件協議


1.OSI協議和TCP/IP協議


(1)OSI協議


OSI七層參考模型不是通訊标準,它隻給出一個不會(huì)由于技術發(fā)展而必須修改的穩定模型,使有關标準和協議能(néng)在模型定義的範圍内開(kāi)發(fā)和相互配合。


一般的通訊協議隻符合OSI七層模型的某幾層,如: EIA-RS-232-C:實現了物理層。 IBM的SDLC(同步數據鏈路控制規程):數據鏈路層。ANSI的ADCCP(先進(jìn)數據通訊規程):數據鏈路層IBM的BSC(二進(jìn)制同步通訊協議):數據鏈路層。應用層的電子郵件協議SMTP隻負責寄信、POP3隻負責收信。


(2)TCP/IP協議


實現了五層協議。


(1)物理層:對(duì)應OSI的物理層。


(2)網絡接口層:類似于OSI的數據鏈路層。


(3)Internet層:OSI模型在Internet網使用前提出,未考慮網間連接。


(4)傳輸層:對(duì)應OSI的傳輸層。


(5)應用層:對(duì)應OSI的表示層和應用層。


2.串行通信協議


串行通信協議分同步協議和異步協議。


(1)異步通信協議的實例——起(qǐ)止式異步協議


特點與格式:

起(qǐ)止式異步協議的特點是一個字符一個字符傳輸,并且傳送一個字符總是以起(qǐ)始位開(kāi)始,以停止位結束,字符之間沒(méi)有固定的時(shí)間間隔要求。每一個字符的前面(miàn)都(dōu)有一位起(qǐ)始位(低電平,邏輯值0),字符本身有5~7位數據位組成(chéng),接著(zhe)字符後(hòu)面(miàn)是一位校驗位(也可以沒(méi)有校驗位),zui後(hòu)是一位,或意味半,或二位停止位,停止位後(hòu)面(miàn)是不定長(cháng)度的空閑位。停止位和空閑位都(dōu)規定爲高電平(邏輯值),這(zhè)樣(yàng)就(jiù)保證起(qǐ)始位開(kāi)始處一定有一個下跳沿。


起(qǐ)/止位的作用:起(qǐ)始位實際上是作爲聯絡信号附加進(jìn)來的,當它變爲低電平時(shí),告訴收方傳送開(kāi)始。它的到來,表示下面(miàn)接著(zhe)是數據位來了,要準備接收。而停止位标志一個字符的結束,它的出現,表示一個字符傳送完畢。這(zhè)樣(yàng)就(jiù)爲通信雙方提供了何時(shí)開(kāi)始收發(fā),何時(shí)結束的标志。傳送開(kāi)始前,發(fā)收雙方把所采用的起(qǐ)止式格式(包括字符的數據位長(cháng)度,停止位位數,有無校驗位以及是奇校驗還(hái)是偶校驗等)和數據傳輸速率作統一規定。傳送開(kāi)始後(hòu),接收設備不斷地檢測傳輸線,看是否有起(qǐ)始位到來。當收到一系列的“1”(停止位或空閑位)之後(hòu),檢測到一個下跳沿,說(shuō)明起(qǐ)始位出現,起(qǐ)始位經(jīng)确認後(hòu),就(jiù)開(kāi)始接收所規定的數據位和奇偶校驗位以及停止位。經(jīng)過(guò)處理將(jiāng)停止位去掉,把數據位拼裝成(chéng)一個并行字節,并且經(jīng)校驗後(hòu),無奇偶錯才算正确的接收一個字符。一個字符接收完畢,接收設備有繼續測試傳輸線,監視“0”電平的到來和下一個字符的開(kāi)始,直到全部數據傳送完畢。


由上述工作過(guò)程可看到,異步通信是按字符傳輸的,每傳輸一個字符,就(jiù)用起(qǐ)始位來通知收方,以此來重新核對(duì)收發(fā)雙方同步。若接收設備和發(fā)送設備兩(liǎng)者的時(shí)鍾頻率略有偏差,這(zhè)也不會(huì)因偏差的累積而導緻錯位,加之字符之間的空閑位也爲這(zhè)種(zhǒng)偏差提供一種(zhǒng)緩沖,所以異步串行通信的可靠性高。但由于要在每個字符的前後(hòu)加上起(qǐ)始位和停止位這(zhè)樣(yàng)一些附加位,使得傳輸效率變低了,隻有約80%。因此,起(qǐ)止協議一般用在數據速率較慢的場合(小于19.2kbit/s)。在高速傳送時(shí),一般要采用同步協議。


(2)面(miàn)向(xiàng)字符的同步協議


特點與格式:這(zhè)種(zhǒng)協議的典型代表是IBM公司的二進(jìn)制同步通信協議(BSC)。它的特點是一次傳送由若幹個字符組成(chéng)的數據塊,而不是隻傳送一個字符,并規定了10個字符作爲這(zhè)個數據塊的開(kāi)頭與結束标志以及整個傳輸過(guò)程的控制信息,它們也叫(jiào)做通信控制字。由于被(bèi)傳送的數據塊是由字符組成(chéng),故被(bèi)稱作面(miàn)向(xiàng)字符的協議。


特定字符(控制字符)的定義:由上面(miàn)的格式可以看出,數據塊的前後(hòu)都(dōu)加了幾個特定字符。SYN是同步字符(synchronous Character),每一幀開(kāi)始處都(dōu)有SYN,加一個SYN的稱單同步,加兩(liǎng)個SYN的稱雙同步設置同步字符是起(qǐ)聯絡作用,傳送數據時(shí),接收端不斷檢測,一旦出現同步字符,就(jiù)知道(dào)是一幀開(kāi)始了。接著(zhe)的SOH是序始字符(Start Of Header),它表示标題的開(kāi)始。标題中包括院地址、目的地址和路由指示等信息。STX是文始字符(Start Of Text),它标志著(zhe)傳送的正文(數據塊)開(kāi)始。數據塊就(jiù)是被(bèi)傳送的正文内容,由多個字符組成(chéng)。數據塊後(hòu)面(miàn)是組終字符ETB(End Of Transmission Block)或文終字符ETX(End Of Text),其中ETB用在正文很長(cháng)、需要分成(chéng)若幹個分數據塊、分别在不同幀中發(fā)送的場合,這(zhè)時(shí)在每個分數據塊後(hòu)面(miàn)用文終字符ETX。一幀的zui後(hòu)是校驗碼,它對(duì)從SOH開(kāi)始到ETX(或ETB)字段進(jìn)行校驗,校驗方式可以是縱橫奇偶校驗或CRC。另外,在面(miàn)向(xiàng)字符協議中還(hái)采用了一些其他通信控制字。


數據透明的實現:面(miàn)向(xiàng)字符的同步協議,不象異步起(qǐ)止協議那樣(yàng),需要在每個字符前後(hòu)附加起(qǐ)始和停止位,因此,傳輸效率提高了。同時(shí),由于采用了一些傳輸控制字,故增強了通信控制能(néng)力和校驗功能(néng)。但也存在一些問題,例如,如何區别數據字符代碼和特定字符代碼的問題,因爲在數據塊中完全有可能(néng)出現與特定字符代碼相同的數據字符,這(zhè)就(jiù)會(huì)發(fā)生誤解。比如正文有個與文終字符ETX的代碼相同的數據字符,接收端就(jiù)不會(huì)把它當作爲普通數據處理,而誤認爲是正文結束,因而産生差錯。因此,協議應具有將(jiāng)特定字符作爲普通數據處理的能(néng)力,這(zhè)種(zhǒng)能(néng)力叫(jiào)做“數據透明”。爲此,協議中設置了轉移字符DLE(Data Link Escape)。當把一個特定字符看成(chéng)數據時(shí),在它前面(miàn)要加一個DLE,這(zhè)樣(yàng)接收器收到一個DLE就(jiù)可預知下一個字符是數據字符,而不會(huì)把它當作控制字符來處理了。DLE本身也是特定字符,當它出現在數據塊中時(shí),也要在它前面(miàn)加上另一個DLE。這(zhè)種(zhǒng)方法叫(jiào)字符填充。字符填充實現起(qǐ)來相當麻煩,且依賴于字符的編碼。正是由于以上的缺點,故又産生了新的面(miàn)向(xiàng)比特的同步協議。


(3)面(miàn)向(xiàng)比特的同步協議


特點與格式:面(miàn)向(xiàng)比特的協議中zui具有代表性的是IBM的同步數據鏈路控制規程SDLC(Synchronous Data Link Control),國(guó)際标準化組織ISO(International Standard Organization)的數據鏈路控制規程HDLC(High Level Data link Control),美國(guó)國(guó)家标準協會(huì)(Americal National Standard Institute)的先進(jìn)數據通信規程ADCCP(Advanced Data Communication Control Procedure)。這(zhè)些協議的特點是所傳輸的一幀數據可以是任意位,而且它是靠約定的位組合模式,而不是靠特定字符來标志幀的開(kāi)始和結束,故稱“面(miàn)向(xiàng)比特”的協議。


幀信息的分段:SDLC/HDLC的一幀信息包括以下幾個場(Filed),所有場都(dōu)是從有效位開(kāi)始傳送。


(1)SDLC/HDLC标志字符:SDLC/HDLC協議規定,所有信息傳輸必須以一個标志字符開(kāi)始,且以同一個字符結束。這(zhè)個标志字符是 01111110,稱标志場(F)。從開(kāi)始标志到結束标志之間構成(chéng)一個完整的信息單位,稱爲一幀(Frame)。所有的信息是以幀的形傳輸的,而标志字符提供了每一幀的邊界。接收端可以通過(guò)搜索“01111110”來探知幀的開(kāi)頭和結束,以此建立幀同步。


(2)地址場和控制場:在标志場之後(hòu),可以有一個地址場A(Address)和一個控制場C(Control)。地址場用來規定與之通信的次站的地址。控制場可規定若幹個命令。SDLC規定A場和C場的寬度爲8位或16位。接收方必須檢查每個地址字節的*位,如果爲“0”,則後(hòu)面(miàn)跟著(zhe)另一個地址字節;若爲“1”,則該字節就(jiù)是zui後(hòu)一個地址字節。同理,如果控制場*個字節的*位爲爲“0”,則還(hái)有第二個控制場字節,否則就(jiù)隻有一個字節。


(3)信息場:跟在控制場之後(hòu)的是信息場I(Information)。I場包含有要傳送的數據,并不是每一幀都(dōu)必須有信息場。即數據場可以爲0,當它爲0時(shí),則這(zhè)一幀主要是控制命令。


(4)幀校驗信息:緊跟在信息場之後(hòu)的是兩(liǎng)字節的争校驗,幀校驗場稱爲FC(Frame Check)場或稱爲幀校驗序列FCS(Frame check Squence)。SDLC/HDLC均采用16位循環冗餘校驗碼CRC(Cyclic Redundancy Code)。除了标志場和自動插入的“0”以外,所有的信息都(dōu)參加CRC計算。


實際應用時(shí)的兩(liǎng)個技術問題:


(1)“0”位插入/删除:如上所述,SDLC/HDLC協議規定以01111110爲标志字節,但在信息場中也完全有可能(néng)有同一種(zhǒng)模式的字符,爲了把它與标志區分開(kāi)來,所以采取了“0”位插入和删除技術。具體作法是發(fā)送端在發(fā)送所有信息(除标志字節外)時(shí),隻要遇到連續5個“1”,就(jiù)自動插入一個“0”,當接收端在接收數據時(shí)(除标志字節)如果連續收到5個“1”,就(jiù)自動將(jiāng)其後(hòu)的一個“0”删除是,以恢複信息的原有形式。這(zhè)種(zhǒng)“0”位的插入和删除過(guò)程是由硬件自動完成(chéng)的。


(2)SDLC/HDLC異常結束:若在發(fā)送過(guò)程中出現錯誤,則SDLC/HDLC協議常用異常結束(Abort)字符,或稱爲失效序列使本幀作廢。在HDLC規程中,7個連續的“1”被(bèi)作爲失效字符,而在SDLC中失效字符是8個連續的“1”。當然在試銷序列中不使用“0”位插入/删除技術。SDLC/HDLC協議規定,在一幀之内不允許出現數據間隔。在兩(liǎng)幀之間,發(fā)送器可以連續輸出标志字符序列,也可以輸出連續的高電平,它被(bèi)稱爲空閑(Idle)信号。