1. 程式人生 > >稱重儀表modbus協議

稱重儀表modbus協議

儀表modbus協議

D2008儀表Modbus協議說明

儀表通信方式TF =1 Modbus通信方式

讀傳感器內碼

0

1

2

3

4

5

6

7

地址

功能碼


傳感器號n



CRC16L

CRC16H

0x01

0x03

0x00

0x10+1

0x00

0x04

0x14

0x0C

註意:傳感器編號n1開始

CRC校驗參與的字節是0~5之間的數節,返回值也是亦同。

返回值:

0

1

2

3

4

5

6

7

8

地址

0x03

0x08

符號+/-

Data5

Data4

Data3

Data2

Data1

1

0x03

0x08

0x30

0x30

0x30

0x30

0x30

0x30

9

10

11

12

Data0

小數點(從右往左)

CRC16L

CRC16H

0x38

0x30

0xff

0xff

讀取實時重量

0

1

2

3

4

5

6

7

地址

功能碼

起始地址



CRC16L

CRC16H

0x01

0x03

0x00

0x01

0x00

0x04

0x15

0xC9


返回值:

0

1

2

3

4

5

6

7

8

地址

0x03

0x08

符號+/-

Data5

Data4

Data3

Data2

Data1

1

0x03

0x08

0x2D

0x30

0x30

0x30

0x30

0x37

9

10

11

12

Data0

小數點(從右往左)

CRC16L

CRC16H

0x30

0x30

0x89

0x7B


讀當前儀表總內碼

0

1

2

3

4

5

6

7

儀表地址

功能碼

寄存器開始地址

數據量

CRC16L

CRC16H

0x01

0x03

0x00

0x07

0x00

0x02

0x75

0xCA

0

1

2

3

4

5

6

7

8

儀表地址

功能碼

數據長度

返回數據

CRC16L

CRC16H

0x01

0x03

0x04

0x30

0x30

0x30

0x30

0xE1

0x28

返回值:

Modbus浮點數轉換

float get_float_from_byte(byte *p)

{

byte pTemp[4] = { 0 };

pTemp[0] = p[1];

pTemp[1] = p[0];

pTemp[2] = p[3];

pTemp[3] = p[2];

return *(float*)&pTemp;

}

void CMFCApplication1Dlg::OnBnClickedButton3()

{//調用轉換函數

byte pp[4] = { 0 };

pp[0] = 0xb2;

pp[1] = 0x2d;

pp[2] = 0x3f;

pp[3] = 0x5d;

float mf1 = get_float_from_byte(pp); // mf1 = 220.0

}


稱重儀表modbus協議