CNCzone.com-The Largest Machinist Community on the net!



Home Page Mark Forums Read Today's Posts My Replies Classifieds Reviews Photo Gallery Web Links Share Files Advertise With Us Ad List
Go Back   CNCzone.com-The Largest Machinist Community on the net! > CAM Software > SheetCam


SheetCam Discuss SheetCam software here.


This forum is sponsored by:

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Ban this user!
Old 08-20-2007, 12:08 AM
 
Join Date: Aug 2006
Location: US
Posts: 281
Chris64 is on a distinguished road
Output to a Bandit?

Does anyone know if it's possible to edit the output parameters (or download an add-on) so that it could output to a Bandit controller?
Tweet this Post!Share on Facebook
Reply With Quote

  #2   Ban this user!
Old 08-21-2007, 11:54 AM
 
Join Date: Nov 2004
Location: England
Posts: 137
locost_cam is on a distinguished road

If you send me some samples of code and if possible a copy of the relevant pages of the manual I can write you a post processor.

Send the details to sales {at} sheetcam.com (replace the {at} with @).

Les
Tweet this Post!Share on Facebook
Reply With Quote

  #3  
Old 08-21-2007, 01:21 PM
HuFlungDung's Avatar
Moderator
 
Join Date: Mar 2003
Location: Canada
Posts: 4,823
HuFlungDung is on a distinguished road

Locost,
Some of the differences between Bandit and ISO code:
1) feed moves: G01 is not used. Just strip that out and any axis address will be considered to be a feed move.

2) rapid moves: G00 is not used. / (forward slash) must be prefixed to the front of each axis address within a rapid command, for example /X /Y /Z. The Bandit is capable of 3 axis motion and of course, no mixing of rapid and feedrate moves is possible on one line.

3) arc movements: maximum movement per command would span 90 degrees within one quadrant. G02 and G03 are not used (not in the normal cam usage anyways). You can simply strip G02 and G03 out, and replace I with /X and J with /Y. So arc movements look like: X Y /X /Y
Arc centers must be absolute coordinates if programming in G90 mode, incremental if in G91 mode. Bandit recognizes the above format as an arc command, even though it contains a mixture of what appears to be feed and rapid movement commands.

4) Feedrate commands must be on a line alone. The feedrate must be altered prior to the feed move.

5) Mcodes must be on a line alone.

6) Because of extreme memory size limitation in Bandit, axis movements are kept modal as much as possible.

Drill cycles: very different, I don't know if you want to go there
__________________
First you get good, then you get fast. Then grouchiness sets in.

(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)
Tweet this Post!Share on Facebook
Reply With Quote

  #4   Ban this user!
Old 08-21-2007, 01:30 PM
 
Join Date: May 2006
Location: US
Age: 55
Posts: 124
billystein is on a distinguished road

"The Bandit is capable of 3 axis motion and of course, no mixing of rapid and feedrate moves is possible on one line."

i believe that the bandit 1 and 2 could only move 2 axis at a time.

does anyone know where i can get a input plug for bandit.
Tweet this Post!Share on Facebook
Reply With Quote

  #5  
Old 08-21-2007, 01:50 PM
HuFlungDung's Avatar
Moderator
 
Join Date: Mar 2003
Location: Canada
Posts: 4,823
HuFlungDung is on a distinguished road

There were some very early firmware that were not 3 axis capable, but from 1M on up to 3M, 3 axis linear and 2 axis circular were standard. 3 axis rapids always retracted the Z axis first then moved X and/or Y but the controller would accept the three axis rapid command, AFAIK. Chris will know what his machine can do, I guess

Edit: I guess the instances of a 3 axis rapid movement command would be almost nil in programming. I was thinking primarily of how the machine moved with a G98 command, which is as I described.
__________________
First you get good, then you get fast. Then grouchiness sets in.

(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)
Tweet this Post!Share on Facebook
Reply With Quote

Sponsored Links
  #6   Ban this user!
Old 08-21-2007, 03:53 PM
 
Join Date: Nov 2004
Location: England
Posts: 137
locost_cam is on a distinguished road

Most of those are not a problem but I'll have to think on the arcs. SheetCam's arcs can be up to 360 degrees (a circle). I'll have to try to work out a way of breaking the arcs into quadrants in the post...

Thanks,
Les
Tweet this Post!Share on Facebook
Reply With Quote

  #7   Ban this user!
Old 08-23-2007, 01:04 PM
 
Join Date: Aug 2006
Location: US
Posts: 281
Chris64 is on a distinguished road

Where to start?

Locost: I started modifying the generic post file for my own Bandit conversion...pretty straight forward. (I would post it here, but it's at home and I'm not).

* Only use line number on the first line - no problem
* Remove the g codes for straight line movements.
* I added some other static header stuff - can't remember off the top of my head
* Changed rapid moves from IJK to /X/Y/Z
* footer need some strange character, I think ASCII 19 (?)

Plus I noticed lines were getting put in with no data - for example to move X 0.0000. I found that these were just values >0 but less than 0.0000 (like 0.00005 for example). Since memory is a premium, I put in logic to not put these in.

My big obstacle was exactly what HuFlung spoke of, arcs and seperating the quadrants. G02 and G03 on Bandit are for 90 degree arcs only (I'm pretty sure).

I'm not sure exactly what language the post files are written in but I was beating my head against the wall trying to use "and" and "or" and "<>" in the if statements...of course trying all the common ones like "&&" and "!=". I ended up just relying on the else statement and only use "=".
Needless to say, when it came down to me needing to calculate quadrant separation, I took a break.

It will move in 3 axis at once. Rapid 3 axis do, like Hu said move the Z into position first if it's up, and last if it's down (if memory serves - I toyed with it but I always just separate them in the code so there isn't any question - Like move XY rapid, now lower Z rapid)...and same memory useage.

I have rev 2. I haven't been able to get to move in an XY arc while moving in a Z (although I thought I did this once upon a time with a G code - but haven't been able to do it since). I believe rev 3 can do this.

The only other thing that was a little limiting for me with Sheetcam was inability to utilize subroutines. I'm not faulting it...I'm trying to make it work with a fossile...it's just limiting. Right now (for space), I write a subroutine for the pocket or contour. Then I set the Z and call the routine. Sheetcam will recode the entire contour for each step of the Z. This is prohibitve for me since it only can handle 1000 "entries" or about 500 lines of code (average).

That said, I could us it just to generate the XY code then cut and paste that into another program. That would still be a huge help over writing it all manually.

Thanks everyone for contributing to this topic...I'll post the code I've written so far tonight.
Tweet this Post!Share on Facebook
Reply With Quote

  #8  
Old 08-23-2007, 02:46 PM
HuFlungDung's Avatar
Moderator
 
Join Date: Mar 2003
Location: Canada
Posts: 4,823
HuFlungDung is on a distinguished road

Breaking arcs into quadrants is an interesting problem, I've never given it a second thought before, just exactly how this might be done logically.

I suppose the arc end point, as well as the arc center can be pulled immediately from cad data. So the end point of the full arc is easy to derive.

The pattern of quadrant arc programming would be such that one axis or the other occupies a position identical to the corresponding arc center coordinate, at every quadrant. (The complementary axis lies at a distance of the arc radius added to the corresponding arc center coordinate).

Given the above rule, for every 360 degree circle, I suppose you could immediately spit out 4 quadrant arc commands quite easily by filling in a simple matrix table, minimal calculations actually required.

Then for the partial (or remaining) arcs, you would need a truth table of some sort, to find out which combinations from the matrix table to discard.

I dunno, I'd be interested to hear the actual method...its got to be faster than running a whole wack of heavy duty equations, or toolpathing could be super slow
__________________
First you get good, then you get fast. Then grouchiness sets in.

(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)
Tweet this Post!Share on Facebook
Reply With Quote

  #9   Ban this user!
Old 08-23-2007, 04:35 PM
 
Join Date: Aug 2006
Location: US
Posts: 281
Chris64 is on a distinguished road

It would be tricky.

Logically it seems - first look at g2/g3 to figure out CW or CCW.

Let's say CW from -15,-15 to +15,+15 with center of 0,0 (180 degree's).

The first thing to figure out is the distance to center. 21.2 in this case.
Given that it's CW, starting in quadrant X, our next quadrant would be up (again, in this case). so it would be +15 on Y, then over 21.2 from center. That would be the first arc. Then repeat for the next quadrant.

Programmatically, it seems like it would have to repeat this type of functionality. 4 static quadrants, and logic that knows which quadrant is next based on CW or CCW. This way you could move theoretically 359 degree's to the same quadrant you started in no problem.

It could probably be done with angles, but I think this would be quicker and less prone to math flaws (I get those quite a bit).

If I knew a little bit more about the syntax in those post files I'd feel a little better about this one.
Tweet this Post!Share on Facebook
Reply With Quote

  #10   Ban this user!
Old 08-23-2007, 05:10 PM
 
Join Date: Nov 2004
Location: England
Posts: 137
locost_cam is on a distinguished road

Posts are written in Lua www.lua.org. They have an on-line manual but it can be hard going at times. The wiki is quite handy though. In the posts directory is a file called post processor.rtf. This documents the SheetCam extensions to Lua. And is and, not equal is ~=.

It would be best to work with angles. SheetCam already supplies the arc angle (+ve for clockwise, -ve for CCW). Angles never exceed 360 degrees. You can use the math.hypot function to calculate the radius from the start position and centre. You can then use the math.sin and math.cos functions to calculate the new X,Y coordinates. The tricky bit is actually working out how to split the angles.

The only other thing that was a little limiting for me with Sheetcam was inability to utilize subroutines.
There lies a big can of worms. SheetCam will probably never use subs for multiple passes. I am considering using subs for nesting (step and repeat). However it complicates things quite a lot because at the moment the file is created sequentially. This means you can't refer to line numbers ahead because you don't know what they will be...

Last edited by locost_cam; 08-23-2007 at 05:11 PM. Reason: typo
Tweet this Post!Share on Facebook
Reply With Quote

Sponsored Links
  #11   Ban this user!
Old 08-25-2007, 12:25 AM
 
Join Date: Aug 2006
Location: US
Posts: 281
Chris64 is on a distinguished road

OK...I've put together the basics of what should work for the arc. It's ugly as this isn't my language of choice and I'm simply not familiar with it.

But, I am having a weird problem. The modalnumber function in particular. I'm not sure if this is a custom function within Sheetcam but it seems to be selectively not displaying anything (no real reason that I can see).

but here's the arc portion of the post file:
Code:
function arc()
   --Here is where we need to break an arc into quadrants
   --arccenterx & y is it's physical location
   --I'm not allowing Z arcs since my machine can't do it
   --
   --Quadrants 1(X+Y+),2(X+Y-),3(X-Y-),4(X-Y+)

   arc_currentx = arccentrex - currentx
   arc_currenty = arccentrey - currenty
   arc_endx = arccentrex - endx
   arc_endy = arccentrey - endy
   arc_distancetocenter = math.sqrt((arc_currentx * arc_currentx) + (arc_currenty * arc_currenty))
--   text (arc_distancetocenter )
   current_quadrant = ""
   finish_quadrant = ""

   if (arc_currentx >= 0 and arc_currenty >= 0) then
	current_quadrant = "1"; end
   if (arc_currentx >= 0 and arc_currenty <= 0) then
	current_quadrant = "2"; end
   if (arc_currentx <= 0 and arc_currenty <= 0) then
	current_quadrant = "3"; end
   if (arc_currentx <= 0 and arc_currenty >= 0) then
	current_quadrant = "4"; end
   if (arc_endx >= 0 and arc_endy >= 0) then
	finish_quadrant = "1"; end
   if (arc_endx >= 0 and arc_endy <= 0) then
	finish_quadrant = "2"; end
   if (arc_endx <= 0 and arc_endy <= 0) then
	finish_quadrant = "3"; end
   if (arc_endx <= 0 and arc_endy >= 0) then
	finish_quadrant = "4"; end

   text("quad1: ")
   text(current_quadrant)
   text("   quad2: ")
   text(finish_quadrant)
   text("\n")
   
   if (current_quadrant == finish_quadrant) then
   --if the move starts and ends in the same quadrant
      text("**same quadrant ")
      modalnumber (" X", endx * scale, "0.0000")
      modalnumber (" y", endy * scale, "0.0000")
      modalnumber (" /X", (arccentrex - currentx) * scale, "0.0000")
      modalnumber (" /y", (arccentrey - currenty) * scale, "0.0000")
      text("\n")
   else
      while (current_quadrant ~= finish_quadrant) do
      --finish point is not in the current quadrant
         currentx = 0
         currenty = 0
         if(arcangle <0) then
            if (current_quadrant == "1") then
               new_current_quadrant = "4"
               currentx = -arc_distancetocenter
               currenty = arc_distancetocenter
            end
            if (current_quadrant == "2") then
               new_current_quadrant = "1"
               currentx = arc_distancetocenter
               currenty = arc_distancetocenter
            end
            if (current_quadrant == "3") then
               new_current_quadrant = "2"
               currentx = arc_distancetocenter
               currenty = -arc_distancetocenter
            end
            if (current_quadrant == "4") then
               new_current_quadrant = "3"
               currentx = -arc_distancetocenter
               currenty = -arc_distancetocenter
            end
            current_quadrant = new_current_quadrant 
            text (" CCW ")
         else
            if (current_quadrant == "4") then
               new_current_quadrant = "1"
               currentx = arc_distancetocenter
               currenty = arc_distancetocenter
            end
            if (current_quadrant == "3") then
               new_current_quadrant = "4"
               currentx = -arc_distancetocenter
               currenty = arc_distancetocenter
            end
            if (current_quadrant == "2") then
               new_current_quadrant = "3"
               currentx = -arc_distancetocenter
               currenty = -arc_distancetocenter
            end
            if (current_quadrant == "1") then
               new_current_quadrant = "2"
               currentx = arc_distancetocenter
               currenty = -arc_distancetocenter
            end
            current_quadrant = new_current_quadrant 
            text "cw"
         end   
         text ("Step Arc: ")
         text (current_quadrant)
         modalnumber ("# X", currentx * scale, "0.0000")
         modalnumber ("# y", currenty * scale, "0.0000")
         modalnumber ("# /X", (arccentrex - currentx) * scale, "0.0000")
         modalnumber ("# /y", (arccentrey - currenty) * scale, "0.0000")
         text ("\n")
      end
      --we have moved into the finish quadrant
      text("**exit quadrant ")
      modalnumber ("$ X", endx * scale, "0.000")
      modalnumber ("$ y", endy * scale, "0.000")
      modalnumber ("$ /X", (arccentrex - currentx) * scale, "0.000")
      modalnumber ("$ /y", (arccentrey - currenty) * scale, "0.000")
      text("\n")
   end
   eol()
end
Note - the values are still a messed up hybrid of relative and absolute...ignore that for now. Also I have some random characters infront of arcs...this is just to verify the results I'm getting are firing the right lines.

The problem I'm having with the output is this:
Code:
**same quadrant  X2.3966 y-0.0675 /X-0.0675 /y0.0000
 X0.0000 Y-0.0675
quad1: 4   quad2: 2
cwStep Arc: 1# X0.0675# y0.0675# /X-0.0675# /y-0.0675
cwStep Arc: 2# y-0.0675# /y0.0675
**exit quadrant $ X-0.067$ y0.000$ /X-0.068$ /y0.068
 X-0.0675 Y1.8474
the bolded line is an example of the data simply not showing the results. No X value or /X although there does appear to be data there.
Tweet this Post!Share on Facebook
Reply With Quote

  #12  
Old 08-25-2007, 01:12 AM
HuFlungDung's Avatar
Moderator
 
Join Date: Mar 2003
Location: Canada
Posts: 4,823
HuFlungDung is on a distinguished road

The data you say is missing, is that not due to calling a 'modal number' function, whose express purpose is to eliminate a number that is the same as that on a previous line? That is what modal means, but I do not think that the Bandit is going to accept that as a legit arc movement, so all 4 values XY/X/Y must be expressed for every arc (I think you know that). So anyway, I suspect you do not want to use a modal function in this case to discover modal numbers.

Modal number discovery is fine for linear moves, but not circles, in Bandit. This is my WAG.
__________________
First you get good, then you get fast. Then grouchiness sets in.

(Note: The opinions expressed in this post are my own and are not necessarily those of CNCzone and its management)
Tweet this Post!Share on Facebook
Reply With Quote

Reply




Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Bandit Control DieGuy General CNC (Mill and Lathe) Control Software (NC) 1 02-05-2011 09:17 PM
Bandit controller bobadame General CNC (Mill and Lathe) Control Software (NC) 10 08-25-2010 09:40 PM
Supermax with Bandit III damelman Knee Vertical Mills 3 08-23-2009 11:56 PM
Bandit III controller SHIZUOKA CNCzone Club House 0 10-16-2006 01:47 PM
Bandit Control ? jdelaney44 Bridgeport and Hardinge Mills 3 03-06-2005 09:36 PM




All times are GMT -5. The time now is 03:53 PM.





Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Content Relevant URLs by vBSEO
Template-Modifications by TMS

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353