$0=10
$1=255
$2=1
$3=1
$4=1
$5=1
$6=0
$10=1
$11=0.010
$12=0.002
$13=0
$20=0
$21=0
$22=1
$23=0
$24=25.000
$25=500.000
$26=250.000
$27=2.000
$30=24000.000
$31=1000.000
$32=0
$100=200.000
$101=200.000
$102=200.000
$103=100.000
$104=100.000
$105=100.000
$110=1000.000
$111=1000.000
$112=1000.000
$113=1000.000
$114=1000.000
$115=1000.000
$120=50.000
$121=50.000
$122=50.000
$123=200.000
$124=200.000
$125=200.000
$130=600.000
$131=600.000
$132=600.000
$133=300.000
$134=300.000
$135=300.000
When I try to home z:
<Alarm|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ>
$X
ok
<Idle|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ>
<Idle|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ>
<Idle|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ>
$HZ
ok
ALARM:1
Hard limit has been triggered. Machine position is likely lost due to sudden halt. Re-homing is highly recommended.
<Alarm|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ>
<Alarm|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ>
<Alarm|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ>
<Alarm|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ>
<Alarm|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ|WCO:80.000,0.000,0.000>
<Alarm|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ|Ov:100,100,100>
<Alarm|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ>
<Alarm|MPos:0.000,0.000,0.000|FS:0,0|Pn:XYZ>
I changed $5=0. I just need to test I think. I’m getting an error about “homing fail. Pull off travel failed to clear limit switch”. Since I’m pressing the limit switch manually I’m sure I’m not releasing it in time so it is causing this alarm.
Yeah, I’ve seen that error too for precisely that reason, as far as I can tell. If it seems to home, then tries backing off and gives you that error, $5
is probably set right. When I saw that, I let it home and press the switch itself and it worked.
I’ve almost have the Root 3 working with this new Root Controller ESP32. I can home X and Y now.
However in the ESP32 web interface any time I click refresh or anything to do with the SD card it causes grbl to restart. I thought it might have been an SD card size limit but I got my 4GB SD card out of my old X5MINI and it still gets this error:
17:36:06.617 → $0=10
17:36:06.617 → $1=255
17:36:06.617 → $2=1
17:36:06.617 → $3=3
17:36:06.617 → $4=1
17:36:06.617 → $5=0
17:36:06.617 → $6=0
17:36:06.617 → $10=1
17:36:06.617 → $11=0.010
17:36:06.617 → $12=0.002
17:36:06.617 → $13=0
17:36:06.617 → $20=0
17:36:06.617 → $21=1
17:36:06.617 → $22=1
17:36:06.617 → $23=3
17:36:06.617 → $24=25.000
17:36:06.617 → $25=5000.000
17:36:06.617 → $26=250.000
17:36:06.617 → $27=2.000
17:36:06.617 → $30=24000.000
17:36:06.617 → $31=0.000
17:36:06.617 → $32=0
17:36:06.617 → $100=44.730
17:36:06.617 → $101=44.730
17:36:06.617 → $102=400.000
17:36:06.617 → $103=100.000
17:36:06.617 → $104=100.000
17:36:06.617 → $105=100.000
17:36:06.617 → $110=5000.000
17:36:06.617 → $111=5000.000
17:36:06.617 → $112=1000.000
17:36:06.617 → $113=1000.000
17:36:06.617 → $114=1000.000
17:36:06.617 → $115=1000.000
17:36:06.617 → $120=100.000
17:36:06.617 → $121=100.000
17:36:06.617 → $122=50.000
17:36:06.617 → $123=200.000
17:36:06.663 → $124=200.000
17:36:06.663 → $125=200.000
17:36:06.663 → $130=600.000
17:36:06.663 → $131=600.000
17:36:06.663 → $132=600.000
17:36:06.663 → $133=300.000
17:36:06.663 → $134=300.000
17:36:06.663 → $135=300.000
17:36:06.663 → ok
17:36:09.626 → ERROR A stack overflow in task clientCheckTask has been detected.
17:36:09.626 → abort() was called at PC 0x40090bf0 on core 1
17:36:09.626 →
17:36:09.626 → ELF file SHA256: 0000000000000000
17:36:09.626 →
17:36:09.626 → Backtrace: 0x4009095c:0x3ffd4230 0x40090bd9:0x3ffd4250 0x40090bf0:0x3ffd4270 0x400934d7:0x3ffd4290 0x400950a0:0x3ffd42b0 0x40095056:0xa5a5a5a5
17:36:09.669 →
17:36:09.669 → Rebooting…
17:36:09.669 → ets Jun 8 2016 00:22:57
17:36:09.669 →
17:36:09.669 → rst:0xc (SW_CPU_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
17:36:09.669 → configsip: 0, SPIWP:0xee
17:36:09.669 → clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
17:36:09.669 → mode:DIO, clock div:1
17:36:09.669 → load:0x3fff0018,len:4
17:36:09.669 → load:0x3fff001c,len:1216
17:36:09.669 → ho 0 tail 12 room 4
17:36:09.669 → load:0x40078000,len:10944
17:36:09.669 → load:0x40080400,len:6388
17:36:09.669 → entry 0x400806b4
17:36:10.278 →
17:36:10.278 → [MSG:Grbl_ESP32 Ver 1.3a Date 20210816]
17:36:10.278 → [MSG:Compiled with ESP32 SDK:v3.3.5-1-g85c43024c]
17:36:10.278 → [MSG:Using machine:Root Controller 3 Axis XYYZ]
17:36:10.278 → [MSG:Axis count 3]
17:36:10.278 → [MSG:I2S Steps, Stream]
17:36:10.278 → [MSG:Reset switch on pin GPIO(13)]
17:36:10.278 → [MSG:Hold switch on pin GPIO(36)]
17:36:10.278 → [MSG:Start switch on pin GPIO(39)]
17:36:10.325 → [MSG:Macro Pin 0 GPIO(34)]
17:36:10.325 → [MSG:User Digital Output:0 on Pin:I2SO(17)]
17:36:10.325 → [MSG:User Digital Output:1 on Pin:I2SO(18)]
17:36:10.325 → [MSG:User Digital Output:2 on Pin:I2SO(19)]
17:36:10.325 → [MSG:Init Motors]
17:36:10.325 → [MSG:Using StepStick Mode]
17:36:10.325 → [MSG:X Axis Standard Stepper Step:I2SO(5) Dir:I2SO(6) Disable:I2SO(7) Limits(0.000,600.000)]
17:36:10.325 → [MSG:Y Axis Standard Stepper Step:I2SO(2) Dir:I2SO(3) Disable:I2SO(4) Limits(0.000,600.000)]
17:36:10.325 → [MSG:Y2 Axis Standard Stepper Step:I2SO(15) Dir:I2SO(0) Disable:I2SO(1) Limits(0.000,600.000)]
17:36:10.325 → [MSG:Z Axis Standard Stepper Step:I2SO(12) Dir:I2SO(13) Disable:I2SO(14) Limits(-600.000,0.000)]
17:36:10.372 → [MSG:Initializing RS485 VFD spindle]
17:36:10.372 → [MSG:VFD RS485 Tx:GPIO(17) Rx:GPIO(16) RTS:GPIO(4)]
17:36:10.466 →
17:36:10.466 → [MSG:Client Started]
17:36:10.466 → [MSG:Connecting HENRY]
17:36:10.466 → [MSG:Connecting.]
17:36:10.982 → [MSG:Connecting…]
17:36:11.454 → [MSG:Connecting…]
17:36:11.965 → [MSG:Connecting…]
17:36:12.482 → [MSG:Connecting.]
17:36:12.953 → [MSG:Connecting…]
17:36:13.470 → [MSG:Connecting…]
17:36:13.987 → [MSG:Connecting…]
17:36:14.458 → [MSG:Connecting.]
17:36:14.975 → [MSG:Connecting…]
17:36:15.492 → [MSG:Connecting…]
17:36:15.961 → [MSG:Connecting…]
17:36:16.100 → [MSG:Connected with 192.168.0.42]
17:36:16.476 → [MSG:Start mDNS with hostname:http://grblesp.local/]
17:36:16.476 → [MSG:SSDP Started]
17:36:16.523 → [MSG:HTTP Started]
17:36:16.523 → [MSG:TELNET Started 23]
17:36:16.523 → [MSG:Flood coolant on pin I2SO(21)]
17:36:16.523 → [MSG:Mist coolant on pin I2SO(20)]
17:36:16.523 → [MSG:X Axis limit switch on pin GPIO(2)]
17:36:16.523 → [MSG:Y Axis limit switch on pin GPIO(26)]
17:36:16.523 → [MSG:Y2 Axis limit switch on pin GPIO(27)]
17:36:16.523 → [MSG:Z Axis limit switch on pin GPIO(14)]
17:36:16.523 → [MSG:Probe on pin GPIO(33)]
17:36:16.523 →
17:36:16.523 → Grbl 1.3a [’$’ for help]
17:36:16.523 → [MSG:’$H’|’$X’ to unlock]
17:36:16.664 → [MSG:Spindle RS485 Unresponsive 8]
Looks a lot like this issue:
I was able to get the SD card issue fixed.
In src/Serial.cpp, change line 124 from 4096 to 8192
After I made the change and updated the board it can see the SD card.
I’m having trouble with my VFD operating over RS485. When I issue M3 S10000 nothing happens.
I get this error back when monitoring the serial port:
ok
[MSG:Critical Spindle RS485 did not reach speed 1000. Reported speed is -1 rpm.]
ok
ALARM:10
It looks like whatever controller you’re using and sending the information out to the vfd over modbus is looking for confirmation back from the vfd that it has reached speed before it’ll start moving. That’s pretty common with CNC controllers especially higher-end ones.
If you’re using modbus for communication you need to make sure that the controller is pulling the correct spots in the hex locations to get back the “spindle at speed” okay confirmation. I don’t know much about what controller you’re using or vfd but both ends of that communication need to be set up correctly so it’s looking at the rate feedback data from the vfd.
I enabled VFD debugging. This is what is happening when I issue $X and M3 S24000:
10:05:47.732 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:05:47.779 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:05:47.779 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:05:49.031 → [MSG:Caution: Unlocked]
10:05:49.031 → ok
10:05:50.054 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:05:50.054 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:05:50.054 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:05:52.322 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:05:52.322 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:05:52.322 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:05:54.638 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:05:54.638 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:05:54.638 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:05:56.912 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:05:56.912 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:05:56.912 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:05:59.462 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:05:59.462 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:05:59.462 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:06:01.731 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:06:01.731 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:06:01.731 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:06:03.212 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:03.676 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:04.001 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:06:04.001 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:06:04.047 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:06:04.186 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:04.697 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:05.207 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:05.671 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:06.181 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:06.320 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:06:06.320 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:06:06.320 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:06:06.688 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:07.200 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:07.710 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:08.174 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:08.590 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:06:08.590 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:06:08.590 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:06:08.683 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:09.192 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:09.700 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:10.210 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:10.675 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:11.140 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:06:11.140 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:06:11.140 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:06:11.186 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:11.695 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:12.207 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:12.672 → [MSG:Syncing RPM. Requested 24000, current -1]
10:06:13.183 → [MSG:Critical Spindle RS485 did not reach speed 24000. Reported speed is -1 rpm.]
10:06:13.183 → ok
10:06:13.183 → ALARM:10
10:06:13.415 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:06:13.415 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:06:13.415 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:06:13.697 →
10:06:13.697 → Grbl 1.3a [’$’ for help]
10:06:13.697 → [MSG:’$H’|’$X’ to unlock]
10:06:15.685 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:06:15.685 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:06:15.685 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:06:18.003 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:06:18.003 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:06:18.003 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
10:06:20.282 → [MSG:RS485 Tx: 0x01 0x03 0xB0 0x05 0x00 0x02 0xF2 0xCA]
10:06:20.282 → [MSG:RS485 Rx: 0x01 0x30 0xC0 0xFC]
10:06:20.282 → [MSG:RS485 received message of unexpected length; expected 10, got 4]
I’m using the H2A spindle for my Spindle Type in my EPS32 machine.h. It seems to match what my G-Penny H100 VFD is according to the manual.
In the settings you probably have to tell the vfd to communicate over modbus/rs485 , have you set that parameter in the vfd yet?
Because a lot of times people might want to set it off of specific set points, or off of 0 to 10 volt, or off of modbus. And the vfd needs to know which of those it’s trying to communicate on.
The H2A spindle is close but not close enough.
I ordered a RS485 converter adaptor so I can send commands directly to the VFD. So now I’m going to brush up on the Modbus standard over the weekend and Monday when I get the RS485 converter adaptor I can hopefully create a spindle profile with some help of the creator of Root CNC.
Best of luck. A lot of the import vfds don’t use a standard modbus protocol. A lot of them use a modified or truncated version which has some idiosyncrasies. For example I know that the huanyang vfds needed to have users make specialty plugins for them to work properly. You can take a look at user groups for mach3, uccnc, linuxcnc, etc to see the problems they ran into. And the modbus protocol though very powerful is not necessarily intuitive when you first start digging into it. I finally got mine figured out after almost 8 months of having my new cnc. I was able to get turning on the spindle, set rotation direction, and setting the vfd RPM working right away. But now I am now able to get it to give back actual rpm, current draw, voltage, alarm status, etc. That took me a while to figure out.
I need to do some custom modbus stuff.
Can you point me to any learning resources you found help please ?
Most of the stuff I found was slightly specific to UCCNC which is what I use to drive my router. That in combination with looking over a lot of other people’s config files in the UCCNC forums and reading the Huanyang GT manual. Modbus is really a confusing topic for me still, but the biggest thing was finding what addresses and hex values needed to be passed back and forth between what the vfd knows and what the UCCNC modbus plugin is looking for. To be honest my methodology was akin to the monkeys smashing on keyboards to write the works of Shakespeare approach. Sorry I can’t be of more assistance.
Well, I’m getting closer to controlling my H100 VFD over RS485 using my Root Controller. I’m not sure what the issue is here.
I’m kind of thinking it might just make more sense to purchase a different vfd. One that is used by a lot of other members in the Root CNC group but I feel like I’m really close to getting this one working.
[MSG:INFO: RS485 Tx: 0x01 0x04 0x00 0x00 0x00 0x02 0x71 0xCB]
[MSG:INFO: RS485 Rx: 0x01 0x04 0x04 0x00 0x00 0x0F 0xA0 0xFE]
[MSG:INFO: RS485 CRC check failed]
[MSG:INFO: RS485 Tx: 0x01 0x04 0x00 0x00 0x00 0x02 0x71 0xCB]
[MSG:INFO: RS485 Rx: 0x01 0x04 0x04 0x00 0x00 0x0F 0xA0 0xFE]
[MSG:INFO: RS485 CRC check failed]
[MSG:INFO: RS485 Tx: 0x01 0x04 0x00 0x00 0x00 0x02 0x71 0xCB]
[MSG:INFO: RS485 Rx: 0x01 0x04 0x04 0x00 0x00 0x0F 0xA0 0xFE]
[MSG:INFO: RS485 CRC check failed]
[MSG:INFO: RS485 Tx: 0x01 0x04 0x00 0x00 0x00 0x02 0x71 0xCB]
[MSG:INFO: RS485 Rx: 0x01 0x04 0x04 0x00 0x00 0x0F 0xA0 0xFE]
[MSG:INFO: RS485 CRC check failed]
[MSG:INFO: RS485 Tx: 0x01 0x04 0x00 0x00 0x00 0x02 0x71 0xCB]
[MSG:INFO: RS485 Rx: 0x01 0x04 0x04 0x00 0x00 0x0F 0xA0 0xFE]
[MSG:INFO: RS485 CRC check failed]
[MSG:INFO: VFD RS485 Unresponsive]
[MSG:INFO: VFD: Max speed:2400rpm]
[MSG:INFO: VFD: Min speed:600rpm]
Hey fellas I’m new to CNC and building my own machine at the moment. Love this tread because I just purchased the MKS DLC 2.1. The “CNC Shield” boards weren’t tickling my fancy and I liked this Makerbase board for the 4 axis/dual Y axis ports at the top. Now I’m realizing I’ll actually be using the “external stepper driver” pins to use with my DM542 stepper drivers. So my question, @bcrazycramer - how did you provide signal to your 2nd y axis driver? Jumper the wires from one y axis stepper driver to the next? Seems like there should be a cleaner solution than that but I’ve done worse with decent results shrug
Yes that is what I did.
Although I’m not using this board any longer. I’m using a Root Controller and running FluidNC. Well almost anyway. Don’t ever buy an off brand VFD. We are going through the trials of setting up a new spindle type for FluidNC.