Ruida

The educational technology and digital learning wiki
Jump to navigation Jump to search

Introduction[edit | edit source]

Ruida controllers are laser cutter controller boards with several beefier features. They are built for lasering, and run a download and execute scheme. They are natively supported by RDWorks (which is free) and supported by Lightburn (Proprietary, $80). They have a control panel that can often display the program to be run and perform jogging operations. There have been a number of reverse engineering and supporting operations.

Ruida controllers can control 4 axises. These are X, Y, Z, and U.

Models[edit | edit source]

There are several Ruida Models which cause slightly different interactions.

644XG[edit | edit source]

Default Model.

644XS[edit | edit source]

Replying 0 to a DA0004 request causes a communication error.

320[edit | edit source]

Replying 0 to a DA0004 request causes a communication error.

633X[edit | edit source]

Replying 0 to a DA0004 request causes a communication error.

634XG[edit | edit source]

Uses an altered form of the scrambling algorithm.

The xor magic value is 0x11

654XG[edit | edit source]

Replying 0 to a DA0004 request causes a communication error.


Card Values[edit | edit source]

There are a variety of different swizzles for different model numbers and these are specified by the Card ID.

Model Card ID Swizzle
0x6320 swizzle 0x11
0x6302 swizzle 0x83
0x6301 swizzle 0x88
0x6300 swizzle 0x33
0x2210 swizzle 0x16
0x630b swizzle 0x33
0x6425 swizzle 0x88
0x6501 swizzle 0x34
0x6511 swizzle 0x77
0x6531 swizzle 0x77
0x6512 swizzle 0x75
0x6513 swizzle 0x99
0x6514 swizzle 0x13
0x651e swizzle 0x60
0x6533 swizzle 0x60
0x651f swizzle 0x76
0x651f swizzle 0x76
0x6530 swizzle 0x10
0x6532 swizzle 0x10
0x6920 swizzle 0xa1
0x6811 swizzle 0x77
0x690f-0x6911 swizzle 0xa1
0x6912 swizzle 0x88
0x6930 swizzle 0x1a
0x693f swizzle 0x1a
0x7230 swizzle 0x10
0x7235 swizzle 0x10
0x7236 swizzle 0x10
0x7430 swizzle 0x10
0x7930 swizzle 0x10
Others Others swizzle 0x88

Protocol[edit | edit source]

The laser can be controlled through a few different means. It accepts USB files in an .rd format, it can be set to listen for UDP packets on port 50200, and can directly transfer files via USB to the device.

UDP:50200[edit | edit source]

The device listens on port 50200 on the laser, and sends from port 40200.

The payload is an RD file with the same payload, command, and syntax. It also has the same swizzling so an RD file for a 634XG will be swizzled with 0x11 and not 0x88 for the magic number.

UDP packets requires an extra 16 bit checksum for each packet. Since UDP can lose packets it requires an ACK reply after every packet. The checksum doesn't require any special operations it's literally just the lower 16 bits sum of the value of each byte in the packet. Beyond those differences the remaining elements are Ruida commands which follow a fairly well understood structure.

The first two bytes of any UDP packet are big endian checksum. This response to this is either 0xCC Checksum match or 0xCF checksum fail. On fail the packet must be resent. Too long of a time will cause a time out.

In UDP the packet size is limited to 1474 bytes. However most modern versions simply cut at around 1000 bytes. These cuts are permitted to occur mid-command but modernly do not do that. They cut at command boundaries.

There is no header, arbitration, or handshaking. Anything that is interpreted as correct will execute.

The timeout is about 4 seconds. It expects a reply ACK packet by then.

The first chunk will retry other chunks will simply fail.

The payload has an EOF command.

UDP:50207[edit | edit source]

In addition to the normal listening port at 50200 three is one located at 50207 which sends from port 40207.

The payload are simple commands which do not have any real detail to them and they correspond to a ruida android app that gives basic commands. The protocol is different in that there is no swizzling. All bytes are sent in the clear without any byte manipulation.

0xCC is replied to with 0xCC during the handshake as a ACK packet.

0xCE is sent regularly as a sort of keep-alive packet.

All regular commands sent are 0xA5 commands.

    --> a55006	(Interface Start/Pause)
    <-- cc	(ACK)
    --> a55009	(Interface Stop)
    <-- cc	(ACK)
    --> a5505a	(Interface Reset)
    <-- cc	(ACK)
    --> a5500f	(Interface Trace On/Off)
    <-- cc	(ACK)
    --> a55007	(Interface ESC)
    <-- cc	(ACK)
    --> a55012	(Interface Laser Gate)
    <-- cc	(ACK)
    --> a55005	(Interface Pulse Down)
    <-- cc	(ACK)
    --> a55105	(Interface Pulse Up)
    <-- cc	(ACK)
    --> a55008	(Interface Origin)
    <-- cc	(ACK)
    --> a55300	(Interface Frame)
    <-- cc	(ACK)
    --> a5500c	(Interface +U Down)
    <-- cc	(ACK)
    --> a5510c	(Interface +U Up)
    <-- cc	(ACK)
    --> a55003	(Interface +Y Down)
    <-- cc	(ACK)
    --> a55103	(Interface +Y Up)
    <-- cc	(ACK)
    --> a5500a	(Interface +Z Down)
    <-- cc	(ACK)
    --> a5510a	(Interface +Z Up)
    <-- cc	(ACK)
    --> a55001	(Interface -X Down)
    <-- cc	(ACK)
    --> a55101	(Interface -X Up)
    <-- cc	(ACK)
    --> a55011	(Interface Speed)
    <-- cc	(ACK)
    --> a55002	(Interface +X Down)
    <-- cc	(ACK)
    --> a55102	(Interface +X Up)
    <-- cc	(ACK)
    --> a5500d	(Interface -U Down)
    <-- cc	(ACK)
    --> a5510d	(Interface -U Up)
    <-- cc	(ACK)
    --> a55004	(Interface -Y Down)
    <-- cc	(ACK)
    --> a55104	(Interface -Y Up)
    <-- cc	(ACK)
    --> a5500b	(Interface -Z Down)
    <-- cc	(ACK)
    --> a5510b	(Interface -Z Up)
    <-- cc	(ACK)

