安科瑞AMC16Z配電監(jiān)控RS485通訊導(dǎo)軌電表采用Modbus-RTU協(xié)議:“9600,8,1,n",其中為默認(rèn)波特率, 可通過(guò)通訊修改等,參量地址見(jiàn)7.5通訊參量地址表;8表示有8個(gè)數(shù)據(jù)位;n表示無(wú)奇偶校 驗(yàn)位;1表示有1個(gè)停止位。
產(chǎn)品型號(hào)
技術(shù)參數(shù)
外形結(jié)構(gòu)
AMC16Z-FD16高精度電壓監(jiān)測(cè)裝置
5 協(xié)議
當(dāng)數(shù)據(jù)幀到達(dá)終端設(shè)備時(shí),它通過(guò)一個(gè)簡(jiǎn)單的“端口"進(jìn)入被尋址到的設(shè)備,該設(shè)備去掉數(shù)據(jù)幀的“信 封"(數(shù)據(jù)頭),讀取數(shù)據(jù),如果沒(méi)有錯(cuò)誤,就執(zhí)行數(shù)據(jù)所請(qǐng)求的任務(wù),然后,它將自己生成的數(shù)據(jù)加入到取 得的“信封"中,把數(shù)據(jù)幀返回給發(fā)送者。返回的響應(yīng)數(shù)據(jù)中包含了以下內(nèi)容:終端從機(jī)地址(Address)、被 執(zhí)行了的命令(Function)、執(zhí)行命令生成的被請(qǐng)求數(shù)據(jù)(Data)和一個(gè)CRC校驗(yàn)碼(Check)。發(fā)生任何錯(cuò)誤 都不會(huì)有成功的響應(yīng),或者返回一個(gè)錯(cuò)誤指示幀。
5.2.1 數(shù)據(jù)幀格式
5.2.2 地址(Address)域
地址域在幀首,由一個(gè)字節(jié)(8-Bits,8位二進(jìn)制碼)組成,十進(jìn)制為0~255,在我們的系統(tǒng)中只使用1~ 247,其它地址保留。這些位標(biāo)明了用戶的終端設(shè)備的地址,該設(shè)備將接收來(lái)自與之相連的主機(jī)數(shù)據(jù)。同一 總線上每個(gè)終端設(shè)備的地址必須是的,只有被尋址到的終端才會(huì)響應(yīng)包含了該地址的查詢。當(dāng)終端發(fā)送回 一個(gè)響應(yīng),響應(yīng)中的從機(jī)地址數(shù)據(jù)便告訴了主機(jī)哪臺(tái)終端正與之進(jìn)行通信。
5.2.3 功能(Function)域
功能域代碼告訴了被尋址到的終端執(zhí)行何種功能。下表列出了該系列儀表用到的功能碼,以及它們的意義 和功能
5.2.4 數(shù)據(jù)(Data)域
數(shù)據(jù)域包含了終端執(zhí)行特定功能所需的數(shù)據(jù)或終端響應(yīng)查詢時(shí)采集到的數(shù)據(jù)。這些數(shù)據(jù)可能是數(shù)值、參量地址或者設(shè)置值。
例如:功能域告訴終端讀取一個(gè)寄存器,數(shù)據(jù)域則需要指明從哪個(gè)寄存器開(kāi)始及讀取多少個(gè)數(shù)據(jù),內(nèi)嵌的地址和數(shù)據(jù)依照類型和從機(jī)之間的不同而內(nèi)容有所不同。
5.2.5 錯(cuò)誤校驗(yàn)(Check)域
該域采用CRC16循環(huán)冗余校驗(yàn),允許主機(jī)和終端檢查傳輸過(guò)程中的錯(cuò)誤。有時(shí)由于電噪聲和其它干擾,一組數(shù)據(jù)從一個(gè)設(shè)備傳輸?shù)搅硪粋€(gè)設(shè)備時(shí),在線路上可能會(huì)發(fā)生一些改變,錯(cuò)誤校驗(yàn)?zāi)軌虮WC主機(jī)或從機(jī)不去響應(yīng)那些發(fā)生改變的數(shù)據(jù),這就提高了系統(tǒng)的安全性、可靠性和效率。
5.3 錯(cuò)誤校驗(yàn)的方法
錯(cuò)誤校驗(yàn)(CRC)域占用兩個(gè)字節(jié),包含了一個(gè)16位的二進(jìn)制值。CRC值由傳輸設(shè)備計(jì)算出來(lái),然后附加到數(shù)據(jù)幀上,接收設(shè)備在接受數(shù)據(jù)時(shí)重新計(jì)算CRC值,然后與接收到的CRC域中的值進(jìn)行比較,如果這兩個(gè)值不相等,就發(fā)生了錯(cuò)誤
CRC運(yùn)算時(shí),首先將一個(gè)16位的寄存器預(yù)置為全1,然后連續(xù)把數(shù)據(jù)幀中的每個(gè)字節(jié)中的8位與該寄存器的當(dāng)前值進(jìn)行運(yùn)算,僅僅每個(gè)字節(jié)的8個(gè)數(shù)據(jù)位參與生成CRC,起始位和停止位以及可能使用的奇偶位都不影響CRC。在生成CRC時(shí),每個(gè)字節(jié)的8位與寄存器中的內(nèi)容進(jìn)行異或,然后將結(jié)果向低位移位,高位則用“0"補(bǔ)
充,(LSB)移出并檢測(cè),如果是1,該寄存器就與一個(gè)預(yù)設(shè)的固定值(0A001H)進(jìn)行一次異或運(yùn)算,如果為0,不作任何處理。
CRC生成流程:
1 預(yù)置一個(gè)16位寄存器為0FFFFH(全1),稱之為CRC寄存器。
2 把數(shù)據(jù)幀中的字節(jié)的8位與CRC寄存器中的低字節(jié)進(jìn)行異或運(yùn)算,結(jié)果存回CRC寄存器。
3 將CRC寄存器向右移一位,填0,移出并檢測(cè)。
4 如果移出為0:重復(fù)第3步(下一次移位);如果移出為1:將CRC寄存器與一個(gè)預(yù)設(shè)固定值(0A001H)進(jìn)行異或運(yùn)算。
5 重復(fù)第3步和第4步直到8次移位。這樣就處理完了一個(gè)完整的8位。
6 重復(fù)第2步到第5步來(lái)處理下一個(gè)8位,直到所有的字節(jié)處理結(jié)束。
7 最終CRC寄存器的值就是CRC的值。
此外還有一種利用查表計(jì)算CRC的方法,它的主要特點(diǎn)是計(jì)算速度快,但是表格需要較大的存儲(chǔ)空間,該方法此處不再贅述,請(qǐng)查閱相關(guān)資料
安科瑞AMC16Z配電監(jiān)控RS485通訊導(dǎo)軌電表