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