Transmits memory data block... how to ask it on VMB4PD?


#1

Hi Velbus team,

here is a problem for developper team, using protocol VELBUS.
I’ve tried the “transmit memory data” ($FE) and I can read byte with “Read data from memory” ($FD)… it’s ok but to slow
I want to use "transmit memory data block ($CC) but can’t found the “Read data block” :frowning:
I don’t want to dump all the module, just programmation button part (wednesday, 8:00 button 4, etc… )


#2

This is the packet to read a memory block (4 bytes)

RTR is not enabled
3 data bytes
Low priority
Data byte 1: C9h (read memory block)
Data byte 2: Most significant byte of the 16-bit memory address
Data byte 3: Least significant byte of the 16-bit memory address

The module will answer with a memory block packet (CCh). Very old modules do not support the (read) memory block commands.


#3

Read entire memory
< Memory dump CBh

Memory block (CCh)
Memory block (CCh)
Memory block (CCh)
Memory block (CCh)
Memory block (CCh)
Memory block (CCh)

Read a section of memory (in blocks of 4 bytes)
< Read memory block (C9h)

Memory block (CCh)
< Read memory block (C9h)
Memory block (CCh)
< Read memory block (C9h)
Memory block (CCh)
< …

Read a section of memory (byte per byte)
< Read memory (FDh)

Memory data (FEh)
< Read memory (FDh)
Memory data (FEh)
< Read memory (FDh)
Memory data (FEh)
< …


#4

[quote=“VEL448”]This is the packet to read a memory block (4 bytes)

RTR is not enabled
3 data bytes
Low priority
Data byte 1: C9h (read memory block)
Data byte 2: Most significant byte of the 16-bit memory address
Data byte 3: Least significant byte of the 16-bit memory address

The module will answer with a memory block packet (CCh). Very old modules do not support the (read) memory block commands.[/quote]

I’ve two questions about
1) old modules : mine are VMB4PD with 0825 serial number… are they too old ?
2) databyte 2 and 3 order : databyte 2 = 00 and databyte 3 = C0 (start of button’s program) ?


#5

Yes, they are probably too old. VelbusLink solves this by retrying read memory block, and then switching to read memory byte if there are no answers to read memory block.

If the address that you want to write is 0410h, then databyte 2 is 04h, and databyte 3 is 10h.


#6

It’s perfect, thanks :slight_smile: