Matsumoto Ceiling Dehumidifier Modbus Communication Protocol

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

Matsumoto Ceiling Dehumidifier Modbus Communication Protocol

Communication protocol:

function code

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

One function code 01

Read coil status from remote devices (Switching data, Each represents a switch quantity, 0=Close 1=open, Address is represented by a bit address, Data is represented in bytes, Less than one byte, Fill the high position with 0)

Regarding the address 01 Read the current device switch status

Host request: Sending data as 010100000018
010100000018  
addressfunction codestarting addresscoil (discrete signal) quantityCRCLCRCH
Slave response: The returned data is 010101
0101030000            007A37
addressCan codebyte countCoil status1Coil status2    Coil status3CRCLCRCH

This communication setting24An online reading coil (discrete signal) , Coil address=0x0000~0x0017

Return to coil status1, address0~7 (One byte of data)

D7=Press on/off    D6=High wind on/off   D5=Stroke on/off    D4=Low wind on/off

D3=Alarm on/off  D2=reserve   D1=reserve    D0=reserve

Return to coil status2, address8~F (One byte of data)

D7=Power on      D6=defrost        D5=Reserve       D4=Dehumidification/ventilation(0=Dehumidification  1=improve air circulation)

D3=Reserve         D2=Moisture control         D1=Reserve       D0=Reserve

Return to coil status3, address10~17 (One byte of data) Reserved protection status

D7=Reserve        D6=Reserve       D5=Reserve        D4=Reserve

D3=Reserve        D2=Reserve       D1=Reserve        D0=Reserve

For example, the host sends: 01 01 00 00 00 18 3c 00

Read the current device status for address 1 device

two  function code 04

Use this function code to read device information for remote devices (Each information parameter is mapped to a register) , 16Bit data format, HEXcode, High byte first

Regarding the address01 Read the current device parameters

Host request: Sending data as 01040000000271CB
01040000000271CB
addressfunction codeStarting register addressInput the number of registersCRCLCRCH
Slave response: The returned data is 01040400C8012C7A37 (temperature: 20.0℃  Humidity30.0%RH)
01040400C8012C7A37
addressfunction codebyte countSet humidity (HEX) Current humidity (HEX) CRCLCRCH

This communication sets up 4 registers (data volume) , address 0x0000~0x0003  Read 2 pieces of data at once, So the number of input registers is always equal to 0x0002, address=0x0000 or 0x0002

Address allocation:

0x0000: Set humidity            0x0001: Current humidity

0x0002: coil temperature            0x0003: reserve

note1: Temperature and humidity dataH (High-order byte) And dataL (low-order byte) For each corresponding current temperature and humidity value:

The uploaded data needs to be divided by10, Like humidity upload16Base system0311, Corresponding to decimal system00785, express78.5%.

note2: The temperature below zero is represented by a negative number as uploaded -11.5℃. then 11.5℃Corresponding to decimal positive numbers=115 16numeral system=0x73

Supplement for negative numbers, then= 0xFFFF-0x0073= 0Xff8C

note3: Temperature and humidity data failure data=0xFFFF

For example, the host sends: 01 04 00 00 00 02 71 CB

Read from device at address 100 00 Starting from the address 2Byte data (That is, the device is set to humidity and the current humidity)

three  function code 05

Use this function code to write a single coil for remote devices (Write to a single registerON/OFFStatus, Each switch value is mapped to a register16Bit data format, HEXcode, High byte first , FF00=open, 0000=Close)

Write power on command to device at address 1

Host request: Sending data as01050000FF00 
01050000FF00  
addressfunction codePre register

Address high bit

Pre register

Low order address

Insert the high bit of register dataInsert the low bit of the register dataCRCLCRCH
 Return from machine: The returned data is01050000FF00 
01050000FF00  
addressfunction codePre register

Address high bit

Pre register

Low order address

Insert high data bitsPlace data in low positionCRCLCRCH

This communication sets up one online writing coil (discrete signal) , Coil address=0x0000

For example, the host sends: 01 05 00 00 ff 00 8c 3a

Set up power on device for address 1

For example, the host sends: 01 05 00 00 00 00 cd ca

Set shutdown for device at address 1

four  function code 06

Use this function code to write data information to a single register for remote devices (Each information parameter is mapped to a register) , 16Bit data format, HEXcode, High byte first