The protocol is also unique in that some instructions have a keydown and keyup meaning so 0xa5500b means start moving in the -Z direction, and 0xa5510b means stop moving in the -Z direction.

USB[edit | edit source]

There are two methods of USB transfer, direct transfer with a USB device between the machine and computer, and through the use of a thumb drive.

When plugged in to USB it uses USB 1.1 at full speed. The connected communications chip is the FT245R chip. This uses a standard communications serial port.

  • 19200 bps
  • 8 data bits
  • No parity
  • 1 stop bit
  • hardware flow control [1]

Swizzling[edit | edit source]

All packet data is lightly swizzled at the byte level. The checksum is calculated preswizzle.

    644XG - Magic = 0x88
    644XS - Magic = 0x88
    320 - Magic = 0x88
    633X - Magic = 0x88
    634XG - Magic = 0x11
    654XG - Magic = 0x88
    RDL9635 - Magic = 0x38 [2]

Swizzling:

       b ^= (b >> 7) & 0xFF
       b ^= (b << 7) & 0xFF
       b ^= (b >> 7) & 0xFF
       b ^= magic
       b = (b + 1) & 0xFF

Unswizzling:

       b = (b - 1) & 0xFF
       b ^= magic
       b ^= (b >> 7) & 0xFF
       b ^= (b << 7) & 0xFF
       b ^= (b >> 7) & 0xFF
       return b

The general algorithm swaps the first and last digit, xors the data and adds 1. The reverse unswizzling requires subtracting one, xor, and swapping the first and last digit. In the presented code the swap is done there with an xor swap.

Ruida Encoding[edit | edit source]

The UDP and USB modes perform some jogging and realtime controls and data queries but mostly it sends .rd files.

Structure[edit | edit source]

The basic structure of an .rd file is a header and body.

Header[edit | edit source]

The header has two main sections, the main header, and the layer headers.

The main header sets the origin point, and the bounding boxes for the entire project.

Each layer/cut used has it's own header that corresponds to the Work information in RDWorks, conveying the speed to travel at, the min power, several other power values, the color of that layer, frequency etc.

Body[edit | edit source]

The body intros with a series of prestart commands and configuration elements before starting the actual layers. All layer data is conveyed before closing the element with an End of File command.

Data Types[edit | edit source]

Each command in Ruida starts with a a high bit meaning all bytes sent that are 0x80 or above are commands. All other bytes consequently cannot use that bit. This leads to the strange bit-count numbers, namely 14 bit integers and 35 bit integers.

The basic raw types:

Raw Type Bits Bytes
int_7 7 1
int_14 14 2
uint14 14 2
int_35 32 5
cstring 7*(N+1) N+1

The 35 bit numbers require 5 bytes (5 * 7 bits) which gives 35 bits. These are signed and unsigned at 35 bits. You could likely truncate them at 32 bits without any ill effects.

Type Raw Type Bits Bytes Units
Abscoord int_35 32 5 micrometers
Relcoord int_14 14 2 micrometers
Power uint_14 14 2 (100 / 2^14) percent
Time int_35 32 5 microseconds
Frequency int_35 32 5 Hz
Color int_35 24 5 #BBGGRR 3-component 8-bit color.
Part int_7 7 1 Part / Layer Index.

Commands[edit | edit source]

Byte 0 Byte1 Byte2 Syntax Length Meaning
0x80 0x00 0x80 0x00 <Abscoord> 7 Axis X Move
0x80 0x08 0x80 0x08 <Abscoord> 7 Axis Z Move
0x88 0x88 <Abscoord> <Abscoord> 11 Move Absolute <X> <Y>
0x89 0x89 <Relcoord> <Relcoord> 5 Move Relative <DX> <DY>
0x8A 0x8A <Relcoord> 3 Move Horizontal Relative <DX>
0x8B 0x8B <Relcoord> 3 Move Vertical Relative <DY>
0xA0 0x00 0xA0 0x00 <Abscoord> 7 Axis Y Move
0xA0 0x08 0xA0 0x08 <Abscoord> 7 Axis U Move
0xA5 0x50 <interface value> 0xA5 0x50 <interface value> 6 UDP:50207 command. Keypress or Keydown.
0xA5 0x51 <interface value> 0xA5 0x50 <interface value> 6 UDP:50207 command, Key Up.
0xA8 0xA8 <Abscoord> <Abscoord> 11 Cut Absolute <X> <Y>
0xA9 0xA9 <Relcoord> <Relcoord> 5 Cut Relative <DX> <DY>
0xAA 0xAA <Relcoord> 3 Cut Horizontal Relative <DX>
0xAB 0xAB <Relcoord> 3 Cut Vertical Relative <DY>
0xC7 0xC7 <Power> 3 Immediate Power 1 <Power>
0xC0 0xC0 <Power> 3 Immediate Power 2 <Power>
0xC2 0xC2 <Power> 3 Immediate Power 3 <Power>
0xC3 0xC3 <Power> 3 Immediate Power 4 <Power>
0xC8 0xC8 <Power> 3 End Power 1 <Power>
0xC1 0xC1 <Power> 3 End Power 2 <Power>
0xC4 0xC4 <Power> 3 End Power 3 <Power>
0xC5 0xC5 <Power> 3 End Power 4 <Power>
0xC6 0x01 0xC6 0x01 <Power> 4 Power Min 1 <Power>
0xC6 0x21 0xC6 0x21 <Power> 4 Power Min 2 <Power>
0xC6 0x05 0xC6 0x05 <Power> 4 Power Min 3 <Power>
0xC6 0x07 0xC6 0x07 <Power> 4 Power Min 4 <Power>
0xC6 0x02 0xC6 0x02 <Power> 4 Power Max 1 <Power>
0xC6 0x22 0xC6 0x22 <Power> 4 Power Max 2 <Power>
0xC6 0x06 0xC6 0x06 <Power> 4 Power Max 3 <Power>
0xC6 0x08 0xC6 0x08 <Power> 4 Power Max 4 <Power>
0xC6 0x10 0xC6 0x10 <Time.> 7 Laser Interval
0xC6 0x11 0xC6 0x11 <Time.> 7 Add Delay
0xC6 0x12 0xC6 0x12 <Time.> 7 Laser On Delay
0xC6 0x13 0xC6 0x13 <Time.> 7 Laser Off Delay
0xC6 0x15 0xC6 0x15 ?? 7 Laser On2
0xC6 0x16 0xC6 0x16 ?? 7 Laser Off2
0xC6 0x31 0xC6 0x31 <Part> <Power> 5 Part, Power Min 1 <Part> <Power>
0xC6 0x41 0xC6 0x41 <Part> <Power> 5 Part, Power Min 2 <Part> <Power>
0xC6 0x35 0xC6 0x35 <Part> <Power> 5 Part, Power Min 3 <Part> <Power>
0xC6 0x37 0xC6 0x37 <Part> <Power> 5 Part, Power Min 4 <Part> <Power>
0xC6 0x32 0xC6 0x32 <Part> <Power> 5 Part, Power Max 1 <Part> <Power>
0xC6 0x42 0xC6 0x42 <Part> <Power> 5 Part, Power Max 2 <Part> <Power>
0xC6 0x36 0xC6 0x36 <Part> <Power> 5 Part, Power Max 3 <Part> <Power>
0xC6 0x38 0xC6 0x38 <Part> <Power> 5 Part, Power Max 4 <Part> <Power>
0xC6 0x50 0xC6 0x50 <Power> 4 ThroughPower <Power>
0xC6 0x51 0xC6 0x51 <Power> 4 ThroughPower <Power>
0xC6 0x55 0xC6 0x55 <Power> 4 ThroughPower <Power>
0xC6 0x56 0xC6 0x56 <Power> 4 ThroughPower <Power>
0xC6 0x60 0xC6 0x60 <Laser> <Part> <Frequency> 9 Part, Frequency <Laser> <Part> <Frequency>
0xC9 0x02 0xC9 0x02 <Speed> 7 Velocity <Speed>
0xC9 0x03 0xC9 0x03 <Speed> 7 Axis Velocity <Speed>
0xC9 0x04 0xC9 0x04 <Part> <Speed> 8 Part Velocity <Speed>
0xC9 0x05 0xC9 0x05 <Speed> 7 Force Velocity <Speed>
0xC9 0x06 0xC9 0x06 <Speed> 7 Axis Move Speed <Speed>
0xCA 0x01 0x00 0xCA 0x01 0x00 3 End Layer
0xCA 0x01 0x01 0xCA 0x01 0x01 3 Work Mode 1
0xCA 0x01 0x02 0xCA 0x01 0x02 3 Work Mode 2
0xCA 0x01 0x03 0xCA 0x01 0x03 3 Work Mode 3
0xCA 0x01 0x04 0xCA 0x01 0x04 3 Work Mode 4
0xCA 0x01 0x55 0xCA 0x01 0x55 3 Work Mode 5
0xCA 0x01 0x55 0xCA 0x01 0x05 3 Work Mode 6
0xCA 0x01 0x10 0xCA 0x01 0x10 3 Layer Device=0
0xCA 0x01 0x11 0xCA 0x01 0x11 3 Layer Device=1
0xCA 0x01 0x12 0xCA 0x01 0x12 3 Air Assist Off
0xCA 0x01 0x13 0xCA 0x01 0x13 3 Air Assist On
0xCA 0x01 0x14 0xCA 0x01 0x14 3 Set DbHead
0xCA 0x01 0x30 0xCA 0x01 0x30 3 EnLaser2Offset 0
0xCA 0x01 0x31 0xCA 0x01 0x31 3 EnLaser2Offset 1
0xCA 0x02 0xCA 0x02 <Part> <Index> 4 Part, Layer Number <Part> <Index>
0xCA 0x03 0x00 0xCA 0x03 <EnLaserTube> 3 EnLaserTube Start
0xCA 0x04 0x00 0xCA 0x04 <X-Sign-Map> 3 X Sign Map
0xCA 0x05 0xCA 0x05 <Color> 7 Layer Color <Color>
0xCA 0x06 0xCA 0x06 <Part> <Color> 8 Part, Layer Color <Color>
0xCA 0x10 0xCA 0x10 <EnExIO> 3 EnExIo Start
0xCA 0x22 0xCA 0x22 <Part> 3 Part, Max Layer
0xCA 0x30 0xCA 0x30 ?? 6 U File ID
0xCA 0x40 0xCA 0x40 <V0> 3 ZU Map
0xCA 0x41 0xCA 0x41 <Part> <Mode> 4 Part, Work Mode <Part> <Mode>
0xCC 0xCC 1 Msg Acknowledge
0xCD 0xCD 1 Msg Error
0xD7 0xD7 1 End of File
0xD8 0x00 0xD8 0x00 2 Start Process
0xD8 0x00 0xD8 0x01 2 Stop Process
0xD8 0x02 0xD8 0x02 2 Pause Process
0xD8 0x03 0xD8 0x03 2 Restore Process
0xD8 0x10 0xD8 0x12 2 Ref Point Mode 0
0xD8 0x10 0xD8 0x11 2 Ref Point Mode 1
0xD8 0x10 0xD8 0x10 2 Ref Point Mode 2
0xD8 0x2C 0xD8 0x2C 2 Home Z
0xD8 0x2D 0xD8 0x2C 2 Home U
0xD8 0x2E 0xD8 0x2E 2 Focus Z
0xD9 0x00 0xD9 0x00 <Options> <Abscoord> 8 Move X <Options> <Abscoord>
0xD9 0x01 0xD9 0x01 <Options> <Abscoord> 8 Move Y <Options> <Abscoord>
0xD9 0x02 0xD9 0x02 <Options> <Abscoord> 8 Move Z <Options> <Abscoord>
0xD9 0x03 0xD9 0x03 <Options> <Abscoord> 8 Move U <Options> <Abscoord>
0xD9 0x10 0xD9 0x10 <Options> 3 Home XY <Options> <Abscoord>
0xDA 0x00 0xDA 0x00 <Param> 4 Read Param <Param>
0xDA 0x01 0xDA 0x01 <Param> <int_35> <copy int_35> 14 Write/Respond Param <Param> <Value>
0xE6 0x01 0xE6 0x01 2 Set Absolute
0xE7 0x00 0xE7 0x00 2 Block End
0xE7 0x01 0xE7 0x01 <c_string> 2 + N Filename
0xE7 0x03 0xE7 0x03 <Abscoord> <Abscoord> 12 Process TopLeft <X> <Y>
0xE7 0x07 0xE7 0x07 <Abscoord> <Abscoord> 12 Process BottomRight <X> <Y>
0xE7 0x04 0xE7 0x04 <int_14> <int_14> <int_14> <int_14> 16 Process Repeat ??
0xE7 0x05 0xE7 0x05 <Direction> 3 Array Direction
0xE7 0x06 0xE7 0x06 ?? 12 Feed Repeat
0xE7 0x08 0xE7 0x08 <V0> <V1> 16 Array Repeat <V0> <V1>
0xE7 0x09 0xE7 0x09 ??? 7 Feed Length
0xE7 0x13 0xE7 0x13 <Abscoord> <Abscoord> 12 Array Min Point <X> <Y>
0xE7 0x17 0xE7 0x17 <Abscoord> <Abscoord> 12 Array Max Point <X> <Y>
0xE7 0x23 0xE7 0x23 <Abscoord> <Abscoord> 12 Array Add <X> <Y>
0xE7 0x24 0xE7 0x24 <V0> 3 Array Mirror
0xE7 0x35 0xE7 0x35 <V0> <V1> 12 Block X Size <V0> <V1>
0xE7 0x36 0xE7 0x36 <int_7> 3 Set File Empty
0xE7 0x46 0xE7 0x46 '0x11227766' 12 BY Test (static value)
0xE7 0x50 0xE7 0x50 <Abscoord> <Abscoord> 12 Document Min Point <X> <Y>
0xE7 0x51 0xE7 0x51 <Abscoord> <Abscoord> 12 Document Max Point <X> <Y>
0xE7 0x52 0xE7 0x52 <Part> <Abscoord> <Abscoord> 13 Part, MinPoint <X> <Y>
0xE7 0x53 0xE7 0x53 <Part> <Abscoord> <Abscoord> 13 Part, MaxPoint <X> <Y>
0xE7 0x54 0xE7 0x54 <0 or 1> <Abscoord> 8 Pen Offset <Abscoord> (0 then 1, always)
0xE7 0x55 0xE7 0x55 <0 or 1> <Abscoord> 8 Layer Offset <Abscoord> (0 then 1, always)
0xE7 0x60 0xE7 0x60 <Index> 3 Set Current Element Index <Index>
0xE7 0x61 0xE7 0x61 <Part> <Abscoord> <Abscoord> 13 Part, MinPointEx <X> <Y>
0xE7 0x62 0xE7 0x62 <Part> <Abscoord> <Abscoord> 13 Part, MaxPointEx <X> <Y>
0xE8 0x00 0xE8 0x00 12 Delete Document
0xE8 0x01 0xE8 0x01 <FileNumber> 4 Document Name <FileNumber>
0xE8 0x02 0xE8 0x02 2 File Transfer
0xE8 0x03 0xE8 0x03 <Index> 3 Select Document <Index>
0xE8 0x04 0xE8 0x04 2 Calculate Document Time
0xEA 0xEA <Index> 2 Array Start
0xEB 0xEB 1 Array End
0xF0 0xF0 1 Ref Point Set
0xF1 0x00 0xF1 0x00 <Index> 3 Element Max Index <Index>
0xF1 0x01 0xF1 0x01 <Index> 3 Element Name Max Index <Index>
0xF1 0x02 0xF1 0x02 <Enable> 3 Enable Block Cutting
0xF1 0x03 0xF1 0x03 <Abscoord> <Abscoord> 12 Display Offset <X> <Y>
0xF1 0x04 0xF1 0x04 <Index> 3 Feed Auto Calc <Index>
0xF1 0x10 0xF1 0x10 <Index> <Index> 4 Unknown Common
0xF2 0x00 0xF2 0x00 <Index> 3 Element Index <Index>
0xF2 0x01 0xF2 0x01 <Index> 3 Element Name <Index>
0xF2 0x02 0xF2 0x02 <c_string 10 bytes> 12 Element Name
0xF2 0x03 0xF2 0x03 <Abscoord> <Abscoord> 12 Element Array Min Point <X> <Y>
0xF2 0x04 0xF2 0x04 <Abscoord> <Abscoord> 12 Element Array Max Point <X> <Y>
0xF2 0x05 0xF2 0x05 <V0> <V1> 16 Element Array (Same: E7 08)
0xF2 0x06 0xF2 0x06 <Abscoord> <Abscoord> 12 Element Array Add <X> <Y>
0xF2 0x07 0xF2 0x07 <V0> 3 Element Array Mirror

