Reverse Engineering of Laser Cutter Controller RDLxxx and RDCAM Software

Messages

The data passed over the USB connection between the PC and the controller and used in the data files of the RDCAM software (*.rld) uses a message-based format. However, this data is scrambled and has to be descambled before it can be interpreted. The following description is about the descrambled data.

The first byte of every message has got its most significant bit (MSB) set. This bit is cleared for all remaining bytes. Thus, a message consists of a single byte in the range 0x80 ... 0xFF and zero or more following bytes in the range 0x00 ... 0x7F.

Encoding of Data Elements

ABSCOORD - Absolute Coordinate Value

OffsetRangeName
0 0x00 ... 0x07 ABSCOORD_HH
1 0x00 ... 0x7F ABSCOORD_H
2 0x00 ... 0x7F ABSCOORD_M
3 0x00 ... 0x7F ABSCOORD_L
4 0x00 ... 0x7F ABSCOORD_LL

ValueDescription
ABSCOORD_HH << 28 | ABSCOORD_H << 21 | ABSCOORD_M << 14 | ABSCOORD_L << 7 | ABSCOORD_LL absolute cordinate value in micrometers
0 zero coordinate value
0x7FFFFFFF largest encodable coordinate value, 2.15 kilometers

PWR - Relative Laser Power

OffsetRangeName
0 0x00 ... 0x7F PWR_H
1 0x00 ... 0x7F PWR_L

ValueDescription
PWR_H << 7 | PWR_L relative laser power in 0.0061 percent
0 zero power
0x3FFF maximum power

RELCOORD - Relative Coordinate Value

OffsetRangeName
0 0x00 ... 0x7F RELCOORD_H
1 0x00 ... 0x7F RELCOORD_L

ValueDescription
RELCOORD_H << 7 | RELCOORD_L signed (2s complement) relative cordinate value in micrometers
0 zero coordinate value
1 smallest encodable positive coordinate value, 1 micrometer
0x1FFF largest encodable positive coordinate value, 8.19 millimeter
0x2000 largest encodable negative coordinate value, -8.19 millimeter
0x3FFF smallest encodable negative coordinate value, -1 micrometer

SPEED - Speed of Movements

OffsetRangeName
0 0x00 ... 0x07 SPEED_HH
1 0x00 ... 0x7F SPEED_H
2 0x00 ... 0x7F SPEED_M
3 0x00 ... 0x7F SPEED_L
4 0x00 ... 0x7F SPEED_LL

ValueDescription
SPEED_HH << 28 | SPEED_H << 21 | SPEED_M << 14 | SPEED_L << 7 | SPEED_LL speed in micrometers per second
1 smallest encodable speed, 1 micrometer per second
0x7FFFFFFF largest encodable speed, 2.15 kilometers per second

More Data Elements

There are probably more data elements. Those have not been identified yet.

Messages

88 - Move to Absolute Position

Move the laser head to an absolute position as fast as possible with the laser turned off.

OffsetValue / Data TypeMeaning
0 0x88 fixed byte
1 ... 5 ABSCOORD X coordinate of absolute position to move to
6 ... 10 ABSCOORD Y coordinate of absolute position to move to

A8 - Cut to Absolute Position

Perform a straight cut to an absolute position with the configured speed while turning the laser on with the configured power.

OffsetValue / Data TypeMeaning
0 0xA8 fixed byte
1 ... 5 ABSCOORD X coordinate of absolute position to cut to
6 ... 10 ABSCOORD Y coordinate of absolute position to cut to

A9 - Cut to Relative Position

Perform a straight cut to a relative position with the configured speed while turning the laser on with the configured power. The coordinates for the cut are specified relative to the position of the laser head at the begin of this message.

OffsetValue / Data TypeMeaning
0 0xA9 fixed byte
1 ... 2 RELCOORD X coordinate of relative position to cut to
3 ... 4 RELCOORD Y coordinate of relative position to cut to

C6 01 - Set Minimum Laser Power

Set the minimum laser power to be used for cutting.

OffsetValue / Data TypeMeaning
0 0xC6 fixed byte
1 0x01 fixed byte
2 ... 3 PWR minimum relative laser power to use for cutting

C6 02 - Set Maximum Laser Power

Set the maximum laser power to be used for cutting.

OffsetValue / Data TypeMeaning
0 0xC6 fixed byte
1 0x02 fixed byte
2 ... 3 PWR maximum relative laser power to use for cutting

C6 31 00 - Set Minimum Laser Power

Set the minimum laser power to be used for cutting.

OffsetValue / Data TypeMeaning
0 0xC6 fixed byte
1 0x31 fixed byte
2 0x00 fixed byte
3 ... 4 PWR minimum relative laser power to use for cutting

C6 32 00 - Set Maximum Laser Power

Set the maximum laser power to be used for cutting.

OffsetValue / Data TypeMeaning
0 0xC6 fixed byte
1 0x32 fixed byte
2 0x00 fixed byte
3 ... 4 PWR maximum relative laser power to use for cutting

C9 02 - Set Speed for Cutting

Set speed to be used for cutting.

OffsetValue / Data TypeMeaning
0 0xC9 fixed byte
1 0x02 fixed byte
2 ... 6 SPEED speed to use for cutting

C9 04 00 - Set Speed for Cutting

Set speed to be used for cutting.

OffsetValue / Data TypeMeaning
0 0xC9 fixed byte
1 0x04 fixed byte
2 0x00 fixed byte
3 ... 7 SPEED speed to use for cutting

More Messages

There are probably more messages. Those have not been identified yet.