九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Modbus通訊協(xié)議(二)
電力系統(tǒng)是一個綜合化的系統(tǒng),作為一個熟練的電工,對于通信有著一定的認識。否則很多問題,我們將無從下手。首先我們從廣泛應用于現場的Modbus-RTU模式,來開始講起。
Modbus-RTU模式是指當控制器設為在Modbus網絡上以RTU(遠程終端模式)模式通信,在消息中的每個8Bit包含兩個4Bit的十六進制字符。
說明:
Bit(位),信息的最小單位,簡寫為b,代表0或1的數位訊號。
Byte(字節(jié)),用于計量儲存容量的一種計量單位,簡寫為B,1Byte=8Bits,即1字節(jié)等于8位。1字節(jié)可以表示的內容個數為2的8次方,即256個。
Word(字),用來計算機一次性處理事務的一個固定長度的位組。對于工業(yè)現場控制設備常用的16位系統(tǒng)來說1Word=2Byte=16Bit。在計算機中大多數寄存器的尺寸就是一個字長。
一、信息幀的格式
使用RTU模式注意下面兩點:
1、信息幀發(fā)送至少要以3.5個字符時間的停頓間隔開始。在最后一個字符傳輸字符之后,一個至少3.5個字符時間的停頓標定了信息幀的結束。一個新的信息幀可在此停頓之后開始。如果一個新消息在小于3.5個字符時間內接著前個消息開始,接受的設備將認為它是前一信息幀的延續(xù),這將導致CRC碼的值出錯。
2、整個信息幀必須作為一連續(xù)的流傳輸。如果在幀完成之前有超過1.5字符時間的停頓時間,接受設備將刷新不完整的信息幀并認為存在丟包現象。
通過不同的網絡波特率來調整不同的間隔時間,這是最容易實現的。其幀格式及傳輸過程示意圖如下所示:
說明:
波特率是指模擬線路信號的速率,以波形每秒的振蕩數來衡量。
如果數據不壓縮,波特率等于每秒傳輸的數據位數,與比特率相等。
如數據進行了壓縮(為了提高通信速率),被壓縮的數據形成碼元(根據調制方式不同,碼元的位數不一)。
下面舉一個例子來說明調制
現在有如下一串01001111,共8Bit。
如果一位一位的來看,那就是有兩種不同的離散值0和1,只有高、低電平兩種幅度。
現在將每兩個bit作為一個符號,也就是兩位兩位的來看,即把這串信號這樣看:01 00 11 11。兩位兩位來看的話,就從之前只有高、低電平幅度(兩種不同的離散值)變成了四種不同的幅度(就是概率里面的排列組合得出2*2=4):00(最低)、01(低)、10(高)、11(最高),有了四種不同的離散值。
上述信號也就變成了「低」「最低」「最高」「最高」,四種幅度對應成0、1、2、3,那么信號串就變成了1、0、3、3 。
上述過程就是調制。
那么在數據進行過壓縮的情況下,比特率=波特率*log2(N),其中N表示離散值的數量。
示例:波特率為240Baud,有8種電平與之對應,則其與之對應的比特率為240*log2(8)=720bps
下面來分項來說說信息幀中的各部分:
1、地址碼
地址碼是信息幀的第一個字節(jié)(8位),從0到255。每個從機都必須有唯一的地址。在下行幀中,表明只有符合地址碼的從機才能接收由主機發(fā)送來的信息。在上行幀中,表明該信息來自于何處。
備注:如果地址為0x00,則認為是一個廣播命令,就是所有從機要接收主機發(fā)來的信息。規(guī)約規(guī)定廣播命令必須是寫命令,并且從站也不發(fā)送回答。
2、功能碼
功能碼是信息幀的第二個字節(jié)。ModBus通訊規(guī)約定義功能號為1到127。大多數設備只利用其中一部分功能碼。下行幀中,通過功能碼告訴從機執(zhí)行什么動作。在上行幀中,從機發(fā)送的功能碼與主機發(fā)送來的功能碼一樣,并表明從機已響應主機進行的操作,否則表明從機沒有響應操作或發(fā)送出錯。其常用功能碼如下所示:
3、數據
它因不同的功能碼及不同的從機而不同。數據區(qū)可以是實際數據、狀態(tài)值、參考地址、數據長度等等。
4、CRC碼
CRC碼由發(fā)送設備計算,放置于發(fā)送信息的尾部。接受信息的設備再重新計算接收到的信息的CRC碼,比較計算得到的CRC碼是否與接收到的相符(或將接收到的信息除以約定的除數,應無余數),如果不相符(有余數),則表明出錯。它用于保證主機或從機對傳送過程中出錯的信息起不了作用,增加了系統(tǒng)的安全與效率。
下面我就來說一下CRC碼是如何計算出來的。
在介紹CRC碼的計算過程之前,我們先來談談“模2除法”。
A、模2運算
“模2除法”與“算術除法”類似,但它既不向上借位,也不比較除數和被除數的相同位數值大小,只要以相同位數進行相除即可。
“模2加法”為1+1=0,1+0=1,0+0=0,0+1=1;
“模2減法”為1-1=0,1-0=1,0-0=0,0-1=1;
大家仔細看看上面的運算,是否覺得非常像一種邏輯運算?
沒錯,上述運算相當于二進制中的邏輯異或運算。也就是比較后,兩者對應位相同則結果為“0”,不同則結果為“1”。下面以100101除以1110為例,為大家展示一下“模2除法”的運算,如下圖示:
上述算式的商為11,余數為1。
B、CRC校驗步驟
1、先選擇一個用于在接收端進行校驗時,對接收的幀進行除法運算的除數。此除數可以隨機選擇,也可按標準選擇。通常以多項式的方式表示,這個多項式也稱之為“生成多項式”。
備注:除數的最高位和最低位必須為1。
2、看已選定的除數二進制位數k,,然后在要發(fā)送的數據幀(m位)后面加上k-1位“0”,然后用已經加上k-1位“0”的新幀(m+k-1位)以“模2除法”方式除以上面所說的除數,所得到的余數就是該幀的CRC校驗碼,也稱為FCS(幀校驗序列)。
備注:余數的位數一定要是比除數位數只能少一位,哪怕前面的位是0,甚至全為0也不能省略。
3、再把這個校驗碼附加在原在原數據幀后面,構成一個新幀發(fā)送到接收端,最后在接收端再把這個新幀以“模2除法”方式除以前面選擇的余數,如果沒有余數,則該幀在傳輸過程中沒有出錯,否則就是出現了差錯。(或者重新計算CRC碼)。
C、示例
下面舉個例子來說明,CRC碼的計算過程。
設生成多項式為
問:二進制序列為10110011的CRC校驗碼是什么?發(fā)送序列是什么?
G(x)的位數=最高位的冪次+1=4+1=5,所被除數序列為原序列加上【G(X)的位數-1】個數的“0”,即5-1=4。綜上,被除數等于101100110000。
多項式各冪次的系數,由高到低依次排序即為除數。此例中為11001。
開始進行“模2除法運算”,如下圖所示:
計算結果:商為11010100,余數為0100。即題干中二進制序列的CRC校驗碼為0100。
發(fā)送序列為101100110100。
備注:http://www.ip33.com/crc.html,在上述網站中可以方便地在線計算CRC碼。
二、modbus報文實例解析
注:以下報文的CRC算法為CRC-16/MODBUS。
A、01號命令
下行幀:11 01 00 13 00 25 F9 C8
11為從機地址(1byte),地址號17;
01為功能碼(1bye),讀線圈狀態(tài);
0013為寄存器起始地址(2byte),起始地址19;
備注:程序的起始地址為0。起始地址19實際上是第20號接觸器。
0025為數據數量(2byte),37個狀態(tài)量,需要5個字節(jié)的空間;
F9C8為CRC碼(2byte)。
釋義:讀取來自17號從機以20號接觸器為起始的37個接觸器狀態(tài)。
上行幀:11 01 05 CD 6B B2 0E 1B 18 8D
11為從機地址(1byte),地址號17;
01為功能碼(1byte),讀線圈狀態(tài);
05為數據區(qū)字節(jié)數(1byte),5個字節(jié);
CD 6B B2 0E 1B為數據(5byte),僅解析第一個數據(CD),CD轉為二進制序列為11001101,從低位到高位讀,每一位對應一個接觸器的狀態(tài),0為分,1為合。
綜上數據段中的CD,表示20號接觸器合位、21號分位、22號合位、23號合位、24號分位、25號分位、26號合位、27號合位;
18 8D為CRC碼(2byte)。
釋義:上送來自17號從機的接觸器狀態(tài),其數據字節(jié)數為5,信息為20號接觸器合位、21號分位、22號合位、23號合位、24號分位、25號分位、26號合位、27號合位……
備注:
若詢問的數據數量不是8的整倍數,那么最高字節(jié)的多余位補0,此時的0不代表任何意義。在此例里,數據段中的1B,低位B則表示52號分位,53號合位,54號分位,55號合位;它的高位1表示,56合位,其余位補0,無意義。
B、02號命令
下行幀:11 02 00 13 00 25 F9 40
11為從機地址(1byte),地址號17;
02為功能碼(1byte),讀離散輸入狀態(tài);
0013為寄存器起始地址(2byte),起始地址19;
0025為數據數量(2byte),37個狀態(tài)量,需要5個字節(jié)的空間;
F940為CRC碼(2byte)。
釋義:讀取來自17號從機以20號開關為起始的37個斷路器狀態(tài)。
說明:
01讀取的是線圈狀態(tài),只能代表電保持的開關器件的狀態(tài),如是斷路器這種只需要短時合閘脈沖,線圈不需要長期得電,無法用01取得位置信號。
02讀取的是開入狀態(tài),可以是斷路器的輔助觸點,也可以行程開關等等器件,所以可以讀取機械保持的斷路器的位置信號。
上行幀:11 02 05 CD 6B B2 0E 1B 1B BD
11為從機地址(1byte),地址號17;
02為功能碼(1byte),讀離散輸入狀態(tài);
05為數據區(qū)字節(jié)數(1byte),5個字節(jié);
CD 6B B2 0E 1B為數據(5byte),此次解析第二個數據(6B),6B轉為二進制序列為01101011,從低位到高位讀,每一位對應一個斷路器的狀態(tài),0為分,1為合。
綜上數據段中的6B,表示28號斷路器合位、29號合位、30號分位、31號合位、32號分位、33號合位、34號合位、35號分位;
1BBD為CRC碼(2byte)。
釋義:上送來自17號從機的斷路器狀態(tài),其數據字節(jié)數為5,信息為20號斷路器合位、21號分位、22號合位、23號合位、24號分位、25號分位、26號合位、27號合位……
C、03號命令
下行幀:11 03 00 6B 00 03 FF 8C
11為從機地址(1byte),地址號17;
03為功能碼(1byte),讀保持寄存器;
006B為寄存器起始地址(2byte),起始地址107;
0003為數據數量(2byte),3個模擬量;
FF 8C為CRC碼(2byte)。
釋義:讀取17號從機中以107號儀表為起始的3個儀表的模擬量。
上行幀:11 03 06 00 DC 00 DC 00 DC FD D1
11為從機地址(1byte),地址號17;
03為功能碼(1byte),讀保持寄存器;
06為數據區(qū)字節(jié)數(1byte),6個字節(jié);
00 DC 00 DC 00 DC數據(6byte),表示第108號的模擬量為220,第109號的模擬量為220,第110號的模擬量為220;
備注:一個模擬量的標準長度為2個字節(jié)。
FD D1為CRC碼(2byte)。
釋義:上送來自17號從機中的模擬量,其數據字節(jié)數為6,信息為表示第108號模擬量為220,第109號模擬量為220,第110號模擬量為220。此條數據顯然是電壓表的三相相電壓數據。
D、04號命令
a) 模擬信號
下行幀:11 04 00 6B 00 03 47 C3
11為從機地址(1byte),地址號17;
04為功能碼(1byte),讀輸入寄存器;
006B為起始地址(2byte),地址號107;
0003為數據數量(2byte),3個模擬量;
47C3為CRC碼(2byte)。
釋義:讀取17號從機的以108號傳感器為起始的3個溫度傳感器輸出信號。
上行幀:11 04 06 00 0A 00 0B 00 09 96 84
11為從機地址(1byte),地址號17;
04為功能碼(1byte),讀輸入寄存器;
06為數據區(qū)字節(jié)數(1byte),6個字節(jié);
00 0A00 0B 00 09為數據(6byte),表示108號、109號、110號溫度傳感器輸出信號分別為10mA、11mA、9mA。
設溫度傳感器的溫度與電流之間關系為I=16T/200+4,則可得108號、109號、110號溫度傳感器溫度值為75℃、87.5℃、62.5℃;
9684為CRC碼(2byte)。
釋義:上送17號從機的以108號傳感器為起始的3個溫度傳感器的測值,依次分別為75℃、87.5℃、62.5℃。
b)SOE數據
1、SOE簡介
SOE(Sequence Of Event),事件順序記錄,記錄故障發(fā)生的時間和事件的類型。在電力系統(tǒng),一旦在系統(tǒng)聯(lián)調或生產運行過程中發(fā)生停機,需要立即查找事故原因,但由于電力系統(tǒng)的保護動作過程復雜,實時性高,一般的報警記錄及歷史記錄已無法用來進行準確的事故分析。
這時就需要分辨率更高的SOE來進行事故的事后分析,查找事故的第一原因。其電平變化分辨率可達1ms甚至更低。
GPS時鐘同步性能的優(yōu)劣會對SOE的精確性產生至關重要的影響。
2、 讀SOE功能實現方式
由于在標準中沒有定義讀SOE數據的功能碼和幀格式,那么很多廠家會自定義一些功能碼或著使用04或03而改變其幀格式。所以讀SOE功能的實現也可以說是八仙過海。本文中僅舉一例來講解上位機讀PLC中SOE信號的實現。
①  PLC初始化時將事件交換字(通俗的說法即是SOE未讀數量)置0,同時開辟一個SOE緩沖數據區(qū)(存儲無法及時上傳的事件),可循環(huán)存放50條SOE數據(通俗的說就是SOE數據就存50條,等超過50條指針就歸零,然后在一條一條的往上走,把舊的覆蓋,此時沒有覆蓋的舊的還是存在的,直到指針更新到該條,此指針跟隨上位機的讀指令移動)。
②  當上位機需要讀取因通訊中斷等原因導致滯留SOE數據時,首先讀取事件交換字,檢查是否為0。當事件交換字不為0時,讀取事件記錄,并進行處理。完畢后將事件交換字置0。
3、報文實例解析
設事件交換字存儲地址為0,SOE讀指針地址為1,大小均為1個字;SOE讀指針指針指向46時,對應地址為256;電平變化分辨率為0.1ms。裝置部分點表如下所示:
下面開始報文分析:
下行幀:11 04 00 00 00 01 5A 33
11為從機地址(1byte),地址號17;
04為功能碼(1byte),讀輸入寄存器;
0000為事件交換字地址(2byte),地址號0;
0001為SOE讀指針地址(2byte),地址號1;
5A33為CRC碼(2byte)
釋義:詢問17號從機的事件交換字及當前SOE指針位置。
上行幀:11 04 04 00 02 00 2e 5A AA
11為從機地址(1byte),地址號17;
04為功能碼(1byte),讀輸入寄存器;
04為數據區(qū)字節(jié)數(1byte),4個字節(jié);
0002為事件交換字(2byte),表示有2個SOE數據滯留在SOE緩沖區(qū)內;
002e為當前指針位置(2byte),表示指針移動到46的位置;
5AAA為CRC碼(2byte)。
釋義:17號從機回應主機:事件交換字為2,當前SOE指針位置為46。
下行幀:11 04 01 00 00 10 AA F2
11為從機地址(1byte),地址號17;
04為功能碼(1byte),讀輸入寄存器;
0100為指針46位置對應的地址,地址號256;
0010為數據占用寄存器個數,16個;
AAF2為CRC碼(2byte)。
釋義:讀取17號從機的以256為起始地址的SOE數據,共16個寄存器。
上行幀:11 04 20 02 01 09 02 0B 0C 0E 0D 01 02 00 02 00 01 00 0001 03 09 02 0C 0B 09 0F 03 14 00 04 01 01 00 00 2E 7D
11為從機地址(1byte),地址號17;
04為功能碼(1byte),讀輸入寄存器;
20為數據區(qū)字節(jié)數(1byte),32字節(jié);
02 01 09 02 0B 0C 0E 0D 01 02 00 02 00 01 00 00為第一組SOE數據,其中尾部的四個字節(jié)00 01 00 00為備用數據,無任何意義。第一個字節(jié)為SOE類型,第二個字節(jié)為SOE的源,隨后8個字節(jié)為時標,而后兩個字節(jié)為SOE的測點。
表示2009年2月11日12點14分13秒25.8毫秒2號開關手動分閘。
01 03 09 02 0C 0B 09 0F 03 14 00 04 01 01 00 00 為第二組SOE數據,其中尾部的四個字節(jié)01 01 00 00為備用數據,無任何意義。第一個字節(jié)為SOE類型,第二個字節(jié)為SOE的源,隨后8個字節(jié)為時標,而后兩個字節(jié)為SOE的測點。
表示2009年2月12日11點9分15秒78.8毫秒4號開關通訊合閘。
2E7D為CRC碼。
釋義:17從機上送32字節(jié)的SOE數據:2009年2月11日12點14分13秒25.8毫秒2號開關手動分閘;2009年2月12日11點9分15秒78.8毫秒4號開關通訊合閘。
E、05號命令
下行幀:11 05 00 AC FF 00 F3 F6
11為從機地址(1byte),地址號17;
01為功能碼(1byte),寫單個線圈;
00AC為下置的寄存器地址(2byte),寄存器地址號為172;
FF00為下置的數據;
F3F6為CRC碼(2byte)。
釋義:合上17號從機的173號開關。
備注:開關的分閘命令為0x00,合閘命令為FF00,其余數值均為非法。
上行幀:11 05 00 AC FF 00 F3 F6
此幀完全重復下行幀的命令,相當于確認命令已執(zhí)行。
釋義:17號從機的173號開關已合閘。
F、06號命令
下行幀:11 06 00 01 00 32 79 B9
11為從機地址(1byte),地址號17;
06為功能碼(1byte),寫單個保持寄存器;
0001為下置的寄存器地址(2byte),寄存器地址號為1;
0032為下置的數據,數據為50;
79B9為CRC碼(2byte)。
釋義:將17號從機里地址為1的保持寄存器中數據置為50。此條數據可以是將18號從機的第2號變頻器的輸出頻率置為50HZ。
上行幀:11 06 00 01 00 32 79 B9
釋義:表示置位成功,即17號從機的第2號變頻器的輸出頻率已置為50HZ。
G、15號命令
下行幀:110F 00 13 00 02 01 01 98 9B
11為從機地址(1byte),地址號17;
0F為功能碼(1byte),寫多個線圈;
0013為起始地址(2byte),起始地址為19;
0002為強置個數(2byte),個數為2;
01為強置字節(jié)數(1byte),1個字節(jié);
01為強置數據(1byte),強置數據為0001,由于強置個數為2個,所以第一位與第二位無效;
989B為CRC碼(2byte)。
釋義:合上17號從機的20號開關,分開其21號開關。此命令可以作消防聯(lián)動,將風柜出風口閥門配置21號開關,防排煙風機的啟動開關配置為20號開關,可組成最簡單的消防聯(lián)動。
上行幀:11 0F 00 13 00 02 5F 27
11為從機地址(1byte),地址號17;
0F為功能碼(1byte),寫多個線圈;
0013為起始地址(2byte),起始地址為19;
0002為強置個數(2byte),個數為2;
5F23為CRC碼(2byte)。
釋義:已合上17號從機的20號開關,已分開其21號開關。
H、16號命令
設系統(tǒng)時間地址為10000~10004。
下行幀:11 10 27 10 00 05 0A 07 D2 0A 09 00 0C 0E 0D 00 00 DD D5
11為從機地址(1byte),地址號17;
10為功能碼(1byte),寫多個保持寄存器;
2710為起始地址(2byte),起始地址為10000;
0005為寫寄存器個數,占用5個寄存器;
0A為數據區(qū)字節(jié)數,10個字節(jié);
07 D2 0A 09 00 0C 0E 0D 00 00為數據(10byte),表示2002年9月10日12點14分13秒0毫秒;
DDD5為CRC碼(2byte)。
釋義:將系統(tǒng)時間置為2002年9月10日12點14分13秒0毫秒。
上行幀:11 10 27 10 00 05 EB 09
11為從機地址(1byte),地址號17;
10為功能碼(1byte),寫多個保持寄存器;
2710為起始地址(2byte),起始地址為10000;
0005為寫寄存器個數,占用5個寄存器;
EB09為CRC碼(2byte)。
釋義:系統(tǒng)時間已成功重置。
三、系統(tǒng)的架構與數據讀取循環(huán)周期
A、系統(tǒng)的架構流程
當我們在現場需要搭建一個PLC與多個電力儀表進行數據交換的網路時,我們要完成哪些事情呢?此電力儀表需支持RS485及ModBus-RTU。
第一步:按菊花瓣結構的通信鏈路要求去接線,將PLC的通信接口與N個電力儀表連接起來,最后一個電力儀表的末端和PLC端要配置120Ω的終端電阻;
說明:
菊花瓣結構如下圖所示:
每個中間站的接線其實就是一個節(jié)點,節(jié)點中既有1條進線,也有一條出線,還有引至自身的內部引線,這樣的接法即是菊花瓣接法。
菊花瓣接法有著以下的特點:
1、任何一個節(jié)點如果出現斷路,則后續(xù)的節(jié)點無法進行通信;
2、通信介質頭尾都安裝了120Ω的終端電阻,用途是吸收反射波,建立穩(wěn)定的電平關系;
3、通信線纜的屏蔽層需要接地,而且只能存在1個接地點,若存在兩個接地點,則接地點之間可能會存在環(huán)流,引起干擾;
4、通信介質必須采用雙絞線。采用雙絞線的目的是利用電感效應來中和分布電容。
第二步:在電力儀表中設置好各自的地址,地址依次遞增;
第三步:在編程軟件中設定好與電力儀表相匹配的通信速率;
第四步:在編程軟件中按電力儀表的數據區(qū)地址碼設定好Modbus通信碼,以及各個子站的循環(huán)關系;
第五步:在PLC的內存中開辟專用的數據區(qū),存放從電力儀表讀取到并處理的信息,以便讓更高層的總站來讀取信息。解釋此數據區(qū)的定義的便是點表了。
B、數據讀取循環(huán)周期
某電力儀表組,個數為30,地址是01H-1E。在電力儀表內存第2000的位置上,放置了三相電流和三相電壓等6個數據,每個數據占用兩個字節(jié),共12個字節(jié)。此電力儀表的通訊速率為9600bps。串口通信中不使用奇偶校驗位。上行幀與下行幀之間的間隔時間位10ms。
現截取一段通訊報文如下所示:
下行幀:01 03 07 D0 00 06 C5 45
上行幀:01 03 0C 00 64 0064 0064 00 DC 00 DC 00 DC D6 F5
現問:PLC輪詢完所有電力儀表需要多少時間?
1個字節(jié)有8個數據位,1個起始位,1個奇偶校驗位(實際使用中此位常常取消),1個停止位。
由于題干中說明了其奇偶校驗位取消,則1個字節(jié)長度為10Bit。由于比特率位9600bps,所以1秒鐘可以傳輸960個字節(jié)。
一輪對話中的字節(jié)數為下行幀(8byte)+上行幀(17byte)=25byte。所以傳送上、下行幀總耗時為25/960=38.4≈26.04ms,加上等待的時間(10ms)。
完成一輪對話的時間為26.04+10=36.04ms
所以輪詢完30個電力儀表的時間是30*36.04ms≈1.1s。
因為忽略一輪對話結束后主機再次發(fā)下行幀的等待時間,所以實際時間會比理論值稍微大一點。
順帶把報文翻譯一下:
下行幀:讀1號電力儀表中以2000為起始地址的連續(xù)6個模擬量。
上行幀:1號電力儀表中連續(xù)的6個模擬量依次為:220、220、220、100、100、100。
顯然前三個數值是三相電壓,后三個數值是三相電流。
說明:
有朋友會問我們查看報文時,看不到有什么起始位、奇偶校驗位、停止位,這是怎么回事?
起始位,停止位,奇偶校驗位,空閑位的信號,由“發(fā)送移位寄存器”自動插入,在接收方,“接收移位寄存器”接收到一幀完整的信息(起始、數據、校驗、停止)后,僅把數據位的各位送入“數據輸入寄存器”,即CPU從“數據輸入寄存器”中讀到的信息,只是有效數據,不包含起始位、奇偶校驗位與停止位。
通俗的說,我們能看到的是應用層,而起始位、停止位、奇偶校驗位屬于物理層,所以是看不到這些位的,如果非要看的話,就需要用示波器了。
結合下面通信中的過程圖,來簡要說明一下這種物理層的校驗方式:
1、當通信開始時,信號線為空閑(邏輯1),當檢測到由1跳變至0時,開始“接收時鐘”計數。
2、當計到8個時鐘時,對輸入信號進行檢測,若依舊為低電平,則確認此跳變信號為“起始位(B)”信號(邏輯0),而不是干擾信號。
3、當接收端檢測到起始位后,隔16個接收時鐘,對輸入信號檢測一次,把對應的值作為D0位數據。
4、再隔16個接收時鐘,對輸入信號檢測一次,把對應的值作為D1位數據,直到全部數據位都輸入完畢。
注意:在發(fā)送時,順序為LSB發(fā)至MSB,即由低往高發(fā)。如圖中所示,其數據是45H=0100 0101,但其發(fā)送順序是1010 0010,切莫倒置。
5、接收奇偶校驗位。
6、當接收完規(guī)定的數據位個數和校驗位后,通信接口電路希望收到停止位S(邏輯1),若此時未收到邏輯1,說明出現了錯誤,在狀態(tài)寄存器中置“幀錯誤”標志。若沒有錯誤,對全部數據進行奇偶校驗,校驗無錯誤時,把數據位從移位寄存器送入數據輸入寄存器,若校驗錯誤,在狀態(tài)寄存器中置奇偶錯誤標志。
還是以上圖數據45H為例,說明一下奇偶校驗。45H的二進制序列為0100 0101。
如果采用奇校驗,奇偶校驗位就是0。這樣才能保證發(fā)送出去的數據“1”的個數為奇數,本例中數據中“1”個數為3,所以奇偶校驗位就是0。
如果采用偶校驗,奇偶校驗位就是1,這樣才能保證發(fā)送出去的數據“1”的個數為偶數,本例中數據中“1”個數為3,所以奇偶校驗位就是1,這樣數據中就有了4個“1”,這樣才能滿足偶校驗。
7、本幀信息接收完畢,把線路上的高電平作為空閑位。
備注:本段文字中提到的時鐘,是指時鐘周期,是晶振頻率的倒數。它是計算機中最基本,最小的時間單位。
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MODBUS RTU/TCP協(xié)議及常用功能碼詳解
IM1256多路電能計量模塊使用說明
MODBUS通訊的C語言實現與簡單講解
MODBUS詳解精簡版
Modbus通訊協(xié)議“拍了拍你”
大神是這樣理解 串口通訊與MODBUS協(xié)議的
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服