MODBUS Slave Protocol: Difference between revisions

From Smart LCD
Line 165: Line 165:
|-
|-
|VP_STR
|VP_STR
|0x000000
|0x000000, 0x000080, - 0x01DF80
 
|0:0x0000, 0:0x0040 - 0:0xEFC0
0x000080
 
<nowiki>:</nowiki>
 
0x01DF80
|0:0x0000
 
0:0x0040
 
<nowiki>:</nowiki>
 
0:0xEFC0
|-
|-
|VP_REG
|VP_REG
|Special Function  Registers
|Special Function  Registers
|0:0xF000
|0:0xF000, 0:0xF001 - 0:0xFFFF
 
<nowiki>:</nowiki>
 
0:0xFFFF
|-
|-
|VP_N32
|VP_N32

Revision as of 18:09, 13 June 2025

Smart LCD MODBUS Salve Product can be accessed by MODBUS Master devices for real-time control and access.

Basic

Modbus Communication

The Modbus is a protocol, which is used to communicate between a host and one or multiple slave devices. Over the Modbus the host is able to communicate with up to 254 slaves. It can read or write data areas on these devices. The SMART LCD is operated as such a slave device. There are mainly two modes of communication: The binary RTU Mode and the ASCII Mode. The SMART LCD is operating in RTU Mode. Therefore, we only describe the RTU mode within this document.

The host issues a package, which consists of:

  • An 8 Bit Device Address, to indicate which slave device shall be addressed
  • An 8 Bit Function Code, to tell the addressed slave which data area is read or written
  • Specific data, like addresses and data values
  • A 2-Byte Error Check CRC to determine, whether the previous data are correct
< - - - - - - - - - - - - - - - - - - - - MODBUS Package - - - - - - - - - - - - - - - - - - - - >
Device Address (1byte)
Function (1byte)
Data (252bytes(max.))
Error Check (2bytes)
< - - - - - - - - - - MODBUS Frame - - - - - - - - - - >

When the host receives the previous frame reply from the slave device, the host needs an interval of 5ms before it can continue to send the next frame command. Since the SMART LCD is a Modbus slave device, a device address must be assigned to it. This address will be defined while designing the GUI with TOPWAY’s SGTools.

Modbus Function Codes

Function Code Function Definition Address Range Object Type
0x03 Read Multiple Holding Registers 0x0000 ~ 0xFFFF 2 Bytes
0x06 Write Single Holding Register 0x0000 ~ 0xFFFF 2 Bytes
0x10 Write Multiple Holding Registers 0x0000 ~ 0xFFFF 2 Bytes
0x11 Report Slave ID
0x14 Read File Record 1 File with 2048 Records of 128 Byte

To access memory locations in the SMART LCD the host has to issue a Read or Write function, which includes a specific address. Each Read or Write function accesses a 2-Byte location within an area of up to 64k words. Since the multiple data areas (N16, N32, N64, etc.) are together larger than 64k Words, the different memory areas are separated into pages, a total of 5 pages. To select a specific page the Modbus Page Map Register must be written with the page number. The Page Map Register is located within the set of Special Function Registers. The Special Function Registers (SFR) are accessible on all pages at the same location. They are placed within the final 4k words of all pages.

Address Mapping

The following table gives an overview over the relationship between Modbus addresses, Modbus Memory Pages and the SMART LCD Address space


VP variable addressing

In SGTools, MENU --> View --> Show Modbus Holding Register Address

can show up the VPs corresponding MODBUS ADDRESS for the display UI.

MODBUS HOST can access those VP in MODBUS address accordantly, in real time.

MODBUS address mapping

VP type VP address MODBUS PAGE MODBUS Page:Address
VP_STR 0x000000

0x000080

:

0x01DF80

0
reserved
VP_REG *1
VP_N16 0x080000... 4 0x0000 - 0x7FFF
0x8000 - 0xEFFF
0xF000 - 0xFFFF
VP_N32 0x020000... 1 1:0x0000....
VP_N64 0x030000... 6 6:0x0000....
VP_G16 0x060000... 3 3:0x0000....
VP_BMP 0x040000... 2 20x0000...
VP_REG 0xFFFF00.... ---
VP type SMART LCD VP Address Modbus PAGE: Address
VP_STR 0x000000, 0x000080, - 0x01DF80 0:0x0000, 0:0x0040 - 0:0xEFC0
VP_REG Special Function Registers 0:0xF000, 0:0xF001 - 0:0xFFFF
VP_N32 0x020000

0x020004

:

0x02FFBC

1:0x0000

1:0x0002

:

1:0x7FDE

VP_REG 0x02FFE0 Timer 0 Count Reg.

0x02FFE4 Timer 1 Count Reg.

:

0x02FFFC Timer 7 Count Reg.

1:0x7FF0

1:0x7FF2

:

1:0x7FFE

VP_N64 0x030000

0x030008

:

0x03DFF8

6:0x8000

6:0x8004

:

6:0x7FFC

VP_REG Special Function Registers 6:0xF000

:

6:0xFFFF

VP_N16 0x080000

0x080002

:

0x08FFFE

4:0x0000

4:0x0001

:

4:0x7FFF

Reserved Reserved 4:0x8000

:

4:0xEFFF

VP_REG Special Function Registers 4:0xF000

:

4:0xFFFF

VP_BMP 0x040000

:

0x05DFFE

2:0x0000

:

2:0xEFFF

VP_REG Special Function Registers 2:0xF000

:

2:0xFFFF

VP_G16 0x060000

:

0x07DFFE

3:0x0000

:

3:0xEFFF

VP_REG Special Function Registers 3:0xF000

:

3:0xFFFF

VP_Flash

(Flash Area)

120K Bytes Flash memory

Non-volatile memory area,

which will remain unchanged even after power down

5:0x0000

:

5:0xEFFF

VP_REG Special Function Registers 5:0xF000

:

5:0xFFFF