Options for D900, D901, D902, D903, D910:

Value Origin Light Meaning
0 X Move with origin.
1 X X Move with origin and light
2 Move with no options
3 X Move with light

Interface Values for A5 commands.

Command Meaning
a55006 Interface Start/Pause
a55009 Interface Stop
a5505a Interface Reset
a5500f Interface Trace On/Off
a55007 Interface ESC
a55012 Interface Laser Gate
a55005 Interface Pulse Down
a55105 Interface Pulse Up
a55008 Interface Origin
a55300 Interface Frame
a5500c Interface +U Down
a5510c Interface +U Up
a55003 Interface +Y Down
a55103 Interface +Y Up
a5500a Interface +Z Down
a5510a Interface +Z Up
a55001 Interface -X Down
a55101 Interface -X Up
a55011 Interface Speed
a55002 Interface +X Down
a55102 Interface +X Up
a5500d Interface -U Down
a5510d Interface -U Up
a55004 Interface -Y Down
a55104 Interface -Y Up
a5500b Interface -Z Down
a5510b Interface -Z Up

Properties[edit | edit source]

The command DA is quite commonly used and helpful. It gets and sends information to the laser cutter.

Data is requested from and to the machine for bidirectional data flow. For general usability the mission critical element is that the reply to 05 7E is 0x65006500. This is requested early on in most communications.

Byte 0 Byte 1 Addr 0 Addr 1 Value Meaning
0xDA 0x00 Byte0 Byte1 Query <Byte0 Byte1>
0xDA 0x01 Byte0 Byte1 <int_32_5byte> Set <Byte0 Byte1> <Value>

Here is the list of known properties.

Byte 0 Byte 1 Address(hex) Address(dec) Key_Value
0x00 0x04 0x004 4 IO Enable
0x00 0x0B 0x00b 11 Eng Facula
0x00 0x05 0x005 5 G0 Velocity
0x00 0x0E 0x00E 14 Eng Vert Velocity
0x00 0x0C 0x00C 12 Home Velocity
0x00 0x10 0x010 16 System Control Mode
0x00 0x11 0x011 17 Laser PWM Frequency 1
0x00 0x17 0x017 23 Laser PWM Frequency 2
0x00 0x65 0x065 101 Laser PWM Frequency 3
0x00 0x6a 0x06A 106 Laser PWM Frequency 4
0x00 0x12 0x012 18 Laser Min Power 1
0x00 0x18 0x018 24 Laser Min Power 2
0x00 0x63 0x063 99 Laser Min Power 3
0x00 0x68 0x068 104 Laser Min Power 4
0x00 0x13 0x013 19 Laser Max Power 1
0x00 0x19 0x019 25 Laser Max Power 2
0x00 0x64 0x064 100 Laser Max Power 3
0x00 0x69 0x069 105 Laser Max Power 4
0x00 0x1A 0x01A 26 Laser Standby Frequency 1
0x00 0x1C 0x01C 28 Laser Standby Frequency 2
0x00 0x66 0x066 102 Laser Standby Frequency 3
0x00 0x6B 0x06B 107 Laser Standby Frequency 4
0x00 0x20 0x020 32 Axis Control Para 1
0x00 0x30 0x030 48 Axis Control Para 2
0x00 0x40 0x040 64 Axis Control Para 3
0x00 0x50 0x050 80 Axis Control Para 4
0x00 0x1e 0x01E 30 Auto Type Space
0x00 0x2B 0x02B 43 Axis Backlash 1
0x00 0x3B 0x03B 59 Axis Backlash 2
0x00 0x4B 0x04B 75 Axis Backlash 3
0x00 0x5B 0x05B 91 Axis Backlash 4
0x00 0x28 0x028 40 Axis Btn Acc 1
0x00 0x38 0x038 56 Axis Btn Acc 2
0x00 0x48 0x048 72 Axis Btn Acc 3
0x00 0x58 0x058 88 Axis Btn Acc 4
0x00 0x27 0x027 39 Axis Btn Start Vel 1
0x00 0x37 0x037 55 Axis Btn Start Vel 2
0x00 0x47 0x047 71 Axis Btn Start Vel 3
0x00 0x57 0x057 87 Axis Btn Start Vel 4
0x00 0x29 0x029 41 Axis Estp Acc 1
0x00 0x39 0x039 57 Axis Estp Acc 2
0x00 0x49 0x049 73 Axis Estp Acc 3
0x00 0x59 0x059 89 Axis Estp Acc 4
0x00 0x2A 0x02A 42 Axis Home Offset 1
0x00 0x3A 0x03A 58 Axis Home Offset 2
0x00 0x4A 0x04A 74 Axis Home Offset 3
0x00 0x5A 0x05A 90 Axis Home Offset 4
0x00 0x25 0x025 37 Axis Max Acc 1
0x00 0x35 0x035 53 Axis Max Acc 2
0x00 0x45 0x045 69 Axis Max Acc 3
0x00 0x55 0x055 85 Axis Max Acc 4
0x00 0x23 0x023 35 Axis Max Velocity 1
0x00 0x33 0x033 51 Axis Max Velocity 2
0x00 0x43 0x043 67 Axis Max Velocity 3
0x00 0x53 0x053 83 Axis Max Velocity 4
0x00 0x21 0x021 33 Axis Precision 1
0x00 0x31 0x031 49 Axis Precision 2
0x00 0x41 0x041 65 Axis Precision 3
0x00 0x51 0x051 81 Axis Precision 4
0x00 0x26 0x026 38 Axis Range 1
0x00 0x36 0x036 54 Axis Range 2
0x00 0x46 0x046 70 Axis Range 3
0x00 0x56 0x056 86 Axis Range 4
0x00 0x24 0x024 36 Axis Start Velocity 1
0x00 0x34 0x034 52 Axis Start Velocity 2
0x00 0x44 0x044 68 Axis Start Velocity 3
0x00 0x54 0x054 84 Axis Start Velocity 4
0x00 0x16 0x016 22 Laser Attenuation
0x00 0x1B 0x01B 27 Laser Standby Pulse 1
0x00 0x1d 0x01D 29 Laser Standby Pulse 2
0x00 0x67 0x067 103 Laser Standby Pulse 3
0x00 0x6C 0x06C 108 Laser Standby Pulse 4
0x00 0x60 0x060 96 Machine Type (0x1155, 0xaa55)
0x02 0x00 0x100 256 System Settings
0x02 0x0c 0x10C 268 Manual Dis
0x02 0x31 0x131 305 Manual Fast Speed
0x02 0x32 0x132 306 Manual Slow Speed
0x02 0x21 0x121 289 Rotate D
0x02 0x1F 0x11F 287 Rotate Pulse
0x02 0x1B 0x11B 283 Turn Ratio
0x02 0x01 0x101 257 Turn Velocity
0x02 0x02 0x102 258 Syn Acc
0x02 0x09 0x109 265 Turn Acc
0x02 0x07 0x107 263 Feed Delay After
0x02 0x0B 0x10B 267 Feed Delay Prior
0x02 0x0E 0x10E 270 Focus Depth
0x02 0x0A 0x10A 266 G0 Acc
0x02 0x1C 0x11C 284 Acc G0 Ratio
0x02 0x0D 0x10D 269 Shut Down Delay
0x02 0x03 0x103 259 G0 Delay
0x02 0x26 0x126 294 User Para 1
0x02 0x2C 0x12C 300 U Home Velocity
0x02 0x2D 0x12D 301 U Work Velocity
0x02 0x25 0x125 293 X Eng Acc
0x02 0x24 0x124 292 X Minimum Eng Velocity
0x02 0x35 0x135 309 Y Eng Acc
0x02 0x34 0x134 308 Y Minimum Eng Velocity
0x02 0x37 0x137 311 Eng Acc Ratio
0x02 0x2A 0x12A 298 Z G0 Velocity
0x02 0x28 0x128 296 Z Home Velocity
0x02 0x2B 0x12B 299 Z Pen Up Position
0x02 0x29 0x129 297 Z Work Velocity
0x02 0x1A 0x11A 282 Acc Ratio
0x02 0x17 0x117 279 Array Feed Repay
0x02 0x0F 0x10F 271 Go Scale Blank
0x03 0x00 0x180 384 Card Language
0x03 0x01 0x181 385 PC Lock 1
0x03 0x02 0x182 386 PC Lock 2
0x03 0x03 0x183 387 PC Lock 3
0x03 0x04 0x184 388 PC Lock 4
0x03 0x05 0x185 389 PC Lock 5
0x03 0x06 0x186 390 PC Lock 6
0x03 0x07 0x187 391 PC Lock 7
0x04 0x11 0x211 529 Total Laser Work Time
0x04 0x01 0x201 513 Total Open Time
0x04 0x23 0x223 547 Total Work Length 1
0x04 0x33 0x233 563 Total Work Length 2
0x04 0x43 0x243 579 Total Work Length 3
0x04 0x53 0x253 595 Total Work Length 4
0x04 0x03 0x203 515 Total Work Number
0x04 0x02 0x202 514 Total Work Time
0x04 0x08 0x208 520 Pre Work Time
0x04 0x05 0x205 517 Total Doc Number
0x04 0x21 0x221 545 Axis Preferred Position 1
0x04 0x31 0x231 561 Axis Preferred Position 2
0x04 0x41 0x241 577 Axis Preferred Position 3
0x04 0x51 0x251 593 Axis Preferred Position 4
0x04 0x00 0x200 512 Machine Status (0b00110111 relevant bits).
0x05 0x7E 0x2FE 766 Card ID
0x05 0x7F 0x2FF 767 Mainboard Version
0x07 0x10-0x74 0x390 912 Document Time
0x0b 0x11 0x591 1425 Card Lock

Default Values[edit | edit source]

Parameter Type RDWorks Name Default Value Code Parameter Name
Cut Idle speed 200 mm/s 0x00 0x05 G0 Velocity
Cut Idle Acc 3000.000 mm/s2 0x02 0x0a G0 Acc
Cut Start Speed 20 mm/s 0x02 0x01 Turn Velocity
Cut Min Acc 400mm/s2 0x02 0x09 Turn Acc
Cut Max acc 3000mm/s2 0x02 0x02 Syn Acc
Cut Idle delay 0ms 0x02 0x03 G0 Delay
Cut Acc factor 100% 0x02 0x1A Acc Ratio
Cut G0 Acc factor 100% 0x02 0x1C Acc G0 Ratio
Cut Speed factor 100% 0x02 0x1B Turn Ratio
Sweep x Start Speed 10mm/s 0x02 0x24 X Min Eng Velocity
Sweep y Start Speed 10mm/s 0x02 0x34 Y Min Eng Velocity
Sweep x Acc 10000.000mm/s2 0x02 0x25 X Eng Acc
Sweep y Acc 3000mm/s2 0x02 0x35 Y Eng Acc
Sweep Line Shift Speed 100 mm/s 0x00 0x0E Eng Vert Velocity
Sweep Scan Mode Common Mode
Sweep Facula Size 80% 0x00 0x0B Eng Facula
Sweep Engraving factor 100 0x02 0x37 Eng Acc Ratio
Feeding Delay before feed 0s 0x02 0x0B Feed Delay Prior
Feeding Delay after feed 0ms 0x02 0x07 Feed Delay After
Feeding Progressive Feeding No
Feeding Progressive feeding repay 0mm 0x02 0x17 Array Feed Repay
Feeding Last feeding Yes
Home Home speed 20mm/s 0x00 0x0C Home Velocity
Home Auto home X Yes 0x00 0x20 Axis Control Para 1
Home Auto home Y Yes 0x00 0x30 Axis Control Para 2
Home Auto home Z No 0x00 0x40 Axis Control Para 3
Home Auto home U No 0x00 0x50 Axis Control Para 4
Go Scale Go scale mode Close laser
Go Scale Go scale blank 0 mm 0x02 0x0F Go Scale Blank
Other Array processing Bi-dir Array
Other Return position Absolute Origin 0x00 0x10 System Control Mode
Other Focus depth 5mm 0x02 0x0E Focus Depth
Other Backlash X 0mm 0x00 0x2B Axis Backlash 1
Other Backlash Y 0mm 0x00 0x3B Axis Backlash 2
Panel Enable Speed shift No
Panel Fast moving 100 mm/s 0x02 0x31 Manual Fast Speed
Panel Slow moving 10mm/s 0x02 0x32 Manual Slow Speed

System Settings Parameter:

Setting Value V
0x0000 Return Position=Origin
0x4000 Return Position=No return
0x8000 Return Position=Absolute Origin

Machine Status:

    0x10 = IsMove

Examples[edit | edit source]

Example 1, Simple Rect[edit | edit source]

In this example we'll see a very basic project cutting a quickly drawn rectangle.

Command Interpretation Comment
d810 Ref Point Mode 2
f0 Ref Point Set
e601 Set Absolute
f10200 Enable Block Cutting (0)
d800 Start Process
e70600000000000000000000 Feed Repeat (0, 0)
e70300000b51120000021258 Process TopLeft (7504.330709, 1384.251969)
e707000011164c0000064e02 Process BottomRight(11079.527559, 4263.385827)
e75000000b51120000021258 Document Min Point(58.622047, 21136660.866142)
e751000011164c0000064e02 Document Max Point(11079.527559, 4263.385827)
e7040001000100000000000000000000 Process Repeat (1, 1, 0, 0, 0, 0, 0)
e70500 Array Direction (0)
c904000000060d20 0, Speed 100.000000mm/s
c631001319 0, Power 1 Min=(14.996338)
c632001828 0, Power 1 Max=(14.996338)
c641002632 0, Power 2 Min (29.992676)
c642002632 0, Power 2 Max (29.992676)
c635002632 0, Power 3 Min (29.992676)
c636002632 0, Power 3 Max (29.992676)
c637002632 0, Power 4 Min (29.992676)
c638002632 0, Power 4 Max (29.992676)
ca06000000000000 0, Color #000000
ca410000 0, Work Mode 0
e7520000000b51120000021258 0, Min Point(7504.330709, 1384.251969)
e75300000011164c0000064e02 0, MaxPoint(11079.527559, 4263.385827)
e7610000000b51120000021258 0, MinPointEx(7504.330709, 1384.251969)
e76200000011164c0000064e02 0, MaxPointEx(11079.527559, 4263.385827)
ca2200 0, Max Layer
e754000000030650 Pen Offset 0: 1968.503937
e754010000030650 Pen Offset 1: 1968.503937
e755000000000000 Layer Offset 0: 0.000000
e755010000000000 Layer Offset 1: 0.000000
f10300000306500000030650 Display Offset (1968.503937,1968.503937)
f10000 Element Max Index (0)
f10100 Element Name Max Index(0)
f20000 Element Index (0)
f20100 Element Name Index (0)
f202052a391c41046a150820 Element Name (b'\x05*9\x1cA\x04j\x15\x08 ')
f20300000b51120000021255 Element Array Min Point (7504.330709,1384.133858)
f20400001116500000064e03 Element Array Max Point (11079.685039,4263.425197)
f20600000000000000000000 Element Array Add (0.000000,0.000000)
f20700 Element Array Mirror (0)
f205000100017f7f7a3a430000043b2d Element Array (1, 1, -1, -710, -7808, 4, 7597)
ea00 Array Start (0)
e76000 Set Current Element Index (0)
e71300000b51120000021255 Array Min Point (7504.330709,1384.133858)
e71700001116500000064e03 Array Max Point (11079.685039,4263.425197)
e72300000000000000000000 Array Add (0.000000,0.000000)
e72400 Array Mirror 0
e708000100017f7f7a3a430000043b2d Array Repeat (1, 1, -1, -710, -7808, 4, 7597)
ca0100 End Layer
ca0200 0, Layer Number
ca0130 EnLaser2Offset 0
ca0110 Layer Device 0
ca0113 Air Assist On
c9020000060d20 Speed Laser 1 100.000000mm/s
c6150000000000 Laser On2 0.000000ms
c6160000000000 Laser Off2 0.000000ms
c6011319 Power 1 min=14.996338
c6021828 Power 1 max=18.994141
c6212632 Power 2 min=29.992676
c6222632 Power 2 max=29.992676
c6052632 Power 3 min=29.992676
c6062632 Power 3 max=29.992676
c6072632 Power 4 min=29.992676
c6082632 Power 4 max=29.992676
ca030d EnLaserTube Start
ca1000 EnExIO Start 0
8800001116500000021256 Move Absolute (11079.685039, 1384.173228)
a800000b51120000021256 Cut Absolute (7504.330709, 1384.173228)
a800000b51120000064e03 Cut Absolute (7504.330709, 4263.425197)
a800001116500000064e03 Cut Absolute (11079.685039, 4263.425197)
a800001116500000021256 Cut Absolute (11079.685039, 1384.173228)
eb Array End
e700 Block End
da01062000000002470000000247 Set Param 06 20 (None) = [0, 0, 0, 2, 71, 0, 0, 0, 2, 71]
d7 End Of File

Example #2 three rect[edit | edit source]

This time we'll use the same rectangle but add another rectangle with different properties to the mix. And then the first rectangle properties again.