This agreement defines and stipulates11Write parameter quantity, The corresponding addresses are as follows:

Preset register address: 0x0000     Write operation mode  0x0000=Dehumidification  0x0001=improve air circulation

0x0001     Write the set humidity HEXcode, With one decimal place

0x0002     Write the current time HEXcode, High byte hours, Low byte fraction

0x0003     Write settings for timed startup HEXcode, High byte hours, Low byte fraction

0x0004     Write settings for timed shutdown HEXcode, High byte hours, Low byte fraction

0x0005~0x0008  Reserved control

0x0009     Write device address correction valueHEXcode, high byte=0, low-order byte0~254

0x000a     Write communication baud rate correction valueHEXcode,

Send an example:

for example: Write ventilation mode to address 1

Host sends: 01 06 00 00 00 01 48 0a

for example: Write the set humidity to address 1 48 %

Host sends: 01 06 00 01 01 e0 d8 12

for example: Write the current time to address 1  8:30

Host sends: 01 06 00 02 08 1e af c2

for example: Write timed boot time to address 1  10:40

Host sends: 01 06 00 03 0a 28 7f 74

for example: Write scheduled shutdown time to address 1  13:12

Host sends: 01 06 00 04 0d 0c cc 9e

for example: Write to address 1 to convert it into an address2

note: Address Register=0x0009  The valid data for the machine address is a single byte, Address value high bit=0; low position0~254

Host sends: 01 06 00 09 00 02 d8 09

Host request: Sending data as01060009000209D8 (Address 1 changed to2)  
01060009000209D8
addressfunction codePre register

Address high bit

Pre register

Low order address

Insert the high bit of register dataInsert the low bit of the register dataCRCLCRCH
 Return from machine: The returned data is01060009000209D8 
01060009000209D8
addressfunction codePre register

Address high bit

Pre register

Low order address

Insert high data bitsPlace data in low positionCRCLCRCH

for example: Regarding the address1   Change the current baud rate to4800 (4800of16The base is12C0)

Host sends: 01 06 00 0a 12 c0 a5 38

Host request: Sending data as0106000A12C0A538 (Baud rate9600change to4800)  
0106000A12C0A538
addressfunction codePre register

Address high bit

Pre register

Low order address

Insert high data bitsPlace data in low positionCRCLCRCH
 Return from machine: The returned data is0106000A12C0A538 
0106000A12C0A538
addressfunction codePre register

Address high bit

Pre register

Low order address

Insert high data bitsPlace data in low positionCRCLCRCH

note3: Error code frame format

Address error code exception code CRCL CRCH

Error code=Function code+0x80

Exception Code=01 or02 or03 or 04

01=Invalid opcode

02=Invalid data address

03=Data anomaly

04=MB Error

note4: CRC Verification method

CRC Generate function

unsigned short CRC16 ( puchMsg, usDataLen )  /* Function to  unsigned short Type return CRC  */

unsigned char *puchMsg ;  /*  Used for calculation CRC  The message                  */

unsigned short usDataLen ;  /*  The number of bytes in the message                          */

{

unsigned char uchCRCHi = 0xFF ;  /* CRC  High byte initialization                    */

unsigned char uchCRCLo = 0xFF ;  /* CRC  Low byte initialization                    */

unsigned uIndex ;  /* CRC Query table index                          */

while (usDataLen--)  /* Complete the entire message buffer                      */

{

uIndex = uchCRCLo ^ *puchMsgg++ ;  /*  Calculation  CRC                            */

uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex} ;

uchCRCHi = auchCRCLo[uIndex] ;

}

return (uchCRCHi << 8 | uchCRCLo) ;

}

High byte table

/* The high-order byteCRC  Value */

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

} ;

Low byte table

/* Low order bytesCRC  Value */

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, 0x6F,

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

};

Manufacturer information:

Matsumoto Ceiling Dehumidifier Modbus Communication ProtocolFigure

400-0858-758

www.hzsongdao.com

Hangzhou Songdao Industrial Co., Ltd

telephone: 0571-85367531 / fax: 0571-85367531

address: Shunfeng Road, Qianjiang Economic Development Zone, Yuhang District, Hangzhou City528number

Matsumoto Ceiling Dehumidifier Modbus Communication ProtocolFigure1
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.