Category Archives: Hacking ACL & SML & the FDM 1650

My attempts at hacking the Asymtek AutoMove ACL language, the Stratasys SML language, and the FDM 1650.

12/11/2010 – Getting started hacking

In my first attempts at using my FDM 1650, I didn’t have a clue what I was doing, so of course I had loads of problems. Initially, I had no X or Y motion. I found the printhead had been shrink wrapped in position for shipping. Even after getting all that plastic off the head would not move. When I found the ‘HaveBlue‘ pages I found the Asymtek manuals that helped me get the X and Y moving again.

I knew I had to send the .SML file to the printer over a serial connection, and as I looked thru the QuickSlice files directory, I saw a Hyperterminal config link. I fired it up and sent a simple .SML to the printer. The head was zipping all over the place, except where it should be — panic stop was the only answer. Then I found ‘FDM Send’ in the Quickslice start menu folder. This produced reasonable FDM motions but I could see I needed to get the offsets set correctly to get good parts. This lead me to the cb12abs.sml calibration part, the ‘Tip Offset’ in the Quickslice start menu folder, and then the sscal.bat that calls the offset16.sml file. Opening each of these files in a text editor, I quickly saw that understanding what these files were doing was going to take some time and a lot of effort. 

I’m more used to CNC controls where parameters can be viewed and changed with ease. This FDM 1650 and the QuickSlice software is like a black box with a green and red button. Just press the appropriate button — call Stratasys for a service call if it doesn’t happen.

I don’t have a huge chunk of time to try to do this all at once, so it will be on a time-available frame. I do want address the differences between the HyperTerminal & FDM Send, but I’m not going to start there. I am going to start with some .SML files, and disassemble them using the ACL language manuals. I’m going to try to figure out the registers used and what they are used for. Also, I’m going to try and figure how to get data back out of the control, and put it on a PC.


FILES:

There will be files that I use each session, and I will make them available at the beginning of the post, and you can right-click & ‘save Target’ to computer, or just click and they will open in a new window. Here are the files I worked with today:

  1. offset16-SML-101211- A text formatted version of offset16.sml located in C:QuickSliceV60-qsjdDefaults – This is called at the end of the sscal.bat which can be excuted from a terminal window, or activated by clicking the ‘FDM Offset’ Icon in the QuickSlice start menu folder.
  2. cb12abs-sml-101211- A text formatted version of cb12abs.sml located in C:QuickSliceV60-qsjdStandard1650 (NOTE: I also viewed the cb12abs.pc file which I believe has be formatted for HyperTerminal, to see exactly which commands were being sent. I think the ‘FDM Send’ strips some things out of the .SML file being sent)
  3. Asymtek_ACL_Notes-101211- A .Docx Word file of notes I am coping out of the ACL Reference Manual
  4. VariableNumbers-101211- A .Xlsx Excel file of locations 1-128 that I am using as a reference.

I first looked at offset16.sml to see how/where the the X, Y, and Z offsets are inputted into the control. They were quickly found. The command used was VS – Variable Store, and appears to be in absolute, inches, and in 0.001′s without a decimal point. The XYZ registers used were 121-123 respectively:

Where Tip Offests Are Stored

Where Tip Offests Are Stored

Well that was an easy one — of to the next one cb12abs.SML. Yikes! There is a lot of stuff right at the beginning that I couldn’t find docs for — it must be setting up the Automove Control to execute a program (?maybe) — I’m going to skip over that for now, as I see an initialize command (IN):

'IN' - Intialize

'IN' - Intialize

Next I want to find where the program seems to start (visually watching it run). There’s an FH for Find Home in X and Y:
Find Home (X and Y)
Find Home (X and Y)

And then an FZ to Find Z Home:

Find Z Home

Find Z Home

Once it finds Z Home, It is store a ’0′ in registers 100 and 101. This may be the Tip X register and the Tip Y register (?maybe):

Zero Tip X and Y

Zero Tip X and Y

Then there is a very long Quickslice Commented section. As it is all comments it is not used by the control (in the .pc version all the comments are striped out):

Commented QuickSlice

Commented QuickSlice

The a PS command to Pause:

'PS' - Pause

'PS' - Pause

This next line stalled me — I think it is time to stop for the day.

As far as I got Today

As far as I got Today