• <del id="qqie6"><sup id="qqie6"></sup></del>
  • <tfoot id="qqie6"></tfoot>
  • <ul id="qqie6"></ul>
  • 產品推薦:水表|流量計|壓力變送器|熱電偶|液位計|冷熱沖擊試驗箱|水質分析|光譜儀|試驗機|試驗箱


    儀表網>技術中心>技術交流>正文

    歡迎聯系我

    有什么可以幫您? 在線咨詢

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

    來源:江蘇凌恒環境科技有限公司   2024年07月26日 15:49  

    串口調試助手


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

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

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

    命令格式:

    定義

    地址

    功能碼

    起始地址

    寄存器個數

    CRC校驗

    數據

    ADDR

    0x03

    0x 0000

    0x 0006

    CRC 16

    字節數

    1

    1

    2

    2

    2

    返回格式:

    定義

    地址

    功能碼

    數據個數

    數據

    CRC校驗

    數據

    ADDR

    0x 03

    0x 0C

    Data

    CRC 16

    字節數

    1

    1

    1

    12

    2


    注釋:  

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

    (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

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

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

    溫度值:0x09C4,轉化成10進制為2500,溫度值為25.00,保留兩位小數。

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

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

    滯后值:0x0032,轉化成10進制為50,值為0.50,保留兩位小數。

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

    PH/ORP模式:0x00PH模式。(注:0x00PH模式, 0x01ORP模式)

    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

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

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

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

    高點報警值:0x03E8,轉化成10進制為1000,值為1000 mV

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

    滯后值:0x000A,轉化成10進制為10,值為10 mV

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

    PH/ORP模式:0x01ORP模式。(注:0x00PH模式, 0x01ORP模式)

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

    命令格式:

    定義

    地址

    功能碼

    起始地址

    寄存器個數

    CRC校驗

    數據

    ADDR

    0x03

    0x 0000-0x 0004

    0x 0001

    CRC 16

    字節數

    1

    1

    2

    2

    2

    返回格式:

    定義

    地址

    功能碼

    數據個數

    數據

    CRC校驗

    數據

    ADDR

    0x 03

    0x 02

    Data

    CRC 16

    字節數

    1

    1

    1

    2

    2


    注釋:  

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

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

    數據處理同1.1一樣。

    1.3.錯誤響應

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

    定義

    地址

    功能碼

    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    數據錯(數據個數錯)

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

    命令格式:


    定義

    地址

    功能碼

    起始地址

    寄存器數量

    字節數

    數據

    ADDR

    0x10

    0x 0000

    0x 0003

    0x 06

    字節數

    1

    1

    2

    2

    1

    高報高8

    高報低8

    低報高8

    低報低8

    滯后高8

    滯后低8

    CRC校驗

    自定義

    自定義

    自定義

    自定義

    自定義

    自定義

    CRC 16

    1

    1

    1

    1

    1

    1

    2

    返回格式:

    定義

    地址

    功能碼

    起始地址

    寄存器數量

    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.錯誤響應

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

    定義

    地址

    功能碼

    CODE

    CRC校驗

    數據

    ADDR

    COM+80H

    1

    CRC 16

    字節數

    1

    1

    1

    2


    CODE 01 功能碼異常

                 02 起始地址異常

                 03 寄存器數量異常

                 04 寫多個寄存器異常

    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.寫數據寄存器(寫單個寄存器) 功能碼(0x06

    命令格式:

    定義

    地址

    功能碼

    寄存器地址

    寄存器值

    CRC校驗

    數據

    ADDR

    0x06

    自定義

    自定義

    CRC 16

    字節數

    1

    1

    2

    2

    2



    返回格式:

    定義

    地址

    功能碼

    寄存器地址

    寄存器值

    CRC校驗

    數據

    ADDR

    0x06

    自定義

    自定義

    CRC 16

    字節數

    1

    1

    2

    2

    2

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

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

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

    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模式時只能寫PH相關的寄存器(PH的高低點等寄存器),ORP模式時只能寫ORP相關的寄存器(ORP的高低點等寄存器)。

    2.4.錯誤響應

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

    定義

    地址

    功能碼

    CODE

    CRC校驗

    數據

    ADDR

    COM+80H

    1

    CRC 16

    字節數

    1

    1

    1

    2


    CODE 01 功能碼異常

                 02 寄存器地址異常

                 03 寄存器值異常

                 04 寫單個寄存器異常

    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    寫單個寄存器異常

    CRC校驗:低位在前,高位在后,各個地址效驗碼如下:

    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--) /* 傳輸消息緩沖區 */

    {

    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

    } ;

    免責聲明

    • 凡本網注明“來源:儀表網”的所有作品,均為浙江興旺寶明通網絡有限公司-儀表網合法擁有版權或有權使用的作品,未經本網授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:儀表網”。違反上述聲明者,本網將追究其相關法律責任。
    • 本網轉載并注明自其它來源(非儀表網)的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或和對其真實性負責,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品第一來源,并自負版權等法律責任。
    • 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。
    聯系我們

    客服熱線: 15267989561

    加盟熱線: 15267989561

    媒體合作: 0571-87759945

    投訴熱線: 0571-87759942

    關注我們
    • 下載儀表站APP

    • Ybzhan手機版

    • Ybzhan公眾號

    • Ybzhan小程序

    企業未開通此功能
    詳詢客服 : 0571-87759942
    主站蜘蛛池模板: 成人无码Av片在线观看| 亚洲国产成人久久笫一页| 国产成人精品三级在线| 国产成人vr精品a视频| 亚欧成人中文字幕一区| 成人免费无码大片a毛片软件| 成人免费观看网站| 亚洲成人高清在线| 成人网站在线进入爽爽爽| 国产成人 亚洲欧洲| 成人精品免费视频大全app| 国产成人一区二区在线不卡| 91成人在线免费观看| 成人一级黄色大片| 亚洲国产成人久久综合一区77| 成人欧美一区二区三区黑人| 亚洲精品成人片在线观看精品字幕 | 成人免费视频国产| 99久久国产综合精品成人影院| 国产成人无码av片在线观看不卡| 欧美激情成人网| 久久亚洲精品成人777大小说| 国产成人高清亚洲一区app| 成人漫画免费动漫y| 69国产成人精品午夜福中文| 亚洲国产精品成人午夜在线观看 | 鲁大师成人一区二区三区| 国产成人无码a区在线观看视频 | 国产成人精品无码专区| 久久久久亚洲av成人网人人软件 | 成人年无码AV片在线观看| 色偷偷成人网免费视频男人的天堂 | 成人欧美一区二区三区1314| 精品欧美成人高清在线观看2021| | 国产成人综合久久精品| 国产成人综合久久亚洲精品| 国产成人无码免费视频97| 国产成人精品97| 四虎精品成人免费观看| 亚洲欧美一区二区成人片|