@@ -4,11 +4,95 @@ An implementation of the "Moody Method" for surface plate flatness.
4
4
5
5
[ Try It] ( https://brcolow.github.io/moodyjs/ )
6
6
7
+ ## Overall Flatness Grades
8
+
9
+ Two different grading standards for the overall measured flatness of a surface plate are defined by ISO and ASME. Both
10
+ standards provide a list of standard table sizes and their associated flatness tolerances for the different grades as
11
+ well as an equation for calculating the flatness tolerance when the size is ±5% outside the range of a standard
12
+ size. The ISO equation is linear, whereas the ASME equation is a second degree polynomial (both are a function of
13
+ the plate's diagonal length). An important difference between the two standards is that the equation provided by
14
+ the ISO standard matches the values in the standard sizes table. This is not the case for the ASME standard.
15
+
16
+ ### ASME (B89.3.7-2013)
17
+
18
+ ASME B89.3.7-2013:
19
+
20
+ 4.3.4 Flatness Tolerance (Entire Work Surface)
21
+
22
+ All points of the work surface shall be contained between two parallel planes. For sizes not listed in Table 1 (more
23
+ specifically, for sizes that are outside +-5% of the sizes listed in Table 1) the "AA" grade flatness tolerance can be
24
+ calculated by the following second degree polynomial (D = diagonal of the plate):
25
+
26
+ Overall flatness tolerance (µm) = 1.6D² + 1
27
+ Overall flatness tolerance (µinch) = D² / 25 + 40
28
+
29
+ The tolerance for grades "A" and "B" are calculated by multiplying the "AA" tolerance grade by 2 and 4 respectively:
30
+
31
+ tolerance(A) = tolerance(AA) * 2
32
+ tolerance(B) = tolerance(AA) * 4
33
+
34
+ The specification states that the calculated flatness tolerance for grade "AA" is rounded up to the nearest
35
+ 0.5 micrometer or 25 µinch increments. However, this makes the calculated values even farther off than the tabulated
36
+ values.
37
+
38
+ The table values do not match the calculated values. For example:
39
+
40
+ For a 12" x 12" standard size surface plate the table lists an overall flatness tolerance of 50 µinch:
41
+
42
+ ((sqrt(12² + 12²))² / 25) + 40 = ((12² + 12²) / 25) + 40 = 51.52
43
+
44
+ Rounded up to nearest 25 µinch increment = 75
45
+
46
+ This doesn't match (the calculated value is 1.52 µinches more than the table value). The rounding makes matters worse.
47
+
48
+ For a 18" x 24" standard size surface plate the table lists an overall flatness tolerance of 80 µinch:
49
+
50
+ 40 + ((sqrt(18² + 24²))² / 25) = 76
51
+
52
+ Rounded up to nearest 25 µinch increment = 100
53
+
54
+ This doesn't match (the calculated value is 4 µinches less than the table value). The rounding again makes matters worse.
55
+
56
+ Here is a table that shows the difference between the tabulated and calculated values for ASME (and a comparison between
57
+ ISO grade 0 and ASME grade "AA"):
58
+
59
+ | Plate Length | Plate Width | Diagonal | Diagonal (µm) | AA Overall Flatness Calc (µinch) | AA Overall Flatness Table (µinch) | Diff(Calc - Table) | ISO Equation Grade 0 (µm) | ISO Grade 0 (µinch) | A Overall Flatness Calc (µinch) | B Overall Flatness Calc (µinch) | A Overall Flatness Table (µinch) | B Overall Flatness Table (µinch) |
60
+ | --------------| -------------| -------------| ---------------| ----------------------------------| -----------------------------------| --------------------| ---------------------------| ---------------------| ---------------------------------| ---------------------------------| ----------------------------------| ----------------------------------|
61
+ | 12 | 12 | 16.97056275 | 431.0522938 | 51.52 | 50 | 1.52 | 4 | 157.480315 | 103.04 | 206.08 | 100 | 200 |
62
+ | 12 | 18 | 21.63330765 | 549.4860144 | 58.72 | 50 | 8.72 | 4.3 | 169.2913386 | 117.44 | 234.88 | 100 | 200 |
63
+ | 18 | 18 | 25.45584412 | 646.5784407 | 65.92 | 50 | 15.92 | 4.6 | 181.1023622 | 131.84 | 263.68 | 100 | 200 |
64
+ | 18 | 24 | 30 | 762 | 76 | 80 | -4 | 4.9 | 192.9133858 | 152 | 304 | 160 | 320 |
65
+ | 24 | 24 | 33.9411255 | 862.1045876 | 86.08 | 80 | 6.08 | 5.2 | 204.7244094 | 172.16 | 344.32 | 160 | 320 |
66
+ | 24 | 36 | 43.26661531 | 1098.972029 | 114.88 | 100 | 14.88 | 5.8 | 228.3464567 | 229.76 | 459.52 | 200 | 400 |
67
+ | 24 | 48 | 53.66563146 | 1363.107039 | 155.2 | 150 | 5.2 | 6.7 | 263.7795276 | 310.4 | 620.8 | 300 | 600 |
68
+ | 30 | 48 | 56.60388679 | 1437.738725 | 168.16 | 180 | -11.84 | 7 | 275.5905512 | 336.32 | 672.64 | 360 | 720 |
69
+ | 36 | 36 | 50.91168825 | 1293.156881 | 143.68 | 150 | -6.32 | 6.4 | 251.9685039 | 287.36 | 574.72 | 300 | 600 |
70
+ | 36 | 48 | 60 | 1524 | 184 | 200 | -16 | 7.3 | 287.4015748 | 368 | 736 | 400 | 800 |
71
+ | 36 | 60 | 69.97142274 | 1777.274138 | 235.84 | 250 | -14.16 | 7.9 | 311.023622 | 471.68 | 943.36 | 500 | 1000 |
72
+ | 36 | 72 | 80.49844719 | 2044.660559 | 299.2 | 300 | -0.8 | 8.8 | 346.4566929 | 598.4 | 1196.8 | 600 | 1200 |
73
+ | 48 | 48 | 67.88225099 | 1724.209175 | 224.32 | 200 | 24.32 | 7.9 | 311.023622 | 448.64 | 897.28 | 400 | 800 |
74
+ | 48 | 60 | 76.83749085 | 1951.672268 | 276.16 | 300 | -23.84 | 8.5 | 334.6456693 | 552.32 | 1104.64 | 600 | 1200 |
75
+ | 48 | 72 | 86.53323061 | 2197.944058 | 339.52 | 350 | -10.48 | 9.1 | 358.2677165 | 679.04 | 1358.08 | 700 | 1400 |
76
+ | 48 | 96 | 107.3312629 | 2726.214078 | 500.8 | 500 | 0.8 | 10.9 | 429.1338583 | 1001.6 | 2003.2 | 1000 | 2000 |
77
+ | 48 | 120 | 129.2439554 | 3282.796466 | 708.16 | 700 | 8.16 | 12.4 | 488.1889764 | 1416.32 | 2832.64 | 1400 | 2800 |
78
+ | 60 | 120 | 134.1640786 | 3407.767598 | 760 | 750 | 10 | 13 | 511.8110236 | 1520 | 3040 | 1500 | 3000 |
79
+ | 72 | 96 | 120 | 3048 | 616 | 600 | 16 | 11.8 | 464.5669291 | 1232 | 2464 | 1200 | 2400 |
80
+ | 72 | 144 | 160.9968944 | 4089.321117 | 1076.8 | 1100 | -23.2 | 14.8 | 582.6771654 | 2153.6 | 4307.2 | 2200 | 4400 |
81
+
82
+ We believe that the table values should be changed to match the calculated values from the second degree polynomial and
83
+ that the advice on rounding up to the nearest 25 µinches for calculated values should be abandoned.
84
+
85
+ ### ISO 8512-2
86
+
87
+
88
+
7
89
## TODO
8
90
9
91
* Add a way to show a semi-transparent plane that corresponds to grade "AA", "A", and "B" flatness. tolerance(AA) = (40 + diagonal squared/25) x .000001″, A = tolerance(AA) * 2, B=tolerance(AA) * 4
10
92
* Show a scale for the z-axis height values.
11
93
* Add a thickness for the table slab (add manufacturer's label).
94
+ * Show the total deviation of the plate.
95
+ * Allow for "importing" a number set (maybe from a CSV file or a textarea with a simple format).
12
96
13
97
## Thanks To
14
98
0 commit comments