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