Z not actuated on all nozzles

111 views
Skip to first unread message

chende...@gmail.com

unread,
Nov 19, 2020, 4:03:01 PM11/19/20
to OpenPnP
Hi,
I'm stuck again trying to understand what am I doing wrong.
I am developing the firmware for controller, so that's not perfect either but..
I have 4 nozzles defined in openpnp. Actually only 2 are installed and I do work only with those. Nozze 1 and nozzle 3 are installed. They have both identical commands in gcode drivers in move_to_command, move_to_complete_command and move_to_complete_regex. Identical configuration in 'head' section, both have nozzle tip loaded.
I am doing the following steps, starting for the same position. Steps are applied in the same order for both 1 and 3 nozzles
step1: move x to right 10mm
step2: move x to left 10mm
step3: move z down 10mm
step4: park z
When nozzle 1 is selected in 'machine controls', all operations are executed correctly. When nozzle 3 is selected, only X operations are executed correctly, Z are not. Looking over the logs I can see that when actuating Z for nozzle 3, no command is sent to controller, only when moving it on X. 
Any idea why? Thanks.

Logs:

nozzle1

2020-11-19 22:53:04.887 ReferenceNozzle DEBUG: 023D_N1.moveTo((145.900000, -27.800000, 0.000000, 0.000000 mm), 0.0)
2020-11-19 22:53:04.888 GcodeDriver DEBUG: sendCommand(C00 N023D_N1 X10000 Y Z R S0 *, 6000)...
2020-11-19 22:53:04.889 GcodeDriver TRACE: [serial://COM4] >> C00 N023D_N1 X10000 Y Z R S0 *
2020-11-19 22:53:04.891 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:53:04.891 GcodeDriver DEBUG: sendCommand(serial://COM4 C00 N023D_N1 X10000 Y Z R S0 *, 6000) => [OK]
2020-11-19 22:53:04.892 GcodeDriver DEBUG: sendCommand(C03 *, 6000)...
2020-11-19 22:53:04.892 GcodeDriver TRACE: [serial://COM4] >> C03 *
2020-11-19 22:53:05.060 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:53:05.061 GcodeDriver DEBUG: sendCommand(serial://COM4 C03 *, 6000) => [OK]
2020-11-19 22:53:06.580 ReferenceNozzle DEBUG: 023D_N1.moveTo((135.900000, -27.800000, 0.000000, 0.000000 mm), 0.0)
2020-11-19 22:53:06.581 GcodeDriver DEBUG: sendCommand(C00 N023D_N1 X0 Y Z R S0 *, 6000)...
2020-11-19 22:53:06.582 GcodeDriver TRACE: [serial://COM4] >> C00 N023D_N1 X0 Y Z R S0 *
2020-11-19 22:53:06.584 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:53:06.584 GcodeDriver DEBUG: sendCommand(serial://COM4 C00 N023D_N1 X0 Y Z R S0 *, 6000) => [OK]
2020-11-19 22:53:06.585 GcodeDriver DEBUG: sendCommand(C03 *, 6000)...
2020-11-19 22:53:06.585 GcodeDriver TRACE: [serial://COM4] >> C03 *
2020-11-19 22:53:06.752 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:53:06.753 GcodeDriver DEBUG: sendCommand(serial://COM4 C03 *, 6000) => [OK]
2020-11-19 22:53:07.937 ReferenceNozzle DEBUG: 023D_N1.moveTo((135.900000, -27.800000, -10.000000, 0.000000 mm), 0.0)
2020-11-19 22:53:07.938 GcodeDriver DEBUG: sendCommand(C00 N023D_N1 X Y Z-10000 R S0 *, 6000)...
2020-11-19 22:53:07.939 GcodeDriver TRACE: [serial://COM4] >> C00 N023D_N1 X Y Z-10000 R S0 *
2020-11-19 22:53:07.941 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:53:07.941 GcodeDriver DEBUG: sendCommand(serial://COM4 C00 N023D_N1 X Y Z-10000 R S0 *, 6000) => [OK]
2020-11-19 22:53:07.942 GcodeDriver DEBUG: sendCommand(C03 *, 6000)...
2020-11-19 22:53:07.942 GcodeDriver TRACE: [serial://COM4] >> C03 *
2020-11-19 22:53:08.137 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:53:08.138 GcodeDriver DEBUG: sendCommand(serial://COM4 C03 *, 6000) => [OK]
2020-11-19 22:53:09.829 ReferenceNozzle DEBUG: 023D_N1.moveToSafeZ(0.0)
2020-11-19 22:53:09.830 GcodeDriver DEBUG: sendCommand(C00 N023D_N1 X Y Z0 R S0 *, 6000)...
2020-11-19 22:53:09.830 GcodeDriver TRACE: [serial://COM4] >> C00 N023D_N1 X Y Z0 R S0 *
2020-11-19 22:53:09.832 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:53:09.833 GcodeDriver DEBUG: sendCommand(serial://COM4 C00 N023D_N1 X Y Z0 R S0 *, 6000) => [OK]
2020-11-19 22:53:09.833 GcodeDriver DEBUG: sendCommand(C03 *, 6000)...
2020-11-19 22:53:09.833 GcodeDriver TRACE: [serial://COM4] >> C03 *
2020-11-19 22:53:09.887 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:53:09.887 GcodeDriver DEBUG: sendCommand(serial://COM4 C03 *, 6000) => [OK]

nozzle3

2020-11-19 22:55:02.847 ReferenceNozzle DEBUG: 023F_N3.moveTo((145.900000, -57.800000, 0.000000, 0.000000 mm), 0.0)
2020-11-19 22:55:02.848 GcodeDriver DEBUG: sendCommand(C00 N023F_N3 X10000 Y Z R S0 *, 6000)...
2020-11-19 22:55:02.848 GcodeDriver TRACE: [serial://COM4] >> C00 N023F_N3 X10000 Y Z R S0 *
2020-11-19 22:55:02.850 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:55:02.851 GcodeDriver DEBUG: sendCommand(serial://COM4 C00 N023F_N3 X10000 Y Z R S0 *, 6000) => [OK]
2020-11-19 22:55:02.851 GcodeDriver DEBUG: sendCommand(C03 *, 6000)...
2020-11-19 22:55:02.851 GcodeDriver TRACE: [serial://COM4] >> C03 *
2020-11-19 22:55:03.018 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:55:03.019 GcodeDriver DEBUG: sendCommand(serial://COM4 C03 *, 6000) => [OK]
2020-11-19 22:55:04.514 ReferenceNozzle DEBUG: 023F_N3.moveTo((135.900000, -57.800000, 0.000000, 0.000000 mm), 0.0)
2020-11-19 22:55:04.515 GcodeDriver DEBUG: sendCommand(C00 N023F_N3 X0 Y Z R S0 *, 6000)...
2020-11-19 22:55:04.516 GcodeDriver TRACE: [serial://COM4] >> C00 N023F_N3 X0 Y Z R S0 *
2020-11-19 22:55:04.518 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:55:04.519 GcodeDriver DEBUG: sendCommand(serial://COM4 C00 N023F_N3 X0 Y Z R S0 *, 6000) => [OK]
2020-11-19 22:55:04.519 GcodeDriver DEBUG: sendCommand(C03 *, 6000)...
2020-11-19 22:55:04.519 GcodeDriver TRACE: [serial://COM4] >> C03 *
2020-11-19 22:55:04.686 GcodeDriver TRACE: [serial://COM4] << OK
2020-11-19 22:55:04.687 GcodeDriver DEBUG: sendCommand(serial://COM4 C03 *, 6000) => [OK]
2020-11-19 22:55:05.942 ReferenceNozzle DEBUG: 023F_N3.moveTo((135.900000, -57.800000, -10.000000, 0.000000 mm), 0.0)
2020-11-19 22:55:09.309 ReferenceNozzle DEBUG: 023F_N3.moveToSafeZ(0.0)

chende...@gmail.com

unread,
Nov 20, 2020, 2:29:30 AM11/20/20
to OpenPnP
One more detail to add, rotation works ok on both nozzles, just Z on nozzle 3 does not send commands to gcode driver.

ma...@makr.zone

unread,
Nov 20, 2020, 4:14:56 AM11/20/20
to ope...@googlegroups.com

Hi

Use the Testing version. All this will be straight-forward.

  1. Set the Driver and controller Axis Letter on the Axes:

    https://github.com/openpnp/openpnp/wiki/Machine-Axes#controller-settings
  2. Map the axis on the HeadMountable using Drop-Downs:
    Assigning Axes
    https://github.com/openpnp/openpnp/wiki/Mapping-Axes
  3. Use the Issues & Solutions system to suggest the right Gcode
    https://github.com/openpnp/openpnp/wiki/Issues-and-Solutions

Overview and Links:

https://makr.zone/openpnp-advanced-motion-control/553/


For the OpenPnP 2.0 develop version you need to create multiple Gcode MOVE_TO_COMMANDs for the right HeadMountables, get all the variable and Gcode axis names right, then map the axis by hacking the machine.xml.

https://github.com/openpnp/openpnp/wiki/GcodeDriver%3A-Axis-Mapping

_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/64799e30-2468-4161-85e8-1846bed45e8en%40googlegroups.com.

chende...@gmail.com

unread,
Nov 20, 2020, 4:58:16 AM11/20/20
to OpenPnP
Hi Mark,
Thanks, will try new version.

Florian.

chende...@gmail.com

unread,
Nov 22, 2020, 5:52:31 AM11/22/20
to OpenPnP
Hi Mark,
Huge appreciations for your work.
It works flawlessly: https://youtu.be/CqVI0omaFPk

Some observations:
-when the speed slider is 0, variable FeedRate is not sent to the gcode driver. Only above 1. In my system I use a max feed rate of 10 because I have in the controller a table which defines speeds and accelerations/decelerations for all devices as a function of this rate.
-I use 'microns' at settings. In the openpnp2.0, angle was sent as 180.00 for example, I used R{Rotation:%.2f} in command. Now, it is sent with some added 0s, with previous command was sent as 180000.00 . Not an issue, with few touches in controller firmware it was solved. I just hope it will not change:)

ma...@makr.zone

unread,
Nov 22, 2020, 9:04:21 AM11/22/20
to ope...@googlegroups.com

Hi Florian

Erm... if I understand the scale of that machine right, it looks brutally strong!! Be safe around it! :-)

Thanks for the report of the degree vs. driver units. I do consider this a bug and I will fix it.

> I just hope it will not change:)

Unfortunately, it will.  :-(

Make sure to change it back once the next Testing version is made available. Sorry about that.

_Mark

chende...@gmail.com

unread,
Nov 22, 2020, 9:31:06 AM11/22/20
to OpenPnP
Hi Mark,
It definitely has the power to sever some fingers if you're not careful. The gantry has around 10kg and the head can reach accelerations of 4-5G.  Table is 1.5x1 meters and around 100kg.
No problem with the change:) . It's just few lines of code.
Thanks,
Florian.
Reply all
Reply to author
Forward
0 new messages