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! > Machine Controllers Software and Solutions > G-Code Programing


G-Code Programing Discuss G-code programing and problems here!


This forum is sponsored by:

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Ban this user!
Old 04-11-2008, 03:28 PM
 
Join Date: Apr 2008
Location: USA
Posts: 20
soonervols is on a distinguished road
Newbie to CNCZone

Not a newbie to CNC. I have been running a Victor TNS-3 w\ Fanuc 10T and a HAAS HL-2 for many years. I was trained by a former employee before he left for another job. He trained me in G-code and everything, which has been enough to get me by.

But I always thought there was more I could learn to better myself in the industry. Like the Canned Cycles I've read about on here. Now I did try and got a G83 Peck drill cycle to work, which saves quite a few lines in the program. But like I said there seems to be so much more to learn. I have looked into the G71 or G72 canned cycles, the roughing one. Now what I have seen on here some of the letters I am not familiar with. Like U, W, J and some others that escape right now.

So any input would be great.
Reply With Quote

  #2   Ban this user!
Old 04-12-2008, 12:01 AM
 
Join Date: May 2007
Location: USA
Posts: 913
g-codeguy is on a distinguished road

Do you have manuals for the machines that you could take home and study? Please return them if you do! Many of our manuals are missing because people didn't bring them back.

I have never worked on a Haas, but I can be of help with Fanuc controls.

U & W are used in several ways. U & W are incremental moves when used like this:

X.84Z-.375
G3U.06W-.03R.03

Same move in absolute programming.

X.84Z-.375
G3X.9Z-.405R.03

R is the radius value. You could also replace the R with an I & K value. Best to skip that for now.

Take this example: G4U2.5

U means a two-and-one-half second dwell.

Look at this rough turning cycle:

G71U.075R.01
G71P11Q12U.01W.005F.012

U.075 is the DOC (depth-of-cut) per side
R.01 is the retract value per side
U.01 is the diameter amount to leave on X-axis
W.005 is the amount of material to leave on Z-axis
P is the block number where the roughing cycle will start reading.
Q is the block number where the roughing cycle will stop reading.

Here is a threading cycle.

G76P000155Q30R.001
G76X.8455Z-.785P410Q120R-.0344F.0714

P, Q, & R have different meanings than those already described. The P000155 is defining 3 things. That is why a programming manual would be invaluable. Hardinge manuals are the best of any I've seen. Probably because they were written by people whose first language is English.

You might wonder why use incremental moves in a program. I always swing a radius on all chamfer moves to eliminate any burrs. Imagine you are machining a part with 4 different OD sizes. Program is correct, but although the front diameter is on size, the others are slightly off as they get closer to the spindle.

Programmed like this:

G1Z-1.392F.006
X.7481
G3X.7749Z-1.3976R.019F.002
G1X.7913Z-1.4058
G3X.8025Z-1.4192R.019

modifying the program to make the .8025 diameter .0005 larger requires modifying all 4 X-dimensions. If all remaining diameters also had a chamfer, you would have to make 8 more edits. Programmed like this:

G1Z-1.392F.006
X.7481
G3U.0268W-.0056R.019F.002
G1U.0164W-.0082
G3U.0112W-.0134R.019 (X.8025)

requires only one modification...the X.7481 dimension. Using Ws for the Z-axis also has an advantage. Say the .01 x 45 deg. chamfer was increased to .015 x 45 degree. Make the X.7481 .01 smaller, increase the U.0164 by .01, and the W-.0082 by .005 and you are done.

Here is a nice function in the Fanuc control.

