歡迎來到hth华体会体育网页版網站!
谘詢熱線

18963623876

當前位置:首頁  >  技術文章  >  在線PH/ORP檢測儀(yi) RS-485接口及MODBUS協議

在線PH/ORP檢測儀RS-485接口及MODBUS協議

更新時間:2024-07-26      點擊次數:997

串口調試助手


在線PH/ORP檢測儀(yi) RS-485接口及MODBUS協議

PH儀(yi) 與(yu) 上位機之間采用MODBUS協議進行通信,波特率固定為(wei) 9600bps。具體(ti) 協議如下:

1.1讀取測量信息和狀態(讀多個(ge) 寄存器) 功能碼(0x03

命令格式:

定義(yi)

地址

功能碼

起始地址

寄存器個(ge) 數

CRC校驗

數據

ADDR

0x03

0x 0000

0x 0006

CRC 16

字節數

1

1

2

2

2

返回格式:

定義(yi)

地址

功能碼

數據個(ge) 數

數據

CRC校驗

數據

ADDR

0x 03

0x 0C

Data

CRC 16

字節數

1

1

1

12

2


注釋:  

(1) 數據字節長度:為(wei) 返回數據的實際字節長度。

(2) CRC 16,8位在前,高8位在後。

(3) DATA數據格式如下:

PH模式的DATA數據

1

2

3

PH值高8位字節

PH值低8位字節

溫度值高8位字節

4

5

6

溫度值低8位字節

高點報警值高8位字節

高點報警值低8位字節

7

8

9

低點報警值高8位字節

低點報警值低8位字節

滯後值高8位字節

10

11

12

滯後值低8位字節

報警狀態

PH/ORP模式

例,發送命令:01 03 00 00 00 06 C5 C8

       返回:01 03 0C 1B 8F 00 FA 03 E8 01 90 00 32 00 00 1C 3E

則數據部分為(wei) :1B 8F 00 FA 03 E8 01 90 00 32 00 00

PH值:由整數部分和小數部分組成,整數的有效數字是2位,小數有效數字是3位。比如PH值的高8位字節為(wei) 0x1BPH值的低8位字節為(wei) 0x8F,則PH值為(wei) 0x1B8F,轉化成10進製為(wei) 7055PH值為(wei) 7.0552位整數,3位小數,整數前麵的零省去。

溫度值:為(wei) 0x09C4,轉化成10進製為(wei) 2500,溫度值為(wei) 25.00,保留兩(liang) 位小數。

高點報警值:為(wei) 0x03E8,轉化成10進製為(wei) 1000,值為(wei) 10.00,保留兩(liang) 位小數。

低點報警值:為(wei) 0x0190,轉化成10進製為(wei) 400,值為(wei) 4.00,保留兩(liang) 位小數。

滯後值:為(wei) 0x0032,轉化成10進製為(wei) 50,值為(wei) 0.50,保留兩(liang) 位小數。

報警狀態:為(wei) 0x00,無報警。(注:0x00為(wei) 無報警,0x01為(wei) 低點報警,0x02為(wei) 高點報警)

PH/ORP模式:為(wei) 0x00PH模式。(注:0x00為(wei) PH模式, 0x01為(wei) ORP模式)

ORP模式的DATA數據

1

2

3

ORP值高8位字節

ORP值低8位字節

溫度值高8位字節

4

5

6

溫度值低8位字節

高點報警值高8位字節

高點報警值低8位字節

7

8

9

低點報警值高8位字節

低點報警值低8位字節

滯後值高8位字節

10

11

12

滯後值低8位字節

報警狀態

PH/ORP模式

例,發送命令:01 03 00 00 00 06 C5 C8

       返回:01 03 0C FF 30 00 FA 03 E8 FC 18 00 0A 00 01 BC 26

則數據部分為(wei) :FF 30 00 FA 03 E8 FC 18 00 0A 00 01

ORP值:為(wei) 0xFF30,當ORP值為(wei) 負數時,數據以補碼形式運算,0xFFFF-0xFF30+1=0x00D0,轉化成10進製為(wei) 208ORP值為(wei) -208mVORP若為(wei) 0x011E,轉化成10進製為(wei) 286ORP值為(wei) 286mV

溫度值:為(wei) 0x00FA,轉化成10進製為(wei) 250,溫度值為(wei) 25.0,保留一位小數。

高點報警值:為(wei) 0x03E8,轉化成10進製為(wei) 1000,值為(wei) 1000 mV

低點報警值:為(wei) 0x FC18,數據以補碼形式運算,值為(wei) -1000 mV

滯後值:為(wei) 0x000A,轉化成10進製為(wei) 10,值為(wei) 10 mV

報警狀態:為(wei) 0x00,無報警。(注:0x00為(wei) 無報警,0x01為(wei) 低點報警,0x02為(wei) 高點報警)

PH/ORP模式:為(wei) 0x01ORP模式。(注:0x00為(wei) PH模式, 0x01為(wei) ORP模式)

1.2讀取測量信息和狀態(讀1個(ge) 寄存器) 功能碼(0x03

命令格式:

定義(yi)

地址

功能碼

起始地址

寄存器個(ge) 數

CRC校驗

數據

ADDR

0x03

0x 0000-0x 0004

0x 0001

CRC 16

字節數

1

1

2

2

2

返回格式:

定義(yi)

地址

功能碼

數據個(ge) 數

數據

CRC校驗

數據

ADDR

0x 03

0x 02

Data

CRC 16

字節數

1

1

1

2

2


注釋:  

(1) 數據字節長度:為(wei) 返回數據的實際字節長度。

(2) CRC 16,8位在前,高8位在後。

數據處理同1.1一樣。

1.3.錯誤響應

如果監測器不能正確執行上位機命令,返回如下格式:

定義(yi)

地址

功能碼

CODE

CRC校驗

數據

ADDR

COM+80H

1

CRC 16

字節數

1

1

1

2


CODE 01 功能碼異常

             02 起始地址異常

             03 寄存器數量異常

COM:    接收到的功能碼

CRC校驗,低8位在前,高8位在後。  

例如:

  1、發送命令:01 01 00 00 00 06 BC 08

         返回:01 81 01 81 90    說明功能碼錯誤

2、發送命令:01 03 00 06 00 06 25 C9

         返回:01 83 02 C0 F1    起始地址錯

3、發送命令:01 03 00 00 00 08 44 0C

         返回:01 83 03 01 31    數據錯(數據個(ge) 數錯)

2.1.寫(xie) 數據寄存器(寫(xie) 多個(ge) 寄存器) 功能碼(0x10

命令格式:


定義(yi)

地址

功能碼

起始地址

寄存器數量

字節數

數據

ADDR

0x10

0x 0000

0x 0003

0x 06

字節數

1

1

2

2

1

高報高8

高報低8

低報高8

低報低8

滯後高8

滯後低8

CRC校驗

自定義(yi)

自定義(yi)

自定義(yi)

自定義(yi)

自定義(yi)

自定義(yi)

CRC 16

1

1

1

1

1

1

2

返回格式:

定義(yi)

地址

功能碼

起始地址

寄存器數量

CRC校驗

數據

ADDR

0x 10

0x 0000

0x 0003

CRC 16

字節數

1

1

2

2

2

例,發送命令:01 10 00 00 00 03 06 03 E8 01 90 00 32 06 A0  

返回:    01 10 00 00 00 03 80 08

附:PH:高點報警(範圍0~14.00)、低點報警(範圍0~14.00)、滯後值(範圍0~9.90)數據格式同上。

ORP:高點報警(範圍-1999~1999)、低點報警(範圍-1999~1999)、滯後值(範圍0~1000)數據格式同上。

2.2.錯誤響應

如果監測器不能正確執行上位機命令,返回如下格式:

定義(yi)

地址

功能碼

CODE

CRC校驗

數據

ADDR

COM+80H

1

CRC 16

字節數

1

1

1

2


CODE 01 功能碼異常

             02 起始地址異常

             03 寄存器數量異常

             04 寫(xie) 多個(ge) 寄存器異常

COM:    接收到的功能碼

CRC校驗,低8位在前,高8位在後。  

例如:

  1、發送命令:01 16 00 00 00 03 06 03 E8 02 70 00 32 0F1A

         返回:01 96 01 8E 60    功能碼異常

2、發送命令:01 10 00 01 00 03 06 03 E8 01 90 00 32 57 65

         返回:01 90 02 CD C1    起始地址異常

3、發送命令:01 10 00 00 00 05 06 03 E8 01 90 00 32 86 8A

         返回:01 90 03 0C 01    寄存器數量異常

2.3.寫(xie) 數據寄存器(寫(xie) 單個(ge) 寄存器) 功能碼(0x06

命令格式:

定義(yi)

地址

功能碼

寄存器地址

寄存器值

CRC校驗

數據

ADDR

0x06

自定義(yi)

自定義(yi)

CRC 16

字節數

1

1

2

2

2



返回格式:

定義(yi)

地址

功能碼

寄存器地址

寄存器值

CRC校驗

數據

ADDR

0x06

自定義(yi)

自定義(yi)

CRC 16

字節數

1

1

2

2

2

例,發送命令:01 06 00 0A 03 E9 68 B6  

返回:    01 06 00 0A 03 E9 68 B6

高點報警值:為(wei) 0x03E9,轉化成10進製為(wei) 1001,值為(wei) 10.01,保留兩(liang) 位小數。CRC 16 校驗值因輸入地址和值的不同也不同,校驗值對才能寫(xie) 入數據。

PH高點報警點寄存器地址:0X000A

PH低點報警點寄存器地址:0X000C

PH滯後量寄存器地址:    0X000E  

ORP高點報警點寄存器地址:0X0014

ORP低點報警點寄存器地址:0X0016

ORP滯後量寄存器地址:    0X0018

附:PH:高點報警(範圍0~14.00)、低點報警(範圍0~14.00)、滯後值(範圍0~9.90)數據格式同上。

ORP:高點報警(範圍-1999~1999)、低點報警(範圍-1999~1999)、滯後值(範圍0~1000)數據格式同上。

注:PH模式時隻能寫(xie) PH相關(guan) 的寄存器(PH的高低點等寄存器),ORP模式時隻能寫(xie) ORP相關(guan) 的寄存器(ORP的高低點等寄存器)。

2.4.錯誤響應

如果監測器不能正確執行上位機命令,返回如下格式:

定義(yi)

地址

功能碼

CODE

CRC校驗

數據

ADDR

COM+80H

1

CRC 16

字節數

1

1

1

2


CODE 01 功能碼異常

             02 寄存器地址異常

             03 寄存器值異常

             04 寫(xie) 單個(ge) 寄存器異常

COM:    接收到的功能碼

CRC校驗,低8位在前,高8位在後。  

例如:

  1、發送命令:01 07 00 0A 03 E9 55 76

         返回:01 87 01 82 30    說明功能碼異常

2、發送命令:01 06 00 02 03 E9 E9 74

         返回:01 86 02 C3 A1    寄存器地址異常

3、發送命令:01 06 00 0A XX D0 3C 05

         返回:01 86 03 02 61    寄存器值異常(超限)

4、發送命令:01 06 00 0A 07 D0 AA 64

         返回:01 86 04 43 A3    寫(xie) 單個(ge) 寄存器異常

CRC校驗:低位在前,高位在後,各個(ge) 地址效驗碼如下:

01地址:01 03 00 00 00 06 C5 C8

02地址:02 03 00 00 00 06 C5 FB

03地址:03 03 00 00 00 06 C4 2A

04地址:04 03 00 00 00 06 C5 9D

05地址:05 03 00 00 00 06 C4 4C

06地址:06 03 00 00 00 06 C4 7F

07地址:07 03 00 00 00 06 C5 AE

08地址:08 03 00 00 00 06 C5 51

09地址:09 03 00 00 00 06 C4 80

10地址:10 03 00 00 00 06 C6 89

3.CRC檢測

CRC添加到命令中時,低字節先加入,然後高字節。 

CRC簡單函數如下: 

unsigned short CRC16(puchMsg, usDataLen)

unsigned char *puchMsg ; /* 要進行CRC校驗的消息 */

unsigned short usDataLen ; /* 消息中字節數 */

{

unsigned char uchCRCHi = 0xFF ; /* CRC字節初始化 */

unsigned char uchCRCLo = 0xFF ; /* CRC 字節初始化 */

unsigned uIndex ; /* CRC循環中的索引 */

while (usDataLen--) /* 傳(chuan) 輸消息緩衝(chong) 區 */

{

uIndex = uchCRCHi ^ *puchMsgg++ ; /* 計算CRC */

uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ;

uchCRCLo = auchCRCLo[uIndex] ;

}

return (uchCRCHi << 8 | uchCRCLo) ;

}

 

/* CRC 高位字節值表 */

static unsigned char auchCRCHi[] = {

0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,

0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,

0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,

0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,

0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,

0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,

0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,

0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,

0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,

0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,

0x80, 0x41, 0x00, 0xC1, 0x81, 0x40

} ;

/* CRC低位字節值表*/

static char auchCRCLo[] = {

0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,

0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,

0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,

0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,

0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,

0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,

0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,

0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,

0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,

0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,

0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,

0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,

0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,

0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,

0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6 F,

0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,

0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,

0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,

0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,

0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,

0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,

0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,

0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,

0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,

0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,

0x43, 0x83, 0x41, 0x81, 0x80, 0x40

} ;

hth华体会体育网页版
  • 聯係人:銷售部
  • 地址:泗陽縣來安街道辦全民創業園2號樓2樓
  • 郵箱:LINGHENG@qq.com
  • 傳真:
關注我們

歡迎您關(guan) 注我們(men) 的微信公眾(zhong) 號了解更多信息

掃一掃
關注我們
版權所有©2025hth华体会体育网页版All Rights Reserved        sitemap.xml    總流量:163679
    技術支持: