Forum Replies Created
-
AuthorPosts
-
aldenMember
I’m willing to rethink the handling of limit switches. I implemented what a machinist friend of mine told me is the way he’s used to seeing it work. So I’m going to keep this issue open. The issue is ensuring that there’s no loss of position and therefore error introduced. On the Haas they have control of the entire machine and can guarantee this. On a random CNC setup – perhaps not so much. The reason for resetting is to force a homing cycle. Not very efficient, but the safest way if you are not sure if position was maintained. Perhaps this can be an option.
As for the Haas stopping ay G0x157 – that’s a soft limit and it’s something I would like to install.
aldenMemberYou can eliminate most of the uses for a text line/box if you have controls in the UI. What are you doing for configuration? One nice way is a grid of all 6 axes by parameter available for display and typing – with the unused parameters greyed out depending on what the axis supports. The JSON back and forth is just handled reactively (event driven). Do the same for motors, and then handle system params and with that and #1 – #7 you have almost all cases covered in the native UI. I assume you are already doing position readouts. You can use SRs to do real-time path drawing as well.
–Alden
aldenMemberIt could be done either way. The switch between JSON and text mode is automatic and is meant to be as seamless as possible. But if you wrap your own JSON as you suggest it ensures that when you do drop back from the terminal to streaming Gcode you will get JSON responses back; so it’s a good idea for your application.
aldenMemberYou don;t need to wrap Gcode in JSON. The input parser figures that anything that’s not already accounted for must be a Gcode command and runs it as Gcode (Technically, if you are in JSON mode the parser wraps the Gcode for you then runs it as JSON Gcode. That way the responses com back in JSON wrappers). It’s written this way so that UIs don’t need to wrap Gcode from a file – it can just be streamed.
You can query limit switches (or any other parameter) using JSON. For example, {“xsn”:””} returns the X min limit switch setting.
–ALden
- This reply was modified 11 years, 6 months ago by alden.
aldenMemberThanks for the input. Some comments – although I’m not the one actually coding the UI, so consider it guidance.
#1-#4 should all be quite doable with the current command set
#5 You will also need a Cycle start button to get it out of feed hold. Probably best not to just toggle a button, as a misfire could have bad consequences. CNC pro’s know what Feed Hold and Cycle Start are. People new to the domain may not know. I’ve see this labeled as “Pause” and “Resume” in 3D printer-land. No satisfying everybody. Labeling is an open question.
#6 Reset from software is control X, aka CAN (cancel), aka 0x18 in hex.
#7 Interesting. If you leave it on and it hits a limit switch it will put the machine in shutdown – which is what limit switches are supposed to do – all bets are off. If you don’t have limit switches it will continue to grind away at your machine / motors.
#8 Text area is very useful to send configs or query position or configs manually. But now you are into terminal emulator mode. Just saying. You also need to be mindful of text_mode / JSON_mode switches. These transition automatically based on the first characters of the line. See the wiki for details.
–Alden
aldenMemberThere are a number of things you might want to do for “Homing”. depending on what you need.
Going to G0x0y0z0 is fine if your machine is already referenced to zero, but does not actually reference it.
Doing G28.2x0y0z0 will actually reference the machine to zero using the homing switches – assuming you have that all set up
Going G28.3×0 will set the current point as absolute 0 (brrr) for X. G28.3x0y0z0 for all 3 axes, or G0x50 will set the current to 50, etc.
G28.2 and G28.3 are “non-standard” extensions to Gcode to handle these cases. Look at G28 and G28.1 (and G30/G30.1) to see how they are used. They also set and return to specific points.
See https://github.com/synthetos/TinyG/wiki/TinyG-Homing
Alden
- This reply was modified 11 years, 6 months ago by alden.
aldenMemberI don’t know how the lock bits got set and we will look into that. But you can unlock them in either Studio4 or Studio6 in the programming dialog. Look under Lock Bits to see what state they are in. You can reset them by selecting Erase Device in 4 or 6. The lock bits page in the dialog tells you where to look in 4 and 6.
Alden
aldenMemberPlease refer to my answer on your other post, and reference this page:
https://github.com/synthetos/TinyG/wiki/TinyG-HomingYou are confusing the G28.1 / G28 “return to home” sequence with the g28.2 machine homing cycle.
What is happening is that you are in normal movement in G28 and since you set the switch as a limit and then hit it the machine goes into shutdown, as it should. Please try homing using the G28.2 command.
aldenMemberI think you are not using homing correctly. See this page:
https://github.com/synthetos/TinyG/wiki/TinyG-HomingThe G28 and G28.1 commands are movement commands. Finding the home position is G28.2
G28.1 will “remember” an absolute position. G28 will return to that position (same for G30.1 and G30)
In order to actually home the machine in X only, send G28.2 x0
Please try that and see if you get the correct results.
Alden
aldenMemberOne question: If the X limit switch is on the left side of the machine shouldn’t you be using xmin, not xmax? X is left to right, positive travel to the right.
aldenMemberJ11 is the reset. It’s provided out for exactly the purpose you mention
aldenMemberTo stop the machine instantantly w/o losing position issue a feedhold. Send a ‘!’ char to the board. Issuing a cycle_start ‘~’ will resume that move, or issue a queue flush $qf to flush the buffer so you can start a new move.
Good suggestion on the status report.
aldenMemberJuKu is right. A status report is sent when movement ceases and automatically at the set interval.
Thanks for noting the P0 bug. I’ll have to track that down and fix it. Honestly I never thought to test that, but it should be made to be non-destructive.
aldenMemberI see. So the current is very lo. I’ll add this to the troubleshooting wiki. Thanks for the tip.
aldenMemberSorry about the pot. You see we big bigger ones on the V7s.
The part number is: Murata PVG3G502C01R00
http://www.mouser.com/ProductDetail/Murata/PVG3G502C01R00/?qs=%2fha2pyFadujnuS%2ft7JadhCuZJcqCPg4UcIYXtdCnkEtP24rXvClytw%3d%3d -
AuthorPosts