TinyG firmware improved

893 views
Skip to first unread message

ma...@makr.zone

unread,
Oct 28, 2020, 8:38:24 PM10/28/20
to OpenPnP
Hi everybody

To further improve support for Advanced Motion Control and to unify the Gcode "world", I just made a Pull Request for TinyG.

"This Pull Request implements the common RS274/NGC/G-code commands M114, M115 and M400.


The firmware and a batch to flash under Windows is here (you need to change the COM port in the .cmd):


Any testers? :-)

As always: be cautious - no warranties!

_Mark

Tony Luken

unread,
Oct 29, 2020, 2:44:40 PM10/29/20
to OpenPnP
Mark,

I gave it a shot and it seems to be mostly working - I didn't run a job but was able to home the machine, change nozzle tips and run nozzle tip calibration.  M114 and M115 appear to be working although I'm wondering about the orange highlighted bit of the string produced by M115 - it looks a bit like an incorrect format specifier: 

FIRMWARE_NAME:TinyG, FIRMWARE_URL:https%3A//github.com/synthetos/TinyG, FIRMWARE_VERSION:0.97, FIRMWARE_BUILD:440.21, HARDWARE_PLATFORM:1.00, HARDWARE_VERSION:8.00

Also, M400 seems to work when the TinyG is in text mode but not when it is in JSON mode.

Example in text mode (sends 4 lines of g code followed by an M400 so we expect the 5th ok to come back once motion has stopped):

2020-10-29 13:17:14.177 GcodeDriver DEBUG: sendCommand(G1X100\RG1Y100\RG1X0\RG1Y0\RM400, 5000)...
2020-10-29 13:17:14.177 GcodeDriver TRACE: [serial://COM5] >> G1X100
G1Y100
G1X0
G1Y0
M400
2020-10-29 13:17:14.187 GcodeDriver TRACE: [serial://COM5] << tinyg [mm] ok>
2020-10-29 13:17:14.187 GcodeDriver TRACE: [serial://COM5] << tinyg [mm] ok>
2020-10-29 13:17:14.187 GcodeDriver DEBUG: sendCommand(serial://COM5 G1X100
G1Y100
G1X0
G1Y0
M400, 5000) => [tinyg [mm] ok>]
2020-10-29 13:17:14.203 GcodeDriver TRACE: [serial://COM5] << tinyg [mm] ok>
2020-10-29 13:17:14.203 GcodeDriver TRACE: [serial://COM5] << tinyg [mm] ok>
2020-10-29 13:17:21.764 GcodeDriver TRACE: [serial://COM5] << posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:0.00,unit:1,coor:1,dist:0,frmo:1,stat:3  <- "stat:3" indicates motion has completed
2020-10-29 13:17:21.764 GcodeDriver TRACE: Position report: posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:0.00,unit:1,coor:1,dist:0,frmo:1,stat:3
2020-10-29 13:17:21.764 GcodeDriver TRACE: [serial://COM5] << tinyg [mm] ok>  <- 5th ok came out after motion has completed - that's good


Now in JSON mode:

2020-10-29 13:21:37.649 GcodeDriver DEBUG: sendCommand(G1X100\RG1Y100\RG1X0\RG1Y0\RM400, 5000)...
2020-10-29 13:21:37.649 GcodeDriver TRACE: [serial://COM5] >> G1X100
G1Y100
G1X0
G1Y0
M400
2020-10-29 13:21:37.738 GcodeDriver TRACE: [serial://COM5] << {r:{},f:[1,0,7,8951]}  <- the zero in this string is equivalent to an ok
2020-10-29 13:21:37.738 GcodeDriver DEBUG: sendCommand(serial://COM5 G1X100
G1Y100
G1X0
G1Y0
M400, 5000) => [{r:{},f:[1,0,7,8951]}]
2020-10-29 13:21:37.740 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:1.19,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-29 13:21:37.740 GcodeDriver TRACE: Position report: {sr:{posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:1.19,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-29 13:21:37.741 GcodeDriver TRACE: [serial://COM5] << {r:{},f:[1,0,7,8951]}
2020-10-29 13:21:37.743 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.004,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:28.95,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-29 13:21:37.743 GcodeDriver TRACE: Position report: {sr:{posx:0.004,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:28.95,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-29 13:21:37.743 GcodeDriver TRACE: [serial://COM5] << {r:{},f:[1,0,5,8949]}
2020-10-29 13:21:37.744 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.025,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:120.36,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-29 13:21:37.744 GcodeDriver TRACE: Position report: {sr:{posx:0.025,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:120.36,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-29 13:21:37.745 GcodeDriver TRACE: [serial://COM5] << {r:{},f:[1,0,5,8949]}
2020-10-29 13:21:37.745 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.082,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:294.94,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-29 13:21:37.745 GcodeDriver TRACE: Position report: {sr:{posx:0.082,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:294.94,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-29 13:21:37.746 GcodeDriver TRACE: [serial://COM5] << {r:{},f:[1,0,5,8949]}  <- 5th "ok" received before motion actually stopped (see below)
2020-10-29 13:21:37.746 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.151,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:459.93,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-29 13:21:37.746 GcodeDriver TRACE: Position report: {sr:{posx:0.151,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:459.93,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-29 13:21:45.237 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:0.00,unit:1,coor:1,dist:0,frmo:1,stat:3}}  <- "stat:3" indicates motion has completed
2020-10-29 13:21:45.238 GcodeDriver TRACE: Position report: {sr:{posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:0.00,unit:1,coor:1,dist:0,frmo:1,stat:3}}

Tony

Clemens Koller

unread,
Oct 29, 2020, 3:56:37 PM10/29/20
to ope...@googlegroups.com
Hello, Mark!

Do you have a suitable machine.xml to share for the (likely) Liteplacer which you use with
FIRMWARE_NAME:TinyG, FIRMWARE_URL:https://github.com/synthetos/TinyG, FIRMWARE_VERSION:444.23
?

And can you point me to the git commit to recreate this version?
I'm planing to test this, as soon as time permits.

Regards,

Clemens
--



On 29/10/2020 01.38, ma...@makr.zone wrote:
> Hi everybody
>
> To further improve support for Advanced Motion Control and to unify the Gcode "world", I just made a Pull Request for TinyG.
>
> /"This Pull Request implements the common RS274/NGC/G-code commands M114, M115 and M400./
>
> * /|M114|: Get current position <https://www.reprap.org/wiki/G-code#M114:_Get_Current_Position>/
> * /|M115|: Get Firmware Version and Capabilities <https://www.reprap.org/wiki/G-code#M115:_Get_Firmware_Version_and_Capabilities>/
> * /|M400|: Wait for current moves to finish <https://www.reprap.org/wiki/G-code#M400:_Wait_for_current_moves_to_finish>"/
>
> https://github.com/synthetos/TinyG/pull/257
>
> The firmware and a batch to flash under Windows is here (you need to change the COM port in the .cmd):
>
> https://makr.zone/TinyG.7z <https://makr.zone/TinyG.7z>
>
> Any testers? :-)
>
> *As always: be cautious - no warranties!
> *
>
> _Mark
>
> **
>
> --
> You received this message because you are subscribed to the Google Groups "OpenPnP" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/8002fa09-9859-4a45-b361-1dcdee2b85a5o%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/8002fa09-9859-4a45-b361-1dcdee2b85a5o%40googlegroups.com?utm_medium=email&utm_source=footer>.

Tony Luken

unread,
Oct 29, 2020, 4:32:52 PM10/29/20
to OpenPnP
Attached is my machine.xml.

Tony
> To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com <mailto:ope...@googlegroups.com>.
machine.xml

ma...@makr.zone

unread,
Oct 29, 2020, 6:43:49 PM10/29/20
to ope...@googlegroups.com

Thanks a lot, Tony.

There is a new firmware now in the PR

https://github.com/synthetos/TinyG/pull/258

... and in the download link.

https://makr.zone/TinyG.7z

It fixes the M400 "ok" response.

It also introduces a new M201.3 command to control jerk. More on that a bit later.

_Mark

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/89d79f30-8826-461a-8430-1d651c18f68fo%40googlegroups.com.

ma...@makr.zone

unread,
Oct 29, 2020, 7:25:10 PM10/29/20
to ope...@googlegroups.com

Hi everybody

Watch the video with TinyG demonstrating its true Jerk control, but also how important it is to be well Speed-Controlled by the new OpenPnP Advanced Motion Control testing version.

https://youtu.be/6SBDApObbz0

There is a new firmware now in the PR

https://github.com/synthetos/TinyG/pull/258

... and in the download link.

https://makr.zone/TinyG.7z

OpenPnP testing version Update 4 will be up soon.

_Mark

ma...@makr.zone

unread,
Oct 30, 2020, 4:55:24 AM10/30/20
to ope...@googlegroups.com

Hi TinyG users!

All things now linked and documented here:
https://makr.zone/tinyg-new-g-code-commands-for-openpnp-use/577/

Vote up the PR :-)

https://github.com/synthetos/TinyG/pull/258 (frankly I don't know how "active" this product still is)

@Clemens, thanks for your willingness for testing this! Tony has already sent you his machine.xml. He is definitely the "Liteplacer+TinyG man" ;-) I have a different controller on my Liteplacer, I just wanted TinyG to work well with my Advanced Motion Control work on OpenPnP, hence the firmware changes. My TinyG test rig here is just for lab bench testing.

@Tony, any chance you could test the newest version too?

  1. Flash the newest firmware.
  2. Download the latest OpenPnP testing version.
  3. Use the Issues & Solutions system to go through the needed changes.
  4. Do convert to the GcodeAsyncDriver.
  5. The Issues & Solutions system won't overwrite an already existing CONNECT_COMMAND, so you need to add the following manually:
  6. Get rid of status reports $sv=0 (no unsolicited reports wanted).
  7. Switch to RtsCts flow control $ex=2
  8. Get rid of MOVE_TO_COMPLETE_REGEX (replaced by proper M400).
  9. Test proper move waiting/completion.
  10. Confirm asynchronous operation with/without Confirmation Flow Control.
    https://github.com/openpnp/openpnp/wiki/GcodeAsyncDriver#advanced-settings
  11. It uses position reporting M114 as a signal when Confirmation Flow Control is off.
  12. If possible: reduce your CONNECT_COMMAND to the minimum/generic TinyG+Liteplacer solution*.
  13. Send the machine.xml again?

*) Am I right to assume that all the config you have in there is written into the EEPROM on each connect? Is there no danger, the EEPROM fails at some point? I haven't found any conclusive info on that quickly (and frankly this is a bit our of the scope for me :-})

Many, many thanks!

_Mark

ma...@makr.zone

unread,
Oct 30, 2020, 8:28:09 AM10/30/20
to ope...@googlegroups.com

@Tony

> Am I right to assume that all the config you have in there is written into the EEPROM on each connect? Is there no danger, the EEPROM fails at some point? ...

It seems it will only be written, if the assigned value changes --> fp_NE()

https://github.com/synthetos/TinyG/blob/d7855101d8d3ed1cbcc108221ea33b80abcef020/firmware/tinyg/persistence.c#L100

So I guess value changes can only happen in CONNECT_COMMAND, if it contains mistakes, such as multiple disagreeing assignments of the same variable.

_Mark

To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/2857f0ba-b16f-0972-e97f-d9921c03e292%40makr.zone.

Tony Luken

unread,
Oct 30, 2020, 3:43:41 PM10/30/20
to OpenPnP
Mark,

I tried the latest firmware and M400 still doesn't work correctly in JSON mode:

2020-10-30 14:30:33.362 GcodeDriver DEBUG: sendCommand(G1X100F3600\RG1Y100\RG1X0\RG1Y0\RM400, 5000)...
2020-10-30 14:30:33.362 GcodeDriver TRACE: [serial://COM5] >> G1X100F3600
G1Y100
G1X0
G1Y0
M400
2020-10-30 14:30:33.371 GcodeDriver TRACE: [serial://COM5] << {r:{},f:[1,0,12,152]}
2020-10-30 14:30:33.371 GcodeDriver DEBUG: sendCommand(serial://COM5 G1X100F3600
G1Y100
G1X0
G1Y0
M400, 5000) => [{r:{},f:[1,0,12,152]}]
2020-10-30 14:30:33.449 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:1.19,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-30 14:30:33.450 GcodeDriver TRACE: Position report: {sr:{posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:1.19,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-30 14:30:33.451 GcodeDriver TRACE: [serial://COM5] << {r:{},f:[1,0,7,8951]}
2020-10-30 14:30:33.455 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.004,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:28.95,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-30 14:30:33.455 GcodeDriver TRACE: Position report: {sr:{posx:0.004,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:28.95,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-30 14:30:33.456 GcodeDriver TRACE: [serial://COM5] << {r:{},f:[1,0,5,8949]}
2020-10-30 14:30:33.457 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.025,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:120.36,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-30 14:30:33.457 GcodeDriver TRACE: Position report: {sr:{posx:0.025,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:120.36,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-30 14:30:33.457 GcodeDriver TRACE: [serial://COM5] << {r:{},f:[1,0,5,8949]}
2020-10-30 14:30:33.458 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.082,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:294.94,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-30 14:30:33.458 GcodeDriver TRACE: Position report: {sr:{posx:0.082,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:294.94,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-30 14:30:33.458 GcodeDriver TRACE: [serial://COM5] << {r:{},f:[1,0,5,8949]}                            <- this should come out after or at least at the same time as the stat:3 below
2020-10-30 14:30:33.459 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.151,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:459.93,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-30 14:30:33.459 GcodeDriver TRACE: Position report: {sr:{posx:0.151,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:459.93,unit:1,coor:1,dist:0,frmo:1,stat:5}}
2020-10-30 14:30:40.950 GcodeDriver TRACE: [serial://COM5] << {sr:{posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:0.00,unit:1,coor:1,dist:0,frmo:1,stat:3}} <- this is when motion really competes
2020-10-30 14:30:40.950 GcodeDriver TRACE: Position report: {sr:{posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:3600.00,vel:0.00,unit:1,coor:1,dist:0,frmo:1,stat:3}}

Seems like that should be fixed as it is relatively easy for someone to switch the TinyG to JSON mode and if they do, they are being setup for a crash.

Tony
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.

ma...@makr.zone

unread,
Oct 30, 2020, 4:28:37 PM10/30/20
to ope...@googlegroups.com

Hi Tony

In terms of responses, M400 specifically only affects the text mode output.

I don't understand how the non-standard json stuff works. These responses are somehow triggered asynchronously and periodically, and I haven't found a way to block or postpone them in a safe way.  I got the impression that using this json stream entails polling for a specific status anyway, so these types of senders should still work correctly.

M400 still blocks any subsequent commands, even in json mode, so its actual function is still valid. Example: If you want to wait for motion to complete and bring the machine to still-stand, before reading a sensor etc. this still happens correctly in command sequence execution.

For a json sender to detect the point in time when this happens, polling is needed (as before).

For a text sender to detect the point in time when this happens (Pick&Place is very lonely an application in this respect) it will have to look for the "ok". If Tiny was switched to json mode by mistake, it will never be detected. A timeout will occur. No crash will happen.

With canned G-code (like in OpenPnP) I don't see a way how you would accidently activate json. And if it happens, I expect it generates many other problems too.

The effort here is to make TinyG as "standard" a controller as possible. Text mode is simply mandatory. M114 and M115 also only output text mode compatible responses. I should probably even suppress or even reject them in json mode.

TinyG is a nice controller internally (compared to the others, I know). Nice, clean and uniform concepts in the code. Meta-data driven config, all done through Gcode. I guess it would be fine to have a json monitoring/control port aside from the G-code port (separate serial or some sort of transparent stream multiplexing). But mixing them in the same stream is really bad form, IMHO.

Unfortunately, the successor g2 core has the same strange affliction.

_Mark

To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/b07d9742-1350-48ce-ad0d-166e3ae81e11o%40googlegroups.com.

Tony Luken

unread,
Nov 2, 2020, 5:15:43 PM11/2/20
to OpenPnP
Mark,

Most things have been going pretty well - I can home the machine and run nozzle tip calibration.  But at least one issue shown below is that the DRO doesn't update during a probe cycle as I'd expect.

When I actuate the probe, the position report shows the probed z coordinate but the DRO shows zero:
And after the probe is de-actuated, the position report shows zero for the z coordinate but the DRO is now showing the value from the prior position report:


Furthermore, manually sending another M114 results in a new position report showing zero for the z coordinate but the DRO still doesn't update.  I have Location Confirmation checked:



Tony

Any testers? :-)

*As always: be cautious - no warranties!
*

_Mark

**

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com <mailto...@googlegroups.com>.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/8002fa09-9859-4a45-b361-1dcdee2b85a5o%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/8002fa09-9859-4a45-b361-1dcdee2b85a5o%40googlegroups.com?utm_medium=email&utm_source=footer>.

    

ma...@makr.zone

unread,
Nov 3, 2020, 3:17:52 AM11/3/20
to ope...@googlegroups.com

Hi Tony

thanks for testing!

ContactProbeNozzle:

I forgot one Issues & Solution suggestion: you need to enable the Machine Coordination After Actuation checkbox on the probing Actuator. (I have now added that suggestion).

https://github.com/openpnp/openpnp/wiki/Motion-Planner#actuator-machine-coordination

This will make sure the reported location is processed. Please look at the log. If it says "Reported location changes current location ..." then it should be good.

Background:

Processing reported locations only work when a position report is issued in the course of a planner waitForCompletion(). Unfortunately,  this restriction proved necessary because the different drivers have different semantics of their M114. Some will report the last position (G1 milestone) the machine has already reached while it may still be moving to the next, some may even report the real-time position while moving, some the next position that will be reached and some the position that was last commanded (which can be several moves ahead). So these reports are only reliable across all types of drivers once the machine is idle and in complete still-stand.  As it turned out, this poses no problems IMHO, as OpenPnP only really needs to know a location when the machine must come to still-stand anyway.

Therefore, the After Actuation checkbox is needed.

For the same reason, issuing a M114 on the console will unfortunately not work anymore. I don't want the console to do anything "magic" behind the back of the user, so the waitForCompletion() that could process the report will not be done because the console could have commanded anything and I don't know in what (moving) state the machine is and what semantics the M114 has on that particular controller.

_Mark
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/c43df8d9-25e8-4705-a6ca-4f59f7894116o%40googlegroups.com.

Tony Luken

unread,
Nov 3, 2020, 2:52:53 PM11/3/20
to OpenPnP
Mark,

Yeah, that fixes the issue with probing.  Now what about unsolicited error messages?  For instance, the machine is setting idle after homing and a limit switch accidentally gets bumped?  Shouldn't OpenPnP immediately pop-up a dialog box to notify the operator something went wrong?  With TinyG I see the error message in the log but it doesn't seem to get processed and no dialog box appears.

2020-11-03 13:10:44.298 ReferenceMachine DEBUG: setHomed(true)
2020-11-03 13:10:44.303 GcodeDriver$ReaderThread TRACE: [serial://COM5] << tinyg [mm] ok>
2020-11-03 13:10:44.319 GcodeDriver$ReaderThread TRACE: [serial://COM5] << tinyg [mm] ok>
2020-11-03 13:10:44.320 GcodeDriver$ReaderThread TRACE: [serial://COM5] << tinyg [mm] ok>
2020-11-03 13:14:31.869 GcodeDriver$ReaderThread TRACE: [serial://COM5] << {er:{fb:440.21,st:204,msg:"Limit switch hit - Shutdown occurred"}}

At that point I used to be able to disable the machine (I have my DISABLE_COMMAND set to send a reset character to the TinyG to get it out of its alarmed state) and then re-enable it to recover.  Now if I try to disconnect I see an exception in the log and the reset character never gets sent (also note the highlighted misspelling):

2020-11-03 13:19:05.621 ReferenceMachine DEBUG: setEnabled(false)
2020-11-03 13:19:05.621 GcodeDriver WARNING: java.lang.Exception: serial://COM5 error response from controller: {er:{fb:440.21,st:204,msg:"Limit switch hit - Shutdown occurred"}}
at org.openpnp.machine.reference.driver.GcodeDriver.bailOnError(GcodeDriver.java:952)
at org.openpnp.machine.reference.driver.GcodeAsyncDriver.bailOnError(GcodeAsyncDriver.java:306)
at org.openpnp.machine.reference.driver.GcodeAsyncDriver.sendCommand(GcodeAsyncDriver.java:323)
at org.openpnp.machine.reference.driver.GcodeDriver.sendGcode(GcodeDriver.java:893)
at org.openpnp.machine.reference.driver.GcodeDriver.sendGcode(GcodeDriver.java:875)
at org.openpnp.machine.reference.driver.GcodeDriver.setEnabled(GcodeDriver.java:375)
at org.openpnp.machine.reference.ReferenceMachine.setEnabled(ReferenceMachine.java:221)
at org.openpnp.gui.MachineControlsPanel$2.lambda$actionPerformed$1(MachineControlsPanel.java:265)
at java.lang.Thread.run(Unknown Source)
2020-11-03 13:19:05.706 GcodeAsyncDriver$WriterThread TRACE: [serial://COM5] diconnectRequested, bye-bye.
2020-11-03 13:19:06.047 GcodeDriver$ReaderThread TRACE: [serial://COM5] diconnectRequested, bye-bye.
2020-11-03 13:19:06.162 ReferenceMachine DEBUG: setHomed(false)


I can probably work around this but it seems like controller error messages should always be processed immediately so the the operator maintains situational awareness.

Tony
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.

Tony Luken

unread,
Nov 3, 2020, 5:52:44 PM11/3/20
to OpenPnP
Mark,

Just on a whim I set the driver to Full3rdOrderControl and did some quick testing (didn't spend any time trying to tune anything yet) - looks pretty good except I was expecting the z axis to continue up past the min safe z and for the horizontal motion to begin before the z motion completes - maybe that's not implemented yet?

ma...@makr.zone

unread,
Nov 4, 2020, 2:58:28 AM11/4/20
to ope...@googlegroups.com

Hi Tony

OpenPnP never caught spontaneous errors immediately. Errors are only processed when a command is sent and a response is then expected. It catches COMMAND_ERROR_REGEX matches or IO problems and throws.

This remains the same. So it takes the next command/receive to catch the error. I never really second-guessed that but I assume it has to be that way because all error handling must be done in the machine thread, i.e. the exception must be thrown there to trip any ongoing Job or user action machine runnable for good.

See the old (somewhat duplicate) code here:

https://github.com/openpnp/openpnp/blob/7e18341cc64f673576ccfa3a9032eb4e1de9e0ea/src/main/java/org/openpnp/machine/reference/driver/GcodeDriver.java#L1087
https://github.com/openpnp/openpnp/blob/7e18341cc64f673576ccfa3a9032eb4e1de9e0ea/src/main/java/org/openpnp/machine/reference/driver/GcodeDriver.java#L316
https://github.com/openpnp/openpnp/blob/7e18341cc64f673576ccfa3a9032eb4e1de9e0ea/src/main/java/org/openpnp/machine/reference/driver/GcodeDriver.java#L758

Now it is done in bailOnError and this is called before any send or receive.:

https://github.com/openpnp/openpnp/blob/56eae4d8d72f11872fcbaeccfae013cef070e1e3/src/main/java/org/openpnp/machine/reference/driver/GcodeDriver.java#L948

I actually do process the error immediately in the ReaderThread:

https://github.com/openpnp/openpnp/blob/56eae4d8d72f11872fcbaeccfae013cef070e1e3/src/main/java/org/openpnp/machine/reference/driver/GcodeDriver.java#L1158

But I'm very reluctant to change this behavior. It would have to be done twice then, firstly to alert the user (Message Box) and secondly to trip the machine thread (while selectively suppressing a duplicate MessageBox).  And it would have to be aware when no thread is pending and then not do the trip. Sounds too complicated for a rather exotic use case.

Thanks for pointing out the spelling error. ;-)

_Mark

To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/e0010f85-a795-4b91-95eb-a6c0b463bbafo%40googlegroups.com.

ma...@makr.zone

unread,
Nov 4, 2020, 4:05:36 AM11/4/20
to ope...@googlegroups.com

Tony,

There a two separate features:

  1. 3rd order/Jerk Control: TinyG always/only has that mode (but see below).
  2. Unccordinated motion i.e. not only allowing straight moves i.e. Motion Blending.

Re 1:

Theoretically, TinyG does not support true Full3rdOrderControl. Remember the discussion about the 5 segment only S Curve versus the 7 segment S Curve? TinyG misses the constant acceleration limit segments, in fact you can't even set an acceleration limit, only a jerk limit. So your jerk limit together with your feed-rate limit actually only implicitly sets the maximum acceleration that the steppers are exposed to.

So there is no acceleration plateau (look at the two curve below) however, TinyG does something similar in shape, internally using a 6th order curve, apparently (I haven't studied that code yet).

https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained

Therefore if you set Full3rdOrderControl with a guesstimated acceleration limit, it happens to be closer in Actual time, than the SimpleSCurve mode:

With the SimpleSCurve mode we don't allow a constant acceleration limit plateau and have to limit the jerk instead, to not exceed the acceleration limit. But TinyG's 6th order curve will then not go into the triangular "peaks" and it takes longer than planned. OpenPnP currently can't accurately predict TinyG 6th order formula (and I don't think it ever will).

Physically, this is really cool on the TinyG. Watch this video, how absolutely stable the liquid stays:

https://youtu.be/6SBDApObbz0

The simulation/interpolation with stepped accelerations is really only a crutch in comparison.

Re 2:

Unccordinated motion/Motion Blending is a separate topic. It is enabled by the "Allow Uncoordinated" checkbox:

But I'm afraid it is not supported on TinyG.

The problem: TinyG does not allow acceleration != 0 in junctions. And my Motion Blending planner can only work if this is allowed (or irrelevant as it is in Constant or rather "Instant" Acceleration controllers).

_Mark

To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/4e50cbb9-133d-4f53-8246-7189531df500o%40googlegroups.com.

Peter Chaisty

unread,
Feb 2, 2021, 12:38:33 PM2/2/21
to OpenPnP
Hi

Just testing the new TinyG firmware (0.97) build 440.21 with Open PNP 2, async driver.


I find that the Home command times out due to a massive number of read pos commands 


In Position_Report_Regex I have just a M115 

I attached the logs , do I have the wrong code in the  Position report Regex ?

Timeout is set to 1min, as it takes 6 mins of pos read commands I think something is wrong ?

Anybody have any ideas ?



Peter




2021-02-02 17:25:39.463 ReferenceMachine DEBUG: homing machine
2021-02-02 17:25:39.463 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(M5, -1)...
2021-02-02 17:25:39.463 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(M9, -1)...
2021-02-02 17:25:39.463 GcodeDriver TRACE: [serial://COM4] confirmed $zsn=0
2021-02-02 17:25:39.463 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(G90, -1)...
2021-02-02 17:25:39.464 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(G28.2 X0 Y0 Z0 A0, -1)...
2021-02-02 17:25:39.464 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(G92 X0 Y0 Z0, -1)...
2021-02-02 17:25:39.464 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >> M5
2021-02-02 17:25:39.473 GcodeDriver$ReaderThread TRACE: [serial://COM4] << tinyg [mm] ok>
2021-02-02 17:25:39.474 GcodeDriver TRACE: [serial://COM4] confirmed M5
2021-02-02 17:25:39.474 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >> M9
2021-02-02 17:25:39.489 GcodeDriver$ReaderThread TRACE: [serial://COM4] << tinyg [mm] ok>
2021-02-02 17:25:39.489 GcodeDriver TRACE: [serial://COM4] confirmed M9
2021-02-02 17:25:39.490 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >> G90
2021-02-02 17:25:39.505 GcodeDriver$ReaderThread TRACE: [serial://COM4] << tinyg [mm] ok>
2021-02-02 17:25:39.506 GcodeDriver TRACE: [serial://COM4] confirmed G90
2021-02-02 17:25:39.506 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >> G28.2X0Y0Z0A0
2021-02-02 17:25:39.529 GcodeDriver$ReaderThread TRACE: [serial://COM4] << tinyg [mm] ok>
2021-02-02 17:25:39.529 GcodeDriver TRACE: [serial://COM4] confirmed G28.2X0Y0Z0A0
2021-02-02 17:25:39.530 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >> G92X0Y0Z0
2021-02-02 17:25:39.531 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:0.000,feed:0.00,vel:0.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:40.025 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:11.162,posa:0.000,feed:1500.00,vel:1500.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:40.145 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:12.835,posa:0.000,feed:1500.00,vel:0.19,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:40.646 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:12.030,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:41.138 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:11.205,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:41.630 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:10.389,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:42.122 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:9.573,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:42.232 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:9.409,posa:0.000,feed:100.00,vel:0.51,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:42.424 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:73.000,posa:0.000,feed:1500.00,vel:0.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:42.919 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-13.152,posy:0.000,posz:0.000,posa:0.000,feed:2000.00,vel:2000.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:43.412 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-29.468,posy:0.000,posz:0.000,posa:0.000,feed:2000.00,vel:2000.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:43.903 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-45.950,posy:0.000,posz:0.000,posa:0.000,feed:2000.00,vel:2000.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:44.395 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-62.266,posy:0.000,posz:0.000,posa:0.000,feed:2000.00,vel:2000.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:44.888 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-78.748,posy:0.000,posz:0.000,posa:0.000,feed:2000.00,vel:2000.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:45.379 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-95.064,posy:0.000,posz:0.000,posa:0.000,feed:2000.00,vel:2000.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:45.827 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-106.884,posy:0.000,posz:0.000,posa:0.000,feed:2000.00,vel:0.04,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:46.328 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-106.099,posy:0.000,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:46.817 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-105.284,posy:0.000,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:47.308 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-104.460,posy:0.000,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:47.800 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-103.644,posy:0.000,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:48.293 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-102.828,posy:0.000,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:48.784 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-102.004,posy:0.000,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:48.876 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-150.000,posy:0.000,posz:0.000,posa:0.000,feed:100.00,vel:0.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:49.105 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:-100.820,posy:0.000,posz:0.000,posa:0.000,feed:2000.00,vel:0.10,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:49.600 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-12.144,posz:0.000,posa:0.000,feed:1800.00,vel:1800.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:50.093 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-26.834,posz:0.000,posa:0.000,feed:1800.00,vel:1800.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:50.585 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-41.674,posz:0.000,posa:0.000,feed:1800.00,vel:1800.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:51.046 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-52.768,posz:0.000,posa:0.000,feed:1800.00,vel:0.04,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:51.540 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-51.983,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:52.032 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-51.167,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:52.524 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-50.351,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:53.016 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-49.527,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:53.508 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-48.711,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:54.000 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-47.886,posz:0.000,posa:0.000,feed:100.00,vel:100.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:54.100 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-47.759,posz:0.000,posa:0.000,feed:100.00,vel:0.19,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:54.308 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:-149.000,posz:0.000,posa:0.000,feed:1800.00,vel:0.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:54.809 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-4.787,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:55.300 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-9.737,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:55.791 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-14.637,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:56.283 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-19.587,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:56.775 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-24.487,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:57.268 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-29.386,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:57.759 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-34.336,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:58.251 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-39.236,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:58.743 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-44.186,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:59.235 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-49.086,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:25:59.729 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-53.986,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:00.220 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-58.936,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:00.712 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-63.836,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:01.204 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-68.786,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:01.696 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-73.685,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:02.188 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-78.635,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:02.680 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-83.534,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:03.172 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-88.434,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:03.664 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-93.383,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:04.157 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-98.283,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:04.648 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-103.232,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:05.140 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-108.132,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:05.632 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-113.031,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:06.124 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-117.981,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:06.616 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-122.881,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:07.108 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-127.830,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:07.601 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-132.730,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:08.092 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-137.631,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:08.585 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-142.581,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:09.076 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-147.481,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:09.568 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-152.432,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:10.060 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-157.332,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:10.552 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-162.232,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:11.044 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-167.182,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:11.536 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-172.083,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:12.028 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-177.033,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:12.520 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-181.933,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:13.014 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-186.834,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:13.504 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-191.784,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:13.996 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-196.684,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:14.488 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-201.635,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:14.980 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-206.535,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:15.473 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-211.435,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:15.964 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-216.385,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:16.457 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-221.286,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:16.949 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-226.236,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:17.442 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-231.136,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:17.934 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-236.087,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:18.425 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-240.987,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:18.917 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-245.887,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:19.409 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-250.838,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:19.901 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-255.738,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:20.393 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-260.687,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:20.885 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-265.586,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:21.377 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-270.484,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:21.869 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-275.433,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:22.362 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-280.332,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:22.853 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-285.281,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:23.345 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-290.180,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:23.837 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-295.078,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:24.329 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-300.027,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:24.821 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-304.926,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:25.314 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-309.875,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:25.805 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-314.774,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:26.298 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-319.672,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:26.790 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-324.621,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:27.282 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-329.520,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:27.774 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-334.469,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:28.266 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-339.368,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:28.758 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-344.316,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:29.250 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-349.215,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:29.742 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-354.114,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:30.234 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-359.063,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:30.726 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-363.962,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:31.219 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-368.910,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:31.711 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-373.809,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:32.203 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-378.708,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:32.694 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-383.657,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:33.186 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-388.556,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:33.679 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-393.504,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:34.170 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-398.403,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:34.663 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-403.302,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:35.154 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-408.251,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:35.647 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-413.150,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:36.139 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-418.098,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:36.631 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-422.997,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:37.124 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-427.896,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:37.615 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-432.845,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:38.107 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-437.744,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:38.599 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-442.692,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:39.091 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-447.591,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:39.467 MessageBoxes DEBUG: Error: java.lang.Exception: Timed out waiting for home to complete.
2021-02-02 17:26:39.583 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-452.540,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:40.076 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-457.439,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:40.567 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-462.338,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:40.892 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-465.587,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:41.385 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-470.536,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:41.876 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-475.434,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:42.368 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-480.383,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:42.860 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-485.282,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:43.352 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-490.181,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:43.844 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-495.130,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:44.337 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-500.028,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:44.829 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-504.977,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:45.321 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-509.876,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:45.813 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-514.775,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:46.305 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-519.724,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:46.797 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-524.622,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:47.290 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-529.571,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:47.781 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-534.470,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:48.274 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-539.369,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:48.766 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-544.318,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:49.257 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-549.216,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:49.750 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-554.165,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:50.241 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-559.064,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:50.735 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-564.013,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:51.226 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-568.911,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:51.718 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-573.810,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:52.210 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-578.759,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:52.702 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-583.658,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:53.194 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-588.607,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:53.687 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-593.505,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:54.179 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-598.454,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:54.670 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-603.353,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:55.162 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-608.252,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:55.654 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-613.201,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:56.147 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-618.099,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:56.639 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-623.048,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:57.132 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-627.947,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:57.623 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-632.846,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:58.115 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-637.795,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:58.607 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-642.693,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:59.100 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-647.642,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:26:59.591 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-652.541,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:00.085 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-657.490,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:00.576 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-662.389,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:01.068 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-667.287,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:01.560 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-672.236,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:02.053 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-677.135,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:02.544 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-682.084,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:03.037 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-686.983,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:03.528 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-691.881,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:04.020 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-696.830,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:04.512 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-701.729,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:05.004 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-706.678,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:05.497 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-711.577,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9
2021-02-02 17:27:05.989 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-716.525,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9

And it continues with more for another 6 mins
2021-02-02 17:27:05.989 GcodeDriver$ReaderThread TRACE: [serial://COM4] << posx:0.000,posy:0.000,posz:0.000,posa:-716.525,feed:600.00,vel:600.00,unit:1,coor:0,dist:1,frmo:1,stat:9

ma...@makr.zone

unread,
Feb 2, 2021, 12:52:48 PM2/2/21
to ope...@googlegroups.com

You seemed to have had an older version of TinyG before.

There seems to be a change of behavior (or new bug?) in G92 in the base version (build 440.20) that I based my firmware on.

You need to state all axes in G92, including the A axis. Otherwise it seems to move to a random coordinate (probably uninitialized memory?). And at speed 600° per minute that may take a veeeery long time.

In fact, according to Tony you must not use G92 but G28.3.

https://groups.google.com/g/openpnp/c/R1YOUW9oLZM/m/1Qes8WQUBAAJ

Make sure to be aware of the Xon/Xoff situation too and set it on TinyG if you haven't yet.

$ex=1

followed by disconnect/reset.

_Mark

tony...@att.net

unread,
Feb 2, 2021, 3:26:46 PM2/2/21
to OpenPnP
Peter,

I think the real problem is that you are trying to home the A axis:
2021-02-02 17:25:39.464 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(G28.2 X0 Y0 Z0 A0, -1)...  

Just remove the A axis from your HOME_COMMAND.

As Mark said, I do recommend replacing G92 with G28.3 in the SET_GLOBAL_OFFSETS_COMMAND.  I still have a G92 X0 Y0 Z0 A0 as the last thing in my HOME_COMMAND - not sure if it is needed but it doesn't seem to hurt either.

Also if you want to remove a lot of clutter from your log files, you can get rid of all the unnecessary position reports by setting $sv=0 on your TinyG.

Tony

Peter Chaisty

unread,
Feb 3, 2021, 5:42:54 AM2/3/21
to ope...@googlegroups.com
Thanks Tony

Yes it was an old setup.
I am getting it running again after a long downtime

I am pretty sure i followed or at least tried to follow the advice in the links 


So I enable Xon/off in TinyG and openpnp, limits debugging to level 0 to remove clutter 

I still get a timeout long after it's homed which implies I am maybe not sending a proper home complete response ?

The home command is now 
M5
M9
G90
G28.2 X0 Z0
G28.2 Y0
G28.3 X0 Y0 Z0  
; G92 commented out replaced by G28.3 G92 X0 Y0 Z0

Home_complete_regex is 
.*momo:4,stat:1.*

and

SET_GLOBAL_OFFSETS_COMMAND 
G28.3 {X:X%.4f} {Y:Y%.4f} {Z:Z%.4f} {A:A%.4f} ; reset coordinates

Any ideas / suggestions ?

Regards
Peter

My connect code is 

$SV=0
$ex=1
$ME
$1pm=1
$2pm=1
$3pm=1
$4pm=1
$mt=1000000000
G21 G90
; G92 X0 Y0 Z0 A0 M8 M5
$xjm=1200
$xvm=10500
$xsv=2000
$xsn=3
$xjh=800
$xsx=2
$1mi=8
$1sa=0.900
$1tr=40.1
$yjm=800
$yvm=10500
$ysn=3
$ysx=2
$yjh=800
$ysv=1800
$2mi=8
$2sa=0.900
$2tr=39.96
$zjm=2000
$zvm=3000
$zjh=2000
$zsv=1500
$xfr=8000
$yfr=8000
$zfr=3000
$afr=20000
$3mi=8
$3sa=1.800
$3tr=8.0000
$ajm=600
$avm=20000
$4mi=8
$4sa=0.900
$4tr=160.0000
$mt=300.00
$zzb=2
$3po=1
$zsx=3
$zsn=0


2021-02-03 10:30:37.019 ReferenceMachine DEBUG: homing machine
2021-02-03 10:30:37.019 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(M5, -1)...
2021-02-03 10:30:37.020 GcodeDriver TRACE: [serial://COM4] confirmed $zsn=0
2021-02-03 10:30:37.020 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(M9, -1)...
2021-02-03 10:30:37.020 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(G90, -1)...
2021-02-03 10:30:37.020 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(G28.2 X0 Z0, -1)...
2021-02-03 10:30:37.020 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >> M5
2021-02-03 10:30:37.020 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(G28.2 Y0, -1)...
2021-02-03 10:30:37.021 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(G28.3 X0 Y0 Z0, -1)...
2021-02-03 10:30:37.021 GcodeAsyncDriver DEBUG: serial://COM4 commandQueue.offer(; G92 commented out replaced by G28.3 G92 X0 Y0 Z0, -1)...
2021-02-03 10:30:37.030 GcodeDriver$ReaderThread TRACE: [serial://COM4] << tinyg [mm] ok>
2021-02-03 10:30:37.030 GcodeDriver TRACE: [serial://COM4] confirmed M5
2021-02-03 10:30:37.031 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >> M9
2021-02-03 10:30:37.045 GcodeDriver$ReaderThread TRACE: [serial://COM4] << tinyg [mm] ok>
2021-02-03 10:30:37.046 GcodeDriver TRACE: [serial://COM4] confirmed M9
2021-02-03 10:30:37.046 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >> G90
2021-02-03 10:30:37.062 GcodeDriver$ReaderThread TRACE: [serial://COM4] << tinyg [mm] ok>
2021-02-03 10:30:37.062 GcodeDriver TRACE: [serial://COM4] confirmed G90
2021-02-03 10:30:37.062 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >> G28.2X0Z0
2021-02-03 10:30:37.077 GcodeDriver$ReaderThread TRACE: [serial://COM4] << tinyg [mm] ok>
2021-02-03 10:30:37.078 GcodeDriver TRACE: [serial://COM4] confirmed G28.2X0Z0
2021-02-03 10:30:37.078 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >> G28.2Y0
2021-02-03 10:30:45.717 GcodeDriver$ReaderThread TRACE: [serial://COM4] << tinyg [mm] ok>
2021-02-03 10:30:45.717 GcodeDriver TRACE: [serial://COM4] confirmed G28.2Y0
2021-02-03 10:30:45.717 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >> G28.3X0Y0Z0
2021-02-03 10:30:52.036 GcodeDriver$ReaderThread TRACE: [serial://COM4] << tinyg [mm] ok>
2021-02-03 10:30:52.037 GcodeDriver TRACE: [serial://COM4] confirmed G28.3X0Y0Z0
2021-02-03 10:30:52.037 GcodeAsyncDriver$WriterThread TRACE: [serial://COM4] >>
2021-02-03 10:30:52.052 GcodeDriver$ReaderThread TRACE: [serial://COM4] << tinyg [mm] ok>
2021-02-03 10:31:37.023 MessageBoxes DEBUG: Error: java.lang.Exception: Timed out waiting for home to complete.

and my Gcode is 

<gcode-async-driver id="DRV165fe33987bc8300" name="GcodeAsyncDriver" motion-control-type="Full3rdOrderControl" communications="serial" connection-keep-alive="true" units="Millimeters" max-feed-rate="1000" backlash-offset-x="-1.0" backlash-offset-y="-1.0" backlash-offset-z="0.0" backlash-offset-r="0.0" non-squareness-factor="0.0" backlash-feed-rate-factor="0.1" timeout-milliseconds="60000" connect-wait-time-milliseconds="3000" visual-homing-enabled="false" backslash-escaped-characters-enabled="false" remove-comments="true" compress-gcode="true" logging-gcode="true" supporting-pre-move="true" using-letter-variables="true" infinity-timeout-milliseconds="60000" writer-polling-interval="100" writer-queue-timeout="60000" max-commands-queued="1000" confirmation-flow-control="true" reported-location-confirmation="true" interpolation-max-steps="32" interpolation-jerk-steps="4" interpolation-time-step="0.001" interpolation-min-step="16">
   <serial line-ending-type="LF" port-name="COM4" baud="115200" flow-control="XonXoff" data-bits="Eight" stop-bits="One" parity="None" set-dtr="false" set-rts="false" name="SerialPortCommunications"/>
   <tcp line-ending-type="LF" ip-address="127.0.0.1" port="23" name="TcpCommunications"/>
   <simulated line-ending-type="LF"/>
   <homing-fiducial-location units="Millimeters" x="0.0" y="0.0" z="0.0" rotation="0.0"/>
   <detected-firmware><![CDATA[FIRMWARE_NAME:TinyG, FIRMWARE_URL:https%3A//github.com/synthetos/TinyG, FIRMWARE_VERSION:0.97, FIRMWARE_BUILD:440.21, HARDWARE_PLATFORM:1.00, HARDWARE_VERSION:8.00]]></detected-firmware>
   <command type="COMMAND_CONFIRM_REGEX">
      <text><![CDATA[.*qi:(?!0).*|.*ok>.*|.*r:.*|.*File not open.*]]></text>
   </command>
   <command type="CONNECT_COMMAND">
      <text><![CDATA[$SV=0 ]]></text>
      <text><![CDATA[$ex=1]]></text>
      <text><![CDATA[$ME]]></text>
      <text><![CDATA[$1pm=1]]></text>
      <text><![CDATA[$2pm=1]]></text>
      <text><![CDATA[$3pm=1]]></text>
      <text><![CDATA[$4pm=1]]></text>
      <text><![CDATA[$mt=1000000000]]></text>
      <text><![CDATA[G21 G90]]></text>
      <text><![CDATA[; G92 X0 Y0 Z0 A0 M8 M5 ]]></text>
      <text><![CDATA[$xjm=1200]]></text>
      <text><![CDATA[$xvm=10500]]></text>
      <text><![CDATA[$xsv=2000 ]]></text>
      <text><![CDATA[$xsn=3 ]]></text>
      <text><![CDATA[$xjh=800]]></text>
      <text><![CDATA[$xsx=2 ]]></text>
      <text><![CDATA[$1mi=8 ]]></text>
      <text><![CDATA[$1sa=0.900]]></text>
      <text><![CDATA[$1tr=40.1]]></text>
      <text><![CDATA[$yjm=800 ]]></text>
      <text><![CDATA[$yvm=10500]]></text>
      <text><![CDATA[$ysn=3]]></text>
      <text><![CDATA[$ysx=2]]></text>
      <text><![CDATA[$yjh=800]]></text>
      <text><![CDATA[$ysv=1800]]></text>
      <text><![CDATA[$2mi=8 ]]></text>
      <text><![CDATA[$2sa=0.900 ]]></text>
      <text><![CDATA[$2tr=39.96]]></text>
      <text><![CDATA[$zjm=2000]]></text>
      <text><![CDATA[$zvm=3000]]></text>
      <text><![CDATA[$zjh=2000]]></text>
      <text><![CDATA[$zsv=1500]]></text>
      <text><![CDATA[$xfr=8000]]></text>
      <text><![CDATA[$yfr=8000]]></text>
      <text><![CDATA[$zfr=3000 ]]></text>
      <text><![CDATA[$afr=20000]]></text>
      <text><![CDATA[$3mi=8]]></text>
      <text><![CDATA[$3sa=1.800]]></text>
      <text><![CDATA[$3tr=8.0000]]></text>
      <text><![CDATA[$ajm=600]]></text>
      <text><![CDATA[$avm=20000]]></text>
      <text><![CDATA[$4mi=8]]></text>
      <text><![CDATA[$4sa=0.900]]></text>
      <text><![CDATA[$4tr=160.0000]]></text>
      <text><![CDATA[$mt=300.00 ]]></text>
      <text><![CDATA[$zzb=2]]></text>
      <text><![CDATA[$3po=1]]></text>
      <text><![CDATA[$zsx=3]]></text>
      <text><![CDATA[$zsn=0]]></text>
   </command>
   <command type="HOME_COMMAND">
      <text><![CDATA[M5]]></text>
      <text><![CDATA[M9]]></text>
      <text><![CDATA[G90]]></text>
      <text><![CDATA[G28.2 X0 Z0]]></text>
      <text><![CDATA[G28.2 Y0]]></text>
      <text><![CDATA[G28.3 X0 Y0 Z0  ]]></text>
      <text><![CDATA[; G92 commented out replaced by G28.3 G92 X0 Y0 Z0]]></text>
   </command>
   <command type="MOVE_TO_COMMAND">
      <text><![CDATA[G0 {X:X%.4f} {Y:Y%.4f} {Z:Z%.4f} {Rotation:E%.4f} F{FeedRate:%.0f}]]></text>
   </command>
   <command type="MOVE_TO_COMPLETE_COMMAND">
      <text><![CDATA[M400 ; Wait for moves to complete before returning]]></text>
   </command>
   <command type="MOVE_TO_COMPLETE_REGEX">
      <text><![CDATA[.*stat:(1|3).*]]></text>
   </command>
   <command type="HOME_COMPLETE_REGEX">
      <text><![CDATA[.*momo:4,stat:1.*]]></text>
   </command>
   <command type="PUMP_ON_COMMAND">
      <text><![CDATA[M9]]></text>
      <text><![CDATA[M4]]></text>
   </command>
   <command type="PLACE_COMMAND">
      <text><![CDATA[G0 Z-30]]></text>
      <text><![CDATA[G38.2 Z-50 F500]]></text>
      <text><![CDATA[M9]]></text>
      <text><![CDATA[G4 P1]]></text>
      <text><![CDATA[G0 Z0]]></text>
   </command>
   <command type="PICK_COMMAND">
      <text><![CDATA[G0 Z-30]]></text>
      <text><![CDATA[G38.2 Z-50 F500]]></text>
      <text><![CDATA[M8]]></text>
      <text><![CDATA[G4 P1]]></text>
      <text><![CDATA[G0 Z0]]></text>
   </command>
   <command head-mountable-id="ACT165ff48d9d14b5f0" type="ACTUATE_BOOLEAN_COMMAND">
      <text><![CDATA[{True:M4}{False:M5}]]></text>
   </command>
   <command head-mountable-id="ACT165ff6175e923fc4" type="ACTUATE_BOOLEAN_COMMAND">
      <text><![CDATA[{True:M8}{False:M9}]]></text>
   </command>
   <command type="GET_POSITION_COMMAND">
      <text><![CDATA[M114]]></text>
   </command>
   <command type="POSITION_REPORT_REGEX">
      <text><![CDATA[M114]]></text>
   </command>
   <command type="SET_GLOBAL_OFFSETS_COMMAND">
      <text><![CDATA[G28.3 {X:X%.4f} {Y:Y%.4f} {Z:Z%.4f} {A:A%.4f} ; reset coordinates]]></text>
   </command>
   <junction-deviation value="0.02" units="Millimeters"/>
</gcode-async-driver>






You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/veyVAwqS0do/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/3d1b47d1-2901-4809-9faa-2d60f3e7be29n%40googlegroups.com.

ma...@makr.zone

unread,
Feb 3, 2021, 5:56:32 AM2/3/21
to ope...@googlegroups.com

Assuming you want to go all the way with the newest OpenPnP testing version:

Get rid of the HOME_COMPLETE_REGEX. It is no longer needed when you use the new firmware and the setup suggested by Issues & Solutions.

https://github.com/openpnp/openpnp/wiki/Issues-and-Solutions

It will properly use M400 and/or a position report for coordination. See here for background:

https://github.com/openpnp/openpnp/wiki/Motion-Planner#motion-path-planning

_Mark

Peter Chaisty

unread,
Feb 3, 2021, 11:34:28 AM2/3/21
to OpenPnP
Thanks Mark

I had to use axis mapping but then the Find issues and solutions tab solved all the issues.
That's an awesome feature.

Next is to get optical homing working again.

Peter
Reply all
Reply to author
Forward
0 new messages