MODBUS Slave Protocol
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 |