Header text Header text Header text
d810 Ref Point Mode 2
f0 Ref Point Set
e601 Set Absolute
f10200 Enable Block Cutting (0)
d800 Start Process
e70600000000000000000000 Feed Repeat (0, 0)
e7030000052d3c0000021258 Process TopLeft (3454.330709, 1384.251969)
e707000011164c00000c3f3a Process BottomRight(11079.527559, 8060.236220)
e7500000052d3c0000021258 Document Min Point(26.968504, 42273310.944882)
e751000011164c00000c3f3a Document Max Point(11079.527559, 8060.236220)
e7040001000100000000000000000000 Process Repeat (1, 1, 0, 0, 0, 0, 0)
e70500 Array Direction (0)
c904000000060d20 0, Speed 100.000000mm/s
c631001319 0, Power 1 Min=(14.996338)
c632001828 0, Power 1 Max=(14.996338)
c641002632 0, Power 2 Min (29.992676)
c642002632 0, Power 2 Max (29.992676)
c635002632 0, Power 3 Min (29.992676)
c636002632 0, Power 3 Max (29.992676)
c637002632 0, Power 4 Min (29.992676)
c638002632 0, Power 4 Max (29.992676)
ca06000000000000 0, Color #000000
ca410000 0, Work Mode 0
e7520000000a31080000021258 0, Min Point(6697.637795, 1384.251969)
e75300000011164c00000c3f3a 0, MaxPoint(11079.527559, 8060.236220)
e7610000000a31080000021258 0, MinPointEx(6697.637795, 1384.251969)
e76200000011164c00000c3f3a 0, MaxPointEx(11079.527559, 8060.236220)
c904010000047100 1, Speed 80.000000mm/s
c631013f7f 1, Power 1 Min=(49.993896)
c632013f7f 1, Power 1 Max=(49.993896)
c641012632 1, Power 2 Min (29.992676)
c642012632 1, Power 2 Max (29.992676)
c635012632 1, Power 3 Min (29.992676)
c636012632 1, Power 3 Max (29.992676)
c637012632 1, Power 4 Min (29.992676)
c638012632 1, Power 4 Max (29.992676)
ca0601000000017f 1, Color #ff0000
ca410100 1, Work Mode 0
e752010000052d3c0000065d5c 1, Min Point(3454.330709, 4342.519685)
e75301000008066400000a537e 1, MaxPoint(5194.488189, 6873.622047)
e761010000052d3c0000065d5c 1, MinPointEx(3454.330709, 4342.519685)
e76201000008066400000a537e 1, MaxPointEx(5194.488189, 6873.622047)
ca2201 1, Max Layer
e754000000030650 Pen Offset 0: 1968.503937
e754010000030650 Pen Offset 1: 1968.503937
e755000000000000 Layer Offset 0: 0.000000
e755010000000000 Layer Offset 1: 0.000000
f10300000306500000030650 Display Offset (1968.503937,1968.503937)
f10000 Element Max Index (0)
f10100 Element Name Max Index(0)
f20000 Element Index (0)
f20100 Element Name Index (0)
f202052a391c41046a150820 Element Name (b'\x05*9\x1cA\x04j\x15\x08 ')
f2030000052d3d0000021255 Element Array Min Point (3454.370079,1384.133858)
f204000011165000000c3f3a Element Array Max Point (11079.685039,8060.236220)
f20600000000000000000000 Element Array Add (0.000000,0.000000)
f20700 Element Array Mirror (0)
f2050001000100000b691200000a2c64 Element Array (1, 1, 0, 1513, 2304, 10, 5732)
ea00 Array Start (0)
e76000 Set Current Element Index (0)
e7130000052d3d0000021255 Array Min Point (3454.370079,1384.133858)
e717000011165000000c3f3a Array Max Point (11079.685039,8060.236220)
e72300000000000000000000 Array Add (0.000000,0.000000)
e72400 Array Mirror 0
e7080001000100000b691200000a2c64 Array Repeat (1, 1, 0, 1513, 2304, 10, 5732)
ca0100 End Layer
ca0200 0, Layer Number
ca0130 EnLaser2Offset 0
ca0110 Layer Device 0
ca0113 Air Assist On
c9020000060d20 Speed Laser 1 100.000000mm/s
c6150000000000 Laser On2 0.000000ms
c6160000000000 Laser Off2 0.000000ms
c6011319 Power 1 min=14.996338
c6021828 Power 1 max=18.994141
c6212632 Power 2 min=29.992676
c6222632 Power 2 max=29.992676
c6052632 Power 3 min=29.992676
c6062632 Power 3 max=29.992676
c6072632 Power 4 min=29.992676
c6082632 Power 4 max=29.992676
ca030d EnLaserTube Start
ca1000 EnExIO Start 0
8800001116500000021256 Move Absolute (11079.685039, 1384.173228)
a800000b51120000021256 Cut Absolute (7504.330709, 1384.173228)
a800000b51120000064e03 Cut Absolute (7504.330709, 4263.425197)
a800001116500000064e03 Cut Absolute (11079.685039, 4263.425197)
a800001116500000021256 Cut Absolute (11079.685039, 1384.173228)
ca0100 End Layer
ca0201 1, Layer Number
ca0130 EnLaser2Offset 0
ca0110 Layer Device 0
ca0113 Air Assist On
c9020000047100 Speed Laser 1 80.000000mm/s
c6150000000000 Laser On2 0.000000ms
c6160000000000 Laser Off2 0.000000ms
c6013f7f Power 1 min=49.993896
c6023f7f Power 1 max=49.993896
c6212632 Power 2 min=29.992676
c6222632 Power 2 max=29.992676
c6052632 Power 3 min=29.992676
c6062632 Power 3 max=29.992676
c6072632 Power 4 min=29.992676
c6082632 Power 4 max=29.992676
ca030d EnLaserTube Start
ca1000 EnExIO Start 0
8800000806670000065d5c Move Absolute (5194.606299, 4342.519685)
a80000052d3e0000065d5c Cut Absolute (3454.409449, 4342.519685)
a80000052d3e00000a5401 Cut Absolute (3454.409449, 6873.740157)
a8000008066700000a5401 Cut Absolute (5194.606299, 6873.740157)
a800000806670000065d5c Cut Absolute (5194.606299, 4342.519685)
ca0100 End Layer
ca0200 0, Layer Number
ca0130 EnLaser2Offset 0
ca0110 Layer Device 0
ca0113 Air Assist On
c9020000060d20 Speed Laser 1 100.000000mm/s
c6150000000000 Laser On2 0.000000ms
c6160000000000 Laser Off2 0.000000ms
c6011319 Power 1 min=14.996338
c6021828 Power 1 max=18.994141
c6212632 Power 2 min=29.992676
c6222632 Power 2 max=29.992676
c6052632 Power 3 min=29.992676
c6062632 Power 3 max=29.992676
c6072632 Power 4 min=29.992676
c6082632 Power 4 max=29.992676
ca030d EnLaserTube Start
ca1000 EnExIO Start 0
8800000c5b2300000a313d Move Absolute (8200.433071, 6699.724409)
a800000a310500000a313d Cut Absolute (6697.519685, 6699.724409)
a800000a310500000c3f3a Cut Absolute (6697.519685, 8060.236220)
a800000c5b2300000c3f3a Cut Absolute (8200.433071, 8060.236220)
a800000c5b2300000a313d Cut Absolute (8200.433071, 6699.724409)
eb Array End
e700 Block End
da01062000000005320000000532 Set Param 06 20 (None) = [0, 0, 0, 5, 50, 0, 0, 0, 5, 50]
d7 End Of File

Links[edit | edit source]

Official[edit | edit source]

Other Sources[edit | edit source]