G1Z-1.392F.006
X[.7481+#503]
G3U.0268W-.0056R.019F.002
G1U.0164W-.0082
G3U.0112W-.0134R.019 (X.8025)

Now the program doesn't require modifying to change the .8025 diameter. Put .0005 in macro 503 and the .8025 diameter will now be .0005 larger.

Have I confused you enough yet? I enjoy passing on what little I know. Let me know if I can help you with anything else.
Reply With Quote

  #3   Ban this user!
Old 04-12-2008, 10:03 AM
 
Join Date: Apr 2008
Location: USA
Posts: 20
soonervols is on a distinguished road

Yes I have manuals to take home and have looked them over alot while at work. They don't fully explain everything or atleast to the degree I can understand.

Both machines run in absolute, with that being said does that mean I shouldn't worry with U & W?

I understand how to use the R for radius, so moving on to I & K shouldn't be to much for me ( I hope )

For a dwell I use a P instead of U, does it matter which one is used?

In the G71 code is there any way to just use X & Z instead of U & W?

And why the need for two G71 lines?

My threading cycle consist of only 1 G76 line with X, Z, I ( tapered ), K, F, D and A, so again not sure why the need for two G76 lines.

I understand the adding of a raduis to the chamfer program and how to edit that.

The only place you have really lost me is on the use of U & W in the chamfer and raduis code.

Also the macro 503, what is this exactly? Never had anything to do with macros. Although I have seen them mentioned here at CNC Zone but not fully explained.

Can you run absolute and incremental at the same time?

Also what does the U & W stand for the last sample program?

Thanks for all the info and help g-code guy
Reply With Quote

  #4   Ban this user!
Old 04-12-2008, 11:17 AM
 
Join Date: May 2007
Location: USA
Posts: 913
g-codeguy is on a distinguished road

Both machines run in absolute, with that being said does that mean I shouldn't worry with U & W?

You don't need to use U & W for axis moves if you don't want to. I only showed you how they could be used. They do have advantages as already explained.

I understand how to use the R for radius, so moving on to I & K shouldn't be to much for me ( I hope )

Usually there is no need to move on to I & K. They can be useful occasionally because they are telling the control where the center of the arc is.

For a dwell I use a P instead of U, does it matter which one is used?

No.

In the G71 code is there any way to just use X & Z instead of U & W?

No.

And why the need for two G71 lines?

There isn't a need. Your machine is most likely an older model. They used one line calls.

My threading cycle consist of only 1 G76 line with X, Z, I ( tapered ), K, F, D and A, so again not sure why the need for two G76 lines.

See answer above. You are programming correctly for your control. The single-block G76 call does have the advantage of being able to use any number for the compound infeed. The 2-block G76 call only can use 6 different values.

I understand the adding of a radius to the chamfer program and how to edit that.

The only place you have really lost me is on the use of U & W in the chamfer and radius code.


As mentioned above, you don't have to use them. U & W are incremental moves. They can be very useful as explained in my previous post. In my example the G3U.0268W-.0056R.019F.002 moves X-axis by .0268 and Z-axis by -.0056 thus these would be the values you would see on the control if you used single block mode or could hit the feed hold at the moment the control finishes the radius move...X.7749Z-1.3976

The R value is the total of the radius of the tool nose and the desired radius on the part. In this case I used .016 for the size of the tool nose radius, and .003 for the size of the radius on the part...thus R.019.

Also the macro 503, what is this exactly? Never had anything to do with macros. Although I have seen them mentioned here at CNC Zone but not fully explained.

Do you have a Fanuc manual? It explains how to use macros. Control has to have the right parameters turned on to use them. In the example I gave you the control will take the .0005 you put in macro 503 and add it to the X.7481 thus increasing the final diameter by .0005. If you didn't use Us, you would have to put the +#503 (with brackets) on all 4 blocks as shown with the X[.7481+#503].

Macros (variables) are extremely powerful. I have master programs where the set-up person puts in a few dimensions given on the print into variables (macros), and hits cycle start to make a new part.

Can you run absolute and incremental at the same time?

Yes, but you can't use codes representing the same thing in the same block. That is you couldn't program like this:

G3U.04X.75Z-.618R.02 but you can program this: G3U.04Z-.618R.02

In the first example the control would ignore the U.04 and read the X.75. The 2nd example makes an incremental move of .04 on the X-axis and Z-.618 is an absolute move.

Also what does the U & W stand for the last sample program?

These are incremental moves starting from the X.7481Z-1.392 position. Add the U & W values to this start position to find out what the X & Z final position values are. In this case X.8025Z-1.4195

The U.0268 is how far the tool moves (and direction of move) in X-axis from the start position of the radius move to its ending position. The W-.0056 is how far the tool moves (and direction of move) in Z-axis from its starting position at the beginning of the radius move to its ending position after completing the radius move.

HTH. Have any more questions? Ask. I, or someone else, will try to answer them. Most of us enjoy helping others understand our trade. It is easy to see how come teachers can enjoy their profession once they get past the bureaucratic BS.
Reply With Quote

  #5   Ban this user!
Old 04-12-2008, 12:19 PM
 
Join Date: Apr 2008
Location: USA
Posts: 20
soonervols is on a distinguished road

Here is a portion of a program that I use to rough. Could you give me the G71 code for this. I will be making a finish cut with a seperate tool. Final diameter will be 1/2" 2 1/2" long.

N2( ROUGH )
G50 G99 S1000 M42
G0 T202
G96 S255 M3
G0 X1.1 Z.1 M8
G1 Z-3.5 F85
G0 X1.2 Z.1
X1.
G1 Z-2.5
G0 X1.1 Z.1
X.9
G1 Z-2.5
G0 X1. Z.1
X.8
G1 Z-2.5
G0 X.9 Z.1
X.7
G1 Z-2.5
G0 X.8 Z.1
X.6
G1 Z-2.5
G0 X.7 Z.1
X.53
G1 Z-2.5
X1.2
G0 X8. Z2.
M1

I think I better understand the U & W moves better than I did, Thanks. My only concern would be mixing them up and losing track of where I need to be.
Reply With Quote

Sponsored Links
  #6   Ban this user!
Old 04-12-2008, 01:38 PM
 
Join Date: May 2007
Location: USA
Posts: 913
g-codeguy is on a distinguished road

Originally Posted by soonervols View Post
Here is a portion of a program that I use to rough. Could you give me the G71 code for this. I will be making a finish cut with a seperate tool. Final diameter will be 1/2" 2 1/2" long.

N2( ROUGH )
G50 G99 S1000 M42
G0 T202
G96 S255 M3
G0 X1.1 Z.1 M8
G1 Z-3.5 F85
G0 X1.2 Z.1
X1.
G1 Z-2.5
G0 X1.1 Z.1
X.9
G1 Z-2.5
G0 X1. Z.1
X.8
G1 Z-2.5
G0 X.9 Z.1
X.7
G1 Z-2.5
G0 X.8 Z.1
X.6
G1 Z-2.5
G0 X.7 Z.1
X.53
G1 Z-2.5
X1.2
G0 X8. Z2.
M1

I think I better understand the U & W moves better than I did, Thanks. My only concern would be mixing them up and losing track of where I need to be.
Absolutely, except I am not at work so I can't look up the code for a G71 single-block call. I will give you the 2-block call and explain it. Hopefully you will figure what you need for your control, or you can wait until Monday, and I will give you the correct single-block call at that time. I have never used G71 on a machine with single-block call.

I am assuming 1 inch material. Your program isn't allowing for finish turning tool to remove any material at Z-2.5. If you want the rougher to turn to Z-2.5, then

G0X1.1Z.1M8
G1X1.F85 (STOCK SIZE)
G71U.05R.01 (U is DOC per side, R is retract amount per side)
G71P101Q102U.03F85 (U diameter amount to leave on X, W is understood to be zero)
N101G0X.5
N102G1Z-2.5
G0 X8. Z2.
M1

OR

G0X1.1Z.1M8
G1X1.F85 (STOCK SIZE)
G71U.05R.01 (U is DOC per side, R is retract amount per side)
G71P101Q102F85 (U is understood to be zero, W is understood to be zero)
N101G0X.53
N102G1Z-2.5
G0 X8. Z2.
M1

If you want the face at Z-2.5 to be cleaned up by the rough turning tool, then

G0X1.1Z.1M8
G1X1.F85
G71U.05R.01
G71P101Q102U.03F85
N101G0X.5
G1Z-2.5
N102X1.
G0 X8. Z2.
M1

This was as simple an example as you can get. If you were roughing a part with multiple diameters having chamfers, or any other feature such as a large radius, it is easiest to figure the finish turn pass only. Put it in the G71 blocks, and use a U and W to let the control figure tool compensation, etc.
Reply With Quote

  #7   Ban this user!
Old 04-12-2008, 02:31 PM
 
Join Date: Apr 2008
Location: USA
Posts: 20
soonervols is on a distinguished road

Sorry, the material is 1.125 hex 304ss and I will be making a finish pass with a seperate tool.


G0X1.1Z.1M8
G1X1.F85 (STOCK SIZE)
G71U.05R.01 (U is DOC per side, R is retract amount per side)
G71P101Q102F85 (U is understood to be zero, W is understood to be zero)
N101G0X.53
N102G1Z-2.5
G0 X8. Z2.
M1

I think this is the one I should use since I have a finishing tool. That being said what exactly does P101 and Q102 for on the 2nd G71 line?

You mention U & W as being zero but they are not listed in the code.

Is N101 and N102 just the number for those blocks or something else?

I have that tool offset .05 in front of zero so I can clean up with the finishing tool.
Reply With Quote

  #8   Ban this user!
Old 04-13-2008, 08:28 PM
 
Join Date: Apr 2008
Location: USA
Posts: 20
soonervols is on a distinguished road

G-Code Guy

Could you post the single line G71 code tomorrow.

Thanks again for all the help.
Reply With Quote

  #9   Ban this user!
Old 04-14-2008, 07:05 AM
 
Join Date: May 2007
Location: USA
Posts: 913
g-codeguy is on a distinguished road

Is N101 and N102 just the number for those blocks or something else?

Yes. P101 tells the cycle to start at block N101, and Q102 tells the cycle to end at block N102

You mention U & W as being zero but they are not listed in the code.

If not included in the G71 definition, then they are understood to be zero. Thus G71P101Q102F.012 equals G71P101Q102U0W0F.012 I never type extraneaous code, tho I will add comments to help the operator and ocassionally ones to remind myself where I am or what I am doing.

I have that tool offset .05 in front of zero so I can clean up with the finishing tool.

I never program this way. It would be too confusing for the others who run the machine. I always program exactly how I want it cut. I would consider .05 stock on the faces for the finishing tool to remove to be too much...even for a 1/32R insert. Especially on 304 SS.

Sorry, the material is 1.125 hex 304ss and I will be making a finish pass with a seperate tool.

So mathmatecally it would be 1.299 across the corners. That would change the first part of my example from

G0X1.1Z.1M8
G1X1.F85 (STOCK SIZE)

to

G0X1.35Z.1M8
G1X1.3F85 (STOCK SIZE)

X1.3 is the dimension the cycle uses to start figuring the cuts from. So If you started with an X-axis clearance of .1 (X1.4 in this case) the control would make the first pass at X1.3 (cutting air).

Single block G71 format is:

G71 P...Q...U+/-...W+/-...I+/-...K+/-...D...F...S...

*When I and K are '0', a rough finishing cycle is omitted. Never used this, but am quite sure that this means you could define the last roughing pass to make a .01 DOC in X-axis and .002 in Z-axis if you wanted to for some reason.

P, Q, U and W have the same meaning as the 2-block call (1st block of the sequence, last block of the sequence, diameter finishing allowance and Z-direction allowance).

'+/-' means they can be a positive or negative value. All others must be positive.

I is the X directional rough finishing allowance and direction as a radius value.
K is the Z directional rough finishing allowance and direction (as a radius value, naturally).
D is the depth of cut (in radius) with NO sign.
F is exactly what you would think it is
S is the surface feet. I always program this after my initial approach, not in the canned cycle, as I never use the G70 cycle.

*Any F or S within the 2 blocks (N101 and N102 in this case) defining the G71 moves are ignored. The cycle will use the F-value in the G71 definition for all cutting and the SFM defined in, or before, the G71 cycle definition.

So if you want to leave .03 on the X for finishing and .01 on the Z for finishing then your code should look like this:

G0X1.35Z.1M8
G1X1.3F.01
G71X.5Z-2.5U.03W.01D500F.0085
N101G0X.5
G1Z-2.5
N102X1.3

Don't want to assume too much, so I will mention that the control counts from right to left on D using 4 decimal places for inch programming (in most cases). So D500 is .05 while D50 would be .005

I've never programmed F in ipr (G99) without using a decimal point. I tried it on a Fanuc 21i-T control and F85 feeds at F.000085. Just a tad slow.

Another thing to remember is to figure your DOCs. Don't just put in something like .05 or .1. The last pass in this example will be taking .07 off the diameter. Fine. I have seen a program made by a newbie that was taking .0004 per side off an aluminum job on the last pass because he didn't know to figure his DOCs. He simply used U.1 for his DOC.

HTH. Ask if there is something in my explaination you don't understand, and I will try to expand on it. Or try to make it clearer.
Reply With Quote

  #10   Ban this user!
Old 04-14-2008, 07:58 AM
 
Join Date: Apr 2008
Location: USA
Posts: 20
soonervols is on a distinguished road

Yes. P101 tells the cycle to start at block N101, and Q102 tells the cycle to end at block N102

Usually I don't number each block. I just number the start of each section with N and whatever tool I will be using in that part of the program. So does this mean I need to count each line\block to let the maching know?

Sorry that should have been .005 offset not .05. I program it to be the amount I want such as Z0 but that allows me to come back with the finish tool and have some to clean up.

And you are correct on the 4 decimal places, that is what I go by. The feed of F85 always runs as .0085 or atleast I'm assuming it does. May be I should pay more attention....LOL.

How do you figure DOC? I just take a guess\hunch at how much I should take off, say .1 means .05 per side.

G0X1.35Z.1M8
G1X1.3F.01
G71X.5Z-2.5U.03W.01D500F.0085
N101G0X.5
G1Z-2.5
N102X1.3


So on G71 line, X.5 is telling it to finish at .5 but U is telling it to actually finish at .53? same with Z finishing at 2.5 and W telling it to finish at 2.49?

In the N101 line you are rapiding back to X.5 and then feeding in to Z-2.5, right?

Sorry if I am making this more confusing then it needs to be. Like I said new to the whole canned cycle thing.
Reply With Quote

Sponsored Links
  #11   Ban this user!
Old 04-14-2008, 09:51 AM
 
Join Date: Apr 2008
Location: USA
Posts: 20
soonervols is on a distinguished road

Okay I used this......

G0 X1.15 Z.1 M8
G71 X.5 Z-2.5 U.03 W.01 D1000 F85
N101 G0X.5
N102 G1Z-2.5
G0 X8. Z3.
M1


Cutting 1.125 hex brass on this part. The machine alarmed out because I had no P or Q. So does this mean I should use the two G71 lines?

And I also seen where you mentioned P and Q could be any number as long as they were no where else in the program. Is that the same for the N101 and N102 you listed?
Reply With Quote

  #12   Ban this user!
Old 04-14-2008, 10:12 AM
 
Join Date: May 2007
Location: USA
Posts: 913
g-codeguy is on a distinguished road

Usually I don't number each block. I just number the start of each section with N and whatever tool I will be using in that part of the program. So does this mean I need to count each line\block to let the maching know?

I only number the 1st block of each operation using the tool's offset number followed by 2 zeros. T1232 would have N3200. T1212 would be N1200. However, the G71 has to have 2 line numbers. Don't count lines. The numbers can be any one you choose. I normally use P11Q12 for the first G71 cycle. If I have another, I use P13Q14, etc. Just a habit. I reserve N1 to N5 for running subprogram on multipy parts. The control will start from the G71 cycle call and look towards the end of the program for these numbers. If it doesn't find them between the G71 and the end of the program, it will wrap around and look from the beginning of the program for the numbers. That is why the G71 call should be before the defining blocks for it. Saves time.

The feed of F85 always runs as .0085 or at least I'm assuming it does.

Try this in MDI. First make sure the turret is in the clear by at least 2 inches.

S2000M3
G1W-2.F85

Press the "CURRENT" softkey. Look at the readout for the F-code on the upper right side of the page. F85 is running at F.000085 on a Hardinge Conquest 42 with an OT control. Maybe your Haas is set up to work differently. I'm sure you would know the difference between the 2 feedrates!

How do you figure DOC

More than one way to skin a cat. Say you are looking for DOC of about .05. Take the X starting position and subtract the ending position. In this case 1.3-.53=.77 (U.03 means the part will be turned to .53). Divide the result by 2 to get the amount per side (.385). Divide this result by .05. In this case it is 7.7. Not even so divide .385 by 8 and make U.0485 to get almost equal DOC for each pass. The last pass will be a little less. Or .385/7=.055. Can you live with .055 DOC's?

Or you can take the .77 and divide by the diameter amount (.1) to get the number of passes U.05 would make (7.7). This is only 2 ways to figure it. There are others. I prefer working with radius values so I don't forget what I'm doing.

Use whatever method is the most comfortable for you.

So on G71 line, X.5 is telling it to finish at .5 but U is telling it to actually finish at .53? same with Z finishing at 2.5 and W telling it to finish at 2.49?

You are exactly correct.

In the N101 line you are rapiding back to X.5 and then feeding in to Z-2.5, right?

The sequence is: Rapid to X1.2, feed to Z-2.49, retract at feedrate to 1.22, rapid to Z.1, rapid to X1.1, feed to Z-2.49, feed to X1.12, rapid to Z.1, etc. After the last pass, it will rapid back to the original start position (X1.3Z.1), and then pick up the next line of code after block N102 and execute it. Provided, of course, that the N101/N102 blocks come directly after the G71 call blocks.

I was told by a younger man with more experience than I that a rapid move of .1 or less wasn't needed. The turret has to accelerate to maximum speed, and then decelerate to a stop. .1 is too short a distance. Made sense to me. Therefore I use a G1 instead of G0 on the 1st block of the G71/G72 cycle as the machines I program for can't take even a .1 DOC in most materials without pushing the material back thru the collet/chuck. Most machines I program have barfeeds. The machines will take heavier cuts if running slug jobs.

So my program would have N101G1X.5. We do have one machine with a Fanuc control that requires the 1st block to have a G0, or it will alarm. I assume it is a parameter change, but I don't normally program for this machine so I haven't looked into finding out why this particular lathe should be different.

Side note: Say the roughing tool finished at X.55, and you want to rerun it. Instead of making all those passes cutting air, change the U.05 to U1. and if the 1st block is G1, change it to G0. Careful!!! If you do this then the Z-2.49 MUST contain a G1. This will rapid to X.53 and then feed to Z-2.49 in one pass. The U.05 has to be bigger than the radial distance from the start position to the end position. In this case bigger than .77. U.7701 would also work.

Last edited by g-codeguy; 04-14-2008 at 11:06 AM.
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
Newbie to CNCzone, but not CNC or quotes joesmachine Employment Opportunity 0 02-18-2008 04:56 AM
cnczone.com newbie RuffStuff DIY-CNC Router Table Machines 2 09-26-2007 04:00 PM
Hello CNCZone Tony@UEC CNCzone Club House 2 03-24-2005 08:18 PM
cnczone ads? jimbo Suggestions for the CNCzone.com site. 3 06-29-2004 04:58 PM




All times are GMT -5. The time now is 10:10 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 354 355 356 357 358 359 360 361