未曉妃
安科瑞電氣股份有限公司 上海嘉定 201801
1 通訊說明
Modbus-RTU通訊協(xié)議詳細(xì)定義了校驗(yàn)碼、數(shù)據(jù)序列等,這些都是特定數(shù)據(jù)交換的必要內(nèi)容。MODBUS協(xié)議在一根通訊線上使用主從應(yīng)答式連接(半雙工)。當(dāng)主計(jì)算機(jī)的信號(hào)尋址到一臺(tái)終端設(shè)備(從機(jī))后,終端設(shè)備發(fā)出應(yīng)答信號(hào)傳輸給主機(jī)。
MODBUS協(xié)議只允許在主機(jī)(PC,PLC等)和終端設(shè)備之間通訊,而不允許獨(dú)立的終端設(shè)備之間的數(shù)據(jù)交換,這樣各終端設(shè)備不會(huì)在它們初始化時(shí)占據(jù)通訊線路,而用于響應(yīng)到達(dá)本機(jī)的查詢信號(hào)。
特別說明:
通信口若是RS485,波特率可在 1200bps、2400,bps、4800 bps、9600bps、19200 bps 和 38400 bps 之間設(shè)置,校驗(yàn)位默認(rèn)為無校驗(yàn)。
儀表的 RS485 通信口要求使用屏蔽雙絞線連接,布線時(shí)要考慮整個(gè)網(wǎng)絡(luò)的布局:如通信線纜的長度、走向、上位機(jī)的位置、網(wǎng)絡(luò)末端的匹配電阻、通信轉(zhuǎn)換器、網(wǎng)絡(luò)可擴(kuò)展性、網(wǎng)絡(luò)覆蓋范圍、環(huán)境的電磁干擾情況等因素,都要綜合考慮。
注:
1、 在布線工程上要嚴(yán)格按要求施工;
2、 對(duì)于暫時(shí)不需要通信的儀表都要將他們連接到 RS-485 網(wǎng)絡(luò)上,以便于診斷和測(cè)試;
3、 進(jìn)行 RS-485 電纜連接時(shí),盡量使用雙色雙絞線,所有的 485 通信口“A”端接同一種顏色,“B”端接另一種顏色。
4、 RS-485 總線(從上位機(jī)通信口到任一被連接儀表終端通信口)長不超過 1200 米。
2 信息幀格式
地址碼 | 功能碼 | 數(shù)據(jù)區(qū) | CRC效驗(yàn)碼 |
1字節(jié) | 1字節(jié) | n字節(jié) | 2字節(jié) |
地址碼:地址碼在幀的開始部分,由一個(gè)字節(jié)(8位二進(jìn)制碼)組成,十進(jìn)制為0~255,在PZ儀表中只使用1~247,其它地址保留。這些位標(biāo)明了用戶的終端設(shè)備的地址,該設(shè)備將接收來自與之相連的主機(jī)數(shù)據(jù)。每個(gè)終端設(shè)備的地址都是唯*,僅僅被尋址到的終端會(huì)響應(yīng)包含了該地址的查詢。當(dāng)終端發(fā)送回一個(gè)響應(yīng),響應(yīng)中的從機(jī)地址數(shù)據(jù)便告訴了主機(jī)哪臺(tái)終端正與之進(jìn)行通信。
功能碼:功能碼告訴了被尋址到的終端執(zhí)行何種功能。下表列出了該系列儀表用到的功能碼,以及它們的意義和功能。
功能 | 定義 | 操作 |
03H/04H | 讀數(shù)據(jù)寄存器 | 獲得一個(gè)或多個(gè)寄存器的當(dāng)前二進(jìn)制值 |
10H | 預(yù)置多寄存器 | 設(shè)定二進(jìn)制值到一系列多寄存器中 |
數(shù)據(jù)區(qū):數(shù)據(jù)區(qū)包含了終端執(zhí)行特定功能所需要的數(shù)據(jù)或者終端響應(yīng)查詢時(shí)采集到的數(shù)據(jù)。這些數(shù)據(jù)的內(nèi)容可能是數(shù)值、參考地址或者設(shè)置值。
例如:功能碼告訴終端讀取一個(gè)寄存器,數(shù)據(jù)區(qū)則需要指明從哪個(gè)寄存器開始及讀取多少個(gè)數(shù)據(jù),內(nèi)嵌的地址和數(shù)據(jù)依照類型和從機(jī)之間的不同內(nèi)容而有所不同。
CRC效驗(yàn)碼:錯(cuò)誤校驗(yàn)(CRC)域占用兩個(gè)字節(jié),包含了一個(gè)16位的二進(jìn)制值。CRC值由傳輸設(shè)備計(jì)算出來,然后附加到數(shù)據(jù)幀上,接收設(shè)備在接收數(shù)據(jù)時(shí)重新計(jì)算CRC值,然后與接收到的CRC域中的值進(jìn)行比較,如果這兩個(gè)值不相等,就發(fā)生了錯(cuò)誤。
生成一個(gè)CRC的流程為:
a、預(yù)置一個(gè)16位寄存器為0FFFFH(全1),稱之為CRC寄存器。
b、把數(shù)據(jù)幀中的*一個(gè)字節(jié)的8位與CRC寄存器中的低字節(jié)進(jìn)行異或運(yùn)算,結(jié)果存回CRC寄存器。
c、將CRC寄存器向右移一位,*高位填以0,低位移出并檢測(cè)。
d、如果低位為0,重復(fù)*三步(下一次移位);如果低位為1,將CRC寄存器與一個(gè)預(yù)設(shè)的固定值(0A001H)進(jìn)行異或運(yùn)算。
e、重復(fù)*三步和*四步直到8次移位。這樣處理完了一個(gè)完整的八位。
f、重復(fù)*2步到*5步來處理下一個(gè)八位,直到所有的字節(jié)處理結(jié)束。
g、*終CRC寄存器的值就是CRC的值。
此外還有一種利用預(yù)設(shè)的表格計(jì)算CRC的方法,它的主要特點(diǎn)是計(jì)算速度快,但是表格需要較大的存儲(chǔ)空間,該方法此處不再贅述,請(qǐng)參閱相關(guān)資料。
3 MODBUS通訊
使用Modbus協(xié)議進(jìn)行通訊時(shí),讀數(shù)據(jù)命令功能碼為03H,寫數(shù)據(jù)命令功能碼為10H。
具體寄存器地址表如下:
3.1 功能碼03H或04H:讀寄存器
此功能允許用戶獲得設(shè)備采集與記錄的數(shù)據(jù)及系統(tǒng)參數(shù)。主機(jī)一次請(qǐng)求的數(shù)據(jù)個(gè)數(shù)沒有限制,但不能超出定義的地址范圍。
下面的例子是從01號(hào)從機(jī)讀3個(gè)采集到的基本數(shù)據(jù) (數(shù)據(jù)幀中每個(gè)地址占用2個(gè)字節(jié))UAB、UBC、UCA,其中UAB的地址為0028H, UBC的地址為0029H, UCA的地址為002AH。
3.2 功能碼10H:寫寄存器
功能碼10H允許用戶改變多個(gè)寄存器的內(nèi)容,該儀表中系統(tǒng)參數(shù)、開關(guān)量輸出狀態(tài)等可用此功能號(hào)寫入。主機(jī)一次*多可以寫入16個(gè)(32字節(jié))數(shù)據(jù)。
下面的例子是預(yù)置地址為01的儀表輸出開關(guān)量Do1。開關(guān)量輸入/輸出狀態(tài)指示寄存器地址為0022H,*9-12位對(duì)應(yīng)DI1-DI4, *13-14位分別對(duì)應(yīng)DO1-DO2。
4 通訊應(yīng)用
采用下表格式(數(shù)據(jù)為 16 進(jìn)制)
4.1 讀數(shù)據(jù)
例 1:三相電壓表數(shù)據(jù)
說 明 :
01:從機(jī)地址
03:功能碼
0c:十六進(jìn)制,十進(jìn)制為 12,表示后面有 12 個(gè)字節(jié)的數(shù)據(jù)
1b 05:循環(huán)冗余校驗(yàn)碼
例 2:讀單相電流數(shù)據(jù)
說 明 :
01:從機(jī)地址
03:功能碼
04:十六進(jìn)制,十進(jìn)制為 4,表示后面有 4 個(gè)字節(jié)的數(shù)據(jù)
5a 50:循環(huán)冗余校驗(yàn)碼
4.2 寫數(shù)據(jù)
例1:單相開關(guān)量輸出遠(yuǎn)程控制(控制字:0012H)
說明:
向開關(guān)量輸出狀態(tài)位遠(yuǎn)程寫入 1,則閉合;寫入 0,則斷開。
當(dāng)繼電器閉合持續(xù)時(shí)間為非 0 時(shí)(0 為長閉),繼電器閉合持續(xù)時(shí)間為所設(shè)值。
例2:三相開關(guān)量輸出遠(yuǎn)程控制(控制字:002aH)
說明:
向開關(guān)量輸出狀態(tài)為遠(yuǎn)程寫入 1,則閉合;寫入 0,則斷開。
當(dāng)繼電器閉合持續(xù)時(shí)間為非 0 時(shí),表示繼電器工作在脈沖方式,繼電器閉合持續(xù)時(shí)間為所設(shè)值;若持續(xù)時(shí)間設(shè)置為 0,則表示繼電器工作在保持方式。
作者介紹
未曉妃,安科瑞電氣股份有限公司,主要研究方向?yàn)槲㈦娋W(wǎng)能效管理和環(huán)保安全用電。
掃一掃 微信咨詢
©2024 安科瑞電子商務(wù)(上海)有限公司 版權(quán)所有 備案號(hào):滬ICP備18001305號(hào)-12 技術(shù)支持:智慧城市網(wǎng) sitemap.xml 總訪問量:256887 管理登陸