EVALUATION OF RESTRAINT STRESSES AND CRACKING IN EARLY-AGE CONCRETE WITH THE RIGID CRACKING FRAME Except where reference is made to the work of others, the work described in this thesis is my own or was done in collaboration with my advisory committee. This thesis does not include proprietary or classified information. Jared Anthony Whigham Certificate of Approval: G. Ed Ramey Anton K. Schindler, Chair Feagin Professor Gottlieb Assistant Professor Civil Engineering Civil Engineering Robert W. Barnes Stephen L. McFarland Assistant Professor Dean Civil Engineering Graduate School EVALUATION OF RESTRAINT STRESSES AND CRACKING IN EARLY-AGE CONCRETE WITH THE RIGID CRACKING FRAME Jared Anthony Whigham A Thesis Submitted to The Graduate Faculty of Auburn University In Partial Fulfillment of the Requirements for the Degree of Master of Science Auburn, Alabama August 8, 2005 EVALUATION OF RESTRAINT STRESSES AND CRACKING IN EARLY-AGE CONCRETE WITH THE RIGID CRACKING FRAME Jared Anthony Whigham Permission is granted to Auburn University to make copies of this thesis at its discretion, upon request of individuals or institutions and at their expense. The author reserves all publication rights. ______________________________ Signature of Author ______________________________ Date Copy sent to: Name Date iii THESIS ABSTRACT EVALUATION OF RESTRAINT STRESSES AND CRACKING IN EARLY-AGE CONCRETE WITH THE RIGID CRACKING FRAME Jared Anthony Whigham Master of Science, August 8, 2005 (B.C.E., Auburn University, 2003) 366 Typed Pages Directed by Anton K. Schindler Early-age cracking problems are common in a wide variety of concrete structures, ranging from bridge decks and piers, to pavements used for highways and airport runways. Numerous surveys conducted by state and federal agencies reveal that concrete bridges throughout the United States suffer from problems associated with early-age cracking. Although early-age cracking is a growing dilemma, advanced investigations into this issue have just recently begun in the US. The primary objective of this thesis is to develop a test method to assess the cracking tendency of concrete mixtures. The research presented in this thesis explores the use of temperature-controlled, rigid cracking frames that have been developed in Germany. A test method to measure early-age, restraint stress development has been developed and a laboratory testing iv program has been initiated. The laboratory testing program was designed to evaluate the effects of fresh concrete temperature, aggregate type, and cementitious materials on the early-age, restraint stress development of concrete. The laboratory testing program revealed that the rigid cracking frame provides a detailed account of the early-age stress development thus allowing assessment of early- age cracking risk. This risk can be assessed by comparing the stress development to the strength development. The behavior of two rigid cracking frames was also investigated. One cracking frame was manufactured in Munich, Germany and the other cracking frame was manufactured near Opelika, Alabama USA. Comparative testing of the cracking frames revealed that the frame manufactured in Alabama performed comparably to the frame manufactured in Germany. v ACKNOWLEDGMENTS I would like to sincerely thank my advisor Dr. Anton Schindler. Your guidance, advice, time, and friendship have been greatly appreciated. I would also like to thank my fellow graduate students and Auburn University faculty who have worked on this project. I would like to thank Drs. Kevin Folliard and Maria G. C. Juenger from The University of Texas at Austin. Your intellectual interaction with Auburn University and financial support has made this project possible. I would also like to thank the Texas Department of Transportation for their support, without which this project would not have been possible. I would also like to thank Ralph Browne, whose continued enthusiasm drives this project. I would like to thank my father, Harry Whigham. Your time and energy devoted to helping me with this project is greatly appreciated. Your hard work ethic and years of experience is invaluable. I look forward to working together for many years ahead. I would also like to thank my family and friends. Your support and encouragement have been greatly appreciated. Finally, I would like to thank my wife, Joanna. The sacrifices you have made to make this possible are deeply appreciated. I am grateful for the time you devoted to working on this project with me. Thank you for all your love and patience. vi Style manual or journal used Chicago Manual of Style Computer software used Microsoft? Word, Microsoft? Excel vii TABLE OF CONTENTS LIST OF TABLES.............................................................................................................xv LIST OF FIGURES.........................................................................................................xvii CHAPTER 1: INTRODUCTION........................................................................................1 1.1 PROBLEM STATEMENT................................................................................3 1.2 RESEARCH SIGNIFICANCE..........................................................................4 1.3 RESEARCH OBJECTIVES..............................................................................4 1.4 RESEARCH SCOPE.........................................................................................5 CHAPTER 2: RESTRAINT STRESSES AND EARLY-AGE CONCRETE....................8 2.1 EARLY-AGE CRACKING MECHANISMS...................................................8 2.1.1 THERMAL EFFECTS..................................................................................10 2.1.2 AUTOGENOUS SHRINKAGE.......................................................................21 2.1.3 DRYING SHRINKAGE................................................................................23 2.2 METHODS FOR MEASUREMENT OF RESTRAINT STRESSES AND CRACKING TENDENCY.............................................................................23 2.2.1 CONCRETE RING TEST.............................................................................24 2.2.2 RESTRAINED PRISM TESTS.......................................................................27 2.2.3 SUMMARY OF TEST METHODS.................................................................31 viii 2.3 BEHAVIOR OF RESTRAINED SPECIMENS IN THE RIGID CRACKING FRAME.....................................................................................32 2.4 METHODS TO QUANTIFY FACTORS INFLUENCING THERMAL CRACKING SENSITIVITY..........................................................................33 2.4.1 FRESH CONCRETE TEMPERATURE............................................................34 2.4.2 CONCRETE CONSTITUENTS......................................................................35 2.5 CONCLUDING REMARKS...........................................................................41 CHAPTER 3: CRACKING FRAME SCANNING TRIP.................................................42 3.1 ATTENDEES..................................................................................................43 3.2 TRIP AGENDA...............................................................................................43 3.3 RIGID CRACKING FRAME..........................................................................44 3.3.1 DISCUSSIONS WITH DR. SPRINGENSCHMID..............................................45 3.3.2 TESTING PROCEDURE...............................................................................49 3.3.3 CONSTRUCTION OF RIGID CRACKING FRAME..........................................54 3.4 TEMPERATURE-STRESS TESTING MACHINE.......................................55 3.4.1 DISCUSSIONS WITH DR. SPRINGENSCHMID AND DR. MARKUS PLANNERER.............................................................................................56 3.4.2 TESTING PROCEDURE...............................................................................58 3.4.3 LENGTH MEASUREMENT DEVICE.............................................................59 3.4.4 CONSTRUCTION OF THE TEMPERATURE-STRESS TESTING MACHINE.......61 3.5 IN-PLACE STRESS METER.........................................................................62 3.6 ADIABATIC CALORIMETER......................................................................63 3.7 CLOSING COMMENTS................................................................................64 ix CHAPTER 4: EXPERIMENTAL TEST EQUIPMENT...................................................66 4.1 RIGID CRACKING FRAME..........................................................................66 4.1.1 CROSSHEADS...........................................................................................67 4.1.2 INVAR SIDE BARS....................................................................................75 4.1.3 INSTRUMENTATION..................................................................................77 4.1.4 THERMALLY INSULATED FORMWORK......................................................81 4.1.5 SUMMARY OF MODIFICATIONS................................................................85 4.2 MATCH-CURING BOX.................................................................................85 4.3 DATA ACQUISITION SYSTEM...................................................................87 4.3.1 DATA-LOGGER........................................................................................87 4.3.2 PERSONAL COMPUTER (PC).....................................................................89 4.3.3 CIRCULATOR............................................................................................89 CHAPTER 5: RIGID CRACKING FRAME TEST PROCEDURE.................................91 5.1 ASSEMBLY OF THE RIGID CRACKING FRAME....................................91 5.1.1 EQUIPMENT REQUIRED FOR ASSEMBLY...................................................92 5.1.2 ASSEMBLY PROCEDURE...........................................................................92 5.2 RIGID CRACKING FRAME CALIBRATION.............................................93 5.2.1 EQUIPMENT REQUIRED FOR CALIBRATION..............................................94 5.2.2 CALIBRATION PROCEDURE......................................................................94 5.2.3 DATA ACQUISITION.................................................................................97 5.3 TEST PROCEDURE.......................................................................................98 5.3.1 EQUIPMENT REQUIRED TO PERFORM A TEST...........................................99 5.3.2 TEST PREPARATION...............................................................................100 x 5.3.3 CONCRETE PLACEMENT.........................................................................101 5.3.4 INSTRUMENTATION................................................................................102 5.3.5 DATA ACQUISITION...............................................................................103 5.3.6 COOLING THE CONCRETE SPECIMEN......................................................104 5.4 REMOVING THE CONCRETE SPECIMEN..............................................105 5.4.1 EQUIPMENT REQUIRED TO REMOVE SPECIMEN......................................105 5.4.2 REMOVAL PROCEDURE..........................................................................106 CHAPTER 6: LABORATORY TESTING PROGRAM AND MATERIALS...............108 6.1 EXPERIMENTAL TESTING PROGRAM..................................................108 6.2 CONCRETE MIXTURE PROPORTIONS...................................................111 6.3 EXPERIMENTAL PROCEDURES..............................................................113 6.3.1 BATCHING.............................................................................................114 6.3.2 MIXING PROCEDURE..............................................................................114 6.3.3 FRESH CONCRETE TESTING....................................................................114 6.3.4 HARDENED CONCRETE TESTING............................................................115 6.4 MATERIALS.................................................................................................115 6.4.1 CEMENTITIOUS MATERIALS...................................................................115 6.4.2 COARSE AGGREGATES...........................................................................116 6.4.3 FINE AGGREGATES................................................................................119 CHAPTER 7: PRESENTATION AND ANALYSIS OF RESULTS.............................120 7.1 FRESH CONCRETE PROPERTIES............................................................120 7.2 HARDENED CONCRETE PROPERTIES...................................................121 7.3 RIGID CRACKING FRAME........................................................................124 xi 7.3.1 EFFECT OF FRESH CONCRETE TEMPERATURE........................................127 7.3.2 EFFECT OF COARSE AGGREGATE TYPE..................................................132 7.3.3 EFFECT OF CEMENTITIOUS MATERIALS.................................................137 7.3.4 RIGID CRACKING FRAME COMPARISON.................................................142 7.3.5 EVALUATION OF CRACKING STRESS-TO-STRENGTH RATIO...................146 7.4 DISCUSSION OF TEST PROCEDURE......................................................146 7.5 CONCLUSIONS...........................................................................................148 CHAPTER 8: CONCLUSIONS AND RECOMMENDATIONS...................................150 8.1 CONCLUSIONS...........................................................................................152 8.2 RECOMMENDATIONS...............................................................................153 REFERENCES................................................................................................................155 APPENDIX A: CRACKING FRAME SCANNING TRIP.............................................163 A.1. TEST PREPARATION...............................................................................163 A.2. TESTING EQUIPMENT.............................................................................167 A.3. SPECIMEN REMOVAL.............................................................................169 A.4. SPECIMEN REMOVAL EQUIPMENT.....................................................171 APPENDIX B: RIGID CRACKING FRAME................................................................172 B.1. GERMAN CRACKING FRAME................................................................173 B.2. AUBURN CRACKING FRAME................................................................185 B.3. THERMALLY INSULATED FORMWORK.............................................194 APPENDIX C: RIGID CRACKING FRAME TESTING PROCEDURE......................197 C.1. CALIBRATION EQUIPMENT...................................................................197 C.2. CRACKING FRAME TEST EQUIPMENT...............................................199 xii C.3. TEST PROCEDURE...................................................................................202 C.4. SPECIMEN REMOVAL PROCESS...........................................................208 C.5. EQUIPMENT REQUIRED FOR SPECIMEN REMOVAL.......................210 APPENDIX D: MATCH-CURING BOX.......................................................................212 D.1. MATCH-CURING BOX DESIGN.............................................................212 D.2. MATCH-CURING BOX CONSTRUCTION.............................................214 APPENDIX E: TEMPERATURE-CONTROL PROGRAM..........................................219 E.1. CONTAINER FORM..................................................................................220 E.2. CONTROLLER FORM...............................................................................224 E.3. TEST SETUP FORM...................................................................................263 E.4. EQUIPMENT SETUP FORM.....................................................................269 E.5. RS232 COMMUNICATION SETTINGS FORM.......................................276 E.6. TRANSMISSION FORMAT SETTINGS FORM......................................286 E.7. AUBURN CRACKING FRAME FORM....................................................289 E.8. GERMAN CRACKING FRAME FORM....................................................299 E.9. MATCH-CURING BOX FORM.................................................................308 APPENDIX F: DATA ACQUISITION..........................................................................316 F.1. RIGID CRACKING FRAME CALIBRATION..........................................316 F.2. RIGID CRACKING FRAME TESTING.....................................................318 F.2.1 AUBURN CRACKING FRAME AND MATCH-CURING BOX.......................319 F.2.2 GERMAN CRACKING FRAME..................................................................324 APPENDIX G: RIGID CRACKING FRAME COMPARISON.....................................330 G.1. MIXTURE I-SRG-73 COMPARISON.......................................................330 xiii G.2. MIXTURE I-SRG-95 COMPARISON.......................................................332 G.3. MIXTURE I-SRG-50 COMPARISON.......................................................334 G.4. MIXTURE I-LS-73 COMPARISON..........................................................336 G.5. MIXTURE III-SRG-73 COMPARISON.....................................................338 G.6. MIXTURE IF-SRG-73 COMPARISON.....................................................340 xiv LIST OF TABLES Table 2-1: Maximum allowable temperature difference to avoid cracking ...............14 Table 6-1: Concrete mixture proportions..................................................................113 Table 6-2: Chemical properties of cementitious materials........................................116 Table 6-3: Aggregate specific gravity and absorption capacity................................117 Table 7-1: Fresh concrete properties.........................................................................121 Table 7-2: 7-day and 28-day mechanical properties.................................................122 Table 7-3: Quality control compressive strength comparison...................................123 Table 7-4: Summary of AU rigid cracking frame test results...................................126 Table 7-5: Rigid cracking frame comparison............................................................145 Table 7-6: Cracking stress-to-strength ratio..............................................................146 Table E-1: Container form code................................................................................220 Table E-2: Controller form code................................................................................225 Table E-3: Test setup form code................................................................................264 Table E-4: Equipment setup form code.....................................................................269 Table E-5: RS232 communication settings form code..............................................277 Table E-6: Transmission format settings form code..................................................286 Table E-7: Auburn cracking frame form code...........................................................290 Table E-8: German cracking frame form code..........................................................300 xv Table E-9: Match curing box form code....................................................................309 Table F-1: RCF calibration program.........................................................................317 Table F-2: Auburn RCF and match curing box program..........................................320 Table F-3: German RCF program..............................................................................325 xvi LIST OF FIGURES Figure 1-1: Mass concrete cracking in the IH45/BW 8 interchange, Huston TX..........3 Figure 2-1: Generalized early-age temperature, strain, and stress development in a concrete element..........................................................................................9 Figure 2-2: Example of the temperature, stress, and strength development in a hardening concrete element under restraint...............................................11 Figure 2-3: Evolution of the CTE of hardening concrete.............................................15 Figure 2-4: Calculated thermal dilation coefficients (TDC) of concrete......................16 Figure 2-5: Variation of CTE with moisture content....................................................17 Figure 2-6: Generalized deformation behavior of hardening concrete.........................18 Figure 2-7: Factors influencing creep...........................................................................19 Figure 2-8: Distribution of restraint..............................................................................21 Figure 2-9: Early-age autogenous shrinkage of mortars with different water-to- cement ratios..............................................................................................22 Figure 2-10: ASTM steel ring test apparatus..................................................................25 Figure 2-11: AASHTO steel ring test apparatus.............................................................26 Figure 2-12: Rigid cracking frame developed at TUM..................................................28 Figure 2-13: Mechanical model of the RCF...................................................................29 Figure 2-14: Temperature-stress testing machine developed at TUM...........................30 xvii Figure 2-15: Behavior of restrained specimens in the RCF............................................33 Figure 2-16: Influence of fresh concrete temperature on cracking sensitivity...............34 Figure 2-17: Influence of cement content and cement sources on cracking sensitivity...................................................................................................37 Figure 2-18: Influence of expansive additives (EA) on cracking sensitivity.................40 Figure 3-1: Dr. Rupert Springenschmid during a lecture to the research team............44 Figure 3-2: Rigid cracking frame developed in Munich...............................................45 Figure 3-3: The rigid cracking frame during operation in Munich...............................45 Figure 3-4: Sealing the concrete specimen in the frame...............................................49 Figure 3-5: The rigid cracking frame ready for testing................................................51 Figure 3-6: Specimen removal......................................................................................54 Figure 3-7: Cracking frame under construction at Brunner Maschinenbau.................55 Figure 3-8: Temperature-stress testing machine developed in Munich........................56 Figure 3-9: Temperature-stress testing machine at TUM.............................................57 Figure 3-10: Redesigned crosshead grips of the TST machine......................................59 Figure 3-11: Side view of the length measurement device used at TUM.......................60 Figure 3-12: Top view of the length measurement device used at TUM.......................61 Figure 3-13: In-place stress meter developed at TUM...................................................62 Figure 3-14: Adiabatic calorimeter used at TUM...........................................................63 Figure 3-15: Schematic of the adiabatic calorimeter used at TUM................................64 Figure 4-1: Rigid cracking frame schematic.................................................................68 Figure 4-2: Invar bar connection to the crosshead........................................................69 Figure 4-3: Invar side bar under construction...............................................................69 xviii Figure 4-4: Cracking frame crosshead under construction...........................................70 Figure 4-5: Crosshead teeth..........................................................................................70 Figure 4-6: Cracking in the crosshead..........................................................................71 Figure 4-7: Crosshead tooth modifications...................................................................72 Figure 4-8: Crosshead with braces and quick disconnect couplings............................73 Figure 4-9: Crosshead before and after grinding..........................................................73 Figure 4-10: Cracking frame calibration setup...............................................................74 Figure 4-11: Quick disconnect modification..................................................................75 Figure 4-12: 1/16-in. temperature probe inserted in the Invar side bar..........................76 Figure 4-13: 4WFB strain gauge wiring diagram using four 90-degree rosettes...........77 Figure 4-14: 4WFB strain gauge circuit.........................................................................78 Figure 4-15: Load cell design.........................................................................................81 Figure 4-16: Cross section of thermally insulated formwork.........................................83 Figure 4-17: Formwork used in Munich.........................................................................84 Figure 4-18: Rigid cracking frame formwork under construction..................................84 Figure 4-19: Match-curing box.......................................................................................86 Figure 4-20: View inside the match-curing box.............................................................87 Figure 4-21: CR23X data-loggers...................................................................................88 Figure 4-22: Programmable circulator............................................................................90 Figure 5-1: Cracking frame side view..........................................................................92 Figure 5-2: Rigid cracking frame calibration setup......................................................95 Figure 5-3: Sample cracking frame calibration data.....................................................98 Figure 5-4: Caulking formwork and taping bottom crosshead braces........................100 xix Figure 5-5: Consolidating concrete in the cracking frame.........................................101 Figure 5-6: Notching plastic for crosshead braces......................................................102 Figure 5-7: Sealing the crosshead braces with silicone and foil tape.........................102 Figure 5-8: Cracking frame in operation....................................................................103 Figure 5-9: Specimen removal form the cracking frame............................................106 Figure 6-1: Temperature probe layout in the match-curing box.................................110 Figure 6-2: Concrete mixture notation........................................................................111 Figure 6-3: No. 67 siliceous river gravel gradation....................................................118 Figure 6-4: No. 67 crushed limestone gradation.........................................................118 Figure 6-5: Fine aggregate gradation..........................................................................119 Figure 7-1: Drying shrinkage results..........................................................................124 Figure 7-2: AU RCF: Effect of fresh concrete temperature on temperature development.............................................................................................128 Figure 7-3: AU RCF: Effect of fresh concrete temperature on stress development...128 Figure 7-4: Effect of fresh concrete temperature on splitting tensile strength...........130 Figure 7-5: Effect of fresh concrete temperature on compressive strength................131 Figure 7-6: Effect of fresh concrete temperature on modulus of elasticity................131 Figure 7-7: AU RCF: Effect of coarse aggregate type on temperature development.............................................................................................133 Figure 7-8: AU RCF: Effect of coarse aggregate type on stress development...........133 Figure 7-9: Effect of coarse aggregate type on splitting tensile strength...................136 Figure 7-10: Effect of coarse aggregate type on compressive strength........................136 Figure 7-11: Effect of coarse aggregate type on modulus of elasticity........................137 xx Figure 7-12: AU RCF: Effect of cementitious materials on temperature development.............................................................................................138 Figure 7-13: AU RCF: Effect of cementitious materials on stress development.........138 Figure 7-14: Effect of cementitious materials on splitting tensile strength..................141 Figure 7-15: Effect of cementitious materials on compressive strength......................141 Figure 7-16: Effect of cementitious materials on modulus of elasticity.......................142 Figure 7-17: RCF comparison: I-SRG-73 temperature development...........................143 Figure 7-18: RCF comparison: I-SRG-73 stress development.....................................143 Figure 8-1: Laboratory test setup................................................................................151 Figure A-1: Formwork preparation.............................................................................163 Figure A-2: Concrete placement..................................................................................164 Figure A-3: Vibration of fresh concrete......................................................................164 Figure A-4: Sealing the concrete specimen with plastic.............................................165 Figure A-5: Securing the crosshead braces with a torque wrench...............................165 Figure A-6: Sealing the crosshead braces with silicone..............................................166 Figure A-7: Rigid cracking frame................................................................................167 Figure A-8: Strain gauges mounted on the Invar side bars.........................................168 Figure A-9: Load cell and calibration linkage.............................................................168 Figure A-10: Insulated formwork with copper water lines...........................................169 Figure A-11: Drilling a hole to remove specimen form the crosshead..........................169 Figure A-12: Jacking the specimen out of the crosshead..............................................170 Figure A-13: Removal of residual concrete with a jackhammer...................................170 Figure A-14: Cleaning the crosshead with a steel brush...............................................171 xxi Figure A-15: Bottle jacks and steel rigs........................................................................171 Figure B-1: GER rigid cracking frame overview........................................................173 Figure B-2: GER crosshead components....................................................................174 Figure B-3: GER crosshead assembly details (part 1).................................................175 Figure B-4: GER crosshead assembly details (part 2).................................................176 Figure B-5: GER crosshead component: POS 1..........................................................177 Figure B-6: GER crosshead component: POS 2..........................................................177 Figure B-7: GER crosshead component: POS 3 and POS 4.......................................178 Figure B-8: GER crosshead component: POS 5..........................................................178 Figure B-9: GER crosshead component: POS 6..........................................................179 Figure B-10: GER crosshead component: POS 7..........................................................180 Figure B-11: GER crosshead component: POS 8..........................................................181 Figure B-12: GER crosshead component: POS 9..........................................................182 Figure B-13: GER crosshead component: POS 10........................................................183 Figure B-14: GER crosshead component: POS 11........................................................184 Figure B-15: AU crosshead assembly...........................................................................185 Figure B-16: AU crosshead component: Item A...........................................................186 Figure B-17: AU crosshead component: Item B...........................................................186 Figure B-18: AU crosshead component: Items C, D, E, and H.....................................187 Figure B-19: AU crosshead component: Items F and G...............................................188 Figure B-20: AU crosshead component: Item I (Lower Plate).....................................189 Figure B-21: AU crosshead component: Item J (Upper Plate)......................................190 Figure B-22: AU Invar side bars...................................................................................191 xxii Figure B-23: AU crosshead braces................................................................................192 Figure B-24: AU strain gauge protection sleeve...........................................................193 Figure B-25: Rigid insulation with copper tubing.........................................................194 Figure B-26: 24-gauge copper lining............................................................................194 Figure B-27: Upper and lower crosshead brace detail..................................................195 Figure B-28: Water inlet detail......................................................................................195 Figure B-29: Formwork installed in the rigid cracking frame......................................196 Figure C-1: Hydraulic jack and pump.........................................................................197 Figure C-2: Compression load cell..............................................................................198 Figure C-3: ?-in. DYWIDAG bar with anchor plates and nuts..................................198 Figure C-4: Plastic bushings........................................................................................199 Figure C-5: Rigid cracking frame and thermally insulated formwork........................199 Figure C-6: Computer and data-loggers......................................................................200 Figure C-7: Programmable circulator..........................................................................200 Figure C-8: Strain gauges attached to Invar side bars.................................................201 Figure C-9: Cracking frame supports..........................................................................201 Figure C-10: Lining formwork with plastic..................................................................202 Figure C-11: Caulking joints with silicone sealant.......................................................203 Figure C-12: Placing concrete in the formwork............................................................203 Figure C-13: Consolidating fresh concrete with a vibrator...........................................204 Figure C-14: Finishing concrete with a wooden trowel................................................204 Figure C-15: Sealing the concrete specimen with plastic and foil tape........................205 Figure C-16: Notching plastic for crosshead braces......................................................205 xxiii Figure C-17: Securing the crosshead braces with a torque wrench...............................206 Figure C-18: Sealing the crosshead braces with silicone and foil tape.........................206 Figure C-19: Inserting temperature probes....................................................................207 Figure C-20: Connecting strain gauges and instrumentation........................................207 Figure C-21: Connecting insulated flexible hoses.........................................................207 Figure C-22: Drilling a hole for a 1-in. threaded DYWIDAG bar................................208 Figure C-23: Inserting and anchoring DYWIDAG bar.................................................208 Figure C-24: Jacking the specimen out of the crossheads.............................................209 Figure C-25: Removal of residual concrete with a jackhammer...................................209 Figure C-26: 20-ton bottle jack and steel rig.................................................................210 Figure C-27: 1-in. DYWIDAG bar with anchor plates and nuts...................................210 Figure C-28: Concrete drill with masonry bit...............................................................211 Figure C-29: Jackhammer and chisel............................................................................211 Figure D-1: Match-curing box design: plan view........................................................212 Figure D-2: Match-curing box design: elevation view................................................213 Figure D-3: Copper sleeves wrapped with copper tubing and foil tape......................214 Figure D-4: Installing copper sleeves and copper tubing............................................214 Figure D-5: Match-curing box ready for insulation....................................................215 Figure D-6: Spraying foam insulation.........................................................................215 Figure D-7: Insulated match-curing box......................................................................216 Figure D-8: Match-curing box ready for testing..........................................................216 Figure D-9: Interior of match-curing box without cylinders.......................................217 Figure D-10: Interior of match-curing box with cylinders............................................217 xxiv Figure D-11: PVC ring for cylinder removal................................................................218 Figure E-1: Test setup form........................................................................................264 Figure E-2: Equipment setup form..............................................................................269 Figure E-3: RS232 communication settings form.......................................................276 Figure E-4: Transmission format settings form..........................................................286 Figure E-5: Auburn cracking frame form...................................................................290 Figure E-6: German cracking frame form...................................................................299 Figure E-7: Match curing box form............................................................................309 Figure F-1: RCF calibration instrumentation diagram................................................318 Figure F-2: Auburn RCF and match curing box instrumentation diagram.................324 Figure F-3: German RCF instrumentation diagram....................................................329 Figure G-1: RCF comparison: I-SRG-73 temperature development...........................331 Figure G-2: RCF comparison: I-SRG-73 stress development.....................................331 Figure G-3: RCF comparison: I-SRG-95 temperature development...........................333 Figure G-4: RCF comparison: I-SRG-95 stress development.....................................333 Figure G-5: RCF comparison: I-SRG-50 temperature development...........................335 Figure G-6: RCF comparison: I-SRG-50 stress development.....................................335 Figure G-7: RCF comparison: I-LS-73 temperature development..............................337 Figure G-8: RCF comparison: I-LS-73 stress development........................................337 Figure G-9: RCF comparison: III-SRG-73 temperature development........................339 Figure G-10: RCF comparison: III-SRG-73 stress development..................................339 Figure G-11: RCF comparison: IF-SRG-73 temperature development........................341 Figure G-12: RCF comparison: IF-SRG-73 stress development...................................341 xxv CHAPTER 1 INTRODUCTION Early-age cracking in concrete structures has been a well known phenomenon since the turn of the 20th century. In the early 1900?s engineers began documenting early-age cracking issues related to the heat of hydration in mass concrete members. The construction of the Hoover Dam from 1931 to 1935 forever changed mass concrete construction. Many of the techniques developed during the construction of the Hoover Dam are still used today; for example, investigations into different cement brands led to the use of low heat cement. The Hoover Dam was also the first recorded structure to use embedded cooling pipes to expedite the cooling time of the concrete (ACI 207.1R 1996). Concrete structures such as bridge piers, foundations, and dams can be defined as mass concrete elements. According to ACI 116R (2000) mass concrete is defined as ?any volume of concrete with dimensions large enough to require that measures be taken to cope with generation of heat from hydration of the cement and attendant volume change, to minimize cracking.? Since the above definition does not provide specific dimensions, many agencies have developed their own specifications. Although there are several different specifications, mass concrete is often considered to be any element with a least dimension of 3 ft or greater (Gajda and VanGeem 2002). The Texas Department of Transportation (TxDOT) defines mass placements as ?concrete placements with a least 1 dimension greater than or equal to 5 ft., or those designated as such on drawings? (TxDOT 2004). As young concrete matures, heat is produced by the hydration of the portland cement. As the heat of hydration slows, the temperature decreases as the concrete adjusts to the conditions at its surface. The cooling phase produces thermal gradients as the exterior of the concrete cools faster than the interior. The non-uniform temperature distribution throughout the concrete structure produces thermal strains. When these deformations are restrained, internal thermal stresses develop. Cracking initiates when the induced tensile stresses exceed the tensile strength of the hardening concrete. In an effort to reduce the potential risk of thermal cracking in mass concrete structures, restrictions are placed on the maximum allowable temperature difference between the core and the surface of the concrete. A specification requirement of 35?F has been adopted by six state Department of Transportation (DOT) agencies (Chini et al. 2003). The 35?F maximum temperature differential is based on gravel aggregate mixtures that exhibit a high coefficient of thermal expansion and a relatively low tensile strength (Bamforth and Price 1995). However, the use of mixtures with limestone course aggregate that has a much lower coefficient of thermal expansion may yield a larger acceptable temperature difference (Green, Carrasquillo, and McCullough 1987). A standardized allowable maximum temperature difference may be very restrictive for mixtures that exhibit a low coefficient of thermal expansion; therefore, when data is available the maximum allowable temperature difference to avoid cracking should be computed on an individual mixture basis (Bamforth and Price 1995). 2 In order to assess the cracking susceptibility of a concrete, all of the mechanisms driving early-age cracking must be thoroughly investigated. Although thermal effects are a major mechanism contributing to the early-age cracking phenomenon, there are other mechanisms that are just as important. Both autogenous and drying shrinkage are mechanisms that can contribute to the development of stresses during early ages in restrained concrete members. 1.1 PROBLEM STATEMENT Early-age cracking problems are common in a wide variety of concrete structures, ranging from bridge decks and piers to pavements used for highways and airport runways. Figure 1-1 shows early-age cracking in a concrete bridge pier in Houston, Texas. Figure 1-1: Mass concrete cracking in the IH 45/BW 8 interchange, Houston TX (Courtesy of J.C. Liu, TxDOT) 3 The Federal Highway Administration (FHWA) conducted an internet survey and found that early-age cracking problems are encountered throughout the United States (FHWA 2005). Twenty-three state Department of Transportation (DOT) agencies responding to the survey reported early-age cracking problems in concrete bridges. NCHRP Report 380 estimates that more than 100,000 bridges in the US suffer from problems related to early-age cracking (Krauss and Rogalla 1996). Although early-age cracking is a growing dilemma, advanced investigations into this issue have just recently begun in the US. 1.2 RESEARCH SIGNIFICANCE This project has introduced the use of temperature-controlled, rigid cracking frames that have been developed in Germany (developed by Dr. Springenschmid) to measure and quantify the risk of early-age cracking. The use of these frames will enhance understanding of the factors that affect early-age cracking and their interaction. The rigid cracking frames may provide the means to quantify the cracking potential of concrete mixtures, which can provide engineers with options to minimize the risk of early-age cracking. This project will facilitate the transfer of technology from Europe to the United States in order to help control a prevailing problem in the concrete industry. 1.3 RESEARCH OBJECTIVES The primary objective of this project is to evaluate the effectiveness of the rigid cracking as a method to assess the development of restraint stresses and cracking tendency of concrete mixtures. Secondary objectives include evaluating the effects of fresh concrete 4 temperature, aggregate type, and cementitious material type on the thermal cracking tendency of early-age concrete as well as evaluating the behavior of two rigid cracking frames: one manufactured in Munich, Germany and one manufactured near Opelika, Alabama, USA. 1.4 RESEARCH SCOPE Chapter 2 provides a thorough discussion of the early-age cracking phenomenon. The discussion includes early-age cracking mechanisms, methods used to assess early-age restrained stresses in concrete, and mitigation measures used to minimize early-age cracking in concrete structures. Chapter 3 documents a visit to the Technical University of Munich (TUM). While at TUM the research team visited with Dr. Rupert Springenschmid and several of his colleagues to learn about all the nuances involved with reliably assessing the cracking tendency of concrete at early ages. Chapter 4 provides a detailed discussion of the laboratory testing equipment. The discussion focuses on the rigid cracking frame including instrumentation and construction of the thermally insulated formwork. A discussion of the match-curing box is also included. Chapter 5 outlines the steps required to successfully execute a cracking frame test, including assembly and calibration of the cracking frame. A discussion of the data acquisition system is presented; related computer and data-logger programs are given in the Appendix E and Appendix F respectively. 5 Chapter 6 documents the rigid cracking frame testing program developed at Auburn University, including detailed discussions of the laboratory testing procedures and materials. Chapter 7 contains all of the results obtained from the laboratory testing program. The data obtained from the rigid cracking frame is analyzed to determine what factors influence the cracking sensitivity of a concrete mixture. Chapter 8 offers conclusions based on the work documented in this thesis. Finally, recommendations are provided. Appendix A contains additional pictures from the rigid cracking frame scanning trip to the Technical University of Munich discussed in Chapter 3. Appendix B documents additional details of the rigid cracking frame. Design drawings of both frames are presented along with pictures taken during construction of the thermally insulated formwork. Appendix C provides additional pictures of the rigid cracking frame testing procedure described in Chapter 5. Appendix D offers additional design drawings as well as pictures of the construction phase of the match-curing box. Appendix E documents the computer program written to run a rigid cracking frame test. A detail discussion of the program is given along with the Microsoft? Visual Basic 6.0 computer code. Appendix F documents the Campbell Scientific CR23X data-logger programs used for data acquisition. The program used to calibrate the cracking frame as well as the 6 programs used for data acquisition during a cracking frame test are presented. An instrumentation diagram is also presented with each data-logger program. Appendix G presents additional data obtained from comparative testing of the rigid cracking frames. A temperature and stress comparison is provided for each mixture. 7 CHAPTER 2 RESTRAINT STRESSES AND EARLY-AGE CRACKING Early-age cracking of concrete structures is caused by restraint stresses that form when shrinkage deformations caused by drying, autogenous, and thermal mechanisms are suppressed. Cracking initiates when the restraint stresses exceed the tensile strength of the hardening concrete. The mechanisms driving early-age cracking are influenced by many variables that are very complex. Furthermore, many of these variables have intricate interactions that are not well understood. In order to understand how restraint stresses influence the cracking sensitivity of a concrete, the mechanisms generating restraint stresses must be thoroughly examined. 2.1 EARLY-AGE CRACKING MECHANISMS For many years thermal effects and drying shrinkage were the two primary mechanisms causing early-age cracking. However, the recent development of high-strength concretes (with low water-to-cementitious materials ratio) has introduced a new mechanism ? autogenous shrinkage. Early-age restraint stresses arise when deformations produced by these mechanisms are restrained. To exemplify the effects of the mechanisms mentioned above, refer to the newly cast concrete element shown in Figure 2-1a. A typical early-age thermal profile of the element 8 is presented in Figure 2-1b. As the concrete hydrates the temperature rises due to the heat released by the chemical reaction of the cement and water. As hydration slows, the temperature falls as the concrete adjusts to the temperature of the surrounding environment. If the element was unrestrained, strains similar to the ?Temperature Strain? shown in Figure 2-1c would be produced. The total strain of the element is the sum of the temperature strain and the shrinkage strain. The temperature-induced strain is produced by the thermal history of the element while the shrinkage strain is a combination of autogenous and drying shrinkage. ? a) Temp er at u r e Str e ss Time c) Time d) Time b) Shrinkage Strain Temperature Strain Total Strain te n s ion co m p . Str a in co n t r a ctio n el on gat i on cracking * Temp er at u r e Str e ss te n s ion co m p . Str a in co n t r a ctio n el on gat i on Figure 2-1: Generalized early-age temperature, strain, and stress development in a concrete element (based on Larson 2000) 9 The total unrestrained strain is presented mathematically in Equation 2-1 (Burrows 1998): DRYINGAUTOGENOUSTHERMALTOTAL ???? ++= Equation 2-1 where, ? TOTAL = total unrestrained strain, ? THERMAL = thermal strain, ? AUTOGENOUS = autogenous strain, and ? DRYING = drying shrinkage strain. The strains produced by thermal effects, autogenous shrinkage, and drying shrinkage do not necessarily cause stress; however when these strains are suppressed, restraint stresses similar to those in Figure 2-1d develop. Early-age cracking initiates when the induced tensile stresses exceed the tensile strength of the hardening concrete. 2.1.1 THERMAL EFFECTS As with any material, concrete expands when heated and contracts when cooled. If these deformations are restrained, an increase in temperature produces compressive stresses while a decrease in temperature produces tensile stresses. To illustrate the development of early-age thermal stresses and their dependence on mechanical properties, consider the concrete element in Figure 2-2. The element is fully restrained in a uniaxial stress state. During the hydration phase, the hardening concrete generates a considerable amount of heat similar to the temperature profile in Figure 2-2a. The amount of heat generation is determined by the amount and type of cement, the water-to-cementitious material ratio, 10 the fresh concrete placement temperature, and the size of the structural element. During this phase, the rapid stiffness gain of the concrete coupled with an increasing temperature produce compressive stresses; however, the high relaxation of the young concrete mitigates these stresses (Emborg 1989). As the acceleration of the hydration reaction subsides, the heat development slows and the warm concrete starts cooling, adjusting to the surrounding air temperature. The rate of cooling is determined by the size of the structural element and its heat exchange with the environment. As Figure 2-2b shows, the cooling phase generates tensile stresses that may cause cracking if the restraint stresses exceed the tensile strength of the concrete. Temper atu r e Time Time S t r e ngt h/ St r e s s Tensile Strength Stress at 100% Restraint Stress at Partial Restraint Possible Crack T AVERAGE a) b) Temper atu r e S t r e ngt h/ St r e s s Figure 2-2: Example of the temperature, stress, and strength development in a hardening concrete element under restraint (Nilsson 2003) 11 The magnitude of thermal stress development depends on the amount of temperature change as well as several other factors, namely the coefficient of thermal expansion, the creep-adjusted modulus of elasticity, and the restraint conditions (Bamforth and Price 1995). These factors are represented mathematically in Equation 2-2: ( ) ( ) rcrTHERMAL KtEtT ????=? ?? Equation 2-2 where, ?? THERMAL = change in concrete stress (psi), ?T = change in concrete temperature (?F), ?(t) = coefficient of thermal expansion of the concrete at time t (in/in/?F), E cr (t) = creep-adjusted modulus of elasticity at time t (psi), and K r = restraint factor (unitless). The coefficient of thermal expansion and the creep-adjusted modulus of elasticity are time dependent. In order to accurately compute thermal stresses, comprehension of the complex interactions of these variables is of utmost importance. 2.1.1.1 Coefficient of Thermal Expansion The coefficient of thermal expansion (CTE) is a means to quantify deformations caused by thermal changes. Table 2-1 shows the affect of CTE on the maximum allowable temperature difference required to avoid cracking; the lower the concrete CTE, the higher the allowable temperature difference to avoid cracking. The limiting temperature difference is computed by Equation 2-3 developed by Bamforth and Price (1995): 12 RK T c tsc ?? =? ? ? Equation 2-3 where, ?T = temperature change in the concrete (?C), ? tsc = tensile strain capacity of the concrete under short term loading (m/m), K = modification factor that takes into account sustained loading and creep (unitless), ? c = CTE of the concrete (m/m/?C), and R = restraint factor (unitless). The limiting temperature differential values computed in Table 2-1 are based on an assumed creep factor (K) of 0.80 and a restraint factor (R) of 0.36. The coefficient of thermal expansion and tensile strain capacity are typical values based on the type of coarse aggregate used in the concrete (Bamforth and Price 1995). In Table 2-1 one can observe that Bamforth and Price (1995) associated a limiting temperature differential of 20?C (36?F) with a gravel aggregate type and a restraint factor of 0.36. Note that Bamforth and Price (1995) recommend a limiting temperature differential of 39?C (70?F) when a limestone aggregate type is used with a restraint factor of 0.36. 13 Table 2-1: Maximum allowable temperature difference to avoid cracking (Bamforth and Price 1995) In order to calculate early-age thermal restraint stresses, it is necessary to know the development of the CTE of the hardening concrete. The CTE of hardening concrete is highly affected by numerous factors including the age of the concrete, the type of aggregate used in the mixture, the water-to-cement ratio, the volume, type, and fineness of cement, the moisture content, and the temperature fluctuations (Emanuel and Hulsey 1977). As depicted in Figure 2-3 and Figure 2-4, the CTE changes substantially during the hydration phase; therefore, it is unreasonable to rely on a constant CTE value computed for hardened concrete. Failure to account for the variation in CTE at early ages may result in an underestimation of the magnitude of thermal stress development. The variation in CTE of hardening concrete is caused by the presence of water that has not been consumed by the chemical reaction with the cementitious materials (Kada et al. 2002). Water has a very high CTE (200 x 10 -6 in/in/?C) compared to the other 14 constituents in the concrete mixture (5?14 x 10 -6 in/in/?C); therefore young, saturated concrete has a much higher CTE than drier mature concrete (Bj?ntegaard 1999). Kada et al. (2002) found that that during the setting phase the CTE varies and then stabilizes during the hardened phase (Figure 2-3). Kada et al. (2002) state that ?the CTE at the beginning of setting should be estimated at three to four times that of hardened concrete and decrease until the end of setting to remain constant thereafter.? Figure 2-3: Evolution of the CTE of hardening concrete (Kada et al. 2002) Bj?ntegaard (1999), on the other hand, discovered an increasing CTE trend after setting. Figure 2-4 shows the rapid drop and subsequent increase in CTE. The various labels in Figure 2-4 represent mixtures subjected to different curing temperature regimens. Bj?ntegaard (1999) states that the rate of CTE increase is determined by the temperature history of the concrete. 15 Figure 2-4: Calculated thermal dilation coefficients (TDC) of concrete (Bj?ntegaard 1999) Studies have also found that the CTE is a function of the moisture content of the concrete (Emanuel and Hulsey 1977). Figure 2-5 shows the variation in CTE with moisture content for young cement paste specimens (less than six months old) with water-to-cement ratios ranging from 0.12 to 0.40. As shown in Figure 2-5, the CTE is maximized in the range of 60%?80% moisture content and minimized at 100% moisture content. The CTE of oven-dry specimens (0% moisture content) is slightly higher than the saturated case. 16 Figure 2-5: Variation of CTE with moisture content (Emanuel and Hulsey 1977) 2.1.1.2 Early-age Nonlinear Creep Behavior If a restrained linear-elastic material is exposed to a temperature increase ?T, compressive stresses are produced. However, if the material is restored to its original temperature (i.e. decrease the temperature by ?T), the compressive stresses are recovered and the material returns back to its original stress state. Concrete however?especially young concrete?is far from being a linear-elastic material; therefore a thermal change ?T produces a thermal stress that cannot be balanced by an equal and opposite thermal change ?T (Breitenb?cher 1990). Knowledge of the early-age nonlinear creep behavior is of paramount importance when determining restraint stresses in concrete at early ages (Westman 1999). In order to illustrate the nonlinear creep behavior of hardening concrete subjected to a loading, refer to the generalized deformation curve of an unrestrained concrete element presented in Figure 2-6. When hardening concrete is loaded it will instantaneously 17 deform. This instantaneous deformation is elastic and can be calculated based on the modulus of elasticity of the hardening concrete at the instant the load is applied. If the applied load is kept constant for a period of time, the hardening concrete will continue to deform. This continued deformation under sustained loading is referred to as creep. When the load is removed, an instantaneous elastic deformation occurs. Over time a portion of the creep deformation will be recovered. This delayed elastic recovery is referred to as creep recovery. The net effect after loading and unloading is an irrecoverable deformation. One must account for this nonlinear creep behavior as it will determine the amount of residual thermal stress that a member is subjected to. Irrecoverable Deformation Recoverable Deformation Time Applied Stress L o ng i t u d i na l S t r a i n Time Elastic Delayed Elastic Viscous Flow Plastic Flow ? Delayed Elastic Elastic Loading Unloading Applied Stress L o ng i t u d i na l S t r a i n Figure 2-6: Generalized deformation behavior of hardening concrete (Emborg 1989) The factors that influence creep can be divided into two categories: internal and external. The internal factors depend on the concrete constituents, cement type, water-to- cement ratio, etc. According to Byfors (1980), the most important exterior factors are 18 duration of loading, moisture content, temperature, intensity and type of load, age of concrete at loading, and the variation of relative humidity and temperature. The effects of these factors on creep are presented in Figure 2-7. Figure 2-7: Factors influencing creep (Larson 2000) Creep models have been discussed by many authors (Ba?ant and Chern 1985a; Ba?ant and Chern 1985b; Ba?ant and Osman 1976); however, discussions of how creep influences early-age self-induced stresses are rarely presented. Most current early-age creep models are modifications of prior models derived for long-term creep (Emborg 1989; Westman 1999); however, there are models specifically derived for early-age behavior (Larson 2003). These models are complicated to use due to the numerous parameters (up to 15 in some circumstances) necessary to account for the behavior at early ages. 19 2.1.1.3 Restraint Conditions A restraint factor (K r in Equation 2-2 and R in Equation 2-3) is commonly used to describe the level of restraint provided by the internal and external conditions of a concrete element. The restraint factor is defined as a percentage of full restraint; 100% restraint indicates that all deformations are suppressed while 0% restraint indicates free movement. Thermal stresses can be interpreted as the sum of two individual stress components. The first stress component arises due to the internal restraint conditions within the concrete itself. These stresses result from the non-uniform temperature distribution within the concrete section. During the cooling phase, the surface dissipates heat faster than the core, creating temperature gradients within the concrete. These thermal gradients produce differential thermal strains that may induce cracking if they exceed the available tensile strain capacity of the hardening concrete (McCraven 2001). The other stress component arises from the external restraint conditions surrounding the concrete element. External thermal restraint stresses are produced when the expansion and/or contraction of a concrete element is obstructed. Examples of external restraint include but are not limited to adjacent structures, foundations, and subsoil. The degree of external restraint depends primarily on the relative dimensions, strength, and modulus of elasticity of the concrete as well as the surrounding restraining material. As shown in Figure 2-8, the distribution of restraint varies throughout the height of a member. The degree of restraint varies with the length-to-height ratio of the member; the larger the ratio, the larger the degree of restraint. 20 Figure 2-8: Distribution of restraint (ACI 207.2R 1995) 2.1.2 AUTOGENOUS SHRINKAGE In the 1930?s autogenous shrinkage was first described as a mechanism contributing to early-age restraint stresses in concretes with very low water-to-cement ratios far beyond the practical limits of that time (Lynam 1934). However, in this new age of concrete technology, concretes with very low water-to-cement ratios are frequently used. Current research has indicated that early-age deformations produced by autogenous shrinkage can cause significant strains in concretes with a water-to-cement ratio below 0.45 (see Figure 2-9) (Bj?ntegaard 1999; Holt and Leivo 2004). With an increasing demand for high 21 strength and high performance concrete with water-to-cement ratios well below 0.45, autogenous shrinkage is a growing problem. Figure 2-9: Early-age autogenous shrinkage of mortars with different water-to-cement ratios (Holt and Leivo 2004) Autogenous shrinkage is defined as the external volume change occurring, after thermal effects have been corrected, with no moisture transfer to the surrounding environment (Holt 2004). Autogenous shrinkage should not be confused with chemical shrinkage; chemical shrinkage is an internal volume reduction while autogenous shrinkage is an external volume change (Holt and Leivo 2004). Chemical shrinkage is the underlying driving force to the occurrence of autogenous shrinkage (Bj?ntegaard 1999). It has been well documented that autogenous shrinkage occurs in all three phases of early-age concrete: the liquid phase, the viscoelastic phase, and the hardened phase (Bj?ntegaard 1999; Holt and Leivo 2004). During the initial liquid phase, autogenous shrinkage is equivalent to chemical shrinkage. As the concrete begins to stiffen, chemical 22 shrinkage deformations are resisted, and tensile stresses are produced. During this viscoelastic phase, contraction forces are also produced by capillary pressures. Stresses develop as water is pulled from small pores to larger capillary pores. Once the concrete has reached the hardened phase, autogenous shrinkage results from self-desiccation. Self- desiccation is localized drying resulting from a falling relative humidity in the concrete?s internal pores. As the concrete hardens, the cement consumes the water in the capillary pores, decreasing the internal relative humidity of the concrete (Holt and Leivo 2004). 2.1.3 DRYING SHRINKAGE Drying shrinkage results when water is lost from the concrete. The rate of water loss in unsealed concrete surfaces is highly dependent on environmental factors such as wind, relative humidity, and ambient temperature, all of which affect the evaporation rate. If proper construction practices are followed, early-age drying shrinkage deformations can be reduced to a negligible value. Furthermore, in medium-to-large-sized concrete members, where early-age restrained stresses are of utmost importance, drying shrinkage stresses are minute compared to the stresses caused by thermal and autogenous shrinkage. However, in structural elements such as bridge decks and pavements, good curing practices are essential to minimize the strains caused by drying shrinkage. 2.2 METHODS FOR MEASUREMENT OF RESTRAINT STRESSES AND CRACKING TENDENCY The quantification of the mechanisms discussed in the previous section is quite complicated at early-ages. The complex interactions of these mechanisms make 23 accurately predicting cracking tendencies very difficult. Furthermore, since restraint stresses are caused by the restraint of deformations, it is impractical to attempt to determine in-place restraint stresses by measuring deformations. If deformations are measured, they are not restrained; therefore they cannot result in restraint stresses (Breitenb?cher 1990). These issues fostered the development of comparative laboratory tests to directly measure restraint stresses and cracking tendency of various concrete mixtures. 2.2.1 CONCRETE RING TEST The ring test was one of the first tests used to investigate the cracking tendency of cement pastes and mortars. Developed in France, the original ring was composed of a rigid steel core that was later replaced by a thick-walled hollow steel cylinder. The hollow steel ring restrains a concrete specimen from contracting, providing approximately 70 percent restraint against shrinkage-induced deformations (Mangold 1998). ASTM C1581 (2004) has adopted a standard method for testing cracking tendency of concrete using a steel ring. The standard test method specifies a steel ring with a wall thickness of ?-in., an outside diameter of 13-in., and a height of 6-in. as shown in Figure 2-10. A 1?-in. concrete specimen is cast around the steel ring core. In order to detect cracking, the steel ring is instrumented with strain gauges that are used to measure the compressive strain of the steel ring. An abrupt loss of compressive strain indicates that the specimen has cracked. 24 Figure 2-10: ASTM steel ring test apparatus (ASTM C1581 2004) AASHTO Test PP34-99 (1999) has proposed a standard method for testing cracking tendency of concrete using a steel ring. The proposed test method specifies a standard steel ring with a wall thickness of ?-in., an outside diameter of 12-in., and a height of 6- in. as shown in Figure 2-11. A 3-in. thick concrete specimen is cast around the steel ring core that is instrumented with strain gauges that are used to measure the compressive strain of the steel ring. Cracking is detected by an abrupt loss of compressive strain in the steel ring. 25 Figure 2-11: AASHTO steel ring test apparatus (Krauss and Rogalla 1996) Due to the small cross section and lack of thermal insulation in a ring test, hydration heat is quickly dissipated, thus eliminating any restraint stresses produced by thermal effects. A ring test can be a useful tool in determining the cracking tendency of concrete mixtures due to autogenous and/or drying shrinkage, but its application is limited since thermal effects cannot be investigated. Furthermore, the stress state that develops in the ring test is quite complex, and the measured stresses are difficult to interpret and use for calibration of mechanistic models. 26 2.2.2 RESTRAINED PRISM TESTS The prism test was developed as a means to directly measure the stress response of young concrete due to restrained thermal and autogenous deformations. In order to properly investigate the effects of thermal and autogenous shrinkage with a prism test, drying shrinkage of the specimen must be prevented. This is often accomplished by sealing the fresh concrete with polyethylene sheeting and foil tape immediately after placement. The foremost advantage of a prism test is the ability to measure restraint stresses continuously from placement, including early-age expansion, until cracking (Mangold 1998). The first test setup capable of measuring restraint stresses was developed by Dr. Rupert Springenschmid at the Technical University of Munich (TUM). Dr. Springenschmid has spent more than 30 years developing cracking tests, and is considered an international authority on thermal cracking testing. Dr. Springenschmid has developed two testing frames to assess restraint stresses in early-age concrete: the rigid cracking frame (RCF) and the temperature-stress testing (TST) machine. The rigid cracking frame provides a high?but not complete?level of restraint while the TST machine is capable of providing complete restraint. 2.2.2.1 Rigid Cracking Frame The rigid cracking frame shown in Figure 2-12 is composed of two mild-steel crossheads connected by two rigid Invar side bars. In order for the rigid side bars to provide the proper restraint, it is critical that the concrete specimen be fixed at both ends. This is accomplished by placing the fresh concrete directly into the dovetails in each crosshead. The dovetails contain teeth that grip the concrete specimen. To ensure that the test 27 specimen does not slip in the dovetails, crossbars are bolted on the top and bottom of each crosshead. The crossbars prevent the dovetails from opening during the tensile phase of a test, reducing any slippage deformations to a negligible value (Mangold 1998). SPECIMEN STRAIN GAUGES INVAR SIDE BAR INSULATED FORMWORK CROSSHEAD CROSSHEAD BRACE Figure 2-12: Rigid Cracking Frame developed at TUM (based on Mangold 1998) In order to minimize the effect a change in temperature would have on the length change of the restraining side bars, Invar steel is used. Invar has a very low coefficient of thermal expansion, ? = 1.0 x 10 -6 /?C, compared to mild steel, ? = 12 x 10 -6 /?C. Each bar is equipped with strain gauges capable of measuring the very small axial strains produced by the combined effects of thermal and autogenous shrinkage (Breitenb?cher 1990). In the central portion of the beam specimen, the stresses are uni-axial; therefore a uniform stress distribution may be assumed. By assuming a uniform stress distribution, 28 the measured strains in the Invar side bars can be used to compute the corresponding stress development in the restrained concrete specimen (Mangold 1998). To control the temperature of the test specimen, the cracking frame is equipped with thermally insulated formwork. The formwork is designed to insulate the test specimen, producing a heat of hydration approximately equal to that of a concrete element 50-cm thick (Breitenb?cher 1990). Not only does the formwork provide a means to control the concrete temperature, it also allows restraint measurements to begin immediately after the fresh concrete has been placed. The cracking frame provides 100% restraint for fresh concrete and approximately 80% restraint for hardened concrete (Mangold 1998). Due to the inability to easily change the amount of restraint provided by the rigid cracking frame, Mangold (1994) has developed a model to compute the stress response at various restraint levels based on the stress response measured in the rigid cracking frame. In this model, the cracking frame is modeled as an elastic spring that is firmly attached to the concrete test specimen as shown in Figure 2-13. P E bar A bar l half-bar P 2 l half-bar RCF E bar A bar Figure 2-13: Mechanical model of the RCF (based on Mangold 1994) 29 It has been reported that the stress responses computed with the model correlate very well with results obtained from the TST machine (Springenschmid, Breitenb?cher, and Mangold 1994). Therefore, if need be, the results from the rigid cracking frame may be used to determine behavior at different restraint levels. 2.2.2.2 Temperature-Stress Testing Machine The temperature-stress testing (TST) machine shown in Figure 2-14 was developed in the early 1980s at TUM to measure early-age stress development in concrete under fully restrained conditions (Springenschmid, Gierlinger, and Kiernozycki 1985). Figure 2-14: Temperature-stress testing machine developed at TUM (Mangold 1998) The TST machine achieves 100% restraint by compensating any length change in the specimen by adjusting a movable crosshead with a computer-controlled, closed-loop, step-motor system. The degree of restraint can be reduced by adjusting the amount of length change compensation with the step motor. As soon as the deformation of the 30 concrete specimen exceeds 0.001 mm, the movable crosshead is adjusted to restore the total deformation back to zero. Since the length change of the concrete specimen must be continuously corrected, it is crucial that the deformation of the specimen be measured with a precision of 0.1 ?m (0.0001 mm). In order to precisely measure the length change, highly sensitive deformation transducers are used to continually monitor the distance between two steel bars embedded in the concrete test specimen (Mangold 1998). The stresses that develop in the hardening concrete are directly measured by a load cell positioned between the moveable crosshead and the step motor. The formwork for the TST is very similar to that used for the rigid cracking frame producing a heat of hydration approximately equal to that of a concrete element 50 cm thick; however, it may be used to achieve any temperature profile within the concrete test specimen (Mangold 1998). 2.2.3 SUMMARY OF TEST METHODS A device such as the TST machine that can provide complete restraint against deformations caused by the combined effects of thermal and autogenous shrinkage can be very useful; however, full restraint is very unlikely to be encountered in most common cases. Although the degree of restraint depends on each specific situation, it can be assumed that for most practical engineering applications the restraint is approximately 80% (Mangold 1998). Therefore, the rigid cracking frame may be employed to adequately reproduce in-place restraint stresses in the laboratory. 31 2.3 BEHAVIOR OF RESTRAINED SPECIMENS IN THE RIGID CRACKING FRAME Figure 2-15 displays five stages that Breitenb?cher (1990) used to describe the behavior of concrete in the rigid cracking frame. Stage I occurs immediately after placement of the concrete during which the temperature of the fresh concrete remains constant. Stage II begins with the onset of hydration and the corresponding heat development. During this stage, the concrete behaves plastically; therefore, no compressive stresses are produced. Stage III begins once the concrete specimen has achieved final setting. The concrete begins to gain strength and compressive stresses are developed due to the increased temperature associated with the continued hydration of the concrete. The relatively high relaxation of the young concrete produces a maximum compressive stress that occurs a few hours before the concrete reaches its maximum temperature. During Stage IV the concrete temperature begins to fall, and the remaining compressive stresses are rapidly reduced. The rapid reduction of compressive stresses is a result of an increased modulus of elasticity as well as the high relaxation of the young concrete. The specimen then reverts back to a stress-free state at a temperature well above the fresh concrete placement temperature and only a few degrees below the maximum. The concrete temperature corresponding to the stress-free state is referred to as the zero-stress temperature (T zs ). In Stage V, the concrete temperature continues to decrease, producing tensile stresses. An increased modulus of elasticity and an increasingly smaller relaxation produce large tensile stresses. Finally cracking occurs when the tensile stresses exceed the tensile strength of the concrete. The temperature of the concrete when cracking transpires is referred to as the cracking temperature (T cr ). 32 T cr Time Time T zs T concrete Tem p er atu r e Str e ss - ? + ? III III IV VStage Tem p er atu r e Str e ss - ? + ? Figure 2-15: Behavior of restrained specimens in the RCF (Breitenb?cher 1990) 2.4 METHODS TO QUANTIFY FACTORS INFLUENCING THERMAL CRACKING SENSITIVITY In order to quantify the various factors influencing the cracking tendency of concrete mixtures, an extensive rigid cracking frame testing program was undertaken at TUM. Over 500 cracking frame tests investigating the materials and design of concrete mixtures have been conducted (Springenschmid, Breitenb?cher, and Mangold 1994). The assessment of the cracking sensitivity of a concrete mixture was determined from the cracking temperature obtained from the rigid cracking frame. The cracking temperature is a global indicator of all the factors influencing the cracking sensitivity of a concrete mixture under restrained conditions; low cracking temperatures are an indicator of a low risk of cracking (Springenschmid and Breitenb?cher 1998). 33 2.4.1 FRESH CONCRETE TEMPERATURE The cracking susceptibility of a concrete mixture is highly sensitive to the temperature of the fresh concrete. Figure 2-16 shows the effects of fresh concrete temperature on the cracking sensitivity; as expected, lowering the fresh concrete temperature lowers the cracking temperature. These tests were conducted in a room with a temperature that matched the placement temperature. Springenschmid and Breitenb?cher (1994) found that lowering the fresh concrete temperature from 25 to 12?C decreased the cracking temperature by 12 to 19?C. This vast reduction in the cracking temperature can be attributed to a smaller temperature increase during the hydration phase as well as an increase of the tensile strength of the hardening concrete (Springenschmid and Breitenb?cher 1998). Figure 2-16: Influence of fresh concrete temperature on cracking sensitivity (Springenschmid and Breitenb?cher 1998) 34 Low placement temperatures reduce the heat of hydration, thereby reducing the zero- stress temperature. Lowering the zero-stress temperature alleviates thermal deformations generated during the cooling phase, in turn reducing tensile stresses (Breitenb?cher and Mangold 1994). Springenschmid and Breitenb?cher (1998) state that as a general rule increasing the fresh concrete temperature by 10?C will increase the cracking temperature by 13 to 15?C. The increased tensile strength of the hardening concrete can be explained by the bonds formed between the hydration products (Springenschmid and Breitenb?cher 1998). At low curing temperatures, the bond formed between the calcium silicate hydrate (C-S- H) is stronger than the bond formed at higher temperatures, thus resulting in an increase in tensile strength (Verbeck and Helmuth 1968). 2.4.2 CONCRETE CONSTITUENTS In order to assess the cracking susceptibility of a concrete mixture, the various constituents used to produce that concrete must be investigated on an individual basis. To achieve this, Dr. Springenschmid employed an approach that used a standardized concrete mixture. Based on experience, RILEM Technical Committee 119 (1998) has specified an appropriate mix composition to use for a standard: ? Maximum Aggregate Size: 32 mm ? (1.25 in.) ? Cement Content*: 340 kg/m 3 ? (573 lb/yd 3 ) ? Water Content: 162 kg/m 3 ? (273 lb/yd 3 ) * note: the cement content has to be appropriately reduced when pozzolanic admixtures are used. 35 2.4.2.1 Aggregates Aggregates, especially coarse aggregates, used in a concrete mixture have a substantial affect on the cracking tendency. In order to determine an appropriate coarse aggregate to use, consideration must be given to the coefficient of thermal expansion (CTE) as well as the aggregate roughness and size. Thermal deformations can be drastically reduced by using aggregates with a low CTE. Breitenb?cher and Mangold (1994) report that concretes composed of quartzite aggregates, which have a CTE 50% higher than limestone, generated approximately 50% higher stresses in the rigid cracking frame. Although the concretes tested had almost identical temperature profiles, those produced with quartzite aggregates had a cracking temperature 6 to 9?C higher than those produced with limestone aggregates (Breitenb?cher and Mangold 1994). Crushed aggregates with a rough surface are usually advantageous because the tensile strength of the concrete is increased. Furthermore, the use of larger aggregates tends to reduce the cracking susceptibility of a concrete mixture. The use of larger aggregates reduce the amount of cement paste necessary for sufficient workability; lowering the amount of cement paste results in a lower heat of hydration. However, larger coarse aggregates tend to reduce the tensile strength of the concrete (Springenschmid and Breitenb?cher 1998). 2.4.2.2 Cement Types and Sources As shown in Figure 2-17, portland cements obtained from different plants displayed very different cracking sensitivities in the rigid cracking frame. The cements were all the same specification type; however each had different chemical compositions and/or fineness 36 (Springenschmid and Breitenb?cher 1998). Tests on 17 concretes made with cements acquired from different plants yielded cracking temperatures ranging from 6 to 22?C. Although the temperature profiles of these concretes were different, the large range of cracking temperatures can only be partly attributed to the various temperature histories (Breitenb?cher and Mangold 1994). Figure 2-17: Influence of cement content and cement sources on cracking sensitivity (Breitenb?cher and Mangold 1994) 37 Isothermal tests performed on the different cements revealed varying magnitudes of additional non-thermally induced deformations and restraint stresses. The favorable cements showed a slight swelling due to expansion created by ettringite formation, while other cements exhibited high restraint stresses due to autogenous shrinkage. Springenschmid and Breitenb?cher (1998) found that portland cements with a low alkali content (K 2 O, Na 2 O), a high sulfate content in relation to the C 3 A content, and that are not too fine lead to low cracking temperatures. In view of these results, it could be expected that higher sulfate contents (i.e. additional adding of gypsum) could decrease the cracking temperature; however, this is true only for cements with a low alkali content. In high-alkali cements, increased sulfate content does not improve the cracking sensitivity (Breitenb?cher and Mangold 1994). 2.4.2.3 Cement Content and Use of Fly Ash Figure 2-17 also shows the effects of cement content and fly ash on the cracking temperature. In the normal range of water-to-cement ratios (0.4 ? w/c ? 0.7) the cracking temperatures decrease as the cement content decreases. Breitenb?cher and Mangold (1994) found that once the water-to-cement ratio exceeds 0.7, the tensile strength of the concrete lowers, resulting in increased cracking temperatures. In order to maintain sufficient workability, Breitenb?cher and Mangold (1994) added fly ash when the cement content of the concrete was lower than 340 kg/m 3 . Breitenb?cher and Mangold (1994) state that during the testing period, i.e. the first 4 to 5 days, the fly ash itself does not significantly influence the cracking tendency of the 38 concrete and can be considered as inert material. As shown in Figure 2-16, the addition of fly ash as replacement of portland cement efficiently reduces the cracking temperature. 2.4.2.4 Slag Slag cements are normally used as low-heat cements for mass concrete applications because they are very effective in reducing the rate of heat development in the concrete (Breitenb?cher 1990). However, in some concretes with slag cements, a higher cracking temperature was found than in concretes using ordinary portland cement from a plant with the same clinker (Springenschmid, Breitenb?cher, and Kussman 1987). The increased cracking temperatures are related to the slow strength development of the slag concrete. Although slag cements are effective in reducing thermal deformations, the benefits are offset by the lack of tensile strength at early ages (Thomas and Mukherjee 1994). 2.4.2.5 Expansive Additives Perhaps the most effective means to substantially reduce the cracking temperature is to develop high compressive (pre-) stresses that will offset tensile stresses caused by thermal and autogenous shrinkage as shown in Figure 2-18. This pre-compression can be obtained through the proper use of additives that expand during hydration due to the formation of ettringite. Breitenb?cher and Mangold (1994) found that calcium sulphoaluminates, or free lime, along with gypsum produced high compressive stresses that minimized or, in some cases, fully compensated the tensile stresses. 39 Figure 2-18: Influence of expansive additives (EA) on cracking sensitivity (Springenschmid and Breitenb?cher 1998) Although such expansive additives are effective in reducing cracking sensitivity, they are very sensitive to many parameters including temperature, moisture, dosage, cement, and mix composition. If the dosage of the additive is not optimized on an individual basis, either very little expansion or too much expansion can occur, therefore expansive additives are not licensed in many countries (Springenschmid and Breitenb?cher 1998). 40 2.4.2.6 Air Entrainment Air-entrained concrete has two important properties that affect the cracking susceptibility. Firstly, the ultimate tensile strain capacity of air-entrained concrete is about 20% higher than normal concrete (Springenschmid and Breitenb?cher 1998). Second, air-entrained concretes have a lower modulus of elasticity, which in turn leads to lower restraint stresses. Breitenb?cher and Mangold (1994) found that adding air- entraining agents (air content approximately 3 to 6% by volume) reduced the cracking temperature by about 5?C. 2.5 CONCLUDING REMARKS Thermal, autogenous, and drying shrinkage are all mechanisms contributing to the early- age cracking phenomenon. These mechanisms are influenced by many complex variables that have intricate interactions. Quantification of these mechanisms is extremely complicated at early ages, thus making accurately predicting cracking tendencies a daunting task. The rigid cracking frame is a tool that can be used to directly measure restraint stresses and assess the cracking tendency of various concrete mixtures. The cracking temperature obtained from the rigid cracking frame is a global indicator of all the factors that influence cracking under restrained conditions; the lower the cracking temperature, the lower the cracking sensitivity of a concrete mixture. The rigid cracking frame test seems feasible and reliable, and its results may provide very valuable insight towards the early-age behavior of concrete due to autogenous and thermal shrinkage. 41 CHAPTER 3 CRACKING FRAME SCANNING TRIP Cracking frames can be used to assess the very early-age behavior of concrete mixtures. These frames provide restraint against volume changes due to autogenous and thermal shrinkage, and provide an effective means to characterize the cracking susceptibility and early-age behavior of concrete mixtures. Dr. Rupert Springenschmid from the Technical University of Munich (TUM) has spent more than 30 years developing different types of cracking frames, and he is considered an international authority on thermal cracking testing. Dr. Springenschmid invited the research team to Munich in order to learn from his experiences and to increase the team?s understanding of cracking-frame testing. Faculty and research assistants involved with this project met with Dr. Springenschmid to ensure accurate transfer of knowledge and experience. Members of the research team visited with Dr. Springenschmid and some of his colleagues in Munich during February 25?27, 2004. While in Munich, the research team viewed the construction of the two rigid cracking frames that were being made for TxDOT Project 0-4563. The objective of this chapter is to summarize the information gathered from the visit with Dr. Springenschmid. 42 3.1 ATTENDEES Members of the team that visited Dr. Springenschmid include: 1) Dr. Kevin Folliard, University of Texas at Austin, 2) Dr. Anton Schindler, Auburn University, 3) Dr. Maria Juenger, University of Texas at Austin, 4) Jonathon Poole, Ph.D. Student at the University of Texas at Austin, 5) Kyle Riding, Ph.D. Student at the University of Texas at Austin, and 6) Jared Whigham, M.S. Student at Auburn University. 3.2 TRIP AGENDA The team met Dr. Springenschmid at the Center for Building Materials (CBM), which is part of TUM. Dr. Springenschmid conducted a tour of the CBM that included a look at the rigid cracking frame (RCF) and the temperature-stress testing machine (TST). After the tour, Dr. Springenschmid held a lecture (see Figure 3-1 below) on methods to measure stresses caused by early-age volume changes in hydrating concrete. Following the lecture, the team observed how to remove a specimen from the rigid cracking frame. The team then met with Dr. Markus Plannerer, who discussed the TST machine. The following day the team learned how to start a cracking frame test, and it was observed that meticulous attention to the preparation of the sample is required. The team then met with Dr. Springenschmid to discuss typical results that could be obtained from cracking frame testing. After lunch, Dr. Springenschmid took the team for a visit of the Institute for Roads and Runways, where Professor Gunther Leykauf gave a brief presentation on the Transportation Institute at TUM and then led the team through their laboratory. After 43 learning how to perform tests and analyze the results of the rigid cracking frame, the team met with Mr. Erwin Gierlinger who was overseeing the construction of the new cracking frames. The team also went to the machine shop, Brunner Maschinenbau, to view the construction of the frames. Figure 3-1: Dr. Rupert Springenschmid during a lecture to the research team 3.3 RIGID CRACKING FRAME The rigid cracking frame shown in Figures 3-2 and 3-3 provides restraint to volume changes in the concrete through its rigid Invar side bars. These Invar bars are designed to allow some movement in the concrete and this small change in length in the Invar bars is measured by strain gauges that are attached to the bars. The measured strain can be used to calculate the stresses that develop in the concrete specimen. 44 Figure 3-2: Rigid cracking frame developed in Munich (Mangold 1998) Figure 3-3: The rigid cracking frame during operation in Munich 3.3.1 DISCUSSIONS WITH DR. SPRINGENSCHMID Dr. Springenschmid explained the development of the frame and indicated that the formwork insulation is designed to represent concrete members that are approximately 50 cm thick. The size of the Invar bars is determined by the size of the concrete specimen; the area of the bars needs to be approximately equal to the cross-sectional area of the 45 concrete specimen. The key is that the bars need to be stiff enough to provide a high degree of restraint yet flexible enough to allow accurate strain measurements. Initially a specimen size of 100 x 100 mm was used, but later the specimen size was increased to 150 x 150 mm. Dr. Springenschmid indicated that the repeatability of tests with the 100 x 100 mm specimen produced undesirable results; however, the use of the larger specimen improved the results. The larger specimen size also allowed for the use of a larger aggregate size in the concrete mixture. The side bars are constructed of Invar steel, which has a low coefficient of thermal expansion (Dillaterm Steel DIN 1.3912, 36% Nickel, and E = 135 GPa). Invar is used to minimize the effect a change in temperature would have on the length change of the restraining bars of the cracking frame. Interestingly enough, Dr. Springenschmid mentioned that the first version of the cracking frame was actually built in an environmental chamber. The temperature of the environmental chamber was then controlled to control the temperature of the hydrating concrete. Under these conditions, where the temperature surrounding the frame varies, the use of Invar steel is essential to minimize expansion and contraction of the testing frame. After the concrete is carefully sealed and covered with the insulated formwork, the concrete is allowed to hydrate in the formwork for 4 days. The RCF was initially designed to assess the cracking tendency of various concrete mixtures without the use of artificial cooling. Dr. Springenschmid indicated that under these conditions most mixtures take a very long time to crack. In order to produce results in a reasonable period of time, the concrete is artificially cooled at a rate of 1?C/hr after a concrete age of 4 days is reached. Cooling is continued until cracking is detected in the strain readings of the 46 Invar side bars. The temperature at which cracking occurs is appropriately called the "cracking temperature.? Dr. Springenschmid indicated that it took approximately 2 to 3 years to obtain meaningful results when he first started to develop the cracking frame in 1973. Initially the cracking frame was designed to evaluate the cracking sensitivity of various cement sources. In order to assess this sensitivity, standard mixture proportions, aggregates, and mixing temperatures were selected. For this purpose, the following standards were used: ? 280 kg/m 3 of cement ? 60 kg/m 3 of fly ash (Average CaO = 3.04% and average SiO 2 = 51.2%) ? w/cm = 0.48 ? Basalt crushed aggregate ? Mixing temperature of 20?C Dr. Springenschmid concluded the discussion with data showing test results from the RCF. The results revealed that normal cracking temperatures range from 7?C to 22?C. Dr. Springenschmid stated that based on their test results and experiences, he has concluded the following: ? The maximum temperature that develops in the concrete specimen is not a good indicator of cracking risk. The development of stresses and strength should be considered. ? The lower the cracking temperature, the lower the cracking tendency. 47 ? The degree of restraint in the rigid cracking frame varies as the concrete hardens, and it is a function of the actual modulus of elasticity development of the mixture being tested. ? For tunnel-lining applications in Germany, they now require the mixture to have a cracking temperature of less than 12?C. ? As the w/c decreases, the cracking tendency increases. ? The cracking tendency is improved when limestone course aggregate is used in the place of quartzite. ? The cracking tendency is improved as the placement temperature of the concrete is reduced. ? The use of a retarder has no significant effect on the cracking tendency. ? The cement type has a very significant effect on the cracking tendency. Some cement types have a very high cracking tendency. ? The cracking tendency could be improved by adding air entrainment. ? The use of GGBF slag has not always reduced the cracking tendency. The behavior of GGBF slag can be highly variable. ? The stress development of fly ash is much slower than GGBF slag. Fly ash generally has reduced the mixture?s cracking tendency. ? The use of silica fume has contributed to an increase in early cracking. 48 3.3.2 TESTING PROCEDURE The team was shown how concrete is placed and sealed in the rigid cracking frame. The frame is supported at the center of the Invar side bars by two concrete blocks that rest on rubber pads. A cracking frame test is begun by lining the formwork with a layer of plastic to reduce friction and then securing the formwork to the cracking frame. No releasing agent (oil) is used on the crosshead, since this may cause the specimen to slip in the crosshead grips. After the mold has been prepared, the concrete is placed in the frame and vibrated to achieve good consolidation. The vibrators are pushed through plastic sheeting to keep the cracking frame as clean as possible. After the concrete is finished with a trowel, a moist sponge is used to remove all the excess concrete from the top edge of the mold. The top of the specimen is then sealed with a layer of plastic held in place with double-sided waterproof tape as shown in Figure 3-4. The layer of plastic is carefully cut to match the shape of the concrete specimen. BRACE Figure 3-4: Sealing the concrete specimen in the frame 49 Steel crosshead braces (40x10mm flat bar) are provided to prevent spreading of the edges of the crosshead. These crosshead braces can clearly be seen in Figure 3-4. The top crosshead braces are bolted to the frame using a torque wrench after the concrete is placed. The bolts used to secure these plates were hollow and had a coupling attached to it to allow the water from the circulator to pass into the crosshead. In order to prevent water loss, the braces are sealed with silicone and watertight double-sided tape. Once the specimen is sealed, the upper form is strapped into place. Two temperature probes are placed in the specimen: one in the crosshead and the other in the center of the specimen. Additional silicone sealant is used to seal the location where the temperature probes penetrate into the formwork. The temperature measured at the center of the formwork is used as a target temperature to be controlled by the water circulating in the formwork. The circulator is connected to the cracking frame with flexible hoses that have quick- disconnect couplers at their ends. Next, the strain gauges on the Invar side bars are connected. Lastly, the supports under the crossheads are removed to enable the frame to freely expand and contract. A test specimen that is ready for testing in the RCF can be seen in Figure 3-5. The staff (2 technicians) at TUM required approximately 60 minutes from when the concrete was mixed to when the test was ready to start. Additional pictures of the test preparation are presented in Section A.1 of Appendix A. 50 TEMPERATURE PROBE Figure 3-5: The rigid cracking frame ready for testing 3.3.2.1 Equipment Required for Rigid Cracking Frame Test Pictures of some of the equipment required to conduct the test can be seen in Section A.2 of Appendix A. Equipment and materials required to perform a cracking frame test include: ? Cracking frame including crossheads, Invar side bars, and crosshead braces, ? Programmable circulator temperature control system, ? Computer to run temperature control system, ? Data-logger to record strains and concrete temperatures, ? Insulated formwork with copper tubing to circulate water, ? Formwork and frame supports, ? Strain gauges attached to both Invar side bars, ? PT-100 Temperature probes to read concrete temperatures, ? Flexible hos perature control system to cracking frame, 51 es to connect the tem ? Crosshead linkage and turnbuckle to apply load for calibration, ? Load cell to calibrate the cracking frame before performing a test, ? Torque wrench to secure crosshead braces, ? Trowel to level the concrete surface, ? Vibrator to consolidate concrete in formwork, ? Plastic to cover formwork before placing concrete, ? Silicone to caulk around crosshead braces and temperature probes, and ? Double-sided tape to secure plastic. 3.3.2.2 Data Acquisition and Control A data-logger is used to collect and record the readings from the strain gauges attached to the Invar side bars as well as the temperature of each bar in case a temperature correction needs to be applied. The strains are averaged and used to determine the stress development of the concrete specimen. The concrete temperature in the center of the specimen and in the crosshead is also recorded. If a large temperature difference develops between the center of the specimen and the middle of the crosshead, the test must be repeated. The temperature control of the cracking frame is achieved though the use of a circulator and water bath that is controlled by a computer. The circulator is connected to the cracking frame through insulated flexible hoses. If cracking has not occurred in the first four days (96 hours) of the test, the temperature of the concrete specimen is 52 decreased by 1?C/hr. The temperature is constantly reduced until cracking occurs. In most cases, the concrete specimen cracks before the end of the sixth day. 3.3.2.3 Removal of Specimen The cracking frame test is completed when the concrete specimen cracks. After completion, the water is drained from the system, the water lines are disconnected, and the formwork is removed. The specimen is removed from the cracking frame with four 20-ton hydraulic bottle jacks as shown in Figure 3-6. A hole is bored through each end of the specimen, and a threaded rod is inserted. At the bottom of the rod, a backing plate is used to pull the specimen out of the crossheads. The rod is bolted to a steel rig that is placed on top of the bottle jacks. The jacks are then used to pry the specimen out of the crossheads. To prevent bending of the frame, care is taken to make sure that the each end of the frame is jacked at the same level. After the specimen is removed, the crossheads must be cleaned. The residual concrete is removed using a jackhammer and chisel. After most of the concrete is removed, a steel brush is used to clear the crosshead and grips of all remaining concrete. Additional pictures of the specimen removal process may be seen in Section A.3 of Appendix A. Pictures of some of the equipment required to remove the specimens from the frame can be seen in Section A.4 of Appendix A. Equipment required to remove a test specimen from the cracking frame includes: ? Concrete drill with masonry bit, ? Four 20-ton hydraulic bottle jacks, ? Two steel crossbars, backing plates, and threaded rods, ? Jackhammer, chisel, and steel brush. 53 Figure 3-6: Specimen removal 3.3.3 CONSTRUCTION OF THE RIGID CRACKING FRAME Construction of the new cracking frames was overseen by Mr. Erwin Gierlinger. Mr. Gierlinger is a former Ph.D. student of Dr. Springenschmid and designed the first Temperature Stress Testing (TST) machine (Springenschmid, Gierlinger, and Kiernozycki 1985). Mr. Gierlinger sub-contracted Brunner Maschinenbau (www.brunner-maschinenbau.de), a machine shop, to manufacture the rigid cracking frames in Munich. The main contacts at Brunner Maschinenbau are Mr. Peter Brunner and Mrs. Irmgard Weiss-Brunner. The frames were constructed according to the design drawings developed by TUM staff. The drawings are presented in Section B.1 of Appendix B. Once the frames were completed, they were shipped to Houston. When the research team visited Brunner Maschinenbau, the frames were not complete, and only the parts of one of the frames were assembled. Figure 3-7 shows one of the frames in the machine shop. The quality of workmanship was high, and the construction of the frames was progressing satisfactorily. 54 Figure 3-7: Cracking frames under construction at Brunner Maschinenbau 3.4 TEMPERATURE-STRESS TESTING MACHINE The temperature-stress testing (TST) machine shown in Figure 3-8 has an adjustable crosshead that is controlled by a closed-loop step-motor system to ensure full (or partial) restraint against early-age volume changes. The first TST machine was developed in the early 1980s at TUM (Springenschmid, Gierlinger, and Kiernozycki 1985). The TST machine that is currently being used at TUM can be seen in Figure 3-9. The stresses that develop in the hardening concrete are directly measured by a load cell positioned between the moveable crosshead and the fixed end of the frame. The use of this frame will enable the research team to develop mechanistic models to predict the development of early-age thermal cracks. 55 3.4.1 DISCUSSIONS WITH DR. SPRINGENSCHMID AND DR. MARKUS PLANNERER The temperature stress testing (TST) machine was first developed to measure the stress development of concrete due to thermal effects under fully restrained conditions. Since all the length change in the specimen is countered by a movable crosshead, 100% restraint is possible. The degree of restraint can be controlled by adjusting the amount of length change that is corrected by the step motor. Since all the movement in the crosshead needs to be continuously corrected, it is critical to measure the length change to a precision of about 0.1 ?m (or 0.0001 mm). The step motor is programmed to correct the displacements of the movable crosshead at 0.1 ?m increments. Dr. Springenschmid indicated that he was aware of other frames that have been built that were not designed to measure the displacement to this accuracy, and he was skeptical of the validity of these results. Section 3.4.3 provides a more detailed discussion of the length measurement device and method used at TUM. Figure 3-8: Temperature-stress testing machine developed in Munich (Mangold 1998) 56 Figure 3-9: Temperature-stress testing machine at TUM Dr. Plannerer stated that in his experience, the TST machine requires much more expertise than the rigid cracking frame to produce meaningful data. He further stated that even with a skilled operator, there are quite a number of tests that may need to be discarded due to technical difficulties. Tests with the TST machine usually take 14 days. The program to control the TST machine has to be carefully designed to account for all the unforeseen events that may disrupt the test. A major advantage of the TST machine is that the elastic modulus of the hardening concrete can be determined for every instance that the step-motor corrects the displacement of the specimen. Dr. Plannerer emphasized that due to the very small (and fast) load intensity, the modulus obtained from the TST is different from the elastic 57 modulus obtained from conventional testing procedures. The modulus obtained is also an initial elastic modulus and does not include any creep effects. The effects of creep (and relaxation), however, can be determined with the TST machine. Both Drs. Springenschmid and Plannerer indicated that some unusual results were obtained when high-strength concrete was tested. The stress development was ?jagged? and Dr. Springenschmid mentioned that he thought this could be due to slipping of the specimen in the grips of the crosshead. Slipping in the crosshead was apparently not a problem when normal-strength concrete was tested. 3.4.2 TESTING PROCEDURE The team was not able to see how a specimen is placed in the TST machine. However most of the procedure described for the RCF is also used for the TST machine. One key difference is that small rods (see Figures 3-11 and 3-12) are embedded perpendicular to the specimen and the length measurement device is mounted to these rods. These rods are held in the desired position by support brackets that need to be released after final set (the start of stress development). Even though this procedure is cumbersome, it has been found to produce reliable results. Dr. Springenschmid and Mr. Gierlinger indicated that their initial attempts to measure the displacement by measuring the relative movement between the crossheads was not reliable enough. 3.4.2.1 Removal of Specimen The design of the crossheads of the TST was different than that of the RCF crossheads. The grips were designed to be removed from the frame after a test is completed. The 58 redesigned grips can be seen in Figure 3-10. The removable grips help prevent damage to the mechanical components (gears, step motor, bearings, etc.) during removal of the specimen. The grips of the TST machine also allowed water to be circulated through them in order to achieve improved temperature control in the concrete specimen. Figure 3-10: Redesigned crosshead grips of the TST machine 3.4.3 LENGTH MEASUREMENT DEVICE The device and method used to measure the change in length of the concrete specimen form a critical component of the TST machine. This device should be accurate enough to detect a change in length with a precision of about 0.1 ?m (or 0.0001 mm). Different methods have been used at TUM and other research groups. Initially attempts were made to measure the length change between the crossheads, but this was not successful. The device that was most recently used at TUM can be seen in Figures 3-11 and 3-12. The 59 device, a carbon-fiber sensor, has produced acceptable results to the desired accuracy. This carbon fiber sensor is attached to bars that are embedded in the concrete perpendicular to the specimen. It was mentioned that other researchers have tried to use non-contact means for this measurement, but apparently with limited success. The length measurement device is a critical component of the TST machine, and care needs to be taken to make sure that the device used gives an accurate measure of the concrete displacement over the gauge length. Figure 3-11: Side view of the length measurement device used at TUM 60 Figure 3-12: Top view of the length measurement device used at TUM 3.4.4 CONSTRUCTION OF THE TEMPERATURE-STRESS TESTING MACHINE Construction of the TST machine has been overseen by Mr. Erwin Gierlinger, who has sub-contracted Brunner Maschinenbau to manufacture the TST machine. The frame was being constructed to design drawings developed by Brunner Maschinenbau after measuring the TST machine at TUM. When the research team visited Brunner Maschinenbau, none of the components of the TST could be seen. At that stage, all the components had been ordered; however, they had not yet been delivered. A displacement measurement device was provided for the TST machine. The load cell was ordered from HBM. The load cell will be 100-kN Type U2B. The step motor and its subcomponents were ordered from Nanotec Electronic GmbH (www.nanotec.de). The components for the TST are as follows: 61 ? Motor: Part No. ST5818L2008-A ? Gear: Part No. GPLE60-2S-25 ? Flange: Part No. GZ-60 3.5 IN-PLACE STRESS METER The in-place stress meter developed by TUM is shown in Figure 3-13. Each meter is a single-use device with an estimated cost of $1,500. This device is actually a very small version of the rigid cracking frame that can be placed in an actual concrete element during placement. This device consists of a pipe with a diameter of 70 mm and a length of 420 mm. The inside of the pipe is coated with oil and lined with foil to reduce the friction between the pipe and the concrete that is placed inside the meter. One end of the stress meter contains a load cell that records the axial force that develops in the concrete within the meter. The other end of the stress meter is open, allowing the meter to be filled with concrete. Figure 3-13: In-place stress meter developed at TUM 62 As the concrete hydrates and starts to experience volume changes, the concrete within the stress meter is restrained from movement, causing forces to develop at the location of the load-cell. Due to the design of the device, the concrete within the stress meter is not fully restrained. The research team was shown some test data that Dr. Markus Plannerer has collected in various structures using the in-place stress meter. It was reported that not all the stress meter tests produced reliable results. Problems have occurred when the meter is not properly sealed for moisture. Dr. Plannerer concluded that even though there are differences in the degree of restraint, the zero-stress temperature determined with the stress meter closely matched that obtained from the TST machine. 3.6 ADIABATIC CALORIMETER TUM has developed and successfully used a fully adiabatic calorimeter. This calorimeter, shown in Figure 3-14, consists of a steel container that is sealed in an insulated wooden box. Water is circulated around the sides of the steel container. The temperature of the water is controlled by a circulator to match the temperature of the hydrating concrete inside the calorimeter. A schematic of TUM?s calorimeter can be seen in Figure 3-15. Figure 3-14: Adiabatic calorimeter used at TUM 63 Figure 3-15: Schematic of the adiabatic calorimeter used at TUM 3.7 CLOSING COMMENTS The visit to Dr. Springenschmid and the Technical University of Munich was a valuable opportunity to learn all the nuances involved with reliably assessing the cracking tendency of concrete at early ages. Based on the approach and standard test conditions developed by Dr. Springenschmid, the time to cracking obtained from a rigid cracking 64 frame test can be used as an index to quantify the cracking tendency of various concrete mixtures. The lower the cracking temperature, the lower the cracking tendency of the concrete mixture. The rigid cracking frame test seems feasible and reliable, and its results may provide very valuable insight towards the early-age behavior of concrete due to autogenous and thermal shrinkage. The temperature stress testing machine is a device that is controlled by a closed-loop step-motor system to ensure full (or partial) restraint against early-age volume changes. The use of this frame will enable the research team to develop mechanistic models to predict the development of early-age thermal cracks. The trip to Munich was of great benefit as the discussions with Dr. Springenschmid gave the team valuable information that definitely increased the team?s understanding of restrained thermal testing. This visit provided the research team with enough background and insight to the details that need to be addressed in order to provide meaningful and reliable results with this type of testing. 65 CHAPTER 4 EXPERIMENTAL TEST EQUIPMENT In order to develop a test method to assess the cracking tendency of a concrete mixture, state-of-the-art laboratory testing equipment was required. First a rigid cracking frame equipped with special formwork was needed. The formwork consists of ?-in. copper tubing embedded in 2-in. rigid insulation. The formwork insulates the concrete specimen during the early ages of hydration, and it also capable of controlling the temperature of the specimen. A match-curing box is required to measure the mechanical properties of early-age concrete because the properties are highly dependent on the curing temperature. The box controls the temperature of 6 x 12 in. molded cylinders to match the temperature of the concrete in the rigid cracking frame. A data acquisition system was also required to collect temperature and strain data while the test is conducted. 4.1 RIGID CRACKING FRAME Two rigid cracking frames (RCF) as developed by Dr. Springenschmid at the Technical University of Munich (TUM) were utilized to measure the restraint stress development and the cracking tendency of concrete mixtures. One cracking frame was manufactured in Munich, Germany by Brunner Maschinenbau under the supervision of Mr. Erwin Gierlinger, a former Ph.D. student of Dr. Springenschmid. A second cracking frame was 66 manufactured near Opelika, Alabama, USA by Davis Machine Works under the supervision of the author. In order to denote each cracking frame, the one manufactured in Munich is referred to as GER while the one manufactured in Alabama is referred to as AU. The shop drawings used to manufacture the German cracking frame are presented in Section B.1 of Appendix B, and the shop drawings used to manufacture the Auburn cracking frame are presented in Section B.2 of Appendix B. 4.1.1 CROSSHEADS The rigid cracking frame consists of two mild steel crossheads connected by two rigid Invar side bars (Figure 4-1). The purpose of the crossheads is to grip the concrete so that the rigid Invar side bars restrain the concrete specimen against deformation. Each crosshead consists of the following items: ? Packing plates to secure crosshead to Invar bars, ? Teeth to grip the concrete test specimen, ? Crosshead braces to prevent deformation of the crosshead, and ? Watertight reservoir and quick-disconnect couplings to circulate water through crosshead. 67 CROSSHEAD CROSSHEAD INVAR SIDE BAR PACKING PLATES Figure 4-1: Rigid cracking frame schematic (Note: Crosshead braces are not shown) When assembling the cracking frame, the crosshead must be securely fastened to the Invar side bars so that no slipping occurs. This is accomplished through a shear-friction connection using packing plates and a large bolt as shown in Figure 4-2. In order to connect the Invar side bars to the crossheads, the end of each bar is machined so that the top and bottom are flat as shown in Figure 4-3. Packing plates are used to connect the bars to the crosshead. In the original cracking frame design, all the packing plates were specified to have the same thickness. However, due to the heat generated during the welding process, the openings of the crossheads that receive the Invar side bars may move; therefore, each individual connection must be measured after the crossheads are welded, and the packing plates must be individually machined to fit the actual opening. 68 BOLT PACKING PLATES THREADED ROD INVAR SIDE BAR Figure 4-2: Invar bar connection to the crosshead Figure 4-3: Invar side bar under construction 69 In order to prevent slippage of the test specimen, each crosshead contains two sets of teeth that grip the concrete specimen, as shown in Figure 4-4. The plates that contain the teeth are beveled at an angle of 2?41? and each individual tooth is tapered. The taper of each tooth can be seen in Figure 4-5. The bevel and taper allows the concrete to be removed from the crosshead once a test is completed. Figure 4-4: Cracking frame crosshead under construction Figure 4-5: Crosshead teeth 70 Preliminary testing in the cracking frame produced cracking in the crosshead that originated from the back of the first tooth as shown in Figure 4-6. The sharp corners of the teeth produce localized stress concentrations. In order to alleviate the stress concentrations and prevent cracking in the crossheads, the back side of the first two teeth on each side of the crosshead were chamfered approximately 1/16? as shown in Figure 4- 7. Problems associated with cracking in the crossheads have not been encountered since the teeth were chamfered. Figure 4-6: Cracking in the crosshead 71 BEFORE AFTER 1/16-in. chamfer Figure 4-7: Crosshead tooth modifications In order to prevent the crosshead from deforming during a test, braces are bolted to the top and bottom of each crosshead as shown in Figure 4-8. The braces provide restraint against crosshead deformations. To create the proper friction connection, the braces must be mounted flush to the crossheads, and the bolts must be torqued to 200 ft-lbs. However, in the original cracking frame design, the braces were offset from the crosshead surface by a weld as can be seen in Figure 4-9. That design did not allow sufficient surface contact to generate the necessary friction, so the weld was ground flush to allow the braces to mount flush with the top of the crosshead as shown in Figure 4-9. 72 QUICK DISCONNECT COUPLINGS CROSSHEAD BRACES Figure 4-8: Crosshead with braces and quick disconnect couplings WELD WELD GROUND SMOOTH Figure 4-9: Crosshead before and after grinding As described in the RCF Manual developed at TUM (2003), the calibration procedure of the original cracking frame consists of a linkage assembly including a load cell and a turnbuckle. The assembly was threaded into a 14-mm hole in the center of each crosshead. The turnbuckle was used to apply a load while the load cell measured the 73 strain induced in the Invar side bars. A new calibration procedure consisting of a threaded bar and hydraulic jack, as shown in Figure 4-10 and detailed in Section 5.2 of Chapter 5, has been developed. In order to accommodate the new calibration setup, the 14-mm hole has been replaced with a 1-in. National Pipe Taper (NPT) hole on both the inner and outer plates of each crosshead. THREADED BAR HYDRAULIC JACK Figure 4-10: Cracking frame calibration setup The crossheads also contain a reservoir that is used for temperature control of the concrete. The top of each crosshead is equipped with two (an inlet and an outlet) quick- disconnect male couplings as shown in Figure 4-8. In order to drain the coolant from the system, a drain plug is installed in the bottom of each crosshead. In the original cracking frame design, the water was circulated through the crossheads via special bolts that were used to fasten the crosshead braces as shown in Figure 4-11. 74 The bolts contained a ?-in. hollow shaft with a quick-disconnect coupling. In order to simplify the testing process and allow for larger connections, the quick-disconnect couplings were moved out of the crosshead braces so that they do not have to be removed for each test, as shown in Figure 4-11. To increase the flow through the crossheads, the size of the couplings was increased to ?-in. inside diameter. Crosshead brace bolt with ?? coupling Crosshead brace bolt ?? Coupling OLD NEW Figure 4-11: Quick disconnect modification 4.1.2 INVAR SIDE BARS The rigid side bars are designed to provide a high level of restraint while allowing small deformations that are measured with strain gauges. The restraining bars hold the crossheads 1250 mm apart. In order to minimize thermal effects on the length change of the restraining bars, Invar steel is used. Invar has a very low coefficient of thermal expansion compared to mild steel. The German cracking frame is constructed of Invar specified by DIN 1.3912 while the Auburn cracking frame is constructed of Invar specified by MIL-S-16598 (chemistry only). The coefficient of thermal expansion for the Invar in the range of 0?200?F is 0.7 x 10 -6 /?F for the German cracking frame and 0.94 x 10 -6 /?F for the Auburn cracking frame. 75 In order to measure in-place restraint stresses, each bar is equipped with a full-bridge strain gauge configuration capable of measuring very small axial strains. In the central portion of the concrete specimen, the stresses are uniaxial; therefore, a uniform stress distribution may be assumed. By assuming a uniform stress distribution, the axial strains measured in each bar can be used to compute the corresponding stress development in the restrained concrete specimen. Due to equilibrium and symmetry, the force in each Invar side bar is half of the total force in the concrete specimen. In order to account for the effects of temperature on the length change of the Invar bars, the temperature history of the bar must be known. In the design of the original cracking frame, a surface-mounted temperature probe was used. However, in order to determine the core temperature of the bar, a small thermocouple probe (1/16-in. diameter) is inserted in the end of each bar, as shown in Figure 4-12. If needed, a heat transfer analysis can be performed by using the temperature measured at the end of the bar to compute a temperature profile of the entire bar. Figure 4-12: 1/16-in. temperature probe inserted in the Invar side bar 76 4.1.3 INSTRUMENTATION As mentioned in the previous section, the Invar side bars are equipped with strain gauges. In order to measure very small deformations of the bar, a four-wire full-bridge (4WFB) strain gauge configuration is used. The 4WFB configuration consists of four 90-degree rosette gauges obtained from Vishay Micromeasurements (Product No. CEA-06-250UT- 350). The four rosettes are mounted around each Invar bar as shown in Figure 4-13. Each rosette contains a pair of 350 ? strain gauges, one axial gauge and one transverse gauge, for a total of eight 350? strain gauges in the full bridge. The 4WFB strain gauge wiring diagram is presented in Figure 4-13; a schematic of the 4WFB circuit is presented in Figure 4-14. TOP LEFT RIGHT BOTTOM + signal - signal - supply voltage + supply voltage INVAR BAR CROSS SECTION TOP RIGHT BOTTOM LEFT -?? +? -?? +? -?? +? -?? +? Figure 4-13: 4WFB strain gauge wiring diagram using four 90-degree rosettes 77 The 4WFB strain gauge configuration contains four legs. Each leg contains a series of axial or transverse gauges that are mounted 180? apart around the bar circumference; two legs contain gauges that are mounted on the top and bottom of the bar while the other two legs contain gauges that are mounted on the left and right sides of the bar. In order to cancel bending effects and measure pure axial strains, the two axial legs must be configured so that they are on opposite sides of the bridge and the two transverse legs must be configured so that they are on opposite sides of the bridge as shown in Figure 4- 14. If bending occurs, the bending strain components from both the axial and transverse legs will offset each other. - ?? + ? - ?? - ?? + ? + ? TOP BOTTOM TOP LEFT - ?? RIGHT BOTTOM RIGHT LEFT + ? + supply voltage - supply voltage - signal + signal Figure 4-14: 4WFB strain gauge circuit 78 All temperatures are measured with Type T thermocouple probes obtained from Omega Engineering. Type T thermocouples have an accuracy of ?0.9?F for concrete temperatures in the range of 32 to 200?F. Two different styles of thermocouple probes are used. Concrete temperatures are measured with 3/16-in. diameter x 6-in. long probes (Omega Product No. PR-10-2-100-316-6-E-240). The temperature of the Invar side bars is measured with small 1/16-in. diameter x 1?-in. long probes (Omega Product No. HTTC240-T-116G-1 1/2). In order to measure the restraint stresses that develop in the concrete specimen, the relationship between the average strain of the Invar side bars and the force in the frame has to be determined. This is accomplished through a calibration process by applying a known load and measuring the resulting strain output from the gauges mounted on the Invar bars. The intensity of the applied load is measured with a compression load cell fabricated at Auburn University. The design of the load cell can be seen in Figure 4-15. The load cell was constructed out of aluminum since the stiffness of aluminum (E = 10 x 10 6 ) is approximately one half the stiffness of Invar (E = 21 x 10 6 ). In an attempt to maintain consistency, the load cell was outfitted with the same 4WFB strain gauge configuration used on the Invar side bars. The strain gauges are protected by an aluminum sleeve. The load cell must be calibrated to determine a calibration factor to transform the strain gauge output into a corresponding load. This is accomplished by applying a known load with a Tinius Olsen compression testing machine and measuring the resulting output from the strain gauges attached to the load cell. The load cell is calibrated as follows: STEP 1: Record the output from the unloaded load cell. 79 STEP 2: Apply a 25-kip load to ensure proper seating of the load cell in the machine. STEP 3: Decrease the load down to 500-lbs. STEP 4: Steadily increase the load and record the strain gauge output at 1-kip STEP 5: Continue increasing the load while recording the strain gauge output at 2-kip intervals. STEP 6: Record the strain gauge output at 25-kips then begin unloading. STEP 7: Record the strain gauge output, while unloading, at the same load levels recorded during the loading phase. To ensure accuracy of the calibration process, the load cell is loaded three times. The data obtained from the first two loadings are used to compute an average calibration factor while data from the third loading is used to verify the accuracy of the calibration factor obtained from the first two loadings. 80 2-in. 2-in. 1?-in. 1 5/8-in. 4 in. ?-in. diameter thru hole ELEVATION VIEW PLAN VIEW Figure 4-15: Load cell design 4.1.4 THERMALLY INSULATED FORMWORK A critical, yet seldom mentioned, component of the rigid cracking frame is the thermally insulated formwork. The formwork is designed to insulate the test specimen, producing a heat of hydration approximately equal to that of a concrete element 50-cm thick; however, it is not limited to a 50-cm thick element (Breitenb?cher 1990). The formwork is capable of inducing a variety of temperature profiles typical of any concrete thicknesses. Not only does the formwork provide a means to control the concrete temperature, it also allows restraint measurements to begin immediately after the fresh concrete has been placed. 81 A cross section of the thermally insulated formwork is presented in Figure 4-16. Some pictures taken during the construction of the formwork are presented in Section B.3 of Appendix B. The insulated formwork consists of: ? 2-in. rigid insulation (0.192 BTU/hr x in./ft 2 ), ? ?-in. plywood, ? ?-in. copper tubing, and ? 24-gauge copper flashing. As shown in Figure 4-16, the formwork is lined with copper sheeting that is attached to ?-in. copper tubing. The tubing is insulated with 2-in. thick polystyrene insulation that is protected by ?-in. plywood. A 50-50 mixture of ethylene glycol and water is circulated through the copper tubing to control the temperature of the concrete specimen. The use of ethylene glycol allows the ethylene glycol/water mixture to reach -4?F before freezing. 82 1.2-in. (typical) 2-in. rigid insulation (typical) ?-in. plywood (typical) CONCRETE SPECIMEN removable lid 24-gauge copper flashing (typical) 6-mil plastic sheeting ?-in. copper tubing (typical) Figure 4-16: Cross section of thermally insulated formwork The original formwork used in Munich consisted of four separate pieces: a bottom, two sides, and a top as shown in Figure 4-17. The original design consisted of four runs of ?-in. copper tubing that only covered the length of the test specimen. To increase the temperature-control capability, the copper tubing has been increased to five runs of ?-in. tubing on each side of the concrete specimen as shown in Figure 4-16 and Figure 4-18. The formwork has also been designed to completely cover the top and bottom of the crossheads with copper tubing. The formwork has been strengthened by integrating the sides and bottom into one unit. 83 Figure 4-17: Formwork used in Munich Figure 4-18: Rigid cracking frame formwork under construction 84 4.1.5 SUMMARY OF MODIFICATIONS In order to comply with the cracking frame defined by RILEM Technical Committee 119 (1998), the RCF had to be modified. These modifications include: ? Machine packing plates to fit each individual connection, ? Round each tooth on the crosshead with a hand file, ? Grind crossheads so that braces mount flush against top of crosshead, ? Replace the 14 mm calibration hole with two 1-in. NPT holes on both inner and outer plates of the crosshead, ? Move quick-disconnect couplings out of crosshead brace bolts and onto top of crosshead, ? Increase all water lines and couplings to ?-in. inner diameter, ? Add small temperature probes to the ends of the Invar bars, and ? Formwork modifications including copper tubing. 4.2 MATCH-CURING BOX In order to determine the strength development of the concrete placed in the cracking frame, test cylinders must be cured at the same temperature as the specimen in the cracking frame. To accomplish this task, a match curing box shown in Figures 4-19 and 4-20 was developed. 85 Figure 4-19: Match-curing box As shown in Figure 4-20, the match curing box contains 12 chambers that hold two 6 x 12 in. concrete cylinders; therefore, a total of twenty-four 6 x 12 in. concrete cylinders can be match cured at a time. The test cylinders can be match cured to any temperature profile to an accuracy of ?1?F. Each cylinder in the box is lined with copper flashing that is surrounded by a coil of ?-in. copper tubing. Each chamber contains a Type T thermocouple connection that can be used to monitor the temperature of the test cylinder. The match curing box is insulated with spray-in polystyrene insulation (0.165 BTU/hr x in./ft 2 ) purchased from Fomo Products (Product No. P10720-II-205). The foam insulation is protected by a plywood exterior. Design drawings of the match curing box are presented in Section D.1 of Appendix D, and construction pictures are presented in Section D.2 of Appendix D. 86 Figure 4-20: View inside the match-curing box 4.3 DATA ACQUISITION SYSTEM In order to control the testing equipment described above, a data acquisition system was designed. The components of the data acquisition system include: ? Data-logger capable of communicating with a personal computer (PC), ? PC equipped with five RS232 communication ports and a temperature control program, and ? Circulator capable of communicating with the PC. 4.3.1 DATA-LOGGER In order to monitor both rigid cracking frames and the match curing box, two Campbell Scientific CR23X Microloggers? are used as shown in Figure 4-21. One data-logger is connected to the Auburn cracking frame and the match curing box while the other 87 data-logger is connected to the German cracking frame. The data-logger programs used to monitor both cracking frames and the match curing box are presented in Section F.3 of Appendix F. An instrumentation diagram is also presented along with the programming code. Figure 4-21: CR23X data-loggers The data recorded from each cracking frames include: ? Strain gauge output from each Invar side bar, ? Temperature of each Invar side bar, ? Concrete temperature at the center of the specimen, ? Concrete temperature in each crosshead, and ? Ambient laboratory temperature. The data recoded from the match curing box include: ? Corner cylinder temperature, ? Exterior cylinder temperature, and ? Interior cylinder temperature. 88 Each data-logger is programmed to read and record the data once every ten seconds. The data is temporarily stored on the internal memory of the data-logger and then averaged every five minutes. The average values are then sent to the PC via RS232 communication ports. 4.3.2 PERSONAL COMPUTER (PC) In order to monitor and control the temperature of both cracking frames and the match curing box, a testing program was developed using Microsoft? Visual Basic 6.0. The program is designed to control a cracking-frame test from start to finish. The program controls the match curing box so that the concrete cylinders are match cured to the temperature of the Auburn cracking frame. If the cracking frames have not cracked after four days, the program begins cooling the concrete in each frame at rate of 1?C/hr until cracking is induced. A detailed description of the program as well as the Visual Basic code is given in Appendix E. 4.3.3 CIRCULATOR In order to control the temperature of two cracking frames and the match curing box, three Polyscience 9612 programmable circulators as shown in Figure 4-22 are used. Each circulator is connected to the PC via RS232 communication ports. The controller program described in the previous section monitors the concrete temperatures in the testing equipment and adjusts the appropriate circulator water temperature accordingly. In order to efficiently cool the concrete without freezing the coolant, the liquid in the circulator is a mixture of 50% distilled water and 50% laboratory grade ethylene glycol. 89 Figure 4-22: Programmable circulator 90 CHAPTER 5 RIGID CRACKING FRAME TEST PROCEDURE In order to develop a test method to assess the cracking tendency of concrete mixtures, procedures must be standardized. These procedures include assembly and calibration of the rigid cracking frame (RCF) as well as concrete testing with the rigid cracking frame. The procedures outlined below are designed to ensure accuracy and repeatability of cracking frame test results. Some of the protocols detailed in this Chapter are outlined by RILEM Technical Committee 119 (1998) and documented in the RCF Manual developed at TUM (2003). 5.1 ASSEMBLY OF THE RIGID CRACKING FRAME Once the components of the rigid cracking frame have been manufactured, they must be properly assembled before testing can commence. The manufactured components required to assemble the cracking frame can be seen in Figure 5-1. These components include: ? Crossheads and Invar side bars, ? Packing plates, ? Threaded bolts with nuts and washers, and ? Threaded rods with nuts and washers. 91 THREADED BOLT THREADED ROD PACKING PLATES Figure 5-1: Cracking frame side view 5.1.1 EQUIPMENT REQUIRED FOR ASSEMBLY Equipment required to assemble a cracking frame includes: ? 200 ft-lb torque wrench with appropriate sockets, ? Rubber mallet, and ? Hole alignment tool. 5.1.2 ASSEMBLY PROCEDURE The crossheads are attached to the Invar side bars using packing plates, threaded bolts, and threaded rods as shown in Figure 5-1. The first step is to align the holes in the Invar bars with the holes in the crossheads. Once the holes are aligned, the packing plates are driven into place. In order to eliminate the chance of slippage, the plates should have a 92 tight fit; therefore, a mallet may be needed to drive the plates into position; however, no lubricating oil may be used. If the holes become misaligned while the plates are being positioned, a hole alignment tool is used to realign the Invar side bars. Once the holes are realigned, the threaded bolts are driven into place and loosely tightened. After the packing plates and threaded studs have been installed, the Invar side bars are stressed to each crosshead with high-strength threaded rods. The rods are threaded into the end of each Invar side bar, and the nuts are hand tightened. Before the nuts are torqued, the crossheads are adjusted so that they are square with each Invar side bar. The torquing sequence of the cracking frame is very important. In order to minimize the potential risk of slippage, the crossheads must be stressed to the Invar side bars before the threaded bolts are tightened. After the crossheads have been squared up, the threaded rods are torqued to 150 ft-lbs, and then the threaded bolts are torqued to 200 ft-lbs. This is in accordance with RILEM Technical Committee 119 (1998) and the TUM RCF Manual (2003). 5.2 RIGID CRACKING FRAME CALIBRATION In order to measure the restraint stresses that develop in the concrete specimen, the relationship between the average strain of the Invar side bars and the force in the frame has to be determined. This is accomplished through a calibration process by applying a known load and measuring the resulting strain output from the gauges mounted on the Invar side bars. The procedure developed by Dr. Springenschmid specifies a maximum load of only 9 kips. Since a maximum cracking stress of 600 psi is anticipated, a higher calibration load 93 is deemed necessary to avoid extrapolation beyond the calibrated load. The maximum calibration load is determined as follows: Maximum Tensile Stress = 600 psi Concrete Cross-sectional Area = 6 x 6 in. = 36 in. 2 Maximum Force in Concrete = 36 in. 2 x 600 psi = 21,600 lbs Required Calibration Load = 25,000 lbs or 25 kips 5.2.1 EQUIPMENT REQUIRED FOR CALIBRATION Pictures of some of the equipment required to calibrate the cracking frame can be found in Section C.1 of Appendix C. Equipment required to perform a cracking frame calibration includes: ? ?-in. DYWIDAG bar (8-ft. minimum length), ? ?-in. DYWIDAG nuts and high strength steel anchor plates, ? Plastic bushings to protect the threads in each crosshead, ? 25-kip compression load cell, ? Hydraulic jack and pump capable of applying a 25-kip load, ? Data acquisition system, and ? Wrenches for assembly and disassembly. 5.2.2 CALIBRATION PROCEDURE Before the cracking frame can be calibrated, the upper and lower crosshead braces must be installed. The braces are fastened to the crossheads by torquing each bolt to 200 ft-lbs. 94 After the crosshead braces are installed, a ?-in. DYWIDAG bar is positioned in the cracking frame as shown in Figure 5-2. To prevent damage to the threads in the crossheads, a plastic bushing is inserted in each crosshead. PLASTIC BUSHING JACK LOAD CELL Figure 5-2: Rigid cracking frame calibration setup After the threaded bar is positioned in the cracking fra on one end and a 25-kip load cell is placed on the opposite end. The DYW anchored on both ends with high-strength steel plates and DYW load cell and strain gauges are properly connected to the data acquisition system 95 DYWIDAG BAR me, a hydraulic jack is placed IDAG bar is IDAG nuts. Once the , the calibration process begins. A detailed discussion of the data acquisition system developed for the calibration process is presented in Section 5.2.3. The steps involved in calibrating the cracking frame are outlined below. STEP 1: Steadily load the cracking frame with the hydraulic jack up to 25 kips. This initial loading ensures proper ?seating? of the DYWIDAG bar and anchors. STEP 2: Unload cracking frame by releasing the pressure in the hydraulic jack. STEP 3: Steadily load the cracking frame with the hydraulic jack up to 25 kips. The data acquisition system records the load and corresponding strain gauge output at 1-sec intervals. STEP 4: Unload cracking frame by releasing the pressure in the hydraulic jack. STEP 5: Repeat steps 3?4 twice. To ensure accuracy of the calibration process, the frame is loaded three times once the system has been seated. The data obtained from the first two loadings are used for calibration to compute an average stiffness of each Invar bar; data from the third loading is used to verify the accuracy of the calibration factor obtained from the first two loadings. It is recommended that the cracking frame be calibrated before beginning a testing program, and the calibration should be verified after completion of the program. The TUM RCF Manual (2003) states that the cracking frame should be calibrated twice a year; however, the new calibration procedure is simple and fast; therefore, it is recommended that the cracking frame calibration should be verified a minimum of four times per year. 96 5.2.3 DATA ACQUISITION The data acquisition system developed to calibrate the cracking frame consists of a Campbell Scientific CR23X Micrologger?. The data-logger is programmed to read and record the load cell as well as the strain gauge output from each Invar side bar. The data- logger operates at 1 hertz: read, record, and output data once every second. The data recorded are temporarily stored in the internal memory of the data-logger. The CR23X program developed to calibrate the cracking frame as well as a wiring diagram for the data-logger is presented in Section F.1 of Appendix F. After two calibration runs and one verification run have been completed, the data is downloaded from the data-logger to a PC and analyzed. In order to determine the stiffness of each Invar side bar a simple assumption is made: each bar resists half of the total load applied to the cracking frame. Using this assumption, a load versus strain gauge output (mV/V of excitation) plot is created for each Invar bar. Sample data from a calibration run is presented in Figure 5-3. The stiffness of the Invar bar is simply the inverse of the slope of the strain gauge output vs. load curve. In the sample data presented in Figure 5-3, the stiffness of the bar is 1/5.07E-6 or 197239 lbs/mV/V. After the average stiffness of each Invar bar has been computed based on the two calibration runs, a load-output response can be predicted. The results from the third verification run are compared to the predicted response. If the error between the predicted response and the response obtain from the verification run are within 2%?3%, the calibration process is finished. However, if the error becomes large, the calibration process must be repeated until acceptable results are obtained. 97 y = 0.00000507x - 1.06472824 R 2 = 0.99991148 -1.08 -1.07 -1.06 -1.05 -1.04 -1.03 -1.02 -1.01 -1.00 -0.99 -0.98 0 2500 5000 7500 10000 12500 15000 Applied Load (lbs) St ra in Ga g e Out put ( m V/ V) Figure 5-3: Sample cracking frame calibration data 5.3 TEST PROCEDURE In order to develop a test method to assess the cracking tendency of concrete mixtures, a standardized cracking frame test procedure must be adopted. The test procedure outlined below is very similar to the procedure described in Section 3.3.2 of Chapter 3 as well as the procedure described by RILEM Technical Committee 119 (1998). 98 5.3.1 EQUIPMENT REQUIRED TO PERFORM A TEST Pictures of some of the equipment required to conduct a cracking frame test can be seen in Section C.2 of Appendix C. Equipment required to perform a cracking frame test includes: ? Cracking frame including crossheads, Invar side bars, and crosshead braces, ? Programmable circulator filled with an ethylene-glycol/water mixture, ? Computer equipped with a temperature control program, ? Data-logger to read strains and concrete temperatures and communicate with the computer, ? Insulated formwork with copper tubing to circulate water, ? Formwork and cracking frame supports, ? Strain gauges attached to both Invar side bars, ? Type T thermocouple probes to read concrete temperatures, ? Flexible hoses to connect the circulator to the cracking frame formwork, ? 200 ft-lb torque wrench to secure crosshead braces, ? Trowel to finish the concrete surface, ? Vibrator to consolidate concrete in formwork, ? Plastic to line formwork before placing concrete, ? Silicone to caulk around crosshead braces and temperature probes, and ? Foil tape (Tyco Adhesives Nashua? 322 foil tape) to secure plastic and seal the specimen. 99 5.3.2 TEST PREPARATION The cracking frame is supported at the center of the Invar side bars by two concrete blocks that rest on rubber pads. The first step in preparing for a cracking frame test is formwork preparation. To reduce the friction between the concrete and the formwork, plastic sheeting is cut to fit the formwork. The sheeting must be properly cut and secured to ensure that no creases form. Before the formwork can be installed in the cracking frame, the bottom crosshead braces must be installed. The braces are bolted to the bottom of each crosshead and torqued to 200 ft-lbs. After the crosshead braces have been secured, the formwork is positioned in the cracking frame using formwork braces. After the formwork is installed, the joints between the formwork and crossheads must be caulked with silicone as shown in Figure 5-4. Careful attention must be given to the joints where the formwork meets the bottom crosshead braces. In order to reduce any stress concentrations, these joints must be completely filled with silicone. Once the joints are filled, foil tape is used to smooth out the transition from the formwork to the crosshead braces as shown in Figure 5-4. In order to reduce slippage of the specimen in the crosshead, no releasing agent is used. Figure 5-4: Caulking formwork and taping bottom crosshead braces 100 5.3.3 CONCRETE PLACEMENT Once the silicone has hardened, the cracking frame is ready for concrete. The concrete is placed in the frame in two equal layers and vibrated with a small handheld vibrator to achieve good consolidation as shown in Figure 5-5. It is crucial that the formwork is not overfilled. If the cracking frame formwork is overfilled, cracking may occur in the crossheads due stress concentrations near the upper crosshead braces. Figure 5-5: Consolidating concrete in the cracking frame After the concrete has been consolidated, it is finished with a wooden trowel, and the excess concrete on the top edge of the formwork and crossheads is removed with a moist sponge. The top of the specimen is then sealed with a layer of plastic secured with waterproof foil tape. The top layer of plastic is carefully cut to match the shape of the crosshead where the upper braces secure to the crosshead as shown in Figure 5-6. The top crosshead braces are bolted to the frame with a torque of 200 ft-lbs. In order to prevent water loss, the braces are sealed with silicone and covered with foil tape as shown in Figure 5-7. 101 Figure 5-6: Notching plastic for crosshead braces Figure 5-7: Sealing the crosshead braces with silicone and foil tape 5.3.4 INSTRUMENTATION Once the specimen is sealed, the formwork lid is strapped into place and the instrumentation is connected. Three temperature probes are placed in the specimen: one in each crosshead and one in the center of the specimen. In order to prevent damage to the temperature probes, a special tool is used to make a pilot hole for each probe. Before the probes are placed in the concrete they are coated with WD40 to allow for easy removal. Additional silicone sealant is used to seal the location where the temperature probes penetrate the formwork. Two more temperature probes are used to monitor the 102 temperature of the Invar side bars; a probe is placed in the end of each bar. Finally, the strain gauges are connected. Once all the instrumentation has been properly connected, the circulator is connected to the cracking frame with insulated flexible hoses that have quick-disconnect couplings. Lastly, the supports under the crossheads are removed to enable the frame to freely expand and contract. A rigid cracking frame in operation is presented in Figure 5-8. Additional pictures of the test procedure are presented in Section C.3 of Appendix C. Figure 5-8: Cracking frame in operation 5.3.5 DATA ACQUISITION The data acquisition system used to perform a cracking frame test includes: ? A PC equipped with a temperature control program, ? Two Campbell Scientific CR23X Microloggers?, and ? Three Polyscience 9612 Programmable Circulators. 103 The data-logger is programmed to read and record data once every ten seconds. The recorded data includes: ? Strain gauge output from each Invar side bar, ? Temperature of each Invar bar, ? Concrete temperature at the center of the specimen, ? Concrete temperature in each crosshead, and ? Ambient laboratory temperature. The data is temporarily stored in the internal memory of the data-logger and then averaged over a five-minute interval. The average values are then sent to the computer via a RS232 communication port. The strain gauge output is used to determine the stress development of the concrete specimen. The raw strain gauge data is transformed into an equivalent concrete load by applying the appropriate calibration factors determined during the calibration process described in Section 5.2. During the cooling phase, the concrete temperature measured at the center of the formwork is used as a target temperature to be controlled by the water circulating in the formwork. The temperature of the Invar side bars and the ambient laboratory temperature are recorded in case a temperature correction needs to be applied. 5.3.6 COOLING THE CONCRETE SPECIMEN The temperature control of the cracking frame is achieved though the use of a Polyscience 9612 programmable circulator. The circulator is connected to the computer via a RS232 communication port. The circulator is connected to the cracking frame with 104 ?-in. diameter insulated flexible hoses. If cracking has not occurred in the first four days (96 hours) of the test, the circulator is used to cool the temperature of the concrete specimen at a rate of 1?C/hr. The temperature is steadily reduced until cracking occurs. In order to cool the concrete without freezing the water in the circulator, the freezing point of the water is reduced by adding ethylene glycol. A mixture of 50% distilled water and 50% laboratory grade ethylene glycol is used. In most cases, the concrete specimen cracks before the end of the fifth day. 5.4 REMOVING THE CONCRETE SPECIMEN A cracking frame test is completed when the concrete specimen cracks. After the specimen cracks, the ethylene glycol water mixture is drained from the system and the water lines are disconnected from the circulator. The temperature probes are then carefully removed from the hardened concrete. The formwork lid is then removed, and the upper crosshead braces are unbolted. After the formwork is removed, the specimen is inspected to find the location of the crack. 5.4.1 EQUIPMENT REQUIRED TO REMOVE SPECIMEN Pictures of some of the equipment required to remove the specimens from the frame can be seen in Section C.4 of Appendix C. Equipment required to remove a specimen from the cracking frame includes: ? Concrete drill with 1?-in. masonry bit, ? Four 20-ton hydraulic bottle jacks, ? Two steel rigs, 105 ? Two 1-in. DYWIDAG bars (4-ft. minimum length) with anchor plates and nuts, ? Jackhammer, chisel, and steel brush. 5.4.2 REMOVAL PROCEDURE The specimen is removed from the cracking frame with hydraulic bottle jacks as shown in Figure 5-9. A 1?-in. diameter hole is bored through each end of the specimen, and a 1- in. DYWIDAG bar is inserted in each hole. A backing plate is placed under each crosshead, and a steel rig is placed on top of the bottle jacks. The DYWIDAG bar is secured with appropriate nuts, and then the jacks are used to pry the specimen out of the crossheads. To prevent bending of the frame, each end of the frame is jacked at the same rate. Figure 5-9: Specimen removal from the cracking frame 106 After the specimen is removed, the crossheads must be cleaned. The residual concrete is removed using a jackhammer and chisel. After most of the concrete is removed, a steel brush is used to clear the crosshead and grips of all remaining concrete. Additional pictures of the specimen removal process may be seen in Section C.5 of Appendix C. 107 CHAPTER 6 LABORATORY TESTING PROGRAM AND MATERIALS In order to accomplish the objectives set forth in Section 1.3 of Chapter 1, an experimental laboratory testing program was undertaken. The laboratory testing program is designed to evaluate the effects of fresh concrete temperature, aggregate type, and cementitious materials on the cracking tendency of concrete mixtures. 6.1 EXPERIMENTAL TESTING PROGRAM The experimental testing program requires two cracking frames and one match-curing box as described in Section 4.1 and Section 4.2 of Chapter 4 respectively. The concrete placed in the cracking frames is allowed to naturally hydrate for four days. If the specimen has not cracked after four days, the concrete is cooled at a rate of 1?C/hr until the specimen cracks. The match-curing box is used to match cure twenty-four 6 x 12 in. concrete cylinders to the concrete in the cracking frames. The match-cured cylinders are tested at six different ages?12 hours, 1 day, 2 days, 3 days, 7 days, and 28 days?to determine the mechanical properties of the concrete in the cracking frames. To allow the match-curing box to be reused after 7 days, the 28-day cylinders will be moved to a moist-curing room after the cracking frame specimen has cracked (? 5 days). 108 In order to produce the volume of concrete required for the rigid cracking frames and the match-curing box, two concrete batches must be produced: one batch for rigid cracking frame testing and another batch for a match-curing box test. The first batch, ?Batch A?, produces enough concrete for both rigid cracking frames: four 6 x 12 in. quality control cylinders, and three 3 x 3 in. shrinkage prisms. The cylinders are consolidated and cured in accordance with ASTM C192 (2002) and tested at 7 and 28 days in accordance with ASTM C39 (2003) for quality control purposes. All testing performed in the rigid cracking frames is carried out in accordance with the rigid cracking frame test procedure described in Section 5.3 of Chapter 5. Slump, total air content, unit weight, and fresh concrete temperature are collected for Batch A. The second batch, ?Batch B?, produces twenty-eight 6 x 12 in. concrete cylinders for the match-curing box test. Twenty-four of the cylinders are placed in the match-curing box immediately after all the cylinders are properly consolidated, while the other four quality control cylinders are cured in accordance with ASTM C192 (2002). These cylinders are tested at 7 and 28 days in accordance with ASTM C39 (2003) for quality control purposes and the results are compared to the cylinders from Batch A. Slump, total air content, unit weight, and fresh concrete temperature are also collected for Batch B. The temperature of the concrete cylinders in the match-curing box is measured by Type T thermocouple wire. In order to take advantage of the thermocouple connections located in the match-curing box, thermocouple wire outfitted with a quick-connect plug is used. Probes are constructed by stripping approximately ? in. of the wire and twisting the copper and constantan wires together. The probes are embedded approximately 4 in. deep in three concrete cylinders. 109 In order to obtain a representative specimen temperature, the cylinders containing the temperature probes are strategically placed in the match curing box. Figure 6-1 shows the location of the cylinders with temperature probes: a corner location, an exterior location, and an interior location. In order to record temperatures throughout the duration of a test, all the cylinders containing temperature probes must be placed in the 7-day and 28-day chambers. An average match-curing box temperature is obtained by taking a weighted average of the temperature of three cylinders: a corner cylinder, an exterior cylinder, and an interior cylinder. A weighted average temperature is computed by equation 6-1: 24 8124 int ?+?+? = eriorexteriorcorner AVG TTT T Equation 6-1 where, T AVG = weighted average match curing box temperature (?C), T corner = temperature of corner cylinder (?C), T exterior = temperature of exterior cylinder (?C), and T interior = temperature of interior cylinder (?C). ? 1 2 3 7 28 days X XX f t f c , E c f t f c , E c corner cylinder interior cylinder exterior cylinder Figure 6-1: Temperature probe layout in the match-curing box 110 6.2 CONCRETE MIXTURE PROPORTIONS Table 6-1 contains the mixture proportions of the concrete batches designed to evaluate the effects of fresh concrete temperature, coarse aggregate type, and cementitious materials on the cracking tendency of concrete mixtures. The notation shown in Figure 6- 2 is used. I-SRG-95 Cementitious Material Aggregate Type Placement Temperature Figure 6-2: Concrete mixture notation Each mixture is identified by three variables: cementitious materials, coarse aggregate type, and placement temperature. The first identifier in the mixture notation, cementitious material, contains one of three different labels: ? I for Type I cement, or ? III for Type III cement, or ? IF for Type I cement with 30% class F fly ash as replacement. The second identifier, aggregate type, contains one of two different labels: ? SRG for siliceous river gravel or ? LS for crushed limestone. 111 The third and final variable, fresh concrete placement temperature, contains one of three different labels: ? 50 for a target placement temperature of 50?F, or ? 73 for a target placement temperature of 73?F, or ? 95 for a target placement temperature of 95?F. For example, the mixture presented in Figure 6-2, I-SRG-95, is a mixture containing Type I cement and siliceous river gravel aggregate placed at 95?F. In order to systematically evaluate the effects of concrete constituents and temperature on the cracking sensitivity of a mixture, a control mix must be established for comparison purposes. The control mix, identified as I-SRG-73, consists of a standard Type I cement, water-to-cement ratio of 0.44, with No. 67 siliceous river gravel placed at 73?F. The control mixture represents a mixture that is considered to be typical of the Texas mass concrete industry. Each mixture detailed in Table 6-1 is designed for a specific purpose: ? I-SRG-73 ? control mixture used for comparison purposes, ? I-SRG-95 ? evaluates the effect of high placement temperatures, ? I-SRG-50 ? evaluates the effect of cold placement temperatures, ? I-LS-73 ? evaluates the effect of limestone aggregate, ? III-SRG-73 ? evaluates the effect of Type III cement, and ? IF-SRG-73 ? evaluates the effect of 30% Class F fly ash as replacement of cement. 112 Table 6-1: Concrete mixture proportions Type III Cement (III-) Class F Fly Ash (IF-) SRG-73 SRG-95 SRG-50 LS-73 SRG-73 SRG-73 Water (pcy) 269 269 269 269 269 269 Type I Cement (pcy) 611 611 611 611 - 428 Type III Cement (pcy) - - - - 611 - Clas F Fly Ash (pcy)-----18 Coarse aggregate type* SRG SRG SRG LS SRG SRG Coarse aggregate (pcy) 1,902 1,902 1,902 1,971 1,902 1,902 Fine aggregate (pcy) 1,255 1,255 1,255 1,255 1,255 1,255 Target placement tem 3 perature (?F) 73 95 50 73 73 73 Target air (%) 1.1 1.1 1.1 1.1 1.1 1.1 w/c 0.44 0.44 0.44 0.44 0.44 0.63 w/cm 0.44 0.44 0.44 0.44 0.44 0.44 * SRG = siliceous river gravel LS = crushed limestone Constituent Type I Cement (I-) 6.3 EXPERIMENTAL PROCEDURES All concrete mixing performed in this project was conducted in an enclosed air- conditioned concrete laboratory. The raw materials used to produce the concrete were also stored in the laboratory. Portland cement is stored in standard 94-lb sacks while the Class F Fly Ash is stored in sealed 55-gallon drums. The coarse aggregates are stored in large 3200 lb super sacks, and the fine aggregates are stored in sealed 55-gallon drums. The aggregates are replenished from large stockpiles stored outdoors at Twin City Concrete in Auburn, AL. 113 6.3.1 BATCHING Before the materials are batched, moisture corrections are performed on both the fine and coarse aggregates. The moisture corrections are carried out with a small digital scale and a hot plate. Once the moisture content of the aggregates is determined, the materials are batched into 5-gallon buckets. In an attempt prevent any moisture gain or loss, the buckets are sealed with lids. In order to produce concrete with hot and cold placement temperatures, the raw materials are heated or cooled in an environmental chamber for at least two days prior to mixing. The materials used to produce concrete at the control temperature (i.e. 73?F) are stored in the concrete laboratory for a minimum of one day prior to mixing. 6.3.2 MIXING PROCEDURE Before each batch, the mixer is ?buttered? to thoroughly coat the mixer with mortar. After the mortar is removed, approximately one third of the coarse and fine aggregates are added along with one third of the cementitious materials followed by one third of the total water. The materials are allowed to thoroughly mix for one minute before another third of the materials are added in the same order: aggregates, cement, and then water. After one more minute of mixing, the final third of the materials are added. All the materials are then mixed for five minutes. 6.3.3 FRESH CONCRETE TESTING After completion of mixing, the following fresh concrete tests were performed: ? Slump test according to ASTM C143 (2003), 114 ? Unit weight test according to ASTM C138 (2001), ? Air content test according to ASTM C231 (2004), and ? Fresh concrete temperature test according to ASTM C1064 (2004). 6.3.4 HARDENED CONCRETE TESTING Tests performed on the hardened concrete specimens include: ? Compressive strength according to ASTM C39 (2003), ? Static modulus of elasticity according to ASTM C469 (2002), ? Splitting tensile strength according to ASTM C496 (2004), and ? Drying shrinkage according to ASTM C157 (2004). 6.4 MATERIALS In order to determine effects of coarse aggregate type and cementitious materials on the cracking sensitivity of concrete mixtures, several different raw materials must be tested. The following sections provide a detailed discussion of the cementitious materials and aggregates used to produce the concrete mixtures detailed in Section 6.2. 6.4.1 CEMENTITIOUS MATERIALS In order to evaluate the effects of cement type on the cracking tendency of a concrete mixture, three different cementitious materials are used: ? Type I portland cement ? manufactured by Lafarge in Calera, AL, ? Type III portland cement ? manufactured by CEMEX in Demopolis, AL, and 115 ? Class F Fly Ash ? manufactured by Boral Material Technologies in Birmingham, AL. All of the cementitious materials were sampled and sent to an independent commercial laboratory for a chemical analysis. The chemical properties of the cementitious materials are presented in Table 6-2. Table 6-2: Chemical properties of cementitious materials Type I Type III Silicon dioxide, SiO 2 (%) 20.67 20.01 53.09 Aluminum oxide, Al 2 O 3 (%) 4.60 5.25 28.69 Iron oxide, Fe 2 O 3 (%) 2.91 3.88 7.68 Calcium oxide, CaO (%) 63.00 62.69 1.63 Magnesium oxide, MgO (%) 3.26 0.90 0.99 Alkalies (Na 2 O + 0.658K 2 O) (%) 0.27 0.27 2.05 Sulfur trioxide, SO 3 (%) 2.91 4.27 0.02 Loss on ignition, LOI (%) 1.88 2.02 2.46 Insoluble Residue (%) 0.38 0.38 - Tricalcium silicate, C 3 S (%) 55.98 50.16 - Dicalcium silicate, C 2 S (%) 17.03 19.52 - Tricalcium aluminate, C 3 A (%) 7.28 7.34 - Tetracalcium aluminoferrite, C 4 AF (%) 8.85 11.81 - Class F Fly Ash Parameter Portland Cement 6.4.2 COARSE AGGREGATES In order to evaluate the effects of coarse aggregate type on the cracking tendency of concrete mixtures, siliceous river gravel and crushed limestone aggregates are used. In order to maintain consistency, both of coarse aggregates are No. 67. The siliceous river 116 gravel was obtained from Martin Marietta Materials in Shorter, AL, while the crushed limestone was obtained from the O?Neal quarry of Martin Marietta Materials in Calera, AL. Both coarse aggregates were sampled and tested to determine their gradation, bulk specific gravity, and absorption capacity. The bulk specific gravity and the absorption capacity can be found in Table 6-3, while the gradations can be found in Figure 6-3 and Figure 6-4. The No. 67 siliceous river gravel is in accordance with ASTM C33 (2003); however, the No. 67 crushed limestone does not meet ASTM C33 (2003) requirements for the 3/8-in. sieve. The minimum percent passing the 3/8-in. sieve allowed by ASTM C33 (2003) is 20%; however, the No. 67 crushed limestone aggregate contained 19.2% percent passing the 3/8-in. sieve. Due to the numerous variables involved in performing a gradation test, the limestone aggregate was deemed acceptable. Table 6-3: Aggregate specific gravity and absorption capacity Material Bulk Specific Gravity (SSD) Absorption Capacity (%) No. 67 Silieous River Gravel 2.63 0.52 No. 67 Crushed Limestone 2.73 0.99 Fine Aggregate 2.61 0.41 117 0 10 20 30 40 50 60 70 80 90 100 1-in. 3/4-in. 3/8-in. No. 4 No. 8 Sieve Size Percent Passing ASTM C 33 Upper Limit ASTM C 33 Lower Limit No. 67 River Gravel Figure 6-3: No. 67 siliceous river gravel gradation 0 10 20 30 40 50 60 70 80 90 100 1-in. 3/4-in. 3/8-in. No. 4 No. 8 Sieve Size Percent Passing ASTM C 33 Upper Limit ASTM C 33 Lower Limit No. 67 Crushed Limestone Figure 6-4: No. 67 crushed limestone gradation 118 6.4.3 FINE AGGREGATES The fine aggregate used throughout the project was obtained from Foley Products in Shorter, AL. The fine aggregate was sampled and tested to determine the gradation, bulk specific gravity, and absorption capacity. The bulk specific gravity and the absorption capacity are presented in Table 6-3 and the gradation is presented in Figure 6-5. The fine aggregate is in compliance with ASTM C33 (2003). 0 10 20 30 40 50 60 70 80 90 100 3/8-in. No. 4 No. 8 No. 16 No. 30 No. 50 No. 100 Sieve Size Perc ent Passing ASTM C 33 Upper Limit ASTM C 33 Lower Limit Fine Aggregate Figure 6-5: Fine aggregate gradation 119 CHAPTER 7 PRESENTATION AND ANALYSIS OF RESULTS The results obtained from the laboratory testing program outlined in Chapter 6 are presented in this chapter. The fresh concrete properties as well as the hardened concrete properties of each batch are briefly discussed. The remainder of the chapter focuses on the results obtained from the rigid cracking frame testing. The effects of placement temperature, coarse aggregate type, and cementitious materials on the strength, stress, and temperature development are thoroughly examined. Finally, a discussion on the behavior of the two rigid cracking frames is provided. The notation used throughout this chapter is consistent with the notation described in Section 6.2 of Chapter 6. 7.1 FRESH CONCRETE PROPERTIES As discussed in Chapter 6, several tests were performed on the fresh concrete before placement. These tests included temperature, slump, total air content, and unit weight, all of which were performed in accordance with the appropriate ASTM standard. For comparative purposes, tests were performed on both concrete batches: ?Batch A? and ?Batch B?. The sizes of Batch A and Batch B were 5.40 ft 3 and 6.75 ft 3 respectively. Based on the results shown in Table 7-1, the fresh concrete properties of each batch differ. However the differences are small: the largest difference in measured slump is 120 1-in.; the largest difference in measured air content is 0.3%; and the largest difference in unit weight is 2.4 lb/ft 3 . Although the properties for each batch are not identical, the differences are within acceptable ranges. Table 7-1: Fresh Concrete Properties Temperature (?F) Slump (in.) Air (%) Unit Weight (lb/ft 3 ) Batch A 73 1/2 3.0 148.1 Batch B 72 1/2 3.0 147.5 Batch A 106 1 1/2 2.5 147.8 Batch B 107 1 1/4 2.5 147.6 Batch A 48 4 3.5 148.3 Batch B 43 4 1/2 3.4 145.9 Batch A 70 2 2.0 150.2 Batch B 70 1 3/4 2.3 150.5 Batch A 71 1/4 3.0 148.4 Batch B 73 1/4 3.0 148.0 Batch A 73 2 1.8 146.9 Batch B 71 3 1.7 146.8 I-SRG-50 I-LS-73 III-SRG-73 IF-SRG-73 I-SRG-73 I-SRG-95 Mixture 7.2 HARDENED CONCRETE PROPERTIES As discussed in Chapter 6, hardened concrete testing of the match-cured 6 x 12 in. cylinders included splitting tensile strength, compressive strength, and static modulus of elasticity. A summary of the 7-day and 28-day mechanical properties is given in Table 7- 2. The early-age splitting tensile strength, compressive strength, and modulus of elasticity 121 development is presented and discussed along with the rigid cracking frame results in Section 7.3. Table 7-2: 7-day and 28-day mechanical properties 7-day 28-day 7-day 28-day 7-day 28-day I-SRG-73 440 460 5010 6700 4850 5450 I-SRG-95 440 450 4490 5530 4700 5400 I-SRG-50 400 570 4650 6310 5000 5600 I-LS-73 440 515 4890 6480 5850 6450 III-SRG-73 440 515 5100 6400 4450 5050 IF-SRG-73 320 410 3190 5200 4600 4950 Modulus of Elasticity (ksi) Mixture Splitting Tensile Strength (psi) Compressive Strength (psi) The results obtained from the quality control ASTM C39 (2003) compressive- strength tests are given in Table 7-3. According to ACI 214 (1977), ?very good? laboratory batches have a 3% maximum coefficient of variation between batches; however, testing only two cylinders from each batch results in an increased maximum acceptable range of results. Based on ASTM C670 (2003), using only two test results to compute an average strength results in an increase in the coefficient of variation by a factor of 3.9. This translates into an 11.7% maximum acceptable range of results. The differences between each batch are within the 11.7% maximum acceptable range. 122 Table 7-3: Quality control compressive strength comparison Batch A Batch B Batch A Batch B I-SRG-73 5430 5110 6510 6700 I-SRG-95 4260 4220 5560 5260 I-SRG-50 3850 4380 5125 5740 I-LS-73 5030 4930 6750 6740 III-SRG-73 5700 5110 6890 6530 IF-SRG-73 3530 3400 5450 5430 7-day Compressive Strength (psi) 28-day Compressive Strength (psi) Mixture The drying shrinkage results obtained from ASTM C157 testing are presented in Figure 7-1. The specimens are placed in a moist-curing room and demolded in accordance with ASTM C157. The specimens are cured in a lime-saturated bath for seven days including the period in the molds. After curing in the lime-saturated bath, the specimens are placed in a drying room and readings are taken in accordance with ASTM C157. The early-age (<5 days) drying shrinkage is the smallest for the control mixture (I- SRG-73) while the other mixtures are approximately identical. After about six days, the Type III cement (III-SRG-73) displays the highest amount of drying shrinkage. The specimens tested in the rigid cracking frames are sealed so that no moisture is lost to the surrounding environment thus eliminating drying shrinkage deformations. However these deformations must be taken into consideration when determining the total 123 restraint stress development that may occur when each of these mixtures is used in actual structures. 0 50 100 150 200 250 300 0 7 14 21 28 Drying Age after 7-days in Lime Bath (days) Contraction (in/in x 10-6) I-SRG-73 I-SRG-95 I-SRG-50 I-LS-73 III-SRG-73 IF-SRG-73 Figure 7-1: Drying shrinkage results 7.3 RIGID CRACKING FRAME In the following sections the effect of fresh concrete placement temperature, coarse aggregate type, and cementitious material type will be evaluated based on the results obtained from the rigid cracking frame manufactured in Alabama. The results obtained from the rigid cracking frame are presented in Table 7-4. The parameters listed in each row of Table 7-4 are defined as follows: 124 (1) T C0 = fresh concrete placement temperature (?F), (2) ? C-max = maximum compressive stress (psi), (3) t ?c-max = concrete age when the maximum compressive stress (? C-max ) is reached (hours), (4) T C-max = maximum in-place concrete temperature (?F), (5) t Tc-max = concrete age when the maximum temperature (T c-max ) is reached (hours), (6) T zs = concrete temperature at which the compressive stresses are reduced and tensile stresses first begin to develop, referred to as the zero-stress temperature (?F), (7) t zs = concrete age when the zero-stress temperature (T zs ) occurs (hours), (8) ? 96 = concrete stress at the start of cooling (i.e. 96 hrs) (psi), (9) T 96 = concrete temperature at the start of cooling (i.e. 96 hrs) (?F), (10) ? cr = maximum tensile stress at cracking (psi), (11) T cr = concrete temperature at cracking, appropriately called the cracking temperature (?F), (12) t cr = concrete age at cracking (hours), and (13) ?T cr = temperature difference required to produce cracking (T zs ? T cr ) (?F). 125 Table 7-4: Summary of AU rigid cracking frame test results AU GER AU GER AU GER AU GER AU GER AU GER (1) T C0 (?F) 75 74 96 96 58 57 72 72 73 73 75 75 (2) ? C-max (psi) -85 -70 -65 -45 -85 -75 -55 -40 -125 -110 -40 -35 (3) t ?c-max (hrs) 11.8 11.8 8.4 8.3 15.9 16.5 13.8 14.0 11.6 11.6 12.5 12.8 (4) T C-max (?F) 99 98 110 111 96 95 95 95 102 102 93 93 (5) t Tc-max (hrs) 12.0 12.3 8.2 8.1 16.9 17.6 14.7 14.8 12.1 12.0 13.6 13.6 (6) T zs (?F) 93 93 104 107 90 89 90 92 94 96 90 90 (7) t zs (hrs) 17.6 17.3 12.6 11.2 26.3 26.1 20.9 19.6 18.0 17.1 18.2 17.6 (8) ? 96 (psi) 195 195 210 250 135 115 135 145 235 235 90 105 (9) T 96 (?F) 76 76 81 81 80 79 75 75 75 75 78 77 (10) ? cr (psi) 375 395 375 405 360 405 440 365 405 385 300 320 (11) T cr (?F) 54 56 59 62 54 52 40 48 54 55 60 58 (12) t cr (hrs) 108.6 107.3 108.5 105.9 108.3 109.6 116.3 111.4 108.2 104.7 106.3 106.9 (13) ?T cr (?F) 39 37 45 45 36 37 50 44 40 40 29 32 I-SRG-95 I-SRG-50I-SRG-73 III-SRG-73I-LS-73 IF-SRG-73 Parameter 126 7.3.1 EFFECT OF FRESH CONCRETE TEMPERATURE The effect of fresh concrete placement temperature on the restrained stress and temperature development is evaluated by mixtures I-SRG-95, I-SRG-73, and I-SRG-50. Mixture I-SRG-95 is a ?Hot? mixture placed at 96?F; mixture I-SRG-73 is the control mixture placed at 75?F; and mixture I-SRG-50 is a ?Cold? mixture placed at 58?F. The results obtained from the Auburn RCF are presented in Figures 7-2 and 7-3, while the mechanical properties of the mixtures are presented in Figures 7-4 through 7-6. As Figure 7-2 shows, the fresh concrete placement temperature affects the peak heat of hydration of each mixture. As expected, the ?Hot? mixture reaches the highest maximum temperature of 110?F, while the ?Cold? mixture only reaches a maximum temperature of 96?F. The control mixture falls between the ?Hot? and ?Cold? mixtures at a maximum temperature of 99?F. The temperature development of these mixtures appears to be representative of concretes placed at different temperatures but then cured at room temperature. The ?Hot? mixture has the highest zero stress temperature of 104?F, the control mixture somewhat lower at 93?F, and the ?Cold? mixture is lowest at 90?F. Although the fresh concrete placement temperature did not greatly affect the temperature of the hardening concrete after 1 day, the development of restraint stresses is highly affected by the placement temperature as shown in Figure 7-3. The ?Cold? mixture is very effective in reducing the development of restraint stresses. This reduction in stress can be directly related to the lower zero stress temperature obtained by the ?Cold? mixture. 127 73: 54 HOT: 59 COLD: 54 30 40 50 60 70 80 90 100 110 120 012345 Concrete Age (days) Concrete Temperature (?F) I-SRG-73 I-SRG-95 I-SRG-50 Figure 7-2: AU RCF: Effect of fresh concrete temperature on temperature development 73: 375 HOT: 375 COLD: 360 -200 -100 0 100 200 300 400 500 012345 Concrete Age (days) Concrete Stress (psi) I-SRG-73 I-SRG-95 I-SRG-50 Figure 7-3: AU RCF: Effect of fresh concrete temperature on stress development 128 The control mixture and the ?Cold? mixture produce the same pre-compression stress: 85 psi. The ?Hot? mixture however produces a pre-compression stress of only 65 psi. This can be explained by examining the temperature development of each mixture shown in Figure 7-2. The ?Hot? mixture reaches a maximum temperature much faster than the control and ?Cold? mixtures. Therefore the early-age compressive stresses that develop in the ?Hot? mixture are smaller due to the high relaxation of the young concrete. As expected, the stresses at the start of cooling are the highest for the ?Hot? mixture: 210 psi compared to 195 psi for the control mixture and 135 psi for the ?Cold? mixture. Perhaps the most interesting results are the cracking temperatures of each mixture. Although the ?Cold? mixture is very effective in reducing the overall stress development of the concrete, the cracking temperature is unaffected. Both the ?Cold? mixture and the control mixture cracked at a temperature of 54?F compared to 59?F for the ?Hot? mixture. The temperature difference (?T cr ) required to produce cracking is lower for the ?Control? mixture (36?F) compared to control (39?F) and ?Hot? mixtures (45?F). The mixtures placed at different temperatures do not display the same cracking temperature trends as the mixtures tested by Dr. Springenschmid at TUM. As discussed in Section 2.4.1, Dr. Springenschmid found that the fresh concrete temperature highly affected the cracking temperature. The difference in behavior of the tests performed in this project and the tests performed at TUM may be explained by the curing methods. Although the fresh concrete is placed in the cracking frame at different temperatures, all the mixtures are in effect cured at the same temperature. However, each mixture tested by Dr. Springenschmid was cured at the fresh concrete temperature. 129 As shown in Figure 7-4, the splitting tensile strength of the ?Hot? and ?Cold? mixtures is higher at the time of cracking (? 4? days) than the control mixture. However, the cracking stresses do not follow this trend. Both the control and ?Hot? mixtures cracked at a stress level of 375 psi, while the ?Cold? mixture cracked at a slightly lower stress of 360 psi. Another interesting result is the modulus of elasticity development shown in Figure 7- 6. After about 24 hours the splitting tensile strengths, shown in Figure 7-4, and the compressive strengths, shown in Figure 7-5, of each mixture are similar; however, the modulus of elasticity development of the ?Hot? mixture is much lower. 0 50 100 150 200 250 300 350 400 450 500 01234567 Concrete Age (days) Splitting Tensile Strength ( p si) I-SRG-73 I-SRG-95 I-SRG-50 Figure 7-4: Effect of fresh concrete temperature on splitting tensile strength 130 0 1000 2000 3000 4000 5000 6000 01234567 Concrete Age (days) Compressive S t rength (psi) I-SRG-73 I-SRG-95 I-SRG-50 Figure 7-5: Effect of fresh concrete temperature on compressive strength 0 1000 2000 3000 4000 5000 6000 01234567 Concrete Age (days) Static Modulus of Elasticity (ksi) I-SRG-73 I-SRG-95 I-SRG-50 Figure 7-6: Effect of fresh concrete temperature on modulus of elasticity 131 7.3.2 EFFECT OF COARSE AGGREGATE TYPE The effect of coarse aggregate type on the restrained stress and temperature development is evaluated by mixtures I-SRG-73 and I-LS-73. Mixture I-SRG-73 contains a siliceous river gravel (SRG) aggregate while mixture I-LS-73 contains a crushed limestone (LS) aggregate. The results obtained from the Auburn RCF are presented in Figures 7-7 and 7- 8 while the mechanical properties of the mixtures are presented in Figures 7-9 through 7- 11. As Figure 7-7 shows, the early-age (<24 hrs) temperature development of the SRG and LS mixtures differ slightly. The SRG mixture reaches a maximum temperature of 99?F while the LS mixture only reaches a maximum temperature of 95?F. The higher temperature development of the SRG mixture can be attributed to its lower specific heat (Trinhztfy, Blaauwendraad, and Jongendijk 1982). The temperature of the concrete when tensile stresses begin to develop (zero stress temperature) is higher in the SRG mixture at 93?F than the LS mixture at 90?F. Although the early-age temperature profiles of the two mixtures differ, the temperatures after 24 hours up to cooling are virtually identical; the temperature of the SRG mixture at the start of cooling is 76?F while the temperature of the LS mixture is 75?F. 132 SRG: 54 LS: 40 30 40 50 60 70 80 90 100 110 120 012345 Concrete Age (days) Concrete Temperature (?F) I-SRG-73 I-LS-73 Figure 7-7: AU RCF: Effect of coarse aggregate type on temperature development SRG: 375 LS: 440 -200 -100 0 100 200 300 400 500 01234 Concrete Age (days) C o ncrete S t ress (psi) 5 I-SRG-73 I-LS-73 Figure 7-8: AU RCF: Effect of coarse aggregate type on stress development 133 As Figure 7-8 shows, concrete mixtures composed of siliceous river gravel and crushed limestone display vastly different restraint stress development in the RCF. Just prior to cooling, the SRG mixture produced approximately 50% higher stresses than the LS mixture. The different behavior of the two mixtures is explained by the coefficient of thermal expansion (CTE) of each aggregate (Green, Carrasquillo, and McCullough 1987). The SRG aggregate has a much higher CTE than the LS aggregate, thus resulting in larger thermal induced deformations. Green, Carrasquillo, and McCullough (1987) report the CTE for concrete made with SRG and LS to be 8.0 x 10 -6 in/in/?F and 6.0 x 10 -6 in/in/?F respectively. As expected, the maximum compressive stress reached is higher for the SRG mixture than the LS mixture: 85 psi compared to 55 psi. Furthermore, the stresses at the start of cooling are also higher for the SRG mixture, 195 psi compared to 135 psi for the LS mixture. Based on these stress levels, the LS mixture is expected to have more cooling to cracking than the SRG mixture. The cracking temperature of each mixture, as expected, is very different; the SRG mixture cracked at a temperature of 54?F while the LS mixture cracked at a much lower temperature, 40?F. The temperature difference required to producing cracking is much higher for the LS mixture (50?F) compared to the SRG mixture (39?F). As discussed in Section 2.4.2 of Chapter 2, the same trend of lower CTE aggregates reducing the cracking temperature was found by Dr. Springenschmid. This also matches the trends in limiting temperature differentials proposed by Bamforth and Price (1995) as discussed in Section 2.1.1.1 of Chapter 2. 134 The corresponding cracking stress of each mixture is also vastly different: the SRG mixture cracked at a stress of 375 psi while the LS mixture cracked at much higher stress level, 440 psi. This difference in the cracking stress can be explained by examining the tensile strength development of each mixture. As Figure 7-9 displays, the splitting tensile strength of the LS mixture at the time of cracking (? 4? days) is 10% higher than the SRG mixture. Another interesting result is the modulus of elasticity development shown in Figure 7- 11. The modulus of elasticity of the LS mixture is much higher than the modulus of elasticity of the SRG mixture. According to the thermal stress equation (Equation 2-2) discussed in Chapter 2, an increased creep-adjusted modulus of elasticity leads to higher restrained stresses. Although the results shown in Figure 7-11 are not creep adjusted, the trend of a higher modulus of elasticity producing larger restrained stress is still valid. The results from the RCF reveal sensitivity of the restrained stress development to the CTE of the hardening concrete. The lower CTE of the LS mixture fully compensates for the higher modulus of elasticity, in turn reducing the restrained stresses. 135 0 50 100 150 200 250 300 350 400 450 500 01234567 Concrete Age (days) S p litti n g T e n s ile Stre ng th (psi) I-SRG-73 I-LS-73 Figure 7-9: Effect of coarse aggregate type on splitting tensile strength 0 1000 2000 3000 4000 5000 6000 01234567 Concrete Age (days) C o mp ressiv e Stre ng th (ps i ) I-SRG-73 I-LS-73 Figure 7-10: Effect of coarse aggregate type on compressive strength 136 0 1000 2000 3000 4000 5000 6000 01234567 Concrete Age (days) Static Modulus of Elasticity (ksi) I-SRG-73 I-LS-73 Figure 7-11: Effect of coarse aggregate type on modulus of elasticity 7.3.3 EFFECT OF CEMENTITIOUS MATERIALS The effect of cementitious materials on the restrained stress and temperature development is evaluated using Mixtures I-SRG-73, III-SRG-73, and IF-SRG-73. Mixture I-SRG-73 contains Type I portland cement, Mixture III-SRG-73 contains Type III portland cement, and Mixture IF-SRG-73 contains Type I portland cement with 30% class F fly ash as replacement of cement. The results obtained from the Auburn RCF are presented in Figures 7-12 and 7-13, while the mechanical properties of these mixtures are presented in Figures 7-14 through 7-16. 137 I: 54III: 54 IF: 60 30 40 50 60 70 80 90 100 110 120 012345 Concrete Age (days) Concrete Temperature (?F) I-SRG-73 III-SRG-73 IF-SRG-73 Figure 7-12: AU RCF: Effect of cementitious materials on temperature development I: 375 III: 405 IF: 300 -200 -100 0 100 200 300 400 500 01234 Concrete Age (days) C o ncrete S t ress (psi) 5 I-SRG-73 III-SRG-73 IF-SRG-73 Figure 7-13: AU RCF: Effect of cementitious materials on stress development 138 As Figure 7-12 shows, the types of cementitious materials affect the early-age (<24 hrs) temperature development. The Type III mixture reaches the highest maximum temperature of 102?F while the Type I mixture reaches a maximum temperature of 99?F. The fly ash mixture however, is very efficient in reducing the concrete temperature to a maximum value of 93?F. The zero stress temperatures follow the same trend; the Type III mixture has the highest temperature of 94?F; the Type I mixture is just below with a temperature of 93?F; and the fly ash mixture is somewhat lower at 90?F. As shown in Figure 7-13, cementitious materials greatly affect the development of restraint stresses in the RCF. The difference in behavior can be explained by the difference in zero-stress temperatures and curing temperature histories of the mixtures. As expected, the Type III mixture produces the largest compressive stress: 125 psi compared to 85 psi for the Type I mixture and 40 psi for the fly ash mixture. This can be explained by examining the rate of modulus of elasticity development shown in Figure 7- 16 and the temperature history of each mixture. The Type III mixture has the highest early-age modulus, thus resulting in largest pre-compression stresses while the fly ash mixture has the lowest early-age modulus, thus resulting in a lower pre-compression. As expected, the stresses at the start of cooling are the highest for the Type III mixture: 235 psi compared to 195 psi for the Type I mixture and 90 psi for the fly ash mixture. Perhaps the most interesting results are the cracking temperatures of each mixture. Although fly ash is very effective in reducing the overall heat development of the concrete, the fly ash mixture has the highest cracking temperature, 60?F compared to the Type III and Type I mixtures, both of which cracked at a temperature of 54?F. The 139 temperature difference required to produce cracking is much lower for the fly ash mixture (29?F) compared to the Type III (40?F) and Type I mixtures (39?F). The corresponding cracking stress of each mixture is also vastly different. As expected, the Type III mixture cracked at the highest stress level, 405 psi, compared to the other mixtures: 375 psi for the Type I mixture and 300 psi for the fly ash mixture. This difference in the cracking stress may be explained by difference in tensile strength development of each mixture. The Type III mixture has the highest splitting tensile strength, which required the largest stress at cracking, while the fly ash mixture has the lowest splitting tensile strength, thus resulting in the lowest stress at cracking. Another interesting result is the modulus of elasticity development shown in Figure 7- 16. Although the splitting tensile strengths and compressive strengths are different, the modulus of elasticity development is approximately the same for each mixture. This result may indicate that the modulus of elasticity is not proportional to the square root of the compressive strength. 140 0 50 100 150 200 250 300 350 400 450 500 1234567 Concrete Age (days) Splitt ing Tensil e St rength (psi) I-SRG-73 III-SRG-73 IF-SRG-73 Figure 7-14: Effect of cementitious materials on splitting tensile strength 0 1000 2000 3000 4000 5000 6000 01234567 Concrete Age (days) Com p ressive St rength (psi) I-SRG-73 III-SRG-73 IF-SRG-73 Figure 7-15: Effect of cementitious materials on compressive strength 141 0 1000 2000 3000 4000 5000 6000 01234567 Concrete Age (days) Static Modulus of Elasticity (ksi) I-SRG-73 III-SRG-73 IF-SRG-73 Figure 7-16: Effect of cementitious materials on modulus of elasticity 7.3.4 RIGID CRACKING FRAME COMPARISON In order to evaluate the effectiveness of the Auburn cracking frame manufactured in Alabama, comparison tests must be performed. The temperature and stress development of the control mixture in both the Auburn (AU) and German (GER) cracking frames is presented in Figures 7-17 and 7-18 respectively. A comparison of each mixture is presented in Appendix G. Table 7-5 summarizes some of the important values obtained from each mixture. 142 AU: 54 GER: 56 30 40 50 60 70 80 90 100 110 120 012345 Concrete Age (days) Concrete Te mperature (?F) Auburn RCF German RCF Figure 7-17: RCF comparison: I-SRG-73 temperature development AU: 375 GER: 395 -200 -100 0 100 200 300 400 500 012345 Concrete Age (days) Conc re te Stre ss (ps i ) Auburn RCF German RCF Figure 7-18: RCF comparison: I-SRG-73 stress development 143 As shown in Figures 7-17 and 7-18, the temperature and stress development in each cracking frame is virtually identical. The jagged stresses seen in the AU RCF just before cracking may be a result of bond failures and micro-cracking. These bond failures and micro-cracking affected the cracking temperature. The bond failures and micro-cracking reduced the tensile strength capacity of the concrete specimen, thus reducing the stress at cracking. As shown in Table 7-5, the data obtained from the two cracking frames are comparable. The largest difference in the maximum in-place concrete temperature, 3?F (3%), occurred in Mixture I-SRG-95. The largest difference in maximum compressive stress, 20 psi (31%), also occurred in Mixture I-SRG-95. This difference is directly related to the difference in the maximum concrete temperature. The largest difference in cracking temperature, 8?F (19%), and cracking stress, 75?F (21%), occurred in Mixture I- LS-73. The difference in behavior can be attributed to the type of failure of each specimen. The AU RCF specimen cracked in the central portion where the stresses are uniaxial; however, the GER RCF specimen cracked at the joint where the formwork meets the crosshead where stress concentrations form. 144 Table 7-5: Rigid cracking frame comparison AU GER AU GER AU GER AU GER AU GER AU GER (1) T C0 (?F) 75 74 96 96 58 57 72 72 73 73 75 75 (2) ? C-max (psi) -85 -70 -65 -45 -85 -75 -55 -40 -125 -110 -40 -35 (4) T C-max (?F) 99 98 110 111 96 95 95 95 102 102 93 93 (6) T zs (?F) 93 93 104 107 90 89 90 92 94 96 90 90 (7) t zs (hrs) 17.6 17.3 12.6 11.2 26.3 26.1 20.9 19.6 18.0 17.1 18.2 17.6 (10) ? cr (psi) 375 395 375 405 360 405 440 365 405 385 300 320 (11) T cr (?F) 54 56 59 62 54 52 40 48 54 55 60 58 (12) t cr (hrs) 108.6 107.3 108.5 105.9 108.3 109.6 116.3 111.4 108.2 104.7 106.3 106.9 (13) ?T cr (?F) 39 37 45 45 36 37 50 44 40 40 29 32 I-SRG-95 I-SRG-50I-SRG-73 III-SRG-73I-LS-73 IF-SRG-73 Parameter 145 7.3.5 EVALUATION OF CRACKING STRESS-TO-STRENGTH RATIO As discussed in Chapter 2, cracking initiates when the tensile stress exceeds the tensile strength of the hardening concrete. Table 7-6 summarizes the stress at cracking, the strength at cracking, and a ratio of the two for each mixture. The stress at cracking is measured in the rigid cracking frame while the strength at cracking is computed by linear interpolating between the splitting tensile strengths measured at 3-days and 7-days. As shown in Table 7-6, the splitting tensile strength correlates well with the cracking stress; the differences are within the margin of error of the splitting tensile test. Table 7-6: Cracking stress-to-strength ratio Stress @ Cracking Strength @ Cracking Ratio Stress @ Cracking Strength @ Cracking Ratio I-SRG-73 375 405 0.93 395 400 0.99 I-SRG-95 375 445 0.84 405 445 0.91 I-SRG-50 360 415 0.87 405 415 0.98 I-LS-73 440 435 1.01 365 435 0.84 III-SRG-73 405 445 0.91 385 445 0.87 IF-SRG-73 300 305 0.98 320 305 1.05 German Cracking Frame Mixture Auburn Cracking Frame 7.4 DISCUSSION OF TEST PROCEDURE In order to provide meaningful and reliable results with the testing procedures detailed throughout this thesis, the following items must be addressed: 146 ? The restraining bars in the rigid cracking frame must be manufactured from a material that exhibits a very low coefficient of thermal expansion such as Invar. The difference in restraint stress development between the two cracking frames may be a result of the difference in CTE of the Invar side bars. The CTE of the Invar in the German cracking frame is 0.7 x 10 -6 /?F while the CTE of the Invar in the Auburn cracking frame is 0.94 x 10 -6 /?F. The slightest movement of the bars will affect the measurement of restraint stresses. ? Based on Dr. Springenschmid?s results, 50-cm thick concrete elements reach a peak heat of hydration between 110 and 120?F. The current formwork only provides a range of 90?105?F, therefore the amount of thermal insulation may need to be increased. ? The use of crosshead braces is crucial to avoid cracking in the crossheads. Proper tightening of the braces prevents the crosshead from opening during the tensile phase of a test. ? Cracking in the crossheads may occur due to stress concentrations that form near the crosshead braces. Care must be taken to smooth the transition from the formwork to the bottom crosshead braces with silicone and foil tape. Care must also be taken so as not to overfill the formwork creating stress concentrations near the upper crosshead braces. ? A match-curing system such as the match-curing box is necessary to obtain the early-age mechanical properties of the concrete being testing in the cracking frame. 147 ? High-quality test control software and data acquisition equipment is essential to obtain reliable test results. 7.5 CONCLUSIONS The results obtained from the laboratory testing program reveal that the cracking temperature of a mixture may not be a useful tool in assessing the cracking susceptibility of the mixture. However, the restrained stress measurements obtained from the cracking frame can be a useful tool in evaluating the behavior and cracking susceptibility of the mixture. The restraint stress development can be compared to the tensile strength development to assess the cracking susceptibility of the concrete mixture in the rigid cracking frame. The test results obtained from the rigid cracking frame manufactured in Alabama were similar to the results obtained in the frame manufactured in Germany. Test results obtained from the cracking frame manufactured in Alabama revealed the following: ? The cracking temperature may not be the best indicator of cracking risk; however, the early-age stress development can be used to assess the cracking sensitivity. A comparison of the early-age stress and strength development can be used to assess the risk of cracking. ? The restrained stress development is highly affected by the fresh concrete placement temperature: the lower the placement temperature, the lower the development of restraint stresses. ? The development of restrained stresses is greatly reduced when limestone course aggregate is used in the place of siliceous river gravel. The difference in stress 148 development may be due to the difference in the coefficient of thermal expansion of each aggregate. ? The cementitious material type has a very significant effect on the stress development: cements with high early strength produce higher restraint stresses. ? Fly ash is very effective in reducing the heat of hydration thus reducing the development of restraint stresses. However, the strength development of the fly ash mixture is lower than the other cements potentially leading to early-age cracking thus offsetting the benefits of lower restraint stress. 149 CHAPTER 8 CONCLUSIONS AND RECOMMENDATIONS Early-age cracking in concrete structures is a growing dilemma throughout the United States. Structures such as bridge decks, piers, foundations, and pavements are all prone to problems related to early-age cracking. Self-induced stresses arise when thermal, autogenous, and drying shrinkage deformations are restrained. Cracking initiates when the induced tensile stresses exceed the tensile strength of the hardening concrete. In order to investigate the development of restraint stresses, state-of-the-art testing frames were employed during this study. Temperature-controlled rigid cracking frames, shown in Figure 8-1, were used to assess the development of restrained stresses and quantify the risk of early-age cracking. Since the mechanical properties of early-age concrete are highly dependent on the curing temperature, a match-curing box, also shown in Figure 8-1, was developed. The purpose of this box is to match the curing temperature of 6 x 12 in. molded cylinders to the temperature of the concrete in the rigid cracking frame. 150 MATCH- CURING BOX TEMPERATURE- CONTROLLED RIGID CRACKING FRAMES Figure 8-1: Laboratory test setup An experimental laboratory testing program implementing two rigid cracking frames and the match-curing box was developed. Six concrete mixtures were tested to investigate the effects of fresh concrete temperature and concrete constituents on the early-age restrained stress development. The effects of fresh concrete temperature were investigated by batching concrete mixtures at three different temperatures: a hot temperature, a cold temperature, and a control temperature. The effects of concrete constituents were investigated by examining different cement types, different coarse aggregate types, and the use of fly ash as cement replacement. Each batch was placed in the thermally insulated formwork and sealed to prevent moisture loss. The concrete was allowed to hydrate in the formwork for 4 days and then 151 artificially cooled at a rate of 1?C/hr until cracking (? 5 days). Standard 6 x 12 in. concrete cylinders were placed in the match-curing box and cured to the same temperature as the cracking frame. These cylinders were tested to determine the early-age splitting tensile strength, compressive strength, and modulus of elasticity development. 8.1 CONCLUSIONS The test method developed and discussed in this thesis is feasible and provides a means to measure the development of restraint stresses in concrete elements during the critical early-age period. Results from the experimental laboratory testing program revealed the following: ? The cracking temperature measured from the rigid cracking frame may not be the best indicator of cracking risk; however, the early-age stress development measured in the rigid cracking frame can be used to assess the cracking sensitivity. A comparison of the early-age stress and strength development can be used to assess the risk of cracking. ? The development of restrained stresses is greatly reduced when limestone course aggregate is used in the place of siliceous river gravel. The difference in stress development may be due to the difference in the coefficient of thermal expansion of each aggregate type. ? The restrained stress development is highly affected by the fresh concrete placement temperature. The lower the placement temperature, the lower the development of restraint stresses. 152 ? The cementitious material type has a very significant effect on the stress development. Cements with high early strength produce higher restraint stresses. ? Fly ash is very effective in reducing the heat of hydration, thus reducing the development of restraint stresses. However, the strength development of the fly ash mixture is lower than the other cements, and this may lead to early-age cracking. Although the cracking temperature does not seem to be a good index to quantify the cracking sensitivity of a mixture, the rigid cracking frame allows one to examine the development of restrained stresses at early ages. The risk of cracking can be assessed by comparing the stress development to the strength development. The behavior of two rigid cracking frames is also evaluated in this thesis. Based on the results presented in Section 7.3.3 of and Appendix G, it is concluded that the cracking frame in Alabama provides results that are comparable to the one manufactured in Germany. 8.2 RECOMMENDATIONS In order to develop a thorough understanding of the cracking sensitivity of concrete mixtures, additional research is recommended. Appropriate research may include: 1) Further investigations into the effect of concrete constituents on the early-age restraint stress development and cracking tendency, 2) Isothermal testing to quantify the effects of autogenous shrinkage, and 153 3) Curing the rigid cracking frame specimen to realistic temperature profiles experienced by bridge piers, bridge decks, and pavements. Further research may provide a means to model the response of restrained concrete thus allowing one to predict stresses and cracking. Once mechanistic models have been developed, the validity of the 35?F maximum temperature difference (between the surface and the core) can be evaluated. These models could also be of use to engineers to evaluate the effect of various mitigation measures to minimize the occurrence of early- age cracking. Based on the experience gained through the development and execution of the testing program outlined in this thesis, the following test setup recommendations are provided: ? The use of Invar with a very low CTE similar to the German Invar specification (CTE = 0.7 x 10 -6 /?F) is required when manufacturing a cracking frame, ? The thermal insulation of the cracking frame formwork may need to be increased. Based on Dr. Springenschmid?s results, 50-cm thick concrete elements reach a peak heat of hydration between 110 and 120?F. The current formwork only provides a range of 90 ? 105?F, ? Proper tightening of the crosshead braces is imperative to avoid cracking in the crossheads, and ? The development of high-quality test control software is essential to reliable cracking frame testing. 154 REFERENCES AASHTO PP 34-99. 1999. Estimating the Cracking Tendency of Concrete. Preliminary Provision. American Association of State Highway and Transportation Officials. Washington D.C. ACI 116R-00. 2000. Cement and Concrete Terminology. Farmington Hills, MI: American Concrete Institute. ACI 207.1R-96. 1996. Mass Concrete. Farmington Hills, MI: American Concrete Institute. ACI 207.2R-95. 1995. Effect of Restraint, Volume Change, and Reinforcement on Cracking of Mass Concrete. Farmington Hills, MI: American Concrete Institute. ACI 214-77. 1997. Recommended Practice for Evaluation of Strength Test Results of Concrete. Farmington Hills, MI: American Concrete Institute. ASTM C 1064. 2004. Standard Test Method for Temperature of Freshly Mixed Hydraulic-Cement Concrete. American Society for Testing and Materials. West Conshohocken, PA. ASTM C 138. 2001. Standard Test Method for Density (Unit Weight), Yield, and Air Content (Gravimetric) of Concrete. American Society for Testing and Materials. West Conshohocken, PA. 155 ASTM C 143. 2003. Standard Test Method for Slump of Hydraulic-Cement Concrete. American Society for Testing and Materials. West Conshohocken, PA. ASTM C 157. 2004. Standard Test Method for Length Change of Hardened Hydraulic- Cement Mortar and Concrete. American Society for Testing and Materials. West Conshohocken, PA. ASTM C 1581. 2004. Standard Test Method for Determining Age at Cracking and Induced Tensile Stress Characteristics of Mortar and Concrete under Restrained Shrinkage. American Society for Testing and Materials. West Conshohocken, PA. ASTM C 192. 2002. Standard Practice for Making and Curing Concrete Test Specimens in the Laboratory. American Society for Testing and Materials. West Conshohocken, PA. ASTM C 231. 2004. Standard Test Method for Air Content of Freshly Mixed Concrete by the Pressure Method. American Society for Testing and Materials. West Conshohocken, PA. ASTM C 33. 2003. Standard Specification for Concrete Aggregates. American Society for Testing and Materials. West Conshohocken, PA. ASTM C 39. 2003. Standard Test Method for Compressive Strength of Cylindrical Concrete Specimens. American Society for Testing and Materials. West Conshohocken, PA. 156 ASTM C 469. 2002. Standard Test Method for Static Modulus of Elasticity and Poisson?s Ratio of Concrete in Compression. American Society for Testing and Materials. West Conshohocken, PA. ASTM C 496. 2004. Standard Test Method for Splitting Tensile Strength of Cylindrical Concrete Specimens. American Society for Testing and Materials. West Conshohocken, PA. ASTM C 670. 2003. Standard Practice for Preparing Precision and Bias Statements for Test Methods for Construction Materials. American Society for Testing and Materials. West Conshohocken, PA. Bamforth, P.B. and W.F. Price. 1995. Concreting Deep Lifts and Large Volume Pours. Westminster London: Construction Industry Research and Information Association. CIRIA Report 135. Ba?ant, Z.P. and E. Osman. 1976. Double Power Law for Basic Creep of Concrete. Materials and Structures 9, no. 49: 3-11. Ba?ant, Z.P. and J.C. Chern. 1985a. Log Double Power Law for Concrete Creep. Journal of the American Concrete Institute 82, no. 5: 665-675. Ba?ant, Z.P. and J.C. Chern. 1985b. Triple Power Law for Concrete Creep. Journal of Engineering Mechanics 111, no. 1: 63-83. Ba?ant, Z.P. and J.C. Chern. 1985c. Concrete Creep at Variable Humidity Materials and Structures 18, no. 103: 1-19. 157 Bj?ntegaard, ?. 1999. Thermal Dilation and Autogenous Deformation as Driving Forces to Self-Induced Stresses in High Performance Concrete. Doctoral Thesis. Norwegian University of Science and Technology, Division of Structural Engineering. Breitenb?cher, R. 1990. Investigation of Thermal Cracking with the Cracking-Frame. Materials and Structures 23, no. 135: 172-177. Breitenb?cher, R. and M. Mangold. 1994. Minimization of Thermal Cracking in Concrete at Early Ages. In RILEM Proceedings 25, Thermal Cracking in Concrete at Early Ages, ed. R. Springenschmid, 205-212. London: E & FN Spon. Burrows, R.W. 1998. The Visible and Invisible Cracking of Concrete. ACI Monograph No. 11. Farmington Hills, MI: American Concrete Institute. Byfors, J. 1980. Plain Concrete at Early-Ages. Swedish Cement and Concrete Research Institute, Fo/Research 3:80, Stockholm. Chini, A.R., LL.C. Muszynski, L. Acquaye, and S. Tarkhan. 2003. Determination of the Maximum Placement and Curing Temperatures in Mass Concrete to Avoid Durability Problems and DEF. Florida DOT Project BC 354-29. University of Florida. Emanuel, J.H. and L. Hulsey. 1977. Prediction of the Thermal Coefficient of Expansion of Concrete. Journal of the American Concrete Institute 74, no. 4: 149-155. Emborg, M. 1989. Thermal Stresses in Concrete Structures at Early Ages. Doctoral Thesis. Lule? University of Technology, Division of Structural Engineering. 158 Federal Highway Administration High Performance Concrete Website. 2005. Located on the World Wide Web at: http://knowledge.fhwa.dot.gov/cops/hpcx.nsf/home? openform&Group=HPC%20Cast-in-Place%20Construction&tab=WIP Gajda, J. and M. VanGeem. 2002. Controlling Temperatures in Mass Concrete ? Understanding mass concrete is the key to controlling temperatures and ultimately saving time, effort and money. Concrete International. January, 59-62. Green, W.J., R.L. Carrasquillo, and B.F. McCullough. 1987. Coarse Aggregate for PCC ? Pilot Study Evaluation. Research Report 422-1. Center for Transportation Research. Austin, Texas. p. 32. Holt, E. and M. Leivo. 2004. Cracking Risks Associated with Early Age Shrinkage. Cement and Concrete Composites 26, no. 5: 521-530. Holt, E. 2004. Contribution of Mixture Design to Chemical and Autogenous Shrinkage of Concrete at Ealry Ages. Cement and Concrete Research 35, no. 3: 464-472. Kada, H., M. Lachemi, N. Petrov, O. Bonnequ, and P.-C. A?tcin. 2002. Determination of the Coefficient of Thermal Expansion of High Performance Concrete from Initial Setting. Materials and Structures 35, no. 245: 35-41. Krauss, P.D. and E.A. Rogalla. 1996. Transverse Cracking in Newly Constructed Bridge Decks. Washington D.C.: Transportation Research Board, National Research Council. NCHRP Report 380. 159 Larson, M. 2000. Estimation of Crack Risk in Early Age Concrete: Simplified Methods for Practical Use. Licentiate Thesis. Lule? University of Technology, Division of Structural Engineering. Larson, M. 2003. Thermal Crack Estimation in Early Age Concrete: Models and Methods for Practical Application. Doctoral Thesis. Lule? University of Technology, Division of Structural Engineering. Lynam, C.G. 1934. Growth and Movement in Portland Cement Concrete. London: Oxford University Press. Mangold, M. 1994. The Development of Restraint and Intrinsic Stresses in Concrete Members during Hydration. Doctoral Thesis. Technical University of Munich. Mangold, M. 1998. Methods for Experimental Determination of Thermal Stresses and Crack Sensitivity in the Laboratory. In RILEM Report 15, Prevention of Thermal Cracking in Concrete at Early Ages, ed. R. Springenschmid, 26-39. London: E & FN Spon. McCraven, S. 2001. Are Temperature Requirements in Mass Concrete Specifications Reasonable? Concrete Construction Magazine. October, 68-70. Nilsson, M. 2003. Restraint Factors and Partial Coefficients for Crack Risk Analyses of Early Age Concrete Structures. Doctoral Thesis 2003:19. Lule? University of Technology, Division of Structural Engineering. RILEM Technical Committee 119 ? TCE. 1998. Testing of the Cracking Tendency of Concrete at Early-Ages in the Cracking Frame Test. In RILEM Report 15, 160 Prevention of Thermal Cracking in Concrete at Early Ages, ed. R. Springenschmid, 339-346. London: E & FN Spon. Springenschmid, R. and R. Breitenb?cher. 1998. Influence of Constituents, Mix Proportions and Temperature on Cracking Sensitivity of Concrete. In RILEM Report 15, Prevention of Thermal Cracking in Concrete at Early Ages, ed. R. Springenschmid, 40-50. London: E & FN Spon. Springenschmid, R., E. Gierlinger, and W. Kiernozycki. 1985. Thermal Stresses in Mass Concrete: A New Testing Method and the Influence of Different Cements. In 15 th Congress of the International Commission on Large Dams, Lausanne, Report 4, Vol. 2. 57-72. Paris: International Commission on Large Dams. Springenschmid, R., R. Breitenb?cher, and M. Mangold. 1994. Development of the Cracking Frame and the Temperature-Stress Testing Machine. In RILEM Proceedings 25, Thermal Cracking in Concrete at Early Ages, ed. R. Springenschmid, 137-144. London: E & FN Spon. Springenschmid, R., R. Breitenb?cher, and W. Kussman. 1987. Cracking Tendency of Concretes with Blastfurnace Slag Cements due to Outflow Heat of Hydration. Concrete Precasting Plant Technology 53, no. 12: 817-821. Thomas, M.D.A. and P.K. Mukherjee. 1994. The Effect of Slag on Thermal Cracking in Concrete. In RILEM Proceedings 25, Thermal Cracking in Concrete at Early Ages, ed. R. Springenschmid, 197-204. London: E & FN Spon. 161 Trinhztfy, H.W., J. Blaauwendraad, and J. Jongendijk. 1982. Temperature Development in Concrete Structures Taking Account of State Dependent Properties. In Proceedings from RILEM International Conference on Concrete at Early Ages, Vol. I. 211-218. Paris. TUM Rigid Cracking Frame Manual. 2003. Report Nr.: T 21149/03. Technical University of Munich. Germany. TxDOT. 2004. Standard Specifications for Construction and Maintenance of Highways, Streets, and Bridges. Texas Department of Transportation. Austin, Texas. p 500. Verbeck, G.J. and R.H. Helmuth. 1968. Structure and Physical Properties of Cement Paste. Proceedings of 5 th International Symposium on Chemistry of Cement. Tokyo, Part III, p 1-32. Westman, G. 1999. Concrete Creep and Thermal Stresses: New Creep Models and their Effects on Stress Development. Doctoral Thesis. Lule? University of Technology, Division of Structural Engineering. 162 APPENDIX A CRACKING FRAME SCANNING TRIP The objective of this appendix is to present additional pictures that aid in demonstrating the rigid cracking frame testing procedures developed by Dr. Rupert Springenschmid at the Technical University of Munich (TUM). The preparation required to perform a rigid cracking frame test is documented in Section A.1 while the equipment used to carry out a test is documented in Section A.2. The process and equipment used to remove a test specimen from the cracking frame is documented in Sections A.3 and A.4 respectively. A.1 TEST PREPARATION Figure A-1: Formwork preparation 163 Figure A-2: Concrete placement Figure A-3: Vibration of fresh concrete 164 Figure A-4: Sealing the concrete specimen with plastic Figure A-5: Securing the crosshead braces with a torque wrench 165 Figure A-6: Sealing the crosshead braces with silicone 166 A.2 TESTING EQUIPMENT Figure A-7: Rigid cracking frame 167 Figure A-8: Strain gauges mounted on the Invar side bars Figure A-9: Load cell and calibration linkage 168 Figure A-10: Insulated formwork with copper water lines A.3 SPECIMEN REMOVAL Figure A-11: Drilling a hole to remove the specimen from the crosshead 169 Figure A-12: Jacking the specimen out of the crosshead Figure A-13: Removal of residual concrete with a jackhammer 170 Figure A-14: Cleaning the crosshead with a steel brush A.4 SPECIMEN REMOVAL EQUIPMENT Figure A-15: Bottle jacks and steel rig 171 APPENDIX B RIGID CRACKING FRAME The objective of this appendix is to present figures to document the manufacturing process of all the components of a rigid cracking frame. Section B.1 contains the shop drawings used by Brunner Maschinenbau to manufacture the German (GER) cracking frame in Munich and Section B.2 contains the shop drawings used by Davis Machine Works to manufacture the Auburn (AU) cracking frame. None of the cracking frame design drawings include the modifications discussed in Section 4.1 of Chapter 4. Section B.3 contains construction pictures of the thermally insulated formwork designed and built by the author. 172 B.1 GERMAN CRACKING FRAME Figure B-1: GER rigid cracking frame overview 173 Figure B-2: GER crosshead components 174 Figure B-3: GER crosshead assembly details (part 1) 175 Figure B-4: GER crosshead assembly details (part 2) 176 Figure B-5: GER crosshead component: POS 1 Figure B-6: GER crosshead component: POS 2 177 Figure B-7: GER crosshead component: POS 3 and POS 4 Figure B-8: GER crosshead component: POS 5 178 Figure B-9: GER crosshead component: POS 6 179 Figure B-10: GER crosshead component: POS 7 180 Figure B-11: GER crosshead component: POS 8 181 Figure B-12: GER crosshead component: POS 9 182 Figure B-13: GER crosshead component: POS 10 183 184 Figure B-14: GER Invar side bars: POS 11 B.2 AUBURN CRACKING FRAME Figure B-15: AU crosshead assembly 185 Figure B-16: AU crosshead component: Item A Figure B-17: AU crosshead component: Item B 186 187 Figure B-18: AU crosshead component: Items C, D, E, and H 188 Figure B-19: AU crosshead component: Items F and G 189 Figure B-20: AU crosshead component: Item I (Lower Plate) 190 Figure B-21: AU crosshead component: Item J (Upper Plate) 191 Figure B-22: AU Invar side bars 192 Figure B-23: AU crosshead braces 193 Figure B-24: AU strain gauge protection sleeve B.3 THERMALLY INSULATED FORMWORK Figure B-25: Rigid insulation with copper tubing Figure B-26: 24-gauge copper lining 194 Figure B-27: Upper and lower crosshead brace detail Figure B-28: Water inlet detail 195 Figure B-29: Formwork installed in the rigid cracking frame 196 APPENDIX C RIGID CRACKING FRAME TESTING PROCEDURE The objective of this appendix is to present additional pictures to illustrate the testing procedures described in Chapter 5. Section C.1 documents the equipment required to calibrate the rigid cracking frame. Sections C.2 and C.3 document the testing equipment and testing procedures involved in successfully executing a cracking frame test. Section C.4 documents the proper technique for removing a specimen from the cracking frame while Section C.5 documents the equipment used during the removal process. C.1 CALIBRATION EQUIPMENT Figure C-1: Hydraulic jack and pump 197 Figure C-2: Compression load cell Figure C-3: ?-in. DYWIDAG bar with anchor plates and nuts 198 Figure C-4: Plastic bushings C.2 CRACKING FRAME TEST EQUIPMENT Figure C-5: Rigid cracking frame and thermally insulated formwork 199 Figure C-6: Computer and data-loggers Figure C-7: Programmable circulator 200 Figure C-8: Strain gauges attached to the Invar side bars Figure C-9: Cracking frame supports 201 C.3 TEST PROCEDURE Figure C-10: Lining formwork with plastic 202 Figure C-11: Caulking joints with silicone sealant Figure C-12: Placing concrete in the formwork 203 Figure C-13: Consolidating fresh concrete with a vibrator Figure C-14: Finishing concrete with a wooden trowel 204 Figure C-15: Sealing the concrete specimen with plastic and foil tape Figure C-16: Notching plastic for crosshead braces 205 Figure C-17: Securing the crosshead braces with a torque wrench Figure C-18: Sealing the crosshead braces with silicone and foil tape 206 Figure C-19: Inserting temperature probes Figure C-20: Connecting strain gauges and instrumentation 207 Figure C-21: Connecting insulated flexible hoses C.4 SPECIMEN REMOVAL PROCESS Figure C-22: Drilling a hole for a 1-in. threaded DYWIDAG bar Figure C-23: Inserting and anchoring DYWIDAG bar 208 Figure C-24: Jacking the specimen out of the crossheads Figure C-25: Removal of residual concrete with a jackhammer 209 C.5 EQUIPMENT REQUIRED FOR SPECIMEN REMOVAL Figure C-26: 20-ton bottle jack and a steel rig Figure C-27: 1-in. DYWIDAG bar with anchor plates and nuts 210 Figure C-28: Concrete drill with masonry bit Figure C-29: Jackhammer and chisel 211 APPENDIX D MATCH-CURING BOX The objective of this appendix is to present diagrams and pictures to document the design and construction of the match-curing box detailed in Section 4.2 of Chapter 4. Section D.1 presents design drawings of the match-curing box and Section D.2 contains pictures of the construction of the match-curing box. D.1 MATCH-CURING BOX DESIGN 4? 4?? 9? 4?? 4?? 9? 4?? 4? 44? 4?? (typical) 4? 4? 62? 2x4 framing spray foam insulation 6x12 cylinders ?? plywood sheeting Figure D-1: Match-curing box design: plan view 212 2? (typical) ?? plywood framing (typical) 2 x 4 framing (typical) ?? copper tubing (typical) PCV ring for specimen removal 24 gauge copper (typical) spray foam insulation (typical) 6? 10?? 6? 3?? ?? ?? ?? ?? 29? 8?? Figure D-2: Match-curing box design: elevation view 213 D.2 MATCH-CURING BOX CONSTRUCTION Figure D-3: Copper sleeves wrapped with copper tubing and foil tape Figure D-4: Installing copper sleeves and copper tubing 214 Figure D-5: Match-curing box ready for insulation Figure D-6: Spraying foam insulation 215 Figure D-7: Insulated match-curing box Figure D-8: Match-curing box ready for testing 216 Figure D-9: Interior of match-curing box without cylinders Figure D-10: Interior of match-curing box with cylinders 217 Figure D-11: PVC ring for cylinder removal 218 APPENDIX E TEMPERATURE-CONTROL PROGRAM The objective of this appendix is to document the temperature-control program developed for the rigid cracking frame testing program. The temperature-control program was created with Microsoft? Visual Basic 6.0. The temperature-control program is designed to communicate with the data acquisition system discussed in Appendix F. The program monitors both of the rigid cracking frames as well as the match curing box. The program consists of ten Visual Basic forms: (1) Container form, (2) Controller form, (3) Test setup form, (4) Equipment setup form, (5) RS232 communication settings form, (6) Transmission format settings form, (7) Auburn cracking frame form, (8) German cracking frame form, (9) Free-shrinkage frame form, and (10) Match-curing box form. 219 The program is designed to run a free-shrinkage frame; however this device is not used during the testing program. The purpose and function of each form is discussed in the following sections. Screen captures of the program in operation as well as the Visual Basic 6.0 code is also presented. E.1 CONTAINER FORM The container form is a parent form that contains all of the other forms in the program. The container form is a user interface that allows to user to browse between all the other forms. The container form also prompts the user to save the test data before closing the program. The container form code is presented in Table E-1. Table E-1: Container form code Option Explicit ' Version and Current Date of the Test Controller ------------------------------------- Const gControllerVersion As Single = 1# Const gControllerDate As Date = #4/12/2005# ' Unload any other forms before the Controller loads ---------------------------------- Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Dim frm As Form For Each frm In Forms If frm.Name <> "frmContainer" Then Unload frm Next frm End Sub '-------------------------------------------------------------------------------------- ' Load Forms and Show Test Setup ------------------------------------------------------ Private Sub MDIForm_Load() frmTestSetup.WindowState = vbMaximized frmTestSetup.Show frmEquipmentSetup.Hide frmAuburnCrackingFrame.Hide frmGermanCrackingFrame.Hide frmFreeShrinkageFrame.Hide frmMatchCuringBox.Hide frmController.Hide frmCommSettings.Hide frmXmitFormat.Hide End Sub '-------------------------------------------------------------------------------------- 220 ' Prompt User to Save Data before Unloading ------------------------------------------- Public Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer) Dim strPrompt As String Dim strTitle As String Dim MsgBoxResult As VbMsgBoxResult Dim NoQuit As Integer ' Build Message Box Strings strPrompt = "Do you want to save data before exiting?" strTitle = "WARNING: All unsaved data will be lost!" ' Set NoQuit to False NoQuit = 0 ' Prompt User to Save Data Before Exiting Select Case MsgBox(strPrompt, vbYesNoCancel, strTitle) ' User Pressed Yes Case vbYes ' Save Test Data frmController.SaveData ' Unload Forms Unload frmCommSettings Unload frmXmitFormat ' User Pressed No Case vbNo ' Unload Forms Unload frmCommSettings Unload frmXmitFormat ' User Pressed Yes Case vbCancel ' Cancel Exit Cancel = 1 End Select End Sub '-------------------------------------------------------------------------------------- ' File - Save As Menu Option ---------------------------------------------------------- Private Sub mnuFileSaveAs_Click() ' Save Test Data frmController.SaveData End Sub '-------------------------------------------------------------------------------------- ' File - Exit Menu Option ------------------------------------------------------------- Private Sub mnuFileExit_Click() ' Exit Test Controller Unload Me End Sub '-------------------------------------------------------------------------------------- ' Edit Tranmission Formats Menu ------------------------------------------------------- Private Sub mnuEditXmitFormat_Click() ' Show Tranmission Formats Form frmXmitFormat.Show End Sub '-------------------------------------------------------------------------------------- 221 ' Edit - RS232 Port Settings Menu ----------------------------------------------------- Private Sub mnuEditRS232PortSettings_Click() ' Show RS232 Comm Port Settings Form frmCommSettings.Show End Sub '-------------------------------------------------------------------------------------- ' View - Test Setup Menu Option ------------------------------------------------------- Private Sub mnuViewTestSetup_Click() frmTestSetup.WindowState = vbMaximized frmTestSetup.Show frmEquipmentSetup.Hide frmAuburnCrackingFrame.Hide frmGermanCrackingFrame.Hide frmFreeShrinkageFrame.Hide frmMatchCuringBox.Hide frmController.Hide End Sub '-------------------------------------------------------------------------------------- ' View - Equipment Setup Menu Option -------------------------------------------------- Private Sub mnuViewEquipmentSetup_Click() frmTestSetup.Hide frmEquipmentSetup.WindowState = vbMaximized frmEquipmentSetup.Show frmAuburnCrackingFrame.Hide frmGermanCrackingFrame.Hide frmFreeShrinkageFrame.Hide frmMatchCuringBox.Hide frmController.Hide End Sub '-------------------------------------------------------------------------------------- ' View - Auburn Cracking Frame Menu Option -------------------------------------------- Private Sub mnuViewAuburnCF_Click() frmTestSetup.Hide frmEquipmentSetup.Hide frmAuburnCrackingFrame.WindowState = vbMaximized frmAuburnCrackingFrame.Show frmGermanCrackingFrame.Hide frmFreeShrinkageFrame.Hide frmMatchCuringBox.Hide frmController.Hide End Sub '-------------------------------------------------------------------------------------- ' View - German Cracking Frame Menu Option -------------------------------------------- Private Sub mnuViewGermanCF_Click() frmTestSetup.Hide frmEquipmentSetup.Hide frmAuburnCrackingFrame.Hide frmGermanCrackingFrame.WindowState = vbMaximized frmGermanCrackingFrame.Show frmFreeShrinkageFrame.Hide frmMatchCuringBox.Hide frmController.Hide End Sub '-------------------------------------------------------------------------------------- 222 ' View - Free Shrinkage Frame Menu Option --------------------------------------------- Private Sub mnuViewFreeShrinkageFrame_Click() frmTestSetup.Hide frmEquipmentSetup.Hide frmAuburnCrackingFrame.Hide frmGermanCrackingFrame.Hide frmFreeShrinkageFrame.WindowState = vbMaximized frmFreeShrinkageFrame.Show frmMatchCuringBox.Hide frmController.Hide End Sub '-------------------------------------------------------------------------------------- ' View - Match Curing Box Menu Option ------------------------------------------------- Private Sub mnuViewMatchCuringBox_Click() frmTestSetup.Hide frmEquipmentSetup.Hide frmAuburnCrackingFrame.Hide frmGermanCrackingFrame.Hide frmFreeShrinkageFrame.Hide frmMatchCuringBox.WindowState = vbMaximized frmMatchCuringBox.Show frmController.Hide End Sub '-------------------------------------------------------------------------------------- ' Help Menu --------------------------------------------------------------------------- Private Sub mnuHelpAbout_Click() Dim strMessage As String strMessage = "Controller - Version " & Format(gControllerVersion, "0.0") & ", Date " & Format(gControllerDate, "mm/dd/yyyy") & vbCrLf strMessage = strMessage & "Copyright 2005 by Jared A. Whigham" MsgBox strMessage, vbOKOnly, "About the Controller" End Sub '-------------------------------------------------------------------------------------- ' Toolbar Button Clicks --------------------------------------------------------------- Private Sub tbrNavigate_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button ' Test Setup Button Clicked Case "Test Setup" frmTestSetup.WindowState = vbMaximized frmTestSetup.Show frmEquipmentSetup.Hide frmAuburnCrackingFrame.Hide frmGermanCrackingFrame.Hide frmFreeShrinkageFrame.Hide frmMatchCuringBox.Hide frmController.Hide ' Equipment Setup Button Clicked Case "Equipment Setup" frmTestSetup.Hide frmEquipmentSetup.WindowState = vbMaximized frmEquipmentSetup.Show frmAuburnCrackingFrame.Hide frmGermanCrackingFrame.Hide frmFreeShrinkageFrame.Hide frmMatchCuringBox.Hide frmController.Hide 223 ' Auburn Cracking Frame Button Clicked Case "Auburn Cracking Frame" frmTestSetup.Hide frmEquipmentSetup.Hide frmAuburnCrackingFrame.WindowState = vbMaximized frmAuburnCrackingFrame.Show frmGermanCrackingFrame.Hide frmFreeShrinkageFrame.Hide frmMatchCuringBox.Hide frmController.Hide ' German Cracking Frame Button Clicked Case "German Cracking Frame" frmTestSetup.Hide frmEquipmentSetup.Hide frmAuburnCrackingFrame.Hide frmGermanCrackingFrame.WindowState = vbMaximized frmGermanCrackingFrame.Show frmFreeShrinkageFrame.Hide frmMatchCuringBox.Hide frmController.Hide ' Free Shrinkage Frame Button Clicked Case "Free Shrinkage Frame" frmTestSetup.Hide frmEquipmentSetup.Hide frmAuburnCrackingFrame.Hide frmGermanCrackingFrame.Hide frmFreeShrinkageFrame.WindowState = vbMaximized frmFreeShrinkageFrame.Show frmMatchCuringBox.Hide frmController.Hide ' Match Curing Box Button Clicked Case "Match Curing Box" frmTestSetup.Hide frmEquipmentSetup.Hide frmAuburnCrackingFrame.Hide frmGermanCrackingFrame.Hide frmFreeShrinkageFrame.Hide frmMatchCuringBox.WindowState = vbMaximized frmMatchCuringBox.Show frmController.Hide End Select End Sub '-------------------------------------------------------------------------------------- E.2 CONTROLLER FORM The controller form receives data transmissions from the data-loggers, parses the data, performs all the necessary temperature control calculations, and then communicates with the circulators. The controller is subdivided into three parts: (1) Auburn cracking frame controller, (2) German cracking frame controller, and 224 (3) Match curing box controller. Once the temperature calculations are completed for each controller, the controller form communicates with the circulators then sends the appropriate data to each display form (i.e. the Auburn cracking frame form, the German cracking frame form, and the match curing box form). The controller form is not accessible by the user during actual run time. The controller form code is presented in Table E-2. Table E-2: Controller form code Option Explicit ' Cracking Frame State Variables And Constants ---------------------------------------- Public Enum enumCFState conCFStateOff ' Cracking Frame Controller Off conCFStateIdle ' Cracking Frame Controller Idle conCFStateTesting ' Cracking Frame Test In Progress conCFStateError ' Cracking Frame Test Error End Enum Public CFStateOperate As enumCFState ' Operating State of CF Controller '-------------------------------------------------------------------------------------- ' Match Curing Box State Variables And Constants -------------------------------------- Public Enum enumMCBState conMCBStateOff ' Match Curing Box Controller Off conMCBStateIdle ' Match Curing Box Controller Idle conMCBStateTesting ' Match Curing Box Test In Progress conMCBStateError ' Match Curing Box Test Error End Enum Public MCBStateOperate As enumMCBState ' Operating State of MCB Controller '-------------------------------------------------------------------------------------- ' Controller State Result Constants --------------------------------------------------- Const conResultSuccess As Integer = 0 ' Command Successful Const conResultFail As Integer = 1 ' Command Failed Const conResultIllegalCommand As Integer = 2 ' Command Not Legal At This Point '-------------------------------------------------------------------------------------- ' Reset RS232 Settings Status --------------------------------------------------------- Private strResetRS232Status As String ' Status of ResetRS232 Command '-------------------------------------------------------------------------------------- ' Datalogger #1 Serial Port Settings -------------------------------------------------- Private blnDL1CommEnabled As Boolean ' Serial Port Enabled/Disabled Private intDL1CommPort As Integer ' Serial Port Number Private strDL1CommSettings As String ' Serial Port Settings Private intDL1RThreshold As Integer ' Recieve Threshold Value Private strDL1InputBuffer As String ' Input Accumulate Buffer '-------------------------------------------------------------------------------------- ' Datalogger #2 Serial Port Settings -------------------------------------------------- Private blnDL2CommEnabled As Boolean ' Serial Port Enabled/Disabled Private intDL2CommPort As Integer ' Serial Port Number Private strDL2CommSettings As String ' Serial Port Settings 225 Private intDL2RThreshold As Integer ' Recieve Threshold Value Private strDL2InputBuffer As String ' Input Accumulate Buffer '-------------------------------------------------------------------------------------- ' Auburn Cracking Frame Circulator Serial Port Settings ------------------------------- Private blnAUCIRCommEnabled As Boolean ' Serial Port Enabled/Disabled Private intAUCIRCommPort As Integer ' Serial Port Number Private strAUCIRCommSettings As String ' Serial Port Settings Private intAUCIRRThreshold As Integer ' Recieve Threshold Value Private intAUCIRSThreshold As Integer ' Send Threshold Value Private strAUCIRInputBuffer As String ' Input Accumulate Buffer Private strAUCIROutputBuffer As String ' Output Accumulate Buffer '-------------------------------------------------------------------------------------- ' German Cracking Frame Circulator Serial Port Settings ------------------------------- Private blnGMCIRCommEnabled As Boolean ' Serial Port Enabled/Disabled Private intGMCIRCommPort As Integer ' Serial Port Number Private strGMCIRCommSettings As String ' Serial Port Settings Private intGMCIRRThreshold As Integer ' Recieve Threshold Value Private intGMCIRSThreshold As Integer ' Send Threshold Value Private strGMCIRInputBuffer As String ' Input Accumulate Buffer Private strGMCIROutputBuffer As String ' Output Accumulate Buffer '-------------------------------------------------------------------------------------- ' Free Shrinkage Frame Circulator Serial Port Settings -------------------------------- Private blnFSFCIRCommEnabled As Boolean ' Serial Port Enabled/Disabled Private intFSFCIRCommPort As Integer ' Serial Port Number Private strFSFCIRCommSettings As String ' Serial Port Settings Private intFSFCIRRThreshold As Integer ' Recieve Threshold Value Private intFSFCIRSThreshold As Integer ' Send Threshold Value Private strFSFCIRInputBuffer As String ' Input Accumulate Buffer Private strFSFCIROutputBuffer As String ' Output Accumulate Buffer '-------------------------------------------------------------------------------------- ' Match Curing Box Circulator Serial Port Settings ------------------------------------ Private blnMCBCIRCommEnabled As Boolean ' Serial Port Enabled/Disabled Private intMCBCIRCommPort As Integer ' Serial Port Number Private strMCBCIRCommSettings As String ' Serial Port Settings Private intMCBCIRRThreshold As Integer ' Recieve Threshold Value Private intMCBCIRSThreshold As Integer ' Send Threshold Value Private strMCBCIRInputBuffer As String ' Input Accumulate Buffer Private strMCBCIROutputBuffer As String ' Output Accumulate Buffer '-------------------------------------------------------------------------------------- ' Data Transmission Formatting Characters --------------------------------------------- Private strDLTokenSep As String ' Datalogger Token Separator Private strDLLineTerm As String ' Datalogger Line Terminator Private strCIRCommandTerm As String ' Circulator Command Terminator Private strCIRSuccess As String ' Circulator Successful Execution '-------------------------------------------------------------------------------------- ' Mixture Proportion Setup ------------------------------------------------------------ Public strMixDescription As String ' Test Description Public dteTestDate As Date ' Test Date Public sngCementContent As Double ' Cement Content (lbs) Public sngWaterContent As Double ' Water Content (lbs) Public sngCoarseAggContent As Double ' Coarse Aggregate Content (lbs) Public sngFineAggContent As Double ' Fine Aggregate Content (lbs) Public sngAirContent As Double ' Air Content (%) Public sngCAshContent As Double ' Class C Fly Ash Content (lbs) Public sngFAshContent As Double ' Class F Fly Ash Content (lbs) Public sngSlagContent As Double ' Slag Content (lbs) Public sngSilicaFumeContent As Double ' Silica Fume Content (lbs) Public sngUltraFineAshContent As Double ' Ultra Fine Fly Ash Content (lbs) Public sngTotalWeight As Double ' Total Batch Weight (lbs) Public sngSacks As Double ' Number of Sacks/yd Public sngWaterCementRatio As Double ' Water/Cement Ratio Public sngWaterCementitiousRatio As Double ' Water/Cementitious Ratio '-------------------------------------------------------------------------------------- 226 ' Auburn Cracking Frame Setup --------------------------------------------------------- Public intAUDatalogger As Integer ' Datalogger Number Public intAUCirculator As Integer ' Circulator Number Public sngAUBar24Mult As Double ' Bar 2-4 Multiplier Public sngAUBar35Mult As Double ' Bar 3-5 Multiplier Public dblAUBarCTE As Double ' INVAR CTE (in/in/?C) Public dblAUBarK As Double ' INVAR Thermal Conductivity (W/m-K) '-------------------------------------------------------------------------------------- ' German Cracking Frame Setup --------------------------------------------------------- Public intGMDatalogger As Integer ' Datalogger Number Public intGMCirculator As Integer ' Circulator Number Public sngGMBar24Mult As Double ' Bar 2-4 Multiplier Public sngGMBar35Mult As Double ' Bar 3-5 Multiplier Public dblGMBarCTE As Double ' INVAR CTE (in/in/?C) Public dblGMBarK As Double ' INVAR Thermal Conductivity (W/m-K) '-------------------------------------------------------------------------------------- ' Free Shrinkage Frame Setup ---------------------------------------------------------- Public intFSFDatalogger As Integer ' Datalogger Number Public intFSFCirculator As Integer ' Circulator Number Public sngFSFLVDT1Mult As Double ' LVDT #1 Multiplier Public sngFSFLVDT2Mult As Double ' LVDT #2 Multiplier Public dblFSFLVDTCTE As Double ' INVAR CTE (in/in/?C) '-------------------------------------------------------------------------------------- ' Match Curing Box Setup -------------------------------------------------------------- Public intMCBDatalogger As Integer ' Datalogger Number Public intMCBCirculator As Integer ' Circulator Number '-------------------------------------------------------------------------------------- ' Cracking Frame Test Setup ----------------------------------------------------------- Private intAUCFTimeStep As Integer ' Auburn Cracking Frame Timestep Private intGMCFTimeStep As Integer ' German Cracking Frame Timestep Private intAUCount As Integer ' Auburn Cracking Frame Cooling Counter Private intGMCount As Integer ' German Cracking Frame Cooling Counter Public intCFConcAgeOffset As Integer ' Concrete Age Offset (min) Public intCF4DayTime As Integer ' Concrete 4 Day Time '-------------------------------------------------------------------------------------- ' Match Curing Box Test Setup --------------------------------------------------------- Private intMCBTimeStep As Integer ' Match Curing Box Timestep Private intMatchCureTimeStep As Integer ' Match Curing Time Step Private blnMatchCuringStart As Boolean ' Match Curing Start Test Public intMCBConcAgeOffset As Integer ' Concrete Age Offset (min) Private strMCBTempControlStatus As String ' Match Curing Box Temp Control Status '-------------------------------------------------------------------------------------- ' Auburn Cracking Frame Test Data ----------------------------------------------------- Private strAUCFTimeArray(8064) As String ' Real Time Private sngAUConcAgeArray(8064) As Double ' Concrete Age (hrs) Private strAUCFTempArray(8064) As String ' Cracking Frame Temp (?C) Private strAUCH23TempArray(8064) As String ' Crosshead 2-3 Temp (?C) Private strAUCH45TempArray(8064) As String ' Crosshead 4-5 Temp (?C) Private strAUBar24TempArray(8064) As String ' INVAR Bar 2-4 Temp (?C) Private strAUBar35TempArray(8064) As String ' INVAR Bar 3-5 Temp (?C) Private strAURoomTempArray(8064) As String ' Room Temp (?C) Private strAUBar24OutputArray(8064) As String ' Bar 2-4 Strain Gage Output (mV/V) Private strAUBar35OutputArray(8064) As String ' Bar 3-5 Strain Gage Output (mV/V) Private sngAUBar24ForceArray(8064) As Double ' Bar 2-4 Force (lbs) Private sngAUBar35ForceArray(8064) As Double ' Bar 3-5 Force (lbs) Private sngAUConcStressArray(8064) As Double ' Equivalent Concrete Stress (psi) Private sngAUCFTempDiffArray(8064) As Double ' Temp Difference (?C) Private strAUCIRSSTempArray(8064) As String ' Circulator Setpoint Temp (?C) Private strAUCIRTempArray(8064) As String ' Circulator Internal Bath Temp (?C) '-------------------------------------------------------------------------------------- 227 ' Temporary Auburn Cracking Frame Test Data Storage ----------------------------------- Public sngAUConcAge As Single ' Concrete Age (hrs) Public sngAUCFTemp As Single ' Cracking Frame Temp (?C) Public sngAUCH23Temp As Single ' Crosshead 2-3 Temp (?C) Public sngAUCH45Temp As Single ' Crosshead 4-5 Temp (?C) Public sngAUBar24Temp As Single ' INVAR Bar 2-4 Temp (?C) Public sngAUBar35Temp As Single ' INVAR Bar 3-5 Temp (?C) Public sngAURoomTemp As Single ' Room Temp (?C) Public sngAUBar24Output As Single ' Bar 2-4 Strain Gage Output (mV/V) Public sngAUBar35Output As Single ' Bar 3-5 Strain Gage Output (mV/V) Public sngAUBar24Force As Single ' Bar 2-4 Force (lbs) Public sngAUBar35Force As Single ' Bar 3-5 Force (lbs) Public sngAUConcStress As Single ' Equivalent Concrete Stress (psi) '-------------------------------------------------------------------------------------- ' German Cracking Frame Test Data ----------------------------------------------------- Private strGMCFTimeArray(8064) As String ' Real Time Private sngGMConcAgeArray(8064) As Double ' Concrete Age (hrs) Private strGMCFTempArray(8064) As String ' Cracking Frame Temp (?C) Private strGMCH23TempArray(8064) As String ' Crosshead 2-3 Temp (?C) Private strGMCH45TempArray(8064) As String ' Crosshead 4-5 Temp (?C) Private strGMBar24PTempArray(8064) As String ' INVAR Bar 3-5 PT100 Temp (?C) Private strGMBar35PTempArray(8064) As String ' INVAR Bar 3-5 PT100 Temp (?C) Private strGMBar24TempArray(8064) As String ' INVAR Bar 2-4 Temp (?C) Private strGMBar35TempArray(8064) As String ' INVAR Bar 3-5 Temp (?C) Private strGMRoomTempArray(8064) As String ' Room Temp (?C) Private strGMBar24OutputArray(8064) As String ' Bar 2-4 Strain Gage Output (mV/V) Private strGMBar35OutputArray(8064) As String ' Bar 3-5 Strain Gage Output (mV/V) Private sngGMBar24ForceArray(8064) As Double ' Bar 2-4 Force (lbs) Private sngGMBar35ForceArray(8064) As Double ' Bar 3-5 Force (lbs) Private sngGMConcStressArray(8064) As Double ' Equivalent Concrete Stress (psi) Private sngGMCFTempDiffArray(8064) As Double ' Temp Difference (?C) Private strGMCIRSSTempArray(8064) As String ' Circulator Setpoint Temp (?C) Private strGMCIRTempArray(8064) As String ' Circulator Internal Bath Temp (?C) '-------------------------------------------------------------------------------------- ' Temporary German Cracking Frame Test Data Storage ----------------------------------- Public sngGMConcAge As Single ' Concrete Age (hrs) Public sngGMCFTemp As Single ' Cracking Frame Temp (?C) Public sngGMCH23Temp As Single ' Crosshead 2-3 Temp (?C) Public sngGMCH45Temp As Single ' Crosshead 4-5 Temp (?C) Public sngGMBar24PTemp As Single ' INVAR Bar 2-4 PT100 Temp (?C) Public sngGMBar35PTemp As Single ' INVAR Bar 3-5 PT100 Temp (?C) Public sngGMBar24Temp As Single ' INVAR Bar 2-4 Temp (?C) Public sngGMBar35Temp As Single ' INVAR Bar 3-5 Temp (?C) Public sngGMRoomTemp As Single ' Room Temp (?C) Public sngGMBar24Output As Single ' Bar 2-4 Strain Gage Output (mV/V) Public sngGMBar35Output As Single ' Bar 3-5 Strain Gage Output (mV/V) Public sngGMBar24Force As Single ' Bar 2-4 Force (lbs) Public sngGMBar35Force As Single ' Bar 3-5 Force (lbs) Public sngGMConcStress As Single ' Equivalent Concrete Stress (psi) '-------------------------------------------------------------------------------------- ' Match Curing Box Test Data ---------------------------------------------------------- Private strMCBTimeArray(8064) As String ' Real Time Private sngMCBConcAgeArray(8064) As Double ' Concrete Age (hrs) Private strMCB1TempArray(8064) As String ' Corner Cylinder Temp (?C) Private strMCB2TempArray(8064) As String ' Exterior Cylinder Temp (?C) Private strMCB3TempArray(8064) As String ' Interior Cylinder Temp (?C) Private sngMCBAvgTempArray(8064) As Double ' Average Cylinder Temp (?C) Private sngMCBTempDiffArray(8064) As Double ' Temp Difference (?C) Private strMCBCIRSSTempArray(8064) As String ' Circulator Setpoint Temp (?C) Private strMCBCIRTempArray(8064) As String ' Circulator Internal Bath Temp (?C) '-------------------------------------------------------------------------------------- ' Temporary Match Curing Box Test Data Storage ---------------------------------------- Public sngMCBConcAge As Single ' Concrete Age (hrs) Public sngMCBAUCFTemp As Single ' Auburn Cracking Frame Temp (?C) Public sngMCBGMCFTemp As Single ' German Cracking Frame Temp (?C) 228 Public sngMCB1Temp As Single ' Corner Cylinder Temp (?C) Public sngMCB2Temp As Single ' Exterior Cylinder Temp (?C) Public sngMCB3Temp As Single ' Interior Cylinder Temp (?C) Public sngMCBAvgTemp As Single ' Average Cylinder Temp (?C) '-------------------------------------------------------------------------------------- ' Initialize the Controller ----------------------------------------------------------- Private Sub Form_Load() frmController.Visible = False ' Hide Controller SetDefaultCommSettings ' Default RS-232 Settings SetDefaultTransmissionFormat ' Default Data Transmission Format CFStateOperate = conCFStateOff ' Set Initial CF State to OFF MCBStateOperate = conMCBStateOff ' Set Initial MCB State to OFF End Sub '-------------------------------------------------------------------------------------- ' Turn On Cracking Frame Controller --------------------------------------------------- Private Function CrackingFrameControllerOn() As Integer Dim strStatus As String ' Set Cracking Frame Controller status to On strStatus = "Cracking Frame Controller ON!" frmTestSetup.btnCFOnOff.Caption = "OFF" ' Change the On/Off button caption frmContainer.sbrCFStatus.SimpleText = strStatus ' Display Controller Status frmCommSettings.ResetCommSettings ' Begin processing commands on RS232 port End Function '-------------------------------------------------------------------------------------- ' Turn Off Cracking Frame Controller -------------------------------------------------- Private Function CrackingFrameControllerOff() As Integer Dim strStatus As String ' Set Cracking Frame Controller status to Off strStatus = "Cracking Frame Controller OFF!" frmTestSetup.btnCFStartAbort.Caption = "START" ' Reset the Start/Abort button frmTestSetup.btnCFOnOff.Caption = "ON" ' Reset the On/Off button frmContainer.sbrCFStatus.SimpleText = strStatus ' Display Controller Status End Function '-------------------------------------------------------------------------------------- ' Start Cracking Frame Comparison Test ------------------------------------------------ Private Function CrackingFrameStartTest() As Integer Dim strStatus As String ' Reset the RS-232 Port settings ResetRS232Settings ' Check for successful ResetRS232Command If strResetRS232Status = "Sucess" Then ' ResetCommSettings is successful strStatus = "Cracking Frame Comparison Test In Progress ..." frmTestSetup.btnCFStartAbort.Caption = "ABORT" ' Change Button Caption ' Change button caption frmContainer.sbrCFStatus.SimpleText = strStatus ' Display Controller Status 229 CrackingFrameStartTest = conResultSuccess ' Command Result = Sucess ' Display Cracking Frame Controller Status frmTestSetup.lblAUCFController.Caption = "Waiting on Data Transmission..." frmTestSetup.lblGMCFController.Caption = "Waiting on Data Transmission..." ' Set Initial Cracking Frame Timesteps to Zero intAUCFTimeStep = 0 intGMCFTimeStep = 0 ' Compute Time for Cracking Frame to reach 4 Days intCF4DayTime = 1152 - intCFConcAgeOffset / 5 Else ' ResetCommSettings is unsuccessful strStatus = "Cracking Frame Comparison Test ERROR ..." frmTestSetup.btnCFStartAbort.Caption = "START" ' Change Button Caption frmContainer.sbrCFStatus.SimpleText = strStatus ' Display Controller Status CrackingFrameStartTest = conResultFail ' Command Result = Failure frmCommSettings.Show End If End Function '-------------------------------------------------------------------------------------- ' Abort Cracking Frame Comparison Test ------------------------------------------------ Private Function CrackingFrameAbortTest() As Integer Dim strStatus As String ' Set Cracking Frame Test Status to Abort strStatus = "Cracking Frame Test Aborted ... " frmTestSetup.btnCFStartAbort.Caption = "START" ' Change button caption frmContainer.sbrCFStatus.SimpleText = strStatus ' Display status in status bar CrackingFrameAbortTest = conResultSuccess ' Command Result = Sucess ' Display Cracking Frame Controller Status frmTestSetup.lblAUCFController.Caption = "Test Aborted!" frmTestSetup.lblGMCFController.Caption = "Test Aborted!" End Function '-------------------------------------------------------------------------------------- ' Process Commands to Determine Cracking Frame Controller State ----------------------- Public Function ProcessCFCommand(strCommand As String) As String Dim intResultCode As Integer, strResult As String Dim intPos As Integer, intArg As Integer, strArg As String ' Begin by assuming a sucessful command intResultCode = conResultSuccess ' Make string case insensitive strCommand = UCase(Trim(strCommand)) ' Do nothing with an empty command If strCommand = "" Then Exit Function ' If there is an integer argument, parse it out intArg = 0 intPos = InStr(strCommand, " ") If intPos > 0 Then strArg = Right(strCommand, Len(strCommand) - intPos) If IsNumeric(strArg) Then intArg = CInt(strArg) strCommand = Left(strCommand, intPos - 1) 230 End If ' Switch ON the State of the Controller Select Case CFStateOperate ' Controller State = Idle Case conCFStateIdle Select Case strCommand ' Start Test Case "START" ' Set the State Variable intResultCode = CrackingFrameStartTest ' If CrackingFrameStartTest Results in Success change State to Testing If intResultCode = conResultSuccess Then CFStateOperate = conCFStateTesting ' If CrackingFrameStartTest Results in Failure change State to Error If intResultCode = conResultFail Then CFStateOperate = conCFStateError ' Abort Test Case "ABORT" ' No state change required ' Turn Controller Off Case "OFF" ' Set the State Variable intResultCode = CrackingFrameControllerOff ' If CrackingFrameControllerOff is Successful change State to Off If intResultCode = conResultSuccess Then CFStateOperate = conCFStateOff ' Illegal Command Case Else ' Set the State Variable intResultCode = conResultIllegalCommand End Select ' Controller State = Testing Case conCFStateTesting Select Case strCommand ' Abort Test Case "ABORT" ' Set the State Variable intResultCode = CrackingFrameAbortTest ' If CrackingFrameAbortTest is Successful change State to Idle If intResultCode = conResultSuccess Then CFStateOperate = conCFStateIdle ' Turn Controller Off Case "OFF" ' Set the State Variable intResultCode = CrackingFrameControllerOff ' If CrackingFrameControllerOff is Successful change State to Off If intResultCode = conResultSuccess Then CFStateOperate = conCFStateOff ' Illegal Command Case Else ' Set the State Variable intResultCode = conResultIllegalCommand End Select ' Controller State = Off Case conCFStateOff Select Case strCommand 231 ' Turn Controller On Case "ON" ' Set the State Variable intResultCode = CrackingFrameControllerOn ' If CrackingFrameControllerOn is Successful change State to Idle If intResultCode = conResultSuccess Then CFStateOperate = conCFStateIdle ' Illegal Command Case Else ' Set the State Variable intResultCode = conResultIllegalCommand End Select Case conCFStateError Select Case strCommand ' Start Test Case "START" ' Set the State Variable intResultCode = CrackingFrameStartTest ' If CrackingFrameStartTest Results in Success change State to Testing If intResultCode = conResultSuccess Then CFStateOperate = conCFStateTesting ' If CrackingFrameStartTest Results in Failure change State to Error If intResultCode = conResultFail Then CFStateOperate = conCFStateError ' Abort Test Case "ABORT" ' No state change required ' Turn Controller Off Case "OFF" ' Set the State Variable intResultCode = CrackingFrameControllerOff ' If CrackingFrameControllerOff is Successful change State to Off If intResultCode = conResultSuccess Then CFStateOperate = conCFStateOff ' Illegal Command Case Else ' Set the State Variable intResultCode = conResultIllegalCommand End Select End Select ' Update the Controller State Display Select Case CFStateOperate ' Controller Off Case conCFStateOff frmTestSetup.lblCFStatus.Caption = "Controller Off!" ' Unlock Cracking Frame Setup Controls frmEquipmentSetup.UnlockCFControls ' Controller Idle Case conCFStateIdle frmTestSetup.lblCFStatus.Caption = "Controller Idle!" ' Unlock Cracking Frame Setup Controls frmEquipmentSetup.UnlockCFControls ' Controller Testing Case conCFStateTesting 232 frmTestSetup.lblCFStatus.Caption = "Controller Testing ..." ' Lock Cracking Frame Setup Controls frmEquipmentSetup.LockCFControls ' Controller ERROR Case conCFStateError frmTestSetup.lblCFStatus.Caption = "Controller ERROR" ' Unlock Cracking Frame Setup Controls frmEquipmentSetup.UnlockCFControls End Select ' Process Cracking Frame Controller Result Code strResult = ProcessCFResultCode(intResultCode, strCommand) ProcessCFCommand = strResult End Function '-------------------------------------------------------------------------------------- ' Process Cracking Frame Result Code and React Appropriately -------------------------- Private Function ProcessCFResultCode(intResult As Integer, Optional strData As Variant) As String Dim strResultMsg As String Select Case intResult ' Successful Result Code Case conResultSuccess strResultMsg = "OK" ' Failure Result Code Case conResultFail strResultMsg = "ERROR" ' Illegal Command Result Code Case conResultIllegalCommand strResultMsg = "Error " & CStr(intResult) & ": " If IsMissing(strData) Then strData = "(Unknown)" strResultMsg = strResultMsg & "Illegal Command - " & strData ' Other Result Code Case Else strResultMsg = "Error " & CStr(intResult) & ": " strResultMsg = strResultMsg & "Result code not understood" End Select ' Assign Result Code ProcessCFResultCode = strResultMsg End Function '-------------------------------------------------------------------------------------- ' Turn On Match Curing Controller ----------------------------------------------------- Private Function MatchCuringControllerOn() As Integer Dim strStatus As String ' Set Match Curing Controller Status to On strStatus = "Match Curing Controller ON!" frmTestSetup.btnMCBOnOff.Caption = "OFF" ' Change On/Off button caption frmContainer.sbrMCBStatus.SimpleText = strStatus ' Display Controller Status End Function '-------------------------------------------------------------------------------------- 233 ' Turn Off Match Curing Controller ---------------------------------------------------- Private Function MatchCuringControllerOff() As Integer Dim strStatus As String ' Set Match Curing Controller Status to Off strStatus = "Match Curing Controller OFF!" frmTestSetup.btnMCBStartAbort.Caption = "START" ' Reset the Start/Abort button frmTestSetup.btnMCBOnOff.Caption = "ON" ' Reset the On/Off button frmContainer.sbrMCBStatus.SimpleText = strStatus ' Display Controller Status End Function '-------------------------------------------------------------------------------------- ' Start Match Curing Test ------------------------------------------------------------- Private Function MatchCuringStartTest() As Integer Dim strStatus As String ' Start Match Curing Test strStatus = "Match Curing Test In Progress ..." ' Update Status frmTestSetup.btnMCBStartAbort.Caption = "ABORT" ' Change Button Caption ' Change button caption frmContainer.sbrMCBStatus.SimpleText = strStatus ' Display Controller Status frmTestSetup.lblMCBController.Caption = "Waiting on Data Transmission..." MatchCuringStartTest = conResultSuccess ' Command Result = Sucess ' Set Initial Match Curing Timestep to Zero intMCBTimeStep = 0 ' Set Initial Match Curing Test blnMatchCuringStart = False End Function '-------------------------------------------------------------------------------------- ' Abort Match Curing Test ------------------------------------------------------------- Private Function MatchCuringAbortTest() As Integer Dim strStatus As String ' Set Match Curing Test Status to Abort strStatus = "Match Curing Test Aborted ... " frmTestSetup.btnMCBStartAbort.Caption = "START" ' Change Button Caption frmContainer.sbrMCBStatus.SimpleText = strStatus ' Display Controller Status frmTestSetup.lblMCBController.Caption = "Test Aborted!" MatchCuringAbortTest = conResultSuccess ' Command Result = Sucess End Function '-------------------------------------------------------------------------------------- ' Process Commands to Determine Match Curing Box Controller State --------------------- Public Function ProcessMCBCommand(strCommand As String) As String Dim intResultCode As Integer, strResult As String Dim intPos As Integer, intArg As Integer, strArg As String ' Begin by assuming a sucessful command intResultCode = conResultSuccess ' Make string case insensitive strCommand = UCase(Trim(strCommand)) ' Do nothing with an empty command If strCommand = "" Then Exit Function ' If there is an integer argument, parse it out 234 intArg = 0 intPos = InStr(strCommand, " ") If intPos > 0 Then strArg = Right(strCommand, Len(strCommand) - intPos) If IsNumeric(strArg) Then intArg = CInt(strArg) strCommand = Left(strCommand, intPos - 1) End If ' Switch ON the State of the Controller Select Case MCBStateOperate ' Controller State = Idle Case conMCBStateIdle Select Case strCommand ' Start Test Case "START" ' Set the State Variable intResultCode = MatchCuringStartTest ' If MatchCuringStartTest Results in Success change State to Testing If intResultCode = conResultSuccess Then MCBStateOperate = conMCBStateTesting ' If MatchCuringStartTest Results in Failure change State to Error If intResultCode = conResultFail Then MCBStateOperate = conMCBStateError ' Abort Test Case "ABORT" ' No state change required ' Turn Controller Off Case "OFF" ' Set the State Variable intResultCode = MatchCuringControllerOff ' If MatchCuringControllerOff is Successful change State to Off If intResultCode = conResultSuccess Then MCBStateOperate = conMCBStateOff ' Illegal Command Case Else ' Set the State Variable intResultCode = conResultIllegalCommand End Select ' Controller State = Testing Case conMCBStateTesting Select Case strCommand ' Abort Test Case "ABORT" ' Set the State Variable intResultCode = MatchCuringAbortTest ' If MatchCuringAbortTest is Successful change State to Idle If intResultCode = conResultSuccess Then MCBStateOperate = conMCBStateIdle ' Turn Controller Off Case "OFF" ' Set the State Variable intResultCode = MatchCuringControllerOff ' If MatchCuringControllerOff is Successful change State to Off If intResultCode = conResultSuccess Then MCBStateOperate = conMCBStateOff ' Illegal Command Case Else ' Set the State Variable intResultCode = conResultIllegalCommand 235 End Select ' Controller State = Off Case conMCBStateOff Select Case strCommand ' Turn Controller On Case "ON" ' Set the State Variable intResultCode = MatchCuringControllerOn ' If MatchCuringControllerOn is Successful change State to Idle If intResultCode = conResultSuccess Then MCBStateOperate = conMCBStateIdle ' Illegal Command Case Else ' Set the State Variable intResultCode = conResultIllegalCommand End Select Case conMCBStateError Select Case strCommand ' Start Test Case "START" ' Set the State Variable intResultCode = MatchCuringStartTest ' If MatchCuringStartTest Results in Success change State to Testing If intResultCode = conResultSuccess Then MCBStateOperate = conMCBStateTesting ' If MatchCuringStartTest Results in Failure change State to Error If intResultCode = conResultFail Then MCBStateOperate = conMCBStateError ' Abort Test Case "ABORT" ' No state change required ' Turn Controller Off Case "OFF" ' Set the State Variable intResultCode = MatchCuringControllerOff ' If MatchCuringControllerOff is Successful change State to Off If intResultCode = conResultSuccess Then MCBStateOperate = conMCBStateOff ' Illegal Command Case Else ' Set the State Variable intResultCode = conResultIllegalCommand End Select End Select ' Update the Controller State Display Select Case MCBStateOperate ' Controller Off Case conMCBStateOff frmTestSetup.lblMCBStatus.Caption = "Controller Off!" ' Unlock Match Curing Box Setup Controls frmEquipmentSetup.UnlockMCBControls ' Controller Idle Case conMCBStateIdle 236 frmTestSetup.lblMCBStatus.Caption = "Controller Idle!" ' Unlock Match Curing Box Setup Controls frmEquipmentSetup.UnlockMCBControls ' Controller Waiting on Data Case conMCBStateTesting frmTestSetup.lblMCBStatus.Caption = "Controller Testing ..." ' Lock Match Curing Box Setup Controls frmEquipmentSetup.LockMCBControls ' Controller ERROR Case conMCBStateError frmTestSetup.lblMCBStatus.Caption = "Controller ERROR" ' Unlock Match Curing Box Setup Controls frmEquipmentSetup.UnlockMCBControls End Select ' Process Match Curing Box Controller Result Code strResult = ProcessMCBResultCode(intResultCode, strCommand) ProcessMCBCommand = strResult End Function '-------------------------------------------------------------------------------------- ' Process Match Curing Box Result Code and React Appropriately ------------------------ Private Function ProcessMCBResultCode(intResult As Integer, Optional strData As Variant) As String Dim strResultMsg As String Select Case intResult ' Successful Result Code Case conResultSuccess strResultMsg = "OK" ' Failure Result Code Case conResultFail strResultMsg = "ERROR" ' Illegal Command Result Code Case conResultIllegalCommand strResultMsg = "Error " & CStr(intResult) & ": " If IsMissing(strData) Then strData = "(Unknown)" strResultMsg = strResultMsg & "Illegal Command - " & strData ' Other Result Code Case Else strResultMsg = "Error " & CStr(intResult) & ": " strResultMsg = strResultMsg & "Result code not understood" End Select ' Assign Result Code ProcessMCBResultCode = strResultMsg End Function '-------------------------------------------------------------------------------------- ' Monitor Datalogger #1 for Incoming Data --------------------------------------------- Private Sub comDL1_OnComm() ' Change Mouse Pointer to Hourglass MousePointer = vbHourglass 237 If comDL1.CommEvent = comEvReceive Then ' Change Controller Status to Collecting Data frmTestSetup.lblAUCFController.Caption = "Collecting Data..." ' Collect a complete data string from the datalogger Do While CountDL1Data() = False ' Get any new data from input buffer If CollectDL1Data() = False Then Exit Sub ' Collect data from datalogger CountDL1Data Loop ' Activate AU Cracking Frame Controller AUCrackingFrameController ' Activate Match Curing Controller MatchCuringController ' Clear data string for next data reception strDL1InputBuffer = "" End If ' Change Mouse Pointer to Arrow MousePointer = vbArrow End Sub '-------------------------------------------------------------------------------------- ' Monitor Datalogger #2 for Incoming Data --------------------------------------------- Private Sub comDL2_OnComm() ' Change Mouse Pointer to Hourglass MousePointer = vbHourglass If comDL2.CommEvent = comEvReceive Then ' Change Controller Status to Collecting Data frmTestSetup.lblGMCFController.Caption = "Collecting Data..." ' Collect a complete data string from the datalogger Do While CountDL2Data() = False ' Get any new data from input buffer If CollectDL2Data() = False Then Exit Sub ' Collect data from datalogger CountDL2Data Loop ' Activate German Cracking Frame Controller GermanCrackingFrameController ' Clear data string for next data reception strDL2InputBuffer = "" End If ' Change Mouse Pointer to Arrow MousePointer = vbArrow End Sub '-------------------------------------------------------------------------------------- 238 ' Collect Datalogger #1 Data on the Input Buffer -------------------------------------- Private Function CollectDL1Data() As Boolean ' Assume that there in no new data to collect CollectDL1Data = False ' Check the input buffer for data If comDL1.InBufferCount > 0 Then ' Get data string on input buffer strDL1InputBuffer = strDL1InputBuffer & comDL1.Input ' Change CollectDL1Data Status CollectDL1Data = True End If End Function '-------------------------------------------------------------------------------------- ' Check for a Complete Data String from Datalogger #1 --------------------------------- Private Function CountDL1Data() As Boolean Dim intDataCount As Integer ' Number of data points collected On Error GoTo CountDL1DataErrorHandler ' Set initial CountDLData to False CountDL1Data = False ' Count the number data points in the string intDataCount = UBound(Split(strDL1InputBuffer, strDLTokenSep)) ' Check to see if a complete string is retreived '******************************************************************************* ' intDataCount must match the number of data points output from datalogger - 1 '******************************************************************************* If intDataCount = 14 Then ' Change CountDL1Data Status CountDL1Data = True End If Exit Function ' CountDL1Data Error Handler CountDL1DataErrorHandler: Select Case Err.Number Case Else MsgBox "Error (CheckDL1Data) " & CStr(Err.Number) & ": " & Err.Description, vbOKOnly, "Controller Error" End Select End Function '-------------------------------------------------------------------------------------- ' Auburn Cracking Frame Controller ---------------------------------------------------- Private Sub AUCrackingFrameController() ' Process Auburn Cracking Frame Data ProcessAUCFData ' Check to see if Cooling Should Begin Select Case intAUCFTimeStep 239 Case Is = intCF4DayTime ' Activate AU Circulator ActivateAUCirculator ' Compute Temperature Required to Cool Cracking Frame at 1C/hr CoolAUCrackingFrame ' Adjust Circulator Setpoint Temperature SetAUCirculatorTemp ' Retrieve Circulator Bath Temperature GetAUCirculatorTemp Case Is > intCF4DayTime ' Compute Temperature Required to Cool Cracking Frame at 1C/hr CoolAUCrackingFrame ' Adjust Circulator Setpoint Temperature SetAUCirculatorTemp ' Retrieve Circulator Bath Temperature GetAUCirculatorTemp End Select ' Store Temporary Data to Display StoreTemporaryAUData ' Update Data on Auburn Cracking Frame Form frmAuburnCrackingFrame.UpdateAUData ' Increment AUCF Time Step intAUCFTimeStep = intAUCFTimeStep + 1 ' Change Controller Status to Waiting on Data frmTestSetup.lblAUCFController.Caption = "Waiting on Data Transmission..." End Sub '-------------------------------------------------------------------------------------- ' Process Auburn Cracking Frame Data ---------------------------------------------------- Private Sub ProcessAUCFData() Dim strDataArray() As String ' Temporary array to store data for parsing ' Change Controller Status to Processing Data frmTestSetup.lblAUCFController.Caption = "Processing Data..." ' Parse collected data strDataArray = Split(strDL1InputBuffer, strDLTokenSep) ' Store Times strAUCFTimeArray(intAUCFTimeStep) = strDataArray(2) ' Real time ' Compute Concrete Age (hrs) sngAUConcAgeArray(intAUCFTimeStep) = (intAUCFTimeStep * 5 + intCFConcAgeOffset) / 60 ' Store Strain Output strAUBar24OutputArray(intAUCFTimeStep) = strDataArray(3) ' Bar 2-4 Output strAUBar35OutputArray(intAUCFTimeStep) = strDataArray(4) ' Bar 3-5 Output ' Store Temperatures strAUCFTempArray(intAUCFTimeStep) = strDataArray(5) ' Cracking Frame Temp strAUCH23TempArray(intAUCFTimeStep) = strDataArray(6) ' Crosshead 2-3 Temp strAUCH45TempArray(intAUCFTimeStep) = strDataArray(7) ' Crosshead 4-5 Temp strAUBar24TempArray(intAUCFTimeStep) = strDataArray(8) ' Bar 2-4 TC Temp strAUBar35TempArray(intAUCFTimeStep) = strDataArray(9) ' Bar 3-5 TC Temp strAURoomTempArray(intAUCFTimeStep) = strDataArray(10) ' Room Temp 240 ' Compute Force in INVAR Bar 2-4 sngAUBar24ForceArray(intAUCFTimeStep) = sngAUBar24Mult * _ (strAUBar24OutputArray(intAUCFTimeStep) - strAUBar24OutputArray(0)) ' Compute Force in INVAR Bar 3-5 sngAUBar35ForceArray(intAUCFTimeStep) = sngAUBar35Mult * _ (strAUBar35OutputArray(intAUCFTimeStep) - strAUBar35OutputArray(0)) ' Compute Equivalent Stress in Concrete sngAUConcStressArray(intAUCFTimeStep) = (sngAUBar24ForceArray(intAUCFTimeStep) + _ sngAUBar35ForceArray(intAUCFTimeStep)) / 36 End Sub '-------------------------------------------------------------------------------------- ' Compute Temperature Required to Cool Auburn Cracking Frame at 1C/hr ----------------- Private Sub CoolAUCrackingFrame() Dim intCorrectionFactor As Integer ' Correction Factor to control cooling rate ' Check Cooling Status Select Case intAUCFTimeStep ' Initial Cooling Step Case Is = intCF4DayTime ' Initialize Counter intAUCount = 1 ' Begin to Cool Cracking Frame at 1 degree Celcius per hour strAUCIRSSTempArray(intAUCFTimeStep) = strAUCFTempArray(intAUCFTimeStep) - (1 / 12) ' Cooling Is Underway Case Else ' Increment Counter intAUCount = intAUCount + 1 ' Compute Temperature Difference sngAUCFTempDiffArray(intAUCFTimeStep) = (strAUCFTempArray(intCF4DayTime) - _ (1 / 12) * intAUCount) - strAUCFTempArray(intAUCFTimeStep) ' Check Temperature Difference Select Case Abs(sngAUCFTempDiffArray(intAUCFTimeStep)) ' Temperature Difference is Greater Than or Equal to 0.50 Case Is >= 0.5 ' Cooling Factor = 10 intCorrectionFactor = 10 ' Temperature Difference is Less Than 0.10 Case Is < 0.1 ' Cooling Factor = 0 intCorrectionFactor = 0 ' Temperature Difference is between 0.50 and 0.10 Case Else ' Cooling Factor = 5 intCorrectionFactor = 5 End Select ' Compute AU Circulator Setpoint Temperature strAUCIRSSTempArray(intAUCFTimeStep) = sngAUCFTempDiffArray(intAUCFTimeStep) * _ intCorrectionFactor + (strAUCFTempArray(intCF4DayTime) - (1 / 12) * intAUCount) 241 End Select ' Check AU Circulator Setpoint Temperature If strAUCIRSSTempArray(intAUCFTimeStep) > 90 Then ' Set Maximum Temperature to 90 Celcius strAUCIRSSTempArray(intAUCFTimeStep) = 90 ElseIf strAUCIRSSTempArray(intAUCFTimeStep) < -10 Then ' Set Minimum Temperature to -10 Celcius strAUCIRSSTempArray(intAUCFTimeStep) = -10 End If End Sub '-------------------------------------------------------------------------------------- ' Store Auburn Cracking Frame Data for Display Purposes ------------------------------- Private Sub StoreTemporaryAUData() ' Store Times sngAUConcAge = sngAUConcAgeArray(intAUCFTimeStep) ' Concrete Age (hrs) ' Store Temps sngAUCFTemp = strAUCFTempArray(intAUCFTimeStep) ' Cracking Frame Temp sngAUCH23Temp = strAUCH23TempArray(intAUCFTimeStep) ' Crosshead 2-3 temp sngAUCH45Temp = strAUCH45TempArray(intAUCFTimeStep) ' Crosshead 4-5 temp sngAUBar24Temp = strAUBar24TempArray(intAUCFTimeStep) ' INVAR BAR 2-4 temp sngAUBar35Temp = strAUBar35TempArray(intAUCFTimeStep) ' INVAR BAR 3-5 temp sngAURoomTemp = strAURoomTempArray(intAUCFTimeStep) ' Room Temp ' Store Strain Gage Outputs sngAUBar24Output = strAUBar24OutputArray(intAUCFTimeStep) ' Bar 2-4 output sngAUBar35Output = strAUBar35OutputArray(intAUCFTimeStep) ' Bar 3-5 output ' Store Stresses sngAUBar24Force = sngAUBar24ForceArray(intAUCFTimeStep) ' Bar 2-4 force sngAUBar35Force = sngAUBar35ForceArray(intAUCFTimeStep) ' Bar 3-5 force sngAUConcStress = sngAUConcStressArray(intAUCFTimeStep) ' Concrete stress End Sub '-------------------------------------------------------------------------------------- ' Activate Auburn Cracking Frame Circulator ------------------------------------------- Private Sub ActivateAUCirculator() Dim strCommandAUCIR As String ' AU Circulator Output Command String ' Command to Activate AU Circulator strCommandAUCIR = "SO1" Do ' Send Command to Activate AU Circualtor comAUCIR.Output = strCommandAUCIR & vbCr ' Check to see if command was processed successfully Loop Until ProcessAUCIRMessage = "!" End Sub '-------------------------------------------------------------------------------------- ' Set Auburn Cracking Frame Circulator Temperature ------------------------------------ Private Sub SetAUCirculatorTemp() Dim strCommandAUCIR As String ' AU Circulator Output Command String ' Command to Set Circulator Setpoint strCommandAUCIR = "SS" & strAUCIRSSTempArray(intAUCFTimeStep) 242 Do ' Send Command to Set Circualtor Temp comAUCIR.Output = strCommandAUCIR & vbCr ' Check to see if command was processed successfully Loop Until ProcessAUCIRMessage = "!" End Sub '-------------------------------------------------------------------------------------- ' Get Auburn Cracking Frame Circulator Bath Temperature ------------------------------- Private Function GetAUCirculatorTemp() ' Send Command to Get Circulator Temperature comAUCIR.Output = "RT" & vbCr ' Store internal bath temp strAUCIRTempArray(intAUCFTimeStep) = ProcessAUCIRMessage End Function '-------------------------------------------------------------------------------------- ' Process Return Message from Auburn Cracking Frame Circulator ------------------------ Private Function ProcessAUCIRMessage() As String Dim intPosition As Integer ' Position of line termination character Dim strAUCIRReturnMessage As String ' AU Circulator return message ' Clear Circulator Return Message ProcessAUCIRMessage = "" Do ' Get information on Inputbuffer strAUCIRReturnMessage = strAUCIRReturnMessage & comAUCIR.Input ' Search for mStrLineTerm intPosition = InStr(strAUCIRReturnMessage, strCIRCommandTerm) Loop Until intPosition > 0 ' Get Circulator Return Data ProcessAUCIRMessage = Left(strAUCIRReturnMessage, intPosition - 1) End Function '-------------------------------------------------------------------------------------- ' Match Curing Controller ------------------------------------------------------------- Private Sub MatchCuringController() Select Case MCBStateOperate ' Match Curing Box Test Started Case conMCBStateTesting ' Change Controller Status to Processing Data frmTestSetup.lblMCBController.Caption = "Processing Data..." ' Process Match Curing Box Data ProcessMCBData ' Compute Temperature Required to Match Cure Cylinders MatchCure ' Set Match Curing Box Circulator Temperature SetMCBCirculatorTemp ' Get Match Curing Box Circulator Temperature GetMCBCirculatorTemp 243 Case Else Exit Sub End Select ' Store Temporary Data to Display StoreTemporaryMCBData ' Update Data on Auburn Cracking Frame Form frmMatchCuringBox.UpdateMCBData ' Increment MCB Time Step intMCBTimeStep = intMCBTimeStep + 1 ' Increment Match Cure Time Step intMatchCureTimeStep = intMatchCureTimeStep + 1 ' Change Controller Status to Waiting on Data frmTestSetup.lblMCBController.Caption = "Waiting on Data Transmission..." End Sub '-------------------------------------------------------------------------------------- ' Process Match Curing Box Data ------------------------------------------------------- Private Sub ProcessMCBData() Dim strDataArray() As String ' Temporary array to store data for parsing ' Change Controller Status to Processing Data frmTestSetup.lblMCBController.Caption = "Processing Data..." ' Parse collected data strDataArray = Split(strDL1InputBuffer, strDLTokenSep) ' Store Times strMCBTimeArray(intMCBTimeStep) = strDataArray(2) ' Real time ' Compute Concrete Age (hrs) sngMCBConcAgeArray(intMCBTimeStep) = (intMCBTimeStep * 5 + intMCBConcAgeOffset) / 60 ' Store Temps strMCB1TempArray(intMCBTimeStep) = strDataArray(11) ' Corner Cylinder Temp strMCB2TempArray(intMCBTimeStep) = strDataArray(12) ' Exterior Cylinder Temp strMCB3TempArray(intMCBTimeStep) = strDataArray(13) ' Interior Cylinder Temp End Sub '-------------------------------------------------------------------------------------- ' Compute Temperature Required to Match Cure 6 x 12 Cylinders ------------------------- Private Sub MatchCure() Dim intCorrectionFactor As Integer ' Temperature Control Correction Factor Dim I As Integer ' Counter Variable ' Set Default MCB Temperature Control Status If intMCBTimeStep = 0 Then ' Default MCB Temperature Control Status strMCBTempControlStatus = "Idle" End If ' Determine CF Concrete Age TimeStep That Matches MCB Concrete Age TimeStep If blnMatchCuringStart = False Then For I = 0 To intAUCFTimeStep ' MCB Conrete Age = CF Concrete Age If sngMCBConcAgeArray(intMCBTimeStep) - sngAUConcAgeArray(I) = 0 Then 244 intMatchCureTimeStep = I ' Set Match Cure TimeStep blnMatchCuringStart = True ' Match Curing Begins Exit For ' MCB Concrete Age < CF Concrete Age - No Temp History Else intMatchCureTimeStep = 0 ' Hold Match Cure TimeStep blnMatchCuringStart = False ' Match Curing Does Not Begin End If Next I End If ' Compute Weighted Average Match Curing Box Cylinder Temperature sngMCBAvgTempArray(intMCBTimeStep) = (strMCB1TempArray(intMCBTimeStep) * 4 + _ strMCB2TempArray(intMCBTimeStep) * 12 + strMCB3TempArray(intMCBTimeStep) * 8) / 24 ' Compute Temperature Difference sngMCBTempDiffArray(intMCBTimeStep) = strAUCFTempArray(intMatchCureTimeStep) - _ sngMCBAvgTempArray(intMCBTimeStep) ' Check MCB Temperature Controller Status Select Case strMCBTempControlStatus ' MCB Temperature Controller is Idle Case "Idle" ' Check Temperature Difference Select Case Abs(sngMCBTempDiffArray(intMCBTimeStep)) ' Temperature Difference is Greater Than or Equal to 0.2 Case Is >= 0.2 ' Check Temperature Difference If strAUCFTempArray(intMatchCureTimeStep) > sngMCBAvgTempArray(intMCBTimeStep) Then ' Change MCB Temperature Controller Status to Heat strMCBTempControlStatus = "Heat" ' Temperature Control Correction Factor = 5 intCorrectionFactor = 5 Else ' Change MCB Temperature Controller Status to Cool strMCBTempControlStatus = "Cool" ' Temperature Control Correction Factor = 15 intCorrectionFactor = 15 End If ' Temperature Difference is Less Than 0.2 Case Is < 0.2 ' Change MCB Temperature Controller Status to Idle strMCBTempControlStatus = "Idle" ' Temperature Control Correction Factor = 5 intCorrectionFactor = 5 End Select ' MCB Temperature Controller is Heating Case "Heat" ' Check Temperature Difference If Abs(sngMCBTempDiffArray(intMCBTimeStep)) > 0.2 Then ' Check Temperature Difference 245 If strAUCFTempArray(intMatchCureTimeStep) > sngMCBAvgTempArray(intMCBTimeStep) Then ' Change MCB Temperature Controller Status to Heat strMCBTempControlStatus = "Heat" ' Temperature Control Correction Factor = 5 intCorrectionFactor = 5 Else ' Change MCB Temperature Controller Status to Cool strMCBTempControlStatus = "Cool" ' Temperature Control Correction Factor = 15 intCorrectionFactor = 15 End If Else ' Change MCB Temperature Controller Status to Idle strMCBTempControlStatus = "Idle" ' Temperature Control Correction Factor = 5 intCorrectionFactor = 5 End If ' MCB Temperature Controller is Cooling Case "Cool" ' Check Temperature Difference If sngMCBTempDiffArray(intMCBTimeStep) > 0 Then ' Change MCB Temperature Controller Status to "Idle" strMCBTempControlStatus = "Idle" ' Temperature Control Correction Factor = 5 intCorrectionFactor = 5 Else ' MCB Temperature Controller Status remains "Cool" strMCBTempControlStatus = "Cool" ' Temperaure Control Correction Factor = 15 intCorrectionFactor = 15 End If End Select ' Compute MCB Circulator Temperature strMCBCIRSSTempArray(intMCBTimeStep) = sngMCBTempDiffArray(intMCBTimeStep) * _ intCorrectionFactor + sngMCBAvgTempArray(intMCBTimeStep) ' Check MCB Circulator Setpoint Temperature If strMCBCIRSSTempArray(intMCBTimeStep) > 90 Then ' Set Maximum Temperature to 90 Celcius strMCBCIRSSTempArray(intMCBTimeStep) = 90 ElseIf strMCBCIRSSTempArray(intMCBTimeStep) < -10 Then ' Set Minimum Temperature to -10 Celcius strMCBCIRSSTempArray(intMCBTimeStep) = -10 End If End Sub '-------------------------------------------------------------------------------------- 246 ' Store Match Curing Data for Display Purposes ---------------------------------------- Private Sub StoreTemporaryMCBData() ' Store Times sngMCBConcAge = sngMCBConcAgeArray(intMCBTimeStep) ' Concrete Age (hrs) ' Store Temps sngMCBAUCFTemp = strAUCFTempArray(intMCBTimeStep) ' AU Cracking Frame Temp sngMCBGMCFTemp = strGMCFTempArray(intMCBTimeStep) ' German Cracking Frame Temp sngMCBAvgTemp = sngMCBAvgTempArray(intMCBTimeStep) ' Average MCB Temp sngMCB1Temp = strMCB1TempArray(intMCBTimeStep) ' MCB Loc 1 Temp sngMCB2Temp = strMCB2TempArray(intMCBTimeStep) ' MCB Loc 2 Temp sngMCB3Temp = strMCB3TempArray(intMCBTimeStep) ' MCB Loc 3 Temp End Sub '-------------------------------------------------------------------------------------- ' Set Match Curing Box Circulator Temperature ----------------------------------------- Private Sub SetMCBCirculatorTemp() Dim strCommandMCBCIR As String ' MCB Circulator Output Command String ' Command to Set Circulator Setpoint strCommandMCBCIR = "SS" & strMCBCIRSSTempArray(intMCBTimeStep) Do ' Send Command to Set Circualtor Temp comMCBCIR.Output = strCommandMCBCIR & vbCr ' Check to see if command was processed successfully Loop Until ProcessMCBCIRMessage = "!" End Sub '-------------------------------------------------------------------------------------- ' Get Match Curing Box Circulator Bath Temperature ------------------------------------ Private Function GetMCBCirculatorTemp() ' Send Command to Get Circulator Temperature comMCBCIR.Output = "RT" & vbCr ' Store internal bath temp strMCBCIRTempArray(intMCBTimeStep) = ProcessMCBCIRMessage End Function '-------------------------------------------------------------------------------------- ' Process Return Message from Match Curing Box Circulator ----------------------------- Private Function ProcessMCBCIRMessage() As String Dim intPosition As Integer ' Position of line termination character Dim strMCBCIRReturnMessage As String ' MCB Circulator return message ' Clear Circulator Return Message ProcessMCBCIRMessage = "" Do ' Get information on Inputbuffer strMCBCIRReturnMessage = strMCBCIRReturnMessage & comMCBCIR.Input ' Search for mStrLineTerm intPosition = InStr(strMCBCIRReturnMessage, strCIRCommandTerm) Loop Until intPosition > 0 ' Get Circulator Return Data ProcessMCBCIRMessage = Left(strMCBCIRReturnMessage, intPosition - 1) End Function '-------------------------------------------------------------------------------------- 247 ' Collect Datalogger #2 Data on the Input Buffer -------------------------------------- Private Function CollectDL2Data() As Boolean ' Assume that there in no new data to collect CollectDL2Data = False ' Check the input buffer for data If comDL2.InBufferCount > 0 Then ' Get data string on input buffer strDL2InputBuffer = strDL2InputBuffer & comDL2.Input ' Change CollectDL2Data Status CollectDL2Data = True End If End Function '-------------------------------------------------------------------------------------- ' Check for a Complete Data String from Datalogger #2 --------------------------------- Private Function CountDL2Data() As Boolean Dim intDataCount As Integer ' Number of data points collected On Error GoTo CountDL2DataErrorHandler ' Set initial CountDL2Data to False CountDL2Data = False ' Count the number data points in the string intDataCount = UBound(Split(strDL2InputBuffer, strDLTokenSep)) ' Check to see if a complete string is retreived '******************************************************************************* ' intDataCount must match the number of data points output from datalogger - 1 '******************************************************************************* If intDataCount = 12 Then ' Change CountDL2Data Status CountDL2Data = True End If Exit Function ' CountDL2Data Error Handler CountDL2DataErrorHandler: Select Case Err.Number Case Else MsgBox "Error (CheckDL2Data) " & CStr(Err.Number) & ": " & Err.Description, vbOKOnly, "Controller Error" End Select End Function '-------------------------------------------------------------------------------------- ' German Cracking Frame Controller ---------------------------------------------------- Private Sub GermanCrackingFrameController() ' Process German Cracking Frame Data ProcessGMCFData ' Check to see if Cooling Should Begin Select Case intGMCFTimeStep 248 Case Is = intCF4DayTime ' Activate GM Circulator ActivateGMCirculator ' Compute Temperature Required to Cool Cracking Frame at 1C/hr CoolGMCrackingFrame ' Adjust Circulator Setpoint Temperature SetGMCirculatorTemp ' Retrieve Circulator Bath Temperature GetGMCirculatorTemp Case Is > intCF4DayTime ' Compute Temperature Required to Cool Cracking Frame at 1C/hr CoolGMCrackingFrame ' Adjust Circulator Setpoint Temperature SetGMCirculatorTemp ' Retrieve Circulator Bath Temperature GetGMCirculatorTemp End Select ' Store Temporary Data to Display StoreTemporaryGMData ' Display Data on German Cracking Frame Form frmGermanCrackingFrame.UpdateGMData ' Increment GMCF Time Step intGMCFTimeStep = intGMCFTimeStep + 1 ' Clear data string for next data reception strDL2InputBuffer = "" ' Change Controller Status to Waiting on Data frmTestSetup.lblGMCFController.Caption = "Waiting on Data Transmission..." End Sub '-------------------------------------------------------------------------------------- ' Process German Cracking Frame Data -------------------------------------------------- Private Sub ProcessGMCFData() Dim strDataArray() As String ' Temporary array to store data for parsing ' Change Controller Status to Processing Data frmTestSetup.lblGMCFController.Caption = "Processing Data..." ' Parse collected data strDataArray = Split(strDL2InputBuffer, strDLTokenSep) ' Store Times strGMCFTimeArray(intGMCFTimeStep) = strDataArray(2) ' Real time ' Compute Concrete Age (hrs) sngGMConcAgeArray(intGMCFTimeStep) = (intGMCFTimeStep * 5 + intCFConcAgeOffset) / 60 ' Store Strain Output strGMBar24OutputArray(intGMCFTimeStep) = strDataArray(3) ' Bar 2-4 Strain Gage Output strGMBar35OutputArray(intGMCFTimeStep) = strDataArray(4) ' Bar 3-5 Strain Gage Output ' Store Temperatures 249 strGMBar35PTempArray(intGMCFTimeStep) = strDataArray(5) ' Bar 3-5 PT100 Temp strGMCFTempArray(intGMCFTimeStep) = strDataArray(6) ' Cracking Frame Temp strGMCH23TempArray(intGMCFTimeStep) = strDataArray(7) ' Crosshead 2-3 Temp strGMCH45TempArray(intGMCFTimeStep) = strDataArray(8) ' Crosshead 4-5 Temp strGMBar24TempArray(intGMCFTimeStep) = strDataArray(9) ' Bar 2-4 TC Temp strGMBar35TempArray(intGMCFTimeStep) = strDataArray(10) ' Bar 3-5 TC Temp strGMRoomTempArray(intGMCFTimeStep) = strDataArray(11) ' Room Temp ' Compute Force in INVAR Bar 2-4 sngGMBar24ForceArray(intGMCFTimeStep) = sngGMBar24Mult * _ (strGMBar24OutputArray(intGMCFTimeStep) - strGMBar24OutputArray(0)) ' Compute Force in INVAR Bar 3-5 sngGMBar35ForceArray(intGMCFTimeStep) = sngGMBar35Mult * _ (strGMBar35OutputArray(intGMCFTimeStep) - strGMBar35OutputArray(0)) ' Compute Equivalent Stress in Concrete sngGMConcStressArray(intGMCFTimeStep) = (sngGMBar24ForceArray(intGMCFTimeStep) + _ sngGMBar35ForceArray(intGMCFTimeStep)) / 36 End Sub '-------------------------------------------------------------------------------------- ' Compute Temperature Required to Cool German Cracking Frame at 1?C/hr ---------------- Private Sub CoolGMCrackingFrame() Dim intCorrectionFactor As Integer ' Correction Factor to control cooling rate ' Check Cooling Status Select Case intGMCFTimeStep ' Initial Cooling Step Case Is = intCF4DayTime ' Initialize Counter intGMCount = 1 ' Begin to Cool Cracking Frame at 1 degree Celcius per hour strGMCIRSSTempArray(intGMCFTimeStep) = strGMCFTempArray(intGMCFTimeStep) - (1 / 12) ' Cooling Is Underway Case Else ' Increment Counter intGMCount = intGMCount + 1 ' Compute Temperature Difference sngGMCFTempDiffArray(intGMCFTimeStep) = (strGMCFTempArray(intCF4DayTime) - _ (1 / 12) * intGMCount) - strGMCFTempArray(intGMCFTimeStep) ' Check Temperature Difference Select Case Abs(sngGMCFTempDiffArray(intGMCFTimeStep)) ' Temperature Difference is Greater Than or Equal to 0.50 Case Is >= 0.5 ' Cooling Factor = 10 intCorrectionFactor = 10 ' Temperature Difference is Less Than 0.10 Case Is < 0.1 ' Cooling Factor = 0 intCorrectionFactor = 0 ' Temperature Difference is between 0.50 and 0.10 Case Else ' Cooling Factor = 5 250 intCorrectionFactor = 5 End Select ' Compute German Circulator Setpoint Temperature strGMCIRSSTempArray(intGMCFTimeStep) = sngGMCFTempDiffArray(intGMCFTimeStep) * _ intCorrectionFactor + (strGMCFTempArray(intCF4DayTime) - (1 / 12) * intGMCount) End Select ' Check German Circulator Setpoint Temperature If strGMCIRSSTempArray(intGMCFTimeStep) > 90 Then ' Set Maximum Temperature to 90 Celcius strGMCIRSSTempArray(intGMCFTimeStep) = 90 ElseIf strGMCIRSSTempArray(intGMCFTimeStep) < -10 Then ' Set Minimum Temperature to -10 Celcius strGMCIRSSTempArray(intGMCFTimeStep) = -10 End If End Sub '-------------------------------------------------------------------------------------- ' Store German Cracking Frame Data for Display Purposes ------------------------------- Private Sub StoreTemporaryGMData() ' Store Times sngGMConcAge = sngGMConcAgeArray(intGMCFTimeStep) ' Concrete Age (hrs) ' Store Temps sngGMCFTemp = strGMCFTempArray(intGMCFTimeStep) ' Cracking Frame Temp sngGMCH23Temp = strGMCH23TempArray(intGMCFTimeStep) ' Crosshead 2-3 temp sngGMCH45Temp = strGMCH45TempArray(intGMCFTimeStep) ' Crosshead 4-5 temp sngGMBar24Temp = strGMBar24TempArray(intGMCFTimeStep) ' INVAR BAR 2-4 temp sngGMBar35Temp = strGMBar35TempArray(intGMCFTimeStep) ' INVAR BAR 3-5 temp sngGMRoomTemp = strGMRoomTempArray(intGMCFTimeStep) ' Room Temp ' Store Strain Gage Outputs sngGMBar24Output = strGMBar24OutputArray(intGMCFTimeStep) ' Bar 2-4 output sngGMBar35Output = strGMBar35OutputArray(intGMCFTimeStep) ' Bar 3-5 output ' Store Stresses sngGMBar24Force = sngGMBar24ForceArray(intGMCFTimeStep) ' Bar 2-4 force sngGMBar35Force = sngGMBar35ForceArray(intGMCFTimeStep) ' Bar 3-5 force sngGMConcStress = sngGMConcStressArray(intGMCFTimeStep) ' Equivalent concrete stress End Sub '-------------------------------------------------------------------------------------- ' Activate German Cracking Frame Circulator ------------------------------------------- Private Sub ActivateGMCirculator() Dim strCommandGMCIR As String ' German Circulator Output Command String ' Command to Activate German Circulator strCommandGMCIR = "SO1" Do ' Send Command to Activate German Circualtor comGMCIR.Output = strCommandGMCIR & vbCr ' Check to see if command was processed successfully Loop Until ProcessGMCIRMessage = "!" End Sub '-------------------------------------------------------------------------------------- 251 ' Set German Cracking Frame Circulator Temperature ------------------------------------ Private Sub SetGMCirculatorTemp() Dim strCommandGMCIR As String ' German Circulator Output Command String ' Command to Set Circulator Setpoint strCommandGMCIR = "SS" & strGMCIRSSTempArray(intGMCFTimeStep) Do ' Send Command to Set Circualtor Temp comGMCIR.Output = strCommandGMCIR & vbCr ' Check to see if command was processed successfully Loop Until ProcessGMCIRMessage = "!" End Sub '-------------------------------------------------------------------------------------- ' Get German Cracking Frame Circulator Bath Temperature ------------------------------- Private Function GetGMCirculatorTemp() ' Send Command to Get Circulator Temperature comGMCIR.Output = "RT" & vbCr ' Store internal bath temp strGMCIRTempArray(intGMCFTimeStep) = ProcessGMCIRMessage End Function '-------------------------------------------------------------------------------------- ' Process Return Message from German Cracking Frame Circulator ------------------------ Private Function ProcessGMCIRMessage() As String Dim intPosition As Integer ' Position of line termination character Dim strGMCIRReturnMessage As String ' German Circulator return message ' Clear Circulator Return Message ProcessGMCIRMessage = "" Do ' Get information on Inputbuffer strGMCIRReturnMessage = strGMCIRReturnMessage & comGMCIR.Input ' Search for mStrLineTerm intPosition = InStr(strGMCIRReturnMessage, strCIRCommandTerm) Loop Until intPosition > 0 ' Get Circulator Return Data ProcessGMCIRMessage = Left(strGMCIRReturnMessage, intPosition - 1) End Function '-------------------------------------------------------------------------------------- ' Set Default Comm Port Settings ------------------------------------------------------ Private Sub SetDefaultCommSettings() ' Datalogger #1 Settings intDL1CommPort = 3 ' Default Serial Port Number strDL1CommSettings = "19200,N,8,1" ' Default Comm Settings intDL1RThreshold = 1 ' Default Recieve Threshold ' Datalogger #2 Settings intDL2CommPort = 4 ' Default Serial Port Number strDL2CommSettings = "19200,N,8,1" ' Default Comm Settings intDL2RThreshold = 1 ' Default Recieve Threshold ' Auburn Circulator Settings intAUCIRCommPort = 5 ' Default Serial Port Number strAUCIRCommSettings = "57600,N,8,1" ' Default Comm Settings 252 intAUCIRRThreshold = 1 ' Default Recieve Threshold intAUCIRSThreshold = 1 ' Default Send Threshold ' German Circulator Settings intGMCIRCommPort = 6 ' Default Serial Port Number strGMCIRCommSettings = "57600,N,8,1" ' Default Comm Settings intGMCIRRThreshold = 1 ' Default Recieve Threshold intGMCIRSThreshold = 1 ' Default Send Threshold ' Free Shrinkage Frame Circulator Settings intFSFCIRCommPort = 7 ' Default Serial Port Number strFSFCIRCommSettings = "57600,N,8,1" ' Default Comm Settings intFSFCIRRThreshold = 1 ' Default Recieve Threshold intFSFCIRSThreshold = 1 ' Default Send Threshold ' Match Curing Box Circulator Settings intMCBCIRCommPort = 8 ' Default Serial Port Number strMCBCIRCommSettings = "57600,N,8,1" ' Default Comm Settings intMCBCIRRThreshold = 1 ' Default Recieve Threshold intMCBCIRSThreshold = 1 ' Default Send Threshold End Sub '-------------------------------------------------------------------------------------- ' Set Default Transmission Format ----------------------------------------------------- Private Sub SetDefaultTransmissionFormat() DLTokenSep = "," ' Default Datalogger Token Separator DLLineTerm = vbCrLf ' Default Datalogger Line Terminator CIRCommandTerm = vbCr ' Default Circulator Command Terminator CIRSuccess = "!" ' Default Circulator Success Terminator End Sub '-------------------------------------------------------------------------------------- ' Set Datalogger #1 Comm Port --------------------------------------------------------- Public Property Let DL1CommPort(intPort As Integer) If intPort = 1 Or intPort = 3 Or intPort = 4 Or intPort = 5 Or intPort = 6 _ Or intPort = 7 Or intPort = 8 Then intDL1CommPort = intPort End If End Property '-------------------------------------------------------------------------------------- ' Set Datalogger #1 Comm Settings ----------------------------------------------------- Public Property Let DL1CommSettings(strSettings As String) strDL1CommSettings = strSettings End Property '-------------------------------------------------------------------------------------- ' Enable or Disable Datalogger #1 Comm Port ------------------------------------------- Public Property Let DL1CommEnabled(blnEnabled As Boolean) blnDL1CommEnabled = blnEnabled End Property '-------------------------------------------------------------------------------------- ' Set Datalogger #2 Comm Port --------------------------------------------------------- Public Property Let DL2CommPort(intPort As Integer) If intPort = 1 Or intPort = 3 Or intPort = 4 Or intPort = 5 Or intPort = 6 _ Or intPort = 7 Or intPort = 8 Then intDL2CommPort = intPort 253 End If End Property '-------------------------------------------------------------------------------------- ' Set Datalogger #2 Comm Settings ----------------------------------------------------- Public Property Let DL2CommSettings(strSettings As String) strDL2CommSettings = strSettings End Property '-------------------------------------------------------------------------------------- ' Enable or Disable Datalogger #2 Comm Port ------------------------------------------- Public Property Let DL2CommEnabled(blnEnabled As Boolean) blnDL2CommEnabled = blnEnabled End Property '-------------------------------------------------------------------------------------- ' Set Auburn Cracking Frame Circulator Comm Port -------------------------------------- Public Property Let AUCIRCommPort(intPort As Integer) If intPort = 1 Or intPort = 3 Or intPort = 4 Or intPort = 5 Or intPort = 6 _ Or intPort = 7 Or intPort = 8 Then intAUCIRCommPort = intPort End If End Property '-------------------------------------------------------------------------------------- ' Set Auburn Cracking Frame Circulator Comm Settings ---------------------------------- Public Property Let AUCIRCommSettings(strSettings As String) strAUCIRCommSettings = strSettings End Property '-------------------------------------------------------------------------------------- ' Enable or Disable Auburn Cracking Frame Circulator Comm Port ------------------------ Public Property Let AUCIRCommEnabled(blnEnabled As Boolean) blnAUCIRCommEnabled = blnEnabled End Property '-------------------------------------------------------------------------------------- ' Set German Cracking Frame Circulator Comm Port -------------------------------------- Public Property Let GMCIRCommPort(intPort As Integer) If intPort = 1 Or intPort = 3 Or intPort = 4 Or intPort = 5 Or intPort = 6 _ Or intPort = 7 Or intPort = 8 Then intGMCIRCommPort = intPort End If End Property '-------------------------------------------------------------------------------------- ' Set German Cracking Frame Circulator Comm Settings ---------------------------------- Public Property Let GMCIRCommSettings(strSettings As String) strGMCIRCommSettings = strSettings End Property '-------------------------------------------------------------------------------------- 254 ' Enable or Disable German Cracking Frame Circulator Comm Port ------------------------ Public Property Let GMCIRCommEnabled(blnEnabled As Boolean) blnGMCIRCommEnabled = blnEnabled End Property '-------------------------------------------------------------------------------------- ' Set Free Shrinkage Frame Circulator Comm Port --------------------------------------- Public Property Let FSFCIRCommPort(intPort As Integer) If intPort = 1 Or intPort = 3 Or intPort = 4 Or intPort = 5 Or intPort = 6 _ Or intPort = 7 Or intPort = 8 Then intFSFCIRCommPort = intPort End If End Property '-------------------------------------------------------------------------------------- ' Set Free Shrinkage Frame Circulator Comm Settings ----------------------------------- Public Property Let FSFCIRCommSettings(strSettings As String) strFSFCIRCommSettings = strSettings End Property '-------------------------------------------------------------------------------------- ' Enable or Disable Free Shrinkage Frame Circulator Comm Port ------------------------- Public Property Let FSFCIRCommEnabled(blnEnabled As Boolean) blnFSFCIRCommEnabled = blnEnabled End Property '-------------------------------------------------------------------------------------- ' Set Match Curing Box Circulator Comm Port ------------------------------------------- Public Property Let MCBCIRCommPort(intPort As Integer) If intPort = 1 Or intPort = 3 Or intPort = 4 Or intPort = 5 Or intPort = 6 _ Or intPort = 7 Or intPort = 8 Then intMCBCIRCommPort = intPort End If End Property '-------------------------------------------------------------------------------------- ' Set Match Curing Box Circulator Comm Settings --------------------------------------- Public Property Let MCBCIRCommSettings(strSettings As String) strMCBCIRCommSettings = strSettings End Property '-------------------------------------------------------------------------------------- ' Enable or Disable Match Curing Box Circulator Comm Port ----------------------------- Public Property Let MCBCIRCommEnabled(blnEnabled As Boolean) blnMCBCIRCommEnabled = blnEnabled End Property '-------------------------------------------------------------------------------------- ' Set Datalogger Token Separator ------------------------------------------------------ Public Property Let DLTokenSep(strDLSep As String) strDLTokenSep = strDLSep End Property '-------------------------------------------------------------------------------------- 255 ' Set Datalogger Line Termination Character ------------------------------------------- Public Property Let DLLineTerm(strDLTerm As String) strDLLineTerm = strDLTerm End Property '-------------------------------------------------------------------------------------- ' Set Circulator Command Termination Character ---------------------------------------- Public Property Let CIRCommandTerm(strCIRTerm As String) strCIRCommandTerm = strCIRTerm End Property '-------------------------------------------------------------------------------------- ' Set Circulator Successful Execution Response Character Public Property Let CIRSuccess(strCIRSuccess As String) strCIRSuccess = strCIRSuccess End Property '-------------------------------------------------------------------------------------- ' Reset RS-232 Serial Port Settings --------------------------------------------------- Public Sub ResetRS232Settings() Dim strErrorLoc As String ' Error Location string ' If an error is encounter jump to RS232SettingsErrorHandler On Error GoTo RS232SettingsErrorHandler ' Datalogger #1 Configuration --------------------------------------------- strErrorLoc = "Datalogger #1 Configuration" ' Clear Input Buffer strDL1InputBuffer = "" ' If the serial port is open then close it If comDL1.PortOpen = True Then comDL1.PortOpen = False ' Apply Comm Port Settings comDL1.CommPort = intDL1CommPort ' Configure Serial Port Number comDL1.Settings = strDL1CommSettings ' Configure Serial Port Settings comDL1.RThreshold = intDL1RThreshold ' Configure Recieve Threshold Value ' If Datalogger #1 is enabled then open its serial port If blnDL1CommEnabled = True Then comDL1.PortOpen = True ' Datalogger #2 Configuration --------------------------------------------- strErrorLoc = "Datalogger #2 Configuration" ' Clear Input Buffer strDL2InputBuffer = "" ' If the serial port is open then close it If comDL2.PortOpen = True Then comDL2.PortOpen = False ' Apply Comm Port Settings comDL2.CommPort = intDL2CommPort ' Configure Serial Port Number comDL2.Settings = strDL2CommSettings ' Configure Serial Port Settings comDL2.RThreshold = intDL2RThreshold ' Configure Recieve Threshold Value ' If Datalogger #2 is enabled then open its serial port If blnDL2CommEnabled = True Then comDL2.PortOpen = True ' Auburn Cracking Frame Circulator Configuration -------------------------- strErrorLoc = "Auburn Circulator Configuration" 256 ' Clear Accumulating Buffers strAUCIRInputBuffer = "" ' Clear the Input Buffer strAUCIROutputBuffer = "" ' Clear the Output Buffer ' If the serial port is open then close it If comAUCIR.PortOpen = True Then comAUCIR.PortOpen = False ' Apply Comm Port Settings comAUCIR.CommPort = intAUCIRCommPort ' Configure Serial Port Number comAUCIR.Settings = strAUCIRCommSettings ' Configure Serial Port Settings comAUCIR.RThreshold = intAUCIRRThreshold ' Configure Recieve Threshold Value comAUCIR.SThreshold = intAUCIRSThreshold ' Configure Send Threshold Value ' If Circulator is enabled then open its serial port If blnAUCIRCommEnabled = True Then comAUCIR.PortOpen = True ' German Cracking Frame Circulator Configuration -------------------------- strErrorLoc = "German Circulator Configuration" ' Clear Accumulating Buffers strGMCIRInputBuffer = "" ' Clear the Input Buffer strGMCIROutputBuffer = "" ' Clear the Output Buffer ' If the serial port is open then close it If comGMCIR.PortOpen = True Then comGMCIR.PortOpen = False ' Apply Comm Port Settings comGMCIR.CommPort = intGMCIRCommPort ' Configure Serial Port Number comGMCIR.Settings = strGMCIRCommSettings ' Configure Serial Port Settings comGMCIR.RThreshold = intGMCIRRThreshold ' Configure Recieve Threshold Value comGMCIR.SThreshold = intGMCIRSThreshold ' Configure Send Threshold Value ' If Circulator is enabled then open its serial port If blnGMCIRCommEnabled = True Then comGMCIR.PortOpen = True ' Free Shrinkage Frame Circulator Configuration --------------------------- strErrorLoc = "Free Shrinkage Frame Circulator Configuration" ' Clear Accumulating Buffers strFSFCIRInputBuffer = "" ' Clear the Input Buffer strFSFCIROutputBuffer = "" ' Clear the Output Buffer ' If the serial port is open then close it If comFSFCIR.PortOpen = True Then comFSFCIR.PortOpen = False ' Apply Comm Port Settings comFSFCIR.CommPort = intFSFCIRCommPort ' Configure Serial Port Number comFSFCIR.Settings = strFSFCIRCommSettings ' Configure Serial Port Settings comFSFCIR.RThreshold = intFSFCIRRThreshold ' Configure Recieve Threshold Value comFSFCIR.SThreshold = intFSFCIRSThreshold ' Configure Send Threshold Value ' If Circulator is enabled then open its serial port If blnFSFCIRCommEnabled = True Then comFSFCIR.PortOpen = True ' Match Curing Box Circulator Configuration ------------------------------- strErrorLoc = "Match Curing Box Circulator Configuration" ' Clear Accumulating Buffers strMCBCIRInputBuffer = "" ' Clear the Input Buffer strMCBCIROutputBuffer = "" ' Clear the Output Buffer ' If the serial port is open then close it If comMCBCIR.PortOpen = True Then comMCBCIR.PortOpen = False ' Apply Comm Port Settings comMCBCIR.CommPort = intMCBCIRCommPort ' Configure Serial Port Number comMCBCIR.Settings = strMCBCIRCommSettings ' Configure Serial Port Settings comMCBCIR.RThreshold = intMCBCIRRThreshold ' Configure Recieve Threshold Value comMCBCIR.SThreshold = intMCBCIRSThreshold ' Configure Send Threshold Value 257 ' If Circulator is enabled then open its serial port If blnMCBCIRCommEnabled = True Then comMCBCIR.PortOpen = True ' Set Reset Status to Sucess strResetRS232Status = "Sucess" Exit Sub ' RS232SettingsErrorHandler RS232SettingsErrorHandler: Select Case Err.Number ' Invalid Comm Port Number Case 8002 ' Display Message Box with error number, error description, and action to remedy error MsgBox "Error " & CStr(Err.Number) & ": " & Err.Description & vbCr & _ "Error Location: " & strErrorLoc & vbCr & _ "Appropriate Action: Verify that Selected Comm Ports Exist!", vbOKOnly, "RS232 Settings Error" ' Comm Port already open Case 8005 ' Display Message Box with error number, error description, and action to remedy error MsgBox "Error " & CStr(Err.Number) & ": " & Err.Description & vbCr & _ "Error Location: " & strErrorLoc & vbCr & _ "Appropriate Action: Verify that Comm Port is not in use by another application!", vbOKOnly, "RS232 Settings Error" ' Any other error Case Else ' Display Message Box with error number, error description, and action to remedy error MsgBox "Error " & CStr(Err.Number) & ": " & Err.Description & vbCr & _ "Error Location: " & strErrorLoc & vbCr & _ "Appropriate Action: Review RS232 Settings!", vbOKOnly, "RS232 Settings Error" End Select ' Show Comm Settings Form so user can fix error frmCommSettings.Show ' Set ResetRS232Status to Error strResetRS232Status = "Error" End Sub '-------------------------------------------------------------------------------------- ' Terminate Communications on the RS-232 Serial Ports --------------------------------- Private Sub TerminateRS232Communications() ' Clear All Input Buffers strDL1InputBuffer = "" ' Datalogger #1 strDL2InputBuffer = "" ' Datalogger #2 strAUCIRInputBuffer = "" ' Auburn CF Circulator strGMCIRInputBuffer = "" ' German CF Circulator strFSFCIRInputBuffer = "" ' Free Shrinkage Frame Circulator strMCBCIRInputBuffer = "" ' Match Curing Box Circulator ' Clear All Output Buffers strAUCIROutputBuffer = "" ' Auburn CF Circulator strGMCIROutputBuffer = "" ' German CF Circulator strFSFCIROutputBuffer = "" ' Free Shrinkage Frame Circulator strMCBCIROutputBuffer = "" ' Match Curing Box Circulator ' Close All Open Serial Ports If comDL1.PortOpen = True Then comDL1.PortOpen = False 258 If comDL2.PortOpen = True Then comDL2.PortOpen = False If comAUCIR.PortOpen = True Then comAUCIR.PortOpen = False If comGMCIR.PortOpen = True Then comGMCIR.PortOpen = False If comFSFCIR.PortOpen = True Then comFSFCIR.PortOpen = False If comMCBCIR.PortOpen = True Then comMCBCIR.PortOpen = False End Sub '-------------------------------------------------------------------------------------- ' Check Text for Numerical Data ------------------------------------------------------- Public Function CheckText(Text As String) As Boolean Dim I As Integer Dim strData As String ' Data to be Checked Dim intdecimal As Integer ' Decimal Counter ' Initialize Decimal Counter intdecimal = 0 ' Initial CheckText Value CheckText = False ' Check Text for Numerical Data If Text = "" Then CheckText = True ElseIf Mid(Text, 1, 1) = "." And Len(Text) = 1 Then CheckText = True Else For I = 1 To Len(Text) strData = Mid(Text, I, 1) If strData = "a" Then ' Lowercase a CheckText = True ElseIf strData = "A" Then ' Uppercase A CheckText = True ElseIf strData = "b" Then ' Lowercase b CheckText = True ElseIf strData = "B" Then ' Uppercase B CheckText = True ElseIf strData = "c" Then ' Lowercase c CheckText = True ElseIf strData = "C" Then ' Uppercase C CheckText = True ElseIf strData = "d" Then ' Lowercase d CheckText = True ElseIf strData = "D" Then ' Uppercase D CheckText = True ElseIf strData = "e" Then ' Lowercase e CheckText = True ElseIf strData = "E" Then ' Uppercase E CheckText = True ElseIf strData = "f" Then ' Lowercase f CheckText = True ElseIf strData = "F" Then ' Uppercase F CheckText = True ElseIf strData = "g" Then ' Lowercase g CheckText = True ElseIf strData = "G" Then ' Uppercase G CheckText = True ElseIf strData = "h" Then ' Lowercase h CheckText = True ElseIf strData = "H" Then ' Uppercase H CheckText = True ElseIf strData = "i" Then ' Lowercase i CheckText = True ElseIf strData = "I" Then ' Uppercase I CheckText = True ElseIf strData = "j" Then ' Lowercase j CheckText = True ElseIf strData = "J" Then ' Uppercase J 259 CheckText = True ElseIf strData = "k" Then ' Lowercase k CheckText = True ElseIf strData = "K" Then ' Uppercase K CheckText = True ElseIf strData = "l" Then ' Lowercase l CheckText = True ElseIf strData = "L" Then ' Uppercase L CheckText = True ElseIf strData = "m" Then ' Lowercase m CheckText = True ElseIf strData = "M" Then ' Uppercase M CheckText = True ElseIf strData = "n" Then ' Lowercase n CheckText = True ElseIf strData = "N" Then ' Uppercase N CheckText = True ElseIf strData = "o" Then ' Lowercase o CheckText = True ElseIf strData = "O" Then ' Uppercase O CheckText = True ElseIf strData = "p" Then ' Lowercase p CheckText = True ElseIf strData = "P" Then ' Uppercase P CheckText = True ElseIf strData = "q" Then ' Lowercase q CheckText = True ElseIf strData = "Q" Then ' Uppercase Q CheckText = True ElseIf strData = "r" Then ' Lowercase r CheckText = True ElseIf strData = "R" Then ' Uppercase R CheckText = True ElseIf strData = "s" Then ' Lowercase s CheckText = True ElseIf strData = "S" Then ' Uppercase S CheckText = True ElseIf strData = "t" Then ' Lowercase t CheckText = True ElseIf strData = "T" Then ' Uppercase T CheckText = True ElseIf strData = "u" Then ' Lowercase u CheckText = True ElseIf strData = "U" Then ' Uppercase U CheckText = True ElseIf strData = "v" Then ' Lowercase v CheckText = True ElseIf strData = "V" Then ' Uppercase V CheckText = True ElseIf strData = "w" Then ' Lowercase w CheckText = True ElseIf strData = "W" Then ' Uppercase W CheckText = True ElseIf strData = "x" Then ' Lowercase x CheckText = True ElseIf strData = "X" Then ' Uppercase X CheckText = True ElseIf strData = "y" Then ' Lowercase y CheckText = True ElseIf strData = "Y" Then ' Uppercase Y CheckText = True ElseIf strData = "z" Then ' Lowercase z CheckText = True ElseIf strData = "Z" Then ' Uppercase Z CheckText = True ElseIf strData = "!" Then ' ! CheckText = True ElseIf strData = "@" Then ' @ CheckText = True 260 ElseIf strData = "#" Then ' # CheckText = True ElseIf strData = "$" Then ' $ CheckText = True ElseIf strData = "%" Then ' % CheckText = True ElseIf strData = "^" Then '^ CheckText = True ElseIf strData = "&" Then ' & CheckText = True ElseIf strData = "*" Then ' * CheckText = True ElseIf strData = "(" Then ' ( CheckText = True ElseIf strData = ")" Then ' ) CheckText = True ElseIf strData = "_" Then ' CheckText = True ElseIf strData = "-" Then ' - CheckText = True ElseIf strData = "=" Then ' = CheckText = True ElseIf strData = "+" Then ' + CheckText = True ElseIf strData = "[" Then ' [ CheckText = True ElseIf strData = "}" Then ' ] CheckText = True ElseIf strData = "{" Then ' { CheckText = True ElseIf strData = "]" Then ' } CheckText = True ElseIf strData = "\" Then ' \ CheckText = True ElseIf strData = "|" Then ' | CheckText = True ElseIf strData = ";" Then ' ; CheckText = True ElseIf strData = ":" Then ' : CheckText = True ElseIf strData = "'" Then ' CheckText = True ElseIf strData = "," Then ' , CheckText = True ElseIf strData = "<" Then ' < CheckText = True ElseIf strData = ">" Then ' > CheckText = True ElseIf strData = "/" Then ' / CheckText = True ElseIf strData = "?" Then ' ? CheckText = True ElseIf strData = "`" Then ' ` CheckText = True ElseIf strData = "~" Then ' ~ CheckText = True ElseIf strData = "." Then ' . intdecimal = intdecimal + 1 End If Next I End If If intdecimal > 1 Then CheckText = True End Function '-------------------------------------------------------------------------------------- ' Save Test Data ---------------------------------------------------------------------- Public Function SaveData() 261 Dim mIntFileNum As Integer ' File number Dim I As Integer ' Counter Variable ' CancelError is True On Error GoTo SaveAsErrorHandler With cdlSaveAs .DialogTitle = "Please Select Location to Store Test Data" .FileName = "" .Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*" .Flags = cdlOFNOverwritePrompt .ShowSave End With ' Read file name to write data to Dim Outputfilename As String Outputfilename = cdlSaveAs.FileName ' Change Mouse Pointer to Hourglass MousePointer = vbHourglass ' Attempt to open the file mIntFileNum = FreeFile ' Open saved file to write data to Open Outputfilename For Output As #mIntFileNum ' Write data information to file Print #mIntFileNum, "CRACKING FRAME TEST DATA" Print #mIntFileNum, "" Print #mIntFileNum, strMixDescription Print #mIntFileNum, dteTestDate Print #mIntFileNum, "" Print #mIntFileNum, "AU Cracking Frame Properties" Print #mIntFileNum, "INVAR Bar 2-4 Multiplier = " & sngAUBar24Mult Print #mIntFileNum, "INVAR Bar 3-5 Multiplier = " & sngAUBar35Mult Print #mIntFileNum, "" Print #mIntFileNum, "German Cracking Frame Properties" Print #mIntFileNum, "INVAR Bar 2-4 Multiplier = " & sngGMBar24Mult Print #mIntFileNum, "INVAR Bar 3-5 Multiplier = " & sngGMBar35Mult Print #mIntFileNum, "" Print #mIntFileNum, "Auburn Cracking Frame Data, , , , , , , , , , , , " & _ "German Cracking Frame Data, , , , , , , , , , , , " & _ "Match Curing Box Data, , , , , Ciculator Profile Data" Print #mIntFileNum, "Concrete Age (hrs), CF Temp (?C), CH 2-3 Temp (?C), " & _ "CH 4-5 Temp (?C), Bar 2-4 Temp (?C), Bar 3-5 Temp (?C), " & _ "Room Temp (?C), Bar 2-4 Output (mV/V), Bar 3-5 Ouput (mV/V), " & _ "Bar 2-4 Force (lbs), Bar 3-5 Force (lbs), Concrete Stress (psi), " & _ "Concrete Age (hrs), CF Temp (?C), CH 2-3 Temp (?C), " & _ "CH 4-5 Temp (?C), Bar 2-4 Temp (?C), Bar 3-5 Temp (?C), " & _ "Bar 3-5 PTemp (?C), Room Temp (?C), Bar 2-4 Output (mV/V), " & _ "Bar 3-5 Ouput (mV/V), Bar 2-4 Force (lbs), Bar 3-5 Force (lbs), " & _ "Concrete Stress (psi), " & _ "Concrete Age (hrs), Corner Cylinder Temp (?C), " & _ "Exterior Cylinder Temp (?C), Interior Cylinder Temp (?C), " & _ "Avg Cylinder Temp (?C), " & _ "Concrete Age (hrs), AUCIR Temp (?C), AUCIR SS Temp (?C), " & _ "Concrete Age (hrs), GMCIR Temp (?C), GMCIR SS Temp (?C), " & _ "Concrete Age (hrs), MCBCIR Temp (?C), MCBCIR SS Temp (?C)" ' Write Test Data to File For I = 0 To intAUCFTimeStep - 1 ' Print data string Print #mIntFileNum, sngAUConcAgeArray(I) & ", " & strAUCFTempArray(I) & ", " & _ 262 strAUCH23TempArray(I) & ", " & strAUCH45TempArray(I) & ", " & _ strAUBar24TempArray(I) & ", " & strAUBar35TempArray(I) & ", " & _ strAURoomTempArray(I) & ", " & strAUBar24OutputArray(I) & ", " & _ strAUBar35OutputArray(I) & ", " & sngAUBar24ForceArray(I) & ", " & _ sngAUBar35ForceArray(I) & ", " & sngAUConcStressArray(I) & ", " & _ sngGMConcAgeArray(I) & ", " & strGMCFTempArray(I) & ", " & _ strGMCH23TempArray(I) & ", " & strGMCH45TempArray(I) & ", " & _ strGMBar24TempArray(I) & ", " & strGMBar35TempArray(I) & ", " & _ strGMBar35TempArray(I) & ", " & strGMRoomTempArray(I) & ", " & _ strGMBar24OutputArray(I) & ", "; strGMBar35OutputArray(I) & ", " & _ sngGMBar24ForceArray(I) & ", " & sngGMBar35ForceArray(I) & ", " & _ sngGMConcStressArray(I) & ", " & _ sngMCBConcAgeArray(I) & ", " & strMCB1TempArray(I) & ", " & _ strMCB2TempArray(I) & ", " & strMCB3TempArray(I) & ", " & _ sngMCBAvgTempArray(I) & ", " & _ sngAUConcAgeArray(I) & ", " & strAUCIRTempArray(I) & ", " & _ strAUCIRSSTempArray(I) & ", " & _ sngGMConcAgeArray(I) & ", " & strGMCIRTempArray(I) & ", " & _ strGMCIRSSTempArray(I) & ", " & _ sngMCBConcAgeArray(I) & ", " & strMCBCIRTempArray(I) & ", " & _ strMCBCIRSSTempArray(I) Next I ' Close file after writing data Close #mIntFileNum ' Change Mouse Pointer to Arrow MousePointer = vbArrow Exit Function ' SaveAs Error Handler SaveAsErrorHandler: ' Change Mouse Pointer to Arrow MousePointer = vbArrow ' User Pressed Cancel Button Exit Function End Function '-------------------------------------------------------------------------------------- E.3 TEST SETUP FORM The test setup form allows the user to activate the rigid cracking frame test controllers as well as the match curing box test controller. The user can input a concrete age offset, in five minute intervals, between the time the concrete is mixed and the time the test is started. The user may also enter a mixture description that is displayed at the top of the saved data. A screen capture of the test setup form is presented in Figure E-1 and the form code is presented in Table E-3. 263 Figure E-1: Test setup form Table E-3: Test setup form code -------------------------------------- .ItemData(.NewIndex) = 1 Cement": .ItemData(.NewIndex) = 2 e": .ItemData(.NewIndex) = 3 h": .ItemData(.NewIndex) = 4 dex) = 5 dex) = 6 a Cement": .ItemData(.NewIndex) = 7 sh": .ItemData(.NewIndex) = 8 .ItemData(.NewIndex) = 9 : .ItemData(.NewIndex) = 10 .ItemData(.NewIndex) = 11 Option Explicit ' Initialize Form ------------------------------- ub Form_Load() Private S ' Setup Mix Description Combo Box With cmbMixDescription .Clear .AddItem "MIX 1: Control": .AddItem "MIX 2: Control + Type III tem "MIX 3: Control + Limeston .AddI .AddItem "MIX 4: Control + 30% F Fly As .AddItem "MIX 5: Hot Control (35?C)": .ItemData(.NewIn 10?C)": .ItemData(.NewIn .AddItem "MIX 6: Cold Control ( .AddItem "MIX 7: Control + High Alumin AddItem "MIX 8: Control + 30% C Fly A . .AddItem "MIX 9: Control (w/c = 0.38)": .AddItem "MIX 10: Control (w/c = 0.32)" .AddItem "Other": End With ' Setup Default Concrete Age Offsets 264 txtCFConcAgeOffset.Text = 0 ' Cracking Frame Concrete Age Offset (min) Curing Box Concrete Age Offset (min) ---------------------------------------- -- " ment" "MIX 3: Control + Limestone" "MIX 4: Control + 30% F Fly Ash" ent" "MIX 5: Control + High Alumina Cement" ement.Text = 0.44 mentitious.Text = 0.44 se ontroller.strMixDescription = "MIX 6: Control + 30% C Fly Ash" WaterCement.Text = 0.63 txtWaterCementitious.Text = 0.44 alse xDescription = "MIX 7: Cold Control (10?C)" frmController.strMixDescription = "MIX 8: Hot Control (35?C)" txtMCBConcAgeOffset.Text = 0 ' Match End Sub '---------------------------------------------- ---------------------------------------------' Mix Description ---------------------- Private Sub cmbMixDescription_Click() Select Case cmbMixDescription.Text Case "MIX 1: Control" txtMixDescription.Visible = False "MIX 1: Control" frmController.strMixDescription = txtWaterCement.Text = 0.44 44 txtWaterCementitious.Text = 0. Case "MIX 2: Control + Type III Cement txtMixDescription.Visible = False ion = "MIX 2: Control + Type III Ce frmController.strMixDescript txtWaterCement.Text = 0.44 txtWaterCementitious.Text = 0.44 Case "MIX 3: Control + Limestone" txtMixDescription.Visible = False frmController.strMixDescription = txtWaterCement.Text = 0.44 4 txtWaterCementitious.Text = 0.4 Case "MIX 4: Control + 30% F Fly Ash" txtMixDescription.Visible = False frmController.strMixDescription = txtWaterCement.Text = 0.63 txtWaterCementitious.Text = 0.44 Case "MIX 5: Control + High Alumina Cem txtMixDescription.Visible = False frmController.strMixDescription = txtWaterC txtWaterCe h" Case "MIX 6: Control + 30% C Fly As MixDescription.Visible = Fal txt frmC txt Case "MIX 7: Cold Control (10?C)" txtMixDescription.Visible = F frmController.strMi txtWaterCement.Text = 0.44 txtWaterCementitious.Text = 0.44 Case "MIX 8: Hot Control (35?C)" txtMixDescription.Visible = False txtWaterCement.Text = 0.44 txtWaterCementitious.Text = 0.44 Case "MIX 9: Control (w/c = 0.38)" 265 txtMixDescription.Visible = Fa xDescripti lse on = "MIX 9: Control (w/c = 0.38)" frmController.strMixDescription = "MIX 10: Control (w/c = 0.32)" ----------------------------------------- t.Text) = True Then ffset.Text ------------------------ ------------------------ ffset.Text) = True Then t = 0 MCBConcAgeOffset.Text ----------------------------------------------------------- ription -------------------------------------------------------- ---------------------------------------------------- ---------------------------------------- ntroller State Button frmController.strMi txtWaterCement.Text = 0.38 txtWaterCementitious.Text = 0.38 se "MIX 10: Control (w/c = 0.32)" Ca txtMixDescription.Visible = False txtWaterCement.Text = 0.32 txtWaterCementitious.Text = 0.32 Case "Other" txtMixDescription.Visible = True txtWaterCement.Text = "" txtWaterCementitious.Text = "" End Select End Sub ------------------------------------------------------- '------------------------------- ' Retrieve Cracking Frame Concrete Age Offset Private Sub txtCFConcAgeOffset_Change() ' Check for Numerical Data If frmController.CheckText(txtCFConcAgeOffse frmController.intCFConcAgeOffset = 0 Else frmController.intCFConcAgeOffset = txtCFConcAgeO End If End Sub '-------------------------------------------------------------- ring Box Concrete Age Offset ---------------' Retrieve Match Cu Private Sub txtMCBConcAgeOffset_Change() ' Check for Numerical Data If frmController.CheckText(txtMCBConcAgeO frmController.intMCBConcAgeOffse Else frmController.intMCBConcAgeOffset = txt End If End Sub '--------------------------- efined Mix Desc' User D Private Sub txtMixDescription_Change() frmController.strMixDescription = txtMixDescription.Text End Sub -----------------------------'----- ' Turn the Cracking Frame Controller On or Off Private Sub btnCFOnOff_Click() ' Check Cracking Frame Co Select Case frmController.CFStateOperate ' If the Controller is Off, then turn it On Case conCFStateOff nd "ON" frmController.ProcessCFComma ' Enable Cracking Frame Start/Abort btnCFStartAbort.Enabled = True 266 ' Enable Concrete Age Inp txtCFConcAgeOffset.Enabled ut then turn it Off essCFCommand "OFF" ton True --------------------------------- ------------------------------------ ng Frame Controller State frmController.CFStateOperate n is clicked - Start Test dle Start" ton the Abort button is clicked - Abort Test t" able Concrete Age Input set.Enabled = True = True any other state ' If Controller is in Case Else frmController.Proc ' Disable Cracking Frame Start/Abort But btnCFStartAbort.Enabled = False ' Enable Concrete Age Input txtCFConcAgeOffset.Enabled = End Select ' Hide Controller Form frmController.Hide End Sub -----------------------------------'------------------ Abort Cracking Frame Comparison Test ---' Start or Public Sub btnCFStartAbort_Click() ' Check Cracki Select Case ' If the Start butto Case conCFStateI frmController.ProcessCFCommand "Start" ' Enable Match Curing Box On/Off Button True btnMCBOnOff.Enabled = ' Disable Concrete Age Input txtCFConcAgeOffset.Enabled = False ' Record Test Start Date TestDate = Date frmController.dte ' If an Error Occurs Case conCFStateError nd " frmController.ProcessCFComma ' Enable Match Curing Box On/Off But btnMCBOnOff.Enabled = True ' Diable Concrete Age Input txtCFConcAgeOffset.Enabled = False ' Record Test Start Date frmController.dteTestDate = Date If ' Case Else frmController.ProcessCFCommand "Abor ' En txtCFConcAgeOff End Select ' Hide Controller Form frmController.Hide End Sub -------------------------------------------------- '------------------------------------ 267 ' Turn the Match Curing Controller On or O Private Sub btnMCBOnOff_Click() ff ------------------------------------------ ring Start/Abort Button nabled = True n turn it Off nable Concrete Age Input CBConcAgeOffset.Enabled = True orm ------------------------------------------------- - frmController.ProcessMCBCommand "Start" txtMCBConcAgeOffset.Enabled = False ' If an Error Occurs Case conMCBStateError frmController.ProcessMCBCommand "Start" ' Disable Concrete Age Input txtMCBConcAgeOffset.Enabled = False ' If the Abort button is clicked - Abort Test Case Else frmController.ProcessMCBCommand "Abort" ' Enable Concrete Age Input txtMCBConcAgeOffset.Enabled = True End Select ' Hide Controller Form frmController.Hide End Sub '-------------------------------------------------------------------------------------- ' Check Match Curing Controller State Select Case frmController.MCBStateOperate ' If the Controller is Off, then turn it On ase conMCBStateOff C frmController.ProcessMCBCommand "ON" ' Enable Match Cu btnMCBStartAbort.E ' Enable Concrete Age Input True txtMCBConcAgeOffset.Enabled = ' If Controller is in any other state the Case Else frmController.ProcessMCBCommand "OFF" ' Disable Match Curing Start/Abort Button btnMCBStartAbort.Enabled = False ' E txtM End Select de Controller F ' Hi frmController.Hide End Sub '------------------------------------- ' Start or Abort Match Curing Test --------------------------------------------------- Public Sub btnMCBStartAbort_Click() ' Check Match Curing Controller State Select Case frmController.MCBStateOperate ' If the Start button is clicked - Start Test Case conMCBStateIdle ' Disable Concrete Age Input 268 E.4 EQUIPMENT SETUP FORM The equipment setup form allows the user to configure the testing equipment before running a test. Calibration factors for each cracking frame can be entered as well as the serial port number of data-logger and circulator. A screen capture of the equipment setup form is presented in Figure E-2 and the form code is presented in Table E-4. Figure E-2: Equipment setup form Table E-4: Equipment setup form code Option Explicit rm ' Initialize Fo --------------------------------------------------------------------- Auburn CF Settings German CF Settings Private Sub Form_Load() InitializeAuburnCrackingFrame ' Initialize InitializeGermanCrackingFrame ' Initialize 269 InitializeFreeShrinkageFrame ' Initialize FSF Settings InitializeMatchCuringBox ' Initialize MCB Settings End Sub -------------'------------------ ------------------------------------------------------- ------------------------------------- t to Datalogger #1 = cmbAUDL.ItemData(cmbAUDL.ListIndex) Clear = 4 fault to Circulator #1 intAUCirculator = cmbAUCIR.ItemData(cmbAUCIR.ListIndex) ------------------------------------------------------- ------------------------------------- t to Datalogger #2 = cmbGMDL.ItemData(cmbGMDL.ListIndex) Clear a(.NewIndex) = 4 ault to Circulator #2 mData(cmbGMCIR.ListIndex) -------------------------------------------------------------------- ' Initialize Auburn Cracking Frame Settings ------ Private Sub InitializeAuburnCrackingFrame() ' Default Datalogger Number With cmbAUDL .Clear .AddItem "1": .ItemData(.NewIndex) = 1 NewIndex) = 2 .AddItem "2": .ItemData(. .ListIndex = 0 ' Defaul End With frmController.intAUDatalogger mber ' Default Circulator Nu th cmbAUCIR Wi . .AddItem "1": .ItemData(.NewIndex) = 1 .AddItem "2": .ItemData(.NewIndex) = 2 .AddItem "3": .ItemData(.NewIndex) = 3 .AddItem "4": .ItemData(.NewIndex) .ListIndex = 0 ' De End With frmController. ' Default INVAR Bar Properties txtAUBar24Mult.Text = 200956 txtAUBar35Mult.Text = 197773 txtAUBarCTE.Text = 0.0000017 txtAUBarK.Text = 10.5 End Sub -------------'------------------ ' Initialize German Cracking Frame Settings ------ Private Sub InitializeGermanCrackingFrame() ' Default Datalogger Number With cmbGMDL .Clear .AddItem "1": .ItemData(.NewIndex) = 1 ewIndex) = 2 .AddItem "2": .ItemData(.N .ListIndex = 1 ' Defaul End With frmController.intGMDatalogger mber ' Default Circulator Nu cmbGMCIR With . .AddItem "1": .ItemData(.NewIndex) = 1 .AddItem "2": .ItemData(.NewIndex) = 2 = 3 .AddItem "3": .ItemData(.NewIndex) .AddItem "4": .ItemDat .ListIndex = 1 ' Def End With frmController.intGMCirculator = cmbGMCIR.Ite ' Default INVAR Bar Properties txtGMBar24Mult.Text = 190669 txtGMBar35Mult.Text = 191257 txtGMBarCTE.Text = 0.00000126 txtGMBarK.Text = 10.5 End Sub ---'--------------- 270 ' Initialize Free Shrinkage Frame Settings -------------------------------------------- efault to Datalogger #1 ger = cmbFSFDL.ItemData(cmbFSFDL.ListIndex) fault Circulator Number ndex) = 4 ' Default to Circulator #3 intFSFCirculator = cmbFSFCIR.ItemData(cmbFSFCIR.ListIndex) --------------------------------------------------------------- ------------------------------------- ListIndex = 0 ' Default to Datalogger #1 h ntroller.intMCBCirculator = cmbMCBCIR.ItemData(cmbMCBCIR.ListIndex) ----------------------- hen Private Sub InitializeFreeShrinkageFrame() ' Default Datalogger Number With cmbFSFDL .Clear .AddItem "1": .ItemData(.NewIndex) = 1 .AddItem "2": .ItemData(.NewIndex) = 2 .ListIndex = 0 ' D End With frmController.intFSFDatalog ' De With cmbFSFCIR .Clear .AddItem "1": .ItemData(.NewIndex) = 1 .AddItem "2": .ItemData(.NewIndex) = 2 dex) = 3 .AddItem "3": .ItemData(.NewIn .ItemData(.NewI .AddItem "4": .ListIndex = 2 End With r. frmControlle ' Default LVDT Properties txtFSFLVDT1Mult.Text = 1# txtFSFLVDT2Mult.Text = 1# txtFSFLVDTCTE.Text = 1# End Sub ----'------------------- ' Initialize Match Curing Box Settings ----------- Private Sub InitializeMatchCuringBox() ' Datalogger Number With cmbMCBDL .Clear .AddItem "1": .ItemData(.NewIndex) = 1 .AddItem "2": .ItemData(.NewIndex) = 2 . End With frmController.intMCBDatalogger = cmbMCBDL.ItemData(cmbMCBDL.ListIndex) ' Circulator Number With cmbMCBCIR .Clear .AddItem "1": .ItemData(.NewIndex) = 1 2 .AddItem "2": .ItemData(.NewIndex) = .AddItem "3": .ItemData(.NewIndex) = 3 .AddItem "4": .ItemData(.NewIndex) = 4 tIndex = 3 ' Default to Circulator #4 .Lis Wit End frmCo End Sub -------------------------------------------------- '------------------------------------ ' Reset AU Cracking Frame Bar 2-4 Multiplier ------------------- Private Sub txtAUBar24Mult_Change() ' Check for Numerical Data If frmController.CheckText(txtAUBar24Mult.Text) = True T ontroller.sngAUBar24Mult = 200956 frmC Else frmController.sngAUBar24Mult = txtAUBar24Mult.Text End If End Sub ----------------------------------------------------- '--------------------------------- 271 ' Reset AU Cracking Frame Bar 3 Private Sub txtAUBar35Mult_Chang -4 Multiplier ------------------------------------------ Text) = True Then Controller.sngAUBar35Mult = txtAUBar35Mult.Text Coefficient of Thermal Expansion ---------------------- = True Then Controller.dblAUBarCTE = txtAUBarCTE.Text f --------------- ------------------------------------------------------------------------------ er = cmbAUDL.ItemData(cmbAUDL.ListIndex) ----------------------- --------------------------- ------------------------------------------------------------------------------------- ge() ext) = True Then e() ' Check for Numerical Data Controller.CheckText(txtAUBar35Mult. If frm frmController.sngAUBar35Mult = 197773 Else frm End If End Sub '-------------------------------------------------------------------------------------- ' Reset AU Cracking Frame INVAR Private Sub txtAUBarCTE_Change() ' Check for Numerical Data If frmController.CheckText(txtAUBarCTE.Text) frmController.dblAUBarCTE = 0.0000017 Else frm End I d Sub En '-------------------------------------------------------------------------------------- ' Reset AU Cracking Frame INVAR Thermal Conductivity ------------------- Private Sub txtAUBarK_Change() ' Check for Numerical Data If frmController.CheckText(txtAUBarK.Text) = True Then frmController.dblAUBarK = 10.5 Else K = txtAUBarK.Text frmController.dblAUBar End If b End Su '-------- Reset AU Cracking Frame Datalogger Number ------------------------------------------- ' Private Sub cmbAUDL_Click() frmController.intAUDatalogg End Sub -----------------'---------------------------------------------- ' Reset AU Cracking Frame Circulator Number ---------------- cmbAUCIR_Click() Private Sub frmController.intAUCirculator = cmbAUCIR.ItemData(cmbAUCIR.ListIndex) d Sub En '- Multiplier -------------------------------------- ' Reset German Cracking Frame Bar 2-4 Private Sub txtGMBar24Mult_Chan ' Check for Numerical Data If frmController.CheckText(txtGMBar24Mult.T frmController.sngGMBar24Mult = 190669 Else ontroller.sngGMBar24Mult = txtGMBar24Mult.Text frmC If End End Sub '-------------------------------------------------------------------------------------- 272 ' Reset German Cracking Frame B Private Sub txtGMBar35Mult_Chang ar 3-4 Multiplier -------------------------------------- ext) = True Then Controller.sngGMBar35Mult = txtGMBar35Mult.Text VAR Coefficient of Thermal Expansion ------------------ = True Then Controller.dblGMBarCTE = txtGMBarCTE.Text f --------------- ------------------------------------------------------------------------------ er = cmbGMDL.ItemData(cmbGMDL.ListIndex) ---------------------- ------------------------- ------------------------------------------------------------------------------------- nge() ult.Text) = True Then e() ' Check for Numerical Data Controller.CheckText(txtGMBar35Mult.T If frm frmController.sngGMBar35Mult = 191257 Else frm End If End Sub '-------------------------------------------------------------------------------------- N' Reset German Cracking Frame I Private Sub txtGMBarCTE_Change() ' Check for Numerical Data If frmController.CheckText(txtGMBarCTE.Text) frmController.dblGMBarCTE = 0.00000126 Else frm End I d Sub En '-------------------------------------------------------------------------------------- ' Reset German Cracking Frame INVAR Thermal Conductivity --------------- Private Sub txtGMBarK_Change() ' Check for Numerical Data If frmController.CheckText(txtGMBarK.Text) = True Then frmController.dblGMBarK = 10.5 Else K = txtGMBarK.Text frmController.dblGMBar End If d Sub En '-------- Reset German Cracking Frame Datalogger Number --------------------------------------- ' Private Sub cmbGMDL_Click() frmController.intGMDatalogg End Sub ----------------------'------------------------------------------ ' Reset German Cracking Frame Circulator Number -------------- cmbGMCIR_Click() Private Sub frmController.intGMCirculator = cmbGMCIR.ItemData(cmbGMCIR.ListIndex) d Sub En '- ------------------------------------------------- ' Reset FSF LVDT #1 Multiplier ------- Private Sub txtFSFLVDT1Mult_Cha ' Check for Numerical Data If frmController.CheckText(txtFSFLVDT1M frmController.sngFSFLVDT1Mult = 1 Else ontroller.sngFSFLVDT1Mult = txtFSFLVDT1Mult.Text frmC If End End Sub '-------------------------------------------------------------------------------------- 273 ' Reset FSF LVDT #2 Multiplier Private Sub txtFSFLVDT2Mult_Chan -------------------------------------------------------- T2Mult.Text) = True Then Controller.sngFSFLVDT2Mult = txtFSFLVDT2Mult.Text ------------ ator = cmbFSFCIR.ItemData(cmbFSFCIR.ListIndex) cmbMCBDL.ItemData(cmbMCBDL.ListIndex) ------------------------------------------------------ r Number -------------------------------------------- ulator = cmbMCBCIR.ItemData(cmbMCBCIR.ListIndex) ------------------------------------------------------ ls -------------------------------------------------- ) ge() ' Check for Numerical Data Controller.CheckText(txtFSFLVD If frm frmController.sngFSFLVDT2Mult = 1 Else frm End If End Sub '-------------------------------------------------------------------------------------- ' Reset FSF INVAR Coefficient of Thermal Expansion ------------------------ Private Sub txtFSFLVDTCTE_Change() ' Check for Numerical Data If frmController.CheckText(txtFSFLVDTCTE.Text) = True Then frmController.dblFSFLVDTCTE = 1 Else TCTE = txtFSFLVDTCTE.Text frmController.dblFSFLVD End If d Sub En '-------------------------------------------------------------------------------------- ' Reset Free Shrinkage Frame Datalogger Number ---------------------------------------- Private Sub cmbFSFDL_Click() frmController.intFSFDatalogger = cmbFSFDL.ItemData(cmbFSFDL.ListIndex) End Sub '-------------------------------------------------------------------------------------- ' Reset Free Shrinkage Frame Circulator Number ---------------------------------------- Private Sub cmbFSFCIR_Click() frmController.intFSFCircul d Sub En '-------------------------------------------------------------------------------------- ' Reset Match Curing Box Datalogger Number -------------------------------------------- Private Sub cmbMCBDL_Click() frmController.intMCBDatalogger = End Sub '-------------------------------- ' Reset Match Curing Box Circulato Private Sub cmbMCBCIR_Click() ler.intMCBCirc frmControl End Sub '-------------------------------- ' Lock Cracking Frame Setup Contro Public Function LockCFControls( ' Auburn Cracking Frame Controls cmbAUCIR.Locked = True cmbAUDL.Locked = True txtAUBar24Mult.Locked = True txtAUBar35Mult.Locked = True txtAUBarCTE.Locked = True txtAUBarK.Locked = True 274 ' German Cracking Frame Controls cmbGMCIR.Locked = True cmbGMDL.Locked = True txtGMBar24Mult.Locked = True txtGMBar35Mult.Locked = True txtGMBarCTE.Locked = True txtGMBarK.Locked = True ' Free Shrinkage Frame Control cmbFSFCIR.Locked = True s e rue ----------------------------------------------------- ols ------------------------------------------------ ontrols ntrols ocked = False ------------------------------------------------------ p Controls ------------------------------------------------ rols() cmbMCBDL.Locked = False ----------------------------- cmbMCBDL.Locked = True '-------------------------------------------------------------------------------------- cmbFSFDL.Locked = True txtFSFLVDT1Mult.Locked = Tru txtFSFLVDT2Mult.Locked = T txtFSFLVDTCTE.Locked = True End Function '--------------------------------- ' Unlock Cracking Frame Setup Contr ()Public Function UnlockCFControls Auburn Cracking Frame C ' cmbAUCIR.Locked = False cmbAUDL.Locked = False txtAUBar24Mult.Locked = False txtAUBar35Mult.Locked = False txtAUBarCTE.Locked = False txtAUBarK.Locked = False ' German Cracking Frame Controls cmbGMCIR.Locked = False cmbGMDL.Locked = False txtGMBar24Mult.Locked = False txtGMBar35Mult.Locked = False txtGMBarCTE.Locked = False txtGMBarK.Locked = False ' Free Shrinkage Frame Co CIR.Locked = False cmbFSF cmbFSFDL.L txtFSFLVDT1Mult.Locked = False txtFSFLVDT2Mult.Locked = False txtFSFLVDTCTE.Locked = False End Function '-------------------------------- ' Lock Match Curing Box Setu on LockMCBContPublic Functi ' Match Curing Box Controls cmbMCBCIR.Locked = False End Function '--------------------------------------------------------- ' Unlock Match Curing Box Setup Controls ---------------------------------------------- Public Function UnlockMCBControls() ' Match Curing Box Controls cmbMCBCIR.Locked = True End Function 275 E.5 RS232 COMMUNICATION SETTINGS FORM The commu icn ation settings form allows the user to configure the RS232 serial ports. This includes activa uipment as well as setting the port number, baud rate, parity, data bits and stop bits. A screen capture of the communication settings form is presented in Figure E-3 and the form code is presented in Table E-5. ting the serial port associated with each piece of eq Figure E-3: RS232 communication settings form 276 Table E-5: RS232 communication settings form code Option Explicit ' Load Form and Initialize Default Settings ------------------------------------------- Private Sub Form_Load() InitializeDatalogger1 ' Initialize Datalogger 1 comm settings InitializeDatalogger2 ' Initialize Datalogger 2 comm settings InitializeAUCirculator ' Initialize Auburn CF Circulator comm settings InitializeGMCirculator ' Initialize German CF Circulator comm settings InitializeFSFCirculator ' Initialize FSF Circulator comm settings InitializeMCBCirculator ' Initialize MCB Circulator comm settings End Sub '-------------------------------------------------------------------------------------- ' Initialize Datalogger 1 Default Settings -------------------------------------------- Private Sub InitializeDatalogger1() ' RS-232 Port With cmbDL1CommPort .Clear .AddItem "Port 1": .ItemData(.NewIndex) = 1 .AddItem "Port 3": .ItemData(.NewIndex) = 3 .AddItem "Port 4": .ItemData(.NewIndex) = 4 .AddItem "Port 5": .ItemData(.NewIndex) = 5 .AddItem "Port 6": .ItemData(.NewIndex) = 6 .AddItem "Port 7": .ItemData(.NewIndex) = 7 .AddItem "Port 8": .ItemData(.NewIndex) = 8 .ListIndex = 1 ' Default to Port 3 End With ' Baud Rate With cmbDL1BaudRate .Clear .AddItem "1200": .ItemData(.NewIndex) = 1200 .AddItem "2400": .ItemData(.NewIndex) = 2400 .AddItem "9600": .ItemData(.NewIndex) = 9600 .AddItem "14400": .ItemData(.NewIndex) = 14400 .AddItem "19200": .ItemData(.NewIndex) = 19200 .AddItem "57600": .ItemData(.NewIndex) = 57600 .ListIndex = 4 ' Default to 19200 BAUD End With ' Parity With cmbDL1Parity .Clear .AddItem "Even": .ItemData(.NewIndex) = Asc("E") .AddItem "Mark": .ItemData(.NewIndex) = Asc("M") .AddItem "None": .ItemData(.NewIndex) = Asc("N") .AddItem "Odd": .ItemData(.NewIndex) = Asc("O") .AddItem "Space": .ItemData(.NewIndex) = Asc("S") .ListIndex = 2 ' Default to No Parity End With ' Data Bits With cmbDL1DataBits .Clear .AddItem "4": .ItemData(.NewIndex) = 4 .AddItem "5": .ItemData(.NewIndex) = 5 .AddItem "6": .ItemData(.NewIndex) = 6 .AddItem "7": .ItemData(.NewIndex) = 7 .AddItem "8": .ItemData(.NewIndex) = 8 .ListIndex = 4 ' Default to 8 data bits End With ' Stop Bits With cmbDL1StopBits 277 .Clear .AddItem "1": .ItemData(.NewIndex) = 2 .AddItem "1.5": .ItemData(.NewIndex) = 3 .AddItem "2": .ItemData(.NewIndex) = 4 .ListIndex = 0 ' Default to 1 stop bit End With End Sub '-------------------------------------------------------------------------------------- ' Initialize Datalogger 2 Default Settings -------------------------------------------- Private Sub InitializeDatalogger2() ' RS-232 Port With cmbDL2CommPort .Clear .AddItem "Port 1": .ItemData(.NewIndex) = 1 .AddItem "Port 3": .ItemData(.NewIndex) = 3 .AddItem "Port 4": .ItemData(.NewIndex) = 4 .AddItem "Port 5": .ItemData(.NewIndex) = 5 .AddItem "Port 6": .ItemData(.NewIndex) = 6 .AddItem "Port 7": .ItemData(.NewIndex) = 7 .AddItem "Port 8": .ItemData(.NewIndex) = 8 .ListIndex = 2 ' Default to Port 4 End With ' Baud Rate With cmbDL2BaudRate .Clear .AddItem "1200": .ItemData(.NewIndex) = 1200 .AddItem "2400": .ItemData(.NewIndex) = 2400 .AddItem "9600": .ItemData(.NewIndex) = 9600 .AddItem "14400": .ItemData(.NewIndex) = 14400 .AddItem "19200": .ItemData(.NewIndex) = 19200 .AddItem "57600": .ItemData(.NewIndex) = 57600 .ListIndex = 4 ' Default to 19200 BAUD End With ' Parity With cmbDL2Parity .Clear .AddItem "Even": .ItemData(.NewIndex) = Asc("E") .AddItem "Mark": .ItemData(.NewIndex) = Asc("M") .AddItem "None": .ItemData(.NewIndex) = Asc("N") .AddItem "Odd": .ItemData(.NewIndex) = Asc("O") .AddItem "Space": .ItemData(.NewIndex) = Asc("S") .ListIndex = 2 ' Default to No Parity End With ' Data Bits With cmbDL2DataBits .Clear .AddItem "4": .ItemData(.NewIndex) = 4 .AddItem "5": .ItemData(.NewIndex) = 5 .AddItem "6": .ItemData(.NewIndex) = 6 .AddItem "7": .ItemData(.NewIndex) = 7 .AddItem "8": .ItemData(.NewIndex) = 8 .ListIndex = 4 ' Default to 8 data bits End With ' Stop Bits With cmbDL2StopBits .Clear .AddItem "1": .ItemData(.NewIndex) = 2 .AddItem "1.5": .ItemData(.NewIndex) = 3 .AddItem "2": .ItemData(.NewIndex) = 4 .ListIndex = 0 ' Default to 1 stop bit End With End Sub '-------------------------------------------------------------------------------------- 278 ' Initialize Auburn Cracking Frame Circulator Default Settings ------------------------ Private Sub InitializeAUCirculator() ' RS-232 Port With cmbAUCIRCommPort .Clear .AddItem "Port 1": .ItemData(.NewIndex) = 1 .AddItem "Port 3": .ItemData(.NewIndex) = 3 .AddItem "Port 4": .ItemData(.NewIndex) = 4 .AddItem "Port 5": .ItemData(.NewIndex) = 5 .AddItem "Port 6": .ItemData(.NewIndex) = 6 .AddItem "Port 7": .ItemData(.NewIndex) = 7 .AddItem "Port 8": .ItemData(.NewIndex) = 8 .ListIndex = 3 ' Default to Port 5 End With ' Baud Rate With cmbAUCIRBaudRate .Clear .AddItem "1200": .ItemData(.NewIndex) = 1200 .AddItem "2400": .ItemData(.NewIndex) = 2400 .AddItem "9600": .ItemData(.NewIndex) = 9600 .AddItem "14400": .ItemData(.NewIndex) = 14400 .AddItem "19200": .ItemData(.NewIndex) = 19200 .AddItem "57600": .ItemData(.NewIndex) = 57600 .ListIndex = 5 ' Default to 57600 BAUD End With ' Parity With cmbAUCIRParity .Clear .AddItem "Even": .ItemData(.NewIndex) = Asc("E") .AddItem "Mark": .ItemData(.NewIndex) = Asc("M") .AddItem "None": .ItemData(.NewIndex) = Asc("N") .AddItem "Odd": .ItemData(.NewIndex) = Asc("O") .AddItem "Space": .ItemData(.NewIndex) = Asc("S") .ListIndex = 2 ' Default to No Parity End With ' Data Bits With cmbAUCIRDataBits .Clear .AddItem "4": .ItemData(.NewIndex) = 4 .AddItem "5": .ItemData(.NewIndex) = 5 .AddItem "6": .ItemData(.NewIndex) = 6 .AddItem "7": .ItemData(.NewIndex) = 7 .AddItem "8": .ItemData(.NewIndex) = 8 .ListIndex = 4 ' Default to 8 data bits End With ' Stop Bits With cmbAUCIRStopBits .Clear .AddItem "1": .ItemData(.NewIndex) = 2 .AddItem "1.5": .ItemData(.NewIndex) = 3 .AddItem "2": .ItemData(.NewIndex) = 4 .ListIndex = 0 ' Default to 1 stop bit End With End Sub '-------------------------------------------------------------------------------------- ' Initialize German Cracking Frame Circulator Default Settings ------------------------ Private Sub InitializeGMCirculator() ' RS-232 Port With cmbGMCIRCommPort .Clear .AddItem "Port 1": .ItemData(.NewIndex) = 1 .AddItem "Port 3": .ItemData(.NewIndex) = 3 279 .AddItem "Port 4": .ItemData(.NewIndex) = 4 .AddItem "Port 5": .ItemData(.NewIndex) = 5 .AddItem "Port 6": .ItemData(.NewIndex) = 6 .AddItem "Port 7": .ItemData(.NewIndex) = 7 .AddItem "Port 8": .ItemData(.NewIndex) = 8 .ListIndex = 4 ' Default to Port 5 End With ' Baud Rate With cmbGMCIRBaudRate .Clear .AddItem "1200": .ItemData(.NewIndex) = 1200 .AddItem "2400": .ItemData(.NewIndex) = 2400 .AddItem "9600": .ItemData(.NewIndex) = 9600 .AddItem "14400": .ItemData(.NewIndex) = 14400 .AddItem "19200": .ItemData(.NewIndex) = 19200 .AddItem "57600": .ItemData(.NewIndex) = 57600 .ListIndex = 5 ' Default to 57600 BAUD End With ' Parity With cmbGMCIRParity .Clear .AddItem "Even": .ItemData(.NewIndex) = Asc("E") .AddItem "Mark": .ItemData(.NewIndex) = Asc("M") .AddItem "None": .ItemData(.NewIndex) = Asc("N") .AddItem "Odd": .ItemData(.NewIndex) = Asc("O") .AddItem "Space": .ItemData(.NewIndex) = Asc("S") .ListIndex = 2 ' Default to No Parity End With ' Data Bits With cmbGMCIRDataBits .Clear .AddItem "4": .ItemData(.NewIndex) = 4 .AddItem "5": .ItemData(.NewIndex) = 5 .AddItem "6": .ItemData(.NewIndex) = 6 .AddItem "7": .ItemData(.NewIndex) = 7 .AddItem "8": .ItemData(.NewIndex) = 8 .ListIndex = 4 ' Default to 8 data bits End With ' Stop Bits With cmbGMCIRStopBits .Clear .AddItem "1": .ItemData(.NewIndex) = 2 .AddItem "1.5": .ItemData(.NewIndex) = 3 .AddItem "2": .ItemData(.NewIndex) = 4 .ListIndex = 0 ' Default to 1 stop bit End With End Sub '-------------------------------------------------------------------------------------- ' Initialize Free Shrinkage Frame Circulator Default Settings ------------------------- Private Sub InitializeFSFCirculator() ' RS-232 Port With cmbFSFCIRCommPort .Clear .AddItem "Port 1": .ItemData(.NewIndex) = 1 .AddItem "Port 3": .ItemData(.NewIndex) = 3 .AddItem "Port 4": .ItemData(.NewIndex) = 4 .AddItem "Port 5": .ItemData(.NewIndex) = 5 .AddItem "Port 6": .ItemData(.NewIndex) = 6 .AddItem "Port 7": .ItemData(.NewIndex) = 7 .AddItem "Port 8": .ItemData(.NewIndex) = 8 .ListIndex = 5 ' Default to Port 7 End With 280 ' Baud Rate With cmbFSFCIRBaudRate .Clear .AddItem "1200": .ItemData(.NewIndex) = 1200 .AddItem "2400": .ItemData(.NewIndex) = 2400 .AddItem "9600": .ItemData(.NewIndex) = 9600 .AddItem "14400": .ItemData(.NewIndex) = 14400 .AddItem "19200": .ItemData(.NewIndex) = 19200 .AddItem "57600": .ItemData(.NewIndex) = 57600 .ListIndex = 5 ' Default to 57600 BAUD End With ' Parity With cmbFSFCIRParity .Clear .AddItem "Even": .ItemData(.NewIndex) = Asc("E") .AddItem "Mark": .ItemData(.NewIndex) = Asc("M") .AddItem "None": .ItemData(.NewIndex) = Asc("N") .AddItem "Odd": .ItemData(.NewIndex) = Asc("O") .AddItem "Space": .ItemData(.NewIndex) = Asc("S") .ListIndex = 2 ' Default to No Parity End With ' Data Bits With cmbFSFCIRDataBits .Clear .AddItem "4": .ItemData(.NewIndex) = 4 .AddItem "5": .ItemData(.NewIndex) = 5 .AddItem "6": .ItemData(.NewIndex) = 6 .AddItem "7": .ItemData(.NewIndex) = 7 .AddItem "8": .ItemData(.NewIndex) = 8 .ListIndex = 4 ' Default to 8 data bits End With ' Stop Bits With cmbFSFCIRStopBits .Clear .AddItem "1": .ItemData(.NewIndex) = 2 .AddItem "1.5": .ItemData(.NewIndex) = 3 .AddItem "2": .ItemData(.NewIndex) = 4 .ListIndex = 0 ' Default to 1 stop bit End With End Sub '-------------------------------------------------------------------------------------- ' Initialize Match Curing Box Circulator Default Settings ----------------------------- Private Sub InitializeMCBCirculator() ' RS-232 Port With cmbMCBCIRCommPort .Clear .AddItem "Port 1": .ItemData(.NewIndex) = 1 .AddItem "Port 3": .ItemData(.NewIndex) = 3 .AddItem "Port 4": .ItemData(.NewIndex) = 4 .AddItem "Port 5": .ItemData(.NewIndex) = 5 .AddItem "Port 6": .ItemData(.NewIndex) = 6 .AddItem "Port 7": .ItemData(.NewIndex) = 7 .AddItem "Port 8": .ItemData(.NewIndex) = 8 .ListIndex = 6 ' Default to Port 8 End With ' Baud Rate With cmbMCBCIRBaudRate .Clear .AddItem "1200": .ItemData(.NewIndex) = 1200 .AddItem "2400": .ItemData(.NewIndex) = 2400 .AddItem "9600": .ItemData(.NewIndex) = 9600 .AddItem "14400": .ItemData(.NewIndex) = 14400 .AddItem "19200": .ItemData(.NewIndex) = 19200 281 .AddItem "57600": .ItemData(.NewIndex) = 57600 .ListIndex = 5 ' Default to 57600 BAUD End With ' Parity With cmbMCBCIRParity .Clear .AddItem "Even": .ItemData(.NewIndex) = Asc("E") .AddItem "Mark": .ItemData(.NewIndex) = Asc("M") .AddItem "None": .ItemData(.NewIndex) = Asc("N") .AddItem "Odd": .ItemData(.NewIndex) = Asc("O") .AddItem "Space": .ItemData(.NewIndex) = Asc("S") .ListIndex = 2 ' Default to No Parity End With ' Data Bits With cmbMCBCIRDataBits .Clear .AddItem "4": .ItemData(.NewIndex) = 4 .AddItem "5": .ItemData(.NewIndex) = 5 .AddItem "6": .ItemData(.NewIndex) = 6 .AddItem "7": .ItemData(.NewIndex) = 7 .AddItem "8": .ItemData(.NewIndex) = 8 .ListIndex = 4 ' Default to 8 data bits End With ' Stop Bits With cmbMCBCIRStopBits .Clear .AddItem "1": .ItemData(.NewIndex) = 2 .AddItem "1.5": .ItemData(.NewIndex) = 3 .AddItem "2": .ItemData(.NewIndex) = 4 .ListIndex = 0 ' Default to 1 stop bit End With End Sub '-------------------------------------------------------------------------------------- ' Reset RS-232 Comm Port Settings ----------------------------------------------------- Public Sub ResetCommSettings() ' Build Comm Setting strings based on selections Dim strDL1Tmp As String, lngDL1Tmp As Long Dim strDL2Tmp As String, lngDL2Tmp As Long Dim strAUCIRTmp As String, lngAUCIRTmp As Long Dim strGMCIRTmp As String, lngGMCIRTmp As Long Dim strFSFCIRTmp As String, lngFSFCIRTmp As Long Dim strMCBCIRTmp As String, lngMCBCIRTmp As Long ' Clear Comm Setting strings strDL1Tmp = "" strDL2Tmp = "" strAUCIRTmp = "" strGMCIRTmp = "" strFSFCIRTmp = "" strMCBCIRTmp = "" ' Reset Datalogger #1 Comm Settings --------------------------------------- ' If the serial port is open then close it If frmController.comDL1.PortOpen = True Then frmController.comDL1.PortOpen = False ' Check whether or not Datalogger #1 port is to be enabled If chkDL1Enabled.Value = vbChecked Then frmController.DL1CommEnabled = True Else frmController.DL1CommEnabled = False End If ' Baud Rate strDL1Tmp = strDL1Tmp & CStr(cmbDL1BaudRate.ItemData(cmbDL1BaudRate.ListIndex)) 282 ' Parity strDL1Tmp = strDL1Tmp & "," & Chr$(cmbDL1Parity.ItemData(cmbDL1Parity.ListIndex)) ' Data Bits strDL1Tmp = strDL1Tmp & "," & CStr(cmbDL1DataBits.ItemData(cmbDL1DataBits.ListIndex)) ' Stop Bits strDL1Tmp = strDL1Tmp & "," & CStr(CSng(cmbDL1StopBits.ItemData(cmbDL1StopBits.ListIndex)) * 0.5) ' Reset Comm port parameter frmController.DL1CommPort = cmbDL1CommPort.ItemData(cmbDL1CommPort.ListIndex) ' Reset Test Setup Form Settings parameter frmController.DL1CommSettings = strDL1Tmp ' Reset Datalogger #2 Comm Settings --------------------------------------- ' If the serial port is open then close it If frmController.comDL2.PortOpen = True Then frmController.comDL2.PortOpen = False ' Check whether or not Datalogger #2 port is to be enabled If chkDL2Enabled.Value = vbChecked Then frmController.DL2CommEnabled = True Else frmController.DL2CommEnabled = False End If ' Baud Rate strDL2Tmp = strDL2Tmp & CStr(cmbDL2BaudRate.ItemData(cmbDL2BaudRate.ListIndex)) ' Parity strDL2Tmp = strDL2Tmp & "," & Chr$(cmbDL2Parity.ItemData(cmbDL2Parity.ListIndex)) ' Data Bits strDL2Tmp = strDL2Tmp & "," & CStr(cmbDL2DataBits.ItemData(cmbDL2DataBits.ListIndex)) ' Stop Bits strDL2Tmp = strDL2Tmp & "," & CStr(CSng(cmbDL2StopBits.ItemData(cmbDL2StopBits.ListIndex)) * 0.5) ' Reset Comm port parameter frmController.DL2CommPort = cmbDL2CommPort.ItemData(cmbDL2CommPort.ListIndex) ' Reset Test Setup Form Settings parameter frmController.DL2CommSettings = strDL2Tmp ' Reset Auburn Cracking Frame Circulator Comm Settings -------------------- ' If the serial port is open then close it If frmController.comAUCIR.PortOpen = True Then frmController.comAUCIR.PortOpen = False ' Check whether or not Circulator port is to be enabled If chkAUCIREnabled.Value = vbChecked Then frmController.AUCIRCommEnabled = True Else frmController.AUCIRCommEnabled = False End If ' Baud Rate strAUCIRTmp = strAUCIRTmp & CStr(cmbAUCIRBaudRate.ItemData(cmbAUCIRBaudRate.ListIndex)) ' Parity strAUCIRTmp = strAUCIRTmp & "," & Chr$(cmbAUCIRParity.ItemData(cmbAUCIRParity.ListIndex)) ' Data Bits 283 strAUCIRTmp = strAUCIRTmp & "," & CStr(cmbAUCIRDataBits.ItemData(cmbAUCIRDataBits.ListIndex)) ' Stop Bits strAUCIRTmp = strAUCIRTmp & "," & CStr(CSng(cmbAUCIRStopBits.ItemData(cmbAUCIRStopBits.ListIndex)) * 0.5) ' Reset Comm port parameter frmController.AUCIRCommPort = cmbAUCIRCommPort.ItemData(cmbAUCIRCommPort.ListIndex) ' Reset Test Setup Form Settings parameter frmController.AUCIRCommSettings = strAUCIRTmp ' Reset German Cracking Frame Circulator Comm Settings -------------------- ' If the serial port is open then close it If frmController.comGMCIR.PortOpen = True Then frmController.comGMCIR.PortOpen = False ' Check whether or not Circulator port is to be enabled If chkGMCIREnabled.Value = vbChecked Then frmController.GMCIRCommEnabled = True Else frmController.GMCIRCommEnabled = False End If ' Baud Rate strGMCIRTmp = strGMCIRTmp & CStr(cmbGMCIRBaudRate.ItemData(cmbGMCIRBaudRate.ListIndex)) ' Parity strGMCIRTmp = strGMCIRTmp & "," & Chr$(cmbGMCIRParity.ItemData(cmbGMCIRParity.ListIndex)) ' Data Bits strGMCIRTmp = strGMCIRTmp & "," & CStr(cmbGMCIRDataBits.ItemData(cmbGMCIRDataBits.ListIndex)) ' Stop Bits strGMCIRTmp = strGMCIRTmp & "," & CStr(CSng(cmbGMCIRStopBits.ItemData(cmbGMCIRStopBits.ListIndex)) * 0.5) ' Reset Comm Port parameter frmController.GMCIRCommPort = cmbGMCIRCommPort.ItemData(cmbGMCIRCommPort.ListIndex) ' Reset Test Setup Form Settings parameter frmController.GMCIRCommSettings = strGMCIRTmp ' Reset Free Shrinkage Frame Circulator Comm Settings --------------------- ' If the serial port is open then close it If frmController.comFSFCIR.PortOpen = True Then frmController.comFSFCIR.PortOpen = False ' Check whether or not Circulator port is to be enabled If chkFSFCIREnabled.Value = vbChecked Then frmController.FSFCIRCommEnabled = True Else frmController.FSFCIRCommEnabled = False End If ' Baud Rate strFSFCIRTmp = strFSFCIRTmp & CStr(cmbFSFCIRBaudRate.ItemData(cmbFSFCIRBaudRate.ListIndex)) ' Parity strFSFCIRTmp = strFSFCIRTmp & "," & Chr$(cmbFSFCIRParity.ItemData(cmbFSFCIRParity.ListIndex)) ' Data Bits 284 strFSFCIRTmp = strFSFCIRTmp & "," & CStr(cmbFSFCIRDataBits.ItemData(cmbFSFCIRDataBits.ListIndex)) ' Stop Bits strFSFCIRTmp = strFSFCIRTmp & "," & CStr(CSng(cmbFSFCIRStopBits.ItemData(cmbFSFCIRStopBits.ListIndex)) * 0.5) ' Reset Comm port parameter frmController.FSFCIRCommPort = cmbFSFCIRCommPort.ItemData(cmbFSFCIRCommPort.ListIndex) ' Reset Test Setup Form Settings parameter frmController.FSFCIRCommSettings = strFSFCIRTmp ' Reset Match Cuirng Box Circulator Comm Settings ------------------------- ' If the serial port is open then close it If frmController.comMCBCIR.PortOpen = True Then frmController.comMCBCIR.PortOpen = False ' Check whether or not Circulator port is to be enabled If chkMCBCIREnabled.Value = vbChecked Then frmController.MCBCIRCommEnabled = True Else frmController.MCBCIRCommEnabled = False End If ' Baud Rate strMCBCIRTmp = strMCBCIRTmp & CStr(cmbMCBCIRBaudRate.ItemData(cmbMCBCIRBaudRate.ListIndex)) ' Parity strMCBCIRTmp = strMCBCIRTmp & "," & Chr$(cmbMCBCIRParity.ItemData(cmbMCBCIRParity.ListIndex)) ' Data Bits strMCBCIRTmp = strMCBCIRTmp & "," & CStr(cmbMCBCIRDataBits.ItemData(cmbMCBCIRDataBits.ListIndex)) ' Stop Bits strMCBCIRTmp = strMCBCIRTmp & "," & CStr(CSng(cmbMCBCIRStopBits.ItemData(cmbMCBCIRStopBits.ListIndex)) * 0.5) ' Reset Comm Port parameter frmController.MCBCIRCommPort = cmbMCBCIRCommPort.ItemData(cmbMCBCIRCommPort.ListIndex) ' Reset Test Setup Form Settings parameter frmController.MCBCIRCommSettings = strMCBCIRTmp ' Reset RS232 Settings frmController.ResetRS232Settings End Sub '-------------------------------------------------------------------------------------- ' Cancel Setup ------------------------------------------------------------------------ Private Sub btnCancel_Click() frmCommSettings.Hide ' Hide Comm settings form End Sub '-------------------------------------------------------------------------------------- ' Reset Comm Settings ----------------------------------------------------------------- Private Sub btnOK_Click() frmCommSettings.Hide ' Hide Comm Settings form ResetCommSettings ' Reset Comm Settings End Sub '-------------------------------------------------------------------------------------- 285 E.6 TRANSMISSION FORMAT SETTINGS FORM The transmission format settings form allows the user to specify the token separator and line terminator used by the data-logger as well as the command terminator and successful execution response used by the circulators. A screen capture of the transmission format settings form is presented in Figure E-4 and the form code is presented in Table E-6. Figure E-4: Transmission format settings form Table E-6: Transmission format settings form code Option Explicit ' Transmission start/end constants ---------------------------------------------------- Const mSpace As Integer = 1 ' Space Const mComma As Integer = 2 ' Comma Const mSemiColon As Integer = 3 ' SemiColon Const mExclamation As Integer = 4 ' Exclamation Mark 286 Const mQuestion As Integer = 5 ' Question Mark Const mTab As Integer = 6 ' Tab Const mCRLF As Integer = 7 ' Carriage Return, Linefeed Const mCR As Integer = 8 ' Carriage Return Const mLF As Integer = 9 ' Linefeed '-------------------------------------------------------------------------------------- ' Load Transmission Format Settings Form ---------------------------------------------- Private Sub Form_Load() InitializeDatalogger InitializeCirculator End Sub '-------------------------------------------------------------------------------------- ' Initialize Datalogger default settings ---------------------------------------------- Private Sub InitializeDatalogger() ' Token Separator With cmbDLTokenSep .Clear .AddItem "": .ItemData(.NewIndex) = mComma .AddItem "": .ItemData(.NewIndex) = mSemiColon .AddItem "": .ItemData(.NewIndex) = mTab .AddItem "": .ItemData(.NewIndex) = mSpace .ListIndex = 0 ' Default to End With ' Line Terminator With cmbDLLineTerm .Clear .AddItem "": .ItemData(.NewIndex) = mCR .AddItem "": .ItemData(.NewIndex) = mLF .AddItem "": .ItemData(.NewIndex) = mCRLF .ListIndex = 2 ' Default to End With End Sub '-------------------------------------------------------------------------------------- ' Initialize Circulator default settings ---------------------------------------------- Private Sub InitializeCirculator() ' Command Terminator With cmbCIRCommandTerm .Clear .AddItem "": .ItemData(.NewIndex) = mCR .AddItem "": .ItemData(.NewIndex) = mLF .AddItem "": .ItemData(.NewIndex) = mCRLF .ListIndex = 0 ' Default to End With ' Successful Execution Response With cmbCIRSuccess .Clear .AddItem "": .ItemData(.NewIndex) = mExclamation .AddItem "": .ItemData(.NewIndex) = mQuestion .ListIndex = 0 ' Default to End With End Sub '-------------------------------------------------------------------------------------- ' Reset Transmission Format ----------------------------------------------------------- Private Sub ResetTransmissionFormat() ' Datalogger Token Separator 287 With cmbDLTokenSep Select Case .ItemData(.ListIndex) ' Comma Case mComma frmController.DLTokenSep = "," ' SemiColon Case mSemiColon frmController.DLTokenSep = ";" ' Tab Case mTab frmController.DLTokenSep = vbTab ' Space Case mSpace frmController.DLTokenSep = " " End Select End With ' Datalogger Line Terminator With cmbDLLineTerm Select Case .ItemData(.ListIndex) ' Carriage Return Line Feed Case mCRLF frmController.DLLineTerm = vbCrLf ' Carriage Return Case mCR frmController.DLLineTerm = vbCr ' Line Feed Case mLF frmController.DLLineTerm = vbLf End Select End With ' Circulator Command Terminator With cmbCIRCommandTerm Select Case .ItemData(.ListIndex) ' Carriage Return Line Feed Case mCRLF frmController.CIRCommandTerm = vbCrLf ' Carriage Return Case mCR frmController.CIRCommandTerm = vbCr ' Line Feed Case mLF frmController.CIRCommandTerm = vbLf End Select End With ' Circulator Successful Execution Response With cmbCIRSuccess 288 Select Case .ItemData(.ListIndex) ' Exclamation Point Case mExclamation frmController.CIRSuccess = mExclamation ' Carriage Return Case mQuestion frmController.CIRSuccess = mQuestion End Select End With End Sub '-------------------------------------------------------------------------------------- ' Reset Transmission Format ----------------------------------------------------------- Private Sub btnOK_Click() ResetTransmissionFormat Hide End Sub '-------------------------------------------------------------------------------------- ' Cancel setup ------------------------------------------------------------------------ Private Sub btnCancel_Click() Hide End Sub '-------------------------------------------------------------------------------------- E.7 AUBURN CRACKING FRAME FORM The Auburn cracking frame form is designed to display the data obtained from the AU RCF. Current data including concrete age, temperature measurements, and strain gauge measurements are displayed in text boxes. The stress development and temperature development of the test specimen is also displayed graphically. A screen capture of the Auburn cracking frame form is presented in Figure E-5 and the form code is presented in Table E-7. 289 Figure E-5: Auburn cracking frame form rn cracking frame form code ----------- Temp (?C) Temp (?C) ) As Single ' Crosshead 4-5 Temp (?C) HAvgTemp(8064) As Single ' Average Crosshead Temp (?C) ar24Temp(8064) As Single ' Bar 2-4 Temp (?C) ' Bar 3-5 Temp (?C) ' Average INVAR Bar Temp (?C) ' Room Temp (?C) in Gage Output (mV/V) in Gage Output (mV/V) Single ' Bar 2-4 Force (lbs) ngle ' Bar 3-5 Force (lbs) ' Equivalent Concrete Stress (psi) tress t Data emp Chart Data ----------- Table E-7: Aubu Option Explicit ' Auburn Cracking Frame Test Data ------------------------------------------ Private intAUCounter As Integer ' Counter As Single ' Concrete Age (hrs) Private sngAUConcAge(8064) Private sngAUCFTemp(8064) As Single ' Cracking Frame 4) As Single ' Crosshead 2-3 Private sngAUCH23Temp(806 ngAUCH45Temp(8064Private s Private sngAUC te sngAUBPriva Private sngAUBar35Temp(8064) As Single mp(8064) As Single Private sngAUBarAvgTe Private sngAURoomTemp(8064) As Single Private sngAUBar24Output(8064) As Single ' Bar 2-4 Stra s Single ' Bar 3-5 StraPrivate sngAUBar35Output(8064) A Private sngAUBar24Force(8064) As Private sngAUBar35Force(8064) As Si Private sngAUConcStress(8064) As Single Private vrnAUCFStressData(0 To 8065, 0 To 1) ' Cracking Frame S Frame TPrivate vrnAUCFTempData(0 To 8065, 0 To 3) ' Cracking Private vrnAUBarTempData(0 To 8065, 0 To 3) ' Bar Temp Chart Data ---'------------------------------------------------------------------------ 290 ' Initialize Counter and Graphs ------------------------------------------------------- 0) = "Concrete Stress (psi)" (?C)" Temp (?C)" emp (?C)" si)" sIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted Axis(VtChAxisIdY).AxisGrid.MinorPen.Style = VtPenStyleNull Legend = True e Temp Profile Chart C)" Dotted orPen.Style = VtPenStyleNull Y Temperature (?C)" Private Sub Form_Load() ' Set Initial Counter to Zero intAUCounter = 0 Lables ' Specify Data Series essData(0, vrnAUCFStr vrnAUCFTempData(0, 0) = "Specimen Temp vrnAUCFTempData(0, 2) = "Avg Crosshead vrnAUBarTempData(0, 0) = "Avg Bar T vrnAUBarTempData(0, 2) = "Room Temp (?C)" s Development Chart ' Set Up Cracking Frame Stres With chtAUCFStress .chartType = VtChChartType2dXY .TitleText = "AU Cracking Frame Stress Development" .Title.VtFont.Size = 12 .Title.VtFont.Style = 1 .Plot.Axis(VtChAxisIdX).AxisTitle = "Concrete Age (hrs)" .Plot.Axis(VtChAxisIdX).AxisTitle.VtFont.Style = 1 .Plot.UniformAxis = False .Plot.WidthToHeightRatio = 1.4 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted .Plot.Axis(VtChAxisIdX).AxisGrid.MinorPen.Style = VtPenStyleNull .Plot.Axis(VtChAxisIdY).AxisTitle = "Concrete Stress (p .Plot.Axis(VtChAxisIdY).AxisTitle.VtFont.Style = 1 .Plot.Axis(VtChAxi .Plot. .Show .Legend.Location.LocationType = VtChLocationTypeBottom .Visible = False End With ' Set Up Cracking Fram With chtAUCFTemp .chartType = VtChChartType2dXY .TitleText = "AU Cracking Frame Temperature Profile" .Title.VtFont.Size = 12 .Title.VtFont.Style = 1 .Plot.UniformAxis = False .Plot.WidthToHeightRatio = 1.4 .Plot.Axis(VtChAxisIdX).AxisTitle = "Concrete Age (hrs)" .Plot.Axis(VtChAxisIdX).AxisTitle.VtFont.Style = 1 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted orPen.Style = VtPenStyleNull .Plot.Axis(VtChAxisIdX).AxisGrid.Min .Plot.Axis(VtChAxisIdY).AxisTitle = "Concrete Temperature (? .Plot.Axis(VtChAxisIdY).AxisTitle.VtFont.Style = 1 id.MajorPen.Style = VtPenStyle .Plot.Axis(VtChAxisIdY).AxisGr .Plot.Axis(VtChAxisIdY).AxisGrid.Min .ShowLegend = True .Legend.Location.LocationType = VtChLocationTypeBottom .Visible = False d With En ' Set Up INVAR Bar Temp Profile Chart With chtAUBarTemp .chartType = VtChChartType2dX .TitleText = "AU Cracking Frame INVAR Bar Temperature Profile" .Title.VtFont.Size = 12 .Title.VtFont.Style = 1 .Plot.UniformAxis = False .Plot.WidthToHeightRatio = 1.4 .Plot.Axis(VtChAxisIdX).AxisTitle = "Concrete Age (hrs)" .Plot.Axis(VtChAxisIdX).AxisTitle.VtFont.Style = 1 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted e = VtPenStyleNull .Plot.Axis(VtChAxisIdX).AxisGrid.MinorPen.Styl .Plot.Axis(VtChAxisIdY).AxisTitle = "INVAR Bar 291 .Plot.Axis(VtChAxisIdY).AxisTitle.VtFont.Style = 1 .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted -------------- me Data --------------------------------------------------- Data() unter) = frmController.sngAUConcAge ntroller.sngAUCFTemp ' Cracking Frame Temp mController.sngAUCH23Temp ' Crosshead 2-3 Temp tAUCounter) = frmController.sngAUCH45Temp ' Crosshead 4-5 Temp ) / 2 (lbs) = frmController.sngAUBar35Force ' Bar 3-5 Force (lbs) ta - Cracking Frame Stress Development ounter + 1, 1) = sngAUCFTemp(intAUCounter) ter + 1, 2) = sngAUConcAge(intAUCounter) er + 1, 3) = sngAUCHAvgTemp(intAUCounter) Temp Profile 1, 0) = sngAUConcAge(intAUCounter) (intAUCounter + 1, 1) = sngAUBarAvgTemp(intAUCounter) Counter) ounter) ------------------------------------------------------------------ .Plot.Axis(VtChAxisIdY).AxisGrid.MinorPen.Style = VtPenStyleNull .ShowLegend = True ocation.LocationType = VtChLocationTypeBottom .Legend.L .Visible = False End With End Sub '------------------------------------------------------------------------ ' Update Auburn Cracking Fra Public Sub UpdateAU ' Update Concrete Age (intAUCo sngAUConcAge ' Update Temperature Data sngAUCFTemp(intAUCounter) = frmCo AUCounter) = fr sngAUCH23Temp(int CH45Temp(in sngAU sngAUBar24Temp(intAUCounter) = frmController.sngAUBar24Temp ' Bar 2-4 Temp sngAUBar35Temp(intAUCounter) = frmController.sngAUBar35Temp ' Bar 3-5 Temp r) = frmController.sngAURoomTemp ' Room Temp sngAURoomTemp(intAUCounte ' Compute Average Crosshead Temperature sngAUCHAvgTemp(intAUCounter) = (sngAUCH23Temp(intAUCounter) + _ sngAUCH45Temp(intAUCounter) ' Compute Average INVAR Bar Temperature sngAUBarAvgTemp(intAUCounter) = (sngAUBar24Temp(intAUCounter) + _ sngAUBar35Temp(intAUCounter)) / 2 ' Update Strain Gage Outputs sngAUBar24Output(intAUCounter) = frmController.sngAUBar24Output ' Bar 2-4 Output sngAUBar35Output(intAUCounter) = frmController.sngAUBar35Output ' Bar 3-5 Output ' Update Cracking Frame Stresses gAUBar24Force(intAUCounter) = frmController.sngAUBar24Force ' Bar 2-4 Force sn sngAUBar35Force(intAUCounter) sngAUConcStress(intAUCounter) = frmController.sngAUConcStress ' Stress (psi) ' Update Chart Da vrnAUCFStressData(intAUCounter + 1, 0) = sngAUConcAge(intAUCounter) vrnAUCFStressData(intAUCounter + 1, 1) = sngAUConcStress(intAUCounter) ' Update Chart Data - Cracking Frame Temp Profile ounter + 1, 0) = sngAUConcAge(intAUCounter) vrnAUCFTempData(intAUC vrnAUCFTempData(intAUC vrnAUCFTempData(intAUCoun vrnAUCFTempData(intAUCount ' Update Chart Data - INVAR Bar intAUCounter + vrnAUBarTempData( arTempData vrnAUB vrnAUBarTempData(intAUCounter + 1, 2) = sngAUConcAge(intAU vrnAUBarTempData(intAUCounter + 1, 3) = sngAURoomTemp(intAUC ' Display Updated Data DisplayAUData ' Plot Updated Data PlotAUData ' Increment Counter intAUCounter = intAUCounter + 1 End Sub ---------------'----- 292 ' Display Auburn Cracking Frame Data -------------------------------------------------- ' Concrete Age (hrs) Cracking Frame Temp ' Avg Crosshead Temp Avg INVAR Bar Temp oom Temp Frame Stresses ntAUCounter), 0) ' Bar 2-4 Force (lbs) tAUCounter), 0) ' Bar 3-5 Force (lbs) 1) ' Stress (psi) Bar 2-4 Output Bar 3-5 Output ---------------------- ----------------- 4 Axis(VtChAxisIdY).ValueScale.MajorDivision = 8 rDivision = 5 = 4 Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 .MinorDivision = 5 = 4 Private Sub DisplayAUData() ' Display Concrete Age txtAUConcAge.Text = Round(sngAUConcAge(intAUCounter), 2) ' Display Temperature Data ' txtAUCFTemp.Text = Round(sngAUCFTemp(intAUCounter), 1) txtAUCHAvgTemp.Text = Round(sngAUCHAvgTemp(intAUCounter), 1) txtAUBarAvgTemp.Text = Round(sngAUBarAvgTemp(intAUCounter), 1) ' txtAURoomTemp.Text = Round(sngAURoomTemp(intAUCounter), 1) ' R ' Display Cracking txtAUBar24Force.Text = Round(sngAUBar24Force(i txtAUBar35Force.Text = Round(sngAUBar35Force(in txtAUConcStress.Text = Round(sngAUConcStress(intAUCounter), ' Display Strain Gage Output txtAUBar24Output.Text = Round(sngAUBar24Output(intAUCounter), 4) ' txtAUBar35Output.Text = Round(sngAUBar35Output(intAUCounter), 4) ' End Sub '---------------------------------------------------------------- ' Plot Auburn Cracking Frame Data ------------------------------------ Private Sub PlotAUData() ' Determine Time Step Select Case intAUCounter ' 1 Day - Less Than 23 hrs Case Is = 0 ' Set Up Cracking Frame Stress Development Chart With chtAUCFStress .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 24 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 100 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 .Plot. .Plot.Axis(VtChAxisIdY).ValueScale.Mino End With ' Set Up Cracking Frame Temp Profile Chart With chtAUCFTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 24 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot. .Plot.Axis(VtChAxisIdY).ValueScale End With ' Set Up INVAR Bar Temp Profile Chart With chtAUBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 24 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False 293 .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot. .Plot.Axis(VtChAxisI End With dY).ValueScale.MinorDivision = 5 s Than 47 hrs 4 .Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 = 12 = 4 .MinorDivision = 5 = 12 = 4 dY).ValueScale.MinorDivision = 5 = 12 3 rDivision = 5 2 Days - Les ' Case Is = 276 ' Set Up Cracking Frame Stress Development Chart With chtAUCFStress .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 48 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 200 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot. .Plot End With ' Set Up Cracking Frame Temp Profile Chart With chtAUCFTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 48 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 .Plot. .Plot.Axis(VtChAxisIdY).ValueScale End With ' Set Up INVAR Bar Temp Profile Chart With chtAUBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 48 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot. .Plot.Axis(VtChAxisI End With ' 3 Days - Less Than 71 hrs Case Is = 564 ' Set Up Cracking Frame Stress Development Chart With chtAUCFStress .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 72 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 250 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 Axis(VtChAxisIdY).ValueScale.MajorDivision = 7 .Plot. .Plot.Axis(VtChAxisIdY).ValueScale.Mino End With ' Set Up Cracking Frame Temp Profile Chart 294 With chtAUCFTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 72 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 3 Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 .MinorDivision = 5 = 3 Y).ValueScale.MinorDivision = 5 3 Axis(VtChAxisIdY).ValueScale.MajorDivision = 8 rDivision = 5 = 3 .Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 = 3 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot. .Plot.Axis(VtChAxisIdY).ValueScale End With ' Set Up INVAR Bar Temp Profile Chart With chtAUBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 72 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot. .Plot.Axis(VtChAxisId End With ' 4 Days - Less Than 95 hrs Case Is = 852 ' Set Up Cracking Frame Stress Development Chart With chtAUCFStress .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 96 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 16 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 300 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 .Plot. .Plot.Axis(VtChAxisIdY).ValueScale.Mino End With ' Set Up Cracking Frame Temp Profile Chart With chtAUCFTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 96 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 16 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 .Plot. .Plot End With ' Set Up INVAR Bar Temp Profile Chart With chtAUBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 96 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 16 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot. 295 .Plot.Axis(VtChAxisId End With Y).ValueScale.MinorDivision = 5 = 10 6 rDivision = 5 = 10 = 6 .MinorDivision = 5 = 6 .Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 = 12 4 rDivision = 5 ' 5 Days - Less Than 119 hrs Case Is = 1140 ' Set Up Cracking Frame Stress Development Chart With chtAUCFStress .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 120 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 450 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 Axis(VtChAxisIdY).ValueScale.MajorDivision = 11 .Plot. .Plot.Axis(VtChAxisIdY).ValueScale.Mino End With ' Set Up Cracking Frame Temp Profile Chart With chtAUCFTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 120 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 .Plot. .Plot.Axis(VtChAxisIdY).ValueScale End With ' Set Up INVAR Bar Temp Profile Chart With chtAUBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 120 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 10 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot. Plot . End With ' 6 Days - Less Than 143 hrs Case Is = 1428 ' Set Up Cracking Frame Stress Development Chart With chtAUCFStress .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 144 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 500 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 Axis(VtChAxisIdY).ValueScale.MajorDivision = 12 .Plot. .Plot.Axis(VtChAxisIdY).ValueScale.Mino End With ' Set Up Cracking Frame Temp Profile Chart With chtAUCFTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 144 296 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 4 .Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 = 4 .Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 With t Chart ale.Auto = False le.Maximum = 168 ale.Minimum = 0 cale.MajorDivision = 14 e.MinorDivision = 4 .Auto = False e.Maximum = 600 lueScale.Minimum = -100 .MajorDivision = 7 e.MinorDivision = 5 rofile Chart Auto = False Maximum = 168 .Minimum = 0 ueScale.MajorDivision = 14 lueScale.MinorDivision = 4 lueScale.Auto = False Scale.Maximum = 50 cale.Minimum = -20 cale.MajorDivision = 7 Scale.MinorDivision = 5 le Chart tAUBarTemp t.Axis(VtChAxisIdX).ValueScale.Auto = False e.Maximum = 30 .Minimum = -10 e.MajorDivision = 8 lueScale.MinorDivision = 5 End With .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -10 Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot. .Plot End With ' Set Up INVAR Bar Temp Profile Chart With chtAUBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 144 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot. .Plot End ' 7 Days Case Is = 1716 ' Set Up Cracking Frame Stress Developmen With chtAUCFStress .Plot.Axis(VtChAxisIdX).ValueSc .Plot.Axis(VtChAxisIdX).ValueSca .Plot.Axis(VtChAxisIdX).ValueSc xisIdX).ValueS .Plot.Axis(VtChA .Plot.Axis(VtChAxisIdX).ValueScal .Plot.Axis(VtChAxisIdY).ValueScale .Plot.Axis(VtChAxisIdY).ValueScal .Plot.Axis(VtChAxisIdY).Va .Plot.Axis(VtChAxisIdY).ValueScale lot.Axis(VtChAxisIdY).ValueScal .P End With ' Set Up Cracking Frame Temp P With chtAUCFTemp .Plot.Axis(VtChAxisIdX).ValueScale. .Plot.Axis(VtChAxisIdX).ValueScale. lueScale .Plot.Axis(VtChAxisIdX).Va .Plot.Axis(VtChAxisIdX).Val a .Plot.Axis(VtChAxisIdX).V .Plot.Axis(VtChAxisIdY).Va .Plot.Axis(VtChAxisIdY).Value .Plot.Axis(VtChAxisIdY).ValueS .Plot.Axis(VtChAxisIdY).ValueS .Plot.Axis(VtChAxisIdY).Value End With ' Set Up INVAR Bar Temp Profi With ch .Plo .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 168 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 14 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 4 isIdY).ValueScale.Auto = False .Plot.Axis(VtChAx .Plot.Axis(VtChAxisIdY).ValueScal .Plot.Axis(VtChAxisIdY).ValueScale alueScal .Plot.Axis(VtChAxisIdY).V .Plot.Axis(VtChAxisIdY).Va 297 End Select ' Update Stress Development Chart Data Data ata on pment" UCFTemp.Visible = False AUBarTemp.Visible = False chtAUBarTemp.Visible = True End Sub ' Display Graphs ---------------------------------------------------------------------- tabAUCFPlot_Click() Select Case tabAUCFPlot.SelectedItem.Caption ' Stress Development Tab Clicked Case "Cracking Frame Stress Development" chtAUCFStress.Visible = True chtAUCFTemp.Visible = False chtAUBarTemp.Visible = False ' Cracking Frame Temp Profile Tab Clicked Case "Cracking Frame Temperature Profile" chtAUCFStress.Visible = False chtAUCFTemp.Visible = True chtAUBarTemp.Visible = False ' INVAR Bar Temp Profile Tab Clicked Case "INVAR Bar Temperature Profile" chtAUCFStress.Visible = False chtAUCFTemp.Visible = False chtAUBarTemp.Visible = True End Select End Sub '-------------------------------------------------------------------------------------- chtAUCFStress.ChartData = vrnAUCFStressData ' Update Cracking Frame Temp Profile Chart Data FTemp.ChartData = vrnAUCFTempData chtAUC ' Update INVAR Bar Temp Profile Chart chtAUBarTemp.ChartData = vrnAUBarTempD ' Display Appropriate Graph Select Case tabAUCFPlot.SelectedItem.Capti ' Stress Development Tab Clicked o Case "Cracking Frame Stress Devel AUCFStress.Visible = True cht chtA cht ' Cracking Frame Temp Profile Tab Clicked Case "Cracking Frame Temperature Profile" chtAUCFStress.Visible = False chtAUCFTemp.Visible = True chtAUBarTemp.Visible = False ' INVAR Bar Temp Profile Tab Clicked Case "INVAR Bar Temperature Profile" chtAUCFStress.Visible = False chtAUCFTemp.Visible = False End Select '-------------------------------------------------------------------------------------- Private Sub 298 E.8 GERMAN CRACKING FRAME FORM The German cracking frame form is designed to display the data obtained from the GER RCF. Current data including concrete age, temperature measurements, and strain gauge measurements, are displayed in text boxes. The stress development and temperature development of the test specimen is also displayed graphically. A screen capture of the German cracking frame form is presented in Figure E-6 and the form code is presented in Table E-8. Figure E-6: German cracking frame form 299 Table E-8: German cracking frame form code Option Explicit ' German Cracking Frame Test Data ----------------------------------------------------- s Integer ' Counter gle ' Concrete Age (hrs) king Frame Temp (?C) head 2-3 Temp (?C) shead 4-5 Temp (?C) ge Crosshead Temp (?C) Bar 3-5 PT100 Temp (?C) Bar 2-4 Temp (?C) 3-5 Temp (?C) age INVAR Bar Temp (?C) m Temp (?C) Gage Output (mV/V) Gage Output (mV/V) Single ' Bar 2-4 Force (lbs) lbs) ete Stress (psi) rame Stress Chart Data 3) ' Cracking Frame Temp Chart Data ----------- ------------------ ressData(0, 0) = "Concrete Stress (psi)" pData(0, 0) = "Specimen Temp (?C)" (?C)" (?C)" 2dXY rame Stress Development" tyleDotted sIdY).AxisGrid.MinorPen.Style = VtPenStyleNull egend = True ChLocationTypeBottom Private intGMCounter A Private sngGMConcAge(8064) As Sin Private sngGMCFTemp(8064) As Single ' Crac Private sngGMCH23Temp(8064) As Single ' Cross Private sngGMCH45Temp(8064) As Single ' Cros Private sngGMCHAvgTemp(8064) As Single ' Avera Private sngGMBar35PTemp(8064) As Single ' 'Private sngGMBar24Temp(8064) As Single Private sngGMBar35Temp(8064) As Single ' Bar Private sngGMBarAvgTemp(8064) As Single ' Aver ' RooPrivate sngGMRoomTemp(8064) As Single Private sngGMBar24Output(8064) As Single ' Bar 2-4 Strain Private sngGMBar35Output(8064) As Single ' Bar 3-5 Strain Private sngGMBar24Force(8064) As Private sngGMBar35Force(8064) As Single ' Bar 3-5 Force ( Private sngGMConcStress(8064) As Single ' Equivalent Concr Private vrnGMCFStressData(0 To 8065, 0 To 1) ' Cracking F Private vrnGMCFTempData(0 To 8065, 0 To Private vrnGMBarTempData(0 To 8065, 0 To 3) ' Bar Temp Chart Data '--------------------------------------------------------------------------- ' Initialize Counter ------------------------------------------------ Private Sub Form_Load() ' Set Initial Counter to Zero intGMCounter = 0 Lables ' Specify Data Series vrnGMCFSt vrnGMCFTem vrnGMCFTempData(0, 2) = "Avg Crosshead Temp vrnGMBarTempData(0, 0) = "Avg Bar Temp (?C)" vrnGMBarTempData(0, 2) = "Room Temp ' Set Up Cracking Frame Stress Development Chart With chtGMCFStress .chartType = VtChChartType .TitleText = "German Cracking F .Title.VtFont.Size = 12 .Title.VtFont.Style = 1 .Plot.Axis(VtChAxisIdX).AxisTitle = "Concrete Age (hrs)" .Plot.Axis(VtChAxisIdX).AxisTitle.VtFont.Style = 1 .Plot.UniformAxis = False .Plot.WidthToHeightRatio = 1.4 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted .Plot.Axis(VtChAxisIdX).AxisGrid.MinorPen.Style = VtPenStyleNull .Plot.Axis(VtChAxisIdY).AxisTitle = "Concrete Stress (psi)" .Plot.Axis(VtChAxisIdY).AxisTitle.VtFont.Style = 1 .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenS .Plot.Axis(VtChAxi .ShowL .Legend.Location.LocationType = Vt .Visible = False End With Profile Chart ' Set Up Cracking Frame Temp With chtGMCFTemp .chartType = VtChChartType2dXY .TitleText = "German Cracking Frame Temperature Profile" .Title.VtFont.Size = 12 .Title.VtFont.Style = 1 .Plot.UniformAxis = False 300 .Plot.WidthToHeightRatio = 1.4 .Plot.Axis(VtChAxisIdX).AxisTitle = "Concrete Age (hrs)" .Plot.Axis(VtChAxisIdX).AxisTitle.VtFont.Style = 1 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted .Plot.Axis(VtChAxisIdX).AxisGrid.MinorPen.Style = VtPenStyleNull dY).AxisTitle = "Concrete Temperature (?C)" .Plot.Axis(VtChAxisI .Plot.Axis(VtChAxisIdY).AxisTitle.VtFont.Style = 1 sIdY).AxisGrid.MajorPen.Style = VtPen .Plot.Axis(VtChAxi StyleDotted Axis(VtChAxisIdY).AxisGrid.MinorPen.Style = VtPenStyleNull .ShowLegend = True ture Profile" Font.Style = 1 Dotted ull LocationTypeBottom ----------------------------------------------------- - ing Frame Temp ead 2-3 Temp head 4-5 Temp Bar 3-5 PT100 Temp NVAR Bar 2-4 Temp INVAR Bar 3-5 Temp om Temp intGMCounter) + _ nter)) / 2 tputs GMCounter) = frmController.sngGMBar24Output ' Bar 2-4 Output MCounter) = frmController.sngGMBar35Output ' Bar 3-5 Output ame Stresses frmController.sngGMBar24Force ' Bar 2-4 Force (lbs) rmController.sngGMBar35Force ' Bar 3-5 Force (lbs) frmController.sngGMConcStress ' Stress (psi) .Plot. .Legend.Location.LocationType = VtChLocationTypeBottom .Visible = False End With Profile Chart ' Set Up INVAR Bar Temp With chtGMBarTemp .chartType = VtChChartType2dXY .TitleText = "German Cracking Frame INVAR Bar Tempera 2 .Title.VtFont.Size = 1 .Title.VtFont.Style = 1 .Plot.UniformAxis = False .Plot.WidthToHeightRatio = 1.4 .Plot.Axis(VtChAxisIdX).AxisTitle = "Concrete Age (hrs)" .Plot.Axis(VtChAxisIdX).AxisTitle.VtFont.Style = 1 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted .Plot.Axis(VtChAxisIdX).AxisGrid.MinorPen.Style = VtPenStyleNull .Plot.Axis(VtChAxisIdY).AxisTitle = "INVAR Bar Temperature (?C)" .Plot.Axis(VtChAxisIdY).AxisTitle.Vt .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyle .Plot.Axis(VtChAxisIdY).AxisGrid.MinorPen.Style = VtPenStyleN .ShowLegend = True .Legend.Location.LocationType = VtCh .Visible = False End With b End Su '--------------------------------- ' Update German Cracking Frame Data -------------------------------------------------- Sub UpdateGMData() Public ' Update Concrete Age sngGMConcAge(intGMCounter) = frmController.sngGMConcAge ' Update Temperature Data sngGMCFTemp(intGMCounter) = frmController.sngGMCFTemp ' Crack sngGMCH23Temp(intGMCounter) = frmController.sngGMCH23Temp ' Crossh H45Temp ' Cross sngGMCH45Temp(intGMCounter) = frmController.sngGMC sngGMBar35PTemp(intGMCounter) = frmController.sngGMBar35PTemp ' sngGMBar24Temp(intGMCounter) = frmController.sngGMBar24Temp ' I sngGMBar35Temp(intGMCounter) = frmController.sngGMBar35Temp ' sngGMRoomTemp(intGMCounter) = frmController.sngGMRoomTemp ' Ro rage Crosshead Temperature ' Compute Ave sngGMCHAvgTemp(intGMCounter) = (sngGMCH23Temp( sngGMCH45Temp(intGMCounter)) / 2 ' Compute Average INVAR Bar Temperature sngGMBarAvgTemp(intGMCounter) = (sngGMBar24Temp(intGMCounter) + _ sngGMBar35Temp(intGMCou Gage Ou ' Update Strain sngGMBar24Output(int sngGMBar35Output(intG ' Update Cracking Fr sngGMBar24Force(intGMCounter) = sngGMBar35Force(intGMCounter) = f ntGMCounter) = sngGMConcStress(i 301 ' Update Chart Data - Cracking Frame Stress Development vrnGMCFStressData(intGMCounter + 1, 0) = sngGMConcAge(intGMCounter) vrnGMCFStressData(intGMCounter + 1, 1) = sngGMConcStress(intGMCounter) cking Frame Temp Profile ' Update Chart Data - Cra vrnGMCFTempData(intGMCou nter + 1, 0) = sngGMConcAge(intGMCounter) nter + 1, 1) = sngGMCFTemp(intGMCounter) r + 1, 3) = sngGMCHAvgTemp(intGMCounter) otGMData sngGMConcAge(intGMCounter), 2) ' Concrete Age (hrs) FTemp(intGMCounter), 1) ' Cracking Frame Temp ext = Round(sngGMCHAvgTemp(intGMCounter), 1) ' Avg Crosshead Temp , 1) ' Aveg INVAR Bar Temp ) ' Room Temp Bar 2-4 Force (lbs) ar 3-5 Force (lbs) Concrete Stress Bar 2-4 Output Bar 3-5 Output ------------------------------- ---------------------- .Auto = False Maximum = 24 = 12 = 4 vrnGMCFTempData(intGMCou vrnGMCFTempData(intGMCounter + 1, 2) = sngGMConcAge(intGMCounter) vrnGMCFTempData(intGMCounte ' Update Chart Data - INVAR Bar Temp Profile vrnGMBarTempData(intGMCounter + 1, 0) = sngGMConcAge(intGMCounter) vrnGMBarTempData(intGMCounter + 1, 1) = sngGMBarAvgTemp(intGMCounter) vrnGMBarTempData(intGMCounter + 1, 2) = sngGMConcAge(intGMCounter) 3) = sngGMRoomTemp(intGMCounter) vrnGMBarTempData(intGMCounter + 1, ' Display Updated Data DisplayGMData ' Plot Updated Data Pl ' Increment Counter intGMCounter = intGMCounter + 1 End Sub '-------------------------------------------------------------------------------------- ' Display German Cracking Frame Data -------------------------------------------------- ) Private Sub DisplayGMData( ' Display Concrete Age txtGMConcAge.Text = Round( ' Display Temperature Data = Round(sngGMC txtGMCFTemp.Text HAvgTemp.T txtGMC txtGMBarAvgTemp.Text = Round(sngGMBarAvgTemp(intGMCounter) ngGMRoomTemp(intGMCounter), 1 txtGMRoomTemp.Text = Round(s ' Display Cracking Frame Stresses txtGMBar24Force.Text = Round(sngGMBar24Force(intGMCounter), 0) ' txtGMBar35Force.Text = Round(sngGMBar35Force(intGMCounter), 0) ' B txtGMConcStress.Text = Round(sngGMConcStress(intGMCounter), 1) ' (psi) ' Display Strain Gage Output txtGMBar24Output.Text = Round(sngGMBar24Output(intGMCounter), 4) ' txtGMBar35Output.Text = Round(sngGMBar35Output(intGMCounter), 4) ' End Sub '------------------------------------------------------- ' Plot German Cracking Frame Data ------------------------------- Private Sub PlotGMData() ' Determine Time Step Select Case intGMCounter ' 1 Day - Less Than 23 hrs Case Is = 0 ' Set Up Cracking Frame Stress Development Chart CFStress With chtGM .Plot.Axis(VtChAxisIdX).ValueScale .Plot.Axis(VtChAxisIdX).ValueScale. .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision 302 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 100 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 = 8 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 CFTemp dX).ValueScale.Auto = False X).ValueScale.Maximum = 24 xis(VtChAxisIdX).ValueScale.Minimum = 0 ion = 12 on = 4 Axis(VtChAxisIdX).ValueScale.Minimum = 0 rDivision = 12 Division = 4 .Auto = False Maximum = 48 = 12 = 4 = 5 .Axis(VtChAxisIdX).ValueScale.Auto = False X).ValueScale.Maximum = 48 xis(VtChAxisIdX).ValueScale.Minimum = 0 ion = 12 on = 4 End With ' Set Up Cracking Frame Temp Profile Chart With chtGM .Plot.Axis(VtChAxisI .Plot.Axis(VtChAxisId .Plot.A .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivis .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivisi .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up INVAR Bar Temp Profile Chart With chtGMBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 24 .Plot. .Plot.Axis(VtChAxisIdX).ValueScale.Majo .Plot.Axis(VtChAxisIdX).ValueScale.Minor .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 2 Days - Less Than 47 hrs Case Is = 276 ' Set Up Cracking Frame Stress Development Chart CFStress With chtGM .Plot.Axis(VtChAxisIdX).ValueScale .Plot.Axis(VtChAxisIdX).ValueScale. .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 200 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 = 6 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision End With ' Set Up Cracking Frame Temp Profile Chart CFTemp With chtGM .Plot .Plot.Axis(VtChAxisId .Plot.A .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivis .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivisi .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up INVAR Bar Temp Profile Chart With chtGMBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False 303 .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 48 Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot. .Plot.Axis(VtChAxisIdX).ValueScale.Majo .Plot.Axis(VtChAxisIdX).ValueScale.Minor hAxisIdY).ValueScale.Auto rDivision = 12 Division = 4 = False = 6 .Auto = False Maximum = 72 = 12 = 3 = 7 = 5 dX).ValueScale.Auto = False X).ValueScale.Maximum = 72 dX).ValueScale.Minimum = 0 ion = 12 on = 3 se = 5 rDivision = 12 Division = 3 = 6 CFStress .Auto = False Maximum = 96 = 16 = 3 .Plot.Axis(VtC .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 3 Days - Less Than 71 hrs Case Is = 564 ' Set Up Cracking Frame Stress Development Chart CFStress With chtGM .Plot.Axis(VtChAxisIdX).ValueScale .Plot.Axis(VtChAxisIdX).ValueScale. .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 250 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision End With ' Set Up Cracking Frame Temp Profile Chart CFTemp With chtGM .Plot.Axis(VtChAxisI .Plot.Axis(VtChAxisId xis(VtChAxisI .Plot.A .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivis .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivisi xisIdY).ValueScale.Auto = Fal .Plot.Axis(VtChA .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up INVAR Bar Temp Profile Chart With chtGMBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 72 Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot. .Plot.Axis(VtChAxisIdX).ValueScale.Majo .Plot.Axis(VtChAxisIdX).ValueScale.Minor .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 4 Days - Less Than 95 hrs Case Is = 852 ' Set Up Cracking Frame Stress Development Chart With chtGM .Plot.Axis(VtChAxisIdX).ValueScale .Plot.Axis(VtChAxisIdX).ValueScale. .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 300 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 304 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 8 = 5 .Axis(VtChAxisIdX).ValueScale.Auto = False ).ValueScale.Maximum = 96 is(VtChAxisIdX).ValueScale.Minimum = 0 ion = 16 on = 3 .Axis(VtChAxisIdX).ValueScale.MajorDivision = 16 Division = 3 .Axis(VtChAxisIdX).ValueScale.Auto = False Maximum = 120 .Minimum = 0 = 10 6 = 5 X).ValueScale.Auto = False ).ValueScale.Maximum = 120 X).ValueScale.Minimum = 0 xis(VtChAxisIdX).ValueScale.MajorDivision = 10 on = 6 .Axis(VtChAxisIdX).ValueScale.MajorDivision = 10 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision End With ' Set Up Cracking Frame Temp Profile Chart CFTemp With chtGM .Plot .Plot.Axis(VtChAxisIdX .Plot.Ax .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivis .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivisi .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up INVAR Bar Temp Profile Chart With chtGMBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 96 Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot. .Plot .Plot.Axis(VtChAxisIdX).ValueScale.Minor .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 5 Days - Less Than 119 hrs Case Is = 1140 ' Set Up Cracking Frame Stress Development Chart CFStress With chtGM .Plot .Plot.Axis(VtChAxisIdX).ValueScale. AxisIdX).ValueScale .Plot.Axis(VtCh .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 450 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 = 11 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision End With ' Set Up Cracking Frame Temp Profile Chart CFTemp With chtGM .Plot.Axis(VtChAxisId .Plot.Axis(VtChAxisIdX is(VtChAxisId .Plot.Ax .Plot.A .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivisi .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up INVAR Bar Temp Profile Chart With chtGMBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 120 Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot. .Plot 305 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 6 = 6 CFStress .Auto = False Maximum = 144 = 12 4 = 5 CFTemp Plot.Axis(VtChAxisIdX).ValueScale.Auto = False xis(VtChAxisIdX).ValueScale.Maximum = 144 is(VtChAxisIdX).ValueScale.Minimum = 0 ion = 12 on = 4 = 6 Axis(VtChAxisIdX).ValueScale.Minimum = 0 rDivision = 12 Division = 4 CFStress .Auto = False Maximum = 168 = 14 4 = 5 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 6 Days - Less Than 143 hrs Case Is = 1428 ' Set Up Cracking Frame Stress Development Chart With chtGM .Plot.Axis(VtChAxisIdX).ValueScale .Plot.Axis(VtChAxisIdX).ValueScale. .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 500 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 = 12 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision End With ' Set Up Cracking Frame Temp Profile Chart With chtGM . .Plot.A .Plot.Ax .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivis .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivisi .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -10 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up INVAR Bar Temp Profile Chart With chtGMBarTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 144 .Plot. .Plot.Axis(VtChAxisIdX).ValueScale.Majo .Plot.Axis(VtChAxisIdX).ValueScale.Minor .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 30 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 7 Days Case Is = 1716 ' Set Up Cracking Frame Stress Development Chart With chtGM .Plot.Axis(VtChAxisIdX).ValueScale .Plot.Axis(VtChAxisIdX).ValueScale. .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 600 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -100 = 7 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision End With 306 ' Set Up Cracking Frame Temp Profile Chart CFTemp With chtGM .Plot .Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 168 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 eScale.MajorDivision = 14 e.MinorDivision = 4 uto = False ximum = 50 Scale.Minimum = -20 ale.MajorDivision = 7 le.MinorDivision = 5 e.Auto = False e.Maximum = 168 .Minimum = 0 e.MajorDivision = 14 lueScale.MinorDivision = 4 alueScale.Auto = False lueScale.Maximum = 30 inimum = -10 jorDivision = 8 MinorDivision = 5 a ta t Data Data pData splay Appropriate Graph d e" --------------------------------------------- .Plot.Axis(VtChAxisIdX).Valu .Plot.Axis(VtChAxisIdX).ValueScal .Plot.Axis(VtChAxisIdY).ValueScale.A .Plot.Axis(VtChAxisIdY).ValueScale.Ma .Plot.Axis(VtChAxisIdY).Value .Plot.Axis(VtChAxisIdY).ValueSc .Plot.Axis(VtChAxisIdY).ValueSca End With ' Set Up INVAR Bar Temp Profile Chart With chtGMBarTemp ueScal .Plot.Axis(VtChAxisIdX).Val .Plot.Axis(VtChAxisIdX).ValueScal .Plot.Axis(VtChAxisIdX).ValueScale lot.Axis(VtChAxisIdX).ValueScal .P .Plot.Axis(VtChAxisIdX).Va .Plot.Axis(VtChAxisIdY).V .Plot.Axis(VtChAxisIdY).Va .Plot.Axis(VtChAxisIdY).ValueScale.M .Plot.Axis(VtChAxisIdY).ValueScale.Ma .Plot.Axis(VtChAxisIdY).ValueScale. End With End Select ' Update Stress Development Chart Dat chtGMCFStress.ChartData = vrnGMCFStressDa har ' Update Cracking Frame Temp Profile C chtGMCFTemp.ChartData = vrnGMCFTempData ' Update INVAR Bar Temp Profile Chart tGMBarTemp.ChartData = vrnGMBarTem ch ' Di Select Case tabGMCFPlot.SelectedItem.Caption ' Stress Development Chart Clicked Case "Cracking Frame Stress Development" chtGMCFStress.Visible = True chtGMCFTemp.Visible = False chtGMBarTemp.Visible = False ' Cracking Frame Temp Profile Chart Clicke Profile" Case "Cracking Frame Temperature chtGMCFStress.Visible = False chtGMCFTemp.Visible = True tGMBarTemp.Visible = False ch ' INVAR Bar Temp Profile Clicked Case "INVAR Bar Temperature Profil chtGMCFStress.Visible = False chtGMCFTemp.Visible = False chtGMBarTemp.Visible = True End Select End Sub -'---------------------------------------- 307 ' Display Plots Private Sub tabG ----------------------------------------------------------------------- MCFPlot_Click() Case "Cracking Frame Stress Development" chtGMBarTemp.Visible = False Case "Cracking Frame Temperature Profile" chtGMCFTemp.Visible = True ' INVAR Bar Temp Profile Clicked chtGMCFStress.Visible = False chtGMCFTemp.Visible = False chtGMBarTemp.Visible = True End Select End Sub '-------------------------------------------------------------------------------------- E.9 MATCH-CURING ned to display the status of the match-curing box. Temperature data is ing box as well as a 9. Select Case tabGMCFPlot.SelectedItem.Caption ' Stress Development Chart Clicked chtGMCFStress.Visible = True chtGMCFTemp.Visible = False ' Cracking Frame Temp Profile Chart Clicked chtGMCFStress.Visible = False chtGMBarTemp.Visible = False Case "INVAR Bar Temperature Profile" BOX FORM The frm is desig displayed in text boxes while the temperature profile of the match-cur match-curing comparison is displayed graphically. A screen capture of the match-curing box form is presented in Figure E-7 and the form code is presented in Table E- 308 Figure E-7: Match-curing box form ble E-9: Match-curing box form code Option Explicit ' Match Curing Box Test Data ---------------------------------------------------------- Private intMCBCounter As Integer ' Counter Private sngMCBConcAge(8064) As Single ' Concrete Age (hrs) Private sngMCBAUCFTemp(8064) As Single ' Auburn Cracking Frame Temp (?C) Private sngMCBGMCFTemp(8064) As Single ' German Cracking Frame Temp (?C) Private sngMCBAvgTemp(8064) As Single ' Average Cylinder Temp (?C) Private sngMCB1Temp(8064) As Single ' Corner Cylinder Temp (?C) Private sngMCB2Temp(8064) As Single ' Exterior Cylinder Temp (?C) Private sngMCB3Temp(8064) As Single ' Interior Cylinder Temp (?C) Private vrnMCBTempData(0 To 8065, 0 To 7) ' MCB Temp Chart Data Private vrnMCBCompData(0 To 8065, 0 To 5) ' MCB Temp Comparison Chart Data '-------------------------------------------------------------------------------------- ' Initialize Counter ------------------------------------------------------------------ Private Sub Form_Load() ' Set Initial Counter to Zero intMCBCounter = 0 ' Specify Data Series Lables Ta 309 vrnMCBTempData(0, 0) = "Avg MCB Temp (?C)" vrnMCBTempData(0, 2) = "Corner Temp (?C)" vrnMCBTempData(0, 4) = "Exterior Temp (?C)" nMCBCompData(0, 0) = "Avg MCB Temp (?C)" vrnMCBCompData(0, 2) = "Auburn CF Temp (?C)" vrnMCBCompData(0, 4) = "German CF Temp (?C)" ' Set Up Match Curing Box Temp Profile Chart With chtMCBTemp .chartType = VtChChartType2dXY .TitleText = "Match Curing Box Temperature Profile" .Title.VtFont.Size = 12 .Title.VtFont.Style = 1 .Plot.UniformAxis = False .Plot.WidthToHeightRatio = 1.4 .Plot.Axis(VtChAxisIdX).AxisTitle = "Concrete Age (hrs)" .Plot.Axis(VtChAxisIdX).AxisTitle.VtFont.Style = 1 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted .Plot.Axis(VtChAxisIdX).AxisGrid.MinorPen.Style = VtPenStyleNull .Plot.Axis(VtChAxisIdY).AxisTitle = "Concrete Temperature (?C)" .Plot.Axis(VtChAxisIdY).AxisTitle.VtFont.Style = 1 .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted .Plot.Axis(VtChAxisIdY).AxisGrid.MinorPen.Style = VtPenStyleNull .ShowLegend = True .Legend.Location.LocationType = VtChLocationTypeBottom .Visible = False End With ' Set Up Match Curing Comparison Profile Chart With chtMCBComp .chartType = VtChChartType2dXY .TitleText = "Match Curing Temperature Comparison" .Title.VtFont.Size = 12 .Title.VtFont.Style = 1 .Plot.UniformAxis = False .Plot.WidthToHeightRatio = 1.4 .Plot.Axis(VtChAxisIdX).AxisTitle = "Concrete Age (hrs)" .Plot.Axis(VtChAxisIdX).AxisTitle.VtFont.Style = 1 .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted .Plot.Axis(VtChAxisIdX).AxisGrid.MinorPen.Style = VtPenStyleNull .Plot.Axis(VtChAxisIdY).AxisTitle = "Concrete Temperature (?C)" .Plot.Axis(VtChAxisIdY).AxisTitle.VtFont.Style = 1 .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted .Plot.Axis(VtChAxisIdY).AxisGrid.MinorPen.Style = VtPenStyleNull .ShowLegend = True .Legend.Location.LocationType = VtChLocationTypeBottom .Visible = False End With End Sub '-------------------------------------------------------------------------------------- ' Update Match Curing Box Data -------------------------------------------------------- Public Sub UpdateMCBData() ' Update Concrete Age sngMCBConcAge(intMCBCounter) = frmController.sngMCBConcAge ' Update Temperature Data sngMCBAUCFTemp(intMCBCounter) = frmController.sngMCBAUCFTemp ' Auburn CF Temp sngMCBGMCFTemp(intMCBCounter) = frmController.sngMCBGMCFTemp ' German CF Temp sngMCBAvgTemp(intMCBCounter) = frmController.sngMCBAvgTemp ' Average MCB Temp sngMCB1Temp(intMCBCounter) = frmController.sngMCB1Temp ' Corner MCB Temp sngMCB2Temp(intMCBCounter) = frmController.sngMCB2Temp ' Exterior MCB Temp sngMCB3Temp(intMCBCounter) = frmController.sngMCB3Temp ' Interior MCB Temp ' Update Chart Data - MCB Temp Profile vrnMCBTempData(intMCBCounter + 1, 0) = sngMCBConcAge(intMCBCounter) vrnMCBTempData(0, 6) = "Interior Temp (?C)" vr 310 vrnMCBTempData(intMCBCounter + 1, 1) = sngMCBAvgTemp(intMCBCounter) vrnMCBTempData(intMCBCounter + 1, 2) = sngMCBConcAge(intMCBCounter) vrnMCBTempData(intMCBCounter + 1, 3) = sngMCB1Temp(intMCBCounter) vrnMCBTempData(intMCBCounter + 1, 4) = sngMCBConcAge(intMCBCounter) vrnMCBTempData(intMCBCounter + 1, 5) = sngMCB2Temp(intMCBCounter) vrnMCBTempData(intMCBCounter + 1, 6) = sngMCBConcAge(intMCBCounter) vrnMCBTempData(intMCBCounter + 1, 7) = sngMCB3Temp(intMCBCounter) ' Update Chart Data - MCB Temp Comparison vrnMCBCompData(intMCBCounter + 1, 0) = sngMCBConcAge(intMCBCounter) vrnMCBCompData(intMCBCounter + 1, 1) = sngMCBAvgTemp(intMCBCounter) vrnMCBCompData(intMCBCounter + 1, 2) = sngMCBConcAge(intMCBCounter) vrnMCBCompData(intMCBCounter + 1, 3) = sngMCBAUCFTemp(intMCBCounter) vrnMCBCompData(intMCBCounter + 1, 4) = sngMCBConcAge(intMCBCounter) vrnMCBCompData(intMCBCounter + 1, 5) = sngMCBGMCFTemp(intMCBCounter) ' Display Updated Data DisplayMCBData ' Plot Updated Data PlotMCBData ' Increment Counter intMCBCounter = intMCBCounter + 1 End Sub '-------------------------------------------------------------------------------------- ' Display Match Curing Box Data ------------------------------------------------------- Private Sub DisplayMCBData() ' Display Concrete Age txtMCBConcAge.Text = Round(sngMCBConcAge(intMCBCounter), 2) ' Concrete Age (hrs) ' Display Temperature Data txtMCBAUCFTemp.Text = Round(sngMCBAUCFTemp(intMCBCounter), 1) ' Auburn CF Temp txtMCBGMCFTemp.Text = Round(sngMCBGMCFTemp(intMCBCounter), 1) ' German CF Temp txtMCBAvgTemp.Text = Round(sngMCBAvgTemp(intMCBCounter), 1) ' Average MCB Temp txtMCBCornerTemp.Text = Round(sngMCB1Temp(intMCBCounter), 1) ' Corner MCB Temp txtMCBExtTemp.Text = Round(sngMCB2Temp(intMCBCounter), 1) ' Exterior MCB Temp txtMCBIntTemp.Text = Round(sngMCB3Temp(intMCBCounter), 1) ' Interior MCB Temp End Sub '-------------------------------------------------------------------------------------- ' Plot Match Curing Box Data ---------------------------------------------------------- Private Sub PlotMCBData() ' Determine Time Step Select Case intMCBCounter ' 1 Day - Less Than 23 hrs Case Is = 0 ' Set Up Match Curing Box Temp Profile Chart With chtMCBTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 24 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 4 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up Match Curing Temp Profile Chart 311 With chtMCBComp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 24 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 4 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 2 Days - Less Than 47 hrs Case Is = 276 ' Set Up Match Curing Box Temp Profile Chart With chtMCBTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 48 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 4 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up Match Curing Temp Profile Chart With chtMCBComp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 48 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 4 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 3 Days - Less Than 71 hrs Case Is = 564 ' Set Up Match Curing Box Temp Profile Chart With chtMCBTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 72 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 3 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up Match Curing Temp Profile Chart With chtMCBComp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 72 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 3 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False 312 .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 4 Days - Less Than 95 hrs Case Is = 852 ' Set Up Match Curing Box Temp Profile Chart With chtMCBTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 96 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 16 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 3 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up Match Curing Temp Profile Chart With chtMCBComp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 96 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 16 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 3 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 5 Days - Less Than 119 hrs Case Is = 1140 ' Set Up Match Curing Box Temp Profile Chart With chtMCBTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 120 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 10 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 6 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up Match Curing Temp Profile Chart With chtMCBComp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 120 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 10 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 6 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 6 Days - Less Than 143 hrs 313 Case Is = 1428 ' Set Up Match Curing Box Temp Profile Chart With chtMCBTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 144 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 4 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -10 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up Match Curing Temp Profile Chart With chtMCBComp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 144 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 12 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 4 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -10 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 6 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' 7 Days Case Is = 1716 ' Set Up Match Curing Box Temp Profile Chart With chtMCBTemp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 168 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 14 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 4 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -20 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 7 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With ' Set Up Match Curing Temp Profile Chart With chtMCBComp .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 168 .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0 .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 14 .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 4 .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 50 .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -20 .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 7 .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5 End With End Select ' Update Match Curing Box Temp Profile Chart Data chtMCBTemp.ChartData = vrnMCBTempData ' Update Match Curing Temp Comparison Chart Data chtMCBComp.ChartData = vrnMCBCompData 314 315 ' Display Appropriate Graph Select Case tabMCBPlot.SelectedItem.Caption ' Temperature Profile Tab Clicked Case "Match Curing Box Temperature Profile" chtMCBTemp.Visible = True chtMCBComp.Visible = False ' Temperature Comparison Tab Clicked Case "Match Curing Temperature Comparison" chtMCBTemp.Visible = False chtMCBComp.Visible = True End Select End Sub '-------------------------------------------------------------------------------------- ' Display Plots ----------------------------------------------------------------------- Private Sub tabMCBPlot_Click() Select Case tabMCBPlot.SelectedItem.Caption ' Temperature Profile Tab Clicked Case "Match Curing Box Temperature Profile" chtMCBTemp.Visible = True chtMCBComp.Visible = False ' Temperature Comparison Tab Clicked Case "Match Curing Temperature Comparison" chtMCBTemp.Visible = False chtMCBComp.Visible = True End Select End Sub '-------------------------------------------------------------------------------------- APPENDIX F DATA ACQUISITION The objective of this appendix is to provide programs and instrumentation diagrams for the data acquisition system developed to perform a rigid cracking frame test. The data acquisition system consists of two data-loggers manufactured by Campbell Scientific, specifically the CR23X Micrologger?. A discussion of each data-logger program is presented along with the programming code and a corresponding instrumentation diagram. F.1 RIGID CRACKING FRAME CALIBRATION As detailed in Section 5.2 of Chapter 5, the cracking frame is calibrated through a process of applying a known load and reading the resulting strain gauge output from each Invar side bar. The applied load is measured by a load cell outfitted with a four-wire full-bridge (4WFB) strain gauge configuration, the same strain gauge configuration mounted on each Invar side bar. The CR23X data-logger is programmed to read the three 4WFB strain gauges and record the data once every second. Once the proper loading and unloading cycles are completed, the data is downloaded from the data-logger to a personal computer using Campbell Scientific?s PC200W software. The software is free and can be downloaded 316 from http://www.campbellsci.com/downloads. The data-logger programming code is presented in Table F-1 and an instrumentation diagram is presented in Figure F-1. Table F-1: RCF calibration program MODE 1 SCAN RATE 1.0000 1:P6 1:1 2:21 3:1 4:1 5:5000 6:1 7:1.0 8:0.0 2:P6 1:1 2:21 3:2 4:2 5:5000 6:2 7:1.0 8:0.0 3:P6 1:1 2:21 3:3 4:3 5:5000 6:3 7:1.0 8:0.0 4:P92 1:0-- 2:1 3:10 5:P77 1:0221 6:P78 1:1 7:P71 317 1:1 2:1 8:P71 1:1 2:2 9:P71 1:1 2:3 10:P96 1:56? INVAR SIDE BAR #1 + signal -signal - voltage + voltage EX2 2H 2L 2G LOAD CELL + signal -signal - voltage + voltage EX1 1H 1L 1G INVAR SIDE BAR #2 + signal -signal - voltage + voltage EX3 3H 3L 3G Data-logger terminals Figure F-1: RCF calibration instrumentation diagram F.2 RIGID CRACKING FRAME TESTING The data acquisition system developed for the rigid cracking frame testing program consists of two CR23X data-loggers. One data-logger is connected to the Auburn 318 cracking frame and the match curing box while the other data-logger is connected to the German cracking frame. The data-loggers are programmed to read and record the strain gauge output of each Invar side bar as well several temperatures. All temperatures are measured with Type T thermocouples with the exception of a Platinum Resistive Thermometer (PRT) mounted on the German cracking frame. The data-loggers are programmed to take measurements once every ten seconds and temporarily store the data in the internal memory of the data- logger. The measurements are then averaged every five minutes and sent to a personal computer via RS232 communication ports. In order to indicate a complete data string, each data-logger is programmed to send a value of +999 after each data transmission. F.2.1 AUBURN CRACKING FRAME AND MATCH-CURING BOX The data-logger used to monitor the Auburn cracking frame and the match-curing box is programmed to output the following data in the order listed: (1) Strain gauge output from each Invar side bar, (2) Concrete temperature at the center of the specimen, (3) Concrete temperature in each crosshead, (4) Temperature of the end of each Invar side bar, (5) Ambient laboratory temperature, (6) Corner cylinder temperature in the match-curing box, (7) Exterior cylinder temperature in the match-curing box, and (8) Interior cylinder temperature in the match-curing box. 319 The code used to program the data-logger is presented in Table F-2 while the corresponding instrumentation program is presented in Figure F-2. Table F-2: Auburn RCF and match-curing box program MODE 1 SCAN RATE 10.0000 1:P10 1:1 2:P30 1:+999 2:0 3:2 3:P6 1:1 2:21 3:1 4:1 5:5000 6:3 7:1.0 8:0.0 4:P6 1:1 2:21 3:2 4:2 5:5000 6:4 7:1.0 8:0.0 5:P17 1:5 6:P14 1:1 2:21 3:3 4:1 5:5 6:6 7:1 8:0 7:P14 320 1:1 2:21 3:4 4:1 5:5 6:7 7:1 8:0 8:P14 1:1 2:21 3:5 4:1 5:5 6:8 7:1 8:0 9:P14 1:1 2:21 3:6 4:1 5:5 6:9 7:1 8:0 10:P14 1:1 2:21 3:7 4:1 5:5 6:10 7:1 8:0 11:P14 1:1 2:21 3:8 4:1 5:5 6:11 7:1 8:0 12:P14 1:1 2:21 3:9 4:1 5:5 321 6:12 7:1 8:0 13:P14 1:1 2:21 3:10 4:1 5:5 6:13 7:1 8:0 14:P14 1:1 2:21 3:11 4:1 5:5 6:14 7:1 8:0 15:P92 1:0 2:5 3:10 16:P80 1:1 2:101 17:P77 1:0220 18:P78 1:1 19:P71 1:1 2:3 20:P71 1:1 2:4 21:P78 1:0 22:P71 1:1 2:6 23:P71 322 1:1 2:7 24:P71 1:1 2:8 25:P71 1:1 2:9 26:P71 1:1 2:10 27:P71 1:1 2:11 28:P71 1:1 2:12 29:P71 1:1 2:13 30:P71 1:1 2:14 31:P70 1:1 2:2 32:P96 1:56-- 323 Data-logger terminals INVAR SIDE BAR #1 + signal -signal - voltage + voltage EX1 1H 1L 1G INVAR SIDE BAR #2 + signal -signal - voltage + voltage EX2 2H 2L 2G CENTER SPECIMEN TEMP copper constantan 3H 3L CROSSHEAD #1 TEMP copper constantan 4H 4L CROSSHEAD #2 TEMP copper constantan 5H 5L MCB EXTERIOR TEMP copper constantan 10H 10L INVAR SIDE BAR #1 TEMP copper constantan 6H 6L MCB CORNER TEMP copper constantan 9H 9L AMBIENT TEMP copper constantan 8H 8L INVAR SIDE BAR #2 TEMP copper constantan 7H 7L MCB INTERIOR TEMP copper constantan 11H 11L Figure F-2: Auburn RCF and match-curing box instrumentation diagram F.2.2 GERMAN CRACKING FRAME The data-logger used to monitor the German cracking frame is programmed to output the following data in the order listed: (1) Strain gauge output from each Invar side bars, 324 (2) PRT-100 temperature, (3) Concrete temperature at the center of the specimen, (4) Concrete temperature in each crosshead, (5) Temperature of the end of each Invar side bar, (6) Ambient laboratory temperature. As previously mentioned, the German cracking frame contains a 100? Platinum Resistive Thermometer (PRT). The PRT is mounted on the surface of one of the Invar side bars. In order to read the PRT-100, the CR23X must be equipped with completion resistors. A 4WPB100 terminal input module manufactured by Campbell Scientific is used to complete the circuit required for temperature measurements. The programming code for the data-logger is presented in Table F-3 while the corresponding instrumentation program is presented in Figure F-3. Table F-3: German RCF program MODE 1 SCAN RATE 10.0000 1:P10 1:1 2:P30 1:+999 2:0 3:2 3:P6 1:1 2:21 3:1 4:1 5:5000 6:3 325 7:1.0 8:0.0 4:P6 1:1 2:21 3:2 4:2 5:5000 6:4 7:1.0 8:0.0 5:P9 1:1 2:22 3:22 4:3 5:3 6:4070 7:5 8:1.0 9:0.0 6:P16 1:1 2:5 3:6 4:1 5:0 7:P17 1:7 8:P14 1:1 2:21 3:5 4:1 5:7 6:8 7:1 8:0 9:P14 1:1 2:21 3:6 4:1 5:7 6:9 7:1 8:0 10:P14 326 1:1 2:21 3:7 4:1 5:7 6:10 7:1 8:0 11:P14 1:1 2:21 3:8 4:1 5:7 6:11 7:1 8:0 12:P14 1:1 2:21 3:9 4:1 5:7 6:12 7:1 8:0 13:P14 1:1 2:21 3:10 4:1 5:7 6:13 7:1 8:0 14:P92 1:0 2:5 3:10 15:P80 1:1 2:101 16:P77 1:0220 17:P78 1:1 18:P71 327 1:1 2:3 19:P71 1:1 2:4 20:P78 1:0 21:P71 1:1 2:6 22:P71 1:1 2:8 23:P71 1:1 2:9 24:P71 1:1 2:10 25:P71 1:1 2:11 26:P71 1:1 2:12 27:P71 1:1 2:13 28:P70 1:1 2:2 29:P96 1:56-- 328 Data-logger terminals INVAR SIDE BAR #1 + signal -signal - voltage + voltage EX1 1H 1L 1G INVAR SIDE BAR #2 + signal -signal - voltage + voltage EX2 2H 2L 2G CENTER SPECIMEN TEMP copper constantan 5H 5L CROSSHEAD #1 TEMP copper constantan 6H 6L INVAR SIDE BAR #1 TEMP copper constantan 8H 8L AMBIENT TEMP copper constantan 10H 10L INVAR SIDE BAR #2 TEMP copper constantan 9H 9L PRT-100 PROBE EX3 3H 3L 3G 4WP B 10 0 4H 4L CROSSHEAD #2 TEMP copper constantan 7H 7L 4WP B 10 0 Figure F-3: German RCF instrumentation diagram 329 APPENDIX G RIGID CRACKING FRAME COMPARISON The objective of this appendix is to present the test results obtained from comparative testing of the Auburn (AU) cracking frame and the German (GER) cracking frame. The mix design notation used throughout this appendix is consistent with the notation described in Section 6.2 of Chapter 6. G.1 MIXTURE I-SRG-73 COMPARISON As shown in Figures G-1 and G-2, the temperature and stress development of the control mixture (I-SRG-73) is virtually identical in each cracking frame. The jagged stresses displayed in the AU RCF just before cracking may be a result of bond failures and micro- cracking. These bond failures and micro-cracking reduce the tensile strength of the concrete specimen, thus reducing the stress required to crack the specimen. 330 AU: 54 GER: 56 30 40 50 60 70 80 90 100 110 120 012345 Concrete Age (days) Concrete Temperature (?F) Auburn RCF German RCF Figure G-1: RCF comparison: I-SRG-73 temperature development AU: 375 GER: 395 -200 -100 0 100 200 300 400 500 01234 Concrete Age (days) C o n c rete St ress ( p si) 5 Auburn RCF German RCF Figure G-2: RCF comparison: I-SRG-73 stress development 331 G.2 MIXTURE I-SRG-95 COMPARISON As shown in Figures G-3 and G-4, the temperature of the ?Hot? mixture (I-SRG-95) is for all practical purposes identical. The restraint stress development is higher in the GER RCF than in the AU RCF, however the behavior of the two frames is identical. The difference in restraint stress development may be caused by the difference in CTE of the Invar side bars. The Invar used in the GER RCF has a lower CTE than the Invar used in the AU RCF, thus resulting in larger thermal movements of the crossheads relative to one another. The jagged stresses seen in the AU RCF just before cracking may once again be a result of bond failures and micro-cracking. 332 AU: 59 GER: 62 30 40 50 60 70 80 90 100 110 120 012345 Concrete Age (days) Concrete Temperature (?F) Auburn RCF German RCF Figure G-3: RCF comparison: I-SRG-95 temperature development AU: 375 GER: 405 -100 0 100 200 300 400 500 01234 Concrete Age (days) C o n c rete St ress ( p si) 5 Auburn RCF German RCF Figure G-4: RCF comparison: I-SRG-95 stress development 333 G.3 MIXTURE I-SRG-50 COMPARISON As shown in Figures G-5 and G-6, the temperature development of the ?Cold? mixture (I- SRG-50) in each cracking frame is practically identical. The early-age stress behavior is different; the AU RCF shows the development of very early-age tensile stresses, however after eight hours the behavior of the two frames are very close. The jagged stresses seen in the AU RCF just before cracking may once again be a result of bond failures and micro-cracking. 334 AU: 54 GER: 52 30 40 50 60 70 80 90 100 110 120 012345 Concrete Age (days) Concrete Temperature (?F) Auburn RCF German RCF Figure G-5: RCF comparison: I-SRG-50 temperature development AU: 375 GER: 405 -200 -100 0 100 200 300 400 500 01234 Concrete Age (days) C o n c rete St ress ( p si) 5 Auburn RCF German RCF Figure G-6: RCF comparison: I-SRG-50 stress development 335 G.4 MIXTURE I-LS-73 COMPARISON As shown in Figures G-7 and G-8, the temperature development of the limestone mixture (I-LS-73) in each cracking frame is indistinguishable. The GER RCF displays slightly higher restraint stresses. Once again it is believed that this is due to the higher CTE of the Invar used in the AU RCF. The difference in cracking temperature and cracking stress can only be explained by examining the failure of each specimen. 336 AU: 40 GER: 48 30 40 50 60 70 80 90 100 110 120 012345 Concrete Age (days) Concrete Temperature (?F) Auburn RCF German RCF Figure G-7: RCF comparison: I-LS-73 temperature development AU: 440 GER: 365 -100 0 100 200 300 400 500 01234 Concrete Age (days) C o n c rete St ress ( p si) 5 Auburn RCF German RCF Figure G-8: RCF comparison: I-LS-73 stress development 337 G.5 MIXTURE III-SRG-73 COMPARISON As shown in Figures G-9 and G-10, the temperature and stress development of the Type III cement (mixture III-SRG-73) is virtually identical in each cracking frame. The jagged stresses seen in both cracking frames may once again be a result of bond failures and micro-cracking. 338 AU: 54 GER: 55 30 40 50 60 70 80 90 100 110 120 012345 Concrete Age (days) Concrete Temperature (?F) Auburn RCF German RCF Figure G-9: RCF comparison: III-SRG-73 temperature development AU: 405 GER: 385 -200 -100 0 100 200 300 400 500 01234 Concrete Age (days) C o n c rete St ress ( p si) 5 Auburn RCF German RCF Figure G-10: RCF comparison: III-SRG-73 stress development 339 G.6 MIXTURE IF-SRG-73 COMPARISON As shown in Figures G-11 and G-12, the temperature and stress development of the class F fly ash mixture (IF-SRG-73) is almost identical for each cracking frame. The GER RCF displays slightly higher restraint stresses. As previously discussed, it is believed that this difference is caused by the difference in CTE of the Invar used in each frame. 340 AU: 60 GER: 58 30 40 50 60 70 80 90 100 110 120 012345 Concrete Age (days) Concrete Temperature (?F) Auburn RCF German RCF Figure G-11: RCF comparison: IF-SRG-73 temperature development AU: 300 GER: 320 -100 0 100 200 300 400 500 01234 Concrete Age (days) C o n c rete St ress ( p si) 5 Auburn RCF German RCF Figure G-12: RCF comparison: IF-SRG-73 stress development 341