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 (*.rd) 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

Offset Range Name
0 0x00 ... 0x7F ABSCOORD_HH
1 0x00 ... 0x7F ABSCOORD_H
2 0x00 ... 0x7F ABSCOORD_M
3 0x00 ... 0x7F ABSCOORD_L
4 0x00 ... 0x7F ABSCOORD_LL

Value Description
ABSCOORD_HH << 28 | ABSCOORD_H << 21 | ABSCOORD_M << 14 | ABSCOORD_L << 7 | ABSCOORD_LL signed (2s complement) absolute cordinate value in micrometers
0 zero coordinate value
1 smallest encodable positive coordinate value, 1 micrometer
0x3FFFFFFFF largest encodable positive coordinate value, 17.18 kilometers
0x400000000 largest encodable negative coordinate value, -17.18 kilometers
0x7FFFFFFFF smallest encodable negative coordinate value, -1 micrometer

COLOR - RGB Color

Offset Range Name
0 0x00 fixed_byte
1 0x00 ... 0x07 COLOR_H
2 0x00 ... 0x7F COLOR_M
3 0x00 ... 0x7F COLOR_L
4 0x00 ... 0x7F COLOR_LL

Value Description
COLOR_H << 21 | COLOR_M << 14 | COLOR_L << 7 | COLOR_LL 24 bit RGB color value (LSB red, MSB blue), blue << 16 | green << 8 | red
0x000000 black
0x0000FF red
0x00FF00 green
0xFF0000 blue
0xFFFFFF white

DEVICES - Helper Devices (?)

Offset Range Name
0 0x00 ... 0x7F DEVICE_FLAGS

Value Description
DEVICE_FLAGS bitmask of devices (?)
0x00 all devices off
0x01 air blower on

LAYER - Layer Number

Offset Range Name
0 0x00 ... 0x7F LAYER_NO

Value Description
LAYER_NO layer number
0 first layer (number 0)
0x7F last layer (number 127)

PWR - Relative Laser Power

Offset Range Name
0 0x00 ... 0x7F PWR_H
1 0x00 ... 0x7F PWR_L

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

RELCOORD - Relative Coordinate Value

Offset Range Name
0 0x00 ... 0x7F RELCOORD_H
1 0x00 ... 0x7F RELCOORD_L

Value Description
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 millimeters
0x2000 largest encodable negative coordinate value, -8.19 millimeters
0x3FFF smallest encodable negative coordinate value, -1 micrometer

SPEED - Speed of Movements

Offset Range Name
0 0x00 ... 0x7F SPEED_HH
1 0x00 ... 0x7F SPEED_H
2 0x00 ... 0x7F SPEED_M
3 0x00 ... 0x7F SPEED_L
4 0x00 ... 0x7F SPEED_LL

Value Description
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
0x7FFFFFFFF largest encodable speed, 34.36 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.

Offset Value / Data Type Meaning
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

89 - Move to Relative Position

Move the laser head to a relative position as fast as possible with the laser turned off. The coordinates for the cut are specified relative to the position of the laser head at the begin of this message.

Offset Value / Data Type Meaning
0 0x89 fixed byte
1 ... 2 RELCOORD X coordinate of relative position to move to
3 ... 4 RELCOORD Y coordinate of relative position to move to

8A - Move to Relative Position in X Direction

Move the laser head to a relative position as fast as possible with the laser turned off. The X coordinate for the move is specified relative to the position of the laser head at the begin of this message. (The Y coordinate does not change.)

Offset Value / Data Type Meaning
0 0x8A fixed byte
1 ... 2 RELCOORD X coordinate of relative position to move to

8B - Move to Relative Position in Y Direction

Move the laser head to a relative position as fast as possible with the laser turned off. The Y coordinate for the move is specified relative to the position of the laser head at the begin of this message. (The X coordinate does not change.)

Offset Value / Data Type Meaning
0 0x8B fixed byte
1 ... 2 RELCOORD Y coordinate of relative 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.

Offset Value / Data Type Meaning
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.

Offset Value / Data Type Meaning
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

AA - Cut to Relative Position in X Direction

Perform a straight cut to a relative position in X direction with the configured speed while turning the laser on with the configured power. The X coordinate for the cut is specified relative to the position of the laser head at the begin of this message. (The Y coordinate does not change.)

Offset Value / Data Type Meaning
0 0xAA fixed byte
1 ... 2 RELCOORD X coordinate of relative position to cut to

AB - Cut to Relative Position in Y Direction

Perform a straight cut to a relative position in Y direction with the configured speed while turning the laser on with the configured power. The Y coordinate for the cut is specified relative to the position of the laser head at the begin of this message. (The X coordinate does not change.)

Offset Value / Data Type Meaning
0 0xAB fixed byte
1 ... 2 RELCOORD Y coordinate of relative position to cut to

C6 01/02/21/22 - Set Laser Power

Set the minimum or maximum laser power to be used for cutting.

Offset Value / Data Type Meaning
0 0xC6 fixed byte
1 0x01 set minimum power of first laser
1 0x02 set maximum power of first laser
1 0x21 set minimum power of second laser
1 0x22 set maximum power of second laser
2 ... 3 PWR relative laser power to use for cutting

C6 31/32/41/42 - Set Laser Power for Layer

Set the minimum or maximum laser power for a layer.

Offset Value / Data Type Meaning
0 0xC6 fixed byte
1 0x31 set minimum power of first laser
1 0x32 set maximum power of first laser
1 0x41 set minimum power of second laser
1 0x42 set maximum power of second laser
2 LAYER layer number
3 ... 4 PWR minimum relative laser power to use for cutting

C9 02 - Set Speed for Cutting

Set speed to be used for cutting.

Offset Value / Data Type Meaning
0 0xC9 fixed byte
1 0x02 fixed byte
2 ... 6 SPEED speed to use for cutting

C9 04 - Set Speed for Cutting of Layer

Set speed to be used for cutting on a layer.

Offset Value / Data Type Meaning
0 0xC9 fixed byte
1 0x04 fixed byte
2 LAYER layer number
3 ... 7 SPEED speed to use for cutting

CA 01 - Enable / Disable Devices

Enable and/or disable devices.

Offset Value / Data Type Meaning
0 0xCA fixed byte
1 0x01 fixed byte
2 DEVICE_FLAGS which devices to enable

CA 02 - Set Current Layer

Set the current layer.

Offset Value / Data Type Meaning
0 0xCA fixed byte
1 0x02 fixed byte
2 LAYER layer number

CA 06 - Set Color of Layer

Set the RGB color for a layer. It is unknown for which purpose the machine uses the RGB color. It might be used for visualization of the cuts in simulation only.

Offset Value / Data Type Meaning
0 0xCA fixed byte
1 0x06 fixed byte
2 LAYER layer number
3 ... 7 COLOR RGB color of layer

CA 22 - Set Maximum Layer Number

Set the maximum layer number used in the file.

Offset Value / Data Type Meaning
0 0xCA fixed byte
1 0x22 fixed byte
2 LAYER maximum layer number used in the file

E7 03/07 - Minimum/Maximum Coordinates

Information about the minimum/maximum coordinates used in the file.

Offset Value / Data Type Meaning
0 0xE7 fixed byte
1 0x03 minimum coordinates used in the file
1 0x07 maximum coordinates used in the file
2 ... 6 ABSCOORD minimum/maximum X coordinate in the file
7 ... 11 ABSCOORD minimum/maximum Y coordinate in the file

More Messages

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

Disclaimer

Please note that all information is to the best of my knowlege, but you may only use it at your own risk. All information is provided without warranty of any kind. The provided information is to be used for educational purposes